在高清启动后恢复ext4分区


8

我不小心使用dd并覆盖了外部磁盘的前208MB。我写的是一个单独的分区(Debian nestinstaller),所以我现在看到的不是旧的(现在已损坏)的ext4分区,而是另一个较小的分区。这限制了我可以遵循的工具和建议。

我的计划是重新创建分区表testdisk,然后描述与备份超级块搞定一切在这里。我会丢失前208MB,但与其中的其他300GB数据相比,这还可以。类似于以下内容:

mke2fs -n /dev/sdb1   # doesn't work because sdb1 is the 208MB new partition
testdisk ...          # used this to create new correct partition table
mke2fs -n /dev/sdb1   # now works fine, get backup superblock positions
e2fsck -b backup_position -y /dev/sdb1 # returns many errors hence the -y

但是,我一直无法恢复任何东西。我曾经testdisk写过一个新的分区表,该分区表与以前的表相匹配。当我运行e2fsck时,出现许多不同的错误。之后,我得到一个文件系统,但是它完全是空的,没有文件。

lost + found目录中充满了文件(我认为是已恢复的文件),但我需要恢复目录树,而不仅仅是文件。我需要文件名和以前的目录才能知道文件是什么(显微镜图像,质谱数据等。如果没有名称和目录,它们将毫无意义)。

我得到了完全相同的另一个HD,并用制作了整个HD的副本,dd因此我可以尝试恢复而不会丢失任何东西。有什么建议吗?


您知道以前有多少个分区吗?
美洲狮2012年

@Cougar是的。我只有一个ext4主分区,横跨整个磁盘。
carandraug 2012年

2
首先,我建议使用fdisk或任何其他低级分区工具重新创建分区。此处显示了如何恢复您的ext4:链接
Cougar 2012年

@Cougar实际上是我尝试恢复分区的链接。区别在于我曾经testdisk用来重新创建分区。我会尝试的fdisk
carandraug 2012年

@Cougar使用fdisk我什e2fsck至无法使用,因为它找不到超级块备份。我认为问题在于我无法编辑CHS(新分区将其设置为64,但应为255)
carandraug 2012年

Answers:


7

我终于设法解决了这个问题。仅作记录,这就是我的做法。我在这里找到的解决方案的一部分,涉及到了解用于创建文件系统的设置(我很确定自己没有更改默认设置)。

基本上,我首先要修复分区表,以反映我其实是有有(我用testdisk这个,但是partedcfdisk还是fdisk应该正常工作以及)。我只是删除了错误的分区,并用覆盖整个磁盘的单个ext4类型分区替换了正确的CHS值。

其余的大部分来自开始时的链接(有关详细信息,请阅读该链接),但是基本上我跑来mke2fs -n /dev/xxx寻找超级块备份的位置。然后使用最接近磁盘末尾的最后一个备份(只有磁盘开始处的那些被dd覆盖)来运行fsck。这产生了很多错误,但是fsck有一个-y选项(与相同-a)。

$ sudo e2fsck -a -b backup_block_number /dev/xxx

我以为这没用,因为我看不到任何文件,但实际上它们都已保存到lost+found目录中。

所以最后我确实挽救了大多数文件,同时保留了文件名和目录结构。希望这对将来有帮助。


-1

好的,这可以从MegaRAID阵列中意外启动的驱动器中恢复。我的RAID控制器初始化了RAID中的所有驱动器,而不仅仅是我正在复制的RAID6阵列的驱动器。哎哟! 至少我做了一个快速初始化,而不是一个缓慢的初始化-缓慢的初始化将驱动器擦除为零。

快速初始化会删除驱动器开头和结尾的10M。因此,我在整个驱动器(在Linux下)上具有ext4分区,而一个驱动器RAID0则有机会。由于该驱动器是6TB驱动器,几乎是5TB的驱动器,我出汗了-这是我正在改造的RAID6阵列的备份!

顺便说一句,我没有滑倒-LSI MegaRAID不应该在我的其他驱动器组中启动驱动器-但事实确实如此。注意,我应该做的是在安装了新安排的RAID6驱动器组之后,从机箱中删除该驱动器,然后将其重新导入。傻我 真是愚蠢的我。

好的,幸运的是LSI MegaRaid对RAID0驱动器没有任何幻想(如果有一个我猜不确定多个驱动器)。这是我修复它的方法。OS = Fedora F22。Drive =一个很大的ext4分区,已分区。首先,我在具有几个备用托架插槽的备用服务器中将驱动器快照到一个全新的,完全相同型号的驱动器::十小时后,它完成了……

$ dd if=/dev/sdb of=/dev/sdc bs=64M conv=notrunc
89424+1 records in
89424+1 records out
6001175126016 bytes (6.0 TB) copied, 35130.2 s, 171 MB/s

那是我的黄金备份。

注意-我的驱动器是/dev/sdb-您需要将您的驱动器设置为要恢复的驱动器。不要拧紧驱动器,否则您将陷入混乱……。

然后,完成了以下操作。

(1)从计算机中删除快照(我再向您保证,如果我失败了,我将自己检查到本地ER时,它将被送往磁盘恢复医院!)。

(2)用驱动器重启FC22机器。运行parted,重做分区(在我的情况下,删除损坏的分区,写入新的0%到100%ext4分区)。您必须确切了解原始分区的位置及其确切类型-下一步取决于此-如果不是,请在此处停止。你不会做到的。请使用testdiskphotorec或类似名称,或者在真正重要的大型驱动器上将其发货。

(3)跑步 mke2fs -n /dev/sdb1(不要忘记了-n,否则您可以再次走开...)

对我来说,结果看起来像:

$ mke2fs -n /dev/sdb1
$ mke2fs 1.42.13 (17-May-2015)
Creating filesystem with 1464843008 4k blocks and 183107584 inodes
Filesystem UUID: 1ac318a6-7953-42d5-8d7b-0597c54e1935
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
        102400000, 214990848, 512000000, 550731776, 644972544

在那里,所有的备用超级块都在这里……我们知道第一个和最后一个是垃圾,但是中间的应该没问题。(请注意,您可以 mkfs.ext4 -n /dev/sdb1超级谨慎并获得相同的结果)。

(4)运行e2fsck -y -b 102400000 /dev/sdb1。您将需要-y,因为将需要很多“是”来修复磁盘丢失的前端所造成的混乱....,然后在所需的中间位置选择任何超级块...大约30分钟后在我的情况下,没有任何问题(使用另一个终端和“顶部”监视进度或磁盘指示灯闪烁),可安装的分区以及该/lost+found目录中的几乎所有内容。

无论如何,我希望这对您有所帮助-如果您仔细阅读此书,那么祝您好运。还要感谢上面写的那些人。你救了我一个令人恶心的结局.....

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.