Some of you may be interested in running your qemu-kvm (or other) disk image files on BTRFS. After some fumbling around, I have found out how to do it so it works and works very well (especially if it is on an SSD).
Anyone investigating running on BTRFS immediately finds out that there is a fragmentation problem (just putting image files on btrfs can result in them having between 50,000 and 100,000 extents). Some may have seen that adding nodatacow to the mount option is a solution ... it is not. So what is the solution?
1. execute: chattr +C /var/lib/libvirt/images or wherever your image files are. This needs to be done on the directory whether you have a separate subvol or not.
2. This ONLY works for new files and ONLY works for "raw" storage format files. Pretty much by definition, qcow2 files are sparse format files and that is the primary problem on btrfs.
So that the vm creation wizard will create a new disk using the raw storage format, you need to select: Edit->Preferences->VM Details->Default Storage Format->Raw After that, a created virtual will have the correct disk format.
You can use "filefrag" to verify that things are working.
Gene
On 17 November 2013 16:28, Gene Czarcinski gene@czarc.net wrote:
- execute: chattr +C /var/lib/libvirt/images
or wherever your image files are. This needs to be done on the directory whether you have a separate subvol or not.
- This ONLY works for new files and ONLY works for "raw" storage format
files. Pretty much by definition, qcow2 files are sparse format files and that is the primary problem on btrfs.
As always there are pros and cons that have to be traded off...
With the configuration you are suggesting you lose certain features - whether you need them or not is up to your use case...
1) Cloning a template file (and patches are on their way to handle this in libvirt natively) via native BTRFS clone capabilities for speed and to reduce disk usage is not possible.
2) The new snapshot management functionality in virt-manager in F20 is only possible with qcow2 images and not raw images.
Personally my VMs are fine with the SSD backing them so I'd lose too much to do this.