Sauvegarde, partie 4 : Aperçu et test de zbackup, restic, borgbackup

Sauvegarde, partie 4 : Aperçu et test de zbackup, restic, borgbackup

Cet article examinera les outils logiciels de sauvegarde qui, en fragmentant le flux de données en composants distincts (chunks), forment un référentiel.

Les composants du rĂ©fĂ©rentiel peuvent Ă©galement ĂȘtre compressĂ©s et chiffrĂ©s, et surtout, lors des processus de sauvegarde rĂ©pĂ©tĂ©s, ĂȘtre rĂ©utilisĂ©s.

Une sauvegarde dans un tel référentiel est une chaßne nommée de composants liés entre eux, par exemple, sur la base de différentes fonctions de hachage.

Il existe plusieurs solutions similaires, je vais m'arrĂȘter sur 3 : zbackup, borgbackup et restic.

Résultats attendus

Étant donnĂ© que tous les candidats nĂ©cessitent d'une maniĂšre ou d'une autre la crĂ©ation d'un rĂ©fĂ©rentiel, l'un des facteurs les plus importants sera l'Ă©valuation de la taille du rĂ©fĂ©rentiel. Dans l'idĂ©al, sa taille ne devrait pas dĂ©passer 13 Go selon la mĂ©thode adoptĂ©e, voire moins, Ă  condition d'une bonne optimisation.

Il est également fortement souhaitable de pouvoir créer des sauvegardes de fichiers directement, sans utiliser d'archiveurs comme tar, ainsi que de travailler avec ssh/sftp sans outils supplémentaires comme rsync et sshfs.

Comportement lors de la création de sauvegardes :

  1. La taille du référentiel sera égale à la taille des modifications, ou inférieure.
  2. On s'attend à une grande charge sur le processeur lors de l'utilisation de la compression et/ou du chiffrement, ainsi qu'à une charge assez importante sur le réseau et le sous-systÚme de stockage, si le processus d'archivage et/ou de chiffrement fonctionne sur le serveur de stockage des sauvegardes.
  3. Si le référentiel est endommagé, il peut y avoir une erreur différée tant lors de la création de nouvelles sauvegardes que lors de la tentative de restauration. Il est nécessaire de planifier des mesures supplémentaires pour garantir l'intégrité du référentiel ou d'utiliser des outils intégrés pour vérifier son intégrité.

La référence est le travail avec tar, comme cela a été montré dans l'un des précédents articles.

Test du zbackup

Le mécanisme général de fonctionnement de zbackup est que le programme trouve dans le flux de données fourni en entrée des zones contenant des données identiques, puis les compresse, les chiffre éventuellement, en conservant chaque zone uniquement une fois.

Pour la dĂ©duplication, une fonction de hachage circulaire 64 bits avec une fenĂȘtre glissante est utilisĂ©e pour la vĂ©rification byte Ă  byte en correspondance avec des blocs de donnĂ©es dĂ©jĂ  existants (similaire Ă  ce qui est rĂ©alisĂ© dans rsync).

Pour la compression, llzma et lzo sont utilisés en mode multithread, et pour le chiffrement, l'aes. Dans les derniÚres versions, il est possible de supprimer à l'avenir les anciennes données du dépÎt.
Le programme est Ă©crit en C++ avec des dĂ©pendances minimales. L'auteur semble s'ĂȘtre inspirĂ© de l'unix-way, car le programme prend des donnĂ©es depuis stdin lors de la crĂ©ation de sauvegardes et fournit un flux de donnĂ©es similaire dans stdout lors de la restauration. Ainsi, zbackup peut ĂȘtre utilisĂ© comme un excellent « bloc » pour Ă©crire ses propres solutions de sauvegarde. Par exemple, pour l'auteur de cet article, ce programme est le principal outil de sauvegarde pour les machines domestiques depuis environ 2014.

Un tar standard sera utilisé comme flux de données, sauf indication contraire.

Voyons quels seront les résultats :

Le test a été effectué dans 2 variantes :

  1. un dépÎt est créé et zbackup est lancé sur le serveur avec les données d'origine, puis le contenu du dépÎt est transféré sur le serveur de stockage des sauvegardes.
  2. un dépÎt est créé sur le serveur de stockage des sauvegardes, zbackup est lancé via ssh sur le serveur de stockage des sauvegardes, et les données lui sont transmises via un pipe.

Les rĂ©sultats de la premiĂšre variante Ă©taient les suivants : 43m11s — avec un dĂ©pĂŽt non chiffrĂ© et le compresseur lzma, 19m13s — en remplaçant le compresseur par lzo.

La charge sur le serveur avec les donnĂ©es d'origine Ă©tait la suivante (exemple avec lzma, avec lzo c'Ă©tait Ă  peu prĂšs la mĂȘme image, mais la part de rsync Ă©tait d'environ le quart du temps) :

Sauvegarde, partie 4 : Aperçu et test de zbackup, restic, borgbackup

Il est clair qu'un tel processus de sauvegarde n'est approprié que pour des changements relativement rares et petits. Il est également fortement recommandé de limiter le travail de zbackup à 1 thread, sinon la charge processeur sera trÚs élevée, car le programme peut efficacement fonctionner en plusieurs threads. La charge sur le disque était faible, ce qui, dans l'ensemble, sera imperceptible avec un systÚme de disque moderne basé sur ssd. Il est également clair que le processus de synchronisation des données du dépÎt sur un serveur distant est comparable en vitesse à un rsync normal et est limité par les performances du systÚme de disque du serveur de stockage des sauvegardes. Un inconvénient de cette approche est le stockage d'un dépÎt local et, par conséquent, la duplication des données.

Le deuxiÚme scénario, qui consiste à lancer zbackup directement sur le serveur de stockage des sauvegardes, est plus intéressant et applicable en pratique.

Pour commencer, nous allons tester le fonctionnement sans utiliser le chiffrement avec le compresseur lzma :

Sauvegarde, partie 4 : Aperçu et test de zbackup, restic, borgbackup

Temps d'exécution de chaque lancement de test :

Lancement 1
Lancement 2
Lancement 3

39m45s
40m20s
40m3s

7m36s
8m3s
7m48s

15m35s
15m48s
15m38s

Lorsque l'on active le chiffrement avec aes, les résultats sont assez similaires :

Sauvegarde, partie 4 : Aperçu et test de zbackup, restic, borgbackup

Temps d'exĂ©cution sur les mĂȘmes donnĂ©es, avec chiffrement :

Lancement 1
Lancement 2
Lancement 3

43m40s
44m12s
44m3s

8m3s
8m15s
8m12s

15m0s
15m40s
15m25s

Si le chiffrement est combiné avec la compression lzo, les résultats sont les suivants :

Sauvegarde, partie 4 : Aperçu et test de zbackup, restic, borgbackup

Temps d'exécution :

Lancement 1
Lancement 2
Lancement 3

18m2s
18m15s
18m12s

5m13s
5m24s
5m20s

8m48s
9m3s
8m51s

La taille du dépÎt résultant était relativement constante et s'élevait à 13 Go. Cela signifie que la déduplication fonctionne correctement. De plus, l'application de lzma sur des données déjà compressées a un effet significatif, et le temps de traitement total de zbackup se rapproche fortement de duplicity/duplicati, bien qu'il soit encore à la traßne par rapport à ceux basés sur librsync de 2 à 5 fois.

Les avantages sont Ă©vidents — Ă©conomies d'espace disque sur le serveur de stockage des sauvegardes. En ce qui concerne les outils de vĂ©rification du dĂ©pĂŽt, ils ne sont pas prĂ©vus par l'auteur de zbackup, il est recommandĂ© d'utiliser un ensemble de disques tolĂ©rant aux pannes ou un fournisseur de services cloud.

Dans l'ensemble, une impression plutÎt bonne, malgré le fait que le projet est stagnant depuis environ 3 ans (la derniÚre demande de fonctionnalité date d'une année, mais sans réponse).

Test de borgbackup

Borgbackup est un fork de attic, un autre systĂšme similaire Ă  zbackup. Écrit en python, il a une liste de fonctionnalitĂ©s similaire Ă  zbackup, mais est capable de :

  • Monter des sauvegardes via fuse
  • VĂ©rifier le contenu du dĂ©pĂŽt
  • Fonctionner en mode client-serveur
  • Utiliser diffĂ©rents compresseurs pour les donnĂ©es, ainsi qu'une dĂ©tection heuristique du type de fichier lors de sa compression.
  • 2 options de chiffrement : aes et blake
  • Outil intĂ©grĂ© pour

tester la performance

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

Les résultats sont les suivants :

C-Z-BIG 96.51 MB/s (10 100.00 MB fichiers tous nuls : 10.36s)
R-Z-BIG 57.22 MB/s (10
100.00 MB fichiers tous nuls : 17.48s)
U-Z-BIG 253.63 MB/s (10 100.00 MB fichiers tous nuls : 3.94s)
D-Z-BIG 351.06 MB/s (10
100.00 MB fichiers tous nuls : 2.85s)
C-R-BIG 34.30 MB/s (10 100.00 MB fichiers aléatoires : 29.15s)
R-R-BIG 60.69 MB/s (10
100.00 MB fichiers aléatoires : 16.48s)
U-R-BIG 311.06 MB/s (10 100.00 MB fichiers aléatoires : 3.21s)
D-R-BIG 72.63 MB/s (10
100.00 MB fichiers aléatoires : 13.77s)
C-Z-MEDIUM 108.59 MB/s (1000 1.00 MB fichiers tous nuls : 9.21s)
R-Z-MEDIUM 76.16 MB/s (1000
1.00 MB fichiers tous nuls : 13.13s)
U-Z-MEDIUM 331.27 MB/s (1000 1.00 MB fichiers tous nuls : 3.02s)
D-Z-MEDIUM 387.36 MB/s (1000
1.00 MB fichiers tous nuls : 2.58s)
C-R-MEDIUM 37.80 MB/s (1000 1.00 MB fichiers aléatoires : 26.45s)
R-R-MEDIUM 68.90 MB/s (1000
1.00 MB fichiers aléatoires : 14.51s)
U-R-MEDIUM 347.24 MB/s (1000 1.00 MB fichiers aléatoires : 2.88s)
D-R-MEDIUM 48.80 MB/s (1000
1,00 Mo fichiers aléatoires : 20,49 s)
C-Z-PETIT 11,72 Mo/s (10000 10,00 Ko fichiers tous-zéros : 8,53 s)
R-Z-PETIT 32,57 Mo/s (10000
10,00 Ko fichiers tous-zéros : 3,07 s)
U-Z-PETIT 19,37 Mo/s (10000 10,00 Ko fichiers tous-zéros : 5,16 s)
D-Z-PETIT 33,71 Mo/s (10000
10,00 Ko fichiers tous-zéros : 2,97 s)
C-R-PETIT 6,85 Mo/s (10000 10,00 Ko fichiers aléatoires : 14,60 s)
R-R-PETIT 31,27 Mo/s (10000
10,00 Ko fichiers aléatoires : 3,20 s)
U-R-PETIT 12,28 Mo/s (10000 10,00 Ko fichiers aléatoires : 8,14 s)
D-R-PETIT 18,78 Mo/s (10000
10,00 Ko fichiers aléatoires : 5,32 s)

L'heuristique sera utilisée pour la compression en fonction du type de fichier (compression auto), et les résultats seront les suivants :

Commençons par vérifier le fonctionnement sans chiffrement :

Sauvegarde, partie 4 : Aperçu et test de zbackup, restic, borgbackup

Temps d'exécution :

Lancement 1
Lancement 2
Lancement 3

4m6s
4m10s
4m5s

56s
58s
54s

1m26s
1m34s
1m30s

Si l'authentification du dépÎt est activée (mode authentifié), les résultats seront similaires :

Sauvegarde, partie 4 : Aperçu et test de zbackup, restic, borgbackup

Temps d'exécution :

Lancement 1
Lancement 2
Lancement 3

4m11s
4m20s
4m12s

1m0s
1m3s
1m2s

1m30s
1m34s
1m31s

Avec l'activation du chiffrement aes, les résultats ne se sont pas beaucoup détériorés :

Sauvegarde, partie 4 : Aperçu et test de zbackup, restic, borgbackup

Lancement 1
Lancement 2
Lancement 3

4m55s
5m2s
4m58s

1m0s
1m2s
1m0s

1m49s
1m50s
1m50s

Et si l'on remplace aes par blake, la situation s'améliore :

Sauvegarde, partie 4 : Aperçu et test de zbackup, restic, borgbackup

Temps d'exécution :

Lancement 1
Lancement 2
Lancement 3

4m33s
4m43s
4m40s

59s
1m0s
1m0s

1m38s
1m43s
1m40s

Comme dans le cas de zbackup, la taille du dépÎt était de 13 Go, voire un peu moins, ce qui est globalement attendu. J'ai été particuliÚrement satisfait du temps de fonctionnement, qui est comparable à des solutions basées sur librsync, offrant beaucoup plus de possibilités. J'ai également été satisfait de la possibilité de définir divers paramÚtres via des variables d'environnement, ce qui constitue un avantage considérable lors de l'utilisation de borgbackup en mode automatique. De plus, la charge lors de la sauvegarde était raisonnable : étant donné la charge du processeur, borgbackup fonctionne en 1 fil.

Aucun inconvénient majeur n'a été constaté lors de l'utilisation.

Test de restic

Bien que restic soit une solution relativement nouvelle (les deux premiĂšres candidates Ă©taient connues depuis 2013 ou plus), elle dispose de caractĂ©ristiques assez intĂ©ressantes. Écrite en Go.

Comparé à zbackup, elle offre en plus :

  • Une vĂ©rification de l'intĂ©gritĂ© du dĂ©pĂŽt (y compris la vĂ©rification par parties).
  • Une Ă©norme liste de protocoles et de fournisseurs pris en charge pour le stockage des sauvegardes, ainsi que le support de rclone — rsync pour des solutions « cloud ».
  • Comparaison de 2 sauvegardes entre elles.
  • Montage du dĂ©pĂŽt via fuse.

Dans l'ensemble, la liste des fonctionnalités est assez proche de celle de borgbackup, parfois plus étendue, parfois moins. En termes de spécificités, l'absence de possibilité de désactiver le chiffrement signifie que les sauvegardes seront toujours chiffrées. Voyons pratiquement ce que nous pouvons tirer de ce logiciel :

Les résultats étaient les suivants :

Sauvegarde, partie 4 : Aperçu et test de zbackup, restic, borgbackup

Temps d'exécution :

Lancement 1
Lancement 2
Lancement 3

5m25s
5m50s
5m38s

35s
38s
36s

1m54s
2m2s
1m58s

Les résultats sont également comparables à ceux des solutions basées sur rsync et, dans l'ensemble, assez proches de borgbackup, mais la charge CPU est plus élevée (utilisation de plusieurs threads) et irréguliÚre.

Il est probable que le programme soit limité par les performances du systÚme de stockage sur le serveur, comme cela a été le cas avec rsync. La taille du dépÎt était de 13 Go, tout comme pour zbackup ou borgbackup, et aucun inconvénient majeur n'a été constaté avec cette solution.

Résultats

En fait, tous les candidats ont obtenu des performances proches, mais à des prix différents. Borgbackup s'est le mieux comporté, suivi par restic, et il est probablement préférable de ne pas commencer à utiliser zbackup.
Si zbackup est déjà utilisé, il serait judicieux de passer à borgbackup ou restic.

Conclusions

Restic semble ĂȘtre la solution la plus prometteuse, car elle offre le meilleur rapport entre fonctionnalitĂ©s et rapiditĂ©, mais il est encore trop tĂŽt pour tirer des conclusions dĂ©finitives.

Borgbackup n'est fondamentalement pas infĂ©rieur, mais zbackup devrait probablement ĂȘtre remplacĂ©. Cependant, pour respecter la rĂšgle 3-2-1, zbackup peut toujours ĂȘtre utilisĂ©, par exemple, en complĂ©ment des outils de sauvegarde basĂ©s sur (lib)rsync.

Annonce

Sauvegarde, partie 1 : Pourquoi faire des sauvegardes, aperçu des méthodes et technologies
Sauvegarde, partie 2 : Revue et test des outils de sauvegarde basés sur rsync
Sauvegarde, partie 3 : Aperçu et test de duplicity, duplicati
Sauvegarde, partie 4 : Aperçu et test de zbackup, restic, borgbackup
Sauvegarde, partie 5 : Test de bacula et veeam backup for linux
Sauvegarde, partie 6 : Comparaison des outils de sauvegarde
Sauvegarde, partie 7 : Conclusions

Auteur de la publication : Pavel Demkovich

Source : habr.com

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster