Backup, Teil 4: Überblick und Test von zbackup, restic, borgbackup

Backup, Teil 4: Überblick und Test von zbackup, restic, borgbackup

In diesem Artikel werden Softwarelösungen für die Datensicherung behandelt, die durch die Aufteilung des Datenstroms in einzelne Komponenten (Chunks) ein Repository bilden.

Die Repository-Komponenten können zusätzlich komprimiert und verschlüsselt werden, und das Wichtigste ist, dass sie bei wiederholten Sicherungsprozessen wiederverwendet werden können.

Eine Sicherung in einem solchen Repository ist eine benannte Kette von miteinander verbundenen Komponenten, beispielsweise basierend auf verschiedenen Hash-Funktionen.

Es gibt mehrere solche Lösungen; ich werde auf drei eingehen: zbackup, borgbackup und restic.

Erwartete Ergebnisse

Da alle Kandidaten auf die eine oder andere Weise die Erstellung eines Repositories erfordern, wird eine der wichtigsten Bewertungen die Größe des Repositories sein. Im Idealfall sollte seine Größe gemäß der angenommenen Methodik 13 GB nicht überschreiten, möglicherweise sogar weniger – vorausgesetzt, es erfolgt eine gute Optimierung.

Es ist auch äußerst wünschenswert, die Möglichkeit zu haben, Sicherungen von Dateien direkt zu erstellen, ohne Archivierungsprogramme wie tar zu verwenden, sowie die Arbeit mit ssh/sftp ohne zusätzliche Hilfsmittel wie rsync und sshfs.

Verhalten beim Erstellen von Backups:

  1. Die Größe des Repositories entspricht der Größe der Änderungen oder ist sogar kleiner.
  2. Bei der Verwendung von Kompression und/oder Verschlüsselung ist mit einer hohen CPU-Auslastung zu rechnen, und es kann auch eine erhebliche Belastung für das Netzwerk und das Speichersystem auftreten, falls der Archivierungs- und/oder Verschlüsselungsprozess auf dem Backup-Server läuft.
  3. Wenn das Repository beschädigt wird, kann sowohl bei der Erstellung neuer Backups als auch beim Versuch der Wiederherstellung ein verzögertes Fehler auftreten. Es sind zusätzliche Maßnahmen zur Gewährleistung der Integrität des Repositories zu planen oder integrierte Integritätsprüfungen zu nutzen.

Als Referenzwert wird die Arbeit mit tar verwendet, wie in einem früheren Artikel gezeigt.

Testen von zbackup

Die grundlegende Funktionsweise von zbackup besteht darin, dass das Programm in dem gegebenen Datenstrom Bereiche identifiziert, die identische Daten enthalten, diese optional komprimiert, verschlüsselt und jeden Bereich nur einmal speichert.

Für die Deduplizierung wird eine 64-Bit-Ring-Hash-Funktion mit gleitendem Fenster verwendet, um byteweise auf Übereinstimmungen mit bereits vorhandenen Datenblöcken zu überprüfen (ähnlich wie es in rsync implementiert ist).

Für die Komprimierung werden lzma und lzo in multithreaded Ausführung verwendet, und für die Verschlüsselung kommt aes zum Einsatz. In den neuesten Versionen gibt es die Möglichkeit, künftig alte Daten aus dem Repository zu entfernen.
Das Programm ist in C++ mit minimalen Abhängigkeiten geschrieben. Der Autor wurde offensichtlich vom Unix-Prinzip inspiriert, weshalb das Programm Daten über stdin beim Erstellen von Backups annimmt und einen ähnlichen Datenstrom über stdout beim Wiederherstellen ausgibt. So kann zbackup als nützliches 'Baustein' beim Schreiben eigener Backup-Lösungen verwendet werden. Beispielsweise ist dieses Programm seit etwa 2014 das Hauptmittel für Backups auf den Heimcomputern des Autors.

Als Datenstrom wird standardmäßig tar verwendet, sofern nicht anders angegeben.

Sehen wir uns die Ergebnisse an:

Die Funktionsprüfung wurde in 2 Varianten durchgeführt:

  1. Ein Repository wird erstellt und zbackup auf dem Server mit den Ausgangsdaten gestartet, dann wird der Inhalt des Repositories auf den Backup-Server übertragen.
  2. Ein Repository wird auf dem Backup-Server erstellt, zbackup wird über ssh auf dem Backup-Server gestartet und erhält die Daten über eine Pipe.

Die Ergebnisse der ersten Variante waren wie folgt: 43m11s – unter Verwendung eines unverschlüsselten Repositories und eines lzma-Kompressors, 19m13s – bei Ersetzung des Kompressors durch lzo.

Die Serverlast mit den Ausgangsdaten war wie folgt (hier ein Beispiel mit lzma, mit lzo war es ähnlich, aber der Anteil von rsync betrug etwa ein Viertel der Zeit):

Backup, Teil 4: Überblick und Test von zbackup, restic, borgbackup

Es ist offensichtlich, dass ein solcher Backup-Prozess nur bei relativ seltenen und geringen Änderungen geeignet ist. Zudem ist es dringend empfehlenswert, die Arbeit von zbackup auf einen Thread zu beschränken, da die CPU-Auslastung sonst sehr hoch sein wird, da das Programm sehr gut mit mehreren Threads arbeiten kann. Die Disklast war gering, was insgesamt bei modernen SSD-basierten Speichersystemen kaum bemerkbar sein wird. Auch wird deutlich, dass der Prozess der Datensynchronisation des Repositories auf den Remote-Server gestartet wird, die Arbeitsgeschwindigkeit ist vergleichbar mit dem üblichen rsync und stößt an die Leistungsgrenzen des Speicher-Backup-Systems. Ein Nachteil dieses Ansatzes ist die Speicherung des lokalen Repositories und damit verbunden die Daten-Duplizierung.

Die zweite Option, das zbackup direkt auf dem Backup-Speicherserver zu starten, ist interessanter und praktischer.

Zunächst wird die Funktionalität ohne die Verwendung von Verschlüsselung mit dem lzma-Kompressor geprüft:

Backup, Teil 4: Überblick und Test von zbackup, restic, borgbackup

Die Laufzeit jedes Testdurchlaufs:

Start 1
Start 2
Start 3

39m45s
40m20s
40m3s

7m36s
8m3s
7m48s

15m35s
15m48s
15m38s

Wenn die AES-Verschlüsselung aktiviert wird, sind die Ergebnisse ausreichend nah:

Backup, Teil 4: Überblick und Test von zbackup, restic, borgbackup

Benötigte Zeit mit denselben Daten und Verschlüsselung:

Start 1
Start 2
Start 3

43m40s
44m12s
44m3s

8m3s
8m15s
8m12s

15m0s
15m40s
15m25s

Wenn die Verschlüsselung mit der Kompression mit lzo kombiniert wird, ergibt sich Folgendes:

Backup, Teil 4: Überblick und Test von zbackup, restic, borgbackup

Laufzeit:

Start 1
Start 2
Start 3

18m2s
18m15s
18m12s

5m13s
5m24s
5m20s

8m48s
9m3s
8m51s

Die Größe des resultierenden Repositories war relativ konstant und betrug 13 GB. Dies bedeutet, dass die Deduplication korrekt funktioniert. Auch bei bereits komprimierten Daten zeigt die Anwendung von lzo einen spürbaren Effekt. Insgesamt kommt zbackup hinsichtlich der Gesamtzeit für die Verarbeitung nahe an duplicity/duplicati heran, bleibt aber um das 2- bis 5-fache hinter den auf librsync basierenden Lösungen zurück.

Die Vorteile sind offensichtlich — Einsparungen beim Speicherplatz auf dem Backup-Speicherserver. Was die Überprüfung des Repositories betrifft, so sind dafür keine Werkzeuge vorgesehen. Es wird empfohlen, ein ausfallsicheres RAID-System oder einen Cloud-Anbieter zu verwenden.

Insgesamt ein recht guter Eindruck, trotz der Tatsache, dass das Projekt seit etwa 3 Jahren stagniert (die letzte Funktionenanfrage war vor etwa einem Jahr, jedoch ohne Antwort).

Borgbackup testen

Borgbackup ist ein Fork von attic, einem ähnlichen System wie zbackup. Es ist in Python geschrieben und hat eine ähnliche Liste von Funktionen wie zbackup, kann jedoch zusätzlich:

  • Backups über FUSE einbinden
  • Den Inhalt des Repositories überprüfen
  • Im Client-Server-Modus arbeiten
  • Verschiedene Komprimierungsalgorithmen für Daten verwenden und eine heuristische Dateityperkennung bei der Komprimierung durchführen.
  • 2 Verschlüsselungsoptionen, AES und Blake
  • Integriertes Werkzeug zur

Leistungsüberprüfung

borgbackup benchmark crud://backup_server/repo/path local_dir

Die Ergebnisse waren folgendermaßen:

C-Z-BIG 96,51 MB/s (10 100,00 MB All-Zero-Dateien: 10,36s)
R-Z-BIG 57,22 MB/s (10
100,00 MB All-Zero-Dateien: 17,48s)
U-Z-BIG 253,63 MB/s (10 100,00 MB All-Zero-Dateien: 3,94s)
D-Z-BIG 351,06 MB/s (10
100,00 MB All-Zero-Dateien: 2,85s)
C-R-BIG 34,30 MB/s (10 100,00 MB zufällige Dateien: 29,15s)
R-R-BIG 60,69 MB/s (10
100,00 MB zufällige Dateien: 16,48s)
U-R-BIG 311,06 MB/s (10 100,00 MB zufällige Dateien: 3,21s)
D-R-BIG 72,63 MB/s (10
100,00 MB zufällige Dateien: 13,77s)
C-Z-MEDIUM 108,59 MB/s (1000 1,00 MB All-Zero-Dateien: 9,21s)
R-Z-MEDIUM 76,16 MB/s (1000
1,00 MB All-Zero-Dateien: 13,13s)
U-Z-MEDIUM 331,27 MB/s (1000 1,00 MB All-Zero-Dateien: 3,02s)
D-Z-MEDIUM 387,36 MB/s (1000
1,00 MB All-Zero-Dateien: 2,58s)
C-R-MEDIUM 37,80 MB/s (1000 1,00 MB zufällige Dateien: 26,45s)
R-R-MEDIUM 68.90 MB/s (1000
1,00 MB zufällige Dateien: 14,51s)
U-R-MEDIUM 347.24 MB/s (1000 1,00 MB zufällige Dateien: 2,88s)
D-R-MEDIUM 48.80 MB/s (1000
1,00 MB zufällige Dateien: 20,49s)
C-Z-SMALL 11.72 MB/s (10000 10,00 kB vollständige Null-Dateien: 8,53s)
R-Z-SMALL 32.57 MB/s (10000
10,00 kB vollständige Null-Dateien: 3,07s)
U-Z-SMALL 19.37 MB/s (10000 10,00 kB vollständige Null-Dateien: 5,16s)
D-Z-SMALL 33.71 MB/s (10000
10,00 kB vollständige Null-Dateien: 2,97s)
C-R-SMALL 6.85 MB/s (10000 10,00 kB zufällige Dateien: 14,60s)
R-R-SMALL 31.27 MB/s (10000
10,00 kB zufällige Dateien: 3,20s)
U-R-SMALL 12.28 MB/s (10000 10,00 kB zufällige Dateien: 8,14s)
D-R-SMALL 18.78 MB/s (10000
10,00 kB zufällige Dateien: 5,32s)

Bei den Tests wird Heuristik zur Kompression unter Berücksichtigung des Dateityps verwendet (Kompression automatisch), die Ergebnisse sind wie folgt:

Zuerst prüfen wir die Funktion ohne Verschlüsselung:

Backup, Teil 4: Überblick und Test von zbackup, restic, borgbackup

Laufzeit:

Start 1
Start 2
Start 3

4m6s
4m10s
4m5s

56s
58s
54s

1m26s
1m34s
1m30s

Wenn die Authentifizierung des Repositories aktiviert ist (authentifizierter Modus), sind die Ergebnisse ähnlich:

Backup, Teil 4: Überblick und Test von zbackup, restic, borgbackup

Laufzeit:

Start 1
Start 2
Start 3

4m11s
4m20s
4m12s

1m0s
1m3s
1m2s

1m30s
1m34s
1m31s

Bei Aktivierung der AES-Verschlüsselung verschlechterten sich die Ergebnisse nicht wesentlich:

Backup, Teil 4: Überblick und Test von zbackup, restic, borgbackup

Start 1
Start 2
Start 3

4m55s
5m2s
4m58s

1m0s
1m2s
1m0s

1m49s
1m50s
1m50s

Wenn AES gegen Blake getauscht wird, verbessert sich die Situation erheblich:

Backup, Teil 4: Überblick und Test von zbackup, restic, borgbackup

Laufzeit:

Start 1
Start 2
Start 3

4m33s
4m43s
4m40s

59s
1m0s
1m0s

1m38s
1m43s
1m40s

Wie bei zbackup betrug die Repository-Größe 13 GB und sogar etwas weniger, was insgesamt zu erwarten war. Die Betriebszeiten haben mich positiv überrascht; sie sind vergleichbar mit Lösungen, die auf librsync basieren, und bieten viel breitere Möglichkeiten. Auch die Möglichkeit, verschiedene Parameter über Umgebungsvariablen festzulegen, ist ein ernsthaftes Plus, wenn man borgbackup im automatisierten Modus verwendet. Zudem war die Last während der Sicherung erfreulich niedrig: Anhand der CPU-Auslastung zu urteilen, arbeitet borgbackup in einem Thread.

Es wurden keine besonderen Nachteile bei der Nutzung festgestellt.

Test von restic

Obwohl restic eine relativ neue Lösung ist (die ersten zwei Kandidaten sind schon seit 2013 oder älter bekannt), bietet es recht ordentliche Eigenschaften. Es ist in Go geschrieben.

Im Vergleich zu zbackup bietet es zusätzlich:

  • Die Integritätsprüfung des Repositories (einschließlich der Prüfung in Teilen).
  • Eine riesige Liste unterstützter Protokolle und Anbieter für die Speicherung von Sicherungskopien sowie die Unterstützung von rclone — rsync für "Cloud"-Lösungen.
  • Vergleich von zwei Sicherungskopien miteinander.
  • Mounten des Repositories über fuse.

Insgesamt ist die Liste der Funktionen von borgbackup recht ähnlich, an manchen Stellen mehr, an anderen weniger. Ein besonderes Merkmal ist, dass die Möglichkeit, die Verschlüsselung zu deaktivieren, fehlt, daher sind die Backups immer verschlüsselt. Lassen Sie uns in der Praxis sehen, was wir aus dieser Software herausholen können:

Die Ergebnisse sind wie folgt:

Backup, Teil 4: Überblick und Test von zbackup, restic, borgbackup

Laufzeit:

Start 1
Start 2
Start 3

5m25s
5m50s
5m38s

35s
38s
36s

1m54s
2m2s
1m58s

Die Ergebnisse sind auch vergleichbar mit Lösungen auf Basis von rsync und insgesamt recht nah an borgbackup, allerdings ist die CPU-Belastung höher (es arbeiten mehrere Threads) und unregelmäßig.

Wahrscheinlich stößt das Programm an die Leistungsgrenzen des Speichersystems auf dem Datenspeicher-Server, wie es bereits bei rsync der Fall war. Die Größe des Repositories betrug 13 GB, genau wie bei zbackup oder borgbackup, wobei keine offensichtlichen Nachteile bei der Verwendung dieser Lösung festgestellt wurden.

Ergebnisse

In der Tat lagen die Ergebnisse aller Kandidaten nahe beieinander, jedoch zu unterschiedlichen Preisen. Borgbackup schnitt am besten ab, etwas langsamer waren restic und zbackup, das wahrscheinlich nicht eingesetzt werden sollte,
und wenn es bereits verwendet wird, sollten Sie in Erwägung ziehen, zu borgbackup oder restic zu wechseln.

Fazit

Die vielversprechendste Lösung scheint restic zu sein, da sie das beste Verhältnis von Funktionalität zu Arbeitsgeschwindigkeit bietet. Aber lassen Sie uns noch keine allgemeinen Schlussfolgerungen ziehen.

Borgbackup ist im Grunde genommen nicht schlechter, aber zbackup sollte wahrscheinlich ersetzt werden. Allerdings kann zbackup weiterhin zur Einhaltung der 3-2-1-Regel verwendet werden, beispielsweise neben Backup-Lösungen auf Basis von (lib)rsync.

Ankündigung

Backup, Teil 1: Warum Backup notwendig ist, Überblick über Methoden und Technologien
Backup, Teil 2: Überblick und Test von rsync-basierten Backup-Tools
Backup, Teil 3: Überblick und Test von Duplicity, Duplicati
Backup, Teil 4: Überblick und Test von zbackup, restic, borgbackup
Backup, Teil 5: Test von Bacula und Veeam Backup für Linux
Backup, Teil 6: Vergleich von Backup-Tools.
Backup, Teil 7: Fazit

Autor der Publikation: Pavel Demkovich

Quelle: habr.com

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Servern 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Servern | ProHoster