Я сломал файловую систему внутри qnap. Когда я пытаюсь fsck, это происходит в бесконечном цикле на одном inode. К сожалению, у qnap нет команды debugfs. Можно ли удалить (очистить) inode через dd?
1 ответ
Это возможно, но это очень опасно. Если вы облажаетесь, вы можете нанести больше урона. Хитрость заключается в вычислении смещения для конкретного 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.