免責事項: これは英文の記事 「Determining if a VMDK is zeroedthick or eagerzeroedthick」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。
この KB は、VMDKのプロビジョニングタイプ が zeroedthick (初回アクセス時にブロックをゼロクリアする) か eagerzeroedthick (作成時に全ブロックをゼロクリアする) を区別する手助けをするものです。
注: アプリケーションクラスタリング(Microsoft Windows Server Failover Cluster ; WSFC) や VMware Fault Tolerance を利用するためには、仮想マシンのディスクは、eagerzeroedthick でなければいけません。vmkfstools を使うと、zeroedthick の VMDK を eagerzeroedthick に変換することができます。より詳細な情報は、vmkfstools を使用した仮想マシンディスクのクローズ作成および変換 を参照してください。
VMware ESXi ホストは、コンソールでの操作のためターミナルが用意されています。SSH でリモートからログインしたり、ホストのコンソールやシステム管理インターフェイスから Alt-F1 を押下することでログインできます。
ESXi のターミナルを使うと、ディスクが zeroedthick か eagerzeroedthick の区別を以下の方法でつけられます。
VMDK が、zeroedthick か eagerzeroedthick かの区別をする最初の方法は、'-D' オプションを使います。
# vmkfstools -D "/vmfs/volumes/my volume/ My VM/My VM-flat.vmdk"
出力された結果を見てください。
もし len (VMDK のファイルサイズ) = nb (確保されているブロック数) * bs (VMFS のブロックサイズ) である場合、つまりすべてのブロックが割り当て済みの場合は、シック( thick )です。さらに tbz が 0 であったなら(ゼロクリアするブロックが無い)、その VMDK は eagerzeroedthick であり、つまりそれ以外は、zeroedthick です。この例では、12884901888 (len) = 12288 (nb) * 1048576 (bs) なので、シック ( thick ) で、かつ tbz = 0 なので eagerzeroedthick となります。
Lock [type 10c00001 offset 92684288 v 16, hb offset 3342336gen 63, mode 0, owner 00000000-00000000-0000-000000000000 mtime 2041551num 0 gblnum 0 gblgen 0 gblbrk 0]Addr <4, 37, 2>, gen 4, links 1, type reg, flags 0x4, uid 0, gid 0, mode 600len 12884901888, nb 12288 tbz 0, cow 0, newSinceEpoch 12288, zla 3, bs 1048576affinityFD <4,34,1>, parentFD <4,34,1>, tbzGranularityShift 20, numLFB 24lastSFBClusterNum 0, numPreAllocBlocks 0, numPointerBlocks 2
(VMDK がシンプロビジョニングの場合) len (8589934592) > nb (0) * bs (1048576) なので、VMDK はシンプロビジョニングです(割り当てられていないブロックが存在)。
Lock [type 10c00001 offset 92725248 v 23, hb offset 3342336gen 63, mode 0, owner 00000000-00000000-0000-000000000000 mtime 2280928num 0 gblnum 0 gblgen 0 gblbrk 0]Addr <4, 37, 7>, gen 13, links 1, type reg, flags 0x1, uid 0, gid 0, mode 600len 8589934592, nb 0 tbz 0, cow 0, newSinceEpoch 0, zla 3, bs 1048576affinityFD <4,37,7>, parentFD <4,34,1>, tbzGranularityShift 20, numLFB 0lastSFBClusterNum 0, numPreAllocBlocks 0, numPointerBlocks 0
注:
もう一つのオプションは、vmkfstools でその仮想ディスクのマッピング情報(ファイルオフセット、物理位置)を提供します。VMDK が zeroedthick か eagerzeroedthick を区別するには、'-t0' スイッチを使用しコマンドを実行します。
# vmkfstools -t0 "/vmfs/volumes/my volume/My VM/My VM_1.vmdk"
もし出力が以下のように 'Z' を含む領域が一部でもであれば、その VMDK は zeroedthick です。
Mapping for file /vmfs/volumes/4a033b51-########-####-##########ad/My VM/My VM_1.vmdk (25769803776 bytes in size):
[ 0: 205520896] --> [VMFS -- LVID:4a033b51-########-####-##########ad/4a033b51-########-####-##########ad/1:( 32108511232 --> 32314032128)]
[ 205520896: 3145728] --> [VMFS -- LVID:4a033b51-########-####-##########ad/4a033b51-########-####-##########ad/1:( 32104316928 --> 32107462656)]
[ 208666624: 3046113280] --> [VMFS -- LVID:4a033b51-########-####-##########ad/4a033b51-########-####-##########ad/1:( 32314032128 --> 35360145408)]
[ 3254779904: 3186622464] --> [VMFS Z- LVID:4a033b51-########-####-##########ad/4a033b51-########-####-##########ad/1:( 35360145408 --> 38546767872)]
[ 6441402368: 46137344] --> [VMFS -- LVID:4a033b51-########-####-##########ad/4a033b51-########-####-##########ad/1:( 38546767872 --> 38592905216)]
[ 6487539712: 2099249152] --> [VMFS Z- LVID:4a033b51-########-####-##########ad/4a033b51-########-####-##########ad/1:( 38592905216 --> 40692154368)]
[ 8586788864: 7997489152] --> [VMFS -- LVID:4a033b51-########-####-##########ad/4a033b51-########-####-##########ad/1:( 40692154368 --> 48689643520)]
[ 16584278016: 9177137152] --> [VMFS Z- LVID:4a033b51-########-####-##########ad/4a033b51-########-####-##########ad/1:( 48689643520 --> 57866780672)]
[ 25761415168: 1048576] --> [VMFS -- LVID:4a033b51-########-####-##########ad/4a033b51-########-####-##########ad/1:( 57866780672 --> 57867829248)]
[ 25762463744: 7340032] --> [VMFS Z- LVID:4a033b51-########-####-##########ad/4a033b51-########-####-##########ad/1:( 57867829248 --> 57875169280)]
注: 'Z' を含むブロックは、そのブロックに対しての初回書き込みがされておらず、ゼロクリアされていないということです。
もし出力が以下のようであれば、VMDK は eagerzeroedthick です。
Mapping for file My VM_2.vmdk (128849018880 bytes in size):
[ 0: 41252028416] --> [VMFS -- LVID:47f4f954-########-####-##########72/47f4f954-########-####-##########72/1:( 255303155712 --> 296555184128)]
[ 41252028416: 1048576] --> [VMFS -- LVID:47f4f954-########-####-##########72/47f4f954-########-####-##########72/1:( 296660041728 --> 296661090304)]
[ 41253076992: 59678654464] --> [VMFS -- LVID:47f4f954-########-####-##########72/47f4f954-########-####-##########72/1:( 524832276480 --> 584510930944)]
[ 100931731456: 459276288] --> [VMFS -- LVID:47f4f954-########-####-##########72/47f4f954-########-####-##########72/1:( 607191040 --> 1066467328)]
[ 101391007744: 614465536] --> [VMFS -- LVID:47f4f954-########-####-##########72/47f4f954-########-####-##########72/1:( 584510930944 --> 585125396480)]
[ 102005473280: 1048576000] --> [VMFS -- LVID:47f4f954-########-####-##########72/47f4f954-########-####-##########72/1:( 1066467328 --> 2115043328)]
[ 103054049280: 25165824] --> [VMFS -- LVID:47f4f954-########-####-##########72/47f4f954-########-####-##########72/1:( 585125396480 --> 585150562304)]
[ 103079215104: 1048576000] --> [VMFS -- LVID:47f4f954-########-####-##########72/47f4f954-########-####-##########72/1:( 2115043328 --> 3163619328)]
[ 104127791104: 25165824] --> [VMFS -- LVID:47f4f954-########-####-##########72/47f4f954-########-####-##########72/1:( 585150562304 --> 585175728128)]
[ 104152956928: 1048576000] --> [VMFS -- LVID:47f4f954-########-####-##########72/47f4f954-########-####-##########72/1:( 3163619328 --> 4212195328)]
[ 105201532928: 25165824] --> [VMFS -- LVID:47f4f954-########-####-##########72/47f4f954-########-####-##########72/1:( 585175728128 --> 585200893952)]
[ 105226698752: 1468006400] --> [VMFS -- LVID:47f4f954-########-####-##########72/47f4f954-########-####-##########72/1:( 4212195328 --> 5680201728)]
[ 106694705152: 143654912] --> [VMFS -- LVID:47f4f954-########-####-##########72/47f4f954-########-####-##########72/1:( 5746262016 --> 5889916928)]
[ 106838360064: 66060288] --> [VMFS -- LVID:47f4f954-########-####-##########72/47f4f954-########-####-##########72/1:( 5680201728 --> 5746262016)]
[ 106904420352: 21944598528] --> [VMFS -- LVID:47f4f954-########-####-##########72/47f4f954-########-####-##########72/1:( 5889916928 --> 27834515456)]
注: すべてのブロックがゼロクリアされているため、'Z' が表示されていません。
シンディスク(thin) もゼロクリアされていない可能性がありますが、'Z' で表示されません。これは書き込みがあるまで、ブロックが確保されないためです。確保されていないブロックは、NOMP (Unmapped)で表示され、シン (thin) ディスクであることがわかります。
# vmkfstools -t0 "My VM_3.vmdk"
Mapping for file My VM_3.vmdk (1073741824 bytes in size):
[ 0: 1073741824] --> [NOMP -- :( 0 --> 1073741824)]
vmkfstools -k (--eagerzero)
このコマンドは、既存のデータを維持しながら、zeroedthick を eagerzeroedthick に変換します。
注: このコマンド実施には、仮想マシンをパワーオフする必要があります。
# vmkfstools -k "My VM.vmdk"
VMware API を使っても、ディスクのフォーマットを区別することができます。
もし、thinProvisioned フラグがセットされていれば、それはシンディスクで、セットされていなければシックディスクです。また、eagerlyScrub フラグがセットされていれば、それは eagerzeroedthick です。
つまり lazyzeroed の場合は、eagerlyScrub (false), thinProvisioned(false) となります。
以下の PowerCLI の例を示します。
PS> Get-VM VM_NAME | Get-HardDisk | Select Filename,@{N="Thin Provisioned";E={$_.ExtensionData.Backing.thinProvisioned}},@{N="Eager Zeroed";E={$_.ExtensionData.Backing.eagerlyScrub}}
Filename Thin Provisioned Eager Zeroed
-------- ---------------- ------------
[DATA_STORE_NAME] VM_FOLDER_NAME/VM_NAME.vmdk False True ( EagerZeroed Thick )
[DATA_STORE_NAME] VM_FOLDER_NAME/VM_NAME_1.vmdk True False ( Thin Provisioned )
[DATA_STORE_NAME] VM_FOLDER_NAME/VM_NAME_2.vmdk False False ( Lazy Zeroed Thick )
注: もし仮想ディスクが上記の方法で、eagerzeroedthick と特定されていても、vSphere クライアントの仮想マシンの「設定の編集」でそれが反映されていない場合、変更を更新させるために、仮想マシン構成のリロードをする必要があります。詳細は、仮想マシンをインベントリから削除しないで .vmx ファイルをリロードする を参照してください。