ESXiでThinディスクをシュリンクする
ESXiで、Thinディスクを作成して仮想マシンにマウントした場合、
ファイルを作成するに従ってVMDKのサイズが増えていきますが、
ファイルを削除しても、VMDKのサイズは減りません。
VMDKファイルのサイズを小さくすることをシュリンク(shrink)と呼ぶこともあります.
ESXの場合、基本的には、以下の2つの処理をおこなうことでシュリンクすることができます。
・SDeleteで仮想ディスク内の過去使用したことがあるが、現在未使用領域のNullクリア
SDelete -z ドライブ文字
・仮想マシンを停止して、vmkfstoolでNullブロックを削除する
vmkfstools -K /path/to/disk-name.vmdk
注意点としては
・Nullクリアする段階でThinディスクは事実上Thickディスクになります。
つまり、Nullクリア完了時点でVMDKサイズに割り当てした最大容量にまでおおきくなるので、その分の空き容量がデータストア上に必要です。
・スナップショットやリンククローンを使用している場合は、シュリンクできません。
ESX3.5の頃は、Nullクリアした上でThinでStorage vMotionすればシュリンクされたような気がするけど、
ESX4.0以降では、同じブロック間のデータストア間のStorage vMotionだとNullは回収されない模様。別のブロックサイズであれば、回収されるようです。
SDelete & vmkfstoolsの場合は、仮想マシンを停止しなければいけないで、どうしても仮想マシンON状態でやりたい場合は、SDelete & Storage vMotion(別ブロック長間 or FC,iSCSI,DAS<->NFS で移動)もひとつの手かと。
(今回の参考)
ESXi/ESX によってホストされた仮想マシン上の VMware Tools 圧縮オプション (2094653)
http://kb.vmware.com/selfservice/search.do?cmd=displayKC&docType=kc&docTypeID=DT_KB_1_1&externalId=2094653
Storage vMotion でシン ディスクを移行したとき null ブロックが回収されない (2092768)
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2092768