RAID5 磁盘可以移动到不同的插槽吗?

RAID5 磁盘可以移动到不同的插槽吗?

我有一个健康的 RAID5 阵列,有 5 个磁盘:

# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] 
md0 : active raid5 sdb1[6] sdd1[0] sdh1[5] sdf1[2] sde1[1]
      31255166976 blocks super 1.2 level 5, 512k chunk, algorithm 2 [5/5] [UUUUU]
      bitmap: 0/59 pages [0KB], 65536KB chunk

unused devices: <none>

我想将一个磁盘移动到服务器上的另一个物理插槽,而不关闭服务器。 (插槽支持热插拔)

我可以安全地卸载阵列、移动磁盘并重新安装阵列,而不会进入降级模式吗?

答案1

卸载(文件系统)是不够的。

您必须停止阵列然后重新组装它:

mdadm --stop /dev/md0
# re-arrange / hotplug drives
mdadm --stop /dev/md0 # (*)
mdadm --assemble /dev/md0

检查journalctl/dmesg和/或cat /proc/partitions/是有意义的lsblk,以确保在尝试组装驱动器之前重新检测到驱动器正常。

(*) 在许多现代 Linux 系统上,udev ( ) 中存在一些 md 自动组装魔法,因此如果您只热插拔单个驱动器,/usr/lib/udev/rules.d/*md-raid*.rules您可能会得到一个陈旧的结果。/dev/md0

在这种情况下,您实际上必须在组装之前再次停止它 - 或者重新触发未热插拔的驱动器的 udev 规则,或者使用 mdadm 的增量组装命令来完成它,但第二次停止它更简单,这就是为什么mdadm --stop在热插拔驱动器之前和之后使用两次。

在某些情况下,mdadm.conf过于冗长并限制设备或列出每个阵列的单独驱动器。这会阻止成功组装,因此如果仍然存在问题,则将是下一个检查的地方。保持mdadm.conf尽可能简单(它实际上只需要知道每个数组的 UUID)。


如果您有额外的驱动器可用,并且不介意重新同步阵列,您可以在线完成整个过程,而不会丢失使用mdadm --replace机制的冗余。这样您就可以交换插槽而无需卸载或停止任何东西。

相关内容