
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 :
- La taille du référentiel sera égale à la taille des modifications, ou inférieure.
- 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.
- 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 :
- 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.
- 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) :
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 :
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 :
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 :
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 :
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 :
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 :
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 :
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 :
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 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
