mdadm:驱动器更换显示为备用并拒绝同步

Mil*_*vic 4 linux raid hard-drive mdadm software-raid

序幕

我的/dev/md0RAID 6 中有以下设备:/dev/sd[abcdef]

以下驱动器也存在,与 RAID 无关: /dev/sd[gh]

以下驱动器是已连接的读卡器的一部分,同样是无关的: /dev/sd[ijkl]

分析

sdf的 SATA 电缆坏了(你可以说它在使用时被拔掉了),sdf随后被/dev/md0阵列拒绝。我更换了电缆,驱动器又回来了,现在在/dev/sdm. 请不要质疑我的诊断,驱动没有问题。

mdadm --detail /dev/md0显示sdf(F),即,这sdf是错误的。所以我曾经mdadm --manage /dev/md0 --remove faulty删除有故障的驱动器。

现在mdadm --detail /dev/md0sdf以前的空间中显示“已删除” 。

root@galaxy:~# mdadm --detail /dev/md0
/dev/md0:
        版本:1.2
  创建时间:2014 年 7 月 30 日星期三 13:17:25
     突袭等级:raid6
     阵列大小:15627548672(14903.59 GiB 16002.61 GB)
  使用的开发大小:3906887168(3725.90 GiB 4000.65 GB)
   突袭装置:6
  设备总数:5
    持久性:超级块是持久性的

  意图位图:内部

    更新时间:2015 年 3 月 17 日星期二 21:16:14
          状态:活动,降级
 有源设备:5
工作装置:5
 失败的设备:0
  备用设备:0

         布局:左对称
     块大小:512K

           名称:日食:0
           UUID : cc7dac66:f6ac1117:ca75576​​9:0e59d5c5
         活动:67205

    Number Major Minor RaidDevice 状态
       0 8 0 0 主动同步 /dev/sda
       1 8 32 1 主动同步 /dev/sdc
       4 0 0 4 已移除
       3 8 48 3 主动同步 /dev/sdd
       4 8 64 4 主动同步 /dev/sde
       5 8 16 5 主动同步 /dev/sdb

出于某种原因,“已移除”设备的 RaidDevice 现在与处于活动状态的设备相匹配。无论如何,让我们尝试添加以前的设备(现在称为/dev/sdm),因为这是最初的意图:

root@galaxy:~# mdadm --add /dev/md0 /dev/sdm
mdadm:添加 /dev/sdm
root@galaxy:~# mdadm --detail /dev/md0
/dev/md0:
        版本:1.2
  创建时间:2014 年 7 月 30 日星期三 13:17:25
     突袭等级:raid6
     阵列大小:15627548672(14903.59 GiB 16002.61 GB)
  使用的开发大小:3906887168(3725.90 GiB 4000.65 GB)
   突袭装置:6
  设备总数:6
    持久性:超级块是持久性的

  意图位图:内部

    更新时间:2015 年 3 月 17 日星期二 21:19:30
          状态:活动,降级
 有源设备:5
工作装置:6
 失败的设备:0
  备用设备:1

         布局:左对称
     块大小:512K

           名称:日食:0
           UUID : cc7dac66:f6ac1117:ca75576​​9:0e59d5c5
         活动:67623

    Number Major Minor RaidDevice 状态
       0 8 0 0 主动同步 /dev/sda
       1 8 32 1 主动同步 /dev/sdc
       4 0 0 4 已移除
       3 8 48 3 主动同步 /dev/sdd
       4 8 64 4 主动同步 /dev/sde
       5 8 16 5 主动同步 /dev/sdb

       6 8 192 - 备用 /dev/sdm

如您所见,该设备显示为备用设备并拒绝与阵列的其余部分同步:

root@galaxy:~# cat /proc/mdstat
个性:[raid6] [raid5] [raid4]
md0 : 活动 raid6 sdm[6](S) sdb[5] sda[0] sde[4] sdd[3] sdc[1]
      15627548672 blocks super 1.2 level 6, 512k chunk, algorithm 2 [6/5] [UU_UUU]
      位图:17/30 页 [68KB],65536KB 块

未使用的设备: 

mdadm --zero-superblock /dev/sdm在添加之前我也尝试使用,结果相同。

我使用 RAID 6 的原因是为了提供高可用性。我不会接受停止/dev/md0并重新组装它--assume-clean或类似的解决方法来解决这个问题。这个需要在线解决,否则我看不出使用mdadm的意义。

Mil*_*vic 9

经过数小时的谷歌搜索和来自#linux-raid Freenode 频道的 JyZyXEL 的一些非常明智的帮助,我们有了一个解决方案!在此过程中,RAID 阵列没有发生任何中断——这正是我需要和期望的 mdadm。

由于某些(目前未知的)原因,RAID 状态被冻结。解决这个问题的获胜命令是cat /sys/block/md0/md/sync_action

root@galaxy:~# cat /sys/block/md0/md/sync_action
冻结

简而言之,这就是它没有使用可用备件的原因。我所有的头发都以一个简单的 cat 命令为代价消失了!

因此,只需解冻数组:

root@galaxy:~# echo idle > /sys/block/md0/md/sync_action

你走了!

root@galaxy:~# cat /sys/block/md0/md/sync_action
恢复
root@galaxy:~# cat /proc/mdstat
个性:[raid6] [raid5] [raid4]
md0 : 活动 raid6 sdm[6] sdb[5] sda[0] sde[4] sdd[3] sdc[1]
      15627548672 blocks super 1.2 level 6, 512k chunk, algorithm 2 [6/5] [UU_UUU]
      [>........] 恢复 = 0.0% (129664/3906887168) 完成=4016.8min 速度=16208K/sec
      位图:17/30 页 [68KB],65536KB 块

未使用的设备: 
root@galaxy:~# mdadm --detail /dev/md0
/dev/md0:
        版本:1.2
  创建时间:2014 年 7 月 30 日星期三 13:17:25
     突袭等级:raid6
     阵列大小:15627548672(14903.59 GiB 16002.61 GB)
  使用的开发大小:3906887168(3725.90 GiB 4000.65 GB)
   突袭装置:6
  设备总数:6
    持久性:超级块是持久性的

  意图位图:内部

    更新时间:2015 年 3 月 17 日星期二 22:05:30
          状态:活动、降级、恢复中
 有源设备:5
工作装置:6
 失败的设备:0
  备用设备:1

         布局:左对称
     块大小:512K

 重建状态:0% 完成

           名称:日食:0
           UUID : cc7dac66:f6ac1117:ca75576​​9:0e59d5c5
         活动:73562

    Number Major Minor RaidDevice 状态
       0 8 0 0 主动同步 /dev/sda
       1 8 32 1 主动同步 /dev/sdc
       6 8 192 2 备用重建 /dev/sdm
       3 8 48 3 主动同步 /dev/sdd
       4 8 64 4 主动同步 /dev/sde
       5 8 16 5 主动同步 /dev/sdb

幸福:-)