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地址。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY