Backup Teil 3: Überprüfung und Test von Duplizität, Duplikaten

Backup Teil 3: Überprüfung und Test von Duplizität, Duplikaten

In diesem Hinweis werden Sicherungstools erläutert, die Sicherungen durchführen, indem sie Archive auf einem Sicherungsserver erstellen.

Zu denen, die die Anforderungen erfüllen, gehören Duplicity (das über eine schöne Schnittstelle in Form von Deja Dup verfügt) und Duplicati.

Ein weiteres sehr bemerkenswertes Backup-Tool ist dar, aber da es über eine sehr umfangreiche Liste an Optionen verfügt – die Testmethodik deckt kaum 10 % dessen ab, wozu es in der Lage ist – testen wir es nicht im Rahmen des aktuellen Zyklus.

Erwartete Ergebnisse

Da beide Kandidaten auf die eine oder andere Weise Archive erstellen, kann normales Tar als Leitfaden dienen.

Darüber hinaus bewerten wir, wie gut die Datenspeicherung auf dem Speicherserver optimiert wird, indem Sicherungskopien erstellt werden, die nur die Differenz zwischen einer vollständigen Kopie und dem aktuellen Status der Dateien oder zwischen den vorherigen und aktuellen Archiven (inkrementell, dekrementell usw.) enthalten. .

Verhalten beim Erstellen von Backups:

  1. Eine relativ kleine Anzahl von Dateien auf dem Backup-Speicherserver (vergleichbar mit der Anzahl der Backup-Kopien oder der Größe der Daten in GB), aber ihre Größe ist ziemlich groß (zig bis Hunderte von Megabyte).
  2. Die Repository-Größe umfasst nur Änderungen – es werden keine Duplikate gespeichert, sodass die Repository-Größe kleiner ist als bei rsync-basierter Software.
  3. Bei Verwendung von Komprimierung und/oder Verschlüsselung ist mit einer hohen CPU-Auslastung zu rechnen, und wahrscheinlich mit einer ziemlich hohen Netzwerk- und Festplattenlast, wenn der Archivierungs- und/oder Verschlüsselungsprozess auf einem Backup-Speicherserver ausgeführt wird.

Lassen Sie uns den folgenden Befehl als Referenzwert ausführen:

cd /src/dir; tar -cf - * | ssh backup_server "cat > /backup/dir/archive.tar"

Die Ausführungsergebnisse waren wie folgt:

Backup Teil 3: Überprüfung und Test von Duplizität, Duplikaten

Ausführungszeit 3:12 Sekunden. Es ist ersichtlich, dass die Geschwindigkeit durch das Festplattensubsystem des Backup-Speicherservers begrenzt wird, wie im Beispiel mit rsync. Nur etwas schneller, weil... Die Aufnahme geht in eine Datei.

Um die Komprimierung auszuwerten, führen wir außerdem dieselbe Option aus, aktivieren jedoch die Komprimierung auf der Seite des Sicherungsservers:

cd /src/dir; tar -cf - * | ssh backup_server "gzip > /backup/dir/archive.tgz"

Die Ergebnisse sind wie folgt:

Backup Teil 3: Überprüfung und Test von Duplizität, Duplikaten

Ausführungszeit 10 Minuten und 11 Sekunden. Der Engpass ist höchstwahrscheinlich der Single-Flow-Kompressor auf der Empfangsseite.

Derselbe Befehl, jedoch mit Komprimierung, die mit den Originaldaten an den Server übertragen wird, um die Hypothese zu testen, dass der Engpass ein Single-Threaded-Kompressor ist.

cd /src/dir; tar -czf - * | ssh backup_server "cat > /backup/dir/archive.tgz"

Es stellte sich so heraus:

Backup Teil 3: Überprüfung und Test von Duplizität, Duplikaten

Die Ausführungszeit betrug 9:37 Minuten. Die Belastung eines Kerns durch den Kompressor ist deutlich sichtbar, denn Die Netzwerkübertragungsgeschwindigkeit und die Belastung des Quellplattensubsystems sind ähnlich.

Um die Verschlüsselung auszuwerten, können Sie OpenSSL oder GPG verwenden, indem Sie einen zusätzlichen Befehl anschließen openssl oder gpg im Rohr. Als Referenz gibt es einen Befehl wie diesen:

cd /src/dir; tar -cf - * | ssh backup_server "gzip | openssl enc -e -aes256 -pass pass:somepassword -out /backup/dir/archive.tgz.enc"

Die Ergebnisse sahen so aus:

Backup Teil 3: Überprüfung und Test von Duplizität, Duplikaten

Die Ausführungszeit betrug 10 Minuten und 30 Sekunden, da auf der Empfangsseite zwei Prozesse liefen – der Engpass ist wiederum ein Single-Threaded-Kompressor und ein geringer Verschlüsselungsaufwand.

UPD: Auf Wunsch von bliznezz füge ich Tests mit pigz hinzu. Wenn Sie nur den Kompressor verwenden, würde es 6:30 Minuten dauern, wenn Sie zusätzlich die Verschlüsselung hinzufügen, wären es etwa 7 Minuten. Der Rückgang im unteren Diagramm ist ein nicht geleerter Festplatten-Cache:

Backup Teil 3: Überprüfung und Test von Duplizität, Duplikaten

Doppeltests

Duplicity ist eine Python-Software zur Sicherung durch die Erstellung verschlüsselter Archive im TAR-Format.

Für inkrementelle Archive wird librsync verwendet, sodass Sie das in beschriebene Verhalten erwarten können vorheriger Beitrag in der Serie.

Backups können mit gnupg verschlüsselt und signiert werden, was wichtig ist, wenn unterschiedliche Anbieter zum Speichern von Backups verwendet werden (s3, backblaze, gdrive usw.).

Mal sehen, was die Ergebnisse sind:

Dies sind die Ergebnisse, die wir beim Betrieb ohne Verschlüsselung erhalten haben

Spoiler

Backup Teil 3: Überprüfung und Test von Duplizität, Duplikaten

Laufzeit jedes Testlaufs:

Starten Sie 1
Starten Sie 2
Starten Sie 3

16m33s
17m20s
16m30s

8m29s
9m3s
8m45s

5m21s
6m04s
5m53s

Und hier sind die Ergebnisse, wenn die Gnupg-Verschlüsselung mit einer Schlüsselgröße von 2048 Bit aktiviert ist:

Backup Teil 3: Überprüfung und Test von Duplizität, Duplikaten

Betriebszeit auf denselben Daten, mit Verschlüsselung:

Starten Sie 1
Starten Sie 2
Starten Sie 3

17m22s
17m32s
17m28s

8m52s
9m13s
9m3s

5m48s
5m40s
5m30s

Die Blockgröße wurde mit 512 Megabyte angegeben, was in den Grafiken deutlich sichtbar ist; Die Prozessorauslastung blieb tatsächlich bei 50 %, was bedeutet, dass das Programm nicht mehr als einen Prozessorkern beansprucht.

Auch das Funktionsprinzip des Programms ist recht deutlich zu erkennen: Sie nahmen ein Datenstück, komprimierten es und schickten es an einen Backup-Speicherserver, was recht langsam sein kann.
Ein weiteres Merkmal ist die vorhersehbare Laufzeit des Programms, die nur von der Größe der geänderten Daten abhängt.

Die Aktivierung der Verschlüsselung hat die Laufzeit des Programms nicht wesentlich erhöht, aber die Prozessorlast um etwa 10 % erhöht, was ein durchaus netter Bonus sein kann.

Leider war dieses Programm nicht in der Lage, die Situation mit der Verzeichnisumbenennung richtig zu erkennen, und die resultierende Repository-Größe entsprach der Größe der Änderungen (d. h. alle 18 GB), aber die Möglichkeit, einen nicht vertrauenswürdigen Server für die Sicherung zu verwenden, ist eindeutig deckt dieses Verhalten ab.

Doppeltests

Diese Software ist in C# geschrieben und läuft unter Verwendung einer Reihe von Bibliotheken von Mono. Es gibt sowohl eine GUI- als auch eine CLI-Version.

Die ungefähre Liste der Hauptfunktionen ähnelt Duplicity, einschließlich verschiedener Backup-Speicheranbieter. Im Gegensatz zu Duplicity sind die meisten Funktionen jedoch ohne Tools von Drittanbietern verfügbar. Ob dies ein Plus oder ein Minus ist, hängt vom konkreten Fall ab, aber für Anfänger ist es wahrscheinlich einfacher, eine Liste aller Funktionen auf einmal vor sich zu haben, als wie es ist, zusätzlich Pakete für Python installieren zu müssen der Fall mit Doppelzüngigkeit.

Eine weitere kleine Nuance: Das Programm schreibt aktiv eine lokale SQLite-Datenbank im Namen des Benutzers, der die Sicherung startet. Daher müssen Sie zusätzlich sicherstellen, dass die erforderliche Datenbank bei jedem Start des Prozesses über die CLI korrekt angegeben wird. Beim Arbeiten über GUI oder WEBGUI werden Details für den Benutzer verborgen.

Sehen wir uns an, welche Indikatoren diese Lösung liefern kann:

Wenn Sie die Verschlüsselung deaktivieren (und WEBGUI empfiehlt dies nicht), sind die Ergebnisse wie folgt:

Backup Teil 3: Überprüfung und Test von Duplizität, Duplikaten

Arbeitszeit:

Starten Sie 1
Starten Sie 2
Starten Sie 3

20m43s
20m13s
20m28s

5m21s
5m40s
5m35s

7m36s
7m54s
7m49s

Bei aktivierter Verschlüsselung mit aes sieht es so aus:

Backup Teil 3: Überprüfung und Test von Duplizität, Duplikaten

Arbeitszeit:

Starten Sie 1
Starten Sie 2
Starten Sie 3

29m9s
30m1s
29m54s

5m29s
6m2s
5m54s

8m44s
9m12s
9m1s

Und wenn Sie das externe Programm gnupg verwenden, kommen folgende Ergebnisse heraus:

Backup Teil 3: Überprüfung und Test von Duplizität, Duplikaten

Starten Sie 1
Starten Sie 2
Starten Sie 3

26m6s
26m35s
26m17s

5m20s
5m48s
5m40s

8m12s
8m42s
8m15s

Wie Sie sehen, kann das Programm in mehreren Threads arbeiten, aber das macht es nicht zu einer produktiveren Lösung, und wenn man die Verschlüsselungsarbeit vergleicht, startet es ein externes Programm
erwies sich als schneller als die Verwendung der Bibliothek aus dem Mono-Set. Dies kann daran liegen, dass das externe Programm optimierter ist.

Eine weitere schöne Sache war die Tatsache, dass die Größe des Repositorys genau so viel einnimmt wie die tatsächlich geänderten Daten, d. h. duplicati hat eine Verzeichnisumbenennung erkannt und diese Situation korrekt behandelt. Dies kann man sehen, wenn man den zweiten Test durchführt.

Insgesamt ziemlich positive Eindrücke vom Programm, einschließlich der relativen Freundlichkeit gegenüber Neulingen.

Ergebnisse

Beide Kandidaten arbeiteten eher langsam, aber im Allgemeinen gibt es im Vergleich zu normalem Teer Fortschritte, zumindest bei Duplicati. Auch der Preis eines solchen Fortschritts ist klar – eine spürbare Belastung
Prozessor. Im Allgemeinen gibt es keine besonderen Abweichungen bei der Vorhersage der Ergebnisse.

Befund

Wenn Sie sich nicht beeilen müssen und auch über einen Ersatzprozessor verfügen, ist jede der in Betracht gezogenen Lösungen ausreichend. Auf jeden Fall wurde eine Menge Arbeit geleistet, die nicht durch das Schreiben von Wrapper-Skripten auf tar wiederholt werden sollte . Das Vorhandensein einer Verschlüsselung ist eine sehr notwendige Eigenschaft, wenn der Server zum Speichern von Sicherungskopien nicht vollständig vertrauenswürdig ist.

Im Vergleich zu lösungsbasierten rsync - Die Leistung kann um ein Vielfaches schlechter sein, obwohl tar in seiner reinen Form 20–30 % schneller als rsync arbeitete.
Es gibt Einsparungen bei der Größe des Repositorys, allerdings nur mit Duplicati.

Ankündigung

Backup, Teil 1: Warum Backup benötigt wird, ein Überblick über Methoden und Technologien
Backup Teil 2: Überprüfen und Testen von Rsync-basierten Backup-Tools
Backup Teil 3: Überprüfen und Testen von Duplicity, Duplicati, Déjà Dup
Backup Teil 4: Überprüfen und Testen von zbackup, restic, borgbackup
Backup Teil 5: Testen von Bacula- und Veeam-Backups für Linux
Backup Teil 6: Vergleich von Backup-Tools
Backup Teil 7: Schlussfolgerungen

Geschrieben von: Pavel Demkovich

Source: habr.com

Kommentar hinzufügen