連載
» 2011年03月01日 00時00分 公開

VMware vSphere 4.1 のストレージ機構 (2) I/O制御VMware vSphere 4.1の進化を探る(4)(1/2 ページ)

CPUやメモリといった計算資源の資源管理に加えて、vSphere 4.1ではStorage I/O Controlが提供開始された。これは、ディスクI/Oに関する資源の取り合いが発生したとき、事前に定義しておいた一定の比率でバランスされるようI/O制御が行われる機能だ。今回は、この機能およびそのほかのストレージ関連機能を解説する。

[齋藤康成,ヴイエムウェア株式会社]

ストレージのI/O制御

 仮想マシンを活用したサーバ統合・ストレージ統合が進むと、さまざまな用途の仮想マシンが同一のインフラストラクチャ上に共存することになる。このような環境下では、CPUやメモリなどの計算資源に加えて、ネットワークやストレージなどのI/Oに対する資源管理機構の充実が重要になる。連載第2回ではネットワークに関する資源管理機構「Network I/O Control」を紹介したが、ストレージに関しても同様に資源管理のメカニズムが提供されている。今回はこのStorage I/O Control機能について解説する。また、vSphere 4.1で新規に提供されたその他のストレージ新機能についても紹介する。

仮想化とストレージ統合

 仮想化を推進するとストレージ統合も推進される。結果としてさまざまな仮想マシンがストレージ装置を共有することになる。各仮想マシン上で実行されるサービスはさまざまであるため、例えば「ディスクI/Oはそれほど多くないが、短い応答時間が求められる仮想マシン」もあれば、「応答時間はそれほど短くなくてもよいが、大量のディスクI/Oを発生させる仮想マシン」もあるかもしれない。

 このような特性の異なる仮想マシンが同一のストレージ上に配置されている場合、意図した通りの資源管理を維持するのが難しくなる場合がある。「ある仮想マシンが大量のディスクI/Oを発生させるため、同居している他の仮想マシンの応答時間が長くなってしまう」というケースも起こり得ることになる。

図1 大量のディスクI/Oを発生させる仮想マシンが存在すると、同居する他の仮想マシンの応答速度に影響を与える場合がある 図1 大量のディスクI/Oを発生させる仮想マシンが存在すると、同居する他の仮想マシンの応答速度に影響を与える場合がある

 管理者としては、CPUやメモリといった計算資源の資源管理に加えて、ディスクI/Oに対しても適切な資源管理機構を設けたいと思うはずだ。これを実現する機構がStorage I/O Control(以降SIOCと略記)である。SIOCはvSphere 4.1の新機能で、ディスクI/Oに関する資源の取り合いが発生したとき、事前に定義しておいた一定の比率でバランスされるようI/O制御が行われる。

図2 ディスクI/Oに対しても資源管理機構を設けることで、各仮想マシンの性能を適切に管理することができる 図2 ディスクI/Oに対しても資源管理機構を設けることで、各仮想マシンの性能を適切に管理することができる

Storage I/O Control

 SIOCはファイバチャネルもしくはiSCSIで構成されたデータストア上で利用することができる。NFSならびにRDMではSIOCは利用できない。また、複数のLUNをESX側の機能で連結して単一のVMFSとして構成しているデータストア(マルチエクステントデータストア)では利用することができない。各ESXはEnterprise Plusのライセンスを保有していて、vCenter Server配下で管理されている必要がある。

 SIOC機能の有効化・無効化はデータストア単位で設定する。データストアのプロパティ管理画面を開くとStorage I/O Controlを設定することができる。

図3 SIOCの有効化・無効化はデータストア単位で設定する 図3 SIOCの有効化・無効化はデータストア単位で設定する

 SIOCのパラメータは仮想ディスク単位で設定することができる。仮想マシンのプロパティより「リソース」タブを選択すると、ディスクに関するリソース割り当てを設定する箇所が現れる。ここで対象となる仮想ディスクを選択し、「シェア値」を設定することができる。

図4 SIOCのシェア値は仮想ディスク単位で設定できる 図4 SIOCのシェア値は仮想ディスク単位で設定できる

 ここで設定した「シェア値」が、同一のデータストア上に配置されている仮想ディスク間における資源配分の比率として用いられる。ストレージ性能に余裕がある場合は特に制限なくI/Oが実行されるが、ストレージ性能が枯渇した際にはこのシェア値に応じた比率でI/O制御が行われる。

 ストレージ装置の性能が枯渇しているかどうかという判断は、I/Oリクエストに対するストレージ装置の「応答時間」を観察することで行っている。一般にストレージ装置はI/O負荷が低い状況では各I/Oに対する応答時間が短く、I/O負荷が高い状況では応答時間が長くなる。この応答時間が一定の値よりも長くなった際にはvSphereはストレージ性能が枯渇していると判断し、シェア値に応じて適切にスロットル機構を動作させる。

 仮想化環境では、ストレージ装置に対するI/Oリクエストは同時多発的に発行される状況が典型的である。従ってストレージ装置は、さまざまなI/Oリクエストを並列的に受理することになる。並列度を上げるとスループットは向上するが、その負荷が一定ラインを超えると逆に効率が悪化し、スループットも低下する。従ってストレージ装置の性能を最大限活用するためには、その装置のスループットが最も高まるポイントでI/Oスロットル処理を作動させることが望ましい。SIOCでは、このときの "In-Flight I/O リクエスト数" の比率にシェア値を用いることで、仮想マシン同士のI/O制御を実現している。

図5 I/O負荷とスループットの関係。並列度を上げすぎてもスループットは低下する 図5 I/O負荷とスループットの関係。並列度を上げすぎてもスループットは低下する

 このような方法でストレージI/Oの資源管理を行っているため、複数の物理ホストに分散配置されている仮想マシン群に対しても、シェア値を用いたI/O資源管理が適用可能になっている。

 ところで、ストレージの応答時間がどの程度になるとvSphereはそのデータストアに対するI/O負荷が限界に到達していると判断しているのだろうか? ストレージの機種や構成、接続方式などによって、応答時間の妥当性には当然違いが生じる。vSphere 4.1のSIOCでは、この「輻輳と判断されるしきい値」をデータストア単位で設定することができる。なおデフォルトでは30ミリ秒に設定されている。データストアのプロパティよりこのしきい値を変更することができる。

図6 輻輳状態を判断するI/O遅延時間はデータストア単位で設定することができる 図6 輻輳状態を判断するI/O遅延時間はデータストア単位で設定することができる

 このように、SIOCを用いると仮想マシン間でのI/Oバランスをとるだけでなく、データストアに対する総負荷もスロットル処理することが可能になる。並列的に処理するI/Oリクエスト数を適切に制限することにより、結果的に全体的なトランザクション性能の向上につながる場合もある。輻輳しきい値を変更することでそのポイントを最適化することができるが、適切でない値を設定すると性能を低下させてしまう場合もあるため、このパラメータの調整は慎重に行う必要がある。

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。