Post

Migration de machines virtuelles de KVM à Proxmox VE

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)
Cet article est sous licence CC BY 4.0 par l'auteur.