主标题: VMware/vSphere制作模板操作系统

副标题: VMware/vSphere克隆主机网卡启动失败

VMware/vSphere中新安装好的虚拟机把以下两个文件添加注释后关机,即可转换为虚拟机模板

[root]# cat /etc/udev/rules.d/70-persistent-net.rules# SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:50:56:8c:19:a6", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"# 注释此行 SUBSYSTEM# 多块网卡时会有多个SUBSYSTEM, 全部注释即可[root]# cat /etc/sysconfig/network-scripts/ifcfg-eth0# HWADDR=00:50:56:8C:19:A6# 注释此行 HWADDR# 多块网卡时会有ifcfg-eth1,ifcfg-eth2等, 把全部文件中的HWADDR项注释

注释后关机,把服务器转换为模板或者用来克隆主机, 系统启动后,所有网卡会正常启动并获取IP地址.

读者不用担心注释这两项内容会对操作系统有不良影响, 大胆去做, 下文会解释.

vSphere 系统转换为模板步骤: 右击主机(关机状态)->模板->克隆为模板/转换为模板
VMware 克隆主机步骤: 右击主机(关机状态)->管理->克隆
 

克隆主机网卡启动失败的原理:

CentOS系统启动的时候,会探测网卡MAC地址并写入/etc/udev/rules.d/70-persistent-net.rules,例如前文的就是 "00:50:56:8c:19:a6", 它对应的网卡接口是eth0. 网卡文件/etc/sysconfig/network-scripts/ifcfg-eth0 , DEVICE=eth0 对应的同样是 00:50:56:8C:19:A6 .所以 ifcfg-eth0 和 70-persistent-net.rules 两个文件中的eth0和MAC地址映射关系是一样的.
vmware或vSphere克隆操作系统,会给网卡分配一个新MAC地址,比如新MAC是 01:50:56:8C:19:A6. 那么原来的"00:50:56:8c:19:a6"已经不复存在了. 操作系统启动以后探测到这个MAC地址后继续写入70-persistent-net.rules文件中,并按照eth0,eth1,eth2的顺序依次来命名. 原来已经存在eth0. 所以新MAC地址 01:50:56:8C:19:A6 则会对应eth1. 但是 ifcfg-eth0 对应的是HWADDR地址 00:50:56:8C:19:A6 (旧). 这是导致网卡启动失败原因, 因为MAC地址和eth0的对应关系就错乱了. 因此, 70-persistent-net.rules的MAC和eth0的对应关系和 ifcfg-eth0文件中的HWADDR 和eth0的对应文件保持一致, 那么网络启动就没有问题. 需要注意的一点就是MAC地址要以70-persistent-net.rules文件的为基准, ifcfg-eth0的 HWADDR 只是方便人查看的.
所以, 注释 70-persistent-net.rules 的内容是为了系统在启动的时候探测到新MAC地址并对应eth*时, 保持从eth0起始命名的顺序. 而注释 ifcfg-eth0 的 HWADDR 是为了使ifcfg-eth0 可以映射任意的新MAC而并非固定一个. 所以 系统启动后的, 新MAC -> eth0 -> ifcfg-eth0 .