1台の上で複数のOSが動作する仮想マシン技術。このところ,この仮想マシンに関する話題が盛り上がっている。

 これまでにも「VMware」や「Virtual PC」などの仮想マシン・ソフトウエアがあったが,IntelのCPUに搭載される「Virtualization Technology」など,ハードウエア周辺にも仮想マシンに関連する製品技術が増えているからだ。

 仮想マシン技術は,複数のOSを1台で動作させることができるため,多数のサーバーを1台にまとめるサーバー集約に有効とされる。また1つの仮想OSに侵入されても他の仮想OSには被害がおよばないことから,セキュリティ対策としても期待されている。

 今回は現在の仮想マシンの状況を整理し,その可能性を探ってみる。

PCハードをソフトウエアでエミュレートする「VMware」や「Virtual PC」

図1●仮想マシン・ソフトウエア
ソフトウエアでパソコンのハードウエアをエミュレートする
図2●仮想マシン・モニタ
モニタが各OSに対してハードウエア・リソースの割り当てを行う
 現在最も一般的な仮想マシン・ソフトウエアは,PCなどのハードウエアをアプリケーションでソフトウエア的にエミュレートするものだ。ユーザーが利用している一般的なOSを「ホストOS」として基盤として,ホストOS上で動作するアプリケーションを使ってソフトウエアで仮想的なPCを実現して「ゲストOS」を動作させる(図1)などがこの方式だ。

 ホストOSであるWindows上で,ゲストOSとしてLinuxを動作させることも容易に行える。さらに使いこなせば,様々な環境をワンタッチで切り替えながら利用できるので,実験環境や実証環境などを1台のマシンで構築し実行することができる。筆者も執筆時の技術的な検証を行ったり,技術セミナーなどのデモ環境を構築する際に仮想マシン・ソフトウエアを活用している。

 反面,パフォーマンスの点では,特にグラフィック描画やディスクI/Oについては,リアルにハードウエアを使用する環境と比較すると半分から10分の1程度のパフォーマンスしか発揮できず,PCをソフトウエア的にエミュレートする仮想マシン・ソフトウエアの構造的な限界点に達しているように思われる。

CPUが仮想マシンをサポートする「Vandarpool」と「Pacifica」とマネジャ・ソフト「Xen」

 最近注目を浴びているのがハードウエアによる仮想マシン技術である。インテルの「Virtualization Technology」(コードネーム「Vandarpool Technology」)や,AMDのコードネーム「Pacifica」と呼ばれる技術だ。これらの技術の特徴は,CPU自体に仮想マシンをサポートする機能を備えていることだ。

 これらの機能を利用するには,ホストOSではなく仮想マシン・マネジャ(VMM)をまずハードウエア上で動作させる。そしてVMM上で使用したいOSを動作させる。OSのハードウエアに対するアクセスはすべてVMMを通して行うことになり,VMMは各OSに対してCPUやメモリーなどのハードウエア・リソースの割り当てを行うことになる(図2)。

 VMwareやVirtual PCなどの仮想マシン・ソフトウエアの弱点は,ハードウエアに対するアクセスをホストOS経由で行わなくてはいけない点にある。複数の仮想マシンを動作させる時の処理切り替えオーバーヘッドが高く,ハードウエアの性能に比べて十分な性能を引き出せないという問題が発生する。一方,CPUが仮想マシン対応になることで,レジスタの内容を高速に入れ替える命令が追加されるなど,オーバーヘッドになっていた処理をハードウエアで高速に実行できるようになる。

 ハードウエアの性能は飛躍的に向上している。CPUはマルチコア化やIntelの「ハイパースレッディング」技術などにより並列実効性能が大幅に高まっている。AMD64やEM64Tなどの64ビット化技術は扱えるメモリー容量を拡大させた。しかし,これらの高い性能も,ビデオエンコーディングなど一部の負荷の高い処理では有効だが,一般的に使用するオフィス製品やWebブラウザなどのツールでは真価を発揮できずにいる。ややもてあまし気味になりつつあったCPUのパワーを,複数のOSで余すところ無く利用するというのがハードウエアの仮想マシン対応の狙いというわけだ。

 この仕組みで重要な役割を果たすVMMとして現在注目されているのが,オープンソースで開発されている「Xen」だ。開発元のXenSource(http://www.xensource.com/)は次期バージョンの3.0(現バージョンは2.0)でインテルのVirtualization Technologyをサポートすることを表明している。XenはGPLでライセンスされていることもあり,VMMを必要とするハードウエアへの組み込みが期待されている。

 しかしXenにも難点はある。Xenが提供する仮想マシン環境はいわゆるIAアーキテクチャのPCではなく,Xen独自の仮想マシンだ。そのため使用できるOSはXenアーキテクチャ対応のカーネルが必要となり,現在のところ利用できるのはLinuxカーネル2.4や2.6にパッチを当てたものと,NetBSD/xenに限られている。Windowsは現在のところ動作しないので注意が必要だろう。ただしXenSourceの用意しているFAQを読む限り,将来的には(Xen 3.0かは不明)Windowsの動作もサポートするとしている。そう遠くない時期に,WindowsとLinuxを切り替えながら快適に利用できる時が来ることが期待できるだろう。

PCで汎用機的な運用が可能に

 このように高性能化が進む仮想マシン技術だが,実際にどのような利用方法が考えられるだろうか。

 現在のように,少ないマシン・リソースを有効活用して技術的な検証環境を構築する用途では,より効率的に作業が行えるようになるだろう。そこから一歩踏み込んで,現在複数台のマシンで動作させているシステムを,一台の高性能なマシンに集約していくことも期待されている。

 例えばWindows NTや2000,Linuxカーネル2.0などで動作しているシステムがあれば,動いている限りは新しい環境への移行はコスト的に難しい場合も多く,システムライフサイクルが尽きるまで使い続けることになる。もし,そのシステムのハードウエアがリース品だったとして,リース期間切れの時にリースを延長するかどうかはなかなか判断が難しい問題だろう。期間延長後のリース料金が減額されない場合,同じ金額で何倍も高性能な新しいマシンに乗り換えられるとしたらどうだろうか。そしてそのマシン上で仮想マシンを動かすことで,これまでのシステムと新しいシステムを並行で動作させられるとしたら。

 仮想マシンにはまだまだメリットがある。例えばWebサーバーとデータベース・サーバー,メール・サーバーなど様々なサービスを提供するサーバーを同一OS環境で動作させると,トラブル発生時の問題切り分けや,パフォーマンス不足の際のスケーラブルなシステム強化などが困難になる。それぞれのサービスが仮想マシン単位で独立していれば,障害部分の発見は容易になり,機能拡張の際にはハードウエアを追加して仮想マシン単位での移行が可能となる。

 また,セキュリティの問題が発生した場合にも,仮想マシンの壁が被害の拡大を防いでくれる可能性がある(サンドボックス的な活用方法)。このような仮想マシンの利用方法は汎用機では一般的だったようだが,今後PCサーバー・レベルでもこのような考え方でシステム構築をするのが当たり前となる時期が目の前に来ている。今後仮想マシン技術の動向には注意を払っておくべきだろう。

宮原 徹(Toru Miyahara)
■著者紹介

宮原 徹(みやはら・とおる)氏

株式会社びぎねっと 代表取締役社長/CEO。1994年~99年,日本オラクル株式会社でデータベース製品およびインターネット製品マーケティングに従事。特に,日本オラクルのWebサイト立ち上げ,および「Oracle 8 for Linux」のマーケティング活動にて活躍。2000年,株式会社デジタルデザイン東京支社支社長兼株式会社アクアリウムコンピューター代表取締役社長に就任。2001年,株式会社びぎねっとを設立し,現在に至る。1972年,神奈川県生まれ。中央大学法学部法律学科卒。Linuxやオープンソース・ソフトウエアのビジネス利用を目指したProject BLUEの設立をはじめ、様々なオープンソース・コミュニティの活動に従事している(宮原氏インタビュー「会社に閉じこもらず交流しよう」)。