我在LV中有一个ext4文件系统,它被破坏了,因为我意外地缩小了分区,它太小了。在将分区扩展回原来的大小后,我在LV上放置了一个新的ext4 FS,因为在它当前的状态下,udev甚至不会给它一个设备文件。
我需要恢复旧的超级块,我希望仍然有一个好的备份某处。
我怎么找到它?我能?
testdisk似乎找到了其中的一堆,但没有一种有效。
发布于 2015-08-18 10:25:35
您可能很幸运,并且在分区上有备份超级块。如果您还记得用于创建文件系统的选项(例如,您只使用了默认值),那么您可以找到如下所示的备份位置:
sudo /sbin/mkfs.ext4 -n <original_options> <device>-n非常重要--它是一个“试运行”选项,不会将任何东西写入磁盘(在您进行实验时,将磁盘转储到一个安全的地方可能仍然是个好主意--我想您已经这样做了)。
即使你不记得原来的选项,以上都是值得一试的,以获得一个候选人名单。
现在,对于每个候选超级块,尝试使用-o ro,sb=<n>安装以使用备用超级块(并且是只读的)。如果成功,可能会恢复一些文件。
如果候选超级块中没有一个允许成功的装入,那么最后的努力可能是使用-S选项将一个新的超级块写入到mkfs.ext4:“只编写超级块和组描述符。如果所有的超级块和备份超级块都损坏了,并且需要使用最后一条恢复方法,这是非常有用的。”如果没有完整的分区备份,我是不会这么做的。
发布于 2015-08-18 10:05:18
首先,确保磁盘是只读的,以便在试图恢复数据时不再发生写入操作。
ext4超级块很难找到,因为内容变化很大,取决于inode计数、块计数等。然而,有一个神奇的签名0xEF53 (16位),您可以尝试搜索。如果您能够找到正确的位置,那么超级块的开始(以及总inode计数)应该放在56字节(0x38字节的十六进制)之前。
您可能会发现0xEF 53的许多实例,但是通过检查超级块中其他可能的值,您可能能够识别它。
下面是ext4超级块值表:https://ext4.wiki.kernel.org/index.php/Ext4_磁盘_Layout#The_超级_区块
对整个磁盘映像使用十六进制编辑器可能会产生结果。
编写一个程序(或者付钱让人做),搜索数据,寻找看起来像ext4超级块的东西,也可能是一个想法。(例如,偏移量72 (0x48)处的32位数字应该是0,因为操作系统是"Linux")。
祝你好运。
https://unix.stackexchange.com/questions/223428
复制相似问题