I run a small internal cloud utilizing 3 redundant, live migration capable Ubuntu/Qemu/KVM hosts with ~30 mixed OS VMs.
The Pool volumes are BTRFS and before any of you give me crap about it: this is small shop, utility is more important than performance here, so zip-it!
This being said, one still should mitigate the performance issues as best one can. The alternatives are turn off COW at the volume level or at the file level.
I didn't want to mount the BTRFS with nocow for fear of interfering in any way with the REALLY cool snapshot and backup capabilities BTRFS brings to the party. Small shop, lot's of automation, don't want to risk it!
So I opted for creating my .qcow2 VM volumes using the -o nocow=on
option under qemu-img
utility. And this seems to be working fine. I get the space savings (over going raw) and the performance is fine. I do have to periodically defrag them with a virsh blockcopy ... -pivot
but that can be cron'd so what do I care?
But it kinda nags at me: what capabilities does one lose with the -o nocow=on
?