> Fabian Grünbichler <f.gruenbich...@proxmox.com> hat am 23.10.2024 12:12 CEST 
> geschrieben:
> 
>  
> some high level comments:
> 
> I am not sure how much we gain here with the raw support? it's a bit 
> confusing to have a volid ending with raw, with the current volume and all 
> but the first snapshot actually being stored in qcow2 files, with the raw 
> file being the "oldest" snapshot in the chain..
> 
> if possible, I'd be much happier with the snapshot name in the snapshot file 
> being a 1:1 match, see comments inline
> - makes it a lot easier to understand (admin wants to manually remove 
> snapshot "foo", if "foo" was the last snapshot then right now the volume 
> called "foo" is actually the current contents!)
> - means we don't have to do lookups via the full snapshot list all the time 
> (e.g., if I want to do a full clone from a snapshot "foo", I can just pass 
> the snap-foo volume to qemu-img)
> 
> the naming scheme for snapshots needs to be adapted to not clash with regular 
> volumes:
> 
> $ pvesm alloc extsnap 131314 vm-131314-disk-foobar.qcow2 2G
> Formatting '/mnt/pve/ext4/extsnap/images/131314/vm-131314-disk-foobar.qcow2', 
> fmt=qcow2 cluster_size=65536 extended_l2=off preallocation=off 
> compression_type=zlib size=2147483648 lazy_refcounts=off refcount_bits=16
> successfully created 'extsnap:131314/vm-131314-disk-foobar.qcow2'
> $ qm rescan --vmid 131314
> rescan volumes...
> can't parse snapname from path at /usr/share/perl5/PVE/Storage/Plugin.pm line 
> 1934.
> 
> storage_migrate needs to handle external snapshots, or at least error out. I 
> haven't tested that part or linked clones or a lot of other advanced related 
> actions at all ;)

I'll add some more high-level comments (the threading seems to be broken for 
some reason, so I'll use this as "entrypoint"):

- snapext should probably be fixed for dir-type storages as well
- the volume ID should be static for both plugins, snapshots should be encoded 
on the storage layer in a fashion that doesn't "break through" to the API 
layers and makes it impossible to confuse the "main" volname with snapshots:
-- alloc_image shouldn't be able to allocate a volume that is then interpreted 
as snapshot
-- free_image shouldn't be able to free a snapshot volume directly
-- listing images should never return snapshots
-- ..
- for the LVM part, snapshots still require allocation a full-sized volume+some 
overhead for the qcow2 each. should we attempt to shrink them once they become 
read-only? in practice, only the LV backing the top image needs to be 
full-sized.. how do we ensure the underlying storage doesn't waste all that 
"empty" space?


_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to