我正在尝试从带有坏超级块的 RAID 5 中恢复数据。我用 g++ 编写了一个工具,它可以让我同时从所有 3 个驱动器中转储数据,并且如果有一个丢失的驱动器,它将从丢失的驱动器中创建数据。没有。我确实知道一个驱动器不是 100% 同步的,因此该功能以后可能会派上用场。它还具有 ASCII 搜索功能,有助于查找目录,但可能需要两天时间才能完成对 3TB 数据的搜索。
无论如何,问题是我如何计算我想从 inode 号转储的块?当通过我的 inode*16+36984 等式运行时,inode 编号 0x02E00001 将我指向 inode 0x02E0A007 和 0x02E0A007,它们是存储在 2 个 RAID 驱动器上的数据,我将始终有机会找到 2 个目录。但是,我的数学计算出 0xA000 inode 为高。在过去 2 天里我提出的所有计算中,这是我似乎能够得到的最接近的。
如果 1 除以 2,则 36984 可能是 inode 零位置,因为数据跨 2 个驱动器进行条带化以用于 RAID。我根据找到位于转储位置 37000 或 ext4 位置 74000 的 inode 2 的根目录计算了这个数字。