ITよろづや

ITの参考になる情報を備忘録代わりに残していきます

VMwareで仮想マシンがシンプロビジョニングの場合、割り当てられたブロックデータは自動で解除されない

VMwareでサーバー仮想化基盤をこれまで構築してきましたが、長期間、運用していた経験がないので、知らないこともまだまだあります。


その一つが、VMware仮想マシンがシンプロビジョニングの場合、割り当てられたブロックデータは自動で解除されないという事実です。


一般的にストレージのデータ領域を効率よく使いたい場合は、ディスクタイプをシンプロビジョニングにすることがあると思います。


そこで、ファイルサーバーを構築した場合、ユーザーは当然、データの追加、削除を繰り返します。シンプロビジョニングの場合、OS上の削除された領域は自動的に解除されないのです。


公式サイトの情報はこちら。

仮想マシンでのシン プロビジョニング ディスクの使用 (2078567)

https://kb.vmware.com/s/article/2078567


シン プロビジョニング ディスクについての抜粋です。

 

仮想ディスク ファイルの作成時に、VMware ESXi/ESX はデフォルトでシック タイプの仮想ディスクを使用します。シック ディスクでは、ディスクの作成時に指定されたすべての領域が事前に割り当てられます。たとえば、10 MB のディスクを作成した場合、10 MB すべてがその仮想ディスクに事前に割り当てられます。

一方、シン仮想ディスクでは領域のすべてが事前に割り当てられることはありません。VMDK ファイル内のブロックは割り当てられず、通常の操作中に書き込まれるまで物理ストレージでバッキングされます。未割り当てのブロックへの読み取りではゼロが返されますが、ブロックは書き込まれるまで物理ストレージでバッキングされません。

 

シンプロビジョニングを利用するメリットは、ここですね。そして、知らなかった仕様がこちら。

シン プロビジョニング ディスクは、仮想ディスクの作成時に指定したフル サイズに拡大できますが、縮小はできません。ブロックは一度割り当てられると、割り当てを解除することはできません。


実際、大容量データを作成して、削除してもvCenter、ESXi上からは削除されず、データがドンドン肥大化していきました。


ちなみにOS上でゼロクリアにすると、使っていない領域をきれいにできるようです。この手順については別途紹介しますが、この仕様は初めて知りました。


この場合、使っていないデータ領域が自動で削除されないので、運用中に問題になることがあります。特に大きなデータをやりとりしている場合は、注意が必要ですね。しかし、これは常に手動で対応しなければならないんですかね。もう少し調べてみることにします。


例えば、VMware製品のLogInsightなんかもデーター容量が大きいですから、追加、古い物から削除というのを繰り返していたら、ディスク容量がドンドン肥大化していきますしね。