1

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

1 ответ1

2

Это возможно, но это очень опасно. Если вы облажаетесь, вы можете нанести больше урона. Хитрость заключается в вычислении смещения для конкретного 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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .