Migration de machines virtuelles de KVM à Proxmox VE
Migrer vos machines virtuelles de KVM (libvirt) vers l’environnement virtuel Proxmox. Comme Proxmox est basé sur KVM, la transition est plus fluide et beaucoup plus facile car les formats de disque sont compatibles et nous n’avons besoin d’aucun outil de conversion de disque.
Article original: Migrating Virtual Machines from KVM to Proxmox VE
1 - Liste des instances VM sur KVM
Connectez-vous à votre hôte KVM et identifiez les machines virtuelles que vous souhaitez déplacer vers l’hyperviseur Proxmox.
1
sudo virsh list --all
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ID Nom État
---------------------------------------------
1 vm-alpine05 en cours d’exécution
2 vm-ntfy en cours d’exécution
3 vm-debian12 en cours d’exécution
4 alpine-searx en cours d’exécution
5 alpine-vm en cours d’exécution
6 vm-alpine04 en cours d’exécution
7 vm-alpine01 en cours d’exécution
8 vm-alpine03 en cours d’exécution
9 vm-debian13 en cours d’exécution
10 vm-debian13-02 en cours d’exécution
11 vm-alpine02 en cours d’exécution
12 vm-alpine06 en cours d’exécution
- vm-alpine07 fermé
- vm-lldap fermé
Nous allons effectuer la migration du serveur vm-alpine03 vers Proxmox à partir de l’hôte KVM actuel.
2 - Identifier le chemin du disque VM
Identifier le chemin et le format du disque.
1
sudo virsh dumpxml vm-alpine03 | grep source
Dans la sortie, recherchez « fichier source » – c’est le disque réel pour le disque racine.
1
2
3
4
5
6
7
8
<resource>
</resource>
<source file='/srv/kvm/libvirt/images/vm-alpine03.qcow2' index='2'/>
<source file='/mnt/FreeUSB2To/iso/alpine-standard-3.22.1-x86_64.iso' index='1'/>
<source network='bridged-network' portid='d29c3ef7-6db7-4f0a-94bd-d6377ec964ef' bridge='br0'/>
<source path='/dev/pts/7'/>
<source path='/dev/pts/7'/>
<source mode='bind' path='/run/libvirt/qemu/channel/8-vm-alpine03/org.qemu.guest_agent.0'/>
Le format d’image sera qcow2 dans la plupart des cas, sinon vous pouvez le convertir en utilisant:
1
qemu-img convert -O qcow2 source-image.img destination-image.qcow2
Emplacement image: /srv/kvm/libvirt/images/vm-alpine03.qcow2
3 - Arrêter la machine virtuelle et copier le disque
Demander l’arrêt de la machine virtuelle:
1
sudo virsh shutdown vm-alpine03
Vérifier si la VM est arrêter
1
sudo virsh list --all |grep vm-alpine03
1
- vm-alpine03 fermé
En cas de blocage, forcer l’arrêt: sudo virsh destroy <VM>
Une fois la machine virtuelle éteinte, copiez le disque qcow2 sur le serveur Proxmox:
1
2
3
4
# syntaxe
rsync -avhP --sparse <image-path> root@ProxmoxIP:/var/lib/vz/images/
# exemple
rsync -avhP --sparse /var/lib/libvirt/images/radius-02.qcow2 root@192.168.1.10:/var/lib/vz/images/
Pour la machine vm-alpine03:
1
rsync -avhP --sparse --rsync-path='sudo rsync' -e 'ssh -p 55215 -i /home/yick/.ssh/m93p-ed25519' /srv/kvm/libvirt/images/vm-alpine03.qcow2 leno@192.168.0.215:/var/lib/vz/images/
Patienter quelques minutes, suivant la taille du fichier qcow2…
4 - Créer machine virtuelle sur Proxmox VE
En mode su
Liste des pools de stockage disponibles dans votre serveur Proxmox:
1
pvesm status
1
2
3
Name Type Status Total Used Available %
local dir active 98497780 18962520 74485712 19.25%
local-lvm lvmthin active 855855104 427927 855427176 0.05%
Dans la sortie, vous pouvez obtenir plus d’un pool de stockage en fonction de vos configurations de stockage.
Liste des ponts de réseau:
1
brctl show
1
2
3
4
5
bridge name bridge id STP enabled interfaces
fwbr100i0 8000.ea4c42a4f885 no fwln100i0
tap100i0
vmbr0 8000.0023246b52ff no eno1
fwpr100p0
À partir de KVM, confirmer les spécifications matérielles utilisées précédemment pour la VM:
1
sudo virsh dumpxml vm-alpine03|more
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[...]
<name>vm-alpine03</name>
<uuid>f454f1c1-53d6-4cce-8cad-0b70ac653080</uuid>
<metadata>
<libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
<libosinfo:os id="http://alpinelinux.org/alpinelinux/3.17"/>
</libosinfo:libosinfo>
</metadata>
<memory unit='KiB'>3145728</memory>
<currentMemory unit='KiB'>3145728</currentMemory>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='x86_64' machine='pc-q35-7.2'>hvm</type>
</os>
[...]
Proxmox - Définir les configurations RAM, CPU, Network, Storage comme variables:
1
2
3
4
5
6
VMID=$(pvesh get /cluster/nextid) # ID of the VM to be created. This is auto-assigned by Proxmox VE
VMNAME=vm-alpine03 # Name of the VM
RAM=3072 # VM RAM size in MB
CORES=1 # CPU cores for the VM
BRIDGE=vmbr0 # Proxmox network bridge to use
STORAGE=local-lvm # Storage pool to use
Créer un modèle de VM avec des valeurs exportées.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
qm create $VMID \
--name $VMNAME \
--memory $RAM \
--cores $CORES \
--net0 virtio,bridge=$BRIDGE \
--scsihw virtio-scsi-pci \
--cpu host
``
### 5 - Image disque exportée de KVM
La VM doit apparaître dans la liste:
qm list
1
2
3
VMID NAME STATUS MEM(MB) BOOTDISK(GB) PID
100 pvm-alpine01 running 256 5.00 7823
101 vm-alpine03 stopped 3072 0.00 0 ```
Définir le chemin d’accès de la variable IMAGE sur le chemin de disque importé:
1
IMAGE=/var/lib/vz/images/vm-alpine03.qcow2
Confirmer que le disque n’est pas vide:
1
du -sh $IMAGE
1
15G /var/lib/vz/images/vm-alpine03.qcow2
Importer l’image de base dans le disque de stockage réel de la machine virtuelle.
1
qm importdisk $VMID $IMAGE $STORAGE
Le processus d’importation débute et patienter…
1
2
3
4
5
6
7
8
9
10
11
12
13
importing disk '/var/lib/vz/images/vm-alpine03.qcow2' to VM 101 ...
Logical volume "vm-101-disk-0" created.
Logical volume pve/vm-101-disk-0 changed.
transferred 0.0 B of 15.0 GiB (0.00%)
transferred 155.1 MiB of 15.0 GiB (1.01%)
transferred 310.3 MiB of 15.0 GiB (2.02%)
transferred 465.4 MiB of 15.0 GiB (3.03%)
transferred 619.0 MiB of 15.0 GiB (4.03%)
transferred 774.1 MiB of 15.0 GiB (5.04%)
transferred 927.7 MiB of 15.0 GiB (6.04%)
[...]
transferred 15.0 GiB of 15.0 GiB (100.00%)
unused0: successfully imported disk 'local-lvm:vm-101-disk-0'
Fixer le disque dans la VM car après l’importation, il n’est pas attaché.
Vous utilisez LVM
1
qm set $VMID --scsihw virtio-scsi-pci --virtio0 $STORAGE:vm-$VMID-disk-0
update VM 101: -scsihw virtio-scsi-pci -virtio0 local-lvm:vm-101-disk-0
Sinon
1
qm set $VMID --scsihw virtio-scsi-pci --virtio0 $STORAGE:$VMID/vm-$VMID-disk-0.raw
Changez l’ordre de démarrage pour démarrer avec le périphérique de bloc SCSI ou VirtiO.
1
qm set $VMID --boot c --bootdisk virtio0
update VM 101: -boot c -bootdisk virtio0
6 - Démarrer la machine virtuelle à partir de Proxmox UI
Connectez-vous à la console Web Proxmox et confirmez les spécifications matérielles de la machine virtuelle.
Les réglages peuvent être personnalisés selon les besoins.
Essayez de démarrer la machine virtuelle et confirmez qu’elle peut démarrer.
7 - Configurations supplémentaires de la VM
- Activer le démarrage automatique de la machine virtuelle: VM > Options > Démarrer au démarrage > (Cocher à oui)
- Prévenir la suppression accidentelle de la machine virtuelle: VM > Options > Protection > (Cocher à oui)

