On 04/18/2017 01:03 PM, Vasiliy Tolstov wrote:
2017-04-18 8:39 GMT+03:00 Michal Privoznik
<mprivozn(a)redhat.com>:
> s that right? Here I'm successfully cloning a volume across two storage pools:
Yes, it works but....
Source image:
image: /var/lib/libvirt/images/sda/143177
file format: qcow2
virtual size: 5.0G (5368709120 bytes)
disk size: 902M
cluster_size: 65536
Format specific information:
compat: 0.10
refcount bits: 16
Dest image:
image: /var/lib/libvirt/images/sda/test
file format: qcow2
virtual size: 5.0G (5368709120 bytes)
disk size: 902M
cluster_size: 65536
Format specific information:
compat: 0.10
refcount bits: 16
But
-rw------- 1 root 908M Apr 18 13:59 143177
-rw------- 1 root 902M Apr 18 13:59 test
Why size is changed on destination image? In case of cp
--spwarse=always size does not changed.
That's because libvirt does not use `cp` to copy the disk images. We use
qemu-img for copying. And we do not guarantee that the disk structure
does not change. We guarantee that the data stored on the disk doesn't
change. Otherwise we wouldn't be able to convert disk images.
NB, with sparse files - it's not as straightforward either. Some
filesystems may decide that the hole is not big enough so they do
allocate it actually. XFS is a very good example of such behaviour. So
the data/hole structure of a file may not line up with the structure of
a copy. Although, the data as read from the files are the same.
Michal