У меня есть каталог с временными файлами интеграционных тестов, который имеет следующую структуру:
TestTemp --- Test01 (~1.5TB) --- Subdirectory01 (~100GB) -- Destination JSON (1-100MB)
--- Subdirectory02 -- Destination JSON files
--- Subdirectory03 -- Destination JSON files
...
--- Subdirectory15 (about 10-15 dirs)
--- Test02
--- Test03
...
--- Test15 (about 5-7 directories)
Всего около 10 ТБ.
Файловая система ext3, не может обрабатывать этот каталог как диск. Я следил Эта статья, но этот еще о больших, но немногочисленных файлах.
Я пробовал провести по 6 тестов для каждого варианта: find
и exec rm -rf
, find -delete
и этот странный сценарий perl один за другим, а затем параллельно для двух каталогов.
Лучше всего работал Perl (около 4 минут), следующим был find -delete
(4.10), а затем первый вариант с 4.50.
Распараллеливание не дало ожидаемых результатов. Все варианты работали медленнее. И это было всего два каталога одновременно. Я думаю, что добавление большего количества каталогов приведет к еще большему времени работы.
Утилиту GNU не пробовал parallel
поскольку у меня нет корневого доступа (скрипт очистки запускает Jenkins), я не смог его установить.
Как лучше всего удалить многочисленные большой файлы в многочисленные каталоги как можно быстрее?
Не очевидно, что вы можете стать лучше с файловой системой ext3. Видеть эти графики из долгого расследования, найденного на этот поток serverfault. Что бы они ни делали, на это уходили минуты.
ext4 с экстентами или xfs, вероятно, быстрее
Если вы удаляете все дерево и можете выделить ему том, вы можете каждый раз удалять логический том и воссоздавать файловую систему с помощью сценария. Если дело доходит до этого, вы можете поэкспериментировать с другой файловой системой.