Я пытаюсь восстановить данные с RAID 5 с плохими суперблоками. Я написал инструмент на g++, который позволяет мне выгружать данные со всех трех дисков одновременно и создавать данные с отсутствующего диска, если он есть. которого нет. Я знаю, что один диск не синхронизирован на 100%, так что эта функция может пригодиться позже. Он также имеет функцию поиска ASCII, которая помогает находить каталоги, но потенциально может занять два дня, чтобы выполнить поиск по 3 ТБ данных.
В любом случае, вопрос в том, как рассчитать блок, который я хочу сбросить, из номера инода? Номер инода 0x02E00001 при прогоне моего уравнения inode*16+36984 указывает мне на иноды 0x02E0A007 и 0x02E0A007, данные которых хранятся на 2 дисках рейда. У меня всегда будет шанс найти 2 каталога. Однако моя математика вычисляет 0xA000 инодов до высокого. Из всех расчетов, которые я сделал за последние 2 дня, это самое близкое, что я могу получить.
36984 потенциально является нулевым расположением inode, если он был разделен на 2, потому что данные распределены по 2 дискам для рейда. Я рассчитал это число на основе поиска корневого каталога, который является inode 2, расположенным в месте дампа 37000 или в местоположении ext4 74000.