『仮想化』を考える

今日は割と時間的な余裕があるので、気になった記事を拾ってきて総ざらい的なまとめを。。。*1
今回のお題は『仮想化』。ネタはITmediaのOpenEnterpriseから、特集<「仮想化」システム・リソースの自動運用>です。*2

仮想化がFocusされる背景

 オープン化の進展によって、ユーザーは特定のメーカーやベンダーに依存しない自由度と選択肢を手に入れ、PCハードウェアの低価格化で大量のPCが組織内に導入されたが、これによってコンピューティング環境は複雑さを増し、その運用管理性は大きく悪化することになった。(中略)
 また、ハードウェアの低価格化によるクライアントPCやPCサーバの増加、インターネット利用環境やネットワーク化の進展によるトラフィックの増加、デジタル化の進展による処理データの増加などが、システムの運用管理環境をより一層複雑にしている。
 この状況に対するソリューションとして、ユーティリティ・コンピューティングまたはオンデマンド・コンピューティングと呼ばれるシステム利用形態が提唱された。これらはいずれも、コンピューティング環境の複雑さを排除し、運用管理性を向上させることでTCO(総所有コスト)を削減するためのシステム側のアプローチである。

(中略)

ユーティリティ・コンピューティングやオンデマンド・コンピューティングは、このような複雑化するユーザーのシステム環境を簡素化し、リソースの利用効率と運用管理性を向上するためのアプローチの1つである。仮想化技術は、システムを構成する複数の異機種サーバやOS、ストレージなどのリソースを、それぞれ1つにプール(集積)して簡素化するための技術で、仮想化されたリソース・プールは、そのシステム上で実行されるアプリケーションやサービスで共有され、必要に応じて必要な量のリソースが割り当てられる。
 これまでのコンピューティング環境では、各アプリケーションやサービスはシステム・リソースの共有を前提として設計されていないことから、処理や容量のピーク時の要件に対応するには、通常のシステム運用時に必要とされる以上の余分な能力や容量を用意しておく必要があった。また、アプリケーションやサービスとハードウェア、OS環境の関係が固定化されているため、システム・リソースの使用率にバラツキがあり、リソースの利用効率は低いレベルにとどまっていた。

結局のところ、TCOの削減に尽きるんですよね。未だにどこもかしこもコスト削減ですかい・・・・
判るんだけどねぇ、、、"それだけ"って言うのがモチベを下げかねない。。。

仮想化の概念

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

割と目から鱗
確かにメインフレームでは箱とタスクの関係は(1:n)なので、あまり難しいことを考えなくていい。箱の使用率を極限まで詰めるorピークに合わせた箱を準備することで解決される。(もっとも後者は今後解かねばならない課題なのだろうが。。。)
また、いわゆる”スパイク”(全く想定していない(できない)瞬間的なタスク量の極端な増加)もメインフレームではレア・ケース*4であり、この問題の解決は簡単に済まされていたのかもしれない。
分散系サーバーではそうは行かないよなぁ・・・

仮想化の課題

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

  • モニタ機能
  • タスク・スケジューリング機能
  • 全体管理機能(いわゆる「オーケストレーション」というやつですね)
  • プロビジョニング

→実現させるためのロジックが難しいと思うんだよね。。

仮想化のゴール

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

*1:いまさら、な古い感じなのはご勘弁。。。

*2:割と日立よりに描かれているような気がするのですが、まぁご愛嬌と言うことで。

*3:以下の各記述は記事中から引用(一部小生なりの解釈を加筆・修正)しています。。。

*4:大抵のケースは、最短でも週間単位であり、過去の傾向からある程度予測はつくものね