您的位置:首页 > 运维架构 > Linux

克隆虚拟机导致Linux无法启动网卡的分析与解决

2013-04-05 02:26 639 查看
在公司克隆linux虚拟机可以直接编辑网卡配置文件直接使用,在家就不行,有点郁闷,然后在网上查了下资料,试了下,下面总结了下网卡无法启动的原理和解决方法:

报错信息:Device eth0 does not seem to be present,delaying initialization.





原理分析: 做什么事咱得知道原理才能真正搞明白是不,其实这个Vmware克隆挺智能的,它在克隆新虚拟机的时候,会自动为新克隆虚拟机配置一个与原来虚拟机不同MAC地址的网卡;

很多Linux发行版使用udev动态管理设备文件(关于udev请查看百科http://baike.baidu.com/view/755910.htm),并根据设备的信息对其进行持久化命名,例如:RedHat6.3中,udev会在系统引导过程中识别网卡,将mac地址和网卡名称对应起来记录在udev的规则脚本中(文件在/etc/udev/rules.d/70-persistent-net.rules中)。而VMware克隆会自动生成虚拟机的新MAC地址。所以现在新虚拟机网卡MAC地址已经和原先不同,但/etc/udev/rules.d/70-persistent-net.rules配置文件中记录的MAC还是以前的MAC地址,也就是说上图这个报错信息真正的意思是系统MAC地址和配置文件记录MAC地址不一致有冲突导致重启网卡有问题

这样,由于基本系统的虚拟机已经记录了该虚拟机的网卡mac地址对应于网卡eth0,在克隆出的虚拟机中由于mac地址发生改变,udev会自动将该mac对应于网卡eth1。以此类推,udev会记录所有已经识别的mac与网卡名的关系,所以每次克隆网卡名称会自动加1,而其实kernel仅仅只识别到一张网卡,跟网卡名相关的网络配置也未发生任何变化。

解决方法:1、你如果实在不理解上面说的乱七八糟的原理,这有一个最简单的方法,直接删除/etc/udev/rules.d/70-persistent-net.rules配置文件内容、或直接删除此文件,然后reboot,系统会重新生成最新配置文件

2、这个方法也很简单,你在新虚拟机里,把rules文件里删除或注释掉原先老MAC和eth0对应的那一行,然后把新MAC和eth1对应那行,修改eth1为eth0,这样你/etc/udev/rules.d/70-persistent-net.rules文件记录和/etc/sysconfig/network-script/ifcfg-eth0文件记录想匹配,然后reboot,大功告成!

这里有点注意的是:如果你网卡配置文件里也有MAC记录的话,最好把新MAC替换掉旧MAC、或直接省事把MAC记录给删了就OK。

两种方法我都成功试过,我用的是RHEL6.3系统,这是我配置成功后的截图,这里我直接把网卡配置里MAC记录给删了,然后因为我是有两个网卡,所以克隆后产生了4段MAC记录,按照递推第三和第四段落分别就是我的eth0、eth1网卡







吴晗.2013.4.5 凌晨1:58完成

本文出自 “夜归人” 博客,请务必保留此出处http://wuhan1.blog.51cto.com/6140015/1171271
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: