Dell ECS - Restic

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 :

Le grep permet d'éviter les 250 répertoires de data

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