KVM仮想マシンのトラブルシューティングの一例

2671 ワード

{執筆/はねる}
筆者はKVM仮想マシンを導入する際に奇妙な問題に遭遇し、いくつかの探索を経てやっと解決し、今書いて皆さんと共有します.
筆者は職場に1台のサーバーを配置し、KVM仮想マシンをいくつか実行し、それぞれ異なるタスクを実行しています.システムがオンラインになったら、仮想マシンをいくつか追加する必要があります.サーバの導入時に仮想マシンのバックアップが行われたため、バックアップされた仮想マシンがコピーされました.しかし、新しい仮想マシンが起動した後、ローカルネットワーク上で新しい仮想マシンのIPアドレスを見つけることができません(ローカルネットワークはDHCPを採用してIPアドレスを割り当てます)!サーバはリモート制御なので、もちろん新しい仮想マシンも使用できません.
原因を調べるために,筆者は仮想マシンをローカルホストにコピーし,通常の方法でオンにした.起動プロセスとログインは正常で、NICの状況を確認します.
$ ifconfig

しかし、lo情報を表示するしかありません!おかしい、eth 0は?loだけはもちろんネットワークと通信できません.起動情報を検索します.
$ dmesg | grep eth

次の情報が見つかりました.
udev: renamed network interface eth0 to eth1

もとはeth 0はすでになくて、eth 1と命名されて、更にネットカードの配置を見ます
$ cat /etc/network/interfaces
auto eth0
iface eth0 inet dhcp

これで、KVMは起動時にmacパラメータを伝達していたことが明らかになりました.例えば、筆者は以下のコマンドでKVM仮想マシンを起動しました.
$ sudo kvm -m 256 -hda /data/kvm/mail.img -net nic,vlan=0,macaddr=52-54-00-12-30-05 -net tap,vlan=0,ifname=tap5,script=no -boot c -smp 2 -daemonize -nographic &

上のmacaddr=52-54-00-12-30-05に注意してください.これが仮想マシンの起動後のNIC macです.ネットワーク内に同じmacがあってはいけないので、各仮想マシンを起動するmacは変更します.しかし、新しいmacを交換すると、仮想マシンのシステムは新しいNICを交換したと思っているので、システムはeth 0をeth 1に変更し、NICの設定にはeth 0しか設定されていないので、仮想マシンが起動してから新しいeth 1 NICを起動していないので、もちろんネットワークに接続できません.原因が見つかったら、問題の解決も簡単です.
$ vi /etc/network/interfaces

以下を追加します.
auto eth1
iface eth1 inet dhcp

ネットワークの再起動:
$ /etc/init.d/networking restart

これで問題は完全に解決したはずだ.しかし、異なるmacで仮想マシンを複数回起動すると、新しいmacで仮想マシンを起動するたびに、システムにNICが追加されるため、eth 2、eth 3、さらには10が可能になる可能性があります.次のファイルを変更できます.
$ vi /etc/udev/rules.d/70-persistent-net.rules

すべてのethX行を削除し、仮想マシンを再起動すればいいです.
{Thanks逸飛.}
Filed under: Tips | Permalink | Add to del.icio.us | Email this | 8 comments