今やっていること:Xen上の実験環境として、以下のようなネットワーク構成を作りたい。
つまり、VMwareでいうところの「host-onlyネットワーク」を二つ作りたい。ここでは下記IBM資料に従って「プライベートネットワーク」と呼ぶことにしよう。
なお、使ってるOS/Xenのバージョンは CentOS/RHEL5.3とそれに付属のXen 3.0.3。
軽くぐぐってみて引っかかった中では、以下の情報が参考になりそう。
このうち最初のITProの記事は、複数の物理NICにそれぞれブリッジ接続する場合の設定例なので、今回はこのままの設定では使えない。他の三つの情報をまとめると、プライベートネットワークを作るには以下の三つのやりかたがありそうだ。
どれがオススメか?
まず、簡単そうな(1)を試してみたのだが、これが期待どおり動かない。結論としては、このやり方は使えないと判断した。具体的な不具合は以下のとおり。
というわけで、このやり方は(少なくとも上記のOS/Xenのバージョンでは)あまり標準的なやり方ではないと言って良いと思う。
IBMの資料には堂々と書いてあるのだけど、プライベートネットワークが一つだけであれば
これでもちゃんと動くのかもね。でも「たまたま」動いてるだけなんじゃないかな、たぶん。
では(2)と(3)ではどちらが良いのか?
これは以下の理由により(3)の方が良い、と言えそうだ。
というわけで、いろいろと寄り道してしまったが、結局のところ(3)のやり方で良さそうだ。
次に実際に設定してみることにする。
- 物理マシン(Dom-0)には物理NICは一つだけついている。
- 仮想マシン(Dom-U)にはNICを三つ繋ぎたい。
- Dom-UのNICの一つは物理NICにブリッジ接続、他の二つはDom-U同士で接続できれば良い(外部ネットワークとの接続は不要。Dom-0との接続はどちらでも良い)
つまり、VMwareでいうところの「host-onlyネットワーク」を二つ作りたい。ここでは下記IBM資料に従って「プライベートネットワーク」と呼ぶことにしよう。
なお、使ってるOS/Xenのバージョンは CentOS/RHEL5.3とそれに付属のXen 3.0.3。
軽くぐぐってみて引っかかった中では、以下の情報が参考になりそう。
- ITProの解説記事
- Xen 仮想ネットワーク構成ガイド for RHEL5.1 (IBMの資料)
- Xenネットワーク クイックレシピ (Stray Penguin - Linux Memo)
- Xenで複雑なネットワークを作る(blog「sous le grand arbre」の記事)
このうち最初のITProの記事は、複数の物理NICにそれぞれブリッジ接続する場合の設定例なので、今回はこのままの設定では使えない。他の三つの情報をまとめると、プライベートネットワークを作るには以下の三つのやりかたがありそうだ。
- (1) network-bridge のカスタムスクリプトで netdev=none を指定する方法。(IBMの資料p.14参照)
- (2) dummyインタフェースを使用する方法。(Stray Penguinの内部専用単純ブリッジの項およびこちらのblog記事参照)
- (3) libvirtdサービスによる仮想ブリッジ(virbrX)を使用する方法。(Stray Penguinの内部専用L2スイッチの項およびIBMの資料p.15参照)
どれがオススメか?
まず、簡単そうな(1)を試してみたのだが、これが期待どおり動かない。結論としては、このやり方は使えないと判断した。具体的な不具合は以下のとおり。
- network-bridgeのカスタムスクリプトとして以下のような記述を行った(start部分のみ抜粋)。
start) $script start vifnum=0 bridge=xenbr0 netdev=eth0 $script start vifnum=1 bridge=xenbr1 netdev=none $script start vifnum=2 bridge=xenbr2 netdev=none ;;
- 結果、xenbr0, xenbr1 は作成されたが、xenbr2 は作成されなかった。
- xend-debug.logログを見ると、意味不明のエラーが発生している。
Nothing to flush. Nothing to flush. Device "none" does not exist. Device "none" does not exist. 使い方: ifdown <デバイス名> Device "none" does not exist. Cannot find device "none" SIOCGIFFLAGS: No such device
- さらにぐぐってみると、netdev=none に対応するというパッチやカスタムスクリプトは出回っているものの、CentOS/RHEL5.3標準のXenのスクリプトには含まれていない。
というわけで、このやり方は(少なくとも上記のOS/Xenのバージョンでは)あまり標準的なやり方ではないと言って良いと思う。
IBMの資料には堂々と書いてあるのだけど、プライベートネットワークが一つだけであれば
これでもちゃんと動くのかもね。でも「たまたま」動いてるだけなんじゃないかな、たぶん。
では(2)と(3)ではどちらが良いのか?
これは以下の理由により(3)の方が良い、と言えそうだ。
- (2) のdummyの方は、modprobe.confの設定なども含め、設定がいろいろ面倒っぽい。
- (1),(2)のやり方はXen限定だが(3)のlibvirtdはKVM等とも共通的に使える(はず)。RedHat的には Xen は捨て捨てで、将来的にはKVMに移行するのが世の流れ。
というわけで、いろいろと寄り道してしまったが、結局のところ(3)のやり方で良さそうだ。
次に実際に設定してみることにする。