これは予期される動作です。
この問題を回避するには、Storage vMotion を使用して、仮想マシンまたは VMDK をブロック サイズの異なるデータストアに移行します。これにより、ゼロ クリアされたディスク領域が回収されます。
シン プロビジョニング ディスク (VMDK) を圧縮するには、次の手順を実行します。
- ゲスト OS 内のサードパーティ製ツールを使用して、以前データが書き込まれたものの、その後、削除された可能性があるディスク ブロックをゼロ クリアします。
- Storage vMotion を使用して、仮想マシンまたは VMDK を、異なるブロック サイズでフォーマットされたデータストアに移行します。
たとえば、VMDK が 2 MB のブロックでフォーマットされたデータストア上に存在する場合は、ターゲット VMFS データストアを、1 MB、4 MB、または 8 MB のブロック サイズでフォーマットします。
ESXi/ESX 4.1 以降で、仮想ディスクの未使用領域を回収するには、次の手順を実行します。
注:vmkfstools の -K オプション (--punchzero) がサポートされている環境では、ブロック サイズが異なる別の VMFS データストアにクローン作成することなく、シン プロビジョニング仮想ディスクのゼロ クリアされたブロックを回収することができます。
- ディスクにスナップショットが作成されていないことを確認します。
- Windows 仮想マシンで、
SDelete
コマンド(または同様の機能を持つツール)を使用して、すべての未使用領域をゼロ クリアします。SDelete コマンドの構文は、SDelete -z ドライブ文字 です。SDelete
を使用する場合は、必ずバージョン 1.6 以降を使用してください。
注:未使用ブロックをすべてゼロ クリアすると、ディスクがフル サイズまで膨張し、eagerzeroed ディスクに変換されます。元のディスクがシン プロビジョニング ディスクの場合は、ディスクがフル サイズにまで拡張してもよいように十分な領域がデータストア上に存在することを確認してください。詳細については、「Determining if a VMDK is zeroedthick or eagerzeroedthick (1011170)」を参照してください。
- 仮想マシンをシャットダウンするか、一時的に仮想マシンから仮想ディスクを削除して、仮想ディスクを確実に未使用の状態にします。
- 次のコマンドを実行して、すべての未使用ブロックを消去します。
vmkfstools -K /path/to/disk-name.vmdk
注:punchzero (vmkfstools -K) コマンドは、NFS ベースの VMFS データストアには対応していません。
このオプションを指定すると、ゼロ クリアされたすべてのブロックの割り当てが解除され、以前に割り当てられた、有効なデータが格納されているブロックのみが残されます。結果として生成される仮想ディスクはシン フォーマットになります。vmkfstools
コマンドの詳細については、『ESX Configuration Guide』の「ゼロ クリアされたブロックの削除」を参照してください。