Instead of copying the entire backing storage when doing a clone of a guest, use cp --reflink=auto. This will allow us to use BTRFS's CoW functionality to quickly clone the storage, and will fall back to the standard boring copy if the filesystem doesn't support it. That way I don't have to wait 20 minutes while my guests storage is copied :).
This is really a libvirt request.
Moving to upstream tracker
The support for a reflink copy is now upstream. It has to be explicitly requested and there is no fallback. commit 219ea41d8dbad32137b4376ecb17fa958d5751b8 Author: Chen Hanxiao <chenhanxiao.com> AuthorDate: 2015-02-03 11:05:27 +0800 Commit: John Ferlan <jferlan> CommitDate: 2015-02-03 11:37:30 -0500 virsh-volume: add support for --reflink Add support for --reflink to the virsh 'vol-create-from' and 'vol-clone' commands to signify usage of the VIR_STORAGE_VOL_CREATE_REFLINK flag in the ensuing virStorageVolCreateXMLFrom API call. Updated the man page to describe the new flag. Signed-off-by: Chen Hanxiao <chenhanxiao.com> git describe: v1.2.12-70-g219ea41 contains: v1.2.13-rc1~129 commit 95da191376c4893ad3da1a7b37594f679fab9e03 Author: Chen Hanxiao <chenhanxiao.com> AuthorDate: 2015-01-23 18:22:35 +0800 Commit: Ján Tomko <jtomko> CommitDate: 2015-01-27 13:41:14 +0100 storage: add a flag to clone files on btrfs When creating a RAW file, we don't take advantage of clone of btrfs. Add a VIR_STORAGE_VOL_CREATE_REFLINK flag to request a reflink copy. Signed-off-by: Chen Hanxiao <chenhanxiao.com> Signed-off-by: Ján Tomko <jtomko> git describe: v1.2.12-18-g95da191 contains: v1.2.13-rc1~181