Outils personnels

Fusionner disque+snapshot en un seul disque

De wikiGite

Révision datée du 24 août 2009 à 22:50 par Frank (discussion | contributions)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)

VMware Server ne dispose pas, comme Workstation ou ESX/ESXi, d'un gestionnaire de snapshot. Outre le fait qu'il n'autorise qu'un et un seul snapshot, on a pas d'outils pour fusionner ce snapshot avec le disque d'origine.

C'est embêtant pour la place disque, mais surtout quand on veut migrer vers ESXi, car vmkfstools ne reconnait que les disques "pleins".

Le principe est donc d'utiliser dd pour faire une copie bloc à bloc du disque virtuel (celui avec le snapshot) vers un autre disque.

On commence par arrêter la machine virtuelle, et on crée un second disque strictement identique à celui qu'on veut "migrer". Ensuite, le plus dur est de booter sur une image de CD pour être libre de faire ce qu'on veut avec les disques.

VMware server a la mauvaise idée de forcer par défaut le démarrage sur le disque dur de la VM lorsque celui-ci contient un OS. Il s'agit d'un réglage du BIOS virtuel de la VM.

Le problème c'est qie l'écran de démarrage de la machine virtuelle passe trop vite au départ pour qu'on ait le temps d'appuyer sur F2 et d'entrer dans le BIOS. Après beaucoup d'essais, il s'avère que la méthode la plus "simple" est de lancer la VM, d'intercepter la souris en cliquant dans la fenêtre, de se connecter et de demander à l'OS de rebooter. La souris restant "prisonnière", et l'écran du BIOS passant un peu moins vite au reboot, on a le temps de taper F2. Ensuite, aller dans "Boot" et remonter le CDRom avec le disque dur dans l'ordre de boot.

Note : les flèches de direction ne fonctionnent pas dans cet écran. utiliser le pavé numérique.

Télécharger sur le serveur hôte, dans un répertoire proche des machines virtuelles, une image CD d'une distribution live dite de "rescue". SuperRescueCD fait parfaitement l'affaire (le chemin a l'air bizarre mais il fonctionne tel quel) :

wget -c http://downloads.sourceforge.net/project/systemrescuecd/sysresccd-x86/1.2.3/systemrescuecd-x86-1.2.3.iso?use_mirror=freefr

Dans les paramètres de la VM, indiquer cette image en tant que lecteur CD. S'assurer que la case "Connect at power on" est cochée.

Lancer la VM. Elle boote sur le live CD. Un fois au prompt, il faut s'assurer d'avoir accès aux 2 disques par "fdisk -l". Le disque vide est celui qui indique qu'il n'a aucune table de partition, pas moyen de se tromper.

On peut alors lancer le clonage :

dd if=/dev/sda of=/dev/sdb

tout simplement. sda est le disque d'origine, sdb est le disque vide.

Une fois la copie terminée, arrêter la VM, dans les paramètres supprimer les 2 disques (ça ne les supprime pas du datastore !).

Renommer les fichiers .vmdk de l'ancien disque et de son snapshot (le même nom avec 0000001) en .old pour ne rien écraser, et renommer le nouveau disque avec le nom de l'ancien (c'est clair, ça ?). Il reste à rajouter ce disque dans les paramètres de la VM.

On peut booter dessus.