PR

 サーバー統合によるコスト削減のため,VMwareやXenといったサーバー仮想化ソフトウエアを利用し,複数のゲストOSを一つの物理サーバー上で稼働させることが主流になりつつある(図1)。このとき,一つの物理サーバーのハードウエア・リソースを分割して使うことになるため,より有効に利用するには,リソースの配分を適切に行うことがポイントとなる。

図1●仮想環境上のゲストOSのリソース監視
図1●仮想環境上のゲストOSのリソース監視

 例えば,CPU使用率の低いゲストOSには必要以上にCPUリソースを割り当てず,よりCPU使用率の高いゲストOSに余裕を持ってCPUリソースを割り当てることで,トータルでの効率的なリソース利用を図る。

 そのためには,的確なリソース情報の把握が不可欠だ。ゲストOSの稼働状態を知るため,CPU使用率やメモリー使用率,ネットワーク使用状況といったリソース情報を取得したい場合,通常の物理サーバーにインストールしたときと同様に,OSが提供するリソース情報取得用のコマンド(topコマンドやsarコマンド)によって,必要な情報が取得できると思うかもしれない。実際,ゲストOS上でのこれらのコマンドを実行すれば,各リソースの数値を取得することはできる。一見それらしい値が返ることもあるが,ゲストOS上から直接取得できるこれらのリソース値を信じてはいけない。

CPU負荷はかかっていないのに高負荷に見える

 仮想化環境では,複数のゲストOSが同じCPUを共有する。そのため,同じ物理サーバー上で動作しているほかのゲストOSの負荷の影響を受けることがある。監視対象のゲストOSがほとんどCPU負荷のかかる処理をしていない状態でも,ほかのゲストOSが高負荷状態となると,それに引きずられてCPU使用率が増加して見えてしまうのだ。実態とかけはなれたこの数字からは,適切なリソース配置は導き出せない。

 より正確な値を取得するためには,管理用OS経由でゲストOSのリソース情報を取得する必要がある。管理用OSは文字通り,複数あるゲストOSを管理するためのOSとなる。通常,サーバー仮想化ソフトウエアが提供する管理用クライアント・ツールで,管理OSにアクセスし,ゲストOSのハードウエア・リソースの割り当てやOSインストール作業などを行う。

 管理OS上でゲストOSのリソース情報を表示するコマンドを提供するものや,管理用クライアント・ツール上でゲストOSのリソース情報をグラフ表示する機能を提供するものがある。また,リソース取得用のAPIも公開されているため,独自の作りこみによるリソース情報の取得や分析も可能である。これらの方法により,より正確なリソース値を取得し,それを元にリソース割り当てを計画するようにしたい。

実際のCPU数以上の割り当ても可能

 CPU使用率監視の観点としては,個別のゲストOSごとのCPUリソース割り当てが十分かどうかとは別に,全体としてのCPUリソースが足りているのかの観点も重要だ。ゲストOSへのCPU割り当ての合計としては,実際のCPU数以上を割り当てることが可能となる(例えば,四つのCPUを搭載しているマシン上で,ゲストOS1に二つ,ゲストOS2にも二つ,ゲストOS3に一つといった割り当てが可能)。よって高負荷時に,割り当てたCPUリソースが本当に該当ゲストOSに割り当てられ,利用可能であったのか否かを調べるため,ゲストOSごとのCPU割り当て不足量を監視することが有効となる。

 コスト削減という観点では,運用コストも意識していただきたい。サーバー仮想化ソフトウエアの管理用クライアント・ツールで仮想環境上のOS群は管理可能であるが,実際のシステムでは,実サーバーと仮想化されたサーバーが混在しているような環境が一般的だろう。実サーバーと仮想化されたサーバで,リソース監視用のツールが異なるのでは,運用効率が悪い。そのような場合は,仮想化ソフトウエアに対応したオプションを用意している統合運用管理ツールを利用することで,効率的に運用管理することが可能となる。

大上 貴充(おおがみ たかみつ)
NTTデータ 基盤システム事業本部 システム方式技術ビジネスユニット OSS技術統括 アソシエイトITスペシャリスト(プラットフォーム)
日頃はオリジナルOSSを中心に,技術開発やそのビジネス化に従事。OSをはじめ、Javaやクラスタミドルといった,アプリケーションの基礎となる技術分野を極めるべく,日夜奮闘中。