přeskočit na obsah
[JJ]
zpět na články
proxmoxzfsbackuppbsrestic28. 4. 2026 7 min

Proxmox ZFS snapshots: backup strategie, která funguje

Tříúrovňová záloha — ZFS snapshots, PBS, Hetzner Storage Box. 17 serverů, 91 kontejnerů, 0 dat ztraceno za rok.

Backup, který nikdy neotestuješ, je jenom přání. Tohle je můj 3-2-1 setup po 2 letech ladění, který přežil 4 incidenty (3× moje pitomost, 1× hardware).

3 vrstvy

Vrstva 1 — ZFS snapshots (každých 6 hodin)

ZFS umí native snapshoty — kopírujou se okamžitě (copy-on-write), zaberou prostor jen na rozdíl. Mám rotaci 7 dní × 4 snapshoty = 28 snapshotů per pool.

Skript najdeš v snippet/proxmox-snapshot-rotation.

Restore: zfs rollback rpool/data@auto-20260513-0000. 5 sekund.

Vrstva 2 — PBS (Proxmox Backup Server)

PBS běží jako separátní LXC kontejner (CT 200) s vlastním ZFS poolem. Proxmox 1 i 2 sem postujou denní backupy přes incremental dedup. Compression ZSTD.

text
rolling retention:
  keep-daily 7
  keep-weekly 4
  keep-monthly 6

Backup window: 2:00–4:00 v noci. PBS dedup typicky 20-30× menší než raw data.

Restore: Proxmox UI → CT/VM → Backup → Restore. Klikni a hotovo.

Vrstva 3 — Hetzner Storage Box (denně, off-site)

Pro paranoid scenario kdy se mi vyhoří dům (1× ročně si představuju jak se mi vyhoří dům). Restic backup z PBS poolu do Hetzner Storage Box (u540029.your-storagebox.de).

bash
restic -r sftp:[email protected]:23/backups \
  backup /backup/pbs --compression max

Forget policy: keep-daily 14, keep-monthly 12. ~200 GB zaplaceno za 4 EUR/měs.

3-2-1 pravidlo

  • 3 kopie dat — original na produkci, ZFS snapshot, PBS, Hetzner
  • 2 různé media — local SSD vs. remote SFTP
  • 1 off-site — Hetzner

Co dělat když...

Smazals soubor v kontejneru: ZFS snapshot, rollback nebo file-level extract

bash
ls /rpool/data/subvol-103-disk-0/.zfs/snapshot/auto-20260513-1200/

Smazals kontejner: PBS restore přes web UI nebo CLI

bash
proxmox-backup-client restore vm/103/2026-05-13T12:00:00Z root.pxar /tmp/restore

Vyhořel dům: Hetzner restore, dáš si pivo

bash
restic -r sftp:... restore latest --target /tmp/restore

Testy

Každý poslední den měsíce automaticky restoruju random kontejner do test poolu a smažu. Restore čas: ~3 minuty pro 16 GB kontejner. Pokud restore failne, ntfy push.

Co bych zlepšil

  • Encrypted backup Hetzner už mám, ale PBS leží unencrypted na local ZFS.
  • Off-site monitoring — kdyby Hetzner SFTP cron failoval, dozvím se z healthchecku až po 24 hodinách. Mám otevřený issue přidat ntfy alert.

Pohoda. Tak jedeme dál.