У меня есть каталог с интеграционными тестами временные файлы, который имеет следующую структуру:
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 работала лучшее (приблизительно 4 минуты), затем был find -delete
(4.10) и затем первая опция с 4,50.
Распараллеливание не дало ожидаемые результаты. Все опции работали медленнее. И это было только двумя каталогами одновременно. Я думаю, то предоставление большего количества каталогов вызовет еще более длительное время выполнения.
Я не попробовал утилиту GNU parallel
поскольку у меня нет корневого доступа (скрипт очистки запущен Jenkins), таким образом, я не мог установить его.
Что наилучший вариант состоит в том, чтобы удалить многочисленные большие файлы в многочисленных каталогах максимально быстро?
Не очевидно, что с файловой системой ext3 можно добиться гораздо большего. Смотрите эти графики из длинного исследования, найденного на этом неисправном потоке сервера . Это заняло несколько минут, что бы они ни делали.
ext4 с экстентами или xfs, вероятно, быстрее
Если вы удаляете целое дерево, и можете выделить для него том, вы можете каждый раз создавать скрипты для удаления логического тома и воссоздания файловой системы. Однако, если дело доходит до этого, вы можете поэкспериментировать с другой файловой системой.