11 April 2009

问题是这样的:

创了一个虚拟机,里面跑SuSE Linux,整个虚拟机拿给别人用的时候,会碰到copy还是move这样的疑问,目前看来,最大的区别在于网卡的MAC地址。如果是copy,MAC地址会重新生成,udev也会重新创建一个网络设备名,原来是eth0的话,现在就是eth1,这个还不是最关键的问题,关键在于SuSE Linux的网络配置文件名是和MAC地址绑定的,所以MAC地址变了,这个配置文件名也要相应地改变;如果是move,MAC地址保持不变,一切都没有问题,但是如果同一个虚拟机在一个主机上move两次,嘿嘿,MAC可就要冲突了。

简单来说,有两个解决方案:

  1. 每次都选择move,根本就不支持一个虚拟机在一个主机上move两次,也就是说,从我这里release出去的不同版本不能同时启动。
  2. 每次都选择copy,提供一个脚本修改网络配置文件名。

对于第二个解决方案,脚本的内容大致是这样:

1
2
3
4
5
6
7
#!/bin/sh
 
suffix=`ifconfig | grep 'HWaddr' | awk '{print tolower($5)}' | sed 's/:/\\:/g'`
 
mv /etc/sysconfig/network/ifcfg-eth-id-* /etc/sysconfig/network/ifcfg-eth-id-$suffix
 
/etc/init.d/network restart


blog comments powered by Disqus