技術動向――急速に進展するサーバの仮想化ネットワークの普及と高度化で新たな段階に突入「仮想化」システム・リソースの自動運用 第2部

サーバを仮想化し、複数台のサーバをまとめて仮想的な巨大なコンピューティング・リソース・プールを実現すれば、管理が容易になり、かつリソースの有効活用が可能になる。グリッド技術でも使われているこの考え方は、現在のサーバ仮想化の根本をなすアイデアである。

» 2005年02月04日 20時27分 公開
[Open Enterprise Magazine]
OPEN Enterprise magazine

 現在サーバの仮想化技術が注目されているのは、高速なネットワークやインターコネクトの普及、サーバの低価格化、プロセッサの性能向上が困難になりつつあることなど、さまざまな要因を背景にしている。ここでは、技術面での現状を概観しておこう。

サーバの仮想化の基本概念

 現在、ベンダー各社が精力的に取り組んでいるのがサーバの仮想化である。Part1でも紹介したとおり、コンピュータの発展の歴史は仮想化の進展の歴史と見ることができる。しかし、従来の仮想化技術では、サーバを中心として、サーバに組み込まれる各種のコンポーネントを仮想化する、という形で行なわれてきた。具体的には、SMPによるプロセッサの仮想化や、ストレージの仮想化などだ。これによって、サーバを単に「サーバ」という1つの論理的な実体と考え、取り扱うことが可能になり、実際にサーバを構成している個々のコンポーネントのレベルで詳細を把握する必要はなくなった。しかし、実はこのレベルの仮想化は、その洗練度には差があるものの、かつてメインフレームで実現されていた仮想化とほぼ同様の成果を、オープンシステム、つまりUNIX系OSやWindowsなどのPC用OSの上でも実現しようとした試みだといえる。

 メインフレームの時代は、単一の巨大サーバであるメインフレームの上でさまざまなタスクを実行していたため、問題の構成は遙かに単純だった。つまり、1つのサーバと複数のタスクの組み合わせ問題だったわけだ。しかし、オープンシステムの時代に入り、巨大で高価なメインフレームは、複数の安価なサーバマシンに分割された。一方、タスクは相変わらず複数存在するため、複数のサーバと複数のタスクの組み合わせ問題を解く必要が生じたのである。タスクごとに専用のサーバを割り当て、問題を「(1台のサーバに1つのタスク)×複数セット」というレベルに単純化できれば対応は容易だし、実際にそうした運用体制を取る例は少なからずある。しかし、この構成では、サーバの処理能力とタスク処理のための負荷にアンバランスが生じ、ほとんどの場合でサーバの処理能力が余り、使われないまま死蔵される結果になる。つまり、サーバの利用効率が極めて低くなってしまうのである。

 現在オープンシステムを中心に進展しつつある仮想化実現の取り組みは、結局のところ複数のサーバ上で複数のタスクを処理する際の効率を高め、かつ管理負担を軽減したい、という要求から生まれている。これはつまり、メインフレームを複数の安価で小型のサーバに分割する、という動きを完成に導き、複数台のサーバからなるシステムを巨大なメインフレームと同等の存在としたうえでメインフレームを置き換えよう、という発想のゴール地点なのである。

 ネットワークで接続された複数台のサーバが、全体で1つの巨大サーバ(コンピュータ・プール)に見えるようにするためには、いくつかの技術要素が必要となる。具体的には、各サーバの負荷状況を的確に把握するモニタ機能や、タスクの負荷を予測しつつ適切なサーバに投入するためのタスク・スケジューリング機能や全体の管理機能などだ。さらに、コンピュータ・プールにサーバを追加したり、逆に取り外したりするための機能も必要になるだろう。これらは通常、プロビジョニングと呼ばれている。現在、サーバの仮想化が急速に進展しつつあるのは、複数台のサーバ間でタスクを分散するスケジューリングやモニタ、そしてプロビジョニングの技術が完成しつつあることが背景にある。

仮想化のさまざまなレベル

 さて、ここでいったん話を戻し、サーバの仮想化の実現手法をレイヤ別に整理してみよう。

 Part1でも述べたとおり、コンピュータの基本的なハードウェア・コンポーネントは、OSによって仮想化されている。さらに、OSの違いによるコンピュータのインタフェースの違いは、現実にはミドルウェアによって仮想化されているといえるだろう。

 一方で、OS自体を仮想化しようとするアプローチもある。コンピュータ上に仮想マシンを構築し、その上でさまざまなOSを実行するものだ。VMwareがよく知られているが、仮想マシンによる実行環境という意味では、JavaもまたOSレベルでの仮想化の取り組みの一例といえるだろう。

 ミドルウェアを仮想化するための取り組みは、具体的にはちょっと思いつかないのだが、アプリケーション層での仮想化手法には、またさまざまなものが並列している。一例としてあげられるのが、シトリックス・システムズのMetaFrameである。これは、Windowsアプリケーションのユーザー・インタフェースをUNIX系OSなどに転送することで、Windowsアプリケーションを非Windows環境で実行するためによく使われている。プラットフォームを問わずにアプリケーションを実行でき、アプリケーション実行に必要なシステム・リソースもリモートに配置され、ローカルでのリソース消費がないという点で、MetaFrameはアプリケーション層以下を丸ごと仮想化してネットワークに展開した例だと考えることができるだろう。

 別の取り組みとしては、Webサービスをはじめとするアプリケーションのコンポーネント化の流れがある。こちらは、アプリケーション・コンポーネントをサービス化し、ネットワーク上に展開してリモートから呼び出し可能とするものだ。標準化されたインタフェースを介して呼び出される各アプリケーション・サービスは、それぞれ異なるシステム上で実行されるが、そのコードの実装や、稼働環境については呼び出し側では一切気にする必要はない。こうしたやり方も、アプリケーション層での仮想化の実現手法の1つと考えてよい。必ずしもサーバ全体を仮想化しなくても、必要に応じて各レイヤで実現されている仮想化手法をうまく組み合わせることで、管理コストの削減やハードウェア・リソースの有効活用など、さまざまなメリットを引き出すことが可能になる。

グリッド技術の進歩

記事の続きは、以下のPDFで読むことができます。


本特集は、ソキウス・ジャパン発刊の月刊誌「Open Enterprise Magazine」の掲載特集を一部抜粋で掲載したものです。次の画像リンク先のPDFで記事の続きを読むことができます。同特集は、2004年10月号に掲載された第2部です。

エンタープライズ マガジンの記事を読む(PDF)

サイズ 330Kバイト



Copyright (c) 2005 Socius Japan, Inc. All Right Reserved.

注目のテーマ