肥えた仮想ディスクが物理ディスクを超えちゃう!?
師走は大掃除の季節。先日、CD や DVD メディアを整理していたら、Virtual Server 2005 R2 Enterprise Edition のインストール CD が出てきました。2006 年 4 月に無償化される、ほんの数か月前にとある案件向けに購入した、いや購入してしまった貴重品です。標準価格は 4 万 5,800 円。数か月後には 0 円。当時、この Virtual Sever 環境で Red Hat Linux を運用していました。そういえば当時、原因不明の仮想ハードディスクのサイズの巨大化に悩んだ経験があります。
そのときの仮想ハードディスクのサイズの増大は、確か、とあるセキュリティ ソフトが、スケジュール スキャンの実行時に /var/tmp の下に大量の一時ファイルを作成していたことが原因だったと記憶しています。ソフトウェアが空き領域を積極的に活用するのは、物理環境ならさほど問題にはなりません (使い果たしてしまうのではない限り)。しかし、それが容量可変タイプの仮想ハードディスクを割り当てた仮想マシンだと、ちょっと待ってよ!ってことになります。
そのときは、容量可変タイプを利用してはいましたが、必要なハードディスク サイズを見積もって適切な割り当てをしていたので大事には至りませんでした。もし、物理ハードディスクの空き領域を超えるサイズを割り当ててしまっていたら、物理ハードディスクを使い果たしてしまうところでした。
容量可変タイプの仮想ハードディスクが、物理ディスクの空き領域の不足でそれ以上拡張できないという場合、どうなるのかというと、Hyper-V の場合は仮想マシンが一時停止します。VHD ブートの場合はブルースクリーンです。テストや評価環境だと、実際に空き領域が少なくなるまで、気が付かないことがあるので注意しましょう。
もちろん、運用環境ならこんなことが発生しないように事前に対処しておくべきです。仮想環境だと、物理的な実際のリソース量を超えた割り当てを簡単にできてしまいますが、だからと言って、無計画に割り当てると痛い目に遭います。
また、仮想ハードディスク以外に作成されるファイルにも注意してください。例えば、Hyper-V の場合、仮想マシンの格納先に割り当てメモリと同サイズの .bin ファイルが作成されます。Dynamic Memory を有効にした場合 .bin ファイルのサイズも増減します!! 空き領域がなくなるとどうなるか知りたい方は、過去にやってみたことがあるのでこちらをどうぞ。
山市良のえぬなんとかわーるど: Dynamic Memory のメモリ割り当てには空き領域も必要
Hyper-V もVirtual PC も、既定は 127 GB の容量可変タイプの仮想ハードディスクを作成します。一般的なインスタンスには大きすぎるかもしれません。作成時に適切なサイズを割り当てる、あるいはインストール時にパーティションを区切る (あとで足りなくなったら未割り当て領域に拡張できるのでお奨め) など、事前に対処しておくとよいでしょう。
VMware や Oracle VM VirtualBox の場合は、ゲスト OS にあわせて推奨サイズを提案してくれますので、無駄に割り当てることはないと思います。
容量可変タイプの仮想ハードディスクはリソースを効率利用できて便利ですが、原因不明の突然の肥大化というリスクがありますし、たくさんの仮想ハードディスクが少しずつ成長していって、それを全部足すと空き領域が急激に少なくなっていくということもあります。将来、ピンチな状況に陥らないためにも、運用環境には容量固定タイプを選択するのが、やっぱり正解ですね。サイズだけでなく、断片化による I/O パフォーマンスの低下とかもありますし。