ESXでVMwareのVMDKをダイエットする

投稿者: | 11月 6, 2023

健康診断行ってきました。はい。メタボデブでした。生まれたときからデブなのでしゃーない。おまけにもっとやばい病気が見つかり、まぁ、年金がもらえるまでは生きられないかも。年金は税金かもという日々。しょげているわけではなく、例えば、今後、年金の支給開始年齢が80歳とかになったら、80歳まで生きられる体を若いうちに持っておく、つまり健康に対して投資をしなきゃならない。さらに支給開始年齢が100歳になったら。。。まぁ、健康だろうと不健康だろうと、年金をもらうハードルは日々高くなっていく。健康にこしたことはないが。

閑話休題

VMDKファイルは肥大する。VMware Workstationだとシュリンクするオプションがあるので、簡単にシュリンクができるので、肥大しても安心。逆にESXにはオプションがない。肥大しっぱなし。今日は、肥大したVMDKのサイズを小さくする話。

OS側での不要なファイルの削除
まず、OS側で不要なファイルを削除しておくことは言うまでもない。Linuxならapt cleanとかはやっておく。Windowsだとそうはいかないので、注意が必要。
Windowsのファイルクリーンナップ以外に以下のコマンドでOSのファイルが空く。ただし、過去のWindows Updateの情報もなくなってしまうかもしれない。

dism /online /Cleanup-Image /StartComponentCleanup /ResetBase

結構時間がかかるので注意。

 

OS側でファイルを削除してファイルシステムの空きを作っても、ディスクではまだ容量が消費されている。ゼロフィルが必要。

 

ゼロフィル

ボリュームの空き領域を「0」で埋める作業が必要。空き容量全てに0を入れて、0で埋められたファイルをOSのコマンドで削除すると、実利用データと0が書かれているデータがの実体が残る。

Linuxの場合

/をゼロフィルする例

dd if=/dev/zero of=./zerofile bs=4k; rm -f ./zerofile

Windowsの場合

SDeleteが必要 https://learn.microsoft.com/ja-jp/sysinternals/downloads/sdelete

Cドライブをゼロフィルする例

sdelete64 -z c:

これで、OS側の処理は済んだ。次は、ESX側

 

ESX側でシュリンク

ESX側では、まず、Thin Provisoningが利用できるデータストアを用意する。仮想マシンをThin Provisoningができるデータストアに移行する。ただし、vMotionだけではVMDKは小さくならない。ESXのコンソールで以下を実行する。VM自体は必ず電源をオフにしておく。

SSHでESXにログインをしてカレントディレクトリを仮想マシンのフォルダにする。

vmkfstools --punchzero XXXXX.vmdk

これでVMDKファイルが小さくなる。特にVMをエクスポートをしたときにファイルサイズがすごく小さくなる。VMのクローンなどもファイルサイズが小さいためかなり高速になる。

 

殴り書きで書いたがお役にたてば。。。

コメントを残す