我有一个软件 raid1 阵列。今天我发现其中一个驱动器同步失败,并收到以下信息:
$ cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[0] sda1[2](F)
153597312 blocks [2/1] [U_]
所以我做了:
mdadm --manage /dev/md0 --remove /dev/sda1
mdadm --manage /dev/md0 --add /dev/sda1
据我所知,这些设备同步了大约 25%,然后我使用 mdadm 平息了原本正常的驱动器,但现在却失败了:
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda1[1] sdb1[2](F)
153597312 blocks [2/1] [_U]
我现在害怕重新连接并导致数据丢失。
- 到底是怎么回事?
- 有没有办法测试数组数据是否正常?
- 我现在应该怎么做?
哥们,谢啦
答案1
在这种情况下,我会先用两个(或三个)新磁盘创建一个新的 RAID-1,以便在恢复过程中使用。您现有的 RAID 只有大约 150GB,而 1TB 磁盘并不昂贵,因此,用两个 1TB 磁盘组成的全新 RAID-1 在恢复过程中会很有用。
准备就绪后,将每个故障磁盘的尽可能多的扇区恢复到新 RAID-1 上的文件中。这是恢复过程中最关键的阶段。在此阶段完成之前的任何错误都可能使您的问题比现在更严重。
从您遇到的情况来看,很可能两个磁盘都没有完全发生故障,但每个磁盘都有无法读取的扇区。
如果运气好的话,您将能够从两个驱动器中的至少一个驱动器获得每个扇区的副本。一旦您度过了这个阶段,您就可以将有问题的驱动器放在一边,并在新驱动器上使用恢复的数据,而不会让情况变得更糟。
两个驱动器上的数据可能有点不同步。由于恢复尝试失败,您无法完全确定哪一个是最新的。即使您知道,您也可能会看到某些扇区丢失了最新版本,并且您将被迫使用更新程度较低的版本。
这让你有点困惑,不知道到底可以恢复什么。但如果你知道自己在做什么,恢复过程的这一部分风险并不大。