Avamar:Linux 虛擬機器備份是從範本部署時,可能會出現 LVM 中繼資料不一致的情況
Summary: 問題:Avamar - Linux 虛擬機器備份從範本部署時,可能會發生 LVM 中繼資料不一致。
Symptoms
在還原期間,會出現下列症狀:
-
FLR 作業失敗,並出現 LVM 問題:

或

2 個 VM -
Avamar UI 中的映像還原工作成功,虛擬機器 (VM) 可能因為 LVM 問題而發生開機問題。
範例開機問題 1:
在以下 Red Hat 範例中,作業系統會開機進入緊急 dracut shell:

(在此範例中) 下列 LVM 命令會從 dracut shell 修復 LVM 狀態。輸出顯示問題是其中一個 lvm 磁碟 (sdb) 不正確地從 LVM 移除。
dracut:/# lvm pvscan --config 'global{locking_type=1}'
復原的虛擬機器現在可以開機了。範例開機問題 2:
在 Debian 範例中,作業系統開機進入緊急忙碌方塊:

(在此範例中) 從忙碌的方塊殼層執行下列內容
lvm命令從先前的組態還原 LVM 磁碟區群組狀態:(initramfs) lvm vgcfgrestore vm1-vg --config 'global{locking_type=1}'注意:vm1-vg是此範例中的卷組名稱
復原的虛擬機器現在可以開機了。
其他症狀:
生產虛擬機器 (VM) 可以成功重新開機。此問題只會影響使用 LVM 且從相同範本部署的 Linux 虛擬機器備份。
不使用 LVM 組態的 Windows 和 Linux 虛擬機器 不會顯示備份 複本的 FLR 或開機問題。
Cause
LVM 中繼資料背景:
- 使用 LVM 設定的 Linux VM 是從同一範本複製或部署。產生的新虛擬機器具有相同的 LVM 唯一識別碼 (UUID)。
- 對 LVM 磁碟所做的任何變更 (例如,將虛擬磁碟新增至 LVM) 都需要更新 LVM 中繼資料資訊。LVM 使用名為修訂順序編號 (vg_seqno 的欄位來跟蹤這些更新。每當進行更改時,此數位都會遞增。
熱新增備份問題:
在 Avamar 備份期間,如果符合下列條件:
- 使用熱添加(預設傳輸方法)同時備份源和克隆的 VM。
- 兩個虛擬機器都是使用相同的 Avamar 代理熱新增的。
- 要熱新增的虛擬機器之間的 LVM 修訂版本有所不同。
Avamar 代理的 Linux 核心錯誤地假定兩個虛擬機器的磁碟位於同一個 LVM 磁碟區群組中,因此會自動更新 LVM 中繼資料。如果發生此 LVM 更新,則備份副本中的 LVM 元數據不一致。
還原問題:
在映像期間,虛擬機器可能會顯示「遺失 LVM 實體範圍」或「交易 ID 不相符」,因為在熱新增備份期間更新的 LVM 中繼資料不正確。這種差異源於上述更新。
復原 LVM 工具,例如 vgcfgrestore, vgextend –restoremissing,以及 vgchange -ay –activationmodepartial 可能需要允許完整啟動或修復備份副本以更正 LVM 狀態。
Resolution
此問題已在 Avamar 代理 hotfix:
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/.*/"]
針對任何受影響的用戶端,我們必須強制進行 Change Block Tracking (CBT) L0 備份。這可確保在新的備份中捕獲正確的 LVM 元數據。
為了協助偵測用戶端,Avamar 工程部門開發了新的指令檔。此指令檔會掃描 Linux 備份是否有 LVM 不一致之處,並自動為下一個工作重設 cbt (若發現任何)。
vmlvmcheck.pl
- 此指令檔必須安裝在 Avamar Server 上。
- 腳本必須以根使用者身份運行。
- 此指令檔會掃描所有 Linux 虛擬機器用戶端的最新備份,並檢查 LVM 的一致性。
- 如果掃描許多虛擬機器,此指令檔可能需要很長的持續時間 (小時)。依預設,如果掃描的 VM 數量超過 50,指令檔會在背景/守護程式模式下執行。
指令檔邏輯:
此指令檔會在 .vmdk 備份中找到 LVM 邏輯磁碟區,並確認下列條件:
- 確定備份中的所有實體磁碟區皆存在
- 驗證所有實體磁碟區是否都與 LVM 磁碟區群組相關聯
- 同一卷組的所有物理卷具有相同的序列號。
偽陽性:
- 如果探索到的磁碟區群組的某些虛擬磁碟未包含在內,則會備份此工具旗標備份。根本原因與上述熱新增問題無關。在此情況下,請確保 Avamar 會備份所有虛擬磁碟。
- 如果任何虛擬磁碟包含尚未完全初始化的 LVM 磁碟分割,則工具會將備份識別為損壞。但是,在這種情況下,作業系統不會有任何開機問題。
下載指示:
-
從 central.dell.com 網站下載 vmlvmcheck.pl。如需中央的詳細資訊,請參閱 KB Avamar:如何從 Dell Central Avamar 頁面尋找和下載 Avamar 指令檔和工具。

-
使用 WinSCP 等工具,將 vmlvmchck.pl 轉移至 Avamar 伺服器上的「/root」目錄。
範例 1(唯讀功能) 掃描所有 Linux VM 用戶端的最新備份。
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 代理手動設定 LVM
-
作為代理根,請備份 lvm.conf 檔案
194proxyga:~ # cp /etc/lvm/lvm.conf /etc/lvm/lvm.conf-`date +%s
-
編輯 /etc/lvm/lvm.conf,尋找現有的「篩選」行,然後變更為以下內容。
之前
filter = [ "a/.*/" ]
之後
filter = ["r|/dev/s.*|","r|/dev/disk.*|","a/.*/"]
-
執行此命令以確認是否設定了新的篩選器設定
194proxy:~ # lvm config | grep filter filter=["r|/dev/s.*|","r|/dev/disk.*|","a/.*/"]