Xen導入のメリット1日5分のXen理解

仮想マシン環境を導入すると、どんなメリットがあるのでしょうか? すでに幾つかの点について触れてきましたが、もう一度ここで仮想マシン環境の利点を考えてみましょう。

» 2006年12月17日 08時00分 公開
[高橋浩和(VA Linux Systems Japan),オープンソースマガジン]

本記事は、オープンソースマガジン2006年3月号 第1特集「仮想マシンモニタXen 3.0を使ってみよう」のパート1「仮想マシンとは何か?」を再構成したものです。以下のように3回に分けて掲載を予定しています。


Xen導入のメリット

 仮想マシン環境を導入すると、どんなメリットがあるのでしょうか? すでに幾つかの点について触れてきましたが、もう一度ここで仮想マシン環境の利点を考えてみましょう。

サーバ統合

 業務用途などで多数のサーバを管理している場合には、Xenを使ってサーバを統合し、コストを削減することが考えられます。昨今では、比較的安価で単機能な1Uサーバ、2Uサーバなどを並べ、大規模にサービスを提供することが、広く行われてきました。しかし、サービスが成長し、システムが大規模化するにつれ、その膨大な数のサーバ群のコスト(および運用コスト)の増大が問題になってきています。

 サービスのレベルを維持したまま、これらのコストを削減する手段として、仮想マシン環境の導入が注目を集めています。1台のPCサーバ上に、複数の仮想的なPCサーバ環境を用意し、その一つ一つにサービスを載せてマシン台数を減らそうという試み*です。

 さて、一般論としてサーバ統合のメリットを述べましたが、仮想マシンとしてXenを使ったとき、サーバ統合にどういった効果があるかも説明しましょう。

サービス独立性の維持

 サーバ統合により1台のマシンに複数のサービスを集約するとします。物理的には統合するけれども、それらサービス間で互いに影響し合わないようにしたいと考えるのは当然でしょう。また、1つのサーバ上で複数のサービスを提供している場合も、それぞれのサービスの独立性を高めたいと考えるでしょう。

 Xenでは、各サービスに1つの仮想マシン環境を割り当てることにより、この目的が達成できます。仮想マシンは互いに独立した環境を提供します。

セキュリティの確保

 各仮想マシンは、独立した環境を持ちます。ある仮想マシン内の資源は、同じ仮想マシン内で動作するプログラムからのみ参照可能です。ほかの仮想マシン内で動作するプログラムからは参照できません。

 ある仮想マシン内で動作するプログラムやOSから見た場合、別の仮想マシン上で動作するプログラムは、物理的に独立したPCサーバ上で動作するプログラムと同じくらい独立した存在です。ほかの仮想マシン上の資源に対しては、そこにアクセスする権限のあるなし以前に、異なる名前空間で動作しているため、その資源を指定する術からして持っていません*

サービスへの資源量保証

 各仮想マシンは、独立した資源を持ちます。仮想マシンに割り当てられた資源は、ほかの仮想マシン上のプログラムの影響を受けることなく、利用できます。Xen 3.0では、それぞれの仮想マシンのCPU時間とメモリ量を保証できます(図5)。

図5 図5 ドメインへの資源割り当て

 ある仮想マシン上のサービスが高負荷になった場合でも、ほかの仮想マシン上で動作するサービスには影響を与えません。UNIXやLinuxは、ユーザーやプログラムの要求に対して、ベストエフォートで臨もうとします。これは、資源の有効利用の視点からは効果的ですが、多くのメモリやCPU時間を要求したプログラムが、実際に多くの資源を獲得できてしまい、別のプログラムに影響を与えやすいという欠点があります。仮想マシン環境を利用すると、この欠点を解消できます。サービス間に資源の壁を作ることが可能*となるからです。

システムの拡張性と柔軟性

 物理マシン上でのサービスの提供よりも、仮想マシン環境上でのサービスの提供の方が柔軟性に富んでいます。Xenを利用した環境では、ハードウェアの物理的制限が緩和されます。

仮想マシンの能力を変更できる

 先に述べたように、各仮想マシンにはCPU資源やメモリ量などの資源が割り当てられます。サービスが物理的なハードウェアと結び付けられている場合、サービスの状態が変わってもそれに合わせて資源量を変更できません*

 一方、仮想マシン環境では、各仮想マシンに割り当てるCPU時間やメモリ量を動的に変更することも可能です。昼夜でサービスの質が変わるとき、資源割り当てを計画しておくことができます。昼間はオンライン処理を担当する仮想マシンに多くのCPUやメモリを割り当てて動かし、夜はバッチ処理を行う仮想マシンにそれら資源を回すことも可能です。また、突発的なトラフィック発生を検知し、一時的に割り当て資源量を増やすことも可能です。

 また、運用開始時にサービスの重さを正確に予測できない場合も、仮想マシン環境が役に立ちます。運用開始後の状況を見ながら資源割り当てを調整することが可能となります。

仮想マシンを移動できる

 Xenを利用すると、別の物理ハードウェア上に仮想マシンイメージを移動(live migration:ライブマイグレーション)できます*

 1つの物理マシン内だけでは負荷調整が十分できない場合、物理マシンをまたがって負荷分散を行えます。Xenは、仮想マシンをほとんど無停止で移動させることができます*

 またこの機能を、もっと長いスパンでの計画で利用することも可能です。サービスの提供開始時には小さいが、後から大きくなる可能性のあるサービスを仮想マシン上で動かしておくことが考えられます。実際にサービスが成長したときになって、必要とする資源量を確保できる物理マシンにそのサービスを移すこともできます(<<図6>>)。

図6 図6 ドメインへの資源割り当て

 この機能は、サービスをとどめることなく物理マシンのメンテナンスを行うために利用することもできます。定期メンテナンスや予防保守のため物理マシンを停止させなければならない場合、その停止前に、その物理マシン上で動いている仮想マシンを、別の物理マシン上に移してしまうことができます。仮想マシン上のサービスは、ほぼ無停止で提供し続けることが可能です*


 ハードウェアの寿命が尽きたとき、もしくはハードウェアのメンテナンス期間が終了したとき、そのハードウェアと一緒にその上で動くソフトウェアも置き換えることも多いと思われます。Xenを利用すると、これら2つのことを別々の事象として計画し、処理することが可能となります。サービスの更新や強化のタイミングを、ハードウェアの切り替えや増強の計画から切り離せることは、大きなメリットといえるでしょう。

資産継承と互換性の維持

 PCサーバの世界でも、資産継承は重要です。しかしこの世界では、半年ごとにPCサーバの新機種が登場します。古い機種はすぐに入手不可能となります。これは、コストと性能を追求した代償です。

 このような環境では、現在利用しているサービスを拡張しようとしたり、故障したハードウェアを交換しようとしたときに、いままで利用してきたものと同じ機種が手に入ることはまれです。しかし、新しい機種を導入した場合、それまでに導入している機種の上で動作していたOSが動作する保証はありません。いま利用しているそのOSが、新しい機種用のチップセットに対応し、新しいコントローラー用のデバイスドライバを持っていることはまれです。

 仮想マシン環境を導入すると、この頭の痛い問題から解放されます。ハードウェアの機種交換と、OSのバージョンアップを切り離すことが可能となります。仮想マシンモニタXenの実装では、ドライバをつかさどるOS(ドメイン0)と、アプリケーションの動作をつかさどるOS(ドメインU)が、完全に分離されています。

 新しいハードウェアを導入する場合、ドメイン0のみを新しいハードウェアをサポートするOSに載せ換えるだけで済みます。原理的にドメイン0のOSバージョンと、ドメインUのOSバージョンは同じである必要はありません。ドメインUは、もともと動作しているOSをそのまま利用できるため、アプリケーションの移植や動作検証の煩わしさから解放されます。さまざまな機種が混在する環境であっても、ドメインUはただ1種類用意しておけば、すべての機種で同じ環境を持つことができます。

仮想マシンモニタXenの課題

 Xenは開発途上の仮想マシンモニタです。まだ不十分と感じられる機能が幾つもあります。例えば、期待の大きい完全仮想化ドメインですが、この完全仮想化にはまだ課題が残っています。準仮想化ドメインに対して用意されている機能に比べて見劣りする部分もあり、運用管理系の機能も充実しているとはいえません。

 しかしながら、仮想マシンは役に立つ非常に有効な技術です。その得意とするところと苦手なところを理解した上で、自分たちのシステムに上手に組み込んで利用していきたいところです。

このページで出てきた専門用語

マシン台数を減らそうという試み

仮想マシン環境を導入した場合、物理マシン数の削減に付随して、単にマシン台数が減る以上の効果も生まれる。例えば、マシンが減ることで、それらをつなぐネットワーク構成が単純化できると考えられる。また、マシンが減ると、当然ながらラックの床面積を減らすことができる。PCサーバとして最も一般的なのは1Uサイズのラックマウントサーバだが、これは効率良くラックに収められてスペース効率が高い半面、発熱や電力消費量の点でデメリットも多い。仮想マシンを使用することで、電源・熱容量の点で効率的なハードウェア構成を取ることができるようになる。

資源を指定する術からして持っていません

もしある仮想マシン上で悪意のあるプログラムが動いたとしても、ほかの仮想マシンで動作するサービスに影響を与えることはない。仮想マシンで動作するOSが悪意のあるものであったとしても大丈夫だ。

サービス間に資源の壁を作ることが可能

ただし、Xen 3.0では、まだI/O帯域制御が実装されていないため、ほかの仮想マシンのI/O負荷状態により、I/O遅延が発生してしまう可能性がある。これは、Xenが今後解決すべき課題の1つだ。

資源量を変更できません

ハイエンドのモデルではCPUやメモリのホットプラグ(活線挿抜)ができる機種もある。

仮想マシンイメージを移動(live migration:ライブマイグレーション)できます

Xen 3.0では、準仮想化のドメインのみ移動可能。今後の計画には、完全仮想化ドメインも対象にできるようにする予定だ。

ほとんど無停止で移動させることができます

後の章で説明するが、ほかの物理マシンへ仮想マシンイメージを移動するためには、その物理マシンとの間でストレージを共有していることが必須である。SANでもNFSでも、または性能は良くないもののNBD(ネットワークブロックデバイス)による共有でも構わない。

ほぼ無停止で提供し続けることが可能です

クラスターシステムにおけるサービス引き継ぎとは異なり、アプリケーション側での考慮は不要。プロセスメモリの内容、ソケットのコネクション状態、ファイルのオープン状態すべてがそっくり引き継がれる。


Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ