OpenVZについて

仮想化技術が話題になっていますが、最近OpenVZに触れる機会が多いです。日本語の情報はまだまだ少ないので、ちょっとずつ情報提供していこうと思います。


まず、仮想化技術のなかでOpenVZの位置がどの辺にあるかですが、VZのサイトでは、仮想化技術はVirtual machinesParavirtualizationVirtualization on the OS levelの三つに大きく分けられると説明しています。

OpenVZ wiki
http://wiki.openvz.org/Features


要約すると、


Virtual machines (VMs)
仮想マシンと呼ばれるものです。ハードウェアを丸ごとをエミュレートしています。長所は、ゲストOSが仮想環境であることを意識しないので、変更なしにそのまま移植することができます。短所は、VMM(仮想マシンモニタ)がCPUの特権命令を監視するので、オーバーヘッドが大きいことです。
VmwareParallels、Virtual Serverがこれにカテゴライズされます。


Paravirtualization
今話題のXenなどがこのパラバーチャリゼーションという技術を使っています。VMMを必要としますが、特権命令を不必要に使用しないので、仮想マシンと比較するとオーバヘッドが小さくなります。ゲストOSは自分が仮想環境であることを意識するので、Xenのゲスト用のカーネルをOSごとに用意するなどゲスト側でも対応する必要があります。
XenのほかにはUMLなどがカテゴライズされるようです。


Virtualization on the OS level
OSレベルの仮想化が前の二つと異なるのは、異なる種類のOSを動作させることができない点です。ひとつのハードウェアに同じ種類のOSをインストールして、複数のアプリケーションが動作するような独立性とセキュリティを付加することで仮想化を実現しています。なお、ディストリビューションは異なる種類ものを動作させることができます。
OpenVZのほかに、Linux-Vserver、Solaris Zoneがカテゴライズされます。


OSレベルの仮想化の長所はパフォーマンスがよいことです。例えばOpenVZですと、オーバーヘッドは1-3%程度だそうです。仮想マシン・パラバーチャリゼーションはIntelのVTで話題になっているわけですが、未だI/Oの点ではオーバーヘッドが大きいようです(これを解決するための専用のチップを開発しているそうです)。