当克隆或者重装虚拟机后,再启动系统时会发现系统下不再有eth0,而变成了eth1,当使用/etc/init.d/network重启网络时,会提示找不到设备eth0及eth1的启动脚本。

做以下改动:

/etc/sysconfig/network-scripts/ifcfg-eth0重命名为/etc/sysconfig/network-scripts/ifcfg-eth1

/etc/init.d/network restart 提示找不到eth0

发现脚本中的device一项没有改过来,将其改为eth1(或者删掉)

/etc/init.d/network restart 提示网卡的物理地址不匹配

/etc/sysconfig/network-scripts/ifcfg-eth0中的mac地址为原来eth0网卡的物理地址,而虚拟机为eth1分配新的物理地址,故启动脚本中的信息与实际信息时不匹配的,将MAC的地址信息从脚本中删除,再次重启网络,OK!

为什么原来的eth0会变成eth1?

很多Linux distribution使用udev动态管理设备文件,并根据设备的信息对其进行持久化命名。udev会在系统引导的过程中识别网卡,将mac地址和网卡名称对应起来记录在udev的规则脚本中。而对于新的虚拟机,VMware会自动为虚拟机的网卡生成MAC地址,当你克隆或者重装虚拟机软件时,由于你使用的是以前系统虚拟硬盘的信息,而该系统中已经有eth0的信息,对于这个新的网卡,udev会自动将其命名为eth1(累加的原则),所以在你的系统启动后,你使用ifconfig看到的网卡名为eth1。

如何把名字改回eth0?

在fedora 11中,udev记录网络规则的脚本为:/etc/udev/rules.d/70-persistent-net.rules

打开该文件,这时你会发现,里面有eth0,eth1两个网卡的信息,但实际上你ifconfig时只能发现eth1一个网卡的信息,这时因为eth0根本就不存在。

将其中eth0的信息删掉,并将eth1信息中的设备名改为eth0,重启系统,你看到的网卡就是eth0了,或者删掉其中所有的信息重启系统udev会帮你发现新的设备的。

 

----------------------------------------

VMware 下复制vm之后,出现eth0 网卡找不到,会随着复制的次数依次改为eth1,eth2等

问题 :在Vmware装了linux(redhat or centos),复制或者保存ovf文件重新deploy之后,发现找不到网卡eth0,

在输入ifconfig–a的时候,,查看eth0的时候,提示我no device found(设备没法找到),而是会顺次将网络信息配置在eth1,再次复制会出现eth2,依次类推。。。

 

解决方法:

为什么会产生这个问题呢,还需要从UUID谈起(UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成UUID的API),虚拟机同样会有一个UUID,而且这个UUID是唯一的。

虚拟机的UUID一般和虚拟机配置文件的位置和物理主机有关。当我们对一个虚拟机系统做移动操作的时候,我们不需要新建一个UUID。让我们复制一个虚拟机的时候我们应该选择建立一个新的UUID,来保证此虚拟机的唯一性

 

而当我们copy的时候,VM自然会为我新建一个UUID,一些新的Linux版本是把以太网与Mac地址绑定,当新的UUID建立的时候,Mac地址就被改变了,但由于eth0设备所装载的配置与读取默认配置的Mac地址不一致。

另外的解决方案:进入/etc/sysconfig/network或者/etc/sysconfig/network-scripts,编辑eth0配置文件。比较在配置文件里面的Mac地址与输入ifconfig输出的mac地址,如果两者不一致,统一为ifconfig输出的mac地址,然后重启

 

sudo rm /etc/udev/rules.d/70-persistent-net.rules能够成功的原因:

该文件的内容:

# This file was automatically generated by the /lib/udev/write_net_rules
# program run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single line.

# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rule written by anaconda)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:d2:3f:2c", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:87:43:18", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:87:43:22", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2"

# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:c8:3a:15", ATTR{type}=="1", KERNEL=="eth*", NAME="eth3"

 

将这个/etc/udev/rules.d/70-persistent-net.rules删除,重启,网卡eth0成功启动,并重新生成/etc/udev/rules.d/70-persistent-net.rules文件

 或者

修改这个文件:/etc/udev/rules.d/70_persistent-net.rules

把eth1修改为eth0,记下里面的mac地址

修改/etc/sysconfig/network-script/ifcfg-eth0中的mac字段

重启

 

 

posted on 2016-07-25 23:09  asker7  阅读(738)  评论(0)    收藏  举报

asker7