異国見聞私書録

異国から見たこと感じたこと気になったこと。そして時折テクノロジーのお話。

VMwareにおけるイメージファイル肥大化への対処法

 先日VMwareへYosemiteを仮想OS (VM)としてインストールし、パフォーマンスを向上させる方法を記載した。だが、日々VMを使っているうちに、その容量が肥大化していくることはよくあることであり、ディスクスペースを容赦なく圧迫してくる。今回はその対処法を紹介したい。

 

 VMware PlayerのGUI上に付いている「Compact Disk」機能で、本来はVMの未使用領域を開放するはずであるが、筆者の環境ではうまくいかなかった。そこで調べたところ、VM上でまず未使用領域をnullクリアしないことには、VMの未使用領域の開放はされないことがわかった。Windows系のOSでもこれを行わなくてはならないのかどうかは不明であるが、少なくともMac OS X系では必須な作業であるようだ。

この記事の中でクリアする方法が紹介されている。以下のコマンドを仮想OS (VM)上でまず実行する。(実行する前提として、万一の場合に備えて、まずVMのイメージファイルをバックアップしておくこと)

ターミナルより、以下を実行。

cat /dev/zero > wipefile; rm wipefile

VMの大きさにもよるが、それなりの処理時間がかかることは心しておこう。外付け仮想ディスクを使用し、それも収縮させたい場合にはそのディスクに移動して上記コマンドを発行する。

 

 次にVMをシャットダウンし、ホストOS上で以下のコマンドを実行する。

vmware-vdiskmanager -k "/<VM IMAGE FILE PATH>/<VM IMAGE FILE>.vmdk"

 vmware-vdiskmanagerに「-k」オプションをつけることで、イメージファイルの収縮(shrink)を行う。これもファイルサイズによっては、それなりの時間がかかるのでコーヒーでも飲みながら気長に待とう。

 筆者の環境では72GBあったイメージファイルが上記処理により、16GBまで収縮した。ディスクスペースをかなり節約できたことは言うまでもない。

 

 注意しなければならないのは、イメージファイルが肥大化し過ぎると、作業をするためのディスクスペースまでもが確保できなくなることである。結局のところ、vmware-vdiskmanagerの行っている処理は、元ファイルを残しながら、収縮したイメージファイルを別途作成し、作業が終わったら元ファイルを削除している。筆者の環境の例では72GB + 16GBを確保できるスペースは一時的にしろ最低限必要だということだ。どれだけ収縮できるかの参考値は、VM上でまず未使用領域をnullクリアを行った後、VM上で「df -h」のコマンド結果である程度の目安を得ることができる。ただ、目安よりも多めに作業ディスクスペースを確保できるようにしておいたほうがよい。要はイメージファイルが肥大化する前に、早めに未使用領域の開放とイメージファイルの収縮は行っておいたほうが、身のためなのである。

 

 VMを使いこなせるようになれば、ほとんどの作業が1台のPCで済ませるようになり、OS間の垣根なく多くのアプリケーションが使えるようになる。とても便利なツールなので、多くの人にぜひとも挑戦してみてもらいたい。