Archives par mot-clé : snapshot

nova backup, yet another snapshot/backup feature?

Etat des lieux

On connait nova image-create qui va tout simplement créer un snapshot de l’instance et le rendre disponible dans le catalogue de Glance comme nouvelle image indépendante. Au passage on a droit à un freeze de la machine pendant un temps plus ou moins long. Cette image peu servir pour restaurer l’instance ou en créer une autre sur la même base que la première.

On connait également cinder backup-create, qui permet de créer une copie indépendante d’un volume (le volume doit être « available » donc détaché), elle sera potentiellement placée sur un autre backend.  Cette copie est identifiée comme backup, elle n’est donc pas listée dans les volumes classique mais elle peut être restaurée à tout moment sur un nouveau volume ou sur le volume d’origine.

On a aussi la possibilité de cinder snapshot-create pour faire un snapshot d’un volume. Il sera potentiellement beaucoup plus rapide que le backup en fonction des backend utilisées puisque ce snapshot ne va pas être une copie intégrale du volume mais uniquement un marqueur pour retrouver un état figé des données. Ce snapshot peut être utilisé comme base pour créer de nouveau volume avec cinder create –snapshot-id.

Diantre, mais que fait nova backup alors ?

Pour faire au plus simple, nova backup permet d’assurer la rotation des snapshots d’une instance.

Exemple, je souhaite backuper mon instance tous les dimanches soir et conserver 3 backups dans l’historique. Je vais utiliser la commande :

$ nova backup devstack bkptest-20151129 weekly 3

Pour voir la rotation, allons au 3 dimanche directement.

$ nova backup devstack bkptest-20151213 weekly 3
$ glance image-list
+--------------------------------------+-----------------------------+-------------+------------------+--------------+--------+
| ID                                   | Name                        | Disk Format | Container Format | Size         | Status |
+--------------------------------------+-----------------------------+-------------+------------------+--------------+--------+
| 0e2fe0bd-aa12-43ba-b323-a9f50e41f8dd | bkptest-20151129            | raw         | bare             | 858993459200 | active |
| 0b380436-ad8c-48b7-b422-97b5e946a4f6 | bkptest-20151206            | raw         | bare             | 858993459200 | active |
| af853375-6d59-48d4-8ff8-07bd3fb43271 | bkptest-20151213            | raw         | bare             | 858993459200 | active |
+--------------------------------------+-----------------------------+-------------+------------------+--------------+--------+

La rotation se fera au 4e dimanche soir.

$ nova backup devstack bkptest-20151220 weekly 3
$ glance image-list
+--------------------------------------+-----------------------------+-------------+------------------+--------------+--------+ 
| ID                                   | Name                        | Disk Format | Container Format | Size         | Status |
+--------------------------------------+-----------------------------+-------------+------------------+--------------+--------+ 
| 0e2fe0bd-aa12-43ba-b323-a9f50e41f8dd | bkptest-20151129            | raw         | bare             | 858993459200 | active | 
| 0b380436-ad8c-48b7-b422-97b5e946a4f6 | bkptest-20151206            | raw         | bare             | 858993459200 | active | 
| af853375-6d59-48d4-8ff8-07bd3fb43271 | bkptest-20151213            | raw         | bare             | 858993459200 | active | 
| 98454d8d-1cd5-4ec6-9cae-07ac53a2226a | bkptest-20151220            | raw         | bare             |              | queued |
+--------------------------------------+-----------------------------+-------------+------------------+--------------+--------+

Une fois le backup terminée, le plus ancien est supprimé.

$ glance image-list
+--------------------------------------+-----------------------------+-------------+------------------+--------------+--------+
| ID                                   | Name                        | Disk Format | Container Format | Size         | Status |
+--------------------------------------+-----------------------------+-------------+------------------+--------------+--------+
| 0b380436-ad8c-48b7-b422-97b5e946a4f6 | bkptest-20151206            | raw         | bare             | 858993459200 | active |
| af853375-6d59-48d4-8ff8-07bd3fb43271 | bkptest-20151213            | raw         | bare             | 858993459200 | active |
| 98454d8d-1cd5-4ec6-9cae-07ac53a2226a | bkptest-20151220            | raw         | bare             | 858993459200 | active |
+--------------------------------------+-----------------------------+-------------+------------------+--------------+--------+

Remarques

Vous aurez noté que c’est à moi de lancer les sauvegarde, OpenStack n’a pas encore de scheduler qui permet de programmer cela. Un rapide appel sur l’API depuis une tâche cron permet de faire le travail.

Autre chose est à noter, le mot weekly n’est qu’une information arbitraire, j’aurais pu choisir « my_most_important_backup ». C’est ce qui permet d’identifier le cycle de rotation.