Il y a quelque temps, nous avons introduit la possibilité de prendre des instantanés d’un disque. C’est une fonctionnalité très pratique qui vous permet de sauvegarder rapidement et efficacement l’état des disques, même sur des systèmes en production.
Grâce à ZFS, les instantanés automatiques ne consommeront que le delta entre l’état actuel et le moment où l’instantané a été pris. Cela signifie que si votre disque d’origine faisait 15 Go et que seulement 1 Mo de données a changé entre l’instantané et l’état actuel, la taille de l’instantané sera de 1 Mo. Si vous écrivez un autre mégaoctet sur le disque, l’instantané augmentera d’un autre mégaoctet.
Un autre avantage de ce système est que n’importe quel instantané peut être promu (cloné) en un disque complet. Cela signifie que vous pouvez créer une copie indépendante qui peut être montée sur un serveur, potentiellement sur un système de stockage entièrement différent. En tant que tel, cela constitue la base d’une stratégie de gestion du stockage (en fonction de votre charge de travail).
Un mot d’avertissement
Bien que l’utilisation d’instantanés périodiques puisse faire partie de votre stratégie de sauvegarde, il est imprudent de s’appuyer sur les instantanés comme unique stratégie.
Il existe également de nombreuses situations où l’utilisation de ces instantanés ne fonctionnera pas, comme la prise d’un instantané d’un serveur de base de données en cours d’exécution. La fonctionnalité d’instantané peut toujours être utile sur des serveurs de base de données arrêtés (pour créer une restauration à un instant T), mais là encore, elle ne doit pas être votre unique stratégie de sauvegarde.
Création d’instantanés automatiques
En utilisant notre bibliothèque Python, automatiser les instantanés est vraiment simple. Cependant, étant donné que nous devons stocker les CloudSigma identifiants sur le système qui déclenche les instantanés, nous vous déconseillons fortement d’exposer les identifiants des services de production de manière non sécurisée. Si vous souhaitez exécuter cela sur un serveur cloud par exemple, veuillez vous assurer qu’il est isolé du reste de l’infrastructure (par exemple en utilisant notre fonctionnalité de politiques réseau) et qu’il est entièrement verrouillé.
Après avoir installé la bibliothèque Python, vous pouvez télécharger et exécuter le script comme suit :
[bash light=”true”] $ wget https://raw.githubusercontent.com/cloudsigma/pycloudsigma/master/samples/snapshot.py$ python snapshot.py drive-uuid my-snapshot
[/bash]
snapshot.py prend deux arguments :
- L’UUID du disque dont vous souhaitez faire un instantané
- Un nom convivial pour l’instantané
Après avoir créé manuellement un instantané et vérifié qu’il fonctionne (vous pouvez le voir dans la section ‘snapshot’ du disque), nous pouvons maintenant automatiser cela.
La méthode la plus appropriée et la plus standardisée pour exécuter une tâche comme celle-ci serait d’utiliser la crontab (en supposant que vous êtes sur Linux ou Mac OS X).
Avec le même utilisateur que celui avec lequel vous avez créé l’instantané ci-dessus, exécutez :
[bash light=”true”]
$ crontab -e
[/bash]
Si vous souhaitez prendre un instantané chaque nuit à 1h du matin, ajoutez la ligne suivante :
|
1 |
0 1 * * * python /path/to/snapshot.py drive-uuid my-snapshot >> $HOME/snapshot.log 2>&1 |
Vous remarquerez également que le script enregistrera les journaux dans un fichier nommé snapshot.log dans le répertoire personnel de l’utilisateur qui exécute le script.
Purge automatique des instantanés
Comme les instantanés s’accumulent avec le temps, vous souhaiterez probablement les supprimer après un certain temps. Pour résoudre ce problème, nous avons créé un autre script qui peut le faire pour vous. Le script s’appelle snapshot_purge.py et prend deux arguments :
- L’UUID du disque
- Le nombre de jours d’instantanés que vous souhaitez conserver
Par exemple, si vous souhaitez conserver 30 jours d’instantanés, vous pouvez simplement exécuter :
[bash light=”true”]
$ wget https://raw.githubusercontent.com/cloudsigma/pycloudsigma/master/samples/snapshot_purge.py
$ python snapshot_purge.py drive-uuid 30
[/bash]
Vous pouvez bien sûr également automatiser cela. Par exemple, si nous voulons purger les instantanés de plus de 30 jours, nous pouvons ajouter ce qui suit à notre crontab (qui s’exécutera à 1h30 du matin) :
|
1 |
30 1 * * * python /path/to/snapshot_purge.py disque-uuid 30 >> $HOME/snapshot_purge.log 2>&1 |
Conclusion
C’est tout, les amis. En utilisant ces deux scripts, vous pourrez automatiser les instantanés de vos disques. Si vous devez faire des instantanés de plusieurs disques, ajoutez simplement d’autres lignes snapshot.py à votre crontab avec des UUID différents.
Nous ne faisons bien sûr qu’effleurer la surface de ce que nous pouvons faire avec les instantanés, mais j’espère que cela vous servira de cours accéléré sur l’utilisation des instantanés pour vos routines de gestion du stockage.
Si vous avez des besoins plus sophistiqués en matière de rétention de données, vous pourrez, nous l’espérons, réutiliser une partie du code des scripts ci-dessus.
Commentaires
Aucun commentaire pour l'instant. Soyez le premier.