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

3091
Markus N.

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

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

Я тоже пытался синхронизировать, но безрезультатно.

Это не первый раз, когда это происходит. Действительно, я видел такое поведение с годами время от времени. Сначала на ext3, теперь на ext4.
Когда это происходит, я могу освободить свободное место, отмонтировав, а затем перемонтировав файловую систему. В этих случаях размонтирование занимает почти 2 минуты, а не почти без времени.

В настоящее время я не могу легко размонтировать и перемонтировать файловую систему, потому что она постоянно занята моим программным обеспечением видеомагнитофона, сервером owncloud для моей семьи и несколькими другими службами, которых у меня до сих пор не было. И я не хочу вставать в 3 часа ночи только для того, чтобы размонтировать и перемонтировать.

Нет, утилита «at» не подойдет, потому что одна из служб выполняет не возобновляемые долгосрочные задачи и, следовательно, нуждается в ручной проверке состояния, чтобы найти подходящий момент, когда ее можно закрыть, то есть задача только что была завершена.

Но сегодня утром я заметил, что место освободилось за одну ночь. Мне кажется, что была какая-то очистка, и это может быть то же самое, что требует дополнительного времени при размонтировании.

Пока что я заметил это только при удалении большого количества данных. С другой стороны, я не уверен, что это происходит регулярно, и разница слишком мала, чтобы заметить.

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

[РЕДАКТИРОВАТЬ]

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  

[/РЕДАКТИРОВАТЬ]

Итак, вот мои 2 вопроса:

  1. Что здесь происходит? Почему место освобождается в размонтированном виде или с задержкой, а не сразу при удалении?
  2. Есть ли что-то, что я могу сделать, чтобы вызвать освобождение места прямо сейчас без демонтажа и перемонтирования?
15
Это очень пахнет для меня, как файл (ы) все еще открыты чем-то. Как вы подтверждаете, что ни один из файлов не открыт после удаления? `lsof | grep -i delete` - обычно лучший способ проверить это. Garrett 10 лет назад 0
Обычно вы не можете размонтировать файловую систему, когда файлы открыты. Таким образом, если umount преуспевает, открытых файлов нет. За исключением вчерашнего дня, я всегда делал цикл повторного монтирования, когда заметил это. Markus N. 10 лет назад 2
Это действительно так. Какие у вас варианты монтирования ext4? Garrett 10 лет назад 0
noatime, по умолчанию Markus N. 10 лет назад 0
Есть ли у вас какая-то система резервного копирования, которая может хранить копии файлов или, альтернативно, жесткие ссылки на них? derobert 10 лет назад 0
Как вы проверяете свободное место? Используете какой-то интерфейс? Braiam 10 лет назад 0
Какова основная технология HDD? Диски SATA? SSD? Какой у тебя дистрибутив? slm 10 лет назад 0
Какова природа файлов, которые вы удаляете? Эти файлы изображений для виртуальных машин? slm 10 лет назад 0
Можем ли мы также получить вывод `sudo tune2fs -l `? slm 10 лет назад 0
@derobert Нет, система резервного копирования не запущена Markus N. 10 лет назад 0
Свободное пространство @Braiam проверяется с помощью df -h, а также с помощью виджета панели задач Markus N. 10 лет назад 0
@sim это SATA-диск с установленным Xubuntu 12.04. Файлы (в большинстве случаев) - телешоу, записанные с помощью программного обеспечения видеомагнитофона VDR. И я уверен, что VDR не оставляет файлы открытыми после завершения записи. Кроме того, я регулярно перемещаю файлы из директории записи VDR и перезапускаю VDR. Markus N. 10 лет назад 0
Хм, случайный удар при поиске неисправностей: перед удалением выполните `sudo du -a /> before`, затем после удаления, то же самое, но в другом файле. Наконец, на следующее утро (или всякий раз, когда пространство освобождается), снова, к третьему файлу. Затем сравните их (например, с `diff`) и посмотрите, действительно ли пространство занято файлом. PS: Пожалуйста, подтвердите, что вы используете ext4, а не, скажем, btrfs. derobert 10 лет назад 0
Это то, что я обычно делаю: du -sh / bigdata / dir / to / delete; df -h / bigdata; rm -rf / bigdata / dir / to / delete; df -h / bigdata и на следующее утро снова df -h / bigdata. Кроме того, я смотрю на виджет свободного пространства на панели задач XFCE. Markus N. 10 лет назад 0
@sim Я добавил вывод tune2fs -l к своему вопросу. Markus N. 10 лет назад 0

1 ответ на вопрос

9
BillThor

There are two factors that may be interacting.

  • Unlike Windows you can delete files that are open. If you delete a movie that is being streamed, it will be removed from the directory, but will still exist as a file until the streaming program closes it. Once the streaming software closes it, the space will be released. The fuser -m command can be used to find the process id of any processes with open files. Some programs may not immmediately close files when they are done with them.

  • These are both journaled file systems. Changes are written to a journal and then committed. It can take a while for the changes to commit. The operating system will often cache disk changes and only commit changes to disk periodically. Running the sync command should flush any pending changes to disk. Mounting the disk with the sync option will improve the speed to disk, but works the disk harder.

Да, я знаю, что могу удалить открытые файлы. Я знаю об отношениях между записями каталога и инодами. Но я уверен, что файлы не были открыты, иначе я не смог бы размонтировать файловую систему ... Но ваш второй элемент кажется интересным. Неужели для фиксации удаленных файлов может потребоваться более 30 минут? 30 минут - это время между удалением файлов и укладыванием в постель позавчера, поэтому я не могу сказать, сколько времени это действительно заняло. Markus N. 10 лет назад 1
@MarkusN. Некоторые операционные системы кэшируют много данных файловой системы. Если пространство не требуется, они могут записать достаточно данных журнала транзакций, чтобы освободить пространство, но потратить свое время на освобождение пространства. Если вы отключите USB-ключ после записи большого количества данных, может потребоваться много времени для сброса данных, прежде чем вы сможете удалить его. Это компромисс между надежной записью на диск и отсутствием задержки других действий. BillThor 10 лет назад 1
Спасибо за редактирование. Но, как вы видите в моем первоначальном вопросе, я уже попробовал синхронизировать без эффекта. Markus N. 10 лет назад 0
@MarkusN. Я не думаю, что синхронизация так же эффективна, как раньше. Скорее всего, это просто гарантирует запись данных журнала, а не обязательно, что все изменения зафиксированы. Размонтирование / монтирование приведет к применению журнала. Я не знаю приоритета планирования удалений, но я ожидаю, что он будет относительно низким. Изучение кода может ответить на больше ваших вопросов. BillThor 10 лет назад 1
Звучит разумно для меня. Markus N. 10 лет назад 0