我的服务器设置了 raid1。几天前,sda 完全崩溃,数据损坏。我更换了驱动器,克隆了分区表并添加了相应的阵列。在添加 sda3 (MD2) 时,由于 sdb 出现 I/O 错误,重新同步一直失败。我将可以保存的所有文件从 sdb3 复制到 sda3,重新配置了 raid 并用新驱动器替换了 sdb。我现在正在将 sdb 分区添加到阵列。我担心的是:
cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md3 : active raid1 sda4[0]
1822442815 blocks super 1.2 [2/1] [U_]
md2 : active raid1 sda3[1]
1073740664 blocks super 1.2 [2/1] [_U]
md1 : active raid1 sdb2[2] sda2[0]
524276 blocks super 1.2 [2/2] [UU]
md0 : active raid1 sdb1[2] sda1[3]
33553336 blocks super 1.2 [2/2] [UU]
在同步之前,md0 和 md1 都显示为 [U_],为什么 md2 会显示为 [_U]?我担心添加 sdb3 时会丢失数据。我的想法是,第一个插槽 ([U_]) 被 mdadm 视为主插槽,而第二个插槽 ([_U]) 被视为次插槽,因此担心数据会被删除以匹配 sdb3。
请指教。
谢谢。
答案1
我不会担心。我怀疑这里发生的事情是 md3 是使用类似以下命令创建的
mdadm --create /dev/md3 -l 1 -n 2 /dev/sda4 /dev/sdb4
另一个是
mdadm --create /dev/md2 -l 1 -n 2 /dev/sdb3 /dev/sda3
请注意,您的另外两个阵列(md0 和 md1)也具有 sdb、sda 顺序。
如果你想变得超级偏执,那就把文件备份到外部驱动器上,但我怀疑当你终于有时间这样做的时候
mdadm /dev/md2 -a /dev/sdb3
由于新分区 (/dev/sdb3) 与现有分区 (/dev/sda3) 同步,因此恢复将顺利进行。列表中的位置并不重要。Linux 软件 RAID 会记住哪些是有效的以及最新的(未完全同步的)分区是什么。