随着centos 6.X版本的普及,很多服务器上也开始将之前的centos 5.X升级安装成centos 6.X 。最近在对公司新购的一批DELL R720服务器安装完centos 6.3版本后,发现原先熟悉的eth0、eth1变成了em1、em2 。

本来认为只是接口名称变化,并不伤大雅 。不过在放到机房之前进行LVS测试时,发现通过ipvsadm -ln命令,竟然找不到一台在线主机。就连local都不在列表内。

1[root@localhost ~]# ipvsadm -ln
2IP Virtual Server version 1.2.1 (size=4096)
3Prot LocalAddress:Port Scheduler Flags
4  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
5TCP  192.168.1.8:80 wrr persistent 3600

而拿DELL 2950主机测试,发现一切正常。使用配置和系统完全相同,不同的就是接口名,2950上是eth0这样的。即然找到原因,就考虑测试如何在DELL R720上将网卡名改过来。通过在网上查找资源,后来找到如下方法解决:

1、修改grub文件

1vim /boot/grub/grub.conf
2#增加一个 biosdevname=0 的启动参数
 1# grub.conf generated by anaconda
 2#
 3# Note that you do not have to rerun grub after making changes to this file
 4# NOTICE:  You have a /boot partition.  This means that
 5#          all kernel and initrd paths are relative to /boot/, eg.
 6#          root (hd0,0)
 7#          kernel /vmlinuz-version ro root=/dev/sda2
 8#          initrd /initrd-[generic-]version.img
 9#boot=/dev/sda
10default=0
11timeout=5
12splashimage=(hd0,0)/grub/splash.xpm.gz
13hiddenmenu
14
15title CentOS (2.6.32-220.17.1.el6.x86_64)
16        root (hd0,0)
17        kernel /vmlinuz-2.6.32-279.14.1.el6.x86_64 ro root=UUID=459a3c61-c024-4578-b31e-5b24153842c0 rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quietyrheb-sun16 rhgb crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM biosdevname=0
18        initrd /initramfs-2.6.32-220.17.1.el6.x86_64.img
19
20title CentOS (2.6.32-220.el6.x86_64)
21        root (hd0,0)
22        kernel /vmlinuz-2.6.32-279.el6.x86_64 ro root=UUID=459a3c61-c024-4578-b31e-5b24153842c0 rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM quiet SYSFONT=latarcyrheb-sun16 rhgb crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM biosdevname=0
23        initrd /initramfs-2.6.32-220.el6.x86_64.img

只修改两个kernel行最后biosdevname=0这部分内容。

2、删除udev的配置文件

1rm -f /etc/udev/rules.d/70-persistent-net.rules

3、修改当前网卡配置文件的名称

1mv ifcfg-em1 ifcfg-eth0
2mv ifcfg-em2 ifcfg-eth1
3mv ifcfg-em3 ifcfg-eth2
4mv ifcfg-em4 ifcfg-eth3

4、修改网卡配置文件内容,把em1全部修改改为eth0

 1修改前:
 2DEVICE="em1"
 3NM_CONTROLLED="yes"
 4ONBOOT=yes
 5HWADDR=DD:AE:52:8A:8F:74
 6TYPE=Ethernet
 7BOOTPROTO=none
 8IPADDR=115.X.X.X
 9GATEWAY=115.X.X.X
10NETMAKS=255.255.255.224
11DNS1=8.8.8.8
12DEFROUTE=yes
13IPV4_FAILURE_FATAL=yes
14IPV6INIT=no
15
16修改后
17DEVICE="eth0"
18NM_CONTROLLED="yes"
19ONBOOT=yes
20HWADDR=DD:AE:52:8A:8F:74
21TYPE=Ethernet
22BOOTPROTO=none
23IPADDR=115.X.X.X
24GATEWAY=115.X.X.X
25NETMAKS=255.255.255.224
26DNS1=8.8.8.8
27DEFROUTE=yes
28IPV4_FAILURE_FATAL=yes
29IPV6INIT=no

也可以使用 perl -p -i -e 's/em1/eth0/g' ifcfg-eth0 或sed -i 's/em1/eth0/g' ifcfg-eth0 进行替换。接下来重启系统,发现久违的eth0又回来了。

注:centos 6.X 还有一个问题就是如果你没有在网卡配置文件里写dns的话,重启之后你就会发现 /etc/resolv.conf 文件被清空了。一个方法就是在网卡配置文件中写DNS;另一个方法就是给/etc/resolv.conf加i属性,chattr +i /etc/resolv.conf 。

参考页面:http://fedoraproject.org/wiki/Features/ConsistentNetworkDeviceNaming