Dell ECS - Restic
Dell ECS est une solution de stockage object proposée par Dell. Comme la plupart des stockages object, cette solution supporte l'API S3, étant déjà utilisateur de S3 via restic, j'ai décidé d'écrire un article parlant des deux technologies.
Le choix d'ECS est intéressant pour avoir des fonctionnalités et des espaces cloud mais en on premise.
Installation
La première chose à faire est d'installer le binaire restic. L'installation est plutôt simplissime car restic est un simple binaire qui exécute l'ensemble du travail de sauvegarde.
On se rend sur le dépôt des release restic : https://github.com/restic/restic/releases et on cherche la version souhaitée
Les release sont là pour faire gagner un peu de temps lorsque vous avez des OS assez standard.
En l'occurence faisant un test sur Debian, je vais prendre la version : restic_0.9.6_linux_amd64.bz2
On "installe" donc cela :
wget https://github.com/restic/restic/releases/download/v0.9.6/restic_0.9.6_linux_amd64.bz2
bunzip2 restic_0.9.6_linux_amd64.bz2
# Si commande inconnue, installer de cette manière : apt-get install bzip2
mv restic_0.9.6_linux_amd64 /usr/local/bin/restic
chmod 510 /usr/local/bin/restic
# J'ai choisi de limiter les droits pour contrôler qui a le droit d'utiliser restic, de ce fait seul les membres du groupe restic-user ont les droits d'exécution
addgroup restic-user
chown root:restic-user /usr/local/bin/restic
addgroup vincent restic-user
On vérifie
Dépôt (repository) = destination de sauvegarde
Restic fonctionne sur un système de dépôt de fichier s'apparentant à git. L'idée à comprendre derrière ces dépôts (repository) est que ce sont nos cibles de destination, donc nos cibles de sauvegardes.
Plusieurs backend
Il est possible de faire sauvegarder restic vers presque n'importe quoi grâce à son utilisation de rClone, mais plusieurs sortent du lot pour des questions de coût, tel que BackBlaze avec leur stockage B2 ou encore Amazon S3 (ou S3 compatible) dont Dell ECS.
Création du dépôt
Pour créer le dépôt, nous allons taper la commande restic init et ... Ce n'est pas tout, c'est là que tout diffère.
restic init -r /home/vincent
# pour du local ou même
restic -r sftp:utilisateur@hôte:/sauvegarde init
# pour du SFTP ou encore
restic -r s3:s3.amazonaws.com/nom_bucket init
# pour du S3 de chez Amazon
-r ou --repo pour indiquer la destination
Voici un exemple pour une cible locale
Pas d'accès demandé pour le stockage, car accessible localement. Le mot de passe de dépôt (password for new repository) est utilisé pour chiffrer les clés présentes dans le dépôt créé par init. Il impossible de ne pas chiffrer un dépôt restic. (ce qui est un très bon point)
Voici l'arborescence crée :
A partir de là, le dépôt contenu dans /home/vincent/RESTIC-ECS/sauvegarde est utilisable comme répertoire de sauvegarde.
Sauvegardes
Sauvegarde locale
J'ai par exemple ce magnifique ISO de debian que je souhaite sauvegarder.
Il me suffit de taper cela pour le sauvegarder dans le dépôt précédemment créé.
On remarque un ajout de 500 Ko au dépôt car la déduplication fonctionne très bien et que j'ai déjà sauvegardé ce fichier il y a quelques jours.
Sauvegarde distante
Création du dépôt S3
Mon stockage distant sera en environement Dell ECS compatiable object S3.
Comme précédemment, l'étape 1 est d'initialiser notre dépôt : restic -r s3:beta.cloudstart.fr/bucket-de-test init
Cela ne pourra fonctionner sans authentification, car nous essayons de créer une dépôt sur un serveur distant.
Pour se faire, il faut faire un export son compte de connexion.
Export | correspondance |
---|---|
AWS_ACCESS_KEY_ID=<MY_ACCESS_KEY> | ID de connexion pour S3 & S3 compatible |
AWS_SECRET_ACCESS_KEY=<MY_SECRET_ACCESS_KEY> | Clé de connexion pour S3 & S3 compatible |
B2_ACCOUNT_ID=<MY_APPLICATION_KEY_ID> | Pour le stockage B2 de chez BackBlaze |
B2_ACCOUNT_KEY=<MY_APPLICATION_KEY> | Pour le stockage B2 de chez BackBlaze |
En l'occurence, ECS étant S3 compatible, nous ferons nos exports via AWS :
Sauvegarde de test
On lance une sauvegarde pour valider le fonctionnement du dépôt
En interactif
Pour utiliser restic de manière ponctuelle : ce que nous avons vu précédemment.
En script
Pour le script un simple export des mêmes clés AWS est nécessaire, mais également du mot de passe de dépôt, celui-ci étant tapé de manière interactive lors des exécutions en direct.
Le script va donc lancer une sauvegarde de tout le répertoire ECS
Statistiques et restauration
Afin d'en savoir plus sur la place occupée sur la destination, nous utilisons commande suivante
restic -r s3:beta.cloudstart.fr/bucket-de-test stats
Du côté ECS ont voit bien nos données. Avec la déduplcation, les données ne prennent qu'une partie réduite de l'espace :
Et il est même possible de suivre les performances sur une certaine période
Restic fonctionne sous un principe de snapshot que nous pouvons considérer comme des points de rétention, pour les lister
restic -r s3:beta.cloudstart.fr/bucket-de-test snapshots
Plusieurs options sont disponibles pour la restauration, par exemple restaurer l'ensemble des données depuis un snapshot précis. Nous n'indirons pas la date, ni le chemin désiré pour le snapshot, mais son ID, par exemple acd25382 qui est celui du 07-09-2020 à 18h43
Je vérifie simplement les données avec une commande sha et, pas de souci :
La suite
Les sauvegardes et scripts présentés sont très sommères et on ne suit pas forcément les dites sauvegarde. Avec quelques modifications des scripts, j'arrive au monitoring suivant :
Ce sont des éléments que j'aborderais dans d'autres articles si cela vous intéresse !
N'hésitez pas à me suivre sur twitter : https://twitter.com/h4ckr0
Et si vous voulez me contacter par mail pour des informations supplémentaire, ou simplement échanger avec moi : vincent[at]connat.me