今回は、サーバの仮想化をひも解いて解説しようと思う。昨今の仮想化ブームの火付け役は、このサーバの仮想化技術の普及だろう。サーバの仮想化と一口に言っても、実はさまざまなものがある。サーバの仮想化を大きく分けると、その種類は以下の3つ分類できる。
その1:ファームウェアで仮想化
最初は、ファームウェアで実現するサーバの仮想化だ。ファームウェアとは、工場から出荷されたハードウェアの状態のことだ。つまり、ハードウェアそのものに仮想化のためのリソースを分割、合体する機能が搭載されていることになる。この技術は、さかのぼればメインフレームにまでたどり着く。メインフレームの仮想化技術については説明を割愛するが、メインフレーム以外にもファームウェアでサーバの仮想化を実現できるのは、主にハイエンドクラスのUNIXサーバなどだ。
一部のハイエンドのUNIXサーバ、特にCPUをたくさん搭載したSMP(Symmetric Multi-Processing:対称型マルチプロセッシング)形式のマシンなどで、ファームウェアレベルでのサーバ仮想化が実現できる。これらのマシンでは、ファームウェアによって1つの筐体内にあるCPUやメモリなどのハードウェアリソースを物理的に分割できる。そして、それらをあたかも個別のマシンのように見せかける設定が可能だ。
例えば、Hewlett-Packardの「HP Integrity」サーバシリーズやIBMの「System p」シリーズ、Sun Microsystemsの「E20K/25K」といったサーバでは、パーティションあるいはドメインなどと呼ばれる単位ごとに、搭載されているハードウェアリソースを分割できる。分割したそれぞれのパーティションに別々のOSを導入し、1台で複数のOS環境を動かすことができるのだ。
この方法によるサーバ仮想化の利点は、ファームウェアレベルで仮想化を実現しているため、仮想マシンを実現する仮想化ソフトウェアの負荷が存在せず、ハードウェアの持つ性能を引き出しやすいことにある。さらに、個々の仮想マシンが物理的に独立しているので、仮にCPUやメモリに何らかのハードウェア障害が発生しても、当該の仮想マシンだけが影響を受け、他の仮想マシンはそのまま稼働し続けられるというメリットもある。
逆にデメリットとしては、各ハードウェアベンダー独自の手法で仮想化を実現していることにある。そのため、当然ながらベンダー間で互換性がないのはもちろん、仮想マシンで動くOSにもベンダー独自の制限がある。
その2:ホストOSの上で仮想化ソフトウェアを動かす
次の仮想化サーバの実現方法は、通常のOSの上で仮想化ソフトウェアを実行して仮想マシンとし、その仮想マシン上でさらに別のOSを稼働させるというもの。もともと動いているOSをホストOS、その上の仮想マシンで稼働するOSをゲストOSと呼んで区別する。
この方法では、通常のアプリケーションがOS上で動くのと同様、ホストOSの上で動く1つのアプリケーションとして仮想化ソフトウェアが稼働する。ホストOSにとっては、仮想マシンも仮想化ソフトウェアも単なるファイルに過ぎず、削除したりコピーしてバックアップをとったりといった作業は、他のアプリケーションと同じだ。
これは最も簡単にサーバの仮想化を体験できる方法だ。Microsoftの「Virtual Server 2005 R2」やVMwareの「VMware Player」、「VMware Server」など、無償で提供されている仮想化ソフトウェアもあるので、コストをかけずすぐに試すことができる。
この方法は扱いは簡単だが、ゲストOSとハードウェアとの間に仮想化ソフトウェアとホストOSという2つのソフトウェア層が入るため、どうしてもこの部分が性能のボトルネックとなる可能性がある。また、当然ながら負荷の大きなアプリケーションが一緒に稼働している場合には、ゲストOSのリソースが十分に確保できないかもしれない。