Как я могу это исправить: EXT4-fs предупреждение (устройство sda3): ext4_dx_add_entry: индекс каталога заполнен
Я заметил, что в dmesg и syslog у меня есть что-то вроде этого:
EXT4-fs warning (device sda3): ext4_dx_add_entry: Directory index full!
Я тоже проверил df -i:
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda3 182943744 27534820 155408924 16% /
И я вижу, что IUse% составляет 16%. Я перезагрузил этот сервер, но это случилось снова. Я проверяю, где у меня слишком много файлов, и наибольшее количество было 3200 файлов в одной папке. Это много?
Я нашел в Google - что я могу попробовать fsck, но как я могу сделать это в системе монтирования. Я думаю, это невозможно, иначе это может привести к сбою моих данных.
У тебя есть идея?
Большое спасибо за помощь.
Рафал
2 ответа
Я нашел в Google - что я могу попробовать fsck, но как я могу сделать это в системе монтирования. Я думаю, это невозможно, иначе это может привести к сбою моих данных.
Да, это то, что я бы порекомендовал. Похоже, у вас может быть повреждение файловой системы.
fsck
не может восстановить файловую систему, которая смонтирована. Вам нужно будет либо загрузить и остановить процесс загрузки, прежде чем ваша файловая система будет смонтирована для запуска fsck
(это может или не может быть возможно в зависимости от вашей конфигурации) или загрузитесь с другого носителя (например, установочного диска или LiveCD), чтобы проверить и восстановить вашу корневую файловую систему.
Я нашел в Google, что я могу попробовать fsck, но как это сделать в системе монтирования. Я думаю, что это невозможно, иначе это может привести к сбою моих данных.
Есть несколько разных вариантов, и все они требуют перезагрузки. Вариант №3, представленный ниже, мне больше всего нравится, поскольку он дает мне больше контроля, но это зависит от доступа к вашей консоли.
Но сначала прочтите предупреждения:
Предупреждение № 1. Обязательно сделайте резервную копию своих данных перед запуском fsck, иногда fsck может ухудшить ситуацию!
Предупреждение №2 . Если вы находитесь в центре обработки данных и у вас нет удаленного доступа к консоли (например, iDRAC, iLO, iKVM и т. д.), попросите кого-нибудь помочь с консолью. Иногда принудительное выполнение fsck при загрузке запрашивает ввод данных пользователем в случае ошибки и требует вмешательства пользователя — и вы же не хотите, чтобы вас заблокировали!
Если это корневой раздел (а в вашем случае это так), то №1 или №2 могут сработать:
- Вы могли бы попробовать
touch /forcefsck
и перезагрузиться - или во время загрузки (или, если у вас нет доступа к консоли, отредактируйте grub.cfg напрямую) и добавьте
fsck.mode=force
и необязательноfsck.repair=yes
и позвольте systemd-fsck сделать это.- Если вы редактировали grub.cfg напрямую, верните его обратно, когда закончите!
Если это не корневой раздел (или если пункты 1 и 2 выше не работают), вам потребуется доступ к консоли:
- Загрузитесь в режим и обойдите все:
- Сначала отредактируйте командную строку ядра в grubотредактируйте командную строку ядра в grub во время загрузки и добавьте
init=/bin/sh
- Когда он загрузится, он, вероятно, загрузится с таким приглашением:
bash-4.2#
- Возможно, вам потребуется указать путь:
PATH=/sbin:/bin:/usr/sbin:/usr/bin
- Затем вы можете протестировать fsck следующим образом:
fsck.ext4 -fn /dev/your/device
- Если количество ошибок выглядит не слишком пугающим, запустите восстановление:
fsck.extr -fy /dev/your/device
- Сначала отредактируйте командную строку ядра в grubотредактируйте командную строку ядра в grub во время загрузки и добавьте
- Используйте Live CD, как в этом ответе.