Volume file permissions and huge volume downloads

R. Diez rdiezmail-temp2 at yahoo.de
Fri Jan 17 15:30:09 UTC 2020


Hi all:

I am using the libvirt version that comes with Ubuntu 18.04.3 LTS.

I want to backup a virtual machine in a foolproof way:

- Gracefully shutdown the VM.
- Backup the disk image.
- Restart the VM.

I wrote the following script to do that:

https://github.com/rdiez/Tools/blob/master/VirtualMachineManager/BackupVm.sh

Writing that script was difficult enough because of the virsh limitations (in my opinion) described in the comments. But at least it works.

The main problem is that libvirt sets the ownership and permissions of volume files in such a way that a standard user cannot access them, 
even if it is member of the 'libvirt' group.

While the VM is running, volume file permissions are like this:
   -rw-r----- 1 libvirt-qemu kvm [...] /var/lib/libvirt/images/YourVmDisk.qcow2
When the VM is shutoff:
   -rw-r----- 1 root root [...] /var/lib/libvirt/images/YourVmDisk.qcow2

The trouble is, I want to access that .qcow2 file when the VM is shutoff.

I would really like not to run my script as root. I could not find a way to specify the permissions for the .qcow2 files, so I tried editing 
the group ownership for the whole pool:

virsh pool-edit default

<target>
   <path>/var/lib/libvirt/images</path>
   <permissions>
     <mode>0711</mode>
     <owner>0</owner>
     <group>131</group>
   </permissions>
</target>

Setting <group> to "libvirt" did not work (XML validation error), so I tried the numeric ID of that group (131).

That did not work. When I restart libvirt with "service libvirtd restart", my changes to the pool XML file disappear (!).


Later on, I found out that you can download a volume like this:

   virsh  vol-download  --pool default  YourVmDisk.qcow2  YourVmDisk.qcow2

The trouble is that I created the virtual disk with a maximum size of 120 GB. I copied it around a few times, so I think it has lost any 
"sparseness" inside. Command "virsh vol-download" takes ages and downloads all those 120 GB. My script uses "qemu-img convert", which 
discards all unused space and writes just 17 GB of data, and that is without turning compression on. The whole backup takes seconds instead 
of minutes.


Can somebody help me with these issues?

Thanks in advance,
   rdiez





More information about the libvirt-users mailing list