我有种机器,有 4 个网卡,想在上面整 4 个虚拟机。所以让不同的虚拟机,使用不同的网卡。这样来做桥接设备。方便使用。记录一下方法,如下。
1.安装 xen 虚拟化
最开始当然得使用软件源来安装虚拟化。用 163 的吧,速度不错。
perl -i -pe 's/mirror.centos.org/mirrors.163.com/g;s/^#baseurl/baseurl/g;s/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-Base.repo yum -y groupinstall Virtualization
我们计划的设置如下
eth0 – xenbr0 – Dom0, DomN
eth1 – xenbr1 – DomX+1
eth2 – xenbr2 – DomX+2
eth3 – xenbr3 – DomX+3
4个网卡,分别桥接,然后让三个虚拟机分别接到三个机器上
2. 修改 xend 的配置文件,让它支持多个网卡,不使用默认的脚本
在 /etc/xen/xend-config.sxp 文件中的 (network-script network-bridge) 修改成 (network-script php-oa-network-multi-bridge).这样启用我们自己的脚本来生成桥接的设备
perl -i -pe 's/\(network-script network-bridge\)/#\(network-script network-bridge\)\n\(network-script php-oa-network-multi-bridge\)/g' /etc/xen/xend-config.sxp
3. 写自己自定的脚本 ,来生成自己所需要的网卡数量和绑定的位置,如上面的计划中
perl -le 'for $num (0 .. 3){print "/etc/xen/scripts/network-bridge \"\$@\" vifnum=$num netdev=eth$num bridge=xenbr$num" }' > /etc/xen/scripts/php-oa-network-multi-bridge chmod u+x /etc/xen/scripts/php-oa-network-multi-bridge
这样会生成一个 /etc/xen/scripts/php-oa-network-multi-bridge 内包含如下的内容。$@ 是用来接收 shell 命令中的 start,stop,status 的命令的。记的要加执行的权限,可一定不能忘记.
/etc/xen/scripts/network-bridge "$@" vifnum=0 netdev=eth0 bridge=xenbr0 /etc/xen/scripts/network-bridge "$@" vifnum=1 netdev=eth1 bridge=xenbr1 /etc/xen/scripts/network-bridge "$@" vifnum=2 netdev=eth2 bridge=xenbr2 /etc/xen/scripts/network-bridge "$@" vifnum=3 netdev=eth3 bridge=xenbr3
4.配置物理网卡,让开机就能启动
好了,在使用上面的脚本成前面,我们需要保证这几个网卡配置是能正常启动的。
所以我们要修改二个地方 ,ONBOOT=yes 和 BOOTPROTO=static 这二个,网卡才能正常的启动.
perl -i -pe "s/ONBOOT=no/ONBOOT=yes/g;s/BOOTPROTO=dhcp/BOOTPROTO=static/g" /etc/sysconfig/network-scripts/ifcfg-eth{1,2,3}
5. 测试桥接
下面的命令就不用解释了,还可以用 ifconfig 检查
/etc/xen/scripts/ChinaCache-network-multi-bridge start /etc/xen/scripts/ChinaCache-network-multi-bridge status /etc/xen/scripts/ChinaCache-network-multi-bridge stop
6. 安装第一个虚拟机
下面的命令是用来安装第一个虚拟机的,其它的虚拟机直接 copy 出来就行。然后只要修改其它机器的配置文件就行了。
/usr/sbin/virt-install -p --paravirt --name=node1 -s 5 --ram=8192 --vcpus=2 --file=/xen/node1 --location=nfs:123.125.162.7:/mnt --extra-args="ip=123.125.162.45 netmask=255.255.255.192 gateway=123.125.162.1 dns=202.106.0.20" --network bridge=xenbr0 noipv6
以上参数中
–extra-args 这个是传送给启动时的内核用的。
–network 是设置网络的连接方法,还有桥接到那个设备
-s 生成的文件大小 G 为单位
–ram 内存设置
–file 系统文件存放的位置
7. 设置自动启动
当主系统启动时,虚拟机启动,自己有几个 虚拟机设置几个
virsh autostart node1
8. 其它虚拟机的安装
其它的虚拟机安装比较容易,直接 copy 上面的 /xen/node1 这个操作系统的文件叫别的名字,另外新建几个其它机器的配置文件
cp /etc/xen/node1 /etc/xen/node{1,2,3}
并修改其中几个参数
name = "node1" disk = [ "tap:aio:/xen/node1,xvda,w" ] vif = [ "mac=00:16:36:7b:c9:e3,bridge=xenbr0,script=vif-bridge" ]
如上几个参数 ,disk 指向其它的参数。vif 是指本机的 MAC 地址,xenbr0 – xenbr3 是可以桥接的设备
如果要新加硬盘,可以使用下面的语法,来加入物理硬盘
disk = [ "tap:aio:/xen/node1,xvda,w", "phy:/dev/sdb,ioemu:sdb,w", "phy:/dev/sdc,ioemu:sdc,w", ]
以下经验参考: http://www.cnblogs.com/yangyh/archive/2010/07/16/1778516.html
xenbr0 是会连接vif0.0,vifN.0 (N 表示 xm list 中的 id 号,表示第几个 id 的虚拟主机)
peth0 可以将peth0看作etho的别名
vif0.0表示dom0接口,vif1.0表示dom ID=1的接口(重启或新建几个domain,ID更改后你会发现vif1.0变成vif2.0..3.0了)
如果在xenbr0中删除vif0.0,则在domain中无法ping通本机,但能ping通通过eth0连接的机器,比如本机连接的路由器
如果在xenbr0中删除vif1.0,则在domain中就没有网卡了(相应的vif1.1表示ID为1的DOMAIN的第二块网卡)
如果在xenbr0中删除peth0,则能ping能本机,而无法ping通路由器或局域网其它机器
转