Удалите неработающий индекс EXT4 без debugfs

734
zulus

Я сломал файловую систему внутри qnap. Когда я пытаюсь fsck, это происходит в бесконечном цикле на одном inode. К сожалению, у qnap нет команды debugfs. Можно ли удалить (очистить) inode через dd?

1
Во-первых, я хотел бы сказать извините, потому что это не может рассматриваться как ответ. Но я не знаю, как связаться с автором, поэтому я могу просто опубликовать здесь. Зулус, можешь попробовать связаться со службой поддержки qnap? Или вы можете просто связаться со мной через kevinliao@qnap.com. В соответствии с используемой вами моделью NAS мы предоставим вам правильные отладочные файлы. Благодарю. Kevin Liao 7 лет назад 0
Я отправил Вам электронное письмо и создал билет: JWZ-569-66890. Благодарю вас. zulus 7 лет назад 0

1 ответ на вопрос

2
Theodore Ts'o

Это возможно, но это очень опасно. Если вы облажаетесь, вы можете нанести больше урона. Хитрость заключается в вычислении смещения для конкретного inode с учетом вывода dumpe2fs. Как только вы вычислите смещение, это просто:

dd if=/dev/zero of=/dev/BLOCKDEVICE seek=OFFSET bs=1 count=INODESIZE 

Посмотрите исходный код debugfs для функции do_imap:

Исходное местоположение таблицы inode (которое возвращает ext2fs_inode_table_loc ()) может быть найдено с помощью вывода dumpe2fs, как и размер inode. Как только вы найдете номер блока и смещение, вы можете использовать метод вычисления OFFSET, использованный в приведенной выше команде dd, с помощью:

OFFSET = (block * BLOCKSIZE) + offset 

где блок и смещение - это значения, рассчитанные с помощью do_imap.

Возможно, вы захотите проверить, можете ли вы правильно реплицировать вычисление do_imap вручную, потренировавшись с использованием dumpe2fs, а затем сверяясь с командой debugfs imap в вашей системе Linux (при условии, что вы можете запустить Linux).

С учетом всего сказанного, может быть полезно попробовать скомпилировать e2fsprogs с нуля для qnap, а затем использовать debugfs, созданную для qnap.

Я только что обратился к разработчику qnap, который недавно переписывался со мной в списке рассылки linux-ext4. Я указал ему на этот вопрос и спросил, может ли он отправить указатель на копию debugfs, скомпилированной для qnap. Так что, возможно, вам захочется немного подождать и посмотреть, не станет ли Кевин чем-то более безопасным и легким. Theodore Ts'o 7 лет назад 1

Похожие вопросы