Hyper-V et les snapshots

Cela peut paraître très simple mais quand on creuse un peu en dessous de la surface, on découvre que la fonctionnalité est un peu plus complexe qu' il n' y parait. A 10 000 mètres d' altitude, les snapshots, c' est aussi simple que le menu contextuel à utiliser dans l' outil d' administration Hyper-V. U

Mots clés Technorati : ,

ne fois réalisé, l' interface ressemble à peu près à cela :

 1ersnapshot

L' illustration ci-dessus présente une machine virtuelle en activité pour laquelle on a réalisé un snapshot. Du point de vue de l' interface, la seule modification, c' est la section Snapshots qui nous indique qu' un snapshot a bien été réalisé. Maintenant, allons voir ce qui s' est passé un niveau en dessous.

 

Pour simplifier la chose, j' ai volontairement créé ma machine virtuelle dans un répertoire dédié, histoire que ce soit plus clair. A la racine de mon répertoire, on va donc trouver :

  • Le fichier VHD de ma machine virtuelle, jusqu' ici pas de surprise
  • Un répertoire au nom de ma machine virtuelle : "VALIDATION"

A ce stade, on peut déjà se demander pourquoi on ne trouve pas de fichier de définition de machine virtuelle (Pour rappel, Hyper-V dissocie le stockage du fichier de définition des disques composant la machine virtuelle). Le plus intéressant se trouve dans le répertoire au nom de la machine virtuelle : "VALIDATION" :

  • Un répertoire "Virtual machines"
  • Un répertoire "Snapshots"

 

Pour le premier, l' explication est simple. Dans la configuration générale d'Hyper-V on avait trouvé un répertoire pour le stockage des définitions des machines virtuelles et un autre pour le stockage des fichiers de définition. Le contenu de ce premier répertoire peut nous intriguer. Il contient un fichier XML au nom peut évocateur. Celui-ci représenta la définition de notre machine virtuelle. Petite remarque à son sujet : Il n' est pas utilisable sous cette forme. N' essayez pas de l' importer sur un autre Hyper-V pour créer une machine virtuelle. Pour cela, il faut passer par l' option "Export" (si la machine virtuelle est à l' arrêt.). On obtient un fichier EXP utilisable pour un import sur un autre hôte Hyper-V. Le sous-répertoire présent contient un état sauvegardé de notre machine virtuelle. Cet état a été réalisé pour permettre la mise en place du snapshot car la machine était en activité.

 

Pour le second, son nom est évocateur. Le répertoire est créé dès lorsqu' on réalise le snapshot. D' un point de vue purement technique, notre "Snapshot" est représenté par un fichier "AVHD", donc un disque différentiel. Sur ce point, Hyper-V ne fonctionne pas du tout de la même manière que les "Undo disks" de Virtual PC ou Virtual Server . Lorsqu' on réalise un snapshot, l' activité de la machine virtuelle est suspendue pour mettre en place le disque différentiel et basculer dessus. Le fichier de définition de la machine virtuelle est actualisé pour référencer l' utilisation de ce disque.

 

On peut donc en conclure qu' un Snapshot n' est pas une copie complète de notre machine virtuelle à un instant donné mais plutôt comme un état de celle-ci à un instant donné par rapport à une référence (disque VHD ou AVHD). Le terme de Checkpoint conviendrait mieux (C' est comme cela que c' est nommé dans System Center Virtual Machine manager 2008). Le snapshot n' a donc de signification que s' il est accompagné de son disque de référence puisque le fichier AVHD ne contient que le "Delta". Rien que pour cette raison, les Snapshots ne peuvent être envisagés comme solution de sauvegarde. Lors du processus d' export, il est possible d' exporter aussi les snapshots associés.

 

Une fois le snapshot réalisé, on peut l' utiliser pour revenir en arrière ou valider nos changements et les intégrer dans les fichier VHD initial. Pour cela on dispose de trois options dans l' interface graphique :

  • Apply
  • Delete Snapshot
  • Delete Snapshot subtree

 

Quelle option correspond à quelle action? Pour faire simple, il faut retenir que :

  • Apply : Supprime tous les changements réalisé dans le disque AVHD. Le "delta" est donc supprimé. C'est donc un retour en arrière.
  • Delete Snapshot : Intègre tous les changements dans le disque VHD. Le fichier AVHD est tout simplement supprimé après que celui-ci ait été réintégré dans le disque VHD de référence (ou le précédent AVHD). La petite subtilité étant que le disque AVHD est réintégré au précédent lors du redémarrage de la machine virtuelle. Ceci expliqué, on comprend que le redémarrage d' une machine virtuelle peur devenir très long. Voila une autre raison pour laquelle l' utilisation des snapshots n' est pas recommandé en production.
  • Delete SnapShot Subtree : C' est aussi une réintégration du AVHD dans le VHD mais de toute la branche. Dès lors qu' on a réalisé un snapshot, il est possible de continuer à travailler et de créer d' autres snapshots (on développe alors une branche) ou de revenir sur un snapshot précédent pour tester une autre solution (on créé alors une autre branche). Dès lors qu' on a terminé et trouvé la solution qui nous convient, on peut intégrer tous les snapshots d' une branche en une seule opération lors du prochain redémarrage (Ca peut être très long).

 

En conclusion, rien n' est aussi simple qu' il n' y parait. Il faut souvent gratter un peu en dessous pour comprendre. Dans les cas des snapshots, il faut plus voire cela comme des "CheckPoints", reflétant l' état d' une machine virtuelle par rapport à une précédente. Ce n' est définitivement pas une solution de sauvegarde.

Pour ma part, je suis contre le fait d' utiliser les snapshots avant d' installer un Service Pack ou un correctif sur un système. Oui, cela permet de revenir en arrière mais nos systèmes fonctionnent de plus en plus en mode distribués (AD, Exchange, ...) et cette tendance n' est pas prêt de s' arrêter. Si on doit revenir en arrière, cela peut produire des incohérences (re-répliquer des modifications AD, le Hub Exchange qui renvoie des messages au MailBox alors que celui-ci les a déjà intégré dans sa base de données, ...). Bref, c' est une fonctionnalité qui pour moi est dédiée aux environnements de tests et d' intégration et non de production.

 

Benoît - Simple By Design (Sorry, Not this time;))

Share this post:                                       
Published 23 November 2008 04:50 PM by BenoitS
Filed under:

Comments

No Comments