[PATCH SERIES pve-storage/qemu-server] add external qcow2 snapshot support

Alexandre Derumier alexandre.derumier at groupe-cyllene.com
Thu Sep 19 15:19:13 CEST 2024


This patch series implement qcow2 external snapshot support.
(for directory plugin currently,but it can be extended to nfs, gluster,...)


The current internal qcow2 snapshots have a lot of performance problems.

I have tested through nfs and also local filesystem
https://lore.proxmox.com/pve-devel/6a44716a-88bc-4523-b210-d67031917d8f@proxmox.com/t/

I see that Fiona don't have same result than me, but I got something like 200~300iops
vs 20000 iops with 4k randwrite when a snapshot exist.

The result is even worst on a shared filesystem like ocfs2 or gfs2. (around 80 iops)
I think (I'm not 100% sure) this is mostly because metadatas are not preallocated
anymore with qcow2 internal snap.

With external snapshot, I almost don't have any performance impact when a snapshot exist.

Also other bugs are freeze/lock reported by users since years on snapshots delete on nfs
https://forum.proxmox.com/threads/snapshot-removal-jams-the-vm.111648/
(The disk access seem to be frozen during all the delete duration)

External qcow2 snapshots also allow snapshot of raw devices.
Currently working with : .raw files ,so 0 performance impact without snapshots.
But this could be extended for lvm shared volumes.
(I have another patch series for thick lvm dynamic extend, but if we could have at minimum
snapshot working, it could great :)


I have tested: snasphot, snap rollback, snap delete, clone, move disk, rename disk. (online && offline)



pve-storage:

Alexandre Derumier (1):
  add external snasphot support

 src/PVE/Storage/DirPlugin.pm |   1 +
 src/PVE/Storage/Plugin.pm    | 220 +++++++++++++++++++++++++++++++----
 2 files changed, 196 insertions(+), 25 deletions(-)


qemu-server:
Alexandre Derumier (1):
  implement external snapshot

 PVE/QemuServer.pm | 74 +++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 62 insertions(+), 12 deletions(-)


-- 
2.39.2




More information about the pve-devel mailing list