Я пытался удалить каталог с сервера centos, используя rm -Rf /root/FFDC
в течение последних 15 часов, и у меня большие трудности. Я не могу составить список каталогов, потому что он зависает в системе (слишком много файлов?), Но я вижу, что размер каталога - не обычные 4096 байт, а 488 МБ!
[root@IS-11034 ~]# ls -al
total 11760008
drwxr-x--- 31 root root 4096 Aug 10 18:28 .
drwxr-xr-x 25 root root 4096 Aug 10 16:50 ..
drwxr-xr-x 2 root root 488701952 Aug 11 12:20 FFDC
Я проверил inodes, все в порядке. Я проверил верх и rm
через 15 часов все еще использует процессор при 0,7%. Тип файловой системы - ext3.
Я не знаю, куда идти, кроме резервного копирования и форматирования.
Рассматривали ли вы размонтирование файловой системы, а затем запуск e2fsck для проверки файловой системы на наличие ошибок? Я бы попробовал это перед резервным копированием, форматированием, восстановлением.
Даже ls -1f /root/FFDC
медленный? С -1f вывод не будет отсортирован, а сведения о файле будут опущены.
Если ls выше работает быстро, возможно, что-то вроде find /root/FFDC | xargs rm -vf
было бы быстрее? Нормальный rm -rf
может выполнять все виды рекурсии, которые find
МОЖЕТ быть в состоянии пропустить. Или тогда нет.
Ваша файловая система смонтирована с помощью синхронизировать вариант? Если это так, то скорость записи / удаления ужасно медленнее, чем могла бы быть с асинхронный. Если сомневаетесь, можете попробовать mount -o remount,async /
(или mount -o remount,async /root
если это отдельная файловая система для вас).
запуск fsck в файловой системе решит проблему. Обычно это происходит, когда каталог раньше содержал много файлов, а теперь их нет. Размер каталога указан как огромное число, и производительность страдает.
Я не уверен fsck(8)
реорганизует каталоги, вы можете попробовать -D
флаг (как описано в e2fsck(8)
). Если это не так и если в этом каталоге действительно нет миллионов файлов, возможно, что-то вроде следующего дает каталог разумного размера:
cd / root mv FFDC FFCD-old mkdir FFCD # Настроить разрешения на FFDC mv FFDC-old / * FFDC # Проверить / переместить любые файлы / каталоги .xxx в FFDC-old rmdir FFCD-old
По крайней мере, несколько версий bash имеют такие глобусы, как .a[^.]*
неправильно и включать .
и ..
в любом случае, иначе вы можете попробовать предпоследний шаг как mv FFDC-old/.* FFDC
Файловые системы, такие как ext3 / ext4, обрабатывают каталоги по существу как связанные списки неподвижных узлов с пространством для имени файла + номер inode, когда файл не связан, пространство для имени освобождается (и должно объединяться со свободными соседними записями, если таковые имеются). Итак, такой гигантский каталог с несколькими файлами жестяная банка быть создано, но это непросто. Возможно, создание миллионов жестких ссылок на одни и те же файлы? Создание / удаление миллионов ссылок с тщательно подобранными именами? Что бы ни случилось, чтобы создать это, следует изучить; это шутка, какая-то неисправность файловой системы, ...?