Backup Μέρος 4: Zbackup, restic, borgbackup έλεγχος και δοκιμή

Backup Μέρος 4: Zbackup, restic, borgbackup έλεγχος και δοκιμή

Αυτό το άρθρο θα εξετάσει το λογισμικό δημιουργίας αντιγράφων ασφαλείας που, σπάζοντας τη ροή δεδομένων σε ξεχωριστά στοιχεία (κομμάτια), σχηματίζει ένα αποθετήριο.

Τα στοιχεία του χώρου αποθήκευσης μπορούν να συμπιεστούν και να κρυπτογραφηθούν περαιτέρω, και το πιο σημαντικό - κατά τη διάρκεια επαναλαμβανόμενων διεργασιών δημιουργίας αντιγράφων ασφαλείας - να επαναχρησιμοποιηθούν.

Ένα αντίγραφο ασφαλείας σε ένα τέτοιο αποθετήριο είναι μια ονομασμένη αλυσίδα στοιχείων που συνδέονται μεταξύ τους, για παράδειγμα, με βάση διάφορες συναρτήσεις κατακερματισμού.

Υπάρχουν αρκετές παρόμοιες λύσεις, θα εστιάσω σε 3: zbackup, borgbackup και restic.

Αναμενόμενα αποτελέσματα

Εφόσον όλοι οι αιτούντες απαιτούν τη δημιουργία ενός αποθετηρίου με τον ένα ή τον άλλο τρόπο, ένας από τους πιο σημαντικούς παράγοντες θα είναι η εκτίμηση του μεγέθους του αποθετηρίου. Στην ιδανική περίπτωση, το μέγεθός του δεν πρέπει να υπερβαίνει τα 13 GB σύμφωνα με την αποδεκτή μεθοδολογία ή ακόμη λιγότερο - υπόκειται σε καλή βελτιστοποίηση.

Είναι επίσης πολύ επιθυμητό να μπορείτε να δημιουργήσετε αντίγραφα αντιγράφων ασφαλείας των αρχείων απευθείας, χωρίς τη χρήση αρχείων αρχειοθέτησης όπως το tar, καθώς και να εργαστείτε με ssh/sftp χωρίς πρόσθετα εργαλεία όπως το rsync και το sshfs.

Συμπεριφορά κατά τη δημιουργία αντιγράφων ασφαλείας:

  1. Το μέγεθος του αποθετηρίου θα είναι ίσο με το μέγεθος των αλλαγών ή λιγότερο.
  2. Αναμένεται μεγάλος φόρτος CPU κατά τη χρήση συμπίεσης και/ή κρυπτογράφησης και είναι πιθανό να υπάρχει πολύ υψηλό φόρτο δικτύου και δίσκου εάν η διαδικασία αρχειοθέτησης ή/και κρυπτογράφησης εκτελείται σε διακομιστή αποθήκευσης αντιγράφων ασφαλείας.
  3. Εάν το αποθετήριο είναι κατεστραμμένο, είναι πιθανό ένα καθυστερημένο σφάλμα τόσο κατά τη δημιουργία νέων αντιγράφων ασφαλείας όσο και κατά την προσπάθεια επαναφοράς. Είναι απαραίτητο να προγραμματιστούν πρόσθετα μέτρα για τη διασφάλιση της ακεραιότητας του αποθετηρίου ή να χρησιμοποιηθούν ενσωματωμένα εργαλεία για τον έλεγχο της ακεραιότητάς του.

Η εργασία με πίσσα λαμβάνεται ως τιμή αναφοράς, όπως φάνηκε σε ένα από τα προηγούμενα άρθρα.

Δοκιμή zbackup

Ο γενικός μηχανισμός του zbackup είναι ότι το πρόγραμμα βρίσκει στη ροή δεδομένων εισόδου περιοχές που περιέχουν τα ίδια δεδομένα, στη συνέχεια τις συμπιέζει και τις κρυπτογραφεί προαιρετικά, αποθηκεύοντας κάθε περιοχή μόνο μία φορά.

Το Deduplication χρησιμοποιεί μια συνάρτηση κατακερματισμού δακτυλίου 64-bit με ένα συρόμενο παράθυρο για να ελέγξει για αντιστοιχίσεις byte προς byte με υπάρχοντα μπλοκ δεδομένων (παρόμοιο με τον τρόπο με τον οποίο το εφαρμόζει το rsync).

Τα lzma και lzo πολλαπλών νημάτων χρησιμοποιούνται για συμπίεση και aes για κρυπτογράφηση. Οι πιο πρόσφατες εκδόσεις έχουν τη δυνατότητα να διαγράψουν παλιά δεδομένα από το αποθετήριο στο μέλλον.
Το πρόγραμμα είναι γραμμένο σε C++ με ελάχιστες εξαρτήσεις. Ο συγγραφέας προφανώς εμπνεύστηκε από το unix-way, επομένως το πρόγραμμα δέχεται δεδομένα στο stdin κατά τη δημιουργία αντιγράφων ασφαλείας, παράγοντας παρόμοια ροή δεδομένων στο stdout κατά την επαναφορά. Έτσι, το zbackup μπορεί να χρησιμοποιηθεί ως ένα πολύ καλό «δομικό στοιχείο» όταν γράφετε τις δικές σας λύσεις δημιουργίας αντιγράφων ασφαλείας. Για παράδειγμα, ο συγγραφέας του άρθρου έχει χρησιμοποιήσει αυτό το πρόγραμμα ως το κύριο εργαλείο δημιουργίας αντιγράφων ασφαλείας για οικιακές μηχανές από το 2014 περίπου.

Η ροή δεδομένων θα είναι κανονική πίσσα εκτός εάν αναφέρεται διαφορετικά.

Ας δούμε ποια είναι τα αποτελέσματα:

Η εργασία ελέγχθηκε σε 2 επιλογές:

  1. δημιουργείται ένα αποθετήριο και εκκινείται το zbackup στον διακομιστή με τα δεδομένα προέλευσης και, στη συνέχεια, τα περιεχόμενα του αποθετηρίου μεταφέρονται στον διακομιστή αποθήκευσης αντιγράφων ασφαλείας.
  2. δημιουργείται ένα αποθετήριο στον διακομιστή αποθήκευσης αντιγράφων ασφαλείας, το zbackup εκκινείται μέσω ssh στον διακομιστή αποθήκευσης αντιγράφων ασφαλείας και τα δεδομένα αποστέλλονται σε αυτόν μέσω σωλήνα.

Τα αποτελέσματα της πρώτης επιλογής ήταν τα εξής: 43m11s - κατά τη χρήση μη κρυπτογραφημένου αποθετηρίου και του συμπιεστή lzma, 19m13s - κατά την αντικατάσταση του συμπιεστή με lzo.

Η φόρτωση στον διακομιστή με τα αρχικά δεδομένα ήταν ως εξής (εμφανίζεται ένα παράδειγμα με το lzma· με το lzo υπήρχε περίπου η ίδια εικόνα, αλλά το μερίδιο του rsync ήταν περίπου το ένα τέταρτο του χρόνου):

Backup Μέρος 4: Zbackup, restic, borgbackup έλεγχος και δοκιμή

Είναι σαφές ότι μια τέτοια διαδικασία δημιουργίας αντιγράφων ασφαλείας είναι κατάλληλη μόνο για σχετικά σπάνιες και μικρές αλλαγές. Συνιστάται επίσης να περιορίσετε το zbackup σε 1 νήμα, διαφορετικά θα υπάρχει πολύ υψηλό φορτίο CPU, επειδή Το πρόγραμμα είναι πολύ καλό στο να δουλεύει σε πολλά νήματα. Το φορτίο στο δίσκο ήταν μικρό, το οποίο γενικά δεν θα ήταν αντιληπτό με ένα σύγχρονο υποσύστημα δίσκου βασισμένο σε ssd. Μπορείτε επίσης να δείτε ξεκάθαρα την έναρξη της διαδικασίας συγχρονισμού των δεδομένων αποθήκης σε έναν απομακρυσμένο διακομιστή· η ταχύτητα λειτουργίας είναι συγκρίσιμη με το κανονικό rsync και εξαρτάται από την απόδοση του υποσυστήματος δίσκου του διακομιστή αποθήκευσης αντιγράφων ασφαλείας. Το μειονέκτημα αυτής της προσέγγισης είναι η αποθήκευση ενός τοπικού αποθηκευτικού χώρου και, ως αποτέλεσμα, η αντιγραφή δεδομένων.

Πιο ενδιαφέρουσα και εφαρμόσιμη στην πράξη είναι η δεύτερη επιλογή, η εκτέλεση του zbackup απευθείας στον διακομιστή αποθήκευσης αντιγράφων ασφαλείας.

Αρχικά, θα δοκιμάσουμε τη λειτουργία χωρίς να χρησιμοποιήσουμε κρυπτογράφηση με τον συμπιεστή lzma:

Backup Μέρος 4: Zbackup, restic, borgbackup έλεγχος και δοκιμή

Χρόνος εκτέλεσης κάθε δοκιμαστικής λειτουργίας:

Εκκίνηση 1
Εκκίνηση 2
Εκκίνηση 3

39m45s
40m20s
40m3s

7m36s
8m3s
7m48s

15m35s
15m48s
15m38s

Εάν ενεργοποιήσετε την κρυπτογράφηση χρησιμοποιώντας aes, τα αποτελέσματα είναι πολύ κοντά:

Backup Μέρος 4: Zbackup, restic, borgbackup έλεγχος και δοκιμή

Χρόνος λειτουργίας στα ίδια δεδομένα, με κρυπτογράφηση:

Εκκίνηση 1
Εκκίνηση 2
Εκκίνηση 3

43m40s
44m12s
44m3s

8m3s
8m15s
8m12s

15m0s
15m40s
15m25s

Εάν η κρυπτογράφηση συνδυάζεται με συμπίεση χρησιμοποιώντας lzo, φαίνεται ως εξής:

Backup Μέρος 4: Zbackup, restic, borgbackup έλεγχος και δοκιμή

Ώρες:

Εκκίνηση 1
Εκκίνηση 2
Εκκίνηση 3

18m2s
18m15s
18m12s

5m13s
5m24s
5m20s

8m48s
9m3s
8m51s

Το μέγεθος του αποθετηρίου που προέκυψε ήταν σχετικά το ίδιο στα 13 GB. Αυτό σημαίνει ότι η αφαίρεση διπλότυπων λειτουργεί σωστά. Επίσης, σε ήδη συμπιεσμένα δεδομένα, η χρήση του lzo δίνει ένα αξιοσημείωτο αποτέλεσμα· όσον αφορά τον συνολικό χρόνο λειτουργίας, το zbackup πλησιάζει το duplicity/duplicati, αλλά υστερεί σε σχέση με αυτά που βασίζονται στο librsync κατά 2-5 φορές.

Τα πλεονεκτήματα είναι προφανή - εξοικονόμηση χώρου στο δίσκο στον διακομιστή αποθήκευσης αντιγράφων ασφαλείας. Όσον αφορά τα εργαλεία ελέγχου αποθετηρίου, ο συγγραφέας του zbackup δεν τα παρέχει· συνιστάται η χρήση συστοιχίας δίσκων με ανοχή σφαλμάτων ή πάροχος cloud.

Συνολικά, μια πολύ καλή εντύπωση, παρά το γεγονός ότι το έργο έχει παραμείνει ακίνητο για περίπου 3 χρόνια (το τελευταίο αίτημα χαρακτηριστικών ήταν πριν από περίπου ένα χρόνο, αλλά χωρίς απάντηση).

Δοκιμή borgbackup

Το Borgbackup είναι μια διχάλα σοφίτας, ένα άλλο σύστημα παρόμοιο με το zbackup. Γραπτό σε python, έχει μια λίστα δυνατοτήτων παρόμοιες με το zbackup, αλλά επιπλέον μπορεί:

  • Τοποθετήστε αντίγραφα ασφαλείας μέσω ασφάλειας
  • Ελέγξτε τα περιεχόμενα του αποθετηρίου
  • Εργασία σε λειτουργία πελάτη-διακομιστή
  • Χρησιμοποιήστε διάφορους συμπιεστές για δεδομένα, καθώς και ευρετικό προσδιορισμό του τύπου αρχείου κατά τη συμπίεσή του.
  • 2 επιλογές κρυπτογράφησης, aes και blake
  • Ενσωματωμένο εργαλείο για

ελέγχους απόδοσης

borgbackup σημείο αναφοράς crud ssh://backup_server/repo/path local_dir

Τα αποτελέσματα ήταν τα εξής:

CZ-BIG 96.51 MB/s (10 100.00 MB αρχεία all-zero: 10.36s)
RZ-BIG 57.22 MB/s (10
100.00 MB αρχεία all-zero: 17.48s)
UZ-BIG 253.63 MB/s (10 100.00 MB αρχεία all-zero: 3.94s)
DZ-BIG 351.06 MB/s (10
100.00 MB αρχεία all-zero: 2.85s)
CR-BIG 34.30 MB/s (10 100.00 MB τυχαία αρχεία: 29.15 δευτ.)
RR-BIG 60.69 MB/s (10
100.00 MB τυχαία αρχεία: 16.48 δευτ.)
UR-BIG 311.06 MB/s (10 100.00 MB τυχαία αρχεία: 3.21 δευτ.)
DR-BIG 72.63 MB/s (10
100.00 MB τυχαία αρχεία: 13.77 δευτ.)
CZ-MEDIUM 108.59 MB/s (1000 1.00 MB αρχεία all-zero: 9.21s)
RZ-MEDIUM 76.16 MB/s (1000
1.00 MB αρχεία all-zero: 13.13s)
UZ-MEDIUM 331.27 MB/s (1000 1.00 MB αρχεία all-zero: 3.02s)
DZ-MEDIUM 387.36 MB/s (1000
1.00 MB αρχεία all-zero: 2.58s)
CR-MEDIUM 37.80 MB/s (1000 1.00 MB τυχαία αρχεία: 26.45 δευτ.)
RR-MEDIUM 68.90 MB/s (1000
1.00 MB τυχαία αρχεία: 14.51 δευτ.)
UR-MEDIUM 347.24 MB/s (1000 1.00 MB τυχαία αρχεία: 2.88 δευτ.)
DR-MEDIUM 48.80 MB/s (1000
1.00 MB τυχαία αρχεία: 20.49 δευτ.)
CZ-SMALL 11.72 MB/s (10000 Αρχεία 10.00 kB all-zero: 8.53s)
RZ-SMALL 32.57 MB/s (10000
Αρχεία 10.00 kB all-zero: 3.07s)
UZ-SMALL 19.37 MB/s (10000 Αρχεία 10.00 kB all-zero: 5.16s)
DZ-SMALL 33.71 MB/s (10000
Αρχεία 10.00 kB all-zero: 2.97s)
CR-SMALL 6.85 MB/s (10000 Τυχαία αρχεία 10.00 kB: 14.60 δευτ.)
RR-SMALL 31.27 MB/s (10000
Τυχαία αρχεία 10.00 kB: 3.20 δευτ.)
UR-SMALL 12.28 MB/s (10000 Τυχαία αρχεία 10.00 kB: 8.14 δευτ.)
DR-SMALL 18.78 MB/s (10000
Τυχαία αρχεία 10.00 kB: 5.32 δευτ.)

Κατά τη δοκιμή, τα ευρετικά συμπίεσης θα χρησιμοποιηθούν για τον προσδιορισμό του τύπου αρχείου (αυτόματη συμπίεση) και τα αποτελέσματα θα είναι τα εξής:

Αρχικά, ας ελέγξουμε πώς λειτουργεί χωρίς κρυπτογράφηση:

Backup Μέρος 4: Zbackup, restic, borgbackup έλεγχος και δοκιμή

Ώρες:

Εκκίνηση 1
Εκκίνηση 2
Εκκίνηση 3

4m6s
4m10s
4m5s

56s
58s
54s

1m26s
1m34s
1m30s

Εάν ενεργοποιήσετε την εξουσιοδότηση χώρου αποθήκευσης (λειτουργία ελέγχου ταυτότητας), τα αποτελέσματα θα είναι κοντά:

Backup Μέρος 4: Zbackup, restic, borgbackup έλεγχος και δοκιμή

Ώρες:

Εκκίνηση 1
Εκκίνηση 2
Εκκίνηση 3

4m11s
4m20s
4m12s

1m0s
1m3s
1m2s

1m30s
1m34s
1m31s

Όταν ενεργοποιήθηκε η κρυπτογράφηση aes, τα αποτελέσματα δεν επιδεινώθηκαν πολύ:

Backup Μέρος 4: Zbackup, restic, borgbackup έλεγχος και δοκιμή

Εκκίνηση 1
Εκκίνηση 2
Εκκίνηση 3

4m55s
5m2s
4m58s

1m0s
1m2s
1m0s

1m49s
1m50s
1m50s

Και αν αλλάξετε το aes σε blake, η κατάσταση θα βελτιωθεί εντελώς:

Backup Μέρος 4: Zbackup, restic, borgbackup έλεγχος και δοκιμή

Ώρες:

Εκκίνηση 1
Εκκίνηση 2
Εκκίνηση 3

4m33s
4m43s
4m40s

59s
1m0s
1m0s

1m38s
1m43s
1m40s

Όπως και στην περίπτωση του zbackup, το μέγεθος του αποθετηρίου ήταν 13 GB και ακόμη λίγο λιγότερο, κάτι που είναι γενικά αναμενόμενο. Έμεινα πολύ ευχαριστημένος με τον χρόνο εκτέλεσης· είναι συγκρίσιμος με λύσεις που βασίζονται στο librsync, παρέχοντας πολύ ευρύτερες δυνατότητες. Ήμουν επίσης ευχαριστημένος με τη δυνατότητα ορισμού διαφόρων παραμέτρων μέσω μεταβλητών περιβάλλοντος, γεγονός που δίνει ένα πολύ σοβαρό πλεονέκτημα όταν χρησιμοποιείτε το borgbackup σε αυτόματη λειτουργία. Ήμουν επίσης ευχαριστημένος με το φορτίο κατά τη δημιουργία αντιγράφων ασφαλείας: κρίνοντας από το φορτίο του επεξεργαστή, το borgbackup λειτουργεί σε 1 νήμα.

Δεν υπήρχαν ιδιαίτερα μειονεκτήματα κατά τη χρήση του.

επαναστατική δοκιμή

Παρά το γεγονός ότι το Restic είναι μια αρκετά νέα λύση (οι 2 πρώτοι υποψήφιοι ήταν γνωστοί από το 2013 και παλιότερα), έχει αρκετά καλά χαρακτηριστικά. Γράφτηκε στο Go.

Σε σύγκριση με το zbackup, δίνει επιπλέον:

  • Έλεγχος της ακεραιότητας του αποθετηρίου (συμπεριλαμβανομένου του ελέγχου σε μέρη).
  • Μια τεράστια λίστα με υποστηριζόμενα πρωτόκολλα και παρόχους για αποθήκευση αντιγράφων ασφαλείας, καθώς και υποστήριξη για λύσεις rclone - rsync για cloud.
  • Συγκρίνοντας 2 αντίγραφα ασφαλείας μεταξύ τους.
  • Τοποθέτηση του αποθετηρίου μέσω ασφάλειας.

Σε γενικές γραμμές, η λίστα με τα χαρακτηριστικά είναι αρκετά κοντά στο borgbackup, σε άλλα μέρη περισσότερο, σε άλλα λιγότερο. Ένα από τα χαρακτηριστικά είναι ότι δεν υπάρχει τρόπος να απενεργοποιήσετε την κρυπτογράφηση, και επομένως τα αντίγραφα ασφαλείας θα είναι πάντα κρυπτογραφημένα. Ας δούμε στην πράξη τι μπορεί να αποσπαστεί από αυτό το λογισμικό:

Τα αποτελέσματα ήταν τα εξής:

Backup Μέρος 4: Zbackup, restic, borgbackup έλεγχος και δοκιμή

Ώρες:

Εκκίνηση 1
Εκκίνηση 2
Εκκίνηση 3

5m25s
5m50s
5m38s

35s
38s
36s

1m54s
2m2s
1m58s

Τα αποτελέσματα απόδοσης είναι επίσης συγκρίσιμα με λύσεις που βασίζονται σε rsync και, γενικά, πολύ κοντά στο borgbackup, αλλά το φορτίο της CPU είναι υψηλότερο (τρέχουν πολλά νήματα) και το πριονωτό δόντι.

Πιθανότατα, το πρόγραμμα περιορίζεται από την απόδοση του υποσυστήματος του δίσκου στον διακομιστή αποθήκευσης δεδομένων, όπως συνέβαινε ήδη με το rsync. Το μέγεθος του αποθετηρίου ήταν 13 GB, ακριβώς όπως το zbackup ή το borgbackup, δεν υπήρχαν εμφανή μειονεκτήματα κατά τη χρήση αυτής της λύσης.

Ευρήματα

Στην πραγματικότητα, όλοι οι υποψήφιοι πέτυχαν παρόμοια αποτελέσματα, αλλά σε διαφορετικές τιμές. Το Borgbackup απέδωσε καλύτερα από όλα, το restic ήταν λίγο πιο αργό, το zbackup μάλλον δεν αξίζει να αρχίσετε να χρησιμοποιείτε,
και αν είναι ήδη σε χρήση, δοκιμάστε να το αλλάξετε σε borgbackup ή restic.

Ευρήματα

Η πιο πολλά υποσχόμενη λύση φαίνεται να είναι η ρετσινιά, γιατί... είναι αυτός που έχει την καλύτερη αναλογία δυνατοτήτων προς την ταχύτητα λειτουργίας, αλλά ας μην βιαζόμαστε προς το παρόν σε γενικά συμπεράσματα.

Το Borgbackup βασικά δεν είναι χειρότερο, αλλά το zbackup μάλλον αντικαθίσταται καλύτερα. Είναι αλήθεια ότι το zbackup μπορεί ακόμα να χρησιμοποιηθεί για να διασφαλιστεί ότι ο κανόνας 3-2-1 λειτουργεί. Για παράδειγμα, εκτός από τις εγκαταστάσεις δημιουργίας αντιγράφων ασφαλείας που βασίζονται σε (lib)rsync.

ανακοίνωση

Backup, μέρος 1: Γιατί χρειάζεται backup, ανασκόπηση μεθόδων, τεχνολογιών
Δημιουργία αντιγράφων ασφαλείας Μέρος 2: Έλεγχος και δοκιμή εργαλείων δημιουργίας αντιγράφων ασφαλείας που βασίζονται σε rsync
Αντίγραφο ασφαλείας Μέρος 3: Ανασκόπηση και δοκιμή διπλοτυπίας, duplicati
Backup Μέρος 4: Zbackup, restic, borgbackup έλεγχος και δοκιμή
Αντίγραφο ασφαλείας, μέρος 5: Δοκιμή αντιγράφων ασφαλείας bacula και veeam για linux
Δημιουργία αντιγράφων ασφαλείας Μέρος 6: Σύγκριση εργαλείων δημιουργίας αντιγράφων ασφαλείας
Αντίγραφο ασφαλείας Μέρος 7: Συμπεράσματα

Αναρτήθηκε από: Πάβελ Ντέμκοβιτς

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο