@tvoyadres

Почему медленно удаляются файлы и с паузами на серверных SSD Samsung centos 6?

Имеются 2 диска
SM961 - 256 GB файловая система EXT4 3 года проработал
PM883 - 8TB файловая EXT4 абсолютно новый 10 дней проработал
Система Centos 6.10 лимиты файлов подняты до 65535
раньше я на эту проблему не обращал внимание, но вчера случайно заметил.

Копирование с 1 SSD SM951 NVME на 2 PM883 SATA папка MOD_TMP примерно 15 млн. файлов сессий все летает без тормозов, но когда я начинаю удалять папку не важно с какого диска начинается затык, несколько секунд быстро удаляется, потом пауза, потом снова быстро удаляться и снова пауза, и т.д при этом люди нормально сайтом пользоваться не могут, например хочу я залить файлы на сервер через сайт, жутко тормозит.

Мне кажется, что я в какие то настройки упираюсь при удалении файлов мелких файлов. Запись ведь и считывание пашет без проблем. Дисками все норм если что.
  • Вопрос задан
  • 1428 просмотров
Пригласить эксперта
Ответы на вопрос 5
Oxyd
@Oxyd
Linux enthusiast
Вы упёрлись в ограничение rm Воспользуйтесь find.
find /path/to/folder -name "*" -type f -print | xargs /bin/rm -f

В этом случае find будет передавать на вход rm файлы по одному и затыки пропадут. Можете ещё попробовать к xargs ключ -P x где x -- количество одновременно удаляемых файлов. Поставьте по количеству ядер процессора, например. -P 0 автоматически будет запускать максимально возможное число процессов.
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Если часто удаляется папка с over миллиардом файлов то можно пересмотреть эту задачу архитектурно. Например смонтировать эту папку как volume и форматировать ее. Это быстрее. В противоположность, файловые удаления по 1 штуке требуют фиксации транзакции для каждого файла. А это избыточные действия которые как раз и создают поток IOPs над структурами данных ext4. По аналогии с БД. То что делает автор это удаление каждой строчки из таблицы с коммитом. А то что я предлагаю - это по смыслу truncate table.
Ответ написан
@zersh
Скорее всего связано с тем как много у вас файлов, насколько заполненны диски и как удаляются данные ssd.
в отличии от hdd, ssd - нужно выполнить гораздо больше манипуляций.
описание: https://recovery-software.ru/blog/how-ssd-drives-p...

для удаления попробуй запускать с более низким приоритетом

ionice -c2 -n7 КОМАНДА


а ещё можно по крону, в момент наименьшей нагрузки сервера, например ночью
на определённое время. примерно так, совместив совет, что приводили ранее:
0 02 * * * /usr/bin/timeout 18000 /usr/bin/flock -n /tmp/remove_files.lock -c "ionice -c2 -n7 find /path/to/folder -name "*" -type f -print | xargs -P 0 /bin/rm -f"


процесс удаления будет запускаться каждую ночь с 2ч и до 7 утра. (/usr/bin/timeout 18000 = 5ч)
Ответ написан
Комментировать
opium
@opium
Просто люблю качественно работать
Обычная проблема когда много файлов в одной папке, раскидайте по папкам или храните в каком нить мемкеше
Ответ написан
@tvoyadres Автор вопроса
Всем спасибо за участите, в общем думаю какая то проблема с одновременным чтением и удалением файлов, я затушил вебсервер, спокойно смог удалить через VC всю папку, за несколько минут, без почти без задержек объем папки был 37GB файлов сессий и временных файлов. Скорее всего диск Samsung SM951 не вытягивал одновременно чтение и удаление 15 млн. файлов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы