Xen3.0で内部用仮想L2スイッチ(virbr1)とゲストeth1の追加


前回までにネットワーク構造を考えたので順に組み立てていこう!!今回はNFSサーバーのネットワーク周りについて。
(構築手順)

  1. ゲストOSを追加
  2. 内部用L2スイッチになるvirbr1を追加
  3. ゲストOSのeth1を追加

1. ゲストOSを追加
NFSサーバー用のゲストOSを追加する。XenのゲストOSのインストールと同様にインストール。ゲストを起動すると、ゲストOSのeth0が自動的にxenbrにリンクするようになっている。ゲストOSのeth0はそのままにしてeht1を新たに追加して、virbr(これも追加する)につなげる。

2.内部用L2スイッチになるvirbr1を追加
virbrを追加するためには/etc/libvirt/qemu/networks/以下に定義ファイルを追加する。しかしvirsh net-undefineを実行すると/etc/libvirt/qemu/networks/以下のファイルは消えてしまうらしく、原本の定義ファイルを別に作成しておいてそれを読み込むようにする。/etc/virnet/virnet1.xmlを作成する。

    • /etc/virnet/virnet1.xml



virnet1



libvirt にそれを認識させてる。これで/etc/libvirt/qemu/networks/にコピーされる。

#virsh net-define /etc/virnet/virnet1.xml
反映させるためにvirnet1を起動させる。

#virsh net-start virnet1
以上でvirbr1は追加されたことになる。デフォルトで存在しているvirbr0はそのまましていてもいいが無駄なので切っておく。

#virsh net-destroy virnet0
#virsh net-undefine virnet0
上記で述べたようにこれをすると/etc/libvirt/qemu/networks/の定義ファイルは削除されてしまうので復活させたい場合はバックアップを取っておくように。(僕はとちってdefault.xmlを消してしまった。。。。。)

3-1. ゲストOSのeth1を追加(ホスト側の設定)
/etc/xen/scriptsにあるnetwork-bridgeを複製してnetwork-bridge.nfsを作っておく(バックアップのため)


cp /etc/xen/scripts/network-bridge /etc/xen/scripts/network-bridge-custom
次に/etc/xen/scripts/network-script-customを新規作成して以下のシェルスクリプトを書く。


# !/bin/sh
# Exit if anything goes wrong
set -e
# Some clean-up of iptables rules inserted by libvirtd.
iptables -D INPUT -i $libvirtbr -p udp -m udp --dport 53 -j ACCEPT &>/dev/null
iptables -D INPUT -i $libvirtbr -p tcp -m tcp --dport 53 -j ACCEPT &>/dev/null
iptables -D INPUT -i $libvirtbr -p udp -m udp --dport 67 -j ACCEPT &>/dev/null
iptables -D INPUT -i $libvirtbr -p tcp -m tcp --dport 67 -j ACCEPT &>/dev/null

# First arg is operation.
OP=$1
shift
script=/etc/xen/scripts/network-bridge.nfs
case ${OP} in
start)
$script start vifnum=0 bridge=xenbr0 netdev=eth0
$script start vifnum=1 bridge=virbr1 netdev=eth1
;;
stop)
$script stop vifnum=0 bridge=xenbr0 netdev=eth0
$script stop vifnum=1 bridge=virbr1 netdev=eth1
;;
status)
$script status vifnum=0 bridge=xenbr0 netdev=eth0
$script status vifnum=1 bridge=virbr1 netdev=eth1
;;
"*)"
echo 'Unknown command: ' ${OP}
echo 'Valid commands are: start, stop, status'
exit 1
esac

network-bridge.nfsとnetwork-script-customに実行権限をあたえる。

#chmod 755 network-bridge.nfs network-script-custom
次に/etc/xenにあるゲストOSの定義ファイルの(network-script network-bridge)を(network-script network-custom)にする

これでホスト側の設定は完了です。マシンごと再起動してホストに入ってeth1と追加します。

3-2ゲストOSのeth1を追加(ゲスト側の設定)
/etc/sysconfig/network-scripts/ifcfg-eth1ファイルを新規作成します
ここではvirbr1はDHCPを持っていないのでIPアドレスを指定します。


# Xen Virtual Ethernet eth1
DEVICE=eth1
HWADDR=00:16:3e:2f:5d:03
BOOTPROTO=none
BROADCAST=192.168.100.255
IPADDR=192.168.100.2
NETMASK=255.255.255.0
NETWORK=192.168.100.0
GATEWAY=192.168.100.1
TYPE=Ethernet
ONBOOT=yes
あとはネットワークを再起動します。

/etc/rc.d/init.d/network restart
これでifconfigしてみてeth1が希望通りのIPで追加されていれば成功です。

(参考サイト)

(追記)
色々間違えていたので修正しました。ブリッジが断線していた。。。。。