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:
- 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).
- Die Repository-Größe umfasst nur Änderungen – es werden keine Duplikate gespeichert, sodass die Repository-Größe kleiner ist als bei rsync-basierter Software.
- 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:
Ausführungszeit 3:12 Sekunden. Es ist ersichtlich, dass die Geschwindigkeit durch das Festplattensubsystem des Backup-Speicherservers begrenzt wird, wie im Beispiel mit
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:
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:
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:
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:
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
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
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:
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:
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:
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:
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
Es gibt Einsparungen bei der Größe des Repositorys, allerdings nur mit Duplicati.
Ankündigung
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