修复 RAID6 的两个驱动器问题 mdadm

修复 RAID6 的两个驱动器问题 mdadm

我的 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 发挥它的魔力,然后检查所有驱动器是否都标记为“活动”。

相关内容