検索
連載

リソース制御でサービスレベルを確保せよ実践! Xenで実現するサーバ統合(5)(1/3 ページ)

仮想化ソフトウェアの「Xen」を用いてサーバ統合を実践していく手順を具体的に紹介します。最終回ではゲストOSに対する各種リソースの割り当て・制限方法を紹介します(編集部)

PC用表示 関連情報
Share
Tweet
LINE
Hatena

 Xenを用いてサーバを統合する手順を具体的に紹介してきたこの連載も、いよいよ最終回です。今回は、Xenをインストールして仮想マシンを立ち上げた後に、CPUやメモリ、ネットワーク帯域といったリソースを各ゲストOSにどのように割り当て、必要に応じて制限するかというリソース制御の方法を解説したいと思います。

【関連記事】

http://www.atmarkit.co.jp/flinux/special/xen01/xen01.html
仮想化技術の大本命「Xen」を使ってみよう〜インストール & Debian環境構築編〜

http://www.atmarkit.co.jp/flinux/special/xen02/xen01.html
仮想化技術の大本命「Xen」を使ってみよう〜Xen対応カスタムカーネル構築編〜


ゲストOSのリソース制御はなぜ必要?

 Xenは、デフォルトではゲストOSに対して何らリソースの制限を掛けていません。CPUメモリネットワーク帯域ディスク帯域それぞれについて、ゲストOSがリソースを要求した際には、余裕さえあればできる限り要求元のゲストOSにリソースを割り当てようとします。

 しかしながら、さまざまな種類のゲストOSを1つのホストサーバ上に統合している場合は、これでは不都合なこともあります。VPS(Virtual Private Server)でホスティングサービスを提供している場合を想像してください。たいていのVPSサービスは保証するハードウェアリソース別に、そのサービスレベルを定義しています。

 例えば、以下のように2つのサービスレベルを用意しているとします。

サービスレベル メモリ容量 ネットワーク帯域 ディスク容量
アドバンスド 512Mbytes 1Mbps 20Gbytes
スタンダード 256Mbytes 0.5Mbps 5Gbytes
表1 2つのサービスレベル

 そしてシステムは、図1のように、1台のホストサーバ上に異なるサービスレベルのゲストOSが混在している構成だとします。

図1 異なるサービスレベルのゲストOSが混在している環境
図1 異なるサービスレベルのゲストOSが混在している環境

 メモリとディスク容量については、ゲストOSを作成する時点で必須のパラメータとなるので、特段意識する必要はありません。しかしネットワーク帯域については、デフォルトのままだと均等に割り当てられてしまいます。この結果、ネットワークに余裕があるときにはどのゲストOSでも十分なネットワーク帯域が確保できますが、込み合ってくると各ゲストOSに保証されるべき帯域が確保できないことになります。

 このような環境でサービスレベルに応じたリソース配分を実現するには、ホストOS側で、各ゲストOSのリソース制御の設定を施す必要があります。制御可能なリソースには以下のものがあります。

■CPU関連

  • 仮想CPU数
  • 仮想CPUと物理CPUのマッピング
  • CPU利用率閾値
  • CPUスケジュール優先度

■メモリ関連

  • 割当量/最大値

■ネットワーク関連

  • 帯域幅閾値(Linuxの機能で実現)
    ※ディスクについても優先度設定が可能ですが、ここでは割愛します

 では、上記の各項目について、その動作と設定方法について解説していきます。

CPUのリソース制御

 CPUおよびメモリ関連のリソース設定は、Xenがもともと備える機能として提供されています。設定方法は複数あり、ドメイン設定ファイルによって静的に行う方法と、xmコマンドで動的に行う方法があります。ドメイン設定ファイルは、デフォルトでは/etc/xen/以下に、各ゲストOSのドメイン名で保存されています。

 一方ネットワーク関連はXenの機能ではなく、OS側で提供されている機能に工夫を加えて設定を実現します。

■仮想CPU数

 ゲストOSに割り当てる仮想CPUの数です。これは実際にサーバ機に搭載されているCPU数とは関係ありません。

 例えば、サーバ機に搭載されているCPUがXeonデュアルコア×1ソケットだとすると、実CPU数は2になります(デュアルコアなので)。しかし仮想CPU個数として、例えば「4」のように、実CPU数よりも多い個数を指定することもできます。

図2 ゲストOSに仮想CPUを割り当てる
図2 ゲストOSに仮想CPUを割り当てる

 ゲストOSはここで指定されたCPU数を認識しますが、当然ながら、たとえ実CPU数よりも大きい値を指定してもパフォーマンスは上がりません。従って、実運用では常に仮想CPU数は実CPU数以下にするべきです。設定可能な値は1〜32となっており、稼働中に動的に変更可能です。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

■仮想CPUと物理CPUのマッピング

 前述のとおり、仮想CPU数は物理CPU数には依存しません。しかし実質的には、いずれかの物理CPUにマッピングされることになります。これは静的に固定することもできますし、動的にその場その場で選択されるよう設定することもできます。デフォルトでは動的に選択されるようになっています。

図3 仮想CPUと物理CPUのマッピング
図3 仮想CPUと物理CPUのマッピング

 物理CPU当たりのキャパシティを正確に管理したい場合には、以下のように設定し、サービスレベルを差別化することができます。稼働中にも動的に変更可能ですが、起動時の値より大きい値には変更できません。

図4 仮想CPUと物理CPUのマッピングを変更する
図4 仮想CPUと物理CPUのマッピングを変更する

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***


Copyright © ITmedia, Inc. All Rights Reserved.

       | 次のページへ
ページトップに戻る