LVM RAID5故障磁盘替换及阵列重建求助
LVM RAID5故障磁盘替换及阵列重建求助
老哥我太懂你这种磁盘彻底挂掉、LVM还死咬着失效UUID不放的崩溃感了,别慌,咱们一步步来把这个RAID5阵列救回来:
第一步:彻底清理卷组里的失效PV记录
你之前执行vgreduce卡了几个小时被kill,核心原因是LVM一直在傻等那个已经彻底死透的磁盘,咱们给它加个参数,让它进入降级模式,别再无意义等待了:
- 先确保卷组完全处于非激活状态:
vgchange -an array - 用降级模式强制移除丢失的PV,这次绝对不会再卡几个小时:
执行完再看vgreduce --removemissing --force --activationmode=degraded arrayvgdisplay array,应该就不会再提示找不到那个烦人的UUID了。
第二步:准备新磁盘并加入卷组
把新盘接上,先给它做和原来失效盘一致的分区(比如/dev/sdb1,分区类型选LVM:用fdisk就设为8e类型,用parted就加lvm标记),然后初始化PV:
pvcreate /dev/sdb1
接着把新PV加到卷组里:
vgextend array /dev/sdb1
第三步:重建RAID5阵列
现在卷组里已经有了新盘,咱们把它替换进RAID5逻辑卷:
- 先以降级模式激活卷组,让LVM允许我们操作不完整的阵列:
vgchange -ay --activationmode=degraded array - 用新PV替换失效的UUID对应的旧PV(那个UUID就是你之前报错的
ILT0MD-1BxM-gDR7-PJid-Vkrw-MBbZ-Y31i1t):lvconvert --replace ILT0MD-1BxM-gDR7-PJid-Vkrw-MBbZ-Y31i1t /dev/array/data /dev/sdb1 - 现在可以看一下重建进度,两种方式都很直观:
- 看LVM的状态:
lvdisplay /dev/array/data - 看底层MD阵列的实时进度:
cat /proc/mdstat
等进度走到100%就算重建完成了。
- 看LVM的状态:
第四步:收尾验证
- 重建完成后,正常激活卷组:
vgchange -ay array - 挂载分区测试数据:
进去看看文件都在不在,随便读写个小文件测试下没问题就ok。mount /mnt/data - 最后再确认一下卷组和逻辑卷的健康状态:
vgdisplay array lvdisplay /dev/array/data
一些要注意的小细节
- 新盘的分区大小必须大于等于原来失效盘的分区大小,不然LVM没法把原来的PV逻辑数据转移过去。
- 操作前最好先备份一下卷组配置,以防万一出问题能快速回滚:
vgcfgbackup array -f /root/array_backup.cfg - 如果执行
lvconvert时提示卷组未激活,回去检查vgchange -ay --activationmode=degraded array是不是真的执行成功了。
备注:内容来源于stack exchange,提问作者user1842349
相关产品推荐
相关产品推荐

