Если вы используете файловую систему ext3, рассмотрите возможность перехода на ext4.
Ext3 может медленно удалять большие файлы, поскольку в нем хранится местоположение каждого отдельного блока 4 КБ: файл размером 50 ГБ (50 * 1024 ^ 3 байта) занимает 13107200 блоков, каждый из которых записывается в таблицу индексов как 32-битный номер блока. , в общей сложности 50MiB бухгалтерских данных только для отслеживания того, где содержимое файла находится на диске. Этот большой список блоков может быть разбросан по многим косвенным блокам , которые должны быть обновлены при удалении файла. Поиск диска для доступа ко всем этим косвенным блокам, вероятно, и является причиной задержки.
Ext4, с другой стороны, распределяет файлы в «экстентах» до 128 МБ. Этот файл размером 50 ГБ может быть записан в таблице inode, используя только 400 записей экстентов, а не 13107200 отдельных номеров блоков, что значительно сокращает объем дискового ввода-вывода, необходимый при удалении файла.
Обратите внимание, что если вы конвертируете существующую файловую систему ext3 на месте в ext4, новые файлы будут распределяться с использованием экстентов, но существующие файлы будут по-прежнему использовать списки блокировки. Вы можете использовать chattr +e
команду для перераспределения существующего файла с использованием экстентов; с точки зрения производительности это сопоставимо с созданием копии файла и последующим удалением оригинала.