美文网首页
kvm系列2:通过模板快速创建虚拟机

kvm系列2:通过模板快速创建虚拟机

作者: chnmagnus | 来源:发表于2018-12-03 18:41 被阅读41次

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

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

    制作模板文件

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

    virt-install \
      --connect=qemu:///system \
      --virt-type=kvm \
      --name=vm1 \
      --vcpus=8 \
      --memory=16384 \
      --location=/data/kvm/iso/CentOS-7-x86_64-Minimal-1804.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@TENCENT64 /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:cmh@test
    

    通过模板创建虚拟机

    virt-clone --connect qemu:///system \
      --original-xml /data/kvm/template/tpl.xml \
      --name vm2 \
      --file /data/kvm/vm/vm2_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地址。

    相关文章

      网友评论

          本文标题:kvm系列2:通过模板快速创建虚拟机

          本文链接:https://www.haomeiwen.com/subject/yytucqtx.html