随机生成 Xen 虚拟机的 MAC 地址
2010年03月19日 | 标签: python, xen | 作者:vpsee
如果不在创建 Xen 虚拟机(domU)的时候指定 MAC 地址的话,Xen 就会随机生成一个 MAC 地址给虚拟机,这样管理员就没办法知道虚拟机的 MAC 地址了,不利于以后带宽的统计和虚拟机的管理,所以最好就在 Xen 虚拟机配置文件中直接指明虚拟机的 MAC 地址,比如:
# vi /etc/xen/vpsuser1 vif = [ "mac=00:16:3e:0c:11:53,ip=172.16.16.200,bridge=xenbr0" ]
IEEE OUI 为 Xen domU 保留了一段 MAC 地址,前3段是 “00-16-3e”,后3段是随机的,其中第1个随机段的第1个 bit 是0(IEEE OUI 给 VMware 保留的前3段地址是 “00-0c-29”,后3段随机)。我们在为用户分配 MAC 地址时候不想有规律的分配(虽然也不会有什么安全问题),所以 VPSee 写了一个简单的 Python 脚本用来随机生成符合 Xen 虚拟机标准的 MAC 地址:
#!/usr/bin/python # generates a MAC address for Xen domU # http://www.vpsee.com # import random mac = [ 0x00, 0x16, 0x3e, random.randint(0x00, 0x7f), random.randint(0x00, 0xff), random.randint(0x00, 0xff) ] s = [] for item in mac: s.append(str("%02x" % item)) print ':'.join(s)
请教一下你们是怎么生成虚拟机的?是不是先准备好一个初始的image文件,如果有需要就拷贝出一个新的image,然后修改其中的ip、hostname等信息,再xm create;
另外,如果只有几台机器还好管理,如果物理机达到几十、上百台,你们又是怎么管理的呢?有统一的界面,还是挨个ssh上去管理的?
自己先做个模版,用 lvcreate 创建虚拟机逻辑卷,然后修改模版中的 ip, hostname, network 等信息,然后拷贝模版下 / 下所有内容到新建的分区就可以了。当然,可以写个脚本来自动完成这个过程。
挨个 ssh 管理会累死人的,如果是统一管理的话,可以用 puppet 或 chef.
好的,多谢
请教一下,你这里说的模板是指虚拟机配置文件还是指虚拟机镜像文件?
虚拟机镜像文件。
请教vpsee:
在哪里可以看到新建DOM-U的MAC地址?
可以进入 domU 后用 ifconfig 查看 mac 地址。也可以在外面的配置文件中明确指定 domu 的 mac 地址。
请教vpsee:
上面讲的方法只适用于linux虚拟机吧,对windows怎么做呢?
windows 也是一样的啊,在 xen host 上指定 MAC 地址,guest 运行 linux 还是 windows 无所谓。