I know that lvm supports thin provisioning, and I think I have a pretty good grasp on how that works. Does libvirt support lvm thin provisioning and thin snapshots? I know that in order to set up lvm thin provisioning by hand, I have to create a thin-provisioning pool within the volume group, and then thin-provisioned logical volumes and thin-provisioned snapshots can be created within that thin-provision pool. I also know that it's possible to have more than one thin-provisioning pool within the same volume group, which tells me that in order to properly set up any lvm-aware application to use thin-provisioning, I may need to inform it which thin-provisioning pool it should base LVs and snapshots from. When I look at the example here: http://libvirt.org/storage.html#StorageBackendLogical I don't see anything particular which tells me it supports building off a thin-provisioning pool if I specify such by name. Checking here: http://libvirt.org/formatstorage.html#StoragePool I again don't see anything specific about logical thick vs thin provisioning. I would expect to see *something*, as there are performance consequences when making such choices, so I'm again not sure libvirt recognizes a difference. So is this something that libvirt can do? And is there good documentation somewhere on the subject?
Hello, On 2013-11-22 21:46, Michael Mol wrote:> I know that lvm supports thin provisioning, and I think I have a pretty > good grasp on how that works. Does libvirt support lvm thin > provisioning and thin snapshots?libvirt does not support storage pools containing thin pools. Since commit 4132dede0652b7f0cc83868fd454423310bc1a9c (http://libvirt.org/git/?p=libvirt.git;a=commit;h=4132dede0652b7f0cc83868fd454423310bc1a9c) at least the thick provisioned volumes in such a pool can still be used. Previously, libvirt would just refuse to start the pool. However, you can assign any thin provisioned volume to a VM manually and it will work. On the hardware/software combination that I tried it on (desktop SATA drives in RAID1 on Ubuntu 13.10) it was abysmally slow though. Proper support for LVM thin provisioning would probably need a new storage pool type, and I haven't found any hints that anybody was working on that. Greetings Oliver
On Tue, 03 Dec 2013 18:13:08 +0100 Oliver Brakmann <oliver.brakmann@posteo.de> wrote:> Hello, > > On 2013-11-22 21:46, Michael Mol wrote: > > I know that lvm supports thin provisioning, and I think I have a > > pretty good grasp on how that works. Does libvirt support lvm thin > > provisioning and thin snapshots? > > libvirt does not support storage pools containing thin pools. Since > commit 4132dede0652b7f0cc83868fd454423310bc1a9c > (http://libvirt.org/git/?p=libvirt.git;a=commit;h=4132dede0652b7f0cc83868fd454423310bc1a9c) > at least the thick provisioned volumes in such a pool can still be > used. Previously, libvirt would just refuse to start the pool. > > However, you can assign any thin provisioned volume to a VM manually > and it will work. On the hardware/software combination that I tried > it on (desktop SATA drives in RAID1 on Ubuntu 13.10) it was abysmally > slow though.I would expect that. My setup would be: RAID6 | PV | VG | thin pool Where the RAID6 is provided by a hardware RAID controller with a battery-backed write cache.> > Proper support for LVM thin provisioning would probably need a new > storage pool type, and I haven't found any hints that anybody was > working on that.A pity. Thin provisioning would be (as I see it) the first step to whole-VM snapshots as found in systems like VMWare ESX. I'd love to be able to pull that off using Linux/QEMU/KVM. Or at least be able to snapshot a running VM's disk to be able to pull backups off the snapshot without interrupting service in the VM guests.