我的 RAID6 阵列上有两个磁盘发生故障。我添加了两个新磁盘并执行以下操作:
- 我在两个磁盘上运行了 mdadm /dev/md1 --remove
- 我在每个磁盘的第一个分区上设置了 RAID(出于对齐原因)。由于替换磁盘的对齐方式相同,我执行了 dd if=/dev/sdg(工作磁盘)of=/dev/sde(新磁盘)bs=512 count=1 来复制分区布局。我不确定这是否是正确的做法,因为我可能复制了 mdadm 超级块数据。
- 然后我运行 mdadm /dev/md1 --add 和两个磁盘。
当我运行 mdadm --detail /dev/md1 时,现在出现此情况:
Number Major Minor RaidDevice State
0 8 1 0 active sync /dev/sda1
1 8 17 1 active sync /dev/sdb1
6 8 65 2 spare rebuilding /dev/sde1
3 0 0 3 removed
4 8 97 4 active sync /dev/sdg1
5 8 113 5 active sync /dev/sdh1
7 8 81 - spare /dev/sdf1
/proc/mdstat 显示一个磁盘正在重建,但另一个没有。我认为这不对,因为我认为一个磁盘已被“移除”并且没有正确替换。驱动器号与最后两个磁盘完全相同。这是 mdstat。
root@precise:~# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdc1[0] sdd1[1]
1953379136 blocks super 1.2 [2/2] [UU]
md1 : active raid6 sdf1[7](S) sde1[6] sdb1[1] sdh1[5] sda1[0] sdg1[4]
11720521728 blocks super 1.2 level 6, 512k chunk, algorithm 2 [6/4] [UU__UU]
[>....................] recovery = 2.2% (65163484/2930130432) finish=361.0min speed=132257K/sec
unused devices: <none>`
我想知道(如果这看起来正确的话),我需要做什么来修复 3 号条目并让 /dev/sdf1 取代它?然后我假设我将再次拥有一个正确的阵列。我觉得奇怪的是添加 /dev/sde1 似乎已允许启动同步,但 /dev/sdf1 尚未取代 3 号 Major 0(RaidDevice 3)
感谢所有帮助
干杯
答案1
首先,让我向你保证:如果你的 mdadm 驱动器是基于分区的(例如:sda1 等),则第一个“dd”是正常的,并且不会导致任何 mdadm 元数据复制(元数据是里面分区本身,而不是 MBR 内)。
您观察到的是正常的 MDRAID 行为。您使用两个单独的 mdadm -a 命令重新添加了新驱动器,对吗?在这种情况下,mdadm 将第一的重新同步第一个驱动器(将第二个驱动器置于“备用”模式)并然后它将把第二个驱动器转换为“重建备用”状态。如果您使用单个命令重新添加两个驱动器(例如:mdadm /dev/mdX -a /dev/sdX1 /dev/sdY1),重建将同时运行。
让我们看一下我的(测试)失败的 RAID6 阵列:
[root@kvm-black test]# mdadm --detail /dev/md200
/dev/md200:
Version : 1.2
Creation Time : Mon Feb 9 18:40:59 2015
Raid Level : raid6
Array Size : 129024 (126.02 MiB 132.12 MB)
Used Dev Size : 32256 (31.51 MiB 33.03 MB)
Raid Devices : 6
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Mon Feb 9 18:51:03 2015
State : clean, degraded
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Name : localhost:md200 (local to host localhost)
UUID : 80ed5f2d:86e764d5:bd6979ed:01c7997e
Events : 105
Number Major Minor RaidDevice State
0 7 0 0 active sync /dev/loop0
1 7 1 1 active sync /dev/loop1
2 7 2 2 active sync /dev/loop2
3 7 3 3 active sync /dev/loop3
4 0 0 4 removed
5 0 0 5 removed
使用两个单独的命令(mdadm /dev/md200 -a /dev/loop6;sleep 1;mdadm /dev/md200 -a /dev/loop7)重新添加驱动器导致以下详细报告:
[root@kvm-black test]# mdadm --detail /dev/md200
/dev/md200:
Version : 1.2
Creation Time : Mon Feb 9 18:40:59 2015
Raid Level : raid6
Array Size : 129024 (126.02 MiB 132.12 MB)
Used Dev Size : 32256 (31.51 MiB 33.03 MB)
Raid Devices : 6
Total Devices : 6
Persistence : Superblock is persistent
Update Time : Mon Feb 9 18:56:40 2015
State : clean, degraded, recovering
Active Devices : 4
Working Devices : 6
Failed Devices : 0
Spare Devices : 2
Layout : left-symmetric
Chunk Size : 512K
Rebuild Status : 9% complete
Name : localhost:md200 (local to host localhost)
UUID : 80ed5f2d:86e764d5:bd6979ed:01c7997e
Events : 134
Number Major Minor RaidDevice State
0 7 0 0 active sync /dev/loop0
1 7 1 1 active sync /dev/loop1
2 7 2 2 active sync /dev/loop2
3 7 3 3 active sync /dev/loop3
6 7 6 4 spare rebuilding /dev/loop6
5 0 0 5 removed
7 7 7 - spare /dev/loop7
一段时间后:
[root@kvm-black test]# mdadm --detail /dev/md200
/dev/md200:
Version : 1.2
Creation Time : Mon Feb 9 18:40:59 2015
Raid Level : raid6
Array Size : 129024 (126.02 MiB 132.12 MB)
Used Dev Size : 32256 (31.51 MiB 33.03 MB)
Raid Devices : 6
Total Devices : 6
Persistence : Superblock is persistent
Update Time : Mon Feb 9 18:57:43 2015
State : clean
Active Devices : 6
Working Devices : 6
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Name : localhost:md200 (local to host localhost)
UUID : 80ed5f2d:86e764d5:bd6979ed:01c7997e
Events : 168
Number Major Minor RaidDevice State
0 7 0 0 active sync /dev/loop0
1 7 1 1 active sync /dev/loop1
2 7 2 2 active sync /dev/loop2
3 7 3 3 active sync /dev/loop3
6 7 6 4 active sync /dev/loop6
7 7 7 5 active sync /dev/loop7
在单个命令 (mdadm /dev/md200 -a /dev/loop6 /dev/loop7) 中添加两个驱动器会导致该报告:
[root@kvm-black test]# mdadm --detail /dev/md200
/dev/md200:
Version : 1.2
Creation Time : Mon Feb 9 18:40:59 2015
Raid Level : raid6
Array Size : 129024 (126.02 MiB 132.12 MB)
Used Dev Size : 32256 (31.51 MiB 33.03 MB)
Raid Devices : 6
Total Devices : 6
Persistence : Superblock is persistent
Update Time : Mon Feb 9 18:55:44 2015
State : clean, degraded, recovering
Active Devices : 4
Working Devices : 6
Failed Devices : 0
Spare Devices : 2
Layout : left-symmetric
Chunk Size : 512K
Rebuild Status : 90% complete
Name : localhost:md200 (local to host localhost)
UUID : 80ed5f2d:86e764d5:bd6979ed:01c7997e
Events : 122
Number Major Minor RaidDevice State
0 7 0 0 active sync /dev/loop0
1 7 1 1 active sync /dev/loop1
2 7 2 2 active sync /dev/loop2
3 7 3 3 active sync /dev/loop3
7 7 7 4 spare rebuilding /dev/loop7
6 7 6 5 spare rebuilding /dev/loop6
所以,最后:让 mdadm 发挥它的魔力,然后检查所有驱动器是否都标记为“活动”。