Hyper-V (R2) : Les snapshots

Valentin Pourchet

En bon "hyperviseur", Hyper-V de Microsoft offre la possibilité de faire des snapshots (captures d'un état d'une machine virtuelle à un instant donné). Nous verrons ici comment Hyper-V gère cette fonctionnalité, ainsi que les procédures de création, suppression et utilisation des snapshots.

Commentez

- Titre : Hyper-V (R2) : Les snapshots

- Auteur : Valentin Pourchet

- Parution : 17 novembre 2011

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2011 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- 1. Définition

- 2. Processus de création d'un snapshot

- 3. Processus de suppression d'un snapshot

- 4. Processus d'application d'un snapshot

- 5. Processus du 'revert'

- VI. Remerciements

1 - Définition

Les snapshots sont des captures de l'état d'une machine virtuelle à un instant T. Ils permettent de ramener l'état de cette machine ultérieurement à son état initial.

Prenons un exemple : je développe un super programme et souhaite le tester sur une machine virtuelle. Je prends donc un snapshot puis j'installe mon programme sur la VM, pas de bol la VM crashe, heureusement, je rejoue le snapshot et ma VM ne garde aucune trace ni de l'installation du programme ni du plantage. Ce processus est illustré sur l'image ci-dessus.

Le snapshot contient :

- une copie de la configuration de la machine virtuelle (si on ajoute un contrôleur après le snapshot, lors de la restauration du snapshot, le contrôleur aura disparu) ;

- une copie des données inscrites dans la mémoire RAM virtuelle ;

- et tous les changements opérés sur le disque (le fichier .avhd représente le différentiel disque).

Il est possible d'avoir une arborescence de snapshots, si tel est le cas et qu'un snapshot parent est restauré, tous les snapshots enfants sont alors restaurés.

Les snapshots ne sont recommandés que pour les environnements de tests et de développement, pourquoi ? Tout simplement parce que les changements effectués sur la machine vont engendrer un grossissement du fichier du snapshot (.avhd). Là où il est possible de définir une taille maximale sur les disques durs virtuels, il n'est pas possible de faire de même sur les snapshots. Ainsi il arrive qu'un snapshot finisse par prendre un espace considérable et sature le disque (cas déjà rencontré). Ainsi, je le répète : pas de snapshots en production !!!

2 - Processus de création d'un snapshot

Détaillons maintenant le processus de création d'un snapshot.

Première étape, la machine virtuelle se met en 'pause'.

Puis un fichier de snapshot (.avhd) est créé.

La configuration de la machine est changée.

La machine pointe vers le nouveau fichier avhd.

La VM est à nouveau disponible.

---------- le laps de temps pour effectuer les opérations précédentes n'est pas perceptible ----------

Le contenu de la mémoire est enregistré sur le disque.

Une fois les étapes complétées, les fichiers du snapshot (différentiel disque, mémoire et configuration de la VM) sont dirigés vers un nouveau dossier.

3 - Processus de suppression d'un snapshot

Lorsqu'un snapshot est supprimé, les fichiers de configuration créés au moment du snapshot sont supprimés, puis lorsque la machine virtuelle est éteinte, le contenu des fichiers .AVHD est intégré au fichier de disque VHD. Si une arborescence complète de snapshots est supprimée, les snapshots 'enfants' sont intégrés au contenu du snapshot 'parent'. Ainsi, supprimer un snapshot correspond à supprimer un point de retour, votre VM conservera son état 'actuel' et ne pourra plus revenir à son état 'antérieur'.

4 - Processus d'application d'un snapshot

Appliquer un snapshot équivaut à remettre la machine virtuelle à l'état auquel elle se trouvait lorsque le snapshot a été pris. Concrètement, lors de l'application d'un snapshot, les fichiers de configuration de la machine sont copiés, et un nouveau fichier de snapshot .avhd est créé. Le snapshot 'original' conserve son état, ce qui permet de restaurer le même snapshot de nombreuses fois. Le contenu de la mémoire et du fichier de configuration sont copiés, et le nouveau .avhd est lié au .avhd parent (rappel : les .avhd ne contiennent que les opérations différentielles du disque après que le snapshot a été pris).

5 - Processus du 'revert'

Le processus 'revert' équivaut à appliquer le dernier snapshot dans l'arborescence de la machine virtuelle, c'est-à-dire le plus récent snapshot qui a été effectué. On peut l'assimiler à une sorte de mode de démarrage 'dernière bonne configuration connue' pour les environnements de tests où les retours en arrière sont fréquents.

VI - Remerciements

Je voudrais remercier ClaudeLELOUP pour sa relecture orthographique détaillée.