需求说明:
为了配合项目验收,及验保证收过程的流畅,现将原部署在一台公网服务器的7台kvm 虚拟机迁移至方便携带的线下(dell precision m6800/i7/32G/256SSD+2T)。
7台kvm虚拟机中4台是windows7,3台是国产kylin,每台都配有公网IP(目的是为了远程演示)。因为项目代码中IP被写死,所以线下vm主机IP 必须使用原公网线上的IP地址;4 台windows,和3台kylin 位于不同的网段,示例:
3. 目前只有两个网段,物理机windows7使用的是bridge模式,所以和工作工作站在一个网段,kylin使用的是nat模式,我创建了一个virbr0 网卡,让kylin接入;
4. 当需要更多的网段时可以通过配置,来创建一个网络;
实施步骤:
操作系统的安装,kvm和libvirt的使用不在赘述,直接记录迁移过程;
原镜像的cp ,注意当cp 虚拟机的镜像时,虚拟机一定要关机,否则镜像无法使用(实际企业中,一般都采用的是较为成熟的虚拟化产品,这些产品可以直接对虚拟机进行在线迁移,但是部署大多比较不方便,所以我使用最原始的方法-手动迁移这些虚拟机)
文档侧重点放在NAT上,主要是想NAT 主机能与Bridge 主机通信
可以看到这些主机正在运行状态:我们需要关掉它们然后cp镜像
这些镜像足足有109G,cp 1个小时终于ok:
Cp 虚拟机的xml 文件;
这个xml 文件决定虚拟机的配置,内存,cpu,网络,都有这个文件来控制;一般位于/etc/libvirt/qemu/这个位置;(不同的系统位置可能不同)
定义一个NAT网络;
配置文件所在的目录:/etc/libvirt/qemu/networks/,默认存在default,我们cp一份在其基础上修改:
cd /etc/libvirt/qemu/networks/ cp default.xml kylin.xml vim kylin.xml <network> <name>kylin</name> <bridge name="virbr0" /> <forward/> <ip address="219.239.247.1"netmask="255.255.255.0"> <static> <range start="219.239.247.2" end="219.239.247.254" /> </static> </ip> </network>
解释:
需要为virbr0 配置一个地址,NAT模式内主机需要将网关设置为该IP;
可以定义ip是dhcp还是static,默认是dhcp,我这样它没有报错且能用,就当可以这样改吧;
定义完成后保存退出wq:
可以先查看一下已经存在的nat网络,这个default 网络是默认就存在的,我现在删掉它启用我自己的,(也可以不删)。
virsh net-undefinedefault (删除default网络命令)
现在再看已经没有了
执行virsh net-define kylin.xml 发布这个网络;
但是状态是无效的,我们启动它;
可以看到已经启动了;
还可以加入自动启动免得每次开机都手动启动
Autostart 位置已经是yes 状态了;
通过brctl show 还可以看到br0 和virbr0的信息;说明我们的bridge和NAT 网络都准备好了;bridge 网络的配置,只需要修改网卡配置文件,然后重启即可;
NAT网络定义到此为止;
配置虚拟机xml文件(重点2);
<interface type='network'> <mac address='52:54:00:62:5b:e6'/> <source network='kylin'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03'function='0x0'/> </interface>
虚拟机配置文件所在的目录:/etc/libvirt/qemu
以上两处是和bridge模式两处不同的地方,注意source network 处应该写网络名,而不是像bridge 一样写网卡名;