
Я пытаюсь удалить каталог с сервера 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, и все выглядит нормально. Я проверил top, и rm
он все еще использует процессор после 15 часов на 0,7%. Тип файловой системы — ext3.
Я теперь не знаю, что делать, кроме как сделать резервную копию и отформатировать.
решение1
Даже ls -1f /root/FFDC
медленно? При -1f вывод не будет отсортирован, а сведения о файле будут пропущены.
Если ls выше работает быстро, возможно, что-то вроде find /root/FFDC | xargs rm -vf
будет быстрее? Обычный rm -rf
может делать все виды рекурсии, которые find
МОЖЕТ быть в состоянии пропустить. Или нет.
Ваша файловая система смонтирована с помощьюсинхронизироватьвариант? Если это так, то производительность записи/удаления будет ужасно медленнее, чем могла бы быть сасинхронный. Если вы сомневаетесь, вы можете попробовать mount -o remount,async /
(или mount -o remount,async /root
если это отдельная файловая система для вас).
решение2
Вы рассматривали возможность размонтирования файловой системы и последующего запуска e2fsck для проверки файловой системы на наличие ошибок? Я бы попробовал это перед резервным копированием, форматированием и восстановлением.
решение3
запуск fsck в файловой системе устранит проблему. Обычно это происходит, когда каталог раньше содержал много файлов, а теперь их больше нет. Размер каталога указан как огромное число, и производительность страдает.
решение4
Я не уверен, 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[^.]*
неправильный и include .
и ..
так далее, в противном случае вы можете попробовать предпоследний шаг, какmv FFDC-old/.* FFDC
Файловые системы, такие как ext3/ext4, по сути обрабатывают каталоги как связанные списки неперемещаемых узлов с пространством для имени файла + номер инода, когда файл отсоединяется, пространство для имени освобождается (и должно объединяться со свободными соседними записями, если таковые имеются). Поэтому такой гигантский каталог с несколькими файламиможетбыть создано, но это нелегко. Возможно, создание миллионов жестких ссылок на одни и те же несколько файлов? Создание/удаление миллионов ссылок с тщательно продуманными именами? Что бы ни случилось, чтобы создать это, заслуживает расследования; это розыгрыш, какой-то сбой файловой системы, ...?