KVM:通过模板快速创建虚拟机

KVM:通过模板快速创建虚拟机

当我们需要快速创建大量虚拟机时,逐个安装的效率无疑是低下的,好在kvm给我们提供了clone操作,可以从已有的虚拟机clone出新的虚拟机。这样,只要我们手动安装一个模板虚拟机,之后就可以从这个模板虚拟机生产出大量虚拟机了。

但有些场景,我们需要将虚拟机分发到不同机器上,这样直接通过domain进行clone也不够完美,所以更进一步,将模板虚拟机抽导出成文件,通过文件模板来创建虚拟机。

制作模板文件

首先需要一台安装好的虚拟机。可以通过下面的命令安装一台ubuntu2004虚拟机。

virt-install \
  --connect=qemu:///system \
  --virt-type=kvm \
  --name=vm1 \
  --vcpus=8 \
  --memory=16384 \
  --location=/data/kvm/iso/Ubuntu2004.iso \
  --disk path=/data/kvm/vm/vm1_0.qcow2,size=200,format=qcow2 \
  --network network=default \
  --graphics none \
  --extra-args='console=ttyS0' \
  --force

安装完成后,关闭虚拟机

virsh shutdown vm1

将原虚拟机的vm1_0.qcow2文件copy一份,作为镜像模板

cp /data/kvm/vm/vm1_0.qcow2 /data/kvm/template/tpl.qcow2

使用virsh dumpxml命令获得配置文件

virsh dumpxml --domain vm1 > /data/kvm/template/tpl.xml

修改tpl.xml中镜像文件的指定位置为/data/kvm/template/tpl.qcow2,即我们复制的镜像文件的路径。

<disk type='file' device='disk'>
    <driver name='qemu' type='qcow2'/>
    <source file='/data/kvm/template/tpl.qcow2'/>
    <target dev='vda' bus='virtio'/>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>

删除tpl.xml中如下四行内容,其中<source ../>是必删的,其它三行只是为了避免歧义。

<name>vm1</name>
<uuid>47cdbba1-3551-407d-a03c-90d2a60bfa71</uuid>
<mac address='52:54:00:83:79:76'/>
<source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-vm1/org.qemu.guest_agent.0'/>

通过 virt-sysprep 命令处理tpl.qcow2,so that clone操作可以用于这个镜像。

virt-sysprep -a /data/kvm/template/tpl.qcow2

这样,我们的模板文件和模板就制作好了。其root密码同vm1的root密码一致。

[root@localhost /data/kvm/template]# tree .
.
├── tpl.qcow2
└── tpl.xml

如果用像前文直接使用virt-sysprep 来重置镜像,不加任何其他参数,会把镜像重置成几乎是完全新安装的状态。其执行的步骤,可以通过list命令查看。

virt-sysprep --list-operations

一些定制的配置,可以通过参数来设置,比如hostname和root密码。

virt-sysprep -a /data/kvm/template/tpl.qcow2  --hostname localhost --root-password password:testpwd

通过模板创建虚拟机

virt-clone --connect qemu:///system \
  --original-xml /data/kvm/template/tpl.xml \
  --name vm5 \
  --file /data/kvm/vm/vm5_0.qcow2
  
  
virt-clone --connect qemu:///system \
  --original-xml /data/kvm/template/tpl.xml \
  --name vm3 \
  --file /data/kvm/vm/vm3_0.qcow2

clone操作会为新的虚拟机分配新的uuid和mac地址。


https://www.cnblogs.com/qiuhom-1874/p/13547752.html

posted @ 2022-11-26 20:15  michaelchengjl  阅读(1053)  评论(0编辑  收藏  举报