前回までで、「プライベートクラウドとは何か」ということを説明しました。プライベートクラウドを構築するには、さまざまな技術が必要になります。その代表はサーバー仮想化技術です。プライベートクラウドを構築するという視点から、サーバー仮想化技術の基本を説明します。

サーバー仮想化の基本

 一般的な仮想化の定義は、「CPU、メモリー、ディスク、ネットワークなどを物理的な構成に依存することなく柔軟に分割して利用したり、統合して利用したりすること」です。仮想技術を利用することで、ITインフラストラクチャーを物理的な視点ではなく、論理的な視点からとらえることができます。これにより、システムを業務単位で考えなくてもよくなります。

 仮想化の歴史は1960年代の後半から始まりました。システム資源の中で、最も重要で高価だったメモリーの仮想化がその始まりです。プログラムの実行にはメモリーが必要です。しかし、メモリーデバイスは高価でシステム全体で最も限られた資源でした。

 メモリーへのアクセスを仮想化し、メモリーとディスクの間で自動的にデータをやり取りさせます。頻繁なアクセスのあるデータをメモリー上に、そうではないものをディスク上に配置し、ディスク上のデータへのアクセスがあったときにはディスクからデータをメモリーに復元します。

 このように仮想的にメモリー空間を広げ、大きなプログラムを実行する環境を提供しました。これによって、実メモリー領域の大きさにとらわれない大きなプログラムを実行できるようになりました。

 仮想化技術を利用していない場合、オペレーティングシステムがハードウエアと直接のインタフェースを持ち、ハードウエアを駆動しています。オペレーティングシステムにはデバイスドライバなどのハードウエアに依存した部分が存在し、ハードウエアの差異を吸収しています。

 仮想化技術を利用した場合、ハードウエアとオペレーティングシステムの間に仮想化ソフトウエアが存在します。仮想化ソフトウエアは、ハードウエアが提供しているインタフェースと全く同じインタフェースをエミュレートします。

 仮想化ソフトウエアは、オペレーティングシステムとハードウエアのインタフェースを横取りし、そのハードウエアと同じインタフェースを個別のオペレーティングシステムに提供しています。

 オペレーティングシステムから見ると、仮想化ソフトウエアはハードウエアに見えます。仮想化ソフトウエアから見ると、オペレーティングシステムは一種のアプリケーションと見なすことができます。

 こうすることで仮想化システムは、一つのハードウエア上に複数のゲストOSを搭載することが可能になり、資源の有効活用を図ることができます。ゲストOSから見たとき、ハードウエアに依存した部分はすべて仮想化ソフトウエアが提供しているソフトウエアのインタフェースになります。ハードウエアの違いはオペレーティングシステムには影響せず、単に仮想化ソフトウエアが提供している標準化されたインタフェースを守っていればよいことになります。

 仮想化技術は良いことばかりではありません。ここまで解説してきたように、仮想化技術は一つのエミュレーション環境であるといえます。エミュレーション環境における最大のネックはオーバーヘッドです。オーバーヘッドの影響は、システムの構成によって異なります。

 同一のハードウエアアーキテクチャーをエミュレーションする環境でのオーバーヘッドはあまり大きくありません。インテルのプロセッサー上でインテルプロセッサーをエミュレーションする場合は、命令の変換が行われないので極めて小さなオーバーヘッドで済みます。しかし、異なるハードウエアのエミュレーションを行う場合には大きなオーバーヘッドを覚悟しなくてはなりません。

 もう一つの留意点は、信頼性です。仮想化システムの上ではオペレーティングシステムはハードウエアに依存しないで動作しています。ハードウェアのささいな障害はサービスの停止につながりません。しかし、システム全体にかかわる障害が発生した場合、すべてのシステムが同時に停止してしまい、全面障害に陥る危険性があります。こうした特性を十分理解しておく必要があります。