仮想マシン上の変更ブロックのトラッキング(CBT)
search cancel

仮想マシン上の変更ブロックのトラッキング(CBT)

book

Article ID: 344998

calendar_today

Updated On:

Products

VMware vSphere ESXi

Issue/Introduction

この KB では変更されたブロックのトラッキング(CBT)と、この機能に関連する仮想マシンのバックアップ中に発生するたアラートについて説明します。

変更されたブロックトラッキング(CBT)は、仮想マシンのストレージブロックが変化した際に追跡するVMkernelの機能です。
VMkernelは仮想マシンのブロック変更を追跡し、これにより、VMware の vStorageAPI を利用するために開発されたアプリケ
ーションのバックアッププロセスが強化されます。
  • バックアップアプライアンスは、VMware API コールを使用しスナップショットの作成を要求します。 次に、VMware はスナップショットを取得しバックアップを作成できるようにします。
  • 変更されたブロックトラッキング(CBT)は、変更されたまたは使用中のデータのブロックを識別する機能です。 これにより、増分バックアップで前回のバックアップからの変更を識別し、変更されたブロックまたは使用中のブロックのみを書き込むことができます。 


Symptoms:

免責事項: これは英文の記事「Changed Block Tracking (CBT) on virtual machines」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。


仮想マシンのバックアップ取得時に下記のような事象が発生する:

  • 仮想マシンのバックアップの失敗
  • 下記のようなエラーが出力される

   One or more VM disks have incorrect changed block tracking configuration.

  • バックアップジョブが下記のようなエラーとなる

   Disk "Hard disk #" has incorrect changed block tracking configuration.
   One or more VM disks have incorrect changed block tracking configuration.

Environment

VMware vSphere ESXi 6.x
VMware vSphere ESXi 7.x
VMware vSphere ESXi 8.x

Resolution

ESXiホストで実行されている仮想マシンは、変更されたディスクセクターを追跡できます。この機能は、変更されたブロック追跡(CBT)と呼ばれます。

多くのファイルシステムでは、CBT は 2 つの変更 ID 間で変更されたディスクセクターを識別します。 VMFSパーティションでは、CBT は使用中のすべてのディスクセクターを識別することもできます。

CBT が無効になっているか正しく機能していない場合、増分バックアップは変更されたブロックのみではなく、完全な仮想マシンディスクをバックアップするか、完全なバックアップに戻る可能性があります。

仮想ディスクブロックの変更は仮想化レイヤー内の外部仮想マシンから追跡されます。ソフトウェアがバックアップを実行するとき、最後のバックアップ以降に変更されたブロック、または使用中のブロックのみの送信を要求することができます。。

CBT 機能には vSphereAPI の一部としてサードパーティのバックアップアプリケーションからアクセスできます。アプリケーションは VAPI を呼び出して、VMkernel が最後のバックアップスナップショット以降に
仮想ディスク上で変更されたデータのブロックを返すように要求します。

CBT が前回の変更 ID 以降に変更されたディスク セクタを特定するには、次の項目が必要です。
  • 追跡対象のディスクを所有する仮想マシンが、ハードウェア バージョン 7 以降であること。
  • I/O 操作が ESX/ESXi ストレージ スタックを通過すること。 仮想互換モードの RDM と同様に NFS はサポートされますが、物理互換モードの RDM ではサポートされません。 SAN、iSCSI または ローカル ディスクのいずれかにバッキングされていても、VMFS がサポートされています。
  • CBT が仮想マシンに対して有効化されていること(下記参照)。
  • 仮想マシンのストレージが(通常あるいは読み取り専用の)独立ディスクではない、つまりスナップショットの影響を受けないこと。
CBT が特殊な "*" 変更 ID で使用中のディスク セクタを特定するには、次の項目が必要です。
  • 仮想ディスクが、SAN、iSCSI、またはローカルディスクにバッキングされている VMFS ボリューム上にあること。
  • クリーン スタートのため、CBT を有効にするときには仮想マシンのスナップショットをゼロとしておくこと。
仮想マシンのパワーオン時の電源の不具合やハード シャットダウンなど、一部のケースでは、CBT がリセットされ、差分変更の追跡を失う場合があります。

注:変更されたブロックの追跡を有効にする前に、仮想マシンにスナップショットがないことを確認してください。 CBTを有効にする前にスナップショットを作成すると、
QueryChangedDiskAreas API がエラーを返さないか、QueryChangedDiskAreas によって返されるデータが正しくない可能性があります。
 
vSphere 6.7および7.xにおける手順
仮想ディスクの CBT が有効化されているかどうかチェックするには:
  1. vSphere Client を開き、パワーオフされた仮想マシンを選択します。
  2. [編集] > [設定] > [オプション] > [詳細/一般] > [構成パラメータ] をクリックします。

  3. ctkEnabled = "TRUE" が仮想マシンに対する一般的なCBTの構成を制御するVMXのオプションです。仮想マシンでCBTを無効化するには、この値をFalseに設定してください。この設定は、仮想マシンフォルダの中にある仮想マシンの設定ファイルである<仮想マシン名>.vmxに保存されます。詳細は、以下を参照してください。
Enabling or disabling Changed Block Tracking (CBT) on virtual machines

    4. 仮想マシンの仮想ディスクごとに、scsix:x.ctkEnabled = "TRUE" という追加のオプションがあります。CBTを仮想ディスクごとに無効化するためにはこの個別オプションを”FALSE"に設定してください。これらのオプションも、仮想マシンフォルダの中にある設定ファイルである<仮想マシン名>.vmxの中に存在します。

    注:scsi0:0.ctkEnabled の scsi0:0 は、仮想マシンに追加されたハードディスクに割り当てられた SCSI デイスクを示します。 仮想マシンに追加されたすべてのハードディスクには、scsi0:0、scsi0:1、またはscsi 1:1 のような SCSI デバイスが与えられます。 CBT は各ディスクで個別に有効(または無効)することができます。

    5. 各仮想ディスクおよびスナップショット ディスクについては、.ctk ファイルがあります。

   例:

    vmname.vmdk
    vmname-flat.vmdk
    vmname-ctk.vmdk
    vmname-000001.vmdk
    vmname-000001-delta.vmdk
    vmname-000001-ctk.vmdk
 注: 正常なバックアップおよびフル スナップショット統合の後、データストアに .ctk ファイルに関連するスナップショットは残っていません。 例: vmname-000001-ctk.vmdk。

   6. 仮想マシンの電源を入れます。

   7. 仮想マシンのホームディレクトリで、CBT が有効になっている各ディスクに vmname-ctk.vmdk のようなファイルが存在していることを確認。
注:バックアップと完全なスナップショットの統合が成功した後は、スナップショットに関連する.ctk ファイルがデータストアに残っていないはずです。 例:vmname-000001-ctk.vmdk。 

CBT を無効にするには、仮想マシンにスナップショットがないことを確認します。 詳細については、以下を参照してください。

vSphere 8.xにおける手順

仮想ディスクの CBT が有効化されているかどうかチェックするには:

  1. vSphere Client を開き、パワーオフされた仮想マシンを選択します。
  2. 仮想マシンを右クリックして[設定の編集] > [詳細パラメータ]を開きます。
  3. ctkEnabled = "TRUE" が仮想マシンに対する一般的なCBTの構成を制御するVMXのオプションです。仮想マシンでCBTを無効化するには、この値をFalseに設定してください。この設定は、仮想マシンフォルダの中にある仮想マシンの設定ファイルである<仮想マシン名>.vmxに保存されます。詳細は、以下を参照してください。
    Enabling or disabling Changed Block Tracking (CBT) on virtual machines
  4. 仮想マシンの仮想ディスクごとに、scsix:x.ctkEnabled = "TRUE" という追加のオプションがあります。CBTを仮想ディスクごとに無効化するためにはこの個別オプションを”FALSE"に設定してください。これらのオプションも、仮想マシンフォルダの中にある設定ファイルである<仮想マシン名>.vmxの中に存在します。
  5. 仮想マシンをパワーオンします。
CBT を無効にするには:
1. 仮想マシンをパワーオフ
2. 仮想マシンを右クリックし、[設定の編集] をクリック
3. [オプション] タブをクリック
4. 「詳細」 セクションの下の 「一般」 をクリックしてから、「構成パラメーター」 をクリック  [構成パラメーター] ダイアログを開く
5. 目的の SCSI ディスクの ctkEnabled パラメーターを false に設定
6. 仮想マシンの電源を入れる

Additional Information

VMware Horizon View およびリンク クローン、インスタント クローンの仮想マシンを使用している場合、CBT を使用しないでください。 親仮想マシンに対して CBT が無効になっていることを常に確認してください。 
 
変更ブロックのトラッキングに関連する記事については、次の項目を参照してください。
Changed Block Tracking (CBT) on virtual machines