2008年01月22日

Xenで2つ以上のネットワークに対応する

NICが2枚以上あるマシンでXen環境を構築したところ、ネットワークのブリッジに失敗して2枚目以降のNICがうまく使えないという問題に突き当たりました。解決策を探したところ、以下のサイトにすばらしい解決方法がありました。(ありがとうございます!)

STBBS.NET blog: Xenで複数のネットワークインターフェイスを domUに提供する
http://www.stbbs.net/blog/2007/03/xen-domu.html

上記サイトのとおりに対応してみたところ、今度はxend自身が立ち上がらなくなってしまいました…。どうやら2枚目のNICをブリッジするところで何か問題が起きているようです。試しにvifnum=0だけを立ち上げるようにしたらうまく起動できたのですが、何故か本来作成されないはずのxenbr1が作成されています。/etc/xen/scripts/network-bridgeに"-x"を付けて実行し、ログ(/var/log/xen/xend-debug.log)を見てみてもxenbr1なんて作成していない…何でしょこれ?

いろいろ試行錯誤してみた結果、先にvifnum=1をブリッジするようにすればうまく立ち上がるようです。と言うわけで、私の場合は以下のように対応しました。

まずは以下のようなスクリプトを作成します。
これはNICが2枚の時用なので、3枚以上の環境では適宜変更してください。

/etc/xen/scripts/network-bridge2
#!/bin/sh
dir=$(dirname "$0")
"$dir/network-bridge" "$@" vifnum=1
"$dir/network-bridge" "$@" vifnum=0

作成したら実行権限をつけておきましょう。
chmod 755 /etc/xen/scripts/network-bridge2

次にxendの設定ファイルである /etc/xen/xend-config.sxp を開き、ネットワークスクリプトの呼び出し部分を以下のとおり変更します。(呼び出すスクリプトを既存のものから先ほど作成したものに変更します)
(network-script network-bridge)
  ↓ 変更
(network-script network-bridge2)

これでOKです。

ブリッジする順序に関しては普通は気にしなくていいと思います。
(kenyaさん@試作の環境では全く問題を起こさなかったので)

以下のサイトもすごく参考になりました。

第3回 Xenによる仮想環境のネットワーク構築:ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/20061010/250215/?P=1&ST=cpu

−追記:2008/01/25−
間違いだらけだったので大幅に書き直しました。


posted by 月水和尚 (とも) at 11:07 | Comment(6) | TrackBack(1) | Xen/仮想化全般
この記事へのコメント
手順ありがとうございます!

僕の環境ではnetwork-bridge自体は修正しなくても大丈夫でした。

ところで、ハングする件、これに該当しませんか?
http://gentoo-wiki.com/HOWTO_Xen_and_Gentoo#System_Freezing_on_Reboot

/etc/conf.d/rcの中で

RC_NET_STRICT_CHECKING="lo"

を指定するようです。
これ、結局設定したんでしたっけ?
Posted by kenya at 2008年01月23日 18:57
あ゛〜、分かった!!

おいらの環境はそもそものnetの設定が間違えてるんだ。
カード2枚ともデフォルトゲートウエイ切ってるよ…。orz
お詫びして訂正。つーかハズカシイ。(汗)

RC_NET_STRICT_CHECKINGはloになってるよ。
このアホなネットワーク設定を直せば解消しそうな悪寒。
Posted by tomo at 2008年01月23日 21:07
ネットワーク設定を直してnetwork-bridgeを元に戻したらxendが上がんなくなっちゃった。(涙) 変更した直後は手動では上げられたんだけど、今は自動だろうが手動だろうが100%失敗しますわ。network-bridgeを元に戻したせいではなさそうなので何が原因だろう…。xend入れ直してみるかなぁ。
Posted by tomo at 2008年01月24日 16:03
何か変だ…。
network-bridge2の中身を、

#!/bin/sh
dir=$(dirname "$0")
"$dir/network-bridge" "$@" vifnum=0 netdev=eth0

にしてもxenbr1が出来てしまう…。
network-bridgeに-x付けてxend-debug.log見てみてもxenbr1を作ったりしてないんだよなぁ。これが先に出来ちゃうせいでeth1のブリッジに失敗してるような気がする。何だろな〜。
Posted by tomo at 2008年01月24日 18:13
xenbr0はできちゃってるんですか?

/etc/udev/rules.d/70-persistent-net.rules

とかに、変な設定が書かれていたりしませんかねぇ。
僕も灼熱蟹NICをBIOSからオフったのにVT6122のカードがeth1から認識されて、おや、と思ってここを見ました。

Posted by kenya at 2008年01月28日 13:36
いや、xenbr0はxendを起動するまでは出来ないよ。
本来vifnum=0で動かしたら作成されるのは(ブリッジに限れば)xenbr0だけのはずなのに、何故かxenbr1も出来てしまうのだ。シェルの動きを追ってみたものの全然原因不明…。とほほ。

udevルールは見てみたけど書いてありませんでした。
同じ「おや?」で1年くらい前に大ハマりしました…。
Posted by tomo at 2008年01月30日 13:58
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック

Xen(Domain-U)で複数のネットワークインターフェイスを使う
Excerpt: こんにちは。猫ITソリューションズ取締役のメイ(♀)です。 本日は、Xen(Domain-U)で複数のネットワークインターフェイスを使うについてです...
Weblog: 猫ITソリューションズ
Tracked: 2009-04-09 20:22
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。