启用或禁用更改块跟踪 (Changed Block Tracking, CBT)的两种方式

启用或禁用更改块跟踪 (Changed Block Tracking, CBT) 的两种方式


由于VMware提供了方便的数据块修改追踪(Changed Block Tracking,CBT)技术,为虚拟机增量备份提供了基础,除第一次备份必须完整备份与传输整个VM数据外,后续备份都只需通过查询 CBT 记录,获取哪些异动过区块,然后只备份这些异动区块即可,既节省了扫描磁盘、判定异动区块的时间,所需传输的数据量也大幅缩小。

默认情况下 CBT 这个功能是禁用的,因为它会引起一个很小但是可测的性能降低。通常需要在第一个快照之前启用CBT,通过请求虚拟机配置,就可以判断修改块跟踪是否启用。

CBT 这个功能不是一开始 VMware 公司就有提供的,所以要使用 CBT 功能需满足如下先决条件:

  1. ESX/ESXi 主机必须是 4.0 及以上版本;
  2. VM 硬件版本必须是 7 或更新;
  3. 支持所有的虚拟磁盘类型(Thick、thin 及 RDM 虚拟兼容模式),除了 RDM 物理兼容模式;

    RDM (Raw Device Mapping)是VMware 服务器虚拟化环境中,用以允许一个虚拟机直接访问SAN(Storage Area Networking)中的一个存储LUN(Logical Unit Number)。
    RDM也可以叫做裸设备映射(Raw Device Mapping ),虚拟机直接使用存储中的LUN,而不经过虚拟化层。

  4. 虚拟机上没有可用的快照;

  5. 虚拟机必须处于断电状态。

如果备份时,没开启 CBT,会出现下面的错误:

■ 更改块跟踪配置不正确

■ 磁盘“Hard disk #”的更改块跟踪配置不正确

■ 一个或多个虚拟机磁盘的更改块跟踪配置不正确

启用块修改跟踪 (CBT)

在虚拟机上启用块修改跟踪 (CBT) ,有两种方式,第一种是通过 vSphere client 客户端进行配置;第二种是通过程序设置。

通过 vSphere client 客户端进行配置 CBT 步骤

要在虚拟机上启用 CBT,操作步骤如下:

  1. 关闭虚拟机电源;
  2. 右键单击虚拟机,然后单击编辑设置;
  3. 单击选项选项卡;
  4. 单击“高级”区域下方的常规,然后单击配置参数

    这里写图片描述

    此时将打开“配置参数”对话框

    这里写图片描述

  5. 单击添加行,添加 ctkEnabled 参数,然后将其值设置为 true;

  6. 单击添加行,添加 scsi0:0.ctkEnabled,然后将其值设置为 true;

    注意:scsi0:0.ctkEnabled 中的 scsi0:0 指示 SCSI 设备已分配给添加到虚拟机的硬盘。向每个添加到虚拟机的硬盘提供了一个 SCSI 设备,该设备如 scsi0:0、scsi0:1 或 scsi 1:1 所示。已分别在每个磁盘上启用(或禁用)CBT。

  7. 打开虚拟机电源;

  8. 在虚拟机的主目录中,验证启用 CBT 的每个磁盘还具有vmname-ctk.vmdk文件。

要禁用 CBT,首先也要关闭虚拟机,同样打开配置窗口,将所需禁用的 SCSI 磁盘的 ctkEnabled 参数设置为 false 即可。

通过程序设置启动 CBT

使用 PropertyCollector 从 VirutalMachine 托管对象中获取这个属性域,如果这个域包含 changeTrackingSupported 标志,就可以进行相关操作。

如果支持的话,可以使用一个简单的 VirtualMachineConfigSpec 来启用修改块跟踪,并调用 ReconfigVM_Task 方法来重新配置虚拟机:

判断虚拟机修改跟踪的状态(先获取虚拟机的配置信息 VirtualMachineConfigInfo,根据其方法 isChangeTrackingEnabled() 来判断),如果是false,激活修改块跟踪,并调用ReconfigVM_Task方法来重新配置虚拟机,程序如下:

VirtualMachineConfigSpec configSpec = new VirtualMachineConfigSpec();
// 获取虚拟机信息, VirtualMachine 为自定义的一个实体对象,获取虚拟机信息的方法也为自定义方法
VirtualMachine vm = getVirtualMachineInfoByVmMor(targetVmMoRef);
if(!vm.getConfig().isChangeTrackingEnabled()){
    configSpec.setChangeTrackingEnabled(new Boolean(true));
}

ManagedObjectReference taskMoRef = serviceConnection.getService().ReconfigVM_Task(targetVmMoRef,configSpec);

public void setChangeTrackingEnabled(Boolean value) {
    this.changeTrackingEnabled = value;
}




参考:
Enabling or disabling Changed Block Tracking (CBT) on virtual machines (1031873)

Enable Change Block Tracking (CBT) for VMware Virtual Machine

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Block Change Tracking(BCT)是 Oracle 数据库中一种技术,用于跟踪备份之间更改的数据,以加速增量备份和恢复。如果你想从 BCT 中获取变数据,可以按照以下步骤进行: 1. 首先,你需要确认 BCT 已经启用。你可以使用以下命令来检查: ``` SELECT status FROM v$block_change_tracking; ``` 如果返回的状态为 ENABLED,则表示 BCT 已经启用。如果状态为 DISABLED,则需要通过以下命令启用 BCT: ``` ALTER DATABASE ENABLE BLOCK CHANGE TRACKING; ``` 2. 接下来,你需要创建一个包含变数据的文件。你可以使用以下命令来创建该文件: ``` ALTER DATABASE CREATE BLOCK CHANGE TRACKING FILE '/path/to/bct/file'; ``` 其中 '/path/to/bct/file' 是你想要创建的 BCT 文件的路径。请确保该路径对于数据库服务器上的 Oracle 进程是可读写的。 3. 等待一段时间后,BCT 文件将包含所有在最后一次备份之后更改的数据。你可以使用以下命令来获取变数据: ``` SELECT file#, block# FROM v$backup_block_change_tracking WHERE status = 'YES'; ``` 该命令将返回一个包含文件号和号的结果集,表示包含变数据的数据文件和该文件中的变数据号。 请注意,BCT 文件只包含最后一次备份之后更改的数据,因此如果你想获取之前的变数据,需要使用相应的增量备份文件。同时,BCT 文件也需要定期清理或重新创建,以确保其有效性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值