1、基础知识
1.1、需求
在某些特殊场景下,我们需要批量安装多台虚拟机,目前我们学习的虚拟机安装的方式是逐一的,效率太低了,有什么方法能解决这个痛点呢? -- 虚拟机克隆
1.2、实现方式
kvm虚拟机的克隆分为两种情况。
(1) KVM主机本机虚拟机直接克隆。
(2) 通过复制配置文件与磁盘文件的虚拟机复制克隆(适用于异机的静态迁移)。
1.3、准备环境
1.3.1、网络模型恢复
# 之前被我们修改为桥接,现在把它修改回来nat模型
# virsh edit CentOS-8-x86_64
<interface type='network'>
<mac address='52:54:00:f4:2d:fc'/>
<source network='default'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
</interface>
1.4、克隆命令解析
virt-clone -o <被克隆的虚拟机名称> -n <生成的虚拟机名称> -f <新的磁盘文件>
virt-clone -o <被克隆的虚拟机名称> --auto-clone
2、实践
2.1、关闭虚拟机
virsh shutdown CentOS-8-x86_64
2.2、克隆镜像
virt-clone --check disk_size=off -o CentOS-8-x86_64 -n CentOS-8-clone -f /opt/CentOS-8-clone.qcow2
2.3、查看虚拟机相关文件
2.3.1、查看虚拟机状态表
# virsh list --all
Id Name State
----------------------------------
- CentOS-8-clone shut off
- CentOS-8-x86_64 shut off
2.3.2、查看配置文件
# ll /etc/libvirt/qemu/
-rw------- 1 root root 7290 May 22 12:11 CentOS-8-clone.xml
-rw------- 1 root root 7293 May 22 12:06 CentOS-8-x86_64.xml
...
2.3.3、对比配置文件差异
# diff /etc/libvirt/qemu/CentOS-8-clone.xml /etc/libvirt/qemu/CentOS-8-x86_64.xml
4c4
< virsh edit CentOS-8-clone
---
> virsh edit CentOS-8-x86_64
9,10c9,10
< <name>CentOS-8-clone</name>
< <uuid>35cc7430-d4cd-4b02-a54f-c3c9f1a69157</uuid>
---
> <name>CentOS-8-x86_64</name>
> <uuid>373fc909-9a6d-482b-9740-0b1363ec5aca</uuid>
47c47
< <source file='/opt/CentOS-8-clone.qcow2'/>
---
> <source file='/opt/CentOS-8-x86_64.qcow2'/>
139c139
< <mac address='52:54:00:ae:96:a5'/>
---
> <mac address='52:54:00:f4:2d:fc'/>
# 名字、uuid、mac、磁盘有差异
2.3.4、启动虚拟机
virsh start CentOS-8-clone
virsh start CentOS-8-x86_64
2.3.5、查看效果
# 确认vnc端口
# virsh domdisplay CentOS-8-x86_64
vnc://localhost:1 # 5901
# virsh domdisplay CentOS-8-clone
vnc://localhost:0 # 5900
