オープンソースの仮想化ソフトとして最も注目されている「Xen」の仕組みと使い方を説明します。第1回は,そもそもなぜ仮想化が必要なのか,仮想化技術とはどのようなものなのか,Xen以外にどのような仮想化ソフトが利用されているのかについて解説します。

 「仮想化」というキーワードが大きな注目を集めています。増え続けるコンピュータ・リソースをうまく整理し,さまざまなITコストの削減に役立つと期待されているからです。

 本連載では,数ある仮想化ソフトの中でも特に注目されている,オープンソースの仮想化ソフト「Xen」について紹介します。

コンピュータの動く仕組み

 Xenの話に入る前に,なぜ仮想化ソフトが必要なのか,そもそも仮想化ソフトとは何なのか,というところから説明しましょう。

 仮想化ソフトは,複数のOS(オペレーティング・システム)を1台のコンピュータ上で同時に動作させるために使います。仮想化ソフトを理解するために,コンピュータ*1の仕組みを簡単に振り返りましょう。

 コンピュータはCPUやメイン・メモリー,ハード・ディスクといったハードウエアと,それらを動作させるためのソフトウエア(プログラム)で成り立っています(図1)。CPUはまず,OSと呼ばれる基本ソフトウエアを用いて,ハード・ディスクからメイン・メモリー上にアプリケーション・プログラムやデータを展開します。続いてCPUは,これらを読み出して演算処理を行います。そして実行結果となるメモリー上のデータを,必要に応じてハード・ディスクに保存します。

図1●コンピュータの構成要素
図1●コンピュータの構成要素

 ハードウエアを構成する部品は多種多様です。さまざまな主要部品がある上に,同じ分野の部品にも数多くの種類があります。例えば,ハード・ディスクのような一見単機能な機器であっても,種類によって構造が異なります。そのため,ハード・ディスクの種類に応じて処理内容が違ってきます。しかし,アプリケーションが個別に対応するのではあまりにも効率が悪くなります。

OSはハードとアプリの仲介役

 そこでアプリケーションはハードウエアを直接制御せず,制御をOSに委ねます。OSは,アプリケーションからの要求に応じてハードウエアを制御します。OSがアプリケーションとハードウエアの仲介役となるわけです。

 このようにしておけば,あるOS上で動作するアプリケーションは,たとえハードウエアが変わったとしても問題ありません。OSが新しいハードウエアに対応していれば,アプリケーションには影響が及ばないからです。

 ここで複数のOSを1つのハードウエア上で動作させることを考えてみましょう。これまでみてきたようにOSはハードウエアを一元的に制御するソフトウエアです。1台のパソコン上にOSが複数存在すると,ハードウエアを制御するための命令が“衝突”する恐れがあります。

 例えばメモリーやハード・ディスクの同じ領域に異なる2つのデータが同時に書き込まれると,どちらかのデータは失われてしまいます。これを防ぐため,x86アーキテクチャを採るパソコンでは,「1台のパソコン上で1つのOSが動作する」前提で設計されています。