Pet*_*Bos 15 linux mdadm raid5 debian-squeeze
首先让我承认我犯了错误,并且我对这个 RAID 上的大部分但不是所有数据都有备份。我仍然有希望恢复其余数据。我没有钱将驱动器带到恢复专家公司。
错误 #0,没有 100% 备份。我知道。
我有一个mdadm4x3TB的RAID5 系统。驱动器 /dev/sd[be],都只有一个分区/dev/sd[b-e]1。我知道在非常大的驱动器上使用 RAID5 是有风险的,但我还是这样做了。
RAID 在两个驱动器发生故障后降级。一个驱动器 [/dev/sdc] 真的消失了,另一个驱动器 [/dev/sde] 在重新启动后重新启动,但没有自动重新添加到 RAID。所以我只剩下一个只有 2 个活动驱动器 [/dev/sdb 和 /dev/sdd] 的 4 设备 RAID。
错误 #1,不使用驱动器的 dd 副本来恢复 RAID。我没有驱动器或时间。错误 #2,没有备份超级块和mdadm -E剩余驱动器。
我在降级模式下重新组装了 RAID
mdadm --assemble --force /dev/md0, using /dev/sd[bde]1.
Run Code Online (Sandbox Code Playgroud)
然后我可以访问我的数据。我换/dev/sdc了一个备用;空的; 相同的驱动器。
我/dev/sdc1从 RAID 中删除了旧的
mdadm --fail /dev/md0 /dev/sdc1
Run Code Online (Sandbox Code Playgroud)
错误 #3,在更换驱动器之前没有这样做
然后我将新分区/dev/sdc并将其添加到 RAID。
mdadm --add /dev/md0 /dev/sdc1
Run Code Online (Sandbox Code Playgroud)
然后它开始恢复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
Run Code Online (Sandbox Code Playgroud)
然而,/dev/sde1现在被标记为备用。所以我决定使用我认为正确的顺序使用 --assume-clean 重新创建整个数组,并且/dev/sdc1缺少。
mdadm --create /dev/md0 --assume-clean -l5 -n4 /dev/sdb1 missing /dev/sdd1 /dev/sde1
Run Code Online (Sandbox Code Playgroud)
那行得通,但是在尝试挂载时无法识别文件系统。(应该是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]
Run Code Online (Sandbox Code Playgroud)
然后我想起大约一年前这个 RAID 遭受了驱动器丢失,并通过用备用驱动器替换有故障的驱动器来从中恢复。这可能有点打乱了设备顺序……所以没有驱动器 [3],只有 [0]、[1]、[2] 和 [4]。
我尝试使用 Permute_array 脚本查找驱动器顺序:https ://raid.wiki.kernel.org/index.php/Permute_array.pl但没有找到正确的顺序。
我现在有两个主要问题:
我搞砸了驱动器上的所有超级块,但只给出了:
mdadm --create --assume-clean
Run Code Online (Sandbox Code Playgroud)
命令(所以我不应该覆盖数据本身/dev/sd[bde]1。如果我找到正确的设备顺序,理论上可以恢复 RAID [假设暂时没问题/dev/sde1] 我是对的吗?
/dev/sde1在 RAID 中提供设备编号 [4]是否重要?当我创建它时
mdadm --create /dev/md0 --assume-clean -l5 -n4 \
/dev/sdb1 missing /dev/sdd1 /dev/sde1
Run Code Online (Sandbox Code Playgroud)
它被分配了编号 [3]。我想知道这是否与奇偶校验块的计算有关。如果事实证明它很重要,我该如何重新创建/dev/sdb1[0]缺少 [1]的数组/dev/sdd1[2] /dev/sde1[4]?如果我可以让它工作,我可以在降级模式下启动它并添加新驱动器/dev/sdc1并让它再次重新同步。
如果您想向我指出这可能不是最好的行动方案,那也没关系,但是您会发现我意识到了这一点。如果有人有任何建议,那就太好了。
为了回答您的问题,
可以恢复吗?
由于 sdc 是新的,我将继续尝试通过缺少的子句手动组装,是的,sde 必须采用正确的顺序才能在降级模式下组装。一旦找到正确的布局 - 复制阵列中的所有数据并重新开始,记录布局(这样您就不会再次遇到此问题)。
祝你好运
| 归档时间: |
|
| 查看次数: |
10124 次 |
| 最近记录: |