Пробовал несколько решений, но работал только до некоторой степени. https://unix.stackexchange.com/questions/37329/efficiently-delete-large-directory-contain-thousands-of-files?newreg=07f276292205457ab9975a0ea68e9273
http://www.slashroot.in/which-is-the-fastest-method-to-delete-files-in-linux
После освобождения 8% дескрипторов диск стал очень медленно удалять что-либо еще.
rm -f filename*
rsync -a --delete empty_dir/ yourdirectory/
perl -e 'for(<*>){((stat)[9]<(unlink))}'
И диск теперь выглядит так
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/vda1 2621440 2385895 235545 92% /
tmpfs 128789 1 128788 1% /dev/shm
В каталоге все еще более 6 миллионов небольших файлов. Вышеуказанные методы удаляют со скоростью около 2 файлов в секунду.
Я читал о перебалансировке B-дерева. Но как мне диагностировать / решить проблему медленного удаления?
`` ''
Что можно сделать быстро, это переместить / переименовать текущий /tmp
каталог и создайте новый, чтобы нормальное использование /tmp
больше не влияет.
mkdir /newtmp
chmod 1777 /newtmp
mv /tmp /tmp-old && mv /newtmp /tmp
и, возможно, вам нужно сделать то же самое для /var/tmp
также. Это позволяет вам спокойно очистить / tmp-old.
В качестве смягчающей меры:
Рассмотрите возможность использования некоторой части вашей памяти для создания отдельного раздела tempfs, который будет использоваться в качестве хранилища для ваших файлов сеанса PHP, что несколько ограничит влияние на остальную часть вашей системы.
т.е.
mkdir /var/cache/php
chmod 1777 /var/cache/php
mount -t tmpfs size=500M /var/cache/php
и отредактируйте свой php.ini
и установить
session.save_path = "/var/cache/php"