MDADM RAID 5 数据恢复

MDADM RAID 5 数据恢复

感谢您阅读此帖子,并提前感谢您提供的任何帮助。

事情是这样的……我注意到我的 MDADM RAID 5 阵列驱动器顺序为:/dev/sd[EFGHIABCDKJ]1 报告驱动器故障 -- /dev/sdb1。我停止了阵列并运行了 smartctl -t long /dev/sdb1 并收到通过。

因此,我使用 mdadm --add 将 /dev/sdb1 重新添加到 /dev/md0。在重建过程中,/dev/sdh1 处于离线状态(数据线一定是在我从 FL 移动到 MI 时松动的),现在阵列状态已降级。我再次使用 smartctl 检查了两个驱动器,并收到 2 次通过。

我读了一些论坛上关于使用 mdadm -C /dev/md0 /dev/sd[efghiabcdkj]1 的建议,但阵列重新同步时驱动器顺序混乱(sd[abcdefghijk]1 而不是 sd[efghiabcdkj]1)。我尝试使用 mdadm -Af /dev/md0,但收到缺少超级块错误消息。

看到另一篇帖子说我应该执行 mdadm -C --assume-clean /dev/md0 /dev/sd[efghia MISSING cdkj]1 然后添加 /dev/sdb1 然后执行 mdadm --assemble /dev/md0 --resync=update 但是我的服务器中插着一个闪存驱动器,它被分配了 /dev/sdi1 (OPPS)... 不管怎样,我迅速拔掉插头,停止系统,移除闪存驱动器并重复这些步骤。

================================================================================
fdisk -l 报告:

磁盘 /dev/hda:500.1 GB,500107862016 字节
255 个磁头、63 个扇区/磁道、60801 个磁柱
单位 = 16065 * 512 = 8225280 字节的柱面

   设备启动开始结束块ID系统
/dev/hda1 * 1 3187 25599546 7 HPFS/NTFS
/dev/hda2 3188 60801 462784455 5 扩展
/dev/hda5 3188 9561 51199123+ 7 HPFS/NTFS
/dev/hda6 9562 28045 148472698+ 83 Linux
/dev/hda7 28046 28835 6345643+ 82 Linux 交换 / Solaris
/dev/hda8 28836 60801 256766863+ 83 Linux

磁盘 /dev/sda:1500.3 GB,1500301910016 字节
255 个磁头、63 个扇区/磁道、182401 个磁柱
单位 = 16065 * 512 = 8225280 字节的柱面

   设备启动开始结束块ID系统
/dev/sda1 * 1 182402 1465138552+ 83 Linux

磁盘 /dev/sdb:1500.3 GB,1500301910016 字节
255 个磁头、63 个扇区/磁道、182401 个磁柱
单位 = 16065 * 512 = 8225280 字节的柱面

   设备启动开始结束块ID系统
/dev/sdb1 * 1 182402 1465138552+ fd Linux raid 自动检测

磁盘 /dev/sdc:1500.3 GB,1500301910016 字节
255 个磁头、63 个扇区/磁道、182401 个磁柱
单位 = 16065 * 512 = 8225280 字节的柱面

   设备启动开始结束块ID系统
/dev/sdc1 * 1 182402 1465138552+ 83 Linux

磁盘 /dev/sdd:1500.3 GB,1500301910016 字节
255 个磁头、63 个扇区/磁道、182401 个磁柱
单位 = 16065 * 512 = 8225280 字节的柱面

   设备启动开始结束块ID系统
/dev/sdd1 * 1 182402 1465138552+ 83 Linux

磁盘 /dev/sde:1500.3 GB,1500301910016 字节
255 个磁头、63 个扇区/磁道、182401 个磁柱
单位 = 16065 * 512 = 8225280 字节的柱面

   设备启动开始结束块ID系统
/dev/sde1 * 1 182401 1465136001 83 Linux

磁盘 /dev/sdf:1500.3 GB,1500301910016 字节
255 个磁头、63 个扇区/磁道、182401 个磁柱
单位 = 16065 * 512 = 8225280 字节的柱面

   设备启动开始结束块ID系统
/dev/sdf1 * 1 182401 1465136001 83 Linux

磁盘 /dev/sdg:1500.3 GB,1500301910016 字节
255 个磁头、63 个扇区/磁道、182401 个磁柱
单位 = 16065 * 512 = 8225280 字节的柱面

   设备启动开始结束块ID系统
/dev/sdg1 * 1 182401 1465136001 83 Linux

磁盘 /dev/sdh:1500.3 GB,1500301910016 字节
255 个磁头、63 个扇区/磁道、182401 个磁柱
单位 = 16065 * 512 = 8225280 字节的柱面

   设备启动开始结束块ID系统
/dev/sdh1 * 1 182401 1465136001 83 Linux

磁盘 /dev/sdi:1500.3 GB,1500301910016 字节
16 个磁头,63 个扇区/磁道,2907021 个磁柱
单位 = 1008 * 512 = 516096 字节的柱面

   设备启动开始结束块ID系统
/dev/sdi1 * 1 2907021 1465138552+ 83 Linux

磁盘 /dev/sdj:1500.3 GB,1500301910016 字节
255 个磁头、63 个扇区/磁道、182401 个磁柱
单位 = 16065 * 512 = 8225280 字节的柱面

   设备启动开始结束块ID系统
/dev/sdj1 * 1 182402 1465138552+ 83 Linux

磁盘 /dev/sdk:1500.3 GB,1500301910016 字节
255 个磁头、63 个扇区/磁道、182401 个磁柱
单位 = 16065 * 512 = 8225280 字节的柱面

   设备启动开始结束块ID系统
/dev/sdk1 * 1 182402 1465138552+ 83 Linux

磁盘 /dev/md0:0 MB,0 字节
2 个磁头、4 个扇区/磁道、0 个磁柱
单位 = 8 * 512 = 4096 字节的柱面

磁盘 /dev/md0 不包含有效的分区表

================================================================================

所以我猜测我插入闪存驱动器弄乱了所有其他驱动器上的磁头数,除了未分配第一个 mdadm -C 的驱动器,因为它的分配已被闪存驱动器占用。

所以...底线是...现在重新同步已完成(diskstats 显示读取但没有写入磁盘),我无法安装阵列。我收到“VFS:在 dev md0 上找不到 ext3 文件系统”消息。

当前状态:R-Studio 报告了一些数据,testdisk 仍在分析我的分区,我中止了 Raid Reconstructor 因为它报告需要 20 天才能完成......

有什么提示可以告诉我如何恢复我的数据吗?如果您能提供任何建议,我将不胜感激,因为我即将开始一份新工作,尽管过去一周发生了一系列糟糕的事情,但我不能让自己看起来杂乱无章。谢谢... J

答案1

我遇到过类似的情况,我只是使用了与创建 raid 时使用的 --assume-clean 参数完全相同的参数的命令,这对我有用

磁盘顺序非常重要,如果你的驱动器号(sd[al])混乱了,例如我拔下并重新插入的顺序不同,你可以使用

mdadm -E /dev/sd[a-l]1

检查“RaidDevice”编号。这会告诉您在调用 mdadm -C 时指定磁盘的顺序...

答案2

我以前使用相同设置也遇到过类似问题。md RAID 似乎非常可靠。我多次以错误的顺序重新创建 RAID,每次都发现相同的错误。由于之前的恢复尝试失败,驱动器的原始顺序丢失了。

但您可以尝试以不同的顺序重新创建 RAID,直到最终正确为止。尽管驱动器数量如此之多,您可能需要很长时间才能找到正确的顺序。

我从那场灾难中学到的最重要的事情之一是驱动器名称(sda、sdb 等)可能会发生变化。例如,当我更换驱动器时,所有其他驱动器的名称也会发生变化。这导致了很多混乱。最重要的步骤之一是获取驱动器序列号,smartctl并记下分配给哪个驱动器的名称。这应该有助于避免在恢复过程中产生混淆。

我花了好几天才恢复数据,我几乎已经放弃了恢复任何东西的想法。但我最终得到了正确的驱动程序顺序,RAID 安装良好,一切都完好无损。永远不要放弃恢复 md RAID。

相关内容