Table of Contents
增量镜像
增量镜像即保持一个基础的镜像不变,在此基础镜像上安装或修改相应的服务所创建的一个单独的镜像,增量镜像类似GIT,只记录当前KVM的修改记录,这样可以节省磁盘空间,快速复制虚拟机
基础环境准备
-
KVM基础环境
-
基础镜像 ubuntu-base.qcow2
创建增量镜像
首先基于基础镜像 ubuntu-base.qcow2 创建一个增量镜像 ubuntu-test.qcow2
(宿主机) # qemu-img info /home/kvm/images/ubuntu-base.qcow2 image: ubuntu-base.qcow2 file format: qcow2 virtual size: 4.0G (4294967296 bytes) disk size: 2.4G cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: true refcount bits: 16 corrupt: false (宿主机) #:/home/kvm/images# qemu-img create -b ubuntu-base.qcow2 -f qcow2 ubuntu-test.qcow2 Formatting 'ubuntu-test.qcow2', fmt=qcow2 size=4294967296 backing_file=ubuntu-base.qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 (宿主机) #:/home/kvm/images# qemu-img info ubuntu-test.qcow2 image: ubuntu-test.qcow2 file format: qcow2 virtual size: 4.0G (4294967296 bytes) disk size: 196K cluster_size: 65536 backing file: ubuntu-base.qcow2 Format specific information: compat: 1.1 lazy refcounts: false refcount bits: 16 corrupt: false (宿主机) #:/home/kvm/images# du -sh * 2.4G ubuntu-base.qcow2 196K ubuntu-test.qcow2
创建KVM虚拟机
手动创建
# 注: 我基于基础镜像创建的KVM虚拟机名称为*vm-ubuntu-base*, 请根据实际进行修改 (宿主机) # cp /etc/libvirt/qemu/vm-ubuntu-base.xml /etc/libvirt/qemu/vm-ubuntu-test.xml (宿主机) # vim /etc/libvirt/qemu/vm-ubuntu-test.xml
<domain type='kvm'> <name>vm-ubuntu-base</name> # 虚拟机名,必须修改,否则与基本镜像虚拟机冲突 <uuid>xxxx</uuid> # UUID,必须修改,否则与基本虚拟机冲突 ... <devices> <emulator>/usr/bin/kvm-spice</emulator> <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/home/kvm/images/ubuntu-test.qcow2'/> # 改成增量镜像文件位置 <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </disk> ... <interface type='bridge'> <mac address='52:54:00:83:5f:e6'/> # MAC地址,必须修改 <source bridge='br0'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> .... </domain>
(宿主机) # virsh define /etc/libvirt/qemu/vm-ubuntu-test.xml (宿主机) # virsh start vm-ubuntu-test (宿主机) # virsh list
使用virt-install创建
(宿主机) # qemu-img create -b ubuntu-base.qcow2 -f qcow2 ubuntu-test01.qcow2 (宿主机) # virt-install --name vm-ubuntu-test01 --memory 8192 --vcpus 4 --disk /home/kvm/images/ubuntu-test.qcow2 --import --virt-type kvm --os-type linux --os-variant ubuntu18.04 --network bridge=virbr0,model=virtio --graphics vnc,listen=0.0.0.0,password=foobar,port=5910 --noautoconsole --hvm
测试增量镜像
-
进入 vm-ubuntu-test 虚拟机, 并创建一个200M的文件
dd if=/dev/zero of=test.img bs=1M count=200
-
在宿主机上查看镜像大小
2.4G ubuntu-base.qcow2 294M ubuntu-test.qcow2
可以看出基础镜像大小保持不变, 增量镜像大小发生变化(为什么不是增加200M大小?)
-
进入 vm-ubuntu-base 虚拟机, 并创建一个800M的文件
dd if=/dev/zero of=base.img bs=1M count=800
-
在宿主机上查看镜像大小
3.0G ubuntu-base.qcow2 294M ubuntu-test.qcow2
可以看出基础镜像大小发生变化, 增量镜像大小不变