日本ヒューレット・パッカード 飯島 徹


 仮想化ソフトウエアによって,1台の物理的なコンピュータ上で複数のOSを稼働できるようになった。仮想化は,データセンターのような大規模環境でのサーバー統合にも適用できる。

 だが,仮想マシンをどんどん増やしていくと,ふと気づくことがある。仮想化ソフトウエアによるサーバー統合には,1台の物理サーバーで1つのOSだけを稼働している環境ではありえなかった大きな「課題」が存在するのだ。その課題とは,「複数の仮想マシンが1台の物理的なコンピュータのリソースを互いに奪い合う事象を,どのように制御するのか」である。すなわち,各仮想マシンに対するリソースの割り当て方法である。

 コンピュータのリソースとは,一般的に次の4つを指し示すことが多い。(1)プロセッサ,(2)メモリー,(3)ディスク,そして(4)ネットワークだ。ここでは,これらのうち,VMware Infrastructure 3で機能が大幅に拡張されたプロセッサとメモリーに対するリソース割り当てに焦点を当てて,各仮想マシンに対するリソースの割り当て方法を解説する。

 VMware Infrastructure 3では,ディスク・リソースに関するI/Oの帯域を,「Shares Value」(後述)と呼ぶ比率値を使って仮想マシンごとに制御できる(図1)。また,ネットワーク・リソースについては,仮想スイッチや仮想スイッチのポート・グループごとに,「トラフィック・シェイピング」を適用して,帯域を制御できる(図2)。

図1●ディスクI/Oの帯域制御
図1●ディスクI/Oの帯域制御
[画像のクリックで拡大表示]

図2●ネットワークの帯域制御
図2●ネットワークの帯域制御

リソース割り当ての構成要素

 まずリソース割り当ての構成要素と設定できる属性について解説し,次に,実際のシステム設計を想定したリソース割り当てについて,活用のポイントといくつかのケースを提示していく。

 ここでは,プロセッサ・リソースやメモリー・リソースを使う「リソースの消費者」と,プロセッサ・リソースやメモリー・リソースを用意する「リソースの提供者」に分けて説明を進める。

 まず,消費者から見てみよう。VMware Infrastructure 3での消費者には,仮想マシンに加えて,「リソース・プール」という抽象化された論理的な要素が挙げられる。リソース・プールとは,複数の仮想マシンを入れられる箱だと思えばよい。

 また,リソース・プールは階層構造が可能なので,親リソース・プールの中に子リソース・プールを入れられる。なおリソース・プールは,「仮想マシンもしくは子リソース・プールにリソースを分け与える」という観点から見れば,提供者としてとらえることもできる。

 次に,提供者を見てみよう。VMware Infrastructure 3での提供者には,ホストに加えて,「クラスタ」という論理的な要素が挙げられる。クラスタとは,ホストの集合体だと思えばよい。実際の設定作業では,クラスタを作成し,そこにホストを追加登録していく。クラスタによって,各ホストのリソースを束ねて管理可能になる(図3)。

図3●複数のホストを束ねるクラスタ
図3●複数のホストを束ねるクラスタ

 それでは,リソースの消費者と提供者の関係を見ていこう。最初に,クラスタを作成せずに,1台のホストのみで構成する場合を説明する。

 ホストは,「リソース・プールのおおもと」という意味合いで,便宜上「ルート・リソース・プール」とも呼ばれる。図4の例では,リソース・プールA,同B,同C,仮想マシン13という4つのリソース消費者で,ホストのリソースを分け合うことになる。

図4●ホスト1台の場合のリソース割り当て例
図4●ホスト1台の場合のリソース割り当て例

 さらにリソース・プールAでは,リソース・プールAに割り当てられたリソースを,仮想マシン01,同02,同03の3台が分け合う。同様に,リソース・プールDとEは,リソース・プールCに割り当てられたリソースを分け合う。この場合,リソース・プールCは,リソース・プールDとEの「親リソース・プール」と呼ばれ,リソース・プールDとEはリソース・プールCの「子リソース・プール」と呼ばれる。