什么是VMware Changed Block Tracking(CBT)以及它是如何工作的?

VMware 提供 API 來簡化企業虛擬環境中的數據保護,具有使無代理備份和改進增量 VM 備份效率的功能。增量備份有助於節省大量存儲空間,相較於完整備份。

當談到現代VMware 備份解決方案時,大多依賴於 VMware 的 API,並使用已更改塊跟踪(CBT)技術來促進和加速虛擬機的增量備份。在這篇博客文章中,我們解釋了更改塊跟踪,包括工作原理和實際應用。

什麼是更改塊跟踪?

更改塊跟踪(CBT)是一種本地 VMware 功能,可將已更改的塊記錄在跟踪文件中。CBT 是 VMware vSphere 存儲 API – 數據保護框架的一部分,該框架首次在 4.0 版中發布,允許第三方數據保護應用程序利用 CBT 來執行更有效的備份和複製。

CBT 在 ESXi 存儲堆棧級別上運行,並允許第三方備份解決方案僅備份自上次備份以來已更改的數據塊,即創建增量備份,或使用中的數據塊而不是完整的虛擬機。這使您能夠大幅減少備份數據量,特別是在擁有數百個虛擬機的大型環境中,並加快備份過程。

VMware CBT 顯著地減少了備份軟件執行增量備份所需的時間,因為它跟蹤了一個特殊的日誌文件中的更改。如果第三方備份解決方案在不使用 CBT 的情況下通過其他方法跟蹤更改,將會對 ESXi 伺服器產生更多的 CPU 負載。因此,當備份數據時,CBT 還優化了 ESXi 伺服器的性能。

VMware 的 Storage vMotion 過程也使用了 CBT,它允許虛擬機磁盤文件在運行時從一個數據存儲區移動到另一個數據存儲區。

VMware Changed Block Tracking 的工作原理

CBT 功能通過比較最後和當前的變更集 ID 並查找在這些變更集 ID 之間更改的磁盤扇區來工作。VMware CBT 還識別了所有正在使用的虛擬機文件系統(VMFS)區塊上的块。跟踪由超級管理程序本身執行,並且在虛擬機之外進行。

CBT 要求

改變塊跟踪的要求包括:

  • VMware vSphere(ESXi 4.0 或更高版本)
  • 第 7 版虛擬硬件或更高版本
  • 本地 VMFS 數據存儲區,NFS 或 iSCSI 數據存儲區
  • 厚或薄配置
  • 無原始磁盤映射。不支持物理兼容性模式中的原始設備映射(RDM)。
  • A VM must not have snapshots to start using VMware CBT

如何啟用改變塊跟踪

預設情況下,CBT 被停用,因為它會消耗少量的主機 CPU 時間。但對於像 NAKIVO 備份與複寫這樣的第三方備份解決方案,必須啟用 CBT,以使產品執行快速和可靠的增量備份。

CBT 已在虛擬機的高級配置設置中啟用:

  1. 打開 VM 設置。您可以在 VMware vSphere 客戶端中通過右鍵單擊 VM 並選擇 編輯設置 來執行此操作。
  2. 編輯設置 窗口中,點擊 VM 選項 標籤。
  3. 點擊 進階 選項類別以展開設置,並在 配置參數 行中點擊 編輯配置。VM 的 配置參數 窗口將打開,其中包含多行,每行包含一個參數名稱和值。
  4. CBT 激活由 .vmx 配置中的以下行決定:

ctkEnabled = “TRUE”

此外,對於每個啟用 CBT 的磁盤,都將包括一個條目:

scsix:x.ctkEnabled = “TRUE”

必須設置這些參數以啟用已更改的塊跟踪。

注意: 要禁用 CBT,請在 ctkEnabledscsi0:0.ctkEnabled 行中將 TRUE 更改為 FALSE(使用相應的 SCSI 設備號碼)。

當在虛擬機上啟用 CBT 時,VMkernel 會在 VM 目錄中創建一個額外的文件,該文件名為 -ctk.vmdk,用於存儲虛擬磁盤塊的映射。該文件與相應的 .vmdk 磁盤相關,包含了在上一個更改集 ID 識別的特定時間和實際狀態之間在該虛擬磁盤中更改的塊列表。創建的 CTK 文件的大小保持不變,除非增加了虛擬磁盤的大小。CTK 文件的大小大約為每 10 GB VM 磁盤大小 5 MB

大多數備份解決方案將使用 VMware SDK 方法以編程方式為虛擬機啟用 CBT,並使用 stun/unstun 循環,其中包括開機或關機、暫停/恢復或創建/刪除快照。在 stun/unstun 循環期間,將在 VMware 存儲堆棧中插入一個特殊的更改追踪過濾器,以允許 CBT 在虛擬機上實例化。

如何檢查是否已啟用 CBT

在您未手動啟用 CBT 的情況下,您可以檢查備份軟件是否已啟用 CBT 以執行 VM 備份。檢查 CBT 設置的步驟與啟用此功能的步驟類似。但在這裡,我們將介紹一種稍微不同的方法,使用 .vmx 配置文件。

要檢查 VM 是否已啟用 CBT,請執行以下操作:

  1. 打開 VMware vSphere Client
  2. 找到所需的 VM,確保其已關機。
  3. 進入數據存儲上的 VM 文件夾。
  4. 找到一個 VM 配置文件(.vmx)。
The .vmx configuration file should contain the ctkEnabled entry. The entry’s value has to be “TRUE”. If it is not, then change the value to “TRUE” to enable CBT for the VM.

啟用CBT後,每個虛擬磁碟都附帶一個xxx-ctk.vmdk文件,其中“xxx”是虛擬磁碟名稱。如果您看到這些CTK文件,表示工作中的CBT功能。

在某些情況下,例如不適當的主機關機或電源故障,當虛擬機處於開啟狀態時,CBT可能會丟失對更改的跟踪。這可能導致CBT重置,這意味著所有先前收集的CBT數據將被清除,新數據將從重置時開始收集。如果在CBT重置後運行虛擬機備份,則會進行完整備份。在進行完整備份並跟踪新更改後,您可以再次執行增量備份。

在NAKIVO Backup & Replication中使用VMware CBT

NAKIVO Backup & Replication是一個通用的數據保護解決方案,可以在VMware vSphere中備份、恢復和複製虛擬機。為了加快使用NAKIVO解決方案執行的增量備份速度,默認情況下在任何新備份作業中啟用了CBT。

有幾種情況,當NAKIVO Backup & Replication,就像任何其他vSphere備份解決方案一樣,無法使用VMware CBT:

  • VMware CBT不受VM支持:可能的原因 – ESXi主機低於v4.1,或虛擬硬件版本低於v7。
NOTE: NAKIVO Backup & Replication versions 10.6 and newer do not support ESXi 5.1 and older versions.
  • 未提供VMware CBT數據:可能的原因 – ESXi主機停電,CBT丟失了VM增量更改的跟踪。

在附加的更改跟踪設置中,您可以找到解決方案在使用CBT時遇到錯誤時應採取的操作。

讓我們仔細看看這些錯誤操作:

  • 切換至專有方法:將使用NAKIVO Backup & Replication的專有變更跟蹤方法,比VMware CBT慢,並消耗更多ESXi主機的資源。
  • 重置CBT:在CBT失敗的情況下將重置CBT。
  • VM處理失敗:將停止VM處理。

此外,您可以指定何時應用所選的錯誤操作:

  • 立即:錯誤操作立即應用(除了重置CBT操作)。
  • 在下一次重試時:錯誤操作將在下一次重試時應用。
  • 在最後一次重試時:錯誤操作將在最後一次重試時應用。

您還可以選擇通過CBT提供的更改塊進行雙重檢查核取方塊。在這種情況下,由VMware CBT提供的數據將額外檢查NAKIVO Backup & Replication專有的變更跟蹤。這種方法更可靠,但可能比常規的VMware CBT慢。

結論

VMware更改塊跟蹤是一項強大的功能,使備份過程在各個方面更快速和可靠。這項技術經過了充分測試,並且在原生VMware技術(例如Storage vMotion)中得到了大量使用。

VMware CBT是現代備份解決方案的一部分,例如NAKIVO Backup & Replication,可在不對主機增加額外負荷的情況下有效備份VMware環境。

Source:
https://www.nakivo.com/blog/vmware-changed-block-tracking-works/