qcow2支持qcow2副本的格式是这里。libvirt支持复制qcow2 VM映像并进行复制.我发现在以下方面没有任何选择:
病毒克隆
发布于 2012-10-17 07:36:47
virt-将把您的磁盘映像克隆成与原始文件格式相同的文件格式。
如果您的原始磁盘是LVM分区,则必须克隆到磁盘原始格式映像,因为lvm分区是原始设备。
例:
# virt-clone -d -o winxp -n winxpclone -f winxpclone.img
# qemu-img info winxpclone.img
image: winxpclone.img
file format: raw
virtual size: 5.0G (5368709120 bytes)
disk size: 3.1G您可以将克隆的磁盘映像转换为qcow2:
# qemu-img convert -f raw winxpclone.img -O qcow2 winxpclone.qcow2
# qemu-img info !$
qemu-img info winxpclone.qcow2
image: winxpclone.qcow2
file format: qcow2
virtual size: 5.0G (5368709120 bytes)
disk size: 3.1G
cluster_size: 65536如果您的VM有qcow2文件格式磁盘映像,那么virt克隆将将您的磁盘映像克隆为qcow2文件格式。
# virt-clone -d -o winxpclone -n winxpcloneclone -f winxpcloneclone.img
# qemu-img info winxpcloneclone.img
image: winxpcloneclone.img
file format: qcow2
virtual size: 5.0G (5368709120 bytes)
disk size: 3.1G
cluster_size: 65536恢复工作:
virt-克隆将保持与原磁盘相同的文件格式。
一个好的解决方案是使用virt-sparsify。
http://libguestfs.org/virt-sparsify.1.html
减少导出的磁盘映像大小
发布于 2014-11-14 20:42:56
至少对于RHEL 7、NO提供的libvirt而言,virt管理器GUI和virsh命令行工具都不具备qcow2所寻求的复制-写魔术。他们将复制支持文件到一个新的,完全独立的支持文件,大小和内容相同。
相反,你可以做的是:
qemu-img create -f qcow2 -o backing_file=master.qcow2 clone.qcow2然后在virt管理器中创建一个新的VM,导入clone.qcow2作为它的备份文件。这样可以很好地保存有限的存储空间,并且在获得您想要的主映像之后,可以非常迅速地提供新的VM。
警告:主映像必须被视为只读的,一旦您有克隆使用它作为拷贝上的备份存储。如果您旋转一个VM并更改主映像,您将破坏引用它的所有克隆。如果您想进行更改,您所做的是将主图像克隆到一个新的、独立的映像中(为了便于讨论,将其命名为new . you 2),然后将克隆人重新指向新的图像:
qemu-img rebase -f qcow2 -b new-master.qcow2 clone.qcow2qemu-img将将master.qcow2和new.qemu 2之间的差异复制到clone.qcow2中,在此之后,一旦所有复制到写入的克隆都被更新,您就可以安全地删除master.qcow2。
发布于 2017-01-31 21:41:01
virt-clone现在有了--reflink,它在cp --reflink的帮助下实现了类似的功能。这需要对文件系统中的写支持进行复制,但也可以通过libvirt的支持链概念来实现。但是,尽管当格式为qcow2时,还没有以两种方式实现libvirt中磁盘映像的卷克隆。适用于存储在btrfs中的原始图像,但它仍然有效。
# virt-clone --reflink --auto-clone --original test
ERROR Couldn't create storage volume 'test-clone.qcow2': 'unsupported flags (0x2) in function virStorageBackendCreateQemuImg'`
# virsh
virsh # vol-clone --pool testpool test.qcow2 test-clone.qcow2 --reflink
error: Failed to clone vol from test.qcow2
error: unsupported flags (0x2) in function virStorageBackendCreateQemuImg但是,libvirt的支持链概念(或支持存储)适用于qcow2:
virsh # vol-create-as testpool test-clone.qcow2 20G --backing-vol-format qcow2 --format qcow2 --backing-vol test.qcow2
virsh # vol-dumpxml --pool testpool test-clone.qcow2
...
<backingStore>
<path>/testpool/test.qcow2</path>
<format type='qcow2'/>
...
virsh # domstats --backing testvm
block.0.name=vda
block.0.path=/testpool/test-clone.qcow2
...
block.1.name=vda
block.1.path=/testpool/test.qcow2
block.1.backingIndex=1这在使用virt管理器通过指定备份存储映像创建新卷时也有效。
这样的克隆是用qemu创建的,独立于libvirt:
qemu-img create -f qcow2 -o backing_file=test.qcow2 test-clone.qcow2然后在libvirt中使用,它将与上面使用创建的相同。
https://stackoverflow.com/questions/12386398
复制相似问题