Удалить поврежденный inode EXT4 без отладок

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

27
задан zulus
29.12.2022 8:45 Количество просмотров материала 2601
Распечатать страницу

1 ответ

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

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

See исходный код debugfs для функции do_imap:

исходное положение в таблице инф. узлов (что ext2fs_inode_table_loc() возвращает) можно найти выход dumpe2fs, как и размер inode. После того, как вы найдете номер блока и смещение, вы можете использовать вычислить смещение, используемое в команде dd выше через:

OFFSET = (block * BLOCKSIZE) + offset

, где block и offset - значения, вычисляемые do_imap.

возможно, вы захотите практиковать, видя, если вы можете правильно повторить расчет do_imap вручную, практикуя через dumpe2fs и потом сверяю с команду IMAP активные на системе Linux (если вы можете работать Linux.)

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

2
отвечен Theodore Ts'o 2022-12-30 16:33

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя

Похожие вопросы про тегам:

ext4
filesystem-corruption
filesystems
fsck
qnap
Вверх