今回は、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アドレスのバッディングを防げます。