Hi everyone,
sorry for digging up that ancient mail, but I feel that's the best
starting point for me.
Bareos investigates how to better integrate with Proxmox VE, so users
can take backups of virtual machines and restore them using Bareos.
Am 14.11.24 um 16:07 schrieb Fiona Ebner:
The new_backup_provider() method can be used by storage plugins for
external backup providers. If the method returns a provider, Proxmox
VE will use callbacks to that provider for backups and restore instead
of using its usual backup/restore mechanisms.
So we as a backup provider need to provide plugin code that will run as
part of PVE. If I understand correctly this must be implemented as a
Perl module. Also, PVE wants to trigger the backup itself.
This introduces a few hurdles for us:
First of all, we don't usually program in Perl, so that's going to be a
problem for us. We can probably implement something, but we probably
don't have any developer that can write Perl code that meets any kind of
professional standard.
To do its job[1], Bareos must be able to schedule backup and restore
jobs all by itself. If I understood correctly, backups utilizing one of
the plugins can be run by calling `vzdump`, so that this is at least
possible.
However, what we've seen other vendors do is that they provide an API
where you just tell the system what VM you want to back up and then you
are provided with access to metadata (i.e. VM configuration, disk
layouts, nvram content, etc) and disk contents.
For restore it is mostly the same: you provide the metadata, get a set
of raw disks that you can write your data to and finally you just tell
the system that the VM restore is done.
The backup provider API is split into two parts, both of which again
need different implementations for VM and LXC guests:
[...]
1.1 Backup Mechanisms
[...]
VM mechanism 'block-device':
The snapshot access is exposed as a block device. If used, a bitmap is
passed along.
VM mechanism 'nbd':
The snapshot access and, if used, bitmap are exported via NBD.
That looks reasonable.
2. Restore API
2.1. Restore Mechanisms
VM mechanism 'qemu-img':
The backup provider gives a path to the disk image that will be
restored. The path needs to be something 'qemu-img' can deal with,
e.g. can also be an NBD URI or similar.
Um... that has nothing to do with what you provided when we take the
backup. Is there a reason PVE cannot provide a writeable block device to
restore to?
For Bareos this requirement would imply that we need an unpleasantly
large staging area on the PVE node to facilitate a restore: As we can
only stream the data we'd have to create a temporary disk image that PVE
can then read. This sounds pretty inefficient - especially when
comparing with qmrestore's ability to just read read from stdin.
Best Regards,
Andreas
[1] As a backup software it is Bareos' job to make sure the production
system is as strictly separated from the backup data as possible. While
we understand how nice tight integration with PVE would be, we see this
primarily as unnecessary attack surface.
For a nicely integrated solution that can bring back last week's VM
snapshot with a few clicks, there's Proxmox Backup Server, which works
great.
--
Andreas Rogge andreas.ro...@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