vgcfgrestore仅处理LVM自有的纯文本格式备份(如/etc/lvm/backup/VG名和/etc/lvm/archive/VG名_时间戳.vg),不支持XML;文件开头明确标识“contents = "Text Format Volume Group"”,恢复前须用--test验证、再执行vgcfgrestore和vgchange -ay。

LVM 的 vgcfgrestore 命令不处理 XML 格式的备份记录。LVM 从不生成或使用 XML 文件作为配置备份,它的所有自动备份(包括 /etc/lvm/backup/ 和 /etc/lvm/archive/ 下的文件)均为纯文本格式,采用 LVM 自定义的“Text Format Volume Group”结构,不是 XML。
所以,标题中提到的“历史XML记录”属于误解——实际不存在。真正可用的是时间戳命名的 .vg 文本文件,例如:
/etc/lvm/archive/vg_data_000001-1748032195.vg /etc/lvm/backup/vg_data
这些文件可直接用 cat 查看,开头明确写着:
contents = "Text Format Volume Group" version = 1 description = "Created *before* removing lv_data" creation_host = "server01" creation_time = 1748032195
恢复的关键是找对备份时间点、验证内容完整性、按顺序执行操作,而非解析 XML。
确认备份是否存在且内容有效
先检查两个目录是否保留了目标卷组(如 vg_data)的备份:
-
ls -l /etc/lvm/backup/vg_data—— 看最新备份有无、是否非空 -
ls -lt /etc/lvm/archive/ | grep vg_data—— 按时间倒序列出历史版本 -
head -n 10 /etc/lvm/backup/vg_data—— 确认含contents = "Text Format Volume Group" -
grep -A5 "physical_volumes {" /etc/lvm/backup/vg_data—— 检查 PV UUID 是否仍匹配当前磁盘(用pvdisplay --uuid /dev/sdb2对比)
测试备份可用性,避免误覆盖
不能跳过测试直接恢复。用 --test 参数验证备份能否被正确读取并匹配当前 PV 状态:
vgcfgrestore --test -f /etc/lvm/backup/vg_data vg_data- 若输出
Configuration restored successfully,说明结构一致、UUID匹配、可安全执行 - 若报
No valid backup found或UUID mismatch,说明该备份已失效,需换用 archive 中更早的版本(如vg_data_000001-*.vg)再试
分步执行恢复与激活
测试通过后,严格按以下两步操作,中间不可省略:
- 还原卷组元数据:
vgcfgrestore -f /etc/lvm/backup/vg_data vg_data - 激活卷组使 LV 可见:
vgchange -ay vg_data - 立即验证:
vgs && lvs应显示 VG 和原有 LV;若 LV 数为 0,说明该备份中 LV 已被删,需改用 archive 中删除前的备份 - 如设备节点未生成(
/dev/vg_data/lv_data缺失),运行:vgscan --cache && vgchange -ay vg_data
挂载前校验文件系统一致性
恢复元数据 ≠ 数据完好。挂载前务必按类型处理:
-
ext4:可直接挂载,但建议先只读测试:
mount -o ro /dev/vg_data/lv_data /mnt/test -
XFS:必须先只读挂载,再运行
xfs_repair -n /dev/vg_data/lv_data(-n 表示只检查不修复) - 若挂载失败且提示 “wrong fs type”,可能是 LV 未激活或文件系统损坏,不要强行读写
- 确认内容无误后,再以读写方式挂载投入使用


















