From: Alexandre Derumier via pve-devel <pve-devel@lists.proxmox.com>
To: pve-devel@lists.proxmox.com
Cc: Alexandre Derumier <alexandre.derumier@groupe-cyllene.com>
Subject: [pve-devel] [PATCH-SERIES v7 pve-storage/qemu-server] add external qcow2 snapshot support
Date: Fri, 4 Jul 2025 08:44:54 +0200 [thread overview]
Message-ID: <mailman.950.1751611517.395.pve-devel@lists.proxmox.com> (raw)
[-- Attachment #1: Type: message/rfc822, Size: 6359 bytes --]
From: Alexandre Derumier <alexandre.derumier@groupe-cyllene.com>
To: pve-devel@lists.proxmox.com
Subject: [PATCH-SERIES v7 pve-storage/qemu-server] add external qcow2 snapshot support
Date: Fri, 4 Jul 2025 08:44:54 +0200
Message-ID: <20250704064507.511884-1-alexandre.derumier@groupe-cyllene.com>
This patch series implement qcow2 external snapshot support for files && lvm volumes
The current internal qcow2 snapshots have bad write performance because no metadatas can be preallocated.
This is particulary visible on a shared filesystem like ocfs2 or gfs2.
Also other bugs are freeze/lock reported by users since years on snapshots delete on nfs
(The disk access seem to be frozen during all the delete duration)
This also open doors for remote snapshot export-import for storage replication.
Changelog v7:
- rebased on fiona blockdev work
MAIN TODO:
- add snapshots tests in both pve-storage && qemu-server
- better handle snapshot failure with multiple disks
pve-storage:
Alexandre Derumier (10):
tests: add lvmplugin test
common: add qemu_img_create an preallocation_cmd_option
common: qemu_img_create: add backing_file support
rename_volume: add source && target snap
common: add qemu_img_info helper
common: add qemu-img measure
storage: volume_snapshot: add $running param
qcow2: add external snapshot support
lvmplugin: add qcow2 snapshot
storage : add volume_support_qemu_snapshot
src/PVE/Storage.pm | 34 +-
src/PVE/Storage/Common.pm | 116 ++++++
src/PVE/Storage/DirPlugin.pm | 11 +
src/PVE/Storage/ESXiPlugin.pm | 2 +-
src/PVE/Storage/ISCSIDirectPlugin.pm | 2 +-
src/PVE/Storage/LVMPlugin.pm | 519 ++++++++++++++++++++----
src/PVE/Storage/LvmThinPlugin.pm | 2 +-
src/PVE/Storage/PBSPlugin.pm | 2 +-
src/PVE/Storage/Plugin.pm | 376 ++++++++++++-----
src/PVE/Storage/RBDPlugin.pm | 8 +-
src/PVE/Storage/ZFSPoolPlugin.pm | 2 +-
src/test/Makefile | 5 +-
src/test/run_test_lvmplugin.pl | 577 +++++++++++++++++++++++++++
13 files changed, 1465 insertions(+), 191 deletions(-)
create mode 100755 src/test/run_test_lvmplugin.pl
qemu-server:
Alexandre Derumier (3):
qemu_img convert : add external snapshot support
blockdev: add backing_chain support
qcow2: add external snapshot support
src/PVE/QemuConfig.pm | 4 +-
src/PVE/QemuServer.pm | 132 +++++--
src/PVE/QemuServer/Blockdev.pm | 345 +++++++++++++++++-
src/PVE/QemuServer/QemuImage.pm | 6 +-
src/test/cfg2cmd/simple-backingchain.conf | 25 ++
src/test/cfg2cmd/simple-backingchain.conf.cmd | 33 ++
src/test/run_config2command_tests.pl | 47 +++
src/test/run_qemu_img_convert_tests.pl | 59 +++
src/test/snapshot-test.pm | 4 +-
9 files changed, 620 insertions(+), 35 deletions(-)
create mode 100644 src/test/cfg2cmd/simple-backingchain.conf
create mode 100644 src/test/cfg2cmd/simple-backingchain.conf.cmd
--
2.39.5
[-- Attachment #2: Type: text/plain, Size: 160 bytes --]
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
next reply other threads:[~2025-07-04 6:44 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-04 6:44 Alexandre Derumier via pve-devel [this message]
2025-07-04 11:58 ` Fabian Grünbichler
2025-07-04 12:10 ` DERUMIER, Alexandre via pve-devel
[not found] ` <a1b7140a1c715ce9506f9956c296138b2373cf6b.camel@groupe-cyllene.com>
2025-07-07 7:49 ` Fabian Grünbichler
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=mailman.950.1751611517.395.pve-devel@lists.proxmox.com \
--to=pve-devel@lists.proxmox.com \
--cc=alexandre.derumier@groupe-cyllene.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox