You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何恢复存在两块故障设备的LVM RAID5逻辑卷

如何恢复存在两块故障设备的LVM RAID5逻辑卷

非常理解你不想花时间恢复备份、还想趁机学点东西的心态——毕竟几TB的数据恢复起来确实头疼,能救回来最好!

先给你明确:既然两块物理盘本身没问题,只是同时离线导致LVM RAID5标记它们为故障,是有机会强制让RAID重新识别这些盘并正常工作的,毕竟数据本身应该是完整的。下面是具体步骤,操作前一定要先给所有磁盘做个镜像备份,避免操作失误搞砸数据:

  • 确认所有物理卷(PV)都已正常识别
    先运行pvs命令,检查原来的PV是否都显示为active状态。你之前用了vgextend --restoremissing datavg /dev/mapper/<hdd_names>,这一步应该已经把缺失的PV重新加入VG了,但再确认下更稳妥。

  • 查看LVM RAID的详细状态
    运行lvdisplay -v datavg/<你的LV名称>,找到对应RAID逻辑卷的信息,重点看每个RAID segment的状态,标记为failed的就是之前离线的磁盘。同时你也能看到对应的md设备路径(比如/dev/md127之类的)。

  • 清除磁盘的故障标记
    针对每个被标记为故障的PV,用下面的命令清除故障状态:

    lvchange --setfaulty n datavg/<你的LV名称> /dev/mapper/<对应的PV路径>
    

    如果你不确定对应的PV路径,从lvdisplay -v的输出里就能找到每个segment关联的PV。

  • 尝试修复并激活RAID逻辑卷
    接下来用LVM的修复命令强制修复RAID:

    lvconvert --repair --force datavg/<你的LV名称>
    

    加上--force是因为默认LVM RAID5只允许修复单盘故障,我们需要强制它忽略这个限制——既然你确认两块盘本身完好,数据一致,这个操作是安全的。

  • 激活逻辑卷
    最后尝试激活LV:

    lvchange -ay datavg/<你的LV名称>
    

    如果一切顺利,现在应该就能正常挂载使用了。

如果上面的步骤还是报错,你可以试试直接操作底层的md设备:

  1. 先找到对应的md设备(从lvdisplay里获取),然后运行:
    mdadm --manage /dev/mdX --clear-faulty
    mdadm --readwrite /dev/mdX
    
  2. 之后再回到LVM层面执行lvchange -ay datavg/<你的LV名称>尝试激活。

最后再啰嗦一遍:操作前一定要备份磁盘!虽然理论上没问题,但数据无价,小心驶得万年船。

备注:内容来源于stack exchange,提问作者RDX

火山引擎 最新活动