本文へジャンプ

Xen 仮想化環境でのキャパシティ管理

内容/目次

変更履歴
------------------------
2008/03/15 ver1.0 公開
------------------------

Xen の仮想化環境では、物理サーバー全体のリソースの使用状況と各仮想サーバーのリソースの使用状況を関連づけて、システム全体のキャパシティ管理を行う必要があります。ここでは、Xen の仮想化環境で、CPU、ディスク I/O、ネットワーク I/O のリソース使用状況を確認する方法を紹介します。実運用環境では、これらのデータを継続的に収集し、定期的に分析することで、仮想マシンに割り当てるリソース量の変更やシステム全体の拡張計画を立てることをお勧めします。

Show details for CPU のキャパシティ管理CPU のキャパシティ管理

Hide details for ディスク I/O のキャパシティ管理ディスク I/O のキャパシティ管理

■ 前提知識

Xen の環境では、物理ディスクへの I/O は、ドメイン 0 のデバイスドライバーを経由して行われます。

ただし、ドメイン 0 のディスクキャッシュは、ドメイン 0 から直接ファイルにアクセスした場合にのみ使用され、ドメイン U から仮想ディスクとしてアクセスされた場合は、ドメイン U 自身のディスクキャッシュが使用されます。



■ 物理ディスクの I/O 量の確認

ドメイン 0 で iostat コマンドを使用することにより、物理ディスクに対するトータルの I/O 量を確認することが可能です。

(例)

    [root@xenhost ~]# iostat -xd 5

    Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
    sda 0.00 2977.25 0.00 1129.34 0.00 33641.52 29.79 23.58 21.09 0.40 45.59

特に %util(物理ディスクが I/O 処理を行っている時間の割合)の値が継続的に 100% に近い場合は、物理ディスクの性能がボトルネックになっていると考えられます。

一方、各仮想マシンのゲスト OS 上で iostat コマンドを使用することにより、各仮想マシンが物理ディスクに対して行う I/O 量が確認できます。

(例)
    [root@vm01 ~]# iostat -xd 5

    Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
    xvda 0.00 2287.03 0.00 394.41 0.00 20800.00 52.74 54.84 133.86 1.73 68.26

データ転送量(r/s, w/s, rsec/s, wsec/s)については、各仮想マシンの値の合計とドメイン 0 自身が行う I/O の合計がドメイン 0 の iostat の値となります。

一方、ゲスト OS 上での %util は、該当の仮想マシンが発行した I/O リクエストの完了待ちが発生している時間の割合であり、物理ディスクが他の仮想マシンの I/O 処理を行っている場合も待ち時間としてカウントされます。ゲスト OS 上の %util の値が継続的に 100% に近い場合は、I/O 処理がボトルネックになっているとはいえますが、他の仮想マシンが大量の I/O を行っていることが原因の可能性もあります。

Hide details for ネットワーク I/O のキャパシティ管理ネットワーク I/O のキャパシティ管理

■ 前提知識

Xen の環境では、外部ネットワークとの通信は、ドメイン 0 のブリッジに接続された物理 NIC を経由して行われます。

Bonding デバイスを使用しない場合は、pethX がブリッジに接続された物理 NIC を表します。

Bonding デバイスを使用する場合は、bondX がブリッジに接続された Bonding デバイスを表します。



■ 物理 NIC のネットワーク I/O 量の確認

ドメイン 0 で netstat コマンド、もしくは、ifconfig コマンドを使用することで、物理 NIC の送受信パケット数、および、送受信バイト数を確認することができます。

(例)
    [root@xenhost ~]# netstat -Ipeth0
    Kernel Interface table
    Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
    peth0 1500 0 2477370 0 919168 0 1355678 0 0 0 BORU

    [root@xenhost ~]# ifconfig peth0
    peth0 Link encap:Ethernet HWaddr FE:FF:FF:FF:FF:FF
    inet6 addr: fe80::fcff:ffff:feff:ffff/64 Scope:Link
    UP BROADCAST RUNNING NOARP MTU:1500 Metric:1
    RX packets:2477370 errors:0 dropped:0 overruns:0 frame:0
    TX packets:1355678 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:1141619421 (1.0 GiB) TX bytes:422855748 (403.2 MiB)
    Interrupt:21 Memory:da000000-da012100

一方、各仮想マシンのゲスト OS 上で netstat コマンド、もしくは、ifconfig コマンドを使用することにより、各仮想マシンの仮想 NIC の送受信パケット数、および、送受信バイト数を確認することができます。ただし、これは仮想ネットワークを経由した通信量であり、かならずしも全てが物理ネットワークに転送されているわけではありません。

(例)
    [root@vm01 ~]# netstat -Ieth0
    Kernel Interface table
    Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
    eth0 1500 0 233054 0 0 0 229213 0 0 0 BMRU

    [root@vm01 ~]# ifconfig eth0
    eth0 Link encap:Ethernet HWaddr 00:16:3E:2D:60:74
    inet addr:10.7.7.201 Bcast:10.7.255.255 Mask:255.255.0.0
    inet6 addr: fe80::216:3eff:fe2d:6074/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:233185 errors:0 dropped:0 overruns:0 frame:0
    TX packets:229222 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:20252345 (19.3 MiB) TX bytes:24400908 (23.2 MiB)


文書情報

有効期限: 2011年3月15日

本文書について

本文書では、IBM製品においてLinuxを使用する上で有用と思われる技術情報やHints&Tipsをご提供いたします。
本文書の情報は、限られた検証環境における結果に基づくものであり、全ての環境で同一の結果を保証するものではありません。
本文書の情報に基づき導入・設定を実施される場合には、十分な検証テストを行ってください。
また、予め各社より提供される情報および製品のマニュアルをご覧ください。
本文書の情報に基づいて導入・設定・運用した結果について、IBMはいかなる保証も責任も負いかねますので予めご了承ください。

ソフトウェアサポート

ソフトウェア製品のサポート技術情報

ハードウェアサポート

ハードウェア製品のサポート技術情報