我有一个健康的 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>
我想在不关闭服务器的情况下将一个磁盘移动到服务器上的不同物理插槽。(插槽支持热插拔)
我可以安全地卸载阵列、移动磁盘并重新安装阵列,而不会进入降级模式吗?
卸载(文件系统)是不够的。
您必须停止阵列,然后重新组装它:
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
机制的冗余。这样您就可以在不卸载或停止任何东西的情况下交换插槽。