什么是VMware更改块跟踪(CBT)以及它是如何工作的?

VMware提供API,简化企业虚拟环境中的数据保护,具有能够实现无代理备份和提高增量VM备份效率的功能。增量备份有助于节省大量存储空间,与完整备份相比。

在现代VMware备份解决方案方面,大多数依赖于VMware的API,并使用Changed Block Tracking(CBT)技术来促进和加速虚拟机的增量备份。在这篇博客文章中,我们解释Changed Block Tracking,包括工作原理和实际应用。

什么是Changed Block Tracking?

Changed Block Tracking(CBT)是一种原生的VMware功能,记录了跟踪文件中的更改块。CBT是VMware vSphere Storage APIs – Data Protection框架的一部分,首次在4.0版本中发布,允许第三方数据保护应用程序利用CBT执行更有效的备份和复制。

CBT在ESXi存储堆栈级别上工作,允许第三方备份解决方案仅备份自上次备份以来更改的数据块,即创建增量备份,或者使用中的数据块而不是完整的VM。这使您能够大大减少备份数据量,特别是在具有数百个VM的大型环境中,并加快备份过程。

VMware CBT显著减少了备份软件执行增量备份所需的时间,因为它跟踪特殊日志文件中的更改。如果第三方备份解决方案在没有CBT的情况下使用其他方法跟踪更改,则会在ESXi服务器上增加更多的CPU负载。因此,CBT还优化了ESXi服务器在备份数据时的性能。

VMware的Storage vMotion过程也使用CBT,它允许在运行时将虚拟机磁盘文件从一个数据存储迁移到另一个数据存储。

VMware变更块跟踪的工作原理

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方法来为VM启用CBT,并使用停滞/取消停滞循环,其中包括开机或关机、挂起/恢复或创建/删除快照。在停滞/取消停滞循环期间,将在VMware存储堆栈中为特定VM插入一个特殊的更改跟踪过滤器,该过滤器允许CBT在VM上实例化。

如何检查是否启用了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重置后运行虚拟机备份,则会进行完整备份。在进行完整备份并跟踪新变更之后,您可以再次执行增量备份。

使用VMware CBT在NAKIVO备份与复制中

NAKIVO备份与复制是一种通用的数据保护解决方案,可在VMware vSphere中备份、恢复和复制虚拟机。为了加快使用NAKIVO解决方案执行的增量备份速度,默认情况下在任何新的备份作业中启用了CBT。

有几种情况下,NAKIVO备份与复制,就像任何其他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备份与复制专有的变更跟踪方法,这比VMware CBT慢,消耗ESXi主机更多资源。
  • 重置CBT:如果CBT失败,将重置CBT。
  • VM处理失败:将停止VM处理。

此外,您可以指定何时应用所选的错误时操作:

  • 立即:立即应用错误操作(除了重置CBT操作)。
  • 在下次重试时:错误操作将在下次重试时应用。
  • 在最后一次重试时:错误操作将在最后一次重试时应用。

您还可以选择双重检查由CBT提供的已更改块复选框。在这种情况下,由VMware CBT提供的数据将额外检查NAKIVO备份与复制专有的变更跟踪。这种方法更可靠,但可能比常规VMware CBT慢。

结论

VMware已更改的块跟踪是一个强大的功能,使备份过程在各个方面更快速可靠。该技术经过了充分测试,并且在原生VMware技术(如存储迁移)中得到了广泛利用。

VMware CBT是现代备份解决方案(如NAKIVO备份与复制)的一个重要组成部分,它提供了对VMware环境的高效备份,而不会给主机增加额外负载。

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