vgreduce --removemissing --force是清理lvm卷组中无法访问的“坏盘”记录的标准手段,需先确认pv无有效数据、vg处于missing状态、所有lv已停用,并通过vgs和vgdisplay验证清理结果。

当LVM卷组中存在因硬盘拔出、损坏或设备名变更而残留的“坏盘”记录(表现为missing_pv、unknown device或PV not found),且该PV已无法访问时,vgreduce --removemissing --force是标准且必要的清理手段。但必须满足前提:确认该PV上无有效数据,或已接受数据丢失风险。
确认VG确实处于missing状态
先验证是否真为缺失PV,而非设备重命名或缓存延迟:
- 运行
vgs -o +missing_pv,若输出中missing_pv列非空(如显示/dev/sdb),说明LVM仍记录该PV - 对比
pvs实际在线PV数量与vgdisplay中的Cur PV值——若后者更大,说明有“幽灵PV”残留 - 若只是设备名变化(如
/dev/sdb变成/dev/sdc),应先执行pvscan --cache同步,不要直接清理
确保所有LV已完全停用
活跃的逻辑卷会阻止清理操作,必须让整个VG进入非活动状态:
- 执行
vgchange -an <vg_name></vg_name>一次性停用该卷组下所有LV - 或逐个停用:
lvchange -an /dev/<vg_name>/<lv_name></lv_name></vg_name> - 用
lvs -o +active检查,确保每行Active列为inactive
执行强制清理命令
核心命令简洁但参数不可省略:
vgreduce --removemissing --force <vg_name></vg_name>-
--removemissing告诉LVM识别并清除所有标记为missing的PV条目 -
--force跳过安全提示(例如“Refusing to remove last PV with extents”),否则命令会中止 - 执行后无成功提示,需靠后续验证判断是否生效
验证清理结果是否生效
两条命令交叉比对,确认残留已被清除:
-
vgs <vg_name></vg_name>:输出中不应再出现missing_pv字段;PV数值应等于当前pvs列出的物理卷数 -
vgdisplay <vg_name></vg_name>:Missing PV行应彻底消失;Cur PV与Act PV数值一致 - 若仍显示missing,可能是内核设备缓存未更新,可尝试
dmsetup remove_all && vgscan --cache后再重试











