backup disaster-recovery architektur storage sysadmin-deep-dive

Backup Grundlagen Architektur Planung

Wir gehen über die 3-2-1-Regel hinaus. Dieser Deep Dive behandelt die strategische Planung und Architektur robuster Backup-Systeme im Enterprise-Maßstab. Wir beleuchten RPO/RTO, Speicherschichten (WORM), Air Gapping und die kritische Validierungskette. Backup ist der Restore – wir planen dafür.

# Backup Grundlagen: Planung, Architektur und die Kunst des Restores

TL;DR / Management Summary Vergiss den Bullshit, den dir die Verkäufer erzählen. Backup ist keine Software, Backup ist eine Architektur. Du musst die gesamte Kette vom Snapshot im Produktivsystem bis zur unveränderlichen Speicherung im Tresor verstehen und validieren. Die einzige Metrik, die zählt, ist die Recovery Time Objective (RTO). Wenn der Restore nicht funktioniert oder zu lange dauert, hast du kein Backup, sondern nur Datenmüll auf Slow-Storage. Dieser Artikel liefert den pragmatischen Plan, um einen Totalausfall (GAU) zu überleben.


# 1. Einführung & Architektur

Ich habe in meiner Laufbahn Rechenzentren gesehen, die 500.000 Euro in Backup-Lizenzen investiert haben, nur um festzustellen, dass ihre Recovery-Geschwindigkeit 72 Stunden betrug – weit über dem kritischen RTO von 4 Stunden. Das Problem liegt fast nie in der Backup-Software; es liegt in der Planung der Infrastruktur.

# Warum brauchen wir das? Die Lektion der 3-2-1-1-0 Regel

Jeder kennt die alte 3-2-1 Regel (3 Kopien, 2 Medientypen, 1 Offsite). Das ist heute veraltet, besonders im Zeitalter von Ransomware. Wir arbeiten nach der 3-2-1-1-0 Regel:

  • 3 Kopien der Daten.
  • 2 verschiedene Medientypen (z.B. Disk und Tape/Cloud).
  • 1 Kopie Offsite (physisch getrennt, min. 50 km).
  • 1 Kopie Air-Gapped (Logisch oder physisch getrennt, oft WORM-Storage oder Tape).
  • 0 Fehler in der automatischen Wiederherstellungsprüfung (Zero Errors on Recovery Verification).

# Problemstellung aus der Praxis

Der größte Fehler, den ich bei der Planung sehe, ist die Annahme, dass die Backup-Infrastruktur weniger performant sein darf als die Produktiv-Infrastruktur.

  • Szenario 1: Überlastete Storage Targets. Du hast eine Change Rate von 10 TB pro Tag. Wenn dein Backup-Storage nicht genug Schreib-I/O liefern kann, verzögern sich die Backups, kollidieren mit dem nächsten Fenster, und der Integrity Check fällt flach.
  • Szenario 2: Ransomware-Brücke. Die Backup-Proxies haben Netzwerkverbindung zum Produktionsnetzwerk und zum Backup-Storage. Wenn der Proxy kompromittiert wird, löscht die Ransomware direkt die Backup-Ketten. Das Air Gap fehlt.

# Architektur-Deep Dive: Die 4 Schichten der Datensicherung

Ein robustes Backup-System besteht aus vier funktional getrennten Schichten. Die Trennung dieser Schichten ist der Schlüssel zur Resilienz.

  1. Ingestion Layer (Quelle): Fokus auf Konsistenz. Hier nutzen wir VSS (Windows), quiescing Agents, oder ZFS/LVM Snapshots, um einen Point-in-Time-Stand zu gewährleisten. Dies läuft auf dem Host.
  2. Transport/Proxy Layer: Fokus auf Geschwindigkeit und Kompression/Deduplikation. Dies sind die Backup-Proxies/Media Agents. Sie sind state-los (oder zumindest leicht ersetzbar) und agieren als Brücke zwischen Prod-Netzwerk und Storage-Netzwerk. Sie sollten in einer Zero-Trust-Zone betrieben werden.
  3. Storage Layer (Target): Fokus auf Integrität und Unveränderlichkeit (Immutability). Dies ist das eigentliche Backup-Repository. Hier setzen wir auf Dateisysteme, die Prüfsummen verwenden (ZFS, Btrfs), oder auf WORM-Funktionalität (z.B. S3 Object Lock, Tape).
  4. Validation/Staging Layer: Fokus auf Verifikation. Dieses System muss periodisch Backups zurückspielen, Boot-Tests durchführen und die Anwendungsverfügbarkeit (z.B. SQL-Query-Tests) überprüfen, ohne die Produktivumgebung zu berühren.

# Architektur-Diagramm: Der Weg zur Immutability (Mermaid)

graph TD
    subgraph P[Produktions-Umgebung]
        A[App Server / DB] --> B(Host Snapshot: VSS/ZFS)
    end

    subgraph N[Backup-Netzwerk (Isoliert)]
        B --> C[Transport Proxy / Media Agent]
    end

    subgraph S[Backup Storage (WORM / Immutable)]
        C --> D(Primary Repository: Dedupliziert)
        D --> E[Secondary Repository: Air-Gapped / Tape / Cloud]
    end

    subgraph V[Validation / DR Lab]
        E --> F(Restore Test VM)
        F --> G{Automatisierter Test: RTO/RPO Check}
    end

    style S fill:#fcc,stroke:#333,stroke-width:2px
    style D fill:#faa,stroke:#333
    style E fill:#faa,stroke:#333
    
    A -.> |Prod-Traffic| P
    G -.> |Report| Ops(Operations Team)

    note right of C: TLS/Verschlüsselung
    note right of D: ZFS/Checksumming

Kernel-Sicht (Ingestion Layer): Der kritischste Punkt ist die Ingestion. Unter Linux müssen wir darauf achten, dass die Daten konsistent sind. Hier kommt der Kernel ins Spiel:

  • LVM/Device Mapper: LVM-Snapshots sind Copy-on-Write (CoW) und nutzen den Device Mapper, um eine konsistente Block-Ebene zu präsentieren. Sie sind schnell, aber das Backup-Fenster muss abgeschlossen sein, bevor das Snapshot-Volume voll läuft.
  • ZFS/Btrfs: Diese nutzen CoW nativ im Dateisystem. Der Snapshot ist fast instantan und effizient, da er nur Metadaten verändert. Meine Empfehlung: Wo immer möglich, ZFS oder Btrfs nutzen, da sie Checksumming und Snapshots tief integriert haben.

# 2. Installation & Grundkonfiguration (Praxis)

Wir installieren keine Backup-Software, sondern konfigurieren die beiden kritischsten Komponenten: die Snapshot-Infrastruktur und das Immutable Storage Repository.

# 2.1 Voraussetzungen: Integrität im Fokus

  1. Speicherintegrität auf der Quelle: Kernel-Module und Userland-Tools für ZFS oder LVM müssen installiert sein.
  2. Netzwerk-Segmentierung: Physisch oder logisch (VLAN/Firewall) getrennte Schnittstellen für den Backup-Traffic. Keine Routing-Beziehung zwischen dem Management-LAN und dem Storage-Target-LAN, außer über den dedizierten Proxy.
  3. WORM-Fähigkeit: Das Backup-Ziel muss die Speicherung gegen vorzeitiges Löschen sichern.

# 2.2 ZFS Repository Setup (Production Ready)

Wir nutzen ZFS als primäres Backup-Repository, da es Selbstheilung (Self-Healing) und native Immutability (Snapshots und Send/Receive) bietet, was für die Integrität unerlässlich ist.

# 1. Erstellen des ZPools mit Redundanz (z.B. RAIDZ2)
# Nutzen Sie immer 'ashift=12' (4K Sektoren) für moderne Disks, 
# um Performance-Alignment-Probleme zu vermeiden.

zpool create -f backup_pool raidz2 /dev/sdb /dev/sdc /dev/sdd /dev/sde -o ashift=12

# 2. Dataset für Backups erstellen
# 'compression=lz4' ist schnell und spart viel Platz für Backups
# 'recordsize' auf 1M erhöhen für große sequenzielle Schreibvorgänge (Backup-Traffic)
# 'xattr=sa' verbessert die Performance für einige Backup-Anwendungen, die viele Metadaten nutzen
zfs create -o compression=lz4 -o recordsize=1M -o xattr=sa backup_pool/repo

# 3. Immutability durch ZFS Snapshots erzwingen
# Wir setzen ein Retention-System auf, das Snapshots automatisch schützt.
# Zuerst der Basis-Snapshot, der gesichert wird.
zfs snapshot backup_pool/repo@baseline-$(date +%F)

# 4. Automatisches Scrubbing (Wichtigste Wartung!)
# ZFS muss regelmäßig die Prüfsummen aller Blöcke prüfen.
# Frequenz: monatlich für große Pools, wöchentlich für kritische Pools.
(echo "0 0 1 * * root zpool scrub backup_pool" | crontab -)

# Prüfung: Hat das ZPool Fehler?
zpool status -v backup_pool 

# 2.3 RPO/RTO Definition – Der Startpunkt der Planung

Du kannst keine Architektur planen, wenn du die Anforderungen nicht kennst.

  • Recovery Point Objective (RPO): Wie alt dürfen die Daten maximal sein, die ich wiederherstelle? (Definiert die Frequenz der Backups).
    • Beispiel: 15 Minuten für OLTP-Datenbanken (erfordert Log Shipping oder CDP/Near-CDP).
  • Recovery Time Objective (RTO): Wie lange darf der Ausfall maximal dauern, bis der Dienst wieder läuft? (Definiert die Geschwindigkeit der Hardware und die Komplexität der Wiederherstellungsstrategie).
    • Beispiel: 4 Stunden für kritische Dienste (erfordert schnelles Storage und automatisierte DR-Playbooks).

Pragmatischer Ansatz: Beginne mit dem Worst-Case RTO und plane rückwärts. Wenn du 4 Stunden RTO für 10 TB hast, brauchst du ein System, das 10 TB in unter 3 Stunden wiederherstellen kann (Puffer für Tests und Fehler). Dies definiert die Mindestanforderung an die Netzwerkbandbreite und die I/O-Fähigkeit des Backup-Targets.


# 3. Deep Dive: Konfiguration für Profis

Hier trennen wir uns von den einfachen Setups. Es geht um Effizienz, Sicherheit und die Maximierung der Restore-Performance.

# 3.1 Performance Tuning: Vom Backup-Fenster zum Netzwerk

Das größte Nadelöhr ist selten die CPU oder der RAM des Proxys, sondern die I/O-Fähigkeit des Backup-Targets und die Netzwerklatenz.

# 1. Dedizierte I/O auf dem Target

Wenn du Deduplizierung (z.B. VTL oder Dedupe-Appliances) nutzt, ist Random I/O der Killer. Jeder Schreibvorgang muss prüfen, ob der Block schon existiert.

  • Lösung: Nutze schnellen, dedizierten NVMe Flash für das Deduplizierungs-Metadaten-Caching. Bei ZFS ist das der L2ARC und der ZIL/SLOG. Ein langsamer SLOG (z.B. SATA SSD) kann synchrone Schreibvorgänge massiv verlangsamen. Nutze immer redundante, Power-Loss-Protected NVMe-SSDs für den SLOG.

# 2. Network Tuning (TCP Window Sizing)

Bei großen Backup-Jobs über WAN oder schnelle 10/25/40 GbE Links wird das TCP-Stack-Tuning kritisch, um die Leitung wirklich auszulasten.

  • Die Standard-TCP-Fenstergröße (Receive/Send Buffer) von Linux kann zu klein sein. Du brauchst größere Puffer, um die “Bandwidth-Delay Product” (BDP) zu bewältigen.
# Beispiel für ein Hochdurchsatz-Profil (Temporär oder über sysctl persistent)
# Erhöht die Maximalwerte für den TCP-Puffer (Default ist oft nur 2MB)
sysctl -w net.core.rmem_max=67108864
sysctl -w net.core.wmem_max=67108864

# Setze die Standard- und Maximalwerte für TCP Sockets
sysctl -w net.ipv4.tcp_rmem="4096 87380 33554432"
sysctl -w net.ipv4.tcp_wmem="4096 87380 33554432"

# Wichtig: Jumbo Frames (MTU 9000) verwenden, wenn die gesamte Kette 
# (Source NIC -> Switch -> Target NIC) es unterstützt. 
# Reduziert den CPU-Overhead durch weniger Packet-Processing.

# 3.2 Hardening & Security: Air Gap und Immutability

Ransomware zielt heute primär auf das Löschen der Backups ab. Immutability ist keine Option, sondern ein Muss.

# 1. Logisches Air Gap (WORM)

Nutze WORM (Write Once, Read Many) Speicherung.

  • Cloud: S3 Object Lock (Retention-Mode oder Compliance-Mode). Sobald die Daten geschrieben sind, kann sie niemand – auch kein Root-User oder der Backup-Admin – vor Ablauf der Retention löschen oder verändern.
  • On-Prem: Tape Libraries (physisches Air Gap) oder ZFS Datasets mit aktivierter com.delphix:readonly Eigenschaft, kombiniert mit streng isolierten Anmeldedaten.

# 2. Least Privilege für Proxies

Die Zugangsdaten des Backup-Proxys zur Backup-Infrastruktur dürfen keinerlei Berechtigungen zum Löschen oder Ändern der Daten außerhalb der aktuellen Backup-Kette haben.

  • Der Proxy schreibt auf einen dedizierten Share. Der Retention-Manager (ein separater, zeitgesteuerter Dienst) führt die Löschvorgänge durch.
  • Idealerweise nutzt du Credentials Injection (z.B. HashiCorp Vault) anstelle von fest gespeicherten Passwörtern auf dem Proxy.

# 4. Day-2 Operations: Wartung & Alltag

Ein Backup-System, das reibungslos läuft, muss aktiv gewartet und getestet werden.

# 4.1 Die unverzichtbare Restore-Übung

Wenn du deine RTO-Ziele erreichen willst, musst du den Restore-Vorgang automatisieren und periodisch testen.

  • Validierungs-Lab: Wir betreiben ein separates, isoliertes Lab mit minimaler Hardware, in das wir einmal wöchentlich eine Stichprobe der kritischsten Server (AD-Controller, Datenbanken, File-Server) zurückspielen.
  • Test-Automatisierung: Nach dem Restore muss das System nicht nur hochfahren, sondern funktionale Tests bestehen.
    • Datenbank: Eine kritische SELECT Query ausführen, um die Integrität zu prüfen.
    • Active Directory: Eine repadmin /showrepl durchführen.
    • Webserver: Ein Curl auf die Startseite ausführen.

# 4.2 Migration und Aktualisierung der Speicherebene

Wenn das Backup-Target voll ist, müssen wir erweitern oder migrieren. Da wir ZFS als Beispiel nutzen:

  • Erweitern (Adding VDevs): Vorsicht, ZFS erlaubt das Hinzufügen von VDevs, aber die Redundanz wird nicht über VDevs gemischt. Planen Sie das Pool-Layout im Voraus.
  • Migration (ZFS Send/Receive): Dies ist das sauberste Werkzeug zur Migration auf neue Hardware, da es Bit-für-Bit-Integrität garantiert.
# Beispiel: Migriere ein Dataset auf einen neuen Pool (neue_pool)
# Option -p: Erhalt aller Eigenschaften (Properties)
# Option -R: Rekursiv (alle Kinder-Datasets und Snapshots)
# Wir nutzen Pipe und SSH, um die Migration ohne Zwischenspeicherung durchzuführen.
# WICHTIG: Die Quelle wird NICHT beeinträchtigt.

zfs send -R backup_pool/repo@vollstaendig | \
    ssh backup_target_ip 'zfs recv -F neue_pool/repo'

# 4.3 Automatisierung (Ansible)

Backup-Infrastruktur muss Infrastructure-as-Code (IaC) behandelt werden. Hier ein Ansible-Snippet zur Sicherstellung, dass die kritischen Netzwerk-Konfigurationen auf allen Proxies korrekt sind (z.B. für Jumbo Frames).

# Ansible Playbook: Sicherstellung des 9000er MTU für das Backup-Interface
# Dies stellt sicher, dass alle Backup-Proxies effizient arbeiten.
---
- name: Configure Backup Network Interface for High Throughput
  hosts: backup_proxies
  become: yes
  tasks:
    - name: Set MTU to 9000 on backup interface (eth1)
      ansible.builtin.shell: |
        # Stelle sicher, dass die Karte existiert und up ist
        ip link set dev eth1 mtu 9000 up
      args:
        warn: false
      
    - name: Ensure permanent MTU setting via Netplan (Ubuntu/Debian)
      ansible.builtin.blockinfile:
        path: /etc/netplan/99-backup-interface.yaml
        block: |
          network:
            version: 2
            ethernets:
              eth1:
                dhcp4: no
                mtu: 9000
        state: present
        create: yes
      when: ansible_os_family == "Debian"

    - name: Apply Netplan configuration
      ansible.builtin.command: netplan apply

# 5. Troubleshooting & “War Stories”

In der Welt des Backup gibt es keine kleinen Fehler; jeder Fehler bedroht die Existenz der Firma.

# Top 3 Fehlerbilder

# 1. Symptom A: Langsame Restores (RTO-Verletzung)

  • Fehlermeldung/Log: I/O-Latenz auf dem Backup-Target schlägt Timeouts.
  • Ursache: Der Backup-Speicher wurde mit zu billiger oder falsch konfigurierter Hardware gebaut. Oft ist es ein RAID-Controller mit leerem oder fehlerhaftem Cache, oder ungenügend schneller Metadaten-Speicher bei Deduplizierung.
  • Lösung: Prüfe die I/O-Performance des Targets (z.B. mit fio). Wenn das Target Deduplizierung verwendet, erhöhe den Cache (SLOG/L2ARC bei ZFS) oder reduziere die Dedupe-Rate (oft unnötig für bereits komprimierte Daten).

# 2. Symptom B: Synthetische Full Backups schlagen fehl

  • Symptom: Backup-Software meldet Checksummen- oder Integrity-Fehler beim Versuch, ein neues Full Backup aus der Kette zu erstellen.
  • Ursache: Block-Level-Korruption im primären Repository. Häufige Ursachen sind: Stromausfall ohne Cache-Flush, fehlerhafte Speicherzellen (Silent Data Corruption) oder Bugs in der Dateisystemschicht (wenn kein ZFS/Btrfs verwendet wird).
  • Lösung: Wenn du ZFS nutzt, führe sofort einen zpool scrub durch. Wenn du Standard-Dateisysteme (Ext4/XFS) nutzt, musst du die Kette verwerfen und ein neues Full Backup erstellen, nachdem die Hardware geprüft wurde. Deshalb ist Checksumming auf der Speicherebene so wichtig.

# 3. Symptom C: Netzwerk-Sättigung während des Backups

  • Symptom: Hohe Latenz in der Produktivumgebung während des Backup-Fensters; Backups sind instabil.
  • Ursache: QoS fehlt, oder die Backup-Proxies senden mehr Traffic, als die Infrastruktur verkraftet. Klassischer Fall: Der Proxy nutzt die Prod-NIC, weil das Backup-Interface nicht richtig konfiguriert wurde.
  • Lösung: Immer auf dedizierte Backup-NICs und getrennte VLANs/Subnetze prüfen. Auf dem Proxy die Bandbreite in der Backup-Software limitieren (Throttle). Wenn möglich, nutze Off-Host-Proxies, die Snapshots über das Storage-Netzwerk replizieren, ohne die CPU des Produktivservers zu belasten.

# Recovery Szenarien Entscheidungsbaum (Mermaid)

graph TD
    A[Restore erforderlich?] --> B{War der letzte Test-Restore erfolgreich?};
    B -- Ja --> C{Restore starten};
    B -- Nein (RTO-Verletzung?) --> D[Alarm: Manuelle Prüfung des Validation Labs];

    C --> E{Restore Ziel erreichbar?};
    E -- Ja --> F{Datenintegrität prüfen (Checksum)?};
    E -- Nein --> H[Trouble: Netzwerkpfad/Target Storage prüfen];

    F -- Ja --> G[Dienst starten & Funktionalität testen];
    F -- Nein --> I[Trouble: Backup-Kette korrupt - Zurück zum vorletzten Full];

    G --> J{RTO erfüllt?};
    J -- Ja --> K[Erfolg! Dokumentation];
    J -- Nein --> L[Alarm: Post-Mortem, RTO-Analyse];

# War Story: Der stille Datenfriedhof

Ich erinnere mich an einen Fall, bei dem wir ein großes Banken-Rechenzentrum übernommen haben. Sie nutzten eine komplexe, aber billige Tape-Infrastruktur für ihr Offsite-Archiv. Die automatisierten Backups liefen seit zwei Jahren täglich “erfolgreich”.

Als wir eine DR-Übung durchführen sollten (die das Management zuvor nie angeordnet hatte), spielten wir die 6 Monate alte Tape-Kopie eines kritischen Servers zurück.

Das Ergebnis: 50% der Blöcke waren korrupt.

Was war passiert?

  1. Die Backup-Software prüfte nur, ob die Daten auf das Tape geschrieben wurden (Write Completion). Sie prüfte nicht, ob die Daten auf dem Tape lesbar waren (Read Verification).
  2. Die Tapes selbst stammten aus einer Charge mit Produktionsfehlern, was zu stiller Datenkorruption führte, die nur beim Auslesen oder beim seltenen tape verify Befehl erkannt worden wäre.
  3. Die Umgebung nutzte kein Dateisystem mit Prüfsummen (wie ZFS) auf dem primären Storage, sodass die Korruption der Quelldaten nicht erkannt wurde, bevor sie auf das Tape repliziert wurde.

Die Lektion: Wir hatten zwei Jahre lang wertvolle Bandbreite und Speicherplatz für einen Datenfriedhof verschwendet. Seitdem gilt für mich: Niemals ein Backup als erfolgreich einstufen, das nicht im Nachhinein lesbar verifiziert oder in einem Sandbox-Lab bootfähig getestet wurde. Der Restore-Test muss integraler Bestandteil des täglichen Backup-Jobs sein.


# 6. Monitoring & Alerting

Monitoring muss sich von der Job-Ebene auf die Infrastruktur- und Integritätsebene verlagern. Es reicht nicht, auf “Job Failed = True” zu warten.

# Metriken: Welche KPIs sind wichtig?

  1. Change Rate Delta: Die Menge der Daten, die sich tatsächlich täglich ändert. Wenn dieser Wert plötzlich stark ansteigt, könnte es ein Anzeichen für Ransomware-Aktivität sein (Massenverschlüsselung) oder einen fehlerhaften Ingestion Agent.
  2. Deduplizierungs-Verhältnis: (Dedupe Ratio). Ein plötzlicher starker Rückgang deutet auf einen Fehler im Deduplizierungs-Algorithmus oder eine Änderung im Datentyp hin (z.B. Wechsel von VMs zu verschlüsselten Containern).
  3. WORM-Ablauf: Wie viele Objekte/Snapshots laufen in den nächsten 7 Tagen ab? Kritisch, um sicherzustellen, dass die Retention Policies eingehalten werden.
  4. I/O-Latenz des Targets: Latenz beim Schreiben (Write Latency) ist die kritische KPI. Muss stabil unter 10ms liegen.

# Alerting-Regeln

KPI Schwellenwert Schweregrad Begründung
VG/Pool Free Space < 15% CRITICAL Verhindert, dass Full Backups oder wichtige Snapshots fehlschlagen.
Target Write Latency > 25 ms über 15 Min. WARNING Deutet auf I/O-Überlastung hin; Backups werden zu langsam. RTO-Gefahr.
Dedupe Ratio Change Drop > 20% in 24h WARNING Mögliche Korruption oder falsche Datenquelle.
ZFS Scrub Errors > 0 Errors (CRC Mismatch) CRITICAL Stille Datenkorruption erkannt. Sofortige Prüfung und Austausch des fehlerhaften Mediums.
Test Restore Failed True CRITICAL RTO/RPO verletzt. Der GAU ist nicht abwendbar.

# Tools: Prometheus Exporter Config

Wenn Sie ZFS nutzen, ist der zfs_exporter essentiell. Er liefert Metriken über den Pool-Status, I/O und vor allem die Scrub-Resultate, direkt in Prometheus.

# Prometheus job_config für ZFS Pool Monitoring
- job_name: 'zfs_scrub_health'
  static_configs:
  - targets: ['zfs-backup-storage:9100']
  metric_relabel_configs:
    # Nur kritische Metriken ausgeben (z.B. Pool Status und Scrub Errors)
    - source_labels: [__name__]
      regex: 'zfs_pool_health_.*|zfs_pool_scan_state|zfs_pool_scan_errors'
      action: keep

# 7. Fazit & Empfehlung

Backup ist eine Investition in die Kontinuität deines Geschäfts. Es ist die einzige Infrastruktur, die du hoffentlich nie wirklich brauchst, aber die bei einem Totalausfall sofort und fehlerfrei funktionieren muss.

Meine pragmatischen Ratschläge:

  1. Immer mit dem RTO beginnen: Plane die Hardware für den Restore, nicht für das Backup. Wenn der Restore von 50 TB in 8 Stunden klappen muss, brauchst du 10 GbE End-to-End und schnelles Target Storage (SSD-Cache).
  2. Finger weg von Non-Checksumming Storage: Nutze ZFS, Btrfs oder dedizierte Appliances mit integrierter Datenintegritätsprüfung. Die Gefahr der stillen Korruption ist real.
  3. Tape ist nicht tot: Wenn du ein echtes, physikalisches Air Gap und langfristige, kostengünstige Archivierung benötigst, ist LTO-Tape (mit regelmäßiger Leseprüfung) unschlagbar.

# Wann würde ich es nicht einsetzen?

Für Kleinstunternehmen (Home Labs oder Micro-KMU) kann der Overhead eines vollintegrierten ZFS-DR-Labs zu hoch sein. Hier kann eine einfache Cloud-Lösung (z.B. rsync zu S3 mit Object Lock) praktikabler sein, solange der RTO im 24-Stunden-Bereich liegt. Sobald RTOs unter 6 Stunden fallen, führt kein Weg an einer dedizierten, schnellen Architektur vorbei.


# Anhang: Cheatsheet

Die wichtigsten Befehle zur Integritätsprüfung und Wartung der Backup-Infrastruktur.

Befehl Zweck Notes
zpool status -v POOLNAME Prüft den Gesundheitszustand des ZFS Pools und listet fehlerhafte Dateien auf. Unverzichtbar für tägliches Monitoring.
zpool scrub POOLNAME Startet die Integritätsprüfung (Checksumming) aller Blöcke im Pool. Sollte wöchentlich/monatlich automatisiert laufen.
ip link set dev ethX mtu 9000 Setzt Jumbo Frames für maximale Backup-Geschwindigkeit. Erfordert, dass die gesamte Netzwerkkette MTU 9000 unterstützt.
iostat -xk 5 Zeigt I/O-Latenz und Durchsatz auf dem Backup-Target. Suche nach hohem %util und langen Wartezeiten (await).
rclone check remote:path local/path Prüft die Integrität von Cloud/S3-Backups. Bestätigt, dass Remote-Dateien mit lokalen Checksummen übereinstimmen.
vgcfgrestore -l Listet LVM Metadata Backups auf. Notfallwerkzeug, falls LVM-Metadaten korrupt sind (selten, aber GAU).
ping -s 8972 -M do IP_ADRESSE Testet, ob Jumbo Frames (MTU 9000) wirklich funktionieren. 8972 Bytes Payload + 28 Bytes Header = 9000.

# Referenzen

  • OpenZFS Documentation: Die beste Quelle für Deep Dives in Storage-Integrität und WORM-Fähigkeiten.
  • Linux TCP Tuning Guide: Spezifische Anleitungen zur Optimierung des TCP-Stacks für Hochdurchsatz-Anwendungen.
  • Veeam/Commvault Best Practices: Unabhängig von der genutzten Software sind die Whitepaper zur Dimensionierung von Storage Repositories oft sehr aufschlussreich in Bezug auf I/O-Anforderungen von Deduplizierungs-Engines.