Після видалення безлічі великих файлів вільний простір збільшується з великою затримкою


15

Вчора я видалив 71 Гб файлів на своєму домашньому / медіа-сервері.
Вільний простір до: 117 ГБ
Вільний простір після: 126 ГБ

Тож замість 71 ГБ додаткового вільного місця у мене було лише 9 ГБ. Я двічі перевірив, що жодних файлів не було, і я дійсно видалив 71 ГБ, а вільний простір дійсно збільшився лише на 9 ГБ.

Я також намагався синхронізувати, але ефекту немає.

Це відбувається не вперше. Справді, я спостерігаю таку поведінку з багатьох років. Спочатку на ext3, зараз на ext4.
Коли це станеться, я можу повернути вільний простір, демонтувавши та повторно переправивши файлову систему. У цих випадках відключення займає до 2 хвилин, а не майже часу.

Сьогодні я не можу легко відключити та перезавантажити файлову систему, оскільки вона постійно зайнята моїм програмним забезпеченням для відеореєстратора, сервером owncloud для моєї родини та ще кількома сервісами, яких у мене до цього часу не було. І я не хочу вставати о 3 годині ночі, аби лише зняти їх і переказати.

Ні, утиліта "at" не буде робити, тому що одна з служб виконує не відновлювані тривалі завдання, і тому потрібна перевірка стану вручну, щоб знайти вдалий момент, коли її можна буде вимкнути, тобто завдання було щойно закінчене.

Але сьогодні вранці я помітив, що простір звільнився за ніч. Мені здається, ніби якась очистка була, і це може бути те саме, що займає додатковий час при демонтажі.

Поки що я помітив таку поведінку лише при видаленні великої кількості даних. З іншого боку, я не впевнений, якщо це відбувається регулярно, і різниця просто занадто мала, щоб помітити.

Файлова система була створена з 0%, зарезервованим для root ( mkfs -m 0). Відповідно до fsck -f(я це роблю завжди між відключенням та повторним замовленням), файлова система не пошкоджена, і згідно з розширеним тестом діагностики SMART, апаратне забезпечення також у порядку.

[EDIT]

tune2fs 1.42 (29-Nov-2011)  
Filesystem volume name:   bigdata  
Last mounted on:          /bigdata  
Filesystem UUID:          6aebd17a-e064-41dc-9c68-c9a3acbe4f66  
Filesystem magic number:  0xEF53  
Filesystem revision #:    1 (dynamic)  
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize  
Filesystem flags:         signed_directory_hash   
Default mount options:    user_xattr acl  
Filesystem state:         clean  
Errors behavior:          Continue  
Filesystem OS type:       Linux  
Inode count:              121413632  
Block count:              485645568  
Reserved block count:     0  
Free blocks:              29081276  
Free inodes:              121382378  
First block:              0  
Block size:               4096  
Fragment size:            4096  
Reserved GDT blocks:      908  
Blocks per group:         32768  
Fragments per group:      32768  
Inodes per group:         8192  
Inode blocks per group:   512  
Flex block group size:    16  
Filesystem created:       Tue Dec 25 23:42:35 2012  
Last mount time:          Fri Jan  3 17:37:36 2014  
Last write time:          Fri Jan  3 17:37:36 2014  
Mount count:              37  
Maximum mount count:      -1  
Last checked:             Thu Apr 18 17:03:40 2013  
Check interval:           0 (<none>)  
Lifetime writes:          14 TB  
Reserved blocks uid:      0 (user root)  
Reserved blocks gid:      0 (group root)  
First inode:              11  
Inode size:           256  
Required extra isize:     28  
Desired extra isize:      28  
Journal inode:            8  
Default directory hash:   half_md4  
Directory Hash Seed:      be2b977e-5127-4843-9123-fe33b6d7b573  
Journal backup:           inode blocks  

[/ EDIT]

Тож ось два мої питання:

  1. Що тут відбувається? Чому простір звільняється при кількості або із затримкою, а не відразу при видаленні?
  2. Чи є що - то я можу зробити , щоб викликати звільнення простору прямо зараз без від'єднання і перемонтажа?

Мені це дуже пахне, ніби файл (и) все ще чимось відкритий. Як ви підтверджуєте, що жоден із файлів не видається після видалення? lsof | grep -i deletedзазвичай це найкращий спосіб перевірити це.
Гаррет

2
Зазвичай ви не можете налаштувати файлову систему, коли файли відкриті. Тож, якщо урахування вдалося, відкритих файлів немає. За винятком вчорашнього дня, я завжди робив цикл повторного монтажу, коли помічав це.
Маркус Н.

Це дійсно так. Які варіанти монтажу ext4?
Гаррет

пора, дефолти
Маркус Н.

У вас працює якась система резервного копіювання, яка могла б зберігати копії файлів або альтернативно жорсткі посилання на них?
дероберт

Відповіді:


9

Є два фактори, які можуть взаємодіяти.

  • На відміну від Windows, ви можете видаляти відкриті файли. Якщо ви видалите фільм, який потоку передається, він буде видалений з каталогу, але все ще буде існувати як файл, поки програма потокової передачі не закриє його. Як тільки потокове програмне забезпечення закриє його, простір буде звільнено. fuser -mКоманда може бути використана , щоб знайти ідентифікатор процесу яких - або процесів з відкритими файлами. Деякі програми можуть не відразу закривати файли, коли вони виконані з ними.

  • Це обидві файлові системи з журналом. Зміни записуються в журнал, а потім здійснюються. Проходження змін може зайняти деякий час. Операційна система часто кешує зміни диска і лише періодично здійснює зміни на диску. Запуск syncкоманди повинен стерти всі очікувані зміни на диску. Встановлення диска з syncопцією дозволить підвищити швидкість на диску, але працює на жорсткішому диску.


1
Так, я знаю, що можу видалити відкриті файли. Я знаю про співвідношення між записами каталогів і inode. Але я впевнений, що файли не були відкритими, інакше я не зможу перерахувати файлову систему ... Але ваш другий елемент видається цікавим. Чи може дійсно зайняти більше 30 хвилин для видалення видалених файлів? 30 хвилин - це час між видаленням файлів і сном позавчора, тому я не можу сказати, скільки часу насправді пройшло.
Маркус Н.

1
@MarkusN. Деякі операційні системи кешують багато даних файлової системи. Якщо простір не потрібен, вони можуть записати достатньо даних журналу транзакцій, щоб забезпечити звільнення місця, але витрачають час, звільняючи простір. Якщо ви вимкнете USB-ключ після введення багатьох даних, це може зайняти багато часу, перш ніж ви зможете їх видалити. Це компроміс між надійним записом на диск і не затримуванням інших дій.
BillThor

Дякуємо за редагування Але як ви бачите в моєму первісному запитанні, я вже намагався синхронізувати без ефекту.
Маркус Н.

1
@MarkusN. Я не думаю, що синхронізація настільки ефективна, як і раніше. Це, ймовірно, просто забезпечує написання даних журналу, не обов'язково, що всі зміни відбулися. Відключення / кріплення змусить застосувати журнал. Я не знаю пріоритету планування для видалення, але я б очікував, що він буде відносно низьким. Вивчення коду може відповісти на більшість ваших запитань.
BillThor

Звучить мені розумно.
Маркус Н.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.