サーバ仮想化技術を整理する--完全仮想化か、擬似仮想化か、それともOSレベルの仮想化か

 今日、「サーバの仮想化」は、企業にとってもはや必須の技術となったと言っても過言ではない。仮想化によって処理能力の増強を図れば、新しいハードウェアを購入する必要がない。それはすなわち、ハードウェア購入費という支出を抑えることであり、データセンターのスペースと電気代と冷却対策コストを節約するということでもある。物理的なサーバではなく仮想サーバを選ぶということは、企業に財務の健全性をもたらし、IT支出を抑制する効果があるということなのだ。本稿では、そういったメリットを持つ仮想化技術をアーキテクチャの面からあらためて整理してみたい。

ニール・マクアリスター
InfoWorld オンライン米国版

 仮想化の技術、仮想化というコンセプト自体は決して目新しいものではない。実際、すでに1970年代には、メインフレーム・コンピュータは複数の OSインスタンスを同時に実行していた。これが仮想化の走りということになる。その後、ソフトウェアとハードウェアが進化したとことにより、仮想化はさらに身近な技術となった。現在では、業界標準となっているような一般的なサーバでも仮想化を行うことがが可能である。

 今、市場には、プロプライエタリのものからオープンソースのものまで、データセンター・マネジャーが選ぶのに苦労するほどたくさんの仮想化ソリューションがあふれている。ここでは、それを仮想化に対するアプローチの方法(アーキテクチャ)によって「完全仮想化」「擬似仮想化」「OSレベルの仮想化」の3つに分類し、それぞれの技術的な特徴を紹介したい。

完全仮想化(フル・バーチャライゼーション)

 仮想化ソリューションの中で最も普及しているのが、「ハイパーバイザ」と呼ばれるアーキテクチャを使った「完全仮想化」だ。これは、仮想サーバとハードウェアとの間に抽象化レイヤ(仮想化レイヤを実装した専用カーネル)を配置するというアーキテクチャである。

 このアプローチを採用している商用製品としてはヴイエムウェアの「VMware」やマイクロソフトの「Microsoft Virtual PC」があり、Linux向けオープンソース製品としては「KVM(Kernel-based Virtual Machine)」がある。

 ハイパーバイザはCPU命令に割り込み、ハードウェア・コントローラと周辺機器へのアクセスを仲介する。事実上、どんなOSでも修正せずに仮想サーバ上にインストールすることができ、そのゲストOSは仮想環境であることを意識せずに稼働する。

 なお、このアーキテクチャの欠点は、ハイパーバイザによってプロセッサに大きなオーバーヘッドがかかることだ。

 完全仮想化環境におけるハイパーバイザは、ハードウェア上で直接稼働し、ホストOS(カーネル)として機能する(別な言い方をすれば、Windowsや Linuxといった一般のホストOSを必要としない)。そのハイパーバイザが管理する仮想サーバ上でゲストOSが走ることになるわけだ。

擬似仮想化(パラ・バーチャライゼーション)

 完全仮想化では、さまざまな仮想サーバを管理し、かつそれぞれを独立して稼働させているハイパーバイザからの要求がすべてプロセッサに集約されることになる(その際、ゲストOSは一切仮想化には関知しない)。

 この負担を軽減させるための手段の1つが、ゲストOSに手を加えて仮想化環境を認識させるようにしたうえで、ハイパーバイザと連携させることだ。これが、「擬似仮想化」と呼ばれるアプローチである。

 この擬似仮想化方式を採用している代表的な製品がオープンソースの「Xen」である。Xenでは、カーネル部分に変更を加えることによって初めてXenハイパーバイザの仮想サーバ上でゲストOSが稼働できるようになる。このため、BSD、Linux、SolarisといったオープンソースOSはサポートするが、修正を加えられないWindowsなどのプロプライエタリ・システムの仮想化には適していない。

 擬似仮想化の優位性は「パフォーマンス」にある。ハイパーバイザと連携する擬似仮想化サーバは、仮想化されていないサーバとほぼ互角の性能を発揮する。マイクロソフトとヴイエムウェアが、それぞれ自社製品を補完すべく擬似仮想化技術に取り組んでいる状況を見れば、それが十分に魅力的な技術であることが分かろうというものだ。

OSレベルの仮想化

 OSレベルの仮想化とは、文字どおりOS(ホストOS)の機能によって仮想化を実現するアーキテクチャである。ハイパーバイザ・レイヤは存在せず、ホストOSが自らハードウェア・リソースを分割したり各サーバを独立して走らせたりする。すべての仮想サーバが同一のOS上で稼働するという点が、ほかの仮想化技術との大きな違いだ(ただし、各インスタンスは固有のアプリケーションとユーザー・アカウントを保有する)。

 この技術を採用している製品としては、「Solaris Containers」やLinux対応の「Virtuozzo/OpenVZ」などがある。

 このアーキテクチャの欠点は「柔軟性」に欠けるところだが、その反面、「ネイティブ・スピードの向上が図れる」という利点もある。また、すべての仮想サーバに横断的に単一の標準OSが適用されるため、異種環境に比べて管理が容易になるという点も、メリットとして挙げられる。

CPUの仮想化対応

 メインフレームとは異なり、PCのハードウェアはもともと仮想化を考慮して設計されているわけではない。そのため、最近まで、負荷はすべてソフトウェアにかかっていたが、AMDとインテルが、最新世代プロセッサで初めてCPUレベルでの仮想化をサポートしたことにより、状況は大きく変わろうとしている。

 なお、両社のテクノロジーは似たようなメリットを有するが、残念なことにコードの互換性はない。

 いずれにしろ、ハードウェア・レベルの仮想化サポートによって、仮想サーバからI/Oチャネルやハードウェア・リソースへのアクセス管理はハードウェア側で行われるようになり、ハイパーバイザが担ってきた管理負荷はかなり軽減されることになった。また、OS(Windowsを含む)に手を加えずに、擬似仮想化環境で稼働させることもできるようになった。

 もっとも、CPUレベルの仮想化環境を実現するためには、仮想化ソフトウェアを書き直すといった手間が必要とされる。しかしながら、この技術がもらたすメリットは、その労苦を補って余りあるほど大きいため、いずれあらゆる種類の仮想化ソフトウェアがこの技術をサポートするようになるだろう。

それぞれの技術の比較

 ここまでに紹介してきた仮想化の手法のうちどれを採用するかは、それぞれの企業(データセンター)が置かれた状況によって異なることになろう。例えば、単一OSプラットフォームを基盤とするサーバ群の場合には、OSレベルの仮想化で統合する方法が適していると言える。

 一方、擬似仮想化の手法を採用すれば──特に仮想化に対応したプロセッサとの連携がなされた場合には──、高い性能を保ちながら、異種ゲストOSシステム環境を構築できるというメリットを享受することができる。

 また、完全仮想化は、3つの仮想化手法の中で性能面では最も劣るものの、ゲストOS間の完全な独立性を保つことができるというメリットを持つ。たくさんの(種類の)ゲストOSをサポートしたいとき、あるいはソフトウェアの品質保証やテストを行いたいときには、この手法が適していると言える。

 完全仮想化ソリューションには、そのほかにもさまざまな特徴がある。例えば、仮想サーバの特定時点での状態の情報を取得し、保存しておく「スナップショット」機能を利用すれば、さして手間をかけることなく障害復旧対策を実施できる。また、最近は、この機能を活用し、自社製品の評価版をプレパッケージ化した仮想サーバ・イメージとしてダウンロード提供しているようなソフトウェア企業も増えている。

 いずれにしろ、仮想化の技術/アーキテクチャを問わず、仮想サーバには物理サーバと同様の、継続的なサポートとメンテナンスが必要である。すでに、従来のIT環境から効率的でコスト効果に優れた仮想化環境への移行を簡単に行うためのツールをはじめ、さまざまな仮想サーバ向け管理製品が市場に投入されているので、それらを活用しながらよりよい仮想化環境の実現を目指していただきたい。

1
表:主要仮想化プラットフォーム一覧

提供:Computerworld.jp