Vous désirez faire un commit sur une VM passée en REDO mais le fichier REDO a atteint une taille conséquente : pendant la durée du commit, la VM ne répondra plus.
Pour pallier cet inconvénient, il suffit de faire un second REDO (fichier .REDO.REDO) puis de faire un commit du premier fichier REDO dans le vmdk principal et enfin de faire un commit du second REDO (qui lui est petit) dans le vmdk.
Prenons l'exemple d'une VM /home/vmware/vm/vm.vmx avec un disque en scsi0:0 déjà en REDO. Le jeu de commande à passer est le suivant :
# vmware-cmd /home/vmware/vm/vm.vmx addredo scsi0:0
# vmware-cmd /home/vmware/vm/vm.vmx commit scsi0:0 1
# vmware-cmd /home/vmware/vm/vm.vmx commit scsi0:0
Explications :
- La première commande va créer un fichier .REDO.REDO
- La seconde commande va faire un commit du .REDO dans le vmdk. Ceci grâce à la présence du 1 dans la ligne de commande. Durant ce commit la VM ne sera pas figée car elle dispose du .REDO.REDO pour travailler. A l'issue de cette commande le .REDO.REDO est automatiquement renommé en .REDO
- Enfin, la troisième commande va effectuer le dernier commit du petit .REDO créé au point 1
Une mine d'information sur les VMX et les VMDK de VMware ici :
http://www.sanbarrow.com
A lire absolument si vous voulez en savoir plus
C'est le piège : quand une VM a été passée en mode REDO à chaud (par la commande vmkfstools addredo), le commit est implicite lors de l'arrêt de la VM ! Ceci peut être très génant si l'on ne veut justement pas conserver les modifications apportées à la VM depuis le passage en mode REDO. Deux méthodes permettent d'empêcher le commit tout en arrêtant la VM :
La méthode brutale :
Faire un ps -eafwww | grep "" et relever tous les process associés à la VM. Voici typiquement le résultat de la commande :[root@esx29801 root]# ps -eafwww | grep "f098st42.vmx"
UID PID PPID C STIME TTY TIME CMD
root 9885 1 0 Mar 28 ? 00:15:16 /usr/lib/vmware/bin/vmware-vmx ...
root 9886 9885 0 Mar 28 ? 00:00:18 vmware-mks -A 11 -D 13 -S -L ...
root 9893 9885 0 Mar 28 ? 00:00:00 /usr/lib/vmware/bin/vmware-vmx ...
root 9894 9893 0 Mar 28 ? 01:11:39 /usr/lib/vmware/bin/vmware-vmx ...
Il ne reste plus qu'à faire un kill -9 des PIDs, puis de supprimer le fichier .REDO et le tour est joué
Méthode douce :
Faire un REDO de REDO. Autrement dit repasser une commande vmkfstools addredo. Ceci va créer un fichier .REDO.REDO. Ensuite, arrêter normalement la VM. Le .REDO.REDO est commité dans le .REDO et le fichier .vmdk principal n'est pas affecté. La VM étant arrêté, vous pouvez alors supprimer alors le fichier .REDO restant puis la redémarrer.
Utilisez la commande vmkfstools avec l'option commit. A noter que pendant la phase de commit, la VM ne répond quasiment plus. Si le fichier REDO est d'une taille conséquente, la VM pourra apparaîtra comme bloquée pendant un certain temps donnant l'illusion qu'elle est plantée. La syntaxe de la commande commit est la suivante :
vmkfstools <fichier_vmx> commit <scsi_id>
- <fichier_vmx> est le nom du fichier de configuration de la VM (avec son chemin complet) ;
- <scsi_id> représente l'entrée scsix:y présente dans le fichier de configuration à laquelle est rattachée le disque que vous voulez passer en mode REDO ;
Par exemple, pour la VM configurée dans /home/vmware/vm1/vm1.vmx et le disque situé en ID 0:0, passez la commande suivante :
vmkfstools /home/vmware/vm1/vm1.vmx commit scsi0:0