首先,我要承认自己犯了错误,并且为该RAID上的大部分但不是全部数据提供了备份。我仍然希望恢复其余数据。我没有钱将驱动器带到恢复专家公司。
错误#0,没有100%的备份。我知道。
我有一个mdadm
4x3TB 的RAID5系统。驱动器/ dev / sd [be]都具有一个分区/dev/sd[b-e]1
。我知道非常大的驱动器上的RAID5很有风险,但是我还是这么做了。
最近发生的事件
两个驱动器发生故障后,RAID降级。一个驱动器[/ dev / sdc]确实没了,而另一个[/ dev / sde]重启后又恢复了,但没有自动重新添加到RAID中。因此,我只剩下4个RAID设备,只有2个活动驱动器[/ dev / sdb和/ dev / sdd]。
错误#1,未使用驱动器的dd副本还原RAID。我没有驱动器或时间。错误#2,不备份超级块和mdadm -E
其余驱动器。
恢复尝试
我以降级模式重新组装了RAID
mdadm --assemble --force /dev/md0, using /dev/sd[bde]1.
然后,我可以访问我的数据。我换/dev/sdc
了一个备用的;空 相同的驱动器。
我/dev/sdc1
从RAID中删除了旧的
mdadm --fail /dev/md0 /dev/sdc1
错误3,在更换驱动器之前不要这样做
然后,我对新分区进行了分区/dev/sdc
,并将其添加到RAID。
mdadm --add /dev/md0 /dev/sdc1
然后,它开始还原RAID。预计时间:300分钟。我按照流程进行/proc/mdstat
到2%,然后去做其他事情。
检查结果
几个小时(但不到300分钟)后,我检查了该过程。由于出现读取错误,它已停止/dev/sde1
。
真正的麻烦就在这里
然后/dev/sde1
,我从RAID中删除并重新添加了它。我不记得为什么要这么做了。太晚了。
mdadm --manage /dev/md0 --remove /dev/sde1
mdadm --manage /dev/md0 --add /dev/sde1
但是,/dev/sde1
现在被标记为备用。因此,我决定使用--assume-clean重新创建整个数组,并使用我认为正确的顺序,但/dev/sdc1
缺少该顺序。
mdadm --create /dev/md0 --assume-clean -l5 -n4 /dev/sdb1 missing /dev/sdd1 /dev/sde1
那行得通,但是尝试挂载时无法识别文件系统。(应该是EXT4)。
设备订单
然后,我检查了最近的备份/proc/mdstat
,找到了驱动器顺序。
md0 : active raid5 sdb1[0] sde1[4] sdd1[2] sdc1[1]
8790402048 blocks super 1.2 level 5, 512k chunk, algorithm 2 [4/4] [UUUU]
然后我记得该RAID大约一年前遭受了驱动器丢失,并通过用备用驱动器替换有故障的驱动器使其恢复。这可能使设备的顺序有些混乱……因此没有驱动器[3],只有[0],[1],[2]和[4]。
我试图用Permute_array脚本找到驱动器顺序:https ://raid.wiki.kernel.org/index.php/Permute_array.pl,但是找不到正确的顺序。
问题
我现在有两个主要问题:
我拧紧了驱动器上的所有超级块,但只给出了:
mdadm --create --assume-clean
命令(因此我本不应该覆盖数据本身
/dev/sd[bde]1
。如果在理论上可以/dev/sde1
找到正确的设备顺序,那么理论上可以恢复RAID [假设片刻还可以]是对的吗?/dev/sde1
在RAID中指定设备号[4] 是否重要?当我用mdadm --create /dev/md0 --assume-clean -l5 -n4 \ /dev/sdb1 missing /dev/sdd1 /dev/sde1
它被分配了数字[3]。我想知道这是否与奇偶校验块的计算有关。如果结果很重要,如何重新创建
/dev/sdb1[0]
缺少失踪的数组[1]/dev/sdd1[2]
/dev/sde1[4]
?如果可以正常运行,则可以降级模式启动它并添加新驱动器,/dev/sdc1
然后使其重新同步。
如果您想向我指出这可能不是最佳的做法,那没关系,但是您会发现我意识到了这一点。如果有人有任何建议,那就太好了。