Назад | Перейти на главную страницу

Как удалить файлы после ошибки EXT4-fs: обнаружена дыра в каталоге

У меня есть конкретный каталог, в котором я не могу удалить файлы или каталог. Каталог находится в файловой системе ext4 с использованием RAID5 на 3 дисках на QNAP NAS.

С помощью rm -f дает мне:

rm: unable to stat `file.jpg': Input/output error

А также показывает следующее на dmesg:

EXT4-fs error (device dm-0): dx_probe:933: inode #55050534: block 3591: comm rm: Directory hole found

Поскольку "ошибка ввода / вывода" обычно означает аппаратное обеспечение, я провел несколько тестов, например, то, что я предполагаю, является версией QNAP. fsck, badblocks, а также быстрые и длительные тесты SMART на отдельных дисках, плюс очистка рейдов все равно запускается периодически - и все вернулись и сказали, что ошибок нет.

В папке много файлов, так как это черная дыра для тысяч файлов, добавляемых ежедневно / ежечасно (невозможно их засчитать как ls | wc страдает от ошибок "Ошибка ввода / вывода" и "Обнаружена дыра в каталоге") - поэтому на основе аналогичный столб черной дыры) Я предполагаю, что уничтожил каталог, а не оборудование.

К сожалению, версия find на QNAP не поддерживает -exec аргумент, и поэтому я не могу попробовать то, что было предложено в этом сообщении.

Вопросы следующие:

  1. Что такое "дыра в каталоге",
  2. Как удалить каталог и файлы в дыре в каталоге.

Выполните команду ниже внутри этого каталога. По сути, это замена -exec rm {}. Он создаст список файлов внутри каталога и построит несколько команд rm с ограничением аргументов за один запуск, установленным на 10

find ./ -type f|xargs -n 10 rm

Выше будут удалены все файлы в этом каталоге, если это было вашим намерением. Я бы, наверное, сначала попробовал спасти файлы, скопировав их в другой каталог.