Juste pour boucler la boucle : une réponse à la question de Lingfeng a été fournie dans un fil de discussion sur la liste de diffusion xen-api. Voici la réponse de James Bulpin :
Une manière de procéder serait, pour chaque machine virtuelle :
-
Convertir chaque fichier qcow2 en fichier brut en utilisant qcow2raw ' placez ces fichiers quelque part (par exemple, dans un export NFS) où vous pouvez temporairement y accéder depuis le domaine0 de XCP
-
En utilisant XCP, 'installer' une VM en utilisant le modèle le plus adapté mais sans réellement démarrer la VM ou passer par l'installation. Assurez-vous de choisir des tailles de disque virtuel au moins aussi grandes que la taille virtuelle des fichiers qcow2 originaux. Définissez les adresses MAC des NIC virtuelles pour correspondre à votre VM xl. 'Pour PV, vous devrez tromper XCP en lui faisant croire que vous avez terminé l'installation en
a. changeant le chargeur d'amorçage PV en pygrub (xe vm-param-set uuid= PV-bootloader=pygrub)
b. rendant le premier VBD bootable (xe vbd-param-set uuid=$(xe vbd-list vm-uuid= userdevice=0 --minimal) bootable=true)
c. rendant le lecteur CD virtuel (si présent) non bootable : (xe vbd-param-set uuid=$(xe vbd-list vm-uuid= type=CD --minimal) bootable=false)
-
Un par un, attacher les disques virtuels de la VM à dom0 ' ma méthode préférée est :
a. Trouver l'UUID de la VDI en utilisant 'xe vm-disk-list uuid=' ' chercher par exemple 'Disque 0 VDI'
b. Exécuter '/opt/xensource/debug/with-vdi ' ' cela attache la VDI à dom0 en tant que /dev/$DEVICE et vous laisse dans un shell ' quitter ce shell détachera la VDI
-
Utiliser /opt/xensource/libexec/sparse_dd pour copier le contenu du fichier brut (de l'étape 1) vers la VDI.
a. Par exemple : /opt/xensource/libexec/sparse_dd -src /mnt/MyVM.img -dest /dev/$DEVICE -size 8589934592 -prezeroed
-
Sortir du shell 'with-vdi'
J'ai essayé ceci pour une VM PV xl que j'ai et cela a fonctionné (j'ai démarré à partir d'une image brute plutôt que de qcow2 donc j'ai sauté l'étape 1). Mon test diffère également en ce que root est sur xvda1 cependant votre cas devrait être bon ' je me souviens que pygrub est OK avec root sur le périphérique brut.