public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: Andreas Rogge <andreas.rogge@bareos.com>
To: Wolfgang Bumiller <w.bumiller@proxmox.com>
Cc: Proxmox VE development discussion <pve-devel@lists.proxmox.com>,
	Thomas Lamprecht <t.lamprecht@proxmox.com>,
	Philipp Storz <philipp.storz@bareos.com>
Subject: Re: [pve-devel] [PATCH storage v4 09/27] plugin: introduce new_backup_provider() method
Date: Thu, 3 Apr 2025 18:08:23 +0200	[thread overview]
Message-ID: <793a9b31-f0eb-4b21-af24-54bcef808167@bareos.com> (raw)
In-Reply-To: <ey5nze36xsp7iaipishhlsvxo5xyllyvze2sevxutbcttofyye@bxzkiqxcm2no>

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@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


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

  reply	other threads:[~2025-04-03 16:09 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-14 15:07 [pve-devel] [PATCH-SERIES qemu/common/storage/qemu-server/container/manager v4 00/27] backup provider API Fiona Ebner
2024-11-14 15:07 ` [pve-devel] [PATCH qemu v4 01/27] PVE backup: add target ID in backup state Fiona Ebner
2024-11-14 15:07 ` [pve-devel] [PATCH qemu v4 02/27] PVE backup: get device info: allow caller to specify filter for which devices use fleecing Fiona Ebner
2024-11-14 15:07 ` [pve-devel] [PATCH qemu v4 03/27] PVE backup: implement backup access setup and teardown API for external providers Fiona Ebner
2024-11-14 15:07 ` [pve-devel] [PATCH qemu v4 04/27] PVE backup: implement bitmap support for external backup access Fiona Ebner
2024-11-14 15:07 ` [pve-devel] [PATCH common v4 05/27] test: lock file: get rid of END block that made test always pass Fiona Ebner
2024-11-14 19:46   ` [pve-devel] applied: " Thomas Lamprecht
2024-11-14 15:07 ` [pve-devel] [PATCH common v4 06/27] tools: run fork: allow running code in parent after fork Fiona Ebner
2024-11-14 19:46   ` [pve-devel] applied: " Thomas Lamprecht
2024-11-14 15:07 ` [pve-devel] [PATCH common v4 07/27] test: have lock file test use run_fork() helper Fiona Ebner
2024-11-14 19:46   ` [pve-devel] applied: " Thomas Lamprecht
2024-11-14 15:07 ` [pve-devel] [PATCH storage v4 08/27] add storage_has_feature() helper function Fiona Ebner
2024-11-14 15:07 ` [pve-devel] [PATCH storage v4 09/27] plugin: introduce new_backup_provider() method Fiona Ebner
2025-04-01 16:02   ` Andreas Rogge
2025-04-01 18:21     ` Thomas Lamprecht
2025-04-02  8:30       ` Wolfgang Bumiller
2025-04-02 16:16         ` Andreas Rogge
2025-04-03  7:24           ` Wolfgang Bumiller
2025-04-03 16:08             ` Andreas Rogge [this message]
2025-04-04  7:15               ` Fabian Grünbichler
2025-04-02  8:33       ` Fiona Ebner
2025-04-03  8:06         ` Andreas Rogge
2025-04-02 16:01       ` Andreas Rogge
2024-11-14 15:07 ` [pve-devel] [PATCH storage v4 10/27] extract backup config: delegate to backup provider for storages that support it Fiona Ebner
2024-11-14 15:07 ` [pve-devel] [POC storage v4 11/27] add backup provider example Fiona Ebner
2024-11-14 15:07 ` [pve-devel] [POC storage v4 12/27] WIP Borg plugin Fiona Ebner
2024-11-14 15:07 ` [pve-devel] [PATCH qemu-server v4 13/27] backup: keep track of block-node size for fleecing Fiona Ebner
2024-11-14 15:07 ` [pve-devel] [PATCH qemu-server v4 14/27] module config: load nbd module at boot Fiona Ebner
2024-11-14 15:07 ` [pve-devel] [PATCH qemu-server v4 15/27] backup: allow adding fleecing images also for EFI and TPM Fiona Ebner
2024-11-14 15:07 ` [pve-devel] [PATCH qemu-server v4 16/27] backup: implement backup for external providers Fiona Ebner
2024-11-14 15:07 ` [pve-devel] [PATCH qemu-server v4 17/27] backup: implement restore " Fiona Ebner
2024-11-14 15:07 ` [pve-devel] [PATCH qemu-server v4 18/27] backup restore: external: hardening check for untrusted source image Fiona Ebner
2024-11-14 15:07 ` [pve-devel] [PATCH container v4 19/27] add LXC::Namespaces module Fiona Ebner
2024-11-14 15:07 ` [pve-devel] [PATCH container v4 20/27] backup: implement backup for external providers Fiona Ebner
2024-11-14 15:07 ` [pve-devel] [PATCH container v4 21/27] backup: implement restore " Fiona Ebner
2024-11-14 15:07 ` [pve-devel] [PATCH container v4 22/27] external restore: don't use 'one-file-system' tar flag when restoring from a directory Fiona Ebner
2024-11-14 15:07 ` [pve-devel] [PATCH container v4 23/27] create: factor out compression option helper Fiona Ebner
2024-11-14 15:07 ` [pve-devel] [PATCH container v4 24/27] restore tar archive: check potentially untrusted archive Fiona Ebner
2024-11-14 15:07 ` [pve-devel] [PATCH container v4 25/27] api: add early check against restoring privileged container from external source Fiona Ebner
2024-11-14 15:07 ` [pve-devel] [PATCH manager v4 26/27] ui: backup: also check for backup subtype to classify archive Fiona Ebner
2024-11-14 15:07 ` [pve-devel] [PATCH manager v4 27/27] backup: implement backup for external providers Fiona Ebner

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=793a9b31-f0eb-4b21-af24-54bcef808167@bareos.com \
    --to=andreas.rogge@bareos.com \
    --cc=philipp.storz@bareos.com \
    --cc=pve-devel@lists.proxmox.com \
    --cc=t.lamprecht@proxmox.com \
    --cc=w.bumiller@proxmox.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
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal