IT 業界というのはバズワードをやたら使ったり自分たちを表現する言葉をむやみに変えたりするところです。この業界が使う最新の用語はx86のような特定のテクノロジだったりグリーンコンピューティングのようなコンセプトだったりします。言葉はこの業界が進むにつれて生まれては消えていきます。ここ数年では、仮想化という言葉がIT業界の最新のバズワードになっています。ここでこんな疑問が浮かびます。仮想化とはそもそも何なのでしょうか?この業界の普通のプロなら、ひとつのホスト上でひとつあるいは複数のゲストOSを動かすこと、というのをまず思い浮かべます。しかしもう少しよく考えてみると、これは狭すぎる定義であることが明らかになります。仮想化されるものには多くのサービスやハードウェアやソフトウェアがあるのです。このArticleではそれぞれの利点と欠点を見ながらこれらの仮想化の違いについて詳しく追っていきます。
仮想化とは?
仮想化のカテゴリによる違いを詳しく論じる前に、まずこの言葉を概要的に定義しましょう。Wikipedia(英語版)では次のような定義が使われています。「コンピューティングにおいて、仮想化はコンピュータリソースの抽象化を指す広義の言葉である。仮想化によりコンピューティングリソースの物理的な性質はアプリケーションやエンドユーザといった利用者から隠蔽される。これには単一の物理リソース(サーバやOSやストレージ機器など)が仮想的に複数のリソースとして機能することや、複数の物理リソース(複数のストレージ機器やサーバなど)が仮想的に単一のリソースとして機能することが含まれる。・・・」
平たくいえば仮想化とは大体次のことです。
- ひとつの物理リソースから多くの仮想的なリソースを作ること
- ひとつあるいは複数の物理リソースからひとつの仮想的なリソースを作ること
ネットワーク、ストレージ、ハードウェアなどさまざまな所において、このどちらかの概念を表すのに仮想化という言葉がよく使われます。
歴史
仮想化という概念は新しいものではありません。この分野での初期の業績(リンク)のひとつにChristopher Strachey氏の「Time Sharing in Large Fast Computers(大規模高速コンピュータの時間共有)」というタイトルの論文があります。そしてIBMが実験システムのCP-40とM44/44X(リンク)で仮想化に取り組み始めました。これらは商用システムのCP-67/CMSへとつながりました。別々のユーザへスタンドアローンコンピュータをシミュレートして提供するというのがこの時代の仮想マシンの考え方でした。
80年代から90年代初めになって、世の中が単一のメインフレームを利用することから小さく安価なx86サーバの集まりを動かす方へ変わりました。その結果、仮想化の考え方はあまり注目を浴びなくなりました。この状況を変えたのが1999年のVMware社(リンク)によるVMWare Workstationの発表でした。この後、VMwareのESX Serverではハードウェア上で動かせるようになり、ホストOSは必要なくなりました。
仮想化の種類
今日では仮想化という言葉は次のような数多くの概念において広く用いられています。
- サーバ仮想化
- クライアント / デスクトップ / アプリケーション仮想化
- ネットワーク仮想化
- ストレージ仮想化
- サービス / アプリケーションインフラ仮想化
これらのほとんどの場合で、単一の物理リソースを複数の仮想リソースに仮想化するか、複数の物理リソースを単一の仮想リソースに仮想化するかのどちらかが行われます。
サーバ仮想化
サーバ仮想化は仮想化業界でもっともアクティブな領域で、その動きの中心となっているのはVMwareやMicrosoft(参考記事)やCitrix(リンク)のような企業です。サーバ仮想化では単一の物理マシンが複数の仮想サーバへと分割されます。このような仮想化のコアになるのは、ハイパバイザ(仮想マシンモニタ)という考え方です。ハイパバイザは軽いソフトウェアレイヤで、OSのハードウェア呼び出しをインターセプトします。通常ハイパバイザは実行しているゲストサーバに仮想化したCPUやメモリを提供します。この言葉はIBM CP-370の出現と共に初めて使われました。
ハイパバイザは次のいずれかのタイプに分類されます。
- タイプ1 – このタイプのハイパバイザはネイティブあるいはベアメタルともいわれます。このハイパバイザは直接ハードウェア上で動き、ゲストOSはさらにその上で動きます。このようなハイパバイザを使っているものには、VMware ESX(リンク)、CitrixのXenServer(リンク)、MicrosoftのHyper-V(参考記事)などがあります。
タイプ2 – このタイプのハイパバイザは既存のOS上で動作し、ゲストOSはハードウェアから第3の層で動きます。このようなハイパバイザを使っているものには、VMware Workstation(リンク)やSWSoftのParallels Desktop(リンク)があります。
タイプ1のハイパバイザに関連して準仮想化という概念があります。準仮想化の手法では、基盤となっているハードウェアに似ているものの同一ではない一種のソフトウェアインタフェースが提供されます。OSは準仮想化されたハイパバイザ上で動くように変更が加えられます。変更されたOSでは、ハードウェアに直接接続するのに準仮想化したハイパバイザが対応する「ハイパコール」を使います。有名なXenプロジェクトではこのタイプの仮想化を用いています。しかし Xenのバージョン3.0からは、ハードウェアによる仮想化技術であるIntelのVT-xとAMDのAMD-Vも利用できるようになりました。この拡張によりXenはMicrosoft WindowsのようなOSをそのまま動かすことができるようになりました。
サーバ仮想化はそのテクノロジを用いる企業に数多くの恩恵をもたらします。よく取り上げられるのは以下のことです。
- ハードウェアの有効利用 – ハードウェアを節約し、管理コストを減らし、エネルギーを節約します。
- セキュリティ – 汚染されたシステムをクリーンなイメージによって修復できます。悪影響を他に及ぼさないようサンドボックス(保護領域)や隔離環境を利用することも仮想マシンによりおこなうことができます。
- 開発 – 反復可能な方法でデバッグやパフォーマンスモニタリングするための環境を簡単にセットアップできます。ディベロッパはOSを各自のデスクトップにインストールしなくてもOSへのアクセス手段を簡単に得ることができます。
逆にマイナス面も生じる可能性があり、そのことを考慮する必要があります。
- セキュリティ – 今の技術にはハイパバイザや仮想ネットワークレイヤといったエントリポイントもあり、そこでもセキュリティについてチェックする必要があります。仮想化技術では汚染されたイメージを広めることも簡単にできてしまいます。
- 管理 – メンテナンスする物理マシンの数は少なくても、実際にはそれより多くのマシンを抱える可能性があります。このようなマシンをメンテナンスをするためには、それまで必要なかった新しいスキルの必要性やソフトウェアにも精通する必要性が出てくるかもしれません。
- ライセンス/原価 – ソフトウェアライセンスの仕組みの多くでは仮想化が考慮されていません。たとえば、1つのマシンで4つのWindowsのコピーを動作させるのにも別個の4ライセンスが必要とされます
- パフォーマンス – 仮想化では物理マシン上のRAMやCPUといったリソースを実質分割することになります。これにハイパバイザのオーバヘッドも加わり、そのような環境でパフォーマンスを最大化することは望めません。
アプリケーション/デスクトップ仮想化
仮想化はサーバ分野だけの技術ではありません。クライアントサイドでもデスクトップとアプリケーションの両方で多くの利用が行われています。このような仮想化は次の4つのいずれかに分類することができます。
- ローカルアプリケーションの仮想化/ストリーミング
- ホスト型アプリケーション仮想化
- ホスト型デスクトップ仮想化
- ローカルデスクトップの仮想化
Wikipedia(英語版)ではアプリケーション仮想化を次のように定義しています(リンク)。
アプリケーション仮想化はアプリケーションを実行環境であるOSから離してカプセル化することで旧世代のアプリケーションの管理性と互換性を向上させるソフトウェア技術を表す包括的用語である。完全に仮想化されたアプリケーションは従来の意味でのインストールは行われないが、そのようにインストールされているように実行される。アプリケーション仮想化はOS仮想化とこの意味で異なる。OS仮想化では特定のアプリケーションだけでなくOS全体が仮想化される。
ローカルアプリケーションを仮想化してストリーム配信できるようにすることで、アプリケーションを必要に応じてインストールができるようになります。もしストリーミングが可能であればアプリケーションの中で起動に必要な部分を最初に送るようにして起動時間を最適化することができます。仮想化されたアプリケーションは、ユーザの物理マシンをクリーンな状態を保つために仮想レジストリや仮想ファイルシステムを使うこともよくあります。ローカルアプリケーション仮想化を使ったソリューションにはCitrix Presentation ServerやMicrosoft SoftGridなどがあります。VMwareのVMware Playerにより実行可能であるような仮想アプライアンス(OSとアプリケーションをセットで仮想化したもの)もこのカテゴリに含めることができるでしょう。
ホスト型アプリケーション仮想化では、ネットワーク上の別の場所にあるサーバで動いているアプリケーションにローカルコンピュータからアクセスします。 MicrosoftのRemoteAppのようなテクノロジでは、ローカルのファイルを種類に応じて処理するのにリモートのアプリケーションを使ったりすることで比較的シームレスなユーザエクスペリエンスを実現しています。
アプリケーション仮想化には以下のような利点があります。
- セキュリティ – 仮想アプリケーションはOSレベルのユーザモードとは無関係なユーザーモードで実行できるものが多くあります。
- 管理 – 仮想アプリケーションは中央集中的に管理をしたりパッチを適用したりできます。
- 旧製品のサポート – 仮想化技術によって、最新のOSに対応していない旧世代のアプリケーションでも実行することができます。
- アクセス – 仮想アプリケーションは管理サーバから必要に応じてインストールできます。管理サーバはフェイルオーバ(データの同期)をおこなったりプリケーションを提供します。
欠点には以下のようなものがあります。
- パッケージング – アプリケーションを使用するにはまずそれをパッケージングしないといけません。
- リソース – 仮想アプリケーションは多くのストレージとCPUを消費する場合があります。
- 互換性 – 全てのアプリケーションが容易に仮想化できるわけではありません。
Wikipedia(英語版)ではデスクトップ仮想化をこう定義しています(リンク)。
デスクトップ仮想化(または仮想デスクトップインフラ)はサーバ集中型のコンピューティングモデルで、従来のシンクライアントモデルと同じ形態だが、エンドユーザが完全なデスクトップ環境を使える一方で、そのデスクトップをデータセンタの仮想マシンでホストして集中管理でき、管理者とエンドユーザの両方にとって最良な環境を提供できるようにデザインされている。
ホスト型デスクトップ仮想化はホスト型アプリケーション仮想化に似ていて、ユーザの利用できる範囲をデスクトップ全体に拡大したものです。この種類の商用製品にはMicrosoftのTerminal ServicesやCitrixのXenDesktop、VMwareのVDIなどがあります。
デスクトップ仮想化の利点はアプリケーション仮想化の利点のほとんどを含みますが、それ以外にも次のような利点があります。
- 高可用性 – レプリケーションや障害に強い機器構成によりダウンタイムを最小限に抑えられます。
- 機器の耐久使用期間の延長 – 高機能なサーバを用い、またクライアントPCの負荷も抑えられることで機器の寿命を延ばすことができます。
- マルチデスクトップ – ユーザはタスクに応じて同一のクライアントPCから複数のデスクトップにアクセスできます。
デスクトップ仮想化の欠点はサーバ仮想化と共通しています。その他にもクライアントに仮想デスクトップにアクセスできるネットワーク接続がないといけないという欠点もあります。これはオフラインでの作業をする上で、またオフィスのネットワーク使用量が増えるという点で問題の原因となります。
クライアント仮想化の最後の区分はローカルデスクトップ仮想化です。VMwareが90年代後半にVMware Workstationで仮想化の復権を果たしたのはこの仮想化においてだったといえます。現在ではMicrosoft Virtual PCやParallels Desktopといった競合製品があります。ローカルデスクトップ仮想化はIntelプロセッサへ移行してからのAppleの成功のキーとなる要因でもありました。なぜならVMware FusionやParallelsのような製品のおかげでWindowsアプリケーションへ容易にアクセスできるからです。ローカルデスクトップ仮想化の利点には次のことが含まれます。
- セキュリティ – ローカルの仮想化により仮想マシン/ディスクにある重要なデータをロック(リンク)して暗号化することができます。これによりユーザのディスク全体やOS全体を暗号化するよりも良いパフォーマンスを実現することができます。
- 分離 – 分離はセキュリティに関係します。企業がコントロールできない第三者のマシンから企業資産を分離することができます。これにより従業員も場合によっては業務目的で個人のマシンを使うことができます。
- デプロイ/旧製品のサポート – ローカルの仮想化により、異なったハードウェアや異なったホストOSでは利用できない多くの設定や環境を(仮想的な)一台のユーザコンピュータでサポートできます。たとえば、OS X上の仮想環境でWindowsが動いたり、Vistaがインストールされたマシン上でWindows 98でのテストを行ったりできます。
ネットワーク仮想化
これまではアプリケーションやマシン全体の仮想化を中心にカバーしてきました。しかしこのレベルだけが仮想化の対象ではありません。ソフトウェアにより仮想化できるコンピューティング概念は他にもあります。ネットワーク仮想化もそのような概念のひとつです。Wikipedia(英語版)ではネットワーク仮想化を次のように定義しています(リンク)。
コンピューティングの世界においてのネットワーク仮想化は、ハードウェアやソフトウェアのネットワークリソースとネットワーク機能をひとつのソフトウェアベースの管理要素である仮想ネットワークとしてまとめあげる方法である。ネットワーク仮想化にはプラットフォームの仮想化も含まれ、リソースの仮想化が行われることも多い。ネットワーク仮想化には、複数のネットワークあるいはネットワーク部分をひとつの仮想ユニットにまとめる対外部のものと、単一のシステム上にある複数のソフトウェアにネットワーク機能を提供する対内部ものがあり・・・
ここにある対内部ということについていえば、デスクトップやサーバの仮想化はホストとゲスト(単一あるいは複数のゲスト)の間にネットワークアクセスを提供することです。サーバサイドの仮想スイッチもそのような仮想化技術のひとつとして受け入れられつつあります。ネットワーク仮想化の対外部の面では、ネットワーク仮想化という言葉より他の言葉を使うことが多いようです。Virtual Private Networks(VPNs)はVPNの使用を認めている企業のほとんどで、ネットワーク管理者がよく使う方法のひとつとなっています。Virtual LANs(VLANs)もネットワーク仮想化の概念を使った方法です。10ギガビットのイーサネットのようなネットワークの進歩もあり、物理的な配線に合わせてネットワークを構成する必要はもはやなくなりました。このような製品を扱う企業にはCiscoや3Leafなどがあります。
一般的にネットワーク仮想化には次の利点があります。
- アクセスのカスタマイズ – 管理者はアクセスやネットワークのオプションをすぐに変更でき、帯域制限やQoSを変えられます。
- 統合 – 物理ネットワークが単一の仮想ネットワークとして統合されることで全体管理の簡易性が得られます。
サーバ仮想化と同じように、ネットワーク仮想化でも複雑性が増したり、パフォーマンスでのオーバーヘッドの増大、管理に必要なスキルセットが多くなるなどの問題が考えられます。
ストレージ仮想化
よく仮想化されるコンピューティングの対象にはストレージもあります。これまでの仮想化では複雑な定義があったのもあるに比べると、Wikipedia(英語版)でのストレージ仮想化の定義はいたってシンプルです(リンク)。
ストレージ仮想化は物理ストレージから論理ストレージを抽象する方法を指す。
RAID もこの機能を基盤レベルで提供しますが、通常ストレージ仮想化という言葉にはデータ移行やキャッシングといった概念も含まれます。上記の機能を実現する方法は多岐に渡り、そのためストレージ仮想化を特定の方法で定義するのは困難です。典型的には次のような方法があります。
- 特別なデバイスドライバをベースにしたホスト
- アレイコントローラ
- ネットワークスイッチ
- スタンドアローンなネットワーク機器
このことについて各ベンダは異なるアプローチを採っています。ストレージ仮想化をin-bandかout-of-bandのいずれかに分ける分類方法もあります。in-band仮想化(対称仮想化とも呼ばれます)はホストとキャッシングをおこなっているストレージデバイスの中間に位置します。out-of- band仮想化(非対称仮想化とも呼ばれます)は、メタデータ(ファイルがどこに存在するかを示します)を参照するデバイスドライバをベースにした特別なホストで、これによりホストはストレージから直接ファイルを読み込むことができます。この方法の場合、仮想化のレベルでキャッシングをおこなうことはできません。
ストレージ仮想化の一般的な利点には以下のものがあります。
- 移行 – ほとんどの仮想化技術において、仮想パーティションへのアクセスを中断しなくてもデータをストレージ間で容易に移行することができます。
- 有効利用 – サーバ仮想化と同じように、ストレージデバイスを有効利用することで利用の過多・過小に対応できます。
- 管理 – ひとつの物理デバイスだけ管理するだけで複数のホストがストレージを利用できます。
欠点といえるものには次のようなものがあります。
- 不十分な標準と相互互換性 – ストレージ仮想化はまだコンセプトレベルで標準的ではありません。そのためベンダはあまり相互運用をおこなっていません。
- メタデータ – 論理アドレスと物理アドレスをマッピングする必要があるため、ストレージメタデータとそれの管理が信頼性のある現実のシステムを構築する上でキーとなります。
- 逆戻り – 論理アドレスと物理アドレスのマッピングのために、仮想化をひとつのシステムとしての技術からありふれた方法以下のものに逆戻りさせてしまいます。
サービス/アプリケーションインフラ仮想化
エンタープライズアプリケーションのプロバイダが注目している仮想化に、Apacheのようなよく使われているアプリケーションの仮想化を実現するソリューションや、ソフトウェアを仮想化に対応させて構築するためのアプリケーションファブリックプラットフォームと呼ばれるものがあります。
アプリケーションインフラの仮想化(時にアプリケーションファブリックとも呼ばれます)はアプリケーションを物理的なOSやハードウェアから切り離します。そしてアプリケーション開発者は仮想レイヤ上でプログラムすることができるようになります。このような構成ではデプロイやスケーリングといったこともできます。基本的にこの方法(リンク)はグリッドコンピューティングを発展させて仮想化レベルの機能を提供するファブリック接続形式にしたものです。Appistry(参考記事)や DataSynapse(リンク)のような企業は次のような機能を提供しています。
- 仮想ディストリビューション
- 仮想処理
- 動的リソース発見
IBMもアプリケーションインフラの仮想化のコンセプトを取り込もうと、Webshpere XDをWebsphere Virtual Enterprisise(リンク)というブランドに変えて継続しています。この製品にはサービスレベルの管理やパフォーマンスのモニタリング、耐障害といった機能があります。ソフトウェア自体はWindowsやUnixやLinuxベースのOS上で動き、WebSphere、Apache、BEA、JBossといった主要なアプリケーションサーバやPHPのアプリケーションサーバと連携します。このことで管理者はアプリケーションサーバを物理マシンのレベルでなく仮想化レイヤのレベルにデプロイ・移動することができます。
最後に
これまでのことから仮想化が単にサーバベースの概念ではないことが明らかになったはずです。この手法は広範囲のコンピューティングにおいて適用することができ、次のような仮想化が含まれます。
- サーバマシン全体およびデスクトップマシン全体
- 複数のアプリケーション・デスクトップ
- ストレージ
- ネットワーキング
- アプリケーションインフラ
このテクノロジには多くの手法がありますが、重要なものは、既存分野のおいてのさらなる安定という軸と、仮想化をどんどん取り入れようとしている業界の一角による採用の加速という軸を中心に回っています。最近Microsoftがベアメタルなハイパバイザの分野にHyper-V(参考記事)で参入してきたことは、このテクノロジが業界において成熟しようとしている表れです。
これまで紹介したコアとなる要素を超えた未来の仮想化も続々と描かれています。それが現実のものになるかは製品または機能として提供されるかにかかっています。RedHatや多くのストレージベンダーなどの企業では、自社の既存商品を補完するものとして仮想化が扱われようとしています。VMwareのような企業は仮想化をビジネスとして確立しています。InfoQでは今後もこのテクノロジや関係する企業の進展を追っていきます。
原文はこちらです:http://www.infoq.com/articles/virtualization-intro
(このArticleは2008年7月2日に原文が掲載されました)