I. Introduction

Dans un premier temps je ferai un rapide état des lieux des différents types et méthodes de sauvegarde. Ensuite je ferai une petite introduction sur LVM (Logical Volume Manager) ainsi qu'à la cryptologie. Enfin nous entrerons dans le vif du sujet en vous montrant un cas concret de sauvegarde de machine virtuelle Windows sous Linux. Bonne lecture.

II. Quelques rappels sur la sauvegarde en général

II-A. Les différents types de sauvegarde

II-A-1. Sauvegarde sur bande ou cartouche numérique:

Réputée pour sa fiabilité dans le temps, la cartouche a été adoptée par de nombreuses sociétés comme support de sauvegarde.
Lorsque le système d'information devient conséquent, la mise en place d'une robotique (baie de sauvegarde automatisée avec bras articulé pour placer les cartouches dans le lecteur) s'avère nécessaire.

II-A-2. Sauvegarde sur CD / DVD / Disque dur:

C'est une possibilité, mais les médias de sauvegarde tels que les disques compacts ou DVD sont réputés moins fiables que les bandes ou cartouches numériques. Donc moins utilisés en milieu professionnel.
Par contre pour le particulier, la sauvegarde sur DVD peut s'avérer judicieuse. Aujourd'hui presque tous les ordinateurs personnels sont équipés d'un graveur de DVD.
De plus les capacités de stockage de ces médias augmentent, et la dernière génération de DVD est capable de stocker jusqu'à 15,8 Go de données.
Donc pour un prix raisonnable le particulier pourra facilement sauvegarder ses données sur DVD.

II-A-2-a. Evolution du DVD

  • La première version de DVD (le DVD-5) était capable de stocker jusqu'à 4,3 Go en simple couche.
  • La deuxième version du DVD (le DVD-9) était composée de deux couches de stockage, ce qui lui a permis de pratiquement doubler sa capacité de stockage par rapport au DVD-5.
  • On a vu également apparaître à partir du dvd-10 les DVD simple couche double face pour une capacité légèrement supérieure à celle du DVD-9: 8,8 Go.
  • Enfin la dernière évolution du DVD (le DVD-18) est un DVD double face double couche pour une capacité totale de 15,8 Go environ.

II-A-3. Sauvegarde par internet

L'augmentation de la bande passante nous permet aujourd'hui de réaliser de gros transferts par internet.
Il devient alors possible de sauvegarder ses données vers un site distant, voir même chez votre hébergeur si celui-ci vous fournit l'espace de stockage suffisant.
Bien sûr si vous pouvez sauvegarder vos données chez votre hébergeur, celles ci deviendront disponibles alors à partir de n'importe quel ordinateur, ce qui peut être à la fois un avantage et un inconvénient :

  • Un avantage qui vous permettra d'accéder à vos données à partir de n'importe quel ordinateur dans le monde disposant d'une connexion internet.
  • Un inconvénient pour la confidentialités de ces données. On prendra donc soin de crypter les données à sauvegarder (par une clef de cryptage gpg, SSL, etc...) avant de les envoyer chez l'hébergeur.

II-A-4. Le clonage.

Le clonage d'une machine permet de faire une image de son disque dur ou d'une ou plusieurs partitions du disque dur.
On dit souvent par abus de langage que l'on fait un ghost de sa machine, abus de langage car ghost est l'acronyme de General Hardware Oriented System Transfer qui est un logiciel de clonage développé par la société Symantec.
L'image pourra être stockée soit sur une partition cachée du disque dur (dans le cas du clonage d'une partition), soit sur un média de sauvegarde tel que le cd ou le dvd ou encore sur un serveur de stockage sur un réseau local.
Les administrateurs pourront se servir des images stockées sur les serveurs de stockage pour réaliser des installations automatiques de parcs de machines.

Vous trouverez une liste de logiciels de clonage à cette adresse :
Liste des logiciels de clonageListe des logiciels de clonage

II-B. Les différentes méthodes de sauvegarde

Afin d'économiser de l'espace de stockage et de réduire les temps de sauvegarde, on peut choisir de faire une sauvegarde complète une seule fois et ensuite enregistrer uniquement les changements qui ont eu lieu depuis la dernière sauvegarde. Ce sont ces principes que je vais tout de suite détailler dans les paragraphes suivants.

II-B-1. Sauvegarde complète:

Il s'agit d'une sauvegarde intégrale des données où on recopie à l'identique toutes les données sur le média de sauvegarde. Elle est nécessaire pour que par la suite on ait la possibilité de réaliser des sauvegardes incrémentales ou différentielles.

II-B-2. Sauvegarde incrémentale:

Une sauvegarde incrémentale copie tous les fichiers nouveaux ou modifiés depuis la dernière sauvegarde que celle ci soit incrémentale ou complète. Pour restaurer un système on aura besoin de la sauvegarde complète ainsi que de toutes les sauvegardes incrémentales.

II-B-3. Sauvegarde différentielle:

Une sauvegarde différentielle copie tous les fichiers nouveaux ou modifiés depuis la dernière sauvegarde complète. Pour restaurer un système on aura besoin de la sauvegarde complète et la dernière sauvegarde différentielle.

II-C. Quelques logiciels de sauvegarde

Dans le monde propriétaire:

Dans le monde du libre:

III. Introduction à LVM

III-A. Quelques définitions à connaitre

Volume physique:
Dans le jargon LVM, le ou les volumes physiques sont les supports de stockage physiques (en général des disques durs) que l'on utilisera dans un Volume Group.

Volume Group:
Un volume group est constitué de plusieurs volumes physiques regroupés. La taille du volume group est la taille de l'ensemble des volumes dont il est constitué.

Volume logique:
Un volume logique est une partie de l'espace d'un volume group, que l'on va utiliser pour y stocker des données. Il est possible de modifier la taille de ce volume logique, et sa taille maximale ne pourra bien sûr pas dépasser la taille de l'ensemble des volumes physiques qui forment le volume Group auquel il appartient.

Illustration du concept LVM
Illustration du concept LVM

Snapshots:
Les snapshots LVM permettent à un instant T de faire une photographie d'un volume logique (et surtout des données qui s'y trouvent). Le snapshot à l'instant T ne contient que des pointeurs sur les données du volume logique original. A l'instant T+1, le contenu du volume logique original aura changé, et le snapshot va donc contenir en termes de données les différences entre le moment T et le moment T+1. Le snapshot nous permet donc d'accéder aux données d'un volume logique à un instant T, ce qui peut être très utile pour les sauvegardes par exemple.
Le snapshot c'est un peu comme si vous possédiez un document papier dont vous savez pertinemment que le contenu sera (dans le futur) modifié par plusieurs personnes et que vous vouliez garder maintenant une trace de son contenu actuel en faisant une photocopie pour archive.
Le document original pourra donc être modifié, vous vous avez récupéré le contenu du document à l'instant T où vous l'avez photocopié.

IV. Introduction à la cryptologie à clef publique

Je vais essayer ici de faire une brève description du cryptologie à clef publique.
Le cryptage à clef publique fonctionne avec deux clefs.

  • Une clef publique.
  • Une clef privée.

Une entité (personne ou serveur) va générer une paire de clefs privée/publique.
La clef publique comme son nom l'indique pourra être distribuée aux entités qui souhaitent communiquer de façon confidentielle (cryptée) avec le propriétaire de la paire de clefs publique/privée.
La clef privée permettra de déchiffrer les messages qui l'auront été avec la clef publique mais ce ne sera pas son unique fonction.
En effet le destinataire d'un message cryptée pourra authentifier son émetteur grâce à un système de signature du message.
Pour expliquer le principe de signature nous allons prendre deux entités A et B possédant chacun une paire de clefs publiques/privées:

  • A génère sa paire de clefs publique/privée et enverra sa clef publique à B.
  • B génère sa paire de clefs publique/privée et enverra sa clef publique à A.
  • B doit envoyer un message crypté à A (il faut que A soit sûr que le message qu'il recevra provient bien de B).
  • B va générer une signature du message qu'il va envoyer à A:
    Pour cela il va calculer un checksum de son message et va le crypter à l'aide de sa clef privée.
  • B va ensuite crypter le message qu'il va envoyer à A à l'aide de la clef publique de A.
  • B va enfin envoyer le message crypté ainsi que la signature.
  • A va recevoir le message crypté ainsi que la signature.
  • A va dans un premier temps déchiffrer le message (envoyé par B) à l'aide de sa clef privé.
  • A va calculer un checksum du message qu'il vient de décrypter et va décrypter la signature à l'aide de la clef publique de B.
  • Si le checksum calculé juste au dessus et le décryptage de la signature envoyée par B sont les mêmes alors A en déduira que c'est bien B qui a écrit le message.

La signature va permettre donc d'authentifier l'émetteur d'un message.

V. Cas concret d'une sauvegarde de machine virtuelle installée dans un snapshot LVM:

Dans le paragraphe précédent je parlais de snapshots LVM. Ce qui nous intéresse dans les snapshots c'est bien sûr de pouvoir faire une photo à l'instant T de contenu d'un volume logique.
Si ce volume logique contient une ou plusieurs partitions d'une machine virtuelle (car oui tout comme un disque dur on peut partitionner un volume logique), alors on obtiendra une photo à l'instant T du contenu de ses partitions dont on pourra se servir pour sauvegarder notre machine virtuelle.
Faire une sauvegarde de machine virtuelle à partir d'un snapshot a l'avantage de pouvoir minimiser les temps d'interruption de services.
Pourquoi minimiser?
Tout simplement parce qu'il faudra s'assurer au moment où on réalise le snapshot, que les éventuelles bases de données qui fonctionnent sur notre machine virtuelle se trouvent dans un état cohérent.
On pourra choisir alors choisir d'arrêter les bases de données des machines virtuelles le temps de la création du snapshot (qui est très rapide). Voici comment on pourrait voir les choses:

  • Un petit agent en écoute placé sur la machine virtuelle, pourra être contacté au moment de la sauvegarde par l'hyperviseur.
  • Cet agent se chargera de l'arrêt des bases de données sur la machine virtuelle et informera l'hyperviseur dès qu'il aura fini son travail.
  • L'hyperviseur ayant reçu la confirmation de l'arrêt des bases sur la machine virtuelle va créer le snapshot.
  • Une fois le snapshot créé, il n'y a plus de raisons que les bases de notre machine virtuelle ne soient pas redémarrées. L'hyperviseur va donc contacter l'agent afin que celui-ci s'occupe de le faire.
  • La sauvegarde pourra être réalisée à partir du snapshot de la machine virtuelle.

On aura ainsi minimisé le temps d'arrêt des bases sur la machine. Si on avait dû passer par une sauvegarde classique on aurait été contraint d'arrêter les bases de données pendant le temps de la sauvegarde qui lui est infiniment plus long que la création du snapshot.

L'agent en question devra sur la machine virtuelle inclure un mécanisme d'identification de la machine qui s'adresse à lui afin d'autoriser uniquement l'hyperviseur qui sera chargé de la sauvegarde à demander l'arrêt temporaire des services.
Ceci pourra passer par l'utilisation de certificats, ou d'une paire de clefs privée/publique (clefs openssl, voir même gpg ...).
On créera une paire de clefs (privée/publique) sur l'hyperviseur et la clef publique sera dispatchée sur les machines virtuelles.
Lorsque l'hyperviseur se connectera à l'agent (fonctionnant sur la machine virtuelle), celui-ci enverra un challenge sous forme de chaîne cryptée par la clef publique à l'hyperviseur.
Seule la clef privée (détenue par l'hyperviseur) pourra décrypter ce challenge.
Si l'hyperviseur décrypte correctement le challenge envoyé par l'agent (en considérant bien sûr que la clef privée n'existe que sur l'hyperviseur) le signe avec sa clef privée et le renvoie à l'agent alors celui-ci sera "quasi" sûr qu'il communique avec l'hyperviseur.
L'administrateur aura la charge d'appliquer les sécurités nécessaires afin que la clef privée stockée sur l'hyperviseur ne soit pas dupliquée sur d'autres machines.
On pourra également sur la machine virtuelle, réaliser un filtrage des requêtes d'arrêt de services par adresse IP et n'autoriser que l'IP de l'hyperviseur.
Voici, modélisés par des grafcets, le comportement de l'hyperviseur (celui qui sauvegardera la machine) et de l'agent fonctionnant sur la machine virtuelle:

Comportement de l'hyperviseur se connectant à l'agent
Comportement de l'hyperviseur se connectant à l'agent
Comportement de l'agent sur la machine virtuelle
Comportement de l'agent sur la machine virtuelle

La programmation d'un tel agent dépasse le cadre de cet article mais il n'est pas exclu qu'il fasse l'objet d'un prochaine article.

V-A. Tutoriel

V-A-1. Volumes logiques et snapshots

Nous entrons maintenant dans la partie technique.
Pour cela nous disposons d'un hyperviseur hôte (Xen, KVM peu importe) qui héberge une machine virtuelle windows XP.
Pour simplifier on considèrera que la machine en question est celle de Monsieur tout le monde et qu'il n'y a donc pas de services sensibles à arrêter lors de la création du snapshot de la machine.
On considérera également que cette machine virtuelle ne dispose que d'un disque système et que ce disque est bien sûr un volume logique LVM que nous nommerons lvsysteme.
Ce volume logique appartiendra à un Volume Group nommé vgwinxp.
Après avoir installé notre machine, et avoir créé une partition système occupant toute la place du disque système essayons de voir plus en détails ce qui s'est passé sur notre volume logique lvsysteme.

 
Sélectionnez
fdisk -l /dev/mapper/vgwinxp-lvsysteme
Disk /dev/mapper/vgwinxp-lvsysteme: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/mapper/vgwinxp-lvsysteme1 * 1 2609 20956761 7 HPFS/NTFS

Nous pouvons constater qu'il existe dans notre volume logique une partition primaire de type NTFS qui occupe pratiquement l'intégralité de l'espace disponible.
A priori le système nous dit que l'on peut y accéder par le fichier périphérique suivant: /dev/mapper/vgwinxp-lvsysteme1

Utilisons la commande ls pour vérifier la présence de fichier de type périphérique:

 
Sélectionnez
ls -l /dev/mapper/vgwinxp-lvsysteme1
Aucun fichier ou répertoire de ce type

Curieux ... Il n'y est pas.
Explication:
Par défaut le système ne va pas scanner la table des partitions d'un volume logique et ne va donc pas créer de fichier de type périphérique dans le répertoire /dev permettant d'y accéder.
C'est bien beau tout ça mais comment faire alors pour avoir accès à la partition système de notre machine virtuelle à partir de l'hyperviseur?
La commande kpartx va nous y aider.
Cette commande lit la table des partitions à partir d'un fichier périphérique spécifié (ici ce périphérique sera /dev/mapper/vgwinxp-lvsystème correspondant au volume logique sur lequel on a créé notre partition système pour windows) et crée les fichiers périphérique dans le répertoire /dev si ceux-ci n'existent pas.

 
Sélectionnez
kpartx -a /dev/mapper/vgwinxp-lvsysteme
ls -l /dev/mapper/vgwinxp-lvsysteme1
brw-rw—- 1 root disk 254, 20 2008-04-11 12:32 /dev/mapper/vgwinxp-lvsysteme1

Oh joie nous avons enfin créé le fichier périphérique qui nous permettra directement d'accéder à la partition NTFS système de notre machine virtuelle à partir de l'hyperviseur.
Mais me direz vous, « nous n'avons toujours pas utilisé les snapshots ???» et je vous répondrais que c'est maintenant que nous allons le faire...

Le snapshot étant une image à l'instant T de notre volume logique, il contiendra donc une image à l'instant T de notre partition système windows et, c'est la toute la magie de cette technologie, tout comme le volume logique original la commande kpartx nous permettra de créer le fichier de type périphérique dans le répertoire /dev pour accéder à l'image de cette partition NTFS contenue dans le snapshot.
Créons donc notre snapshot de volume logique:

 
Sélectionnez
#Je crée ici un snapshot de 10Go de notre volume logique lvsysteme et je le nomme lvsnapwin
lvcreate -L10G -n lvsnapwin -s /dev/vgwinxp/lvsysteme

Le snapshot sera créé en quelques secondes ainsi que le fichier périphérique correspondant: /dev/mapper/vgwinxp-lvsnapwin. Relançons la commande fdisk mais cette fois sur le snapshot:

 
Sélectionnez
fdisk -l /dev/mapper/vgwinxp-lvsnapwin
Disk /dev/mapper/vgwinxp-lvsnapwin: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/mapper/vgwinxp-lvsnapwin1 * 1 2609 20956761 7 HPFS/NTFS

Comme on s'en serait douté le système nous dit qu'il a trouvé dans le snapshot du volume logique une partition de type NTFS.
En fait en créant un snapshot du volume logique nous avons par la même occasion créé un snapshot de la partition système qu'il contient.
Utilisons kpartx tout comme il l'a été fait plus haut pour créer un nouveau fichier de type périphérique dans le répertoire /dev correspondant à ce snapshot de partition.

 
Sélectionnez
kpartx -a /dev/mapper/vgwinxp-lvsnapwin
ls -l /dev/mapper/vgwinxp-lvsnapwin1
brw-rw—- 1 root disk 254, 20 2008-04-11 12:32 /dev/mapper/vgwinxp-lvsnapwin1

Nous disposons donc du snapshot de notre partition système windows et du fichier de type périphérique /dev/mapper/vgwinxp-lvsnapwin qui va nous permettre de l'exploiter.

V-A-2. Ntfsprogs et l'utilitaire ntfsclone

Nous allons maintenant sauvegarder notre partition windows système à partir de son snapshot. La partition à sauvegarder est de type NTFS.
Aujourd'hui Linux gère très bien les partitions NTFS et les outils qui le permettent sont tout à fait mûrs.
L'utilitaire ntfsclone faisant partie d'un ensemble d'utilitaires NTFS disponibles via ntfsprogs va permettre de réaliser cette sauvegarde.

ntfsclone est une commande qui comme son nom l'indique permet de cloner une partition NTFS.
On peut donc très facilement avec cet outil recopier un système de fichiers NTFS entier vers une partition vierge ou vers un fichier (qui pourra être compressé).
En cas de crash de la partition qui a été sauvegardée (la partition source), on pourra toujours grâce à ntfsclone restaurer notre partition à partir de sa sauvegarde.

Syntaxe de ntfsclone:

  • ntfsclone --save-image [options] <Partition_accueil_de_la_sauvegarde> <partition_ntfs_a_sauvegarder>
  • ntfsclone --restore-image [options] <partition_ntfs_a_restaurer> <sauvegarde_de_la_partition>

Petit détail qui peut avoir son importance:
Comme vous l'avez sans doute remarqué, le premier argument est toujours le fichier ou la partition sur lesquels les données vont être écrites, que ce soit dans le cas d'une sauvegarde ou d'une restauration et le dernier argument est toujours la partition ou le fichier dont les données vont être recopiées. Donc faites attention à ne pas faire l'erreur de passer comme premier argument à ntfsclone la partition/le fichier source (dont les données vont être copiées) car ceci pourrait être fatal pour vos données.

V-A-3. Sauvegarde de la machine virtuelle windows

Nous choisirons ici de sauvegarder le snapshot de notre partition système windows dans un fichier compressé. Pour cela nous allons utiliser la syntaxe suivante:

 
Sélectionnez
ntfsclone -–save-image -o - /dev/mapper/vgwinxp-lvsnapwin1 | bzip -2 > /repertoire/winxp.img.bz2

Comme vous pouvez le constater, au lieu de diriger le résultat de ntfsclone vers un fichier ou une partition, nous le redirigons vers un tube. De l'autre côté de ce tube l'utilitaire de compression bzip2 récupèrera les données, les compressera et les stockera dans le fichier winxp.img.bz2

Sauvegarde d'une partition NTFS dans un fichier compressé
Sauvegarde d'une partition NTFS dans un fichier compressé

Un indicateur de progression s'affichera alors tout au long de la sauvegarde de notre partition.
Si vous disposez d'un serveur NFS/SSH/SAMBA vous pourrez choisir de sauvegarder votre fichier compressé sur ce serveur et vous aurez ainsi réalisé une sauvegarde en réseau.
Au point où nous en sommes nous venons de faire une sauvegarde de la partition système de notre machine virtuelle, mais ça ne suffit pas.
Il vous faudra également sauvegarder le MBR (Master Boot Record) de votre machine virtuelle qui se trouve dans les 512 premiers octets du disque système qui contient le chargeur de démarrage de votre machine virtuelle ainsi que la table des partitions.
Pour sauvegarder le MBR nous allons utiliser la commande dd:

 
Sélectionnez
dd if=/dev/mapper/vgwinxp-lvsnapwin of=/repertoire/winxp.mbr bs=512 count=1

Ici on sauvegarde dans le fichier winxp.mbr les premiers 512 octets du disque système de notre windows XP (là où se trouve le MBR).

Conseil d'ami:
Je vous conseille vivement de jongler avec plusieurs fichiers de sauvegarde pour votre machine virtuelle.
Travailler avec trois fichiers de sauvegarde différents et faire un roulement sur ceux ci vous permettra de toujours avoir une sauvegarde de réserve au cas où la sauvegarde du jour se serait mal passée et que le fichier généré serait corrompu et donc inexploitable pour une éventuelle restauration.
Exemple : Votre sauvegarde se passe mal, et peu de temps après,le même jour, la machine virtuelle est corrompue par un virus.
Avec un seul fichier de sauvegarde il nous sera impossible de restaurer la machine.
Avec trois fichiers de sauvegarde on aura encore la possibilité de restaurer la machine avec le fichier de la veille.
Exemple de roulement:

 
Sélectionnez
#Le lundi:
ntfsclone -–save-image -o - /dev/mapper/vgwinxp-lvsnapwin1 | bzip -2 >/repertoire/winxp_1.img.bz2
#Le mardi:
ntfsclone -–save-image -o - /dev/mapper/vgwinxp-lvsnapwin1 | bzip -2 >/repertoire/winxp_2.img.bz2
#Le mercredi:
ntfsclone –-save-image -o - /dev/mapper/vgwinxp-lvsnapwin1 | bzip -2 >/repertoire/winxp_3.img.bz2
#Le jeudi (on écrase le premier fichier créé le lundi):
ntfsclone -–save-image -o - /dev/mapper/vgwinxp-lvsnapwin1 | bzip -2 >/repertoire/winxp_1.img.bz2

V-A-4. Restauration de la machine virtuelle windows

Mettons nous dans une situation critique:
Nous sommes lundi matin (on pourrait s'arrêter là mais on va continuer...)
Vous ne disposez pas de raid sur vos volumes physique (LVM) et malheureusement un crash disque inopiné vous fait perdre le volume logique qui contenait la partition système de votre machine virtuelle (adieu /dev/mapper/vgwinxp-lvsysteme).

Mais tout n'est pas si noir et un espoir subsiste car vous disposez d'au moins un fichier de sauvegarde de votre machine virtuelle.
Bravo vous êtes un administrateur prévoyant. (Sinon ben ... Game Over)
Vous vous employez donc à recréer un volume group sur des disques sains:

 
Sélectionnez
vgcreate vgnewwinxp pv1 pv2 pv3 ... (pv comme physical volume lvm)

Et à l'intérieur de ce volume group vous allez recréer un volume logique de la même taille que celui que vous avez perdu:

 
Sélectionnez
Lvcreate -n lvsysteme -L taille vgnewwinxp

Créez maintenant votre partition système à l'intérieur même de votre volume logique grâce à fdisk ou encore parted (ou gparted la version graphique de parted).
Utilisez la commande kpartx comme indiqué au paragraphe IV-A-1 pour créer un fichier de type périphérique qui vous permettra d'y avoir accès depuis votre hyperviseur.

 
Sélectionnez
sudo fdisk -l /dev/mapper/vgnewwinxp-lvsysteme
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x2e83731b.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won\'t be recoverable.


The number of cylinders for this disk is set to 1305.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help):n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4):1
First cylinder (1-1305, default 1): 1
Last cylinder or +size or +sizeM or +sizeK (1-1305, default 1305): 1305

Command (m for help): p

Disk /dev/mapper/vgnewwinxp-lvsysteme: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x2e83731b

                        Device Boot      Start         End      Blocks   Id  System
/dev/mapper/vgnewwinxp-lvsysteme1               1        1305    10482381   83  Linux

kpartx -a /dev/mapper/vgnewwinxp-lvsysteme
	ls -l /dev/mapper/vgnewwinxp-lvsysteme1
	brw-rw—- 1 root disk 254, 20 2008-04-11 15:32 /dev/mapper/vgnewwinxp-lvsysteme1

Maintenant que tout est prêt il est grand temps de passer à la restauration de votre machine:

 
Sélectionnez
bunzip2 -c /repertoire/winxp_1.img.bz2 | ntfsclone -–restore-image -–overwrite
/dev/mapper/vgnewwinxp-lvsysteme1 -

Une fois de plus on utilise un tube avec à l'entrée de ce tube le résultat de la décompression du fichier de sauvegarde et à la sortie du tube ntfsclone qui récupère ces données (décompressées) pour les restaurer sur /dev/mapper/vgnewwinxp-lvsysteme1.

Bravo vous venez de restaurer votre machine virtuelle, dans une partition créée dans un volume logique nommé lvsysteme appartenant au Volume Group vgnewwinxp.
Mais si vous avez bien tout suivi, vous saurez que ça ne suffira pas.
En effet vous venez de restaurer la partition système de votre machine virtuelle windows mais ça ne la rendra pas bootable pour autant car il vous manque bien sûr le MBR (qui contient le lanceur de démarrage windows).
Mais là encore rien ne vous échappe et vous avez sauvegardé le MBR de la machine originale dans un fichier et la commande dd va vous permettre de le restaurer comme ceci:

 
Sélectionnez
dd if=/repertoire/winxp_1.mbr of=/dev/mapper/vgnewwinxp-lvsysteme bs=512 count=1

Une autre façon de faire, peut être plus propre, aurait été de booter sur un cd de windows, lancer une console de récupération et d'utiliser la commande fixmbr pour regénérer un MBR tout neuf.
Ça y est votre machine virtuelle est prête à l'emploi et vous allez sans doute faire le bonheur de plein d'utilisateurs de votre entreprise qui se voyaient déjà au chômage technique. Avec un peu de chances vous ferez même partie du tableau d'honneur des meilleurs employés du mois (ça existe quelque-part ça ?) mais là je pense que je m'emballe un peu.

VI. Conclusion

Du fait des possibilités de snapshots offertes par LVM il peut être intéressant de choisir d'installer les partitions de nos machines virtuelles dans un ou plusieurs volumes logiques.
Il est aussi important de rappeler, que dans le cas que j'ai présenté, le snapshot nous a permis de sauvegarder notre machine en minimisant les interruptions de services.
En effet, une fois que l'on a obtenu un snapshot de machine virtuelle cohérent (avec des bases de données dans un état cohérent) la sauvegarde sera réalisée à partir du snapshot et la machine virtuelle pourra continuer à "vivre sa vie".
Autre possibilité que je n'ai pas cité dans cet article:
Il est possible de booter sur un snapshot. Ceci peut être intéressant car vous obtenez donc un "clone" de votre machine virtuelle sur lequel vous pourrez réaliser des tests plus ou moins dangereux pour l'intégrité du système sans pour autant faire courrir de risques à votre machine virtuelle de production originale.

Pourquoi avoir choisi pour ce tutoriel une machine virtuelle sous windows avec des partitions NTFS me direz vous?
Tout simplement parce que je trouvais intéressant de montrer qu'il existe des outils de gestion de partitions NTFS sympathiques sous linux mais j'aurais aussi bien pu vous montrer comment sauvegarder une machine virtuelle linux dont la ou les partition(s) est/sont également contenu(s) dans un volume logique.
Bien sûr les outils de sauvegarde n'auraient pas été les mêmes, mais le principe serait resté le même puisqu'on aurait pu tout aussi bien se servir d'un snapshot.
Si vous êtes arrivés jusqu'ici, merci de m'avoir lu et j'espère que ces quelques lignes vous auront intéressé.

VII. Remerciements

Je tiens tout particulièrement à remercier gorgonitegorgonite pour sa relecture orthographique.