Offsite-backup fra Proxmox Backup Server 4.2 til S3-objektlager: oppsett og kostnad

De fleste små virksomheter har to kopier av dataene sine, og begge står i samme rom: serveren i skapet og backupen på en NAS ved siden av. Én brann, én vannlekkasje eller én kryptering, og det finnes null kopier.

3-2-1-regelen er tre kopier på to ulike medier, med én utenfor huset. Den siste blir sjelden laget, fordi den har krevd en fysisk maskin på et annet sted. Våren og sommeren 2026 endret to ting seg:

  • Proxmox Backup Server 4.2 kom 29. april og tok S3-kompatibelt objektlager ut av tech preview. Det er nå en offisielt støttet backend for en datastore.
  • Objektlager ble dyrere. Backblaze B2 gikk til 6,95 USD per TB per måned 1. mai, Wasabi ligger på 7,99 USD. Samtidig fjernet Backblaze transaksjonsgebyrene på klasse A, B og C for pay-as-you-go.

Hva en tredje kopi koster, avgjøres av to ting: lagret volum etter deduplisering, og antall forespørsler mot bucketen.

Dedupliseringen avgjør regningen

Tallene under er fra garbage collection på min egen backup-server natt til 1. august: 37 backup-grupper, 212 snapshots og en drøy uke med daglige kjøringer av hele virtualiseringsmiljøet.

Original data usage: 2.86 TiB
On-Disk usage: 197.933 GiB (6.76%)
Deduplication factor: 14.80
Backup-serveren deler alt opp i chunks, lagrer hver unike chunk én gang og komprimerer den. 2,86 TiB logisk data ligger som 198 GiB på disk. Det er de 198 GiB som havner i bucketen, og det er dem du betaler for.

Objektlager faktureres i desimal-TB, så 197,9 GiB blir 0,21 TB på regningen. Til 6,95 USD per TB er det 1,48 USD i måneden, rundt 15 kroner for en offsite-kopi av hele miljøet. De samme dataene som ukomprimerte fulldumper hadde vært 3,14 TB og kostet 22 USD, og da har du fortsatt bare ett gjenopprettingspunkt per gjest.

Chunk-basert backup med deduplisering gjør regningen en størrelsesorden lavere før prisforskjellen mellom leverandørene spiller inn.

Oppsett

Endepunktet opprettes først, deretter en datastore som peker på det. Nøkkelparet er en application key fra leverandøren, ikke hovedkontoen din:

proxmox-backup-manager s3 endpoint create b2 \
--endpoint s3.eu-central-003.backblazeb2.com \
--region eu-central-003 \
--access-key <keyID> \
--secret-key <applicationKey>

proxmox-backup-manager s3 check b2 <bucket>
s3 check
tar to sekunder og bekrefter at nøkkelen virker og at bucketen er skrivbar, før du oppdager feilen midt i den første backup-jobben.

proxmox-backup-manager datastore create offsite /mnt/s3cache \
--backend type=s3,client=b2,bucket=<bucket>
Mot et selvhostet objektlager trenger du som regel to flagg til: --path-style true for adressering uten subdomene per bucket, og --fingerprint med SHA256-avtrykket hvis sertifikatet er selvsignert.

En S3-datastore krever lokal cache

En S3-basert datastore krever en lokal, persistent cache (stien /mnt/s3cache over), og dokumentasjonen anbefaler 64 til 128 GiB. Cachen kan ikke være en eksisterende datastore, og den bør ligge på egen disk eller ha kvote. Går den full, stopper backupen.

Du slipper altså en tredje maskin, men trenger fortsatt rundt 100 GB lokal lagring i stedet for flere TB.

Diagram over dataflyten fra hypervisor via backup-server med lokal cache til objektlager
Chunkene krypteres på hypervisoren, dedupliseres på backup-serveren og lastes opp som enkeltobjekter. Prune, garbage collection og restore er tre helt ulike operasjoner mot bucketen.

Antall objekter påvirker regningen

Mine 198 GiB ligger som 99 788 separate objekter, rundt 2 MiB i snitt. Prisen per TB sier ingenting om hva det koster å håndtere så mange objekter.

Garbage collection må liste hele bucketen for å finne chunks som ikke lenger refereres. Hos en leverandør som fakturerer per forespørsel, er det denne operasjonen som koster, mer enn lagringen. Backblaze gjorde klasse A, B og C gratis for pay-as-you-go, og tar 0,004 USD per 10 000 kall for klasse D, med de første 2 500 per dag gratis. Andre fakturerer fortsatt både PUT, GET og LIST. Sjekk prismodellen før du velger leverandør.

Backup-serveren har innebygde tellere for dette, med terskler du kan bli varslet på:

proxmox-backup-manager datastore update offsite \
--notification-thresholds s3-put=200000,s3-get=1000000

proxmox-backup-manager s3 endpoint reset-counters b2 <bucket>
Struper leverandøren deg, finnes --put-rate-limit med antall forespørsler per sekund. For objektlagre som ikke implementerer hele API-et likt, finnes kvirk-flagg som slår av de aktuelle forutsetningene:

--provider-quirks skip-if-none-match-header
--provider-quirks delete-objects-via-delete-object
Kryptering på hypervisoren
Kopien ligger hos en annen leverandør, så den skal krypteres før den forlater din egen maskin, ikke av leverandøren etter at den er kommet fram. På hypervisor-siden er det én kommando:

pvesm set <storage> --encryption-key autogen
Nøkkelen havner i /etc/pve/priv/storage/<storage>.enc, og krypteringen er AES-256-GCM. Før du skrur det på:

  • Bare nye backups blir kryptert. De eksisterende ligger ukryptert til oppbevaringstiden fjerner dem, eller til du sletter dem selv. Jeg kjørte en full runde med kryptering og slettet deretter de ukrypterte snapshottene i gruppene som hadde fått en kryptert erstatning.
  • Mister du nøkkelen, er hver krypterte backup umulig å gjenopprette. Nøkkelen må derfor ligge et annet sted enn maskinen den beskytter: i passordhvelvet, på papir, helst begge deler.

Prune frigjør ingen plass

Prune fjerner snapshots fra indeksen, men sletter ingen chunks. Det er garbage collection som sletter data som ikke lenger refereres. Setter du opp oppbevaringsregler uten en GC-plan, fortsetter bucketen og regningen å vokse.

proxmox-backup-manager datastore update offsite \
--gc-schedule 'sat 03:00' \
--keep-daily 7 --keep-weekly 4 --keep-monthly 12
Test gjenoppretting
En backup du aldri har gjenopprettet fra, er en antakelse. Med data hos en ekstern leverandør kommer uttrekkskostnaden i tillegg.

Backblaze gir gratis egress opp til tre ganger gjennomsnittlig månedslagring, deretter 0,01 USD per GB. Med 212 GB lagret er det rundt 640 GB gratis uttrekk i måneden. Wasabi tar ingenting for egress. Det holder til å hente ned én gjest og starte den, men ikke til å hente hele settet hjem hver måned, og det er heller ikke formålet med den tredje kopien.

proxmox-backup-client snapshot list --repository <bruker>@<vert>:offsite
proxmox-backup-client restore <snapshot> <arkiv> /tmp/test.raw \
--repository <bruker>@<vert>:offsite
Legg det inn i kalenderen som en fast oppgave: én gjest hentet ned fra objektlageret og startet, én gang i kvartalet.