[pve-devel] [PATCH storage v4 09/27] plugin: introduce new_backup_provider() method

Andreas Rogge andreas.rogge at bareos.com
Thu Apr 3 18:08:23 CEST 2025


Am 03.04.25 um 09:24 schrieb Wolfgang Bumiller:
> On Wed, Apr 02, 2025 at 06:16:57PM +0200, Andreas Rogge wrote:
>> Am 02.04.25 um 10:30 schrieb Wolfgang Bumiller:
>>> On Tue, Apr 01, 2025 at 08:21:30PM +0200, Thomas Lamprecht wrote:
> But I do wonder if - to reduce space-requirements for backing up running
> VMs - at some point we might also add the ability for qemu to provide
> some kind of queue containing the offset-length pairs of blocks which
> have been stored in the temporary fleecing image. The provider could
> consume this queue to keep the temporary storage at a minimum by doing
> out-of-order backups.
As we have to be able to restore out-of-order anyway, backing up 
out-of-order is not a problem at all.
However, offset-length in 512-byte offsets might be a bit too 
fine-grained. If we, for example, have a deduplication blocksize of 256k 
on a storage, offset and offset+length would preferably be divisible by 
256k.
While the backup application could easily compute aligned offsets 
itself, read-access to the whole computed region would be required.

> This only makes sense if there are backup systems which can benefit from
> it. (And it should be a simple-enough api extension to add this in the
> future, from what I can tell)

I am not sure if this provides a benefit on our end. However, if it 
makes the backup process more lightweight on the PVE side, it might 
still be worth the effort.

> I guess it makes sense for us to not expect/require random access, as
> any feature like that already imposes limitations on how the data can be
> stored. I'd expect different backup solutions to have different
> limitations in that regard.

Exactly.

> I *believe* `qemu-nbd` should be able to bind all the storage types we
> want to restore to to /dev/nbdXY devices, which would give the provider
> a bunch of block devices to write to in whichever way they want to, so
> the provider would then only need to figure out how to receive the data
> and forward that to the devices.
> We'll need to try.

That's pretty much what I had hoped for.

>>> Which is why the most flexible thing to do is to use a `qemu-img` call
>>> and giving it the paths, or more precisely, the URLs to the disks.
>>
>> I understand how this makes sense. However, if you don't have the data in a
>> format that qemu-img can consume, things become complicated.
> 
> It can also just read data from a stream (but without any smarter
> protocol, this would make holes/unallocated blocks extremely
> inefficient), where the provider would create that stream in whichever
> way they want to.
As the only viable formats to stream into qemu-img are qcow2 and raw and 
(to my understanding) these require the data to be in the right order 
Bareos would have to re-order the data before streaming it into 
qemu-img, which brings us back to staging the image - in which case we 
don't need to stream anymore :)

-- 
Andreas Rogge                             andreas.rogge at bareos.com
   Bareos GmbH & Co. KG                      Phone: +49 221-630693-86
   http://www.bareos.com

   Sitz der Gesellschaft: Köln | Amtsgericht Köln: HRA 29646
   Komplementär: Bareos Verwaltungs-GmbH
   Geschäftsführer: Stephan Dühr, Jörg Steffens, Philipp Storz




More information about the pve-devel mailing list