Kenichi Maehashi's Blog
脳内コアダンプ
KVM: VM を起動・終了するとホスト側の SSH の応答が一時的に無くなる
Sunday | August 8, 2010
|
(追記) この問題は libvirt-0.6.3-33.el5_5.3 で解消されました(CentOS 5.x でも利用可能になっています)。
環境は CentOS 5.5 (x86_64)、libvirt-0.6.3-33.el5_5.1、bridge-utils-1.1-2。KVM と書きましたが、libvirt の問題なので Xen でも同様かと思われます。 ここでは、VM をブリッジ接続している状況 ... 例えば br0 に対して eth0 (実際のネットワークに接続するインターフェース) と vnet0 (仮想マシンのインターフェース) を enslave させているような場合 ... を前提としています。
さて、virsh でゲストを start したり destroy したりすると、ホスト側の SSH が一時的に応答しなくなる場合があります。この問題は、ブリッジに接続しているインターフェースが変更されるとブリッジの MAC アドレスが変更されてしまうことに起因します。具体的には、- (Linux の)ブリッジは enslave された Ethernet インターフェースの持つ MAC アドレスのうち、一番小さいものをブリッジの MAC アドレスとして採用する
- libvirt は vnetX に対してランダムに MAC アドレスを付与する(*1)
- よって、VM が start ないし destroy され、ブリッジに参加しているインターフェースが変更されたとき、ブリッジの MAC アドレスが変更されてしまう場合がある
ということです。
これによって問題が生じるのは、そのブリッジインターフェースに割り当てた IP アドレスを使用して何らかのネットワークサービス(SSH による管理などを含む)を提供している場合です。このケースでは、MAC アドレスが頻繁に変更されるのは好ましくありません(クライアントは ARP キャッシュの期限が切れるまでアクセスできなくなってしまうため)。
この問題は既に報告されており、仮想マシンに付与する MAC アドレスの 1 オクテット目を FE にすることで対処されるようです。2010-07-26 に Fixed In Version: libvirt-0.6.3-35.el5 になっていますが、RHEL5 にもまだ出ていないようなので、CentOS で提供されるまではもうちょっとかかりそうですね(*2)。
(*1) ランダムと言っても locally administered フラグは立っているので、(実際のネットワークに接続する)Ethernet インターフェースの MAC アドレスの 1 オクテット目が 00 で始まる場合、問題は起きません(Lucky you!)。今回トラブルが起きたのは HP ML110 G5 の on-board NIC で、OUI が 78:E7:D1 となっていました。 (*2) 個人的には、とりあえず、ifcfg-eth0 に MACADDR=02:00:00:00:00:00 と書いてしまうことにしました(locally administered な MAC アドレスの中で最小なので、ブリッジ中で常に最小であることが保証される)。KVM ホストが複数ある場合は悩ましいですね...。
|
| コメント (2)
|
| コメント |
by G5 2010/08/23
大変参考になりました。ありがとうございます。 同じくML115 G5でKVMを試しており、同じ問題で困っていました。
ただ、Ubuntu10.04のlibvirt 0.7.5-5ubuntu27.2 では 対応されておらず、手動での解決を必要としました。
eth0へlocally administered なMACアドレスの付与も考えましたが ブリッジインターフェースは固定MACアドレスを設定すると 自動付け替え行わなわなくなるとの情報を以下で見つけ
http://backreference.org/2010/07/28/linux-bridge-mac-addresses-and-dynamic-ports/
次のような対処をしました。
--- /etc/network/interfaces --- auto eth0 iface eth0 inet manual
auto br0 iface br0 inet static hwaddress ether 78:e7:d1:xx:xx:xx (eth0のMACを指定) address 10.0.0.2 netmask 255.255.255.0 gateway 10.0.0.1
bridge_ports eth0 bridge_stp off bridge_fd 0 bridge_maxwait 0
今のところこの設定で安定しております。 ご参考まで。
|
by Kenichi Maehashi 2010/08/24
>> G5 さん 参考になったようで何よりです。 また、Ubuntu での情報ありがとうございます。
CentOS 5 では MACADDR=(eth0 と同じ MAC アドレス) を使用して br0 の MAC アドレスを固定しても、MAC アドレス書き換えの問題は起こってしまうようです。CentOS は kernel のバージョンが 2.6.18 と古いので、そのためかもしれません。
|
| |
<< 前ページ[1]
トップページに戻る
Copyright © 2006-2021 Kenichi Maehashi, All Rights Reserved.