Avamar:如果 Linux 虚拟机备份是从模板部署的,则可能存在 LVM 元数据不一致
Summary: 问题:Avamar — 如果 Linux 虚拟机备份是从模板部署的,则可能存在 LVM 元数据不一致。
Symptoms
在还原过程中,会看到以下症状:
-
FLR 操作失败并出现 LVM 问题:

或

2 个虚拟机 -
映像还原的作业在 Avamar UI 中成功,虚拟机 (VM) 可能由于 LVM 问题而出现启动问题。
启动问题示例 1:
在下面的这个 Red Hat 示例中,操作系统引导至紧急 dracut shell:

(在此示例中)在 dracut shell 中,以下 LVM 命令修复 LVM 状态。输出显示问题在于其中一个 lvm 磁盘 (sdb) 被错误地从 LVM 中删除。
dracut:/# lvm pvscan --config 'global{locking_type=1}'
现在,恢复的虚拟机可以启动了。启动问题示例 2:
在 Debian 示例中,操作系统启动至紧急繁忙 box shell:

(在此示例中)从繁忙的 box shell 执行以下操作:
lvm命令 restore LVM volume group state from previous configuration:(initramfs) lvm vgcfgrestore vm1-vg --config 'global{locking_type=1}'提醒:vm1-vg是本示例中的卷组名称
现在,恢复的虚拟机可以启动了。
其他症状:
生产虚拟机 (VM) 可以成功重新启动。该问题仅影响使用 LVM 并从同一模板部署的 Linux 虚拟机的备份拷贝。
不使用 LVM 配置的 Windows 和 Linux 虚拟机 不会 出现备份拷贝的 FLR 或引导问题。
Cause
LVM 元数据背景:
- 配置了 LVM 的 Linux 虚拟机从同一模板进行克隆或部署。生成的新虚拟机具有相同的 LVM 唯一标识符 (UUID)。
- 对 LVM 磁盘所做的任何更改(例如,将虚拟磁盘添加到 LVM)都需要更新 LVM 元数据信息。LVM 使用名为修订序列号 (vg_seqno) 的字段跟踪这些更新。每当进行更改时,此数字都会递增。
热添加备份问题:
在 Avamar 备份期间,如果满足以下条件:
- 使用热添加(默认传输方法)同时备份源虚拟机和克隆虚拟机。
- 两个虚拟机都使用相同的 Avamar 代理进行热添加。
- 在热添加的虚拟机之间,LVM 版本有所不同。
Avamar 代理的 Linux 内核错误地假定两个虚拟机的磁盘位于同一 LVM 卷组中,从而自动更新 LVM 元数据。如果发生此 LVM 更新,则备份拷贝中的 LVM 元数据不一致。
还原问题:
在映像过程中,由于在热添加备份期间更新的 LVM 元数据不正确,虚拟机可能会显示“缺少 LVM 物理扩展区”或“事务 ID 不匹配”。这种差异源于上述更新。
恢复 LVM 工具,例如 vgcfgrestore、 vgextend –restoremissing以及 vgchange -ay –activationmodepartial 可能需要才能允许完整启动或修复备份拷贝以更正 LVM 状态。
Resolution
此问题已在 Avamar 代理修补程序
Avamar 19.4 333146中得到解决。
Avamar 19.3 333148。
Avamar 19.2 333149
较旧的 Avamar 版本:请参阅下面的备注。
这些热修复程序会在 Avamar 代理上重新配置 LVM 设置,以防止在热添加操作期间更新 LVM 元数据。
热修复之前
194proxy:~ # lvm config | grep filter
filter="a/.*/"
热修复之后
194proxy:~ # lvm config | grep filter
filter=["r|/dev/s.*|","r|/dev/disk.*|","a/.*/"]
对于任何受影响的客户端,我们必须强制执行更改数据块跟踪 (CBT) L0 备份。这可确保在新备份中捕获正确的 LVM 元数据。
为了帮助进行客户端检测,Avamar 工程部门开发了一个新脚本。此脚本扫描 Linux 备份以查找 LVM 不一致之处,并在发现任何不一致之处时自动为下一个作业重置 cbt。
vmlvmcheck.pl
- 此脚本必须安装在 Avamar Server 上。
- 必须以 root 用户身份运行该脚本。
- 此脚本扫描所有 Linux 虚拟机客户端的最新备份,并检查 LVM 一致性。
- 如果扫描许多虚拟机,此脚本可能需要较长的持续时间(数小时)。默认情况下,如果扫描的虚拟机数量超过 50,则脚本将在后台/守护程序模式下运行。
脚本逻辑:
该脚本在 .vmdk 备份中查找 LVM 逻辑卷,并验证以下条件:
- 确保备份中存在所有物理卷
- 验证所有物理卷是否都与 LVM 卷组关联
- 同一卷组的所有物理卷都具有相同的序列号。
误报:
- 如果未包含查找到的卷组的某些虚拟磁盘,则备份此工具标记备份。根本原因与上述热添加问题无关。在这种情况下,请确保 Avamar 正在备份所有虚拟磁盘。
- 如果任何虚拟磁盘包含未完全初始化的 LVM 分区,则该工具会将备份标识为损坏。但是,在这种情况下,操作系统不会有任何启动问题。
下载说明:
-
从 central.dell.com 网站下载 vmlvmcheck.pl。有关 central 的更多信息,请参阅知识库文章 Avamar:如何从 Dell Central Avamar 页面查找和下载 Avamar 脚本和工具。

-
使用 WinSCP 等工具将 vmlvmchck.pl 传输到 Avamar Server 上的“/root”目录。
示例 1(只读功能) 扫描所有 Linux 虚拟机客户端的最新备份。
root@ave194:~/vmlvmcheck/#: perl vmlvmcheck.pl 11:37:13 2021-10-06 : vmlvmcheck.pl version 19.04 @ave194 11:37:14 14 VMs populated. Processing backups for these... <list of vms> “===== 3 Vm(s) with potential LVM inconsistency in backup === vm1,vm2,vm3 11:40:08 COMPLETED. Statistics on ave194 (vmvlmcheck ver 19.04) --- (after 2 minutes, 55 seconds) 11 Activities examined 11 Backups to DD 30 Files Examined 12.500 Run Sec per VM 2.917 Run Time Minutes 14 VMs Enabled 14 VMs Total 3 VMs With Inconsistent backups 21.43 % VMs With Inconsistent backups %
或者,当 扫描的虚拟机总数超过 50 个时,脚本将改为在后台自动运行:
root@ave194:/home/admin/#: perl vmlvmcheck.pl 10:55:34 2021-11-17 : vmlvmcheck.pl version 19.15 @ave194 10:55:35 55 VMs populated. Processing backups for these... Output is now going to /usr/local/avamar/var/log/vmvlmcheck.log . PID# 3563 is now running vmlvmcheck as a background process. To terminate daemon process, enter: kill 3563 Please run: tail -f /usr/local/avamar/var/log/vmvlmcheck.log示例 2(只读功能) 使用 扫描单个客户端的最新备份
--vm <vm name>旗帜root@ave194:/home/admin/#: perl vmlvmcheck.pl --vm cloud2116-clone1 18:13:57 2021-10-05 : vmlvmcheck.pl version 19.04 @ave194 18:13:57 1 VMs populated. Processing backups for these... INFO:============ cloud2116-clone1 /vc6-avamar.gslabs.lab.emc.com/ContainerClients: 1 Backups WARNING: pvs Did not see a LVM on /dev/loop1 ERROR: Expected LVM member appears damaged:VMFiles/2/virtdisk-flat.vmdk. INFO: No partitions found in VMFiles/2/virtdisk-flat.vmdk. VM cskpcloud2116-clone1 has 1 LVMs inside 2 vmdks. ERROR: Bad backup: labelnum=2 2 Snapshots to be deleted ...Option DELETE_SNAPSHOTS=0. 18:14:09 COMPLETED. Statistics on ave194 (vmvlmcheck ver 19.04) --- 1 Activities examined 1 Backups to DD 2 Files Examined 12.000 Run Sec per VM 0.200 Run Time Minutes 1 VMs Enabled 1 VMs Total示例 3(可写功能)与示例 1 和 2 相同,但这次
--DELETE_SNAPSHOTS选项已添加root@ave194:~/vmlvmcheck/#: perl vmlvmcheck.pl --vm cloud2116-clone1 --DELETE_SNAPSHOTS 14:13:35 2021-10-06 : vmlvmcheck.pl version 19.04 @ave194 14:13:36 1 VMs populated. Processing backups for these... INFO:============ cloud2116-clone1 /vc6-avamar.gslabs.lab.emc.com/ContainerClients: 1 Backups WARNING: pvs Did not see a LVM on /dev/loop1 ERROR: Expected LVM member appears damaged:VMFiles/2/virtdisk-flat.vmdk. INFO: No partitions found in VMFiles/2/virtdisk-flat.vmdk. VM cskpcloud2116-clone1 has 1 LVMs inside 2 vmdks. ERROR: Bad backup: labelnum=2 2 Snapshots to be deleted ...Option DELETE_SNAPSHOTS=1. 14:13:49 COMPLETED. Statistics on ave194 (vmvlmcheck ver 19.04) --- 1 Activities examined 1 Backups to DD 2 Files Examined 14.000 Run Sec per VM 0.233 Run Time Minutes 1 VMs Enabled 1 VMs Total
- 此选项仅更新 Avamar 数据库的快照表。此更新将导致下一次备份自动切换到 CBT 级别 0。
- 标识的备份不会删除,并且此操作不会阻止还原。
Additional Information
为较旧或未修补的 Avamar 代理手动设置
-
以代理 root 身份备份 lvm.conf 文件
194proxyga:~ # cp /etc/lvm/lvm.conf /etc/lvm/lvm.conf-`date +%s
-
编辑 /etc/lvm/lvm.conf,查找现有的 “filter” 行并更改为以下内容。
之前
filter = [ "a/.*/" ]
之后
filter = ["r|/dev/s.*|","r|/dev/disk.*|","a/.*/"]
-
通过运行以下命令验证是否已设置新的过滤器设置
194proxy:~ # lvm config | grep filter filter=["r|/dev/s.*|","r|/dev/disk.*|","a/.*/"]