Recently, we have implemented LVM disk support functionality (based on our work for Diablo) and successfully delivered it to upstream.
New LVM image backend can be enabled by setting libvirt_images_type flag to value lvm.
You must also specify volume group name for VM disks, which is done by setting libvirt_images_volume_group option (for example libvirt_images_volume_group=NovaVG).
Backend supports usual logical volumes with full space allocation. However, it is possible to use sparse logical volumes (which are created with option –virtualsize). In this case, you need specify libvirt_sparse_logical_volumes=True in nova.conf. When this mode is enabled, nova will file warning messages to log on attempt to allocate sparse logical volume with possible size, that exceeds size of volume group used to hold VM disks.
For more information on this functionality please see blueprint.
You can also review code changes here.