今回は、XenのゲストOSに eth0、eth1 などの複数のネットワークインターフェイスを割り当てます。
(まだ Xen のインストールもご紹介いていませんが・・・)
次のような要件の時に必要になります。
・ゲストOSを 複数のネットワークセグメントに参加させたい場合。
・限りあるグローバルIPアドレスを、サービスを提供するゲストOSだけに割り当てたい場合。
では、どのようにして追加するのでしょうか。
まずは、大まかな流れから。
1. ホストOSに2枚目以降のブリッジデバイスを追加。
2. xend 再起動。
3. ゲストOSのインストール、または再設定。
このような流れになります。
次は、実際にやってみます。
■ 1.ホストOSに2枚目以降のブリッジデバイスを追加
通常、Xenを起動する時は、/etc/xen/scripts/network-bridge というスクリプトが走ります。network-bridgeは、xenbr0 というブリッジデバイをOSにエントリします。デフォルトでは network-bridge は、xenbr0 というブリッジデバイスを1つだけ登録します。このブリッジデバイスは、ホストOSが接続されている物理ネットワークセグメントに ゲストOSを参加させ るのに必要です。ホストOSとゲストOSのブリッジのような働きをします。
そして、ゲストOSで複数のNICを利用したい場合は、ネットワークインターフェイス分だけ ブリッジデバイスを用意します。
まずは、ブリッジデバイスの用意。
ブリッジデバイス制御スクリプトを /etc/xen/scripts/network-bridge から /etc/xen/scripts/network-bridge.multi に変更します。
# vi /etc/xen/xend-config.sxp
... (network-script network-bridge) ...
↓修正
... (network-script network-bridge.multi) ...
そして、 /etc/xen/scripts/network-bridge.multi を用意します。
# vi /etc/xen/scripts/network-bridge.multi
#!/bin/sh set -e OP=$1 shift script=/etc/xen/scripts/network-bridge case ${OP} in start) $script start vifnum=0 bridge=xenbr0 netdev=eth0 $script start vifnum=1 bridge=xenbr1 netdev=eth1 $script start vifnum=2 bridge=xenbr2 netdev=eth2 ;; stop) $script stop vifnum=0 bridge=xenbr0 netdev=eth0 $script stop vifnum=1 bridge=xenbr1 netdev=eth1 $script stop vifnum=2 bridge=xenbr2 netdev=eth2 ;; status) $script status vifnum=0 bridge=xenbr0 netdev=eth0 $script status vifnum=1 bridge=xenbr1 netdev=eth1 $script status vifnum=2 bridge=xenbr2 netdev=eth2 ;; *) echo 'Unknown command: ' ${OP} echo 'Valid commands are: start, stop, status' exit 1 esac
実行権限を付与。
# chmod +x /etc/xen/scripts/network-bridge.multi
■ 2. xend 再起動
そして、xend を再起動します。
# service xend restart
これで、xenbr0、xenbr1、xenbr2 という3つのブリッジデバイスが用意できました。
ifconfig で確認できます。
# ifconfig
■ 3. ゲストOSのインストール、または再設定
次は、ゲストOSのインストールです。
# virt-install -n guestos01 -r 500 --vcpus=1 \ -f /dev/VolGroup00/guestos01 --nographics \ -l http://ftp.riken.jp/Linux/centos/5.2/os/i386/ \ -m 00:16:3e:51:59:f2 -b xenbr0 \ -m 00:16:3e:51:59:f3 -b xenbr1
この様に「-m」オプションと「-b」オプションで、MACアドレスとブリッジデバイスを2つずつ指定します。
これで、ゲストOSがNIC2毎を認識してくれるので、あとは、通常のNIC2枚刺しの時のようにインストール作業を進めることができます。
既存のゲストOSにNICを追加する場合は、xm console <name> などとして、コンソールから作業をした方が、ネットワークの設定を安全に行えます。
ちなみに、「-m」 で指定する仮想NICのMACアドレスは、割り当てるIPv4アドレスの 下8ビットを16進数に変換して割り当ててます。そうする事でMACアドレスのバッディングを防げます。