KVM 虚拟机故障排除一例

标签: Tips KVM | 发表时间:2010-03-19 19:34 | 作者:Toy 火锅土豆
出处:http://linuxtoy.org

{ 撰文/逸飞 }

笔者在部署 KVM 虚拟机时曾遇到一个奇怪的问题,几经探索之后终于解决,现在写出来跟大家分享一下。

笔者在单位部署了一台服务器,上面运行着几部 KVM 虚拟机,分别执行不同的任务。系统上线之后,需要再增加几部虚拟机。因为当初部署服务器时做了虚拟机备份,所以就复制了一个备份的虚拟机。可是新虚拟机启动之后无法在本地网络上找到新虚拟机的 IP 地址(本地网络采用 DHCP 分配 IP 地址)!因为服务器是远程控制的,当然新虚拟机也就无法使用了。

为了查找原因,笔者把虚拟机复制到本地主机上,用正常方法开启。启动过程及登录都很正常,于是检查网卡状况:

$ ifconfig

可是却只有显示 lo 信息! 怪了,eth0 呢?只有 lo 当然是没有办法同网络通讯的。于是查找一下启动信息:

$ dmesg | grep eth

发现如下信息:

udev: renamed network interface eth0 to eth1

原来 eth0 已经没有了,被命名为 eth1, 再看网卡配置

$ 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,这就是虚拟机启动后的网卡 mac,因为网络内不可以有相同的 mac,所以启动每个虚拟机的 mac 都要改。可是当换了新的 mac 后,虚拟机里的系统就认为换了新网卡,所以系统改变 eth0 为 eth1,而在网卡设置里面却只设置了 eth0, 所以虚拟机启动之后并没有启动新的 eth1 网卡,当然就连不上网络了。原因找到了之后问题的解决也就非常简单:

$ vi /etc/network/interfaces

增加以下内容:

auto eth1
iface eth1 inet dhcp

再重新启动网络:

$ /etc/init.d/networking restart

至此问题应该就完全解决了。不过有个问题还要注意,如果有多次用不同的 mac 启动虚拟机,可能你的虚拟机里已经有了 eth2, eth3 甚至是 10 都是有可能的,因为你每用一个新的 mac 去启动虚拟机,系统就会增加一个网卡。可以修改下面这个文件:

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

删除所有的的 ethX 行,重启虚拟机即可。

{ Thanks 逸飞. }

Filed under: Tips | Permalink | Add to del.icio.us | Email this | 8 comments

相关 [kvm 虚拟机] 推荐:

KVM 虚拟机故障排除一例

- 火锅土豆 - LinuxTOY
笔者在部署 KVM 虚拟机时曾遇到一个奇怪的问题,几经探索之后终于解决,现在写出来跟大家分享一下. 笔者在单位部署了一台服务器,上面运行着几部 KVM 虚拟机,分别执行不同的任务. 系统上线之后,需要再增加几部虚拟机. 因为当初部署服务器时做了虚拟机备份,所以就复制了一个备份的虚拟机. 可是新虚拟机启动之后无法在本地网络上找到新虚拟机的 IP 地址(本地网络采用 DHCP 分配 IP 地址).

KVM进阶

- - CSDN博客云计算推荐文章
Linux 既有良好的灵活性,在虚拟化方面同样出色. 但是最近,随着内核虚拟机(KVM)的出现,Linux 虚拟化的前景发生了变化. KVM 是构成主流 Linux 内核(V2.6.20)一部分的第一个虚拟化解决方案. KVM 支持 Linux 客户操作系统的虚拟化 —— 甚至支持其硬件对虚拟化敏感的 Windows 系统的虚拟化.

虚拟化技术对比:Xen vs KVM

- - 操作系统 - ITeye博客
对服务器的虚拟化不知道使用哪个,可以参考这篇文章,包括世纪互联也是用的xen进行虚拟化. OpenStack与KVM相互辉映. OpenStack几乎支持所有的虚拟化管理程序,不论是开源的(Xen与KVM)还是厂商的(Hyper-V与VMware). 但在以前,OpenStack是基于KVM开发的,KVM常常成为默认的虚拟机管理程序.

让鼠标破「窗」而出的免费 Microsoft KVM 程序(影片)

- Marco - Engadget 中国版
想要在多台计算机间使用相同的鼠标与键盘的 KVM 功能,目前大多都仍需倚靠硬件帮助. 现在,Microsoft Garage 的一名越南籍开发者有个更棒的点子,他在工作之余完成让各系统间,可以透过网络连接的方式互相分享同一组鼠标键盘,如同一台具备多屏幕的计算机一般. 通过 Redmond 所研发的程序,除了鼠标键盘可以无缝共享外,还可达成多系统间直接复制文字、拖移复制档案等操作,更可轻易同时锁定所有系统.

讓滑鼠破「窗」而出的免費 Microsoft KVM 程式(影片)

- Jeshuang - Engadget 中文版
想要在多台電腦間使用相同的滑鼠與鍵盤的 KVM 功能,目前大多都仍需倚靠硬體幫助. 現在,Microsoft Garage 的一名越南籍開發者有個更棒的點子,他在工作之餘完成讓各系統間,可以透過網路連接的方式互相分享同一組滑鼠鍵盤,如同一台具備多螢幕的電腦一般. 透過 Redmond 所研發的程式,除了滑鼠鍵盤可以無縫共用外,還可達成多系統間直接複製文字、拖移複製檔案等操作,更可輕易同時鎖定所有系統.

KVM虚拟化技术发展史及未来

- - 服务器运维与网站架构|Linux运维|互联网研究
2008年9月,红帽收购了一家名叫Qumranet的以色列小公司,由此入手了一个叫做KVM的虚拟化技术(KVM,全称Kernel-based Virtual Machine,意为基于内核的虚拟机). 当时的虚拟化市场上主要以VMware为主,而KVM只是在Ubuntu等非商用发行版上获得了一些关注.

Linux虚拟化技术Xen和KVM的优势特点对比

- - 服务器运维与网站架构|Linux运维|互联网研究
Linux虚拟化技术的用户目前有两种免费的开源管理程序可以选择:Xen和KVM. 作为较早出现的虚拟化技术,Xen是“第一类”运行在裸机上的虚拟化管理程序(Hypervisor),也是当前相当一部分商业化运作公司的基础技术,其中包括Citrix系统公司的XenServer和Oracle的虚拟机. Xen技术的倡导者们声称Xen的性能强劲,并且拥有一个广泛的管理工具和能够交付卓越性能,以及其它诸多优点.

xen、kvm、vmware、hyper-v等虚拟化技术的比较

- - haohtml's blog
最近在实战Xen中,这篇文章是最近在网上看到的,发出来分享一下. xen和kvm,是开源免费的虚拟化软件. vmware是付费的虚拟化软件. hyper-v比较特别,是微软windows 2008 R2附带的虚拟化组件,如果你买了足够的授权,hyper-v(包括hyper-v 2008 core)都可以免费使用.

Java虚拟机家族考

- ReadReply - 博客园新闻频道
  说起Java虚拟机,许多Java程序员都会潜意识地把它与Sun[1] HotSpot虚拟机等同看待,也许还有一些程序员会注意到BEA JRockit和IBM J9,但大多数人对JVM的认识都仅限于此了.   从1996年初Sun发布的JDK 1.0中所包含的Sun Classic VM算起,Java虚拟机已经发展了15个年头,沧海桑田一瞬间,15年转眼而过,这期间曾经涌现、湮灭过许多或经典或优秀或有特色的虚拟机实现,在《Java虚拟机专栏》的第1篇中,我们先暂且把代码与技术放下,一起来回顾一下Java虚拟机家族的发展轨迹和历史变迁.

Python 虚拟机实现(一)

- xcv58 - python.cn(jobs, news)
python并不将py文件编译为机器码来运行,而是由python虚拟机一条条地将py語句解释运行,这也是为什么被称为解释语言的原因之一. 但python虚拟机并不直接执行py語句,它执行编译py語句后生成的字节码. 本篇简单地讲下编译、运行的过程,涉及到的内容有如何编译、控制流、函数及类的实现等. python将py文件编译成为PyCodeObject,再将这个对象写入某文件就成为了pyc文件,文件中包含python的magic number(来说明编译时使用的python版本号)、源文件的mtime(使pyc和py文件保持同步)、编译出的code对象.