在很多测试环境中,想快速复制一个虚拟机,如何实现?
-
假如环境中已有一个虚拟机,查看虚拟机磁盘信息
# virsh domblklist hc1 Target Source ------------------------------- sda /data/vms/hc1.qcow2 hda -
-
复制一份镜像文件,复制一份虚拟机 xml,等新虚拟机去使用
cp /data/vms/hc1.qcow2 /data/vms/hc2.qcow2 cp /etc/libvirt/qemu/hc1.xml /etc/libvirt/qemu/hc2.xml
-
对 hc2.xml 做修改,主要修改名称、uuid、新磁盘路径、网络(这部分不是绝对,根据需求增删改)
# diff /etc/libvirt/qemu/hc1.xml /etc/libvirt/qemu/hc2.xml 4c4 < virsh edit hc1 --- > virsh edit hc2 9,10c9,10 < <name>hc1</name> < <uuid>6a74d86f-1891-479b-ac5c-28099f0d1ecf</uuid> --- > <name>hc2</name> > <uuid>aa74d86f-1891-479b-ac5c-28099f0d1eca</uuid> 40c40 < <source file='/data/vms/hc1.qcow2'/> --- > <source file='/data/vms/hc2.qcow2'/>
-
由于环境中的 ip 是需要重新修改,我这里要对新虚拟机网络做以下调整(针对同一台主机修改网络配置)
<interface type='bridge'> <mac address='20:ac:9c:22:c3:0e'/> <source bridge='ovsbr0'/> <virtualport type='openvswitch'> <parameters interfaceid='5677886d-9bfe-4990-9cb6-fb836912f018'/> </virtualport> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface>
-
1、删除新虚拟机xml中mac,否则会有冲突,删除mac后,重启虚机会自动生成,这样之后ens3 两个 mac 就不同了 2、ip link / ovs-vsctl show 查看网络配置信息,两个机器 mac 一样 3、ovs-vsctl del-port ovsbr0 如果想让两个机器 ovsbr0 也不同,需要使用 ovs 相关命令重新配置网卡,但从原理角度分析,ovsbr0 最终的出口都是 ens0,所以如果不需要ovsbr0的化,我们可以把后面机器的ovsbr0 删去,让数据直接走ens3 4、vim /etc/sysconfig/network-scripts/xxx 给ens3 配上网络信息 5、systemctl restart network-scripts 重新生成网络