rss logo

Guide étape par étape : comment migrer des machines virtuelles de VMware ESXi vers Proxmox VE 8.3

Explosion symbolique du logo VMware au profit de Proxmox, illustrant la migration et le remplacement de l'infrastructure virtuelle.

Dans cet article, je vais expliquer comment migrer des machines virtuelles VMware ESXi vers un hyperviseur Proxmox. Je montrerai ici comment transférer des machines virtuelles Debian et Windows utilisant un démarrage BIOS ou UEFI. Pour rappel, j’ai déjà traité de l’hyperviseur Proxmox dans des articles précédents concernant le processus d’installation : ici et la création de machines virtuelles : .

Comme expliqué, et comme vous l’avez sûrement constaté, il semble que la stratégie de Broadcom soit de faire fuir ses clients (du moins les plus petits). Puisqu’ils ne veulent pas de notre argent, je vous suggère de suivre leur conseil en lisant cet article et en migrant vers Proxmox. Le processus complet est détaillé ci-dessous. 😉

Architecture

Dans cet article, je travaillerai sur une architecture très simple où des machines virtuelles stockées dans la partition /vmfs/volumes/4T_RAID1 d’un serveur VMware ESXi seront migrées vers un serveur Proxmox dans la partition /ZFS_RAID10.

Schéma réseau montrant la migration de machines virtuelles depuis un serveur VMware ESXi vers un serveur Proxmox VE via SSH, avec stockage ZFS et VM Debian/Windows.

Activation de SSH sur ESXi

La première étape consiste à activer le service SSH sur l’hôte VMware ESXi depuis lequel nous souhaitons migrer les machines virtuelles. Cela peut se faire depuis VCSA ou directement depuis ESXi. Je vous présenterai les deux méthodes ci-dessous. En effet, nous utiliserons le protocole SSH pour transférer les fichiers VMDK de notre serveur ESXi vers notre hyperviseur Proxmox.

  • Depuis ESXi, allez dans Host > Manage > Services. À partir de là, sélectionnez le service SSH puis cliquez sur Start :
Interface du client ESXi montrant comment activer le service SSH via l'onglet Manage > Services.
  • Depuis VCSA, sélectionnez l’hôte ESXi, puis allez dans Configure > Services et sélectionnez le service SSH. Enfin, cliquez sur Start :
Activation du service SSH sur un hôte ESXi via vSphere Client dans l’onglet Configure > Services.
  • Une fois le service SSH activé, vérifiez que vous pouvez vous connecter à votre hôte ESXi :
user@debian:~$ ssh -l root 192.168.1.250
  • Une fois connecté, vérifiez les partitions où se trouvent les machines virtuelles que vous souhaitez transférer :
[root@localhost:~] df -h
Filesystem   Size   Used Available Use% Mounted on
VMFS-6       3.6T   2.7T    953.9G  74% /vmfs/volumes/4T_RAID1
VMFSOS     119.8G   4.1G    115.7G   3% /vmfs/volumes/OSDATA-4203c1ce-de1feb81-e534-fa7e52a7d43e
vfat         4.0G 280.0M      3.7G   7% /vmfs/volumes/BOOTBANK1
vfat         4.0G 258.3M      3.7G   6% /vmfs/volumes/BOOTBANK2
  • Lister les dossiers des machines virtuelles :
[root@localhost:~] ls -lh /vmfs/volumes/4T_RAID1
drwxr-xr-x    1 root     root       76.0K May 26  2024 Alpine
drwxr-xr-x    1 root     root       76.0K Dec 12 16:49 Debian_10_IPsec
drwxr-xr-x    1 root     root       76.0K Dec 11 13:40 Debian_12
drwxr-xr-x    1 root     root       84.0K Feb 14 16:54 W11
drwxr-xr-x    1 root     root       96.0K Feb 20 09:09 W2K25

Copier les fichiers VMDK

Arrêter la machine virtuelle

Avant de transférer une machine virtuelle de ESXi vers Proxmox, il faut d'abord l’éteindre. Cela peut se faire via l’interface web graphique, la ligne de commande (CLI) ou directement depuis la VM.

  • Exemple ici avec la machine virtuelle W2K25. En CLI, nous devons d’abord obtenir l’ID de la machine virtuelle (à noter que l’on peut aussi récupérer le chemin d’accès à partir de là) :
[root@localhost:~] vim-cmd vmsvc/getallvms | grep -i W2K25
373    W2K25                                 [4T_RAID1] W2K25/W2K25.vmx                                                                        windows2019srvNext_64Guest   vmx-21
  • Une fois que nous avons récupéré l’ID de la machine virtuelle, nous pouvons l’éteindre :
[root@localhost:~] vim-cmd vmsvc/power.shutdown 373

Copier avec SCP

Une fois que nous avons identifié le chemin complet de la machine virtuelle à importer, nous utiliserons la commande SCP pour transférer les fichiers de ESXi vers Proxmox.

  • Se connecter à l’hôte Proxmox :
user@debian:~$ ssh -l root 192.168.1.240
  • Une fois connecté, lister les datastores :
root@proxmox:~# df -h
Filesystem        Size  Used Avail Use% Mounted on
udev               32G     0   32G   0% /dev
tmpfs             6.3G  8.9M  6.3G   1% /run
rpool/ROOT/pve-1  707G  2.2G  704G   1% /
tmpfs              32G   46M   32G   1% /dev/shm
tmpfs             5.0M     0  5.0M   0% /run/lock
efivarfs          304K  104K  196K  35% /sys/firmware/efi/efivars
rpool/var-lib-vz  724G   20G  704G   3% /var/lib/vz
rpool             704G  128K  704G   1% /rpool
ZFS_RAID10       8.9T  2.9T  6.0T  33% /ZFS_RAID10
rpool/data        704G  128K  704G   1% /rpool/data
rpool/ROOT        704G  128K  704G   1% /rpool/ROOT
/dev/fuse         128M   28K  128M   1% /etc/pve
tmpfs             6.3G     0  6.3G   0% /run/user/0
  • Copier les fichiers VMDK de VMware vers le stockage local :
root@proxmox:~# scp -r root@192.168.1.250:/vmfs/volumes/4T_RAID1/W2K25/*vmdk /ZFS_RAID10/W2K25/
Illustration du transfert de fichiers VMDK d'une machine virtuelle Windows (W2K25) via SCP depuis un hôte VMware ESXi vers un stockage ZFS sur Proxmox VE.

Convertir VMDK en RAW

Le format VMDK n’est pas directement utilisable avec Proxmox, il faut donc le convertir au format RAW.

  • Convertir un fichier vmdk en raw :
root@proxmox:~# cd /ZFS_RAID10/W2K25/
root@proxmox:~# qemu-img convert -p -f vmdk -O raw w2k25.vmdk w2k25.raw

Importer la machine virtuelle

Dernière étape : créer une nouvelle VM dans Proxmox en utilisant les disques RAW précédemment créés. Comme nous le verrons dans les exemples ci-dessous, la syntaxe et la procédure varient selon le type de démarrage (UEFI ou BIOS) et le système d’exploitation.

Windows avec démarrage UEFI

Logo Microsoft
  • Options :
    • --ide0 ZFS_RAID10:0,import-from=/ZFS_RAID10/w2k25_VM/w2k25.raw : spécifie la partition du système d’exploitation (utilisez IDE car SCSI nécessite les pilotes virtio). ZFS_RAID10 est le disque de destination. 0 correspond au disque virtuel 0.
    • --tpmstate0 ZFS_RAID10:1,version=v2.0 (optionnel) : si nécessaire, configure un disque pour stocker l’état TPM. ZFS_RAID10 est le disque de destination. 1 correspond au disque virtuel 1.
    • --efidisk0 ZFS_RAID10:2,efitype=4m,pre-enrolled-keys=1,size=1M : configure un disque pour stocker les variables EFI. ZFS_RAID10 est le disque de destination. 2 correspond au disque virtuel 2.
    • --net0 e1000,bridge=vmbr0 : spécifie l’interface réseau. Intel E1000 ne nécessite pas de pilotes supplémentaires avec Windows.

L’option cputype=x86-64-v2-AES (ou x86-64-v3, x86-64-v4 si votre processeur est compatible) est obligatoire pour Windows Server 2025, sinon le système redémarrera en boucle infinie.

root@proxmox:~# qm create 300 --name "Windows-w2k25" --memory 4096 --machine q35 --sockets 1 --cores 4 --bios ovmf --cpu cputype=x86-64-v2-AES --efidisk0 ZFS_RAID10:1,efitype=4m,pre-enrolled-keys=1,size=1M --net0 e1000,bridge=vmbr0 --ide0 ZFS_RAID10:0,import-from=/ZFS_RAID10/w2k25_VM/w2k25.raw

Après le démarrage de Windows, vous pourriez rencontrer des difficultés pour désinstaller VMware Tools. Ce script PowerShell m'a aidé à m'en débarrasser : https://gist.githubusercontent.com/

Il est également recommandé d’installer les pilotes VirtIO. Consultez la procédure ici (chapitre 2.2.3 Post-installation de Windows).

Debian

Logo Debian

Debian avec démarrage Legacy (BIOS)

  • Exécutez cette commande pour créer la VM avec le disque RAW et la démarrer :
root@proxmox:~# qm create 301 --name "Debian-12-BIOS" --memory 2048 --machine q35 --sockets 1 --cores 4 --bios seabios --net0 virtio,bridge=vmbr0 --scsihw virtio-scsi-single --scsi0 ZFS_RAID10:0,import-from=/ZFS_RAID10/Debian/Debian.raw
  • Une fois démarrée, comme le nom de l’interface réseau a changé, vous devrez identifier le nouveau nom d’interface :
root@host:~# ip addr sh
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: enp6s8: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether bc:24:11:24:0b:be brd ff:ff:ff:ff:ff:ff
  • Mettez à jour le fichier /etc/network/interfaces avec le nouveau nom d’interface, puis redémarrez le service réseau :
root@host:~# systemctl restart networking

Debian avec démarrage UEFI

  • Exécutez cette commande pour créer la VM avec le disque RAW et la démarrer :
root@proxmox:~# qm create 302 --name "Debian-12-UEFI" --memory 2048 --machine q35 --sockets 1 --cores 4 --bios ovmf --efidisk0 ZFS_RAID10:1,efitype=4m,pre-enrolled-keys=1,size=1M --net0 virtio,bridge=vmbr0 --scsihw virtio-scsi-single --scsi0 ZFS_RAID10:0,import-from=/ZFS_RAID10/Debian/Debian.raw
  • Si la VM ne parvient pas à démarrer et reste bloquée, appuyez sur une touche pour accéder au menu de gestion du démarrage (Boot Manager Menu) :
Échec de démarrage d'une VM UEFI sur Proxmox indiquant d'appuyer sur une touche pour entrer dans le Boot Manager Menu.
  • Dans le Boot Manager Menu, accédez au Boot Maintenance Manager puis sélectionnez Boot From File :
Séquence de navigation UEFI depuis le Boot Manager jusqu'à la sélection de fichier de démarrage dans un environnement Proxmox.
  • Accédez à EFI > debian, puis sélectionnez shimx64.efi :
Explorateur de fichiers UEFI montrant la sélection du fichier shimx64.efi dans le dossier EFI/debian pour démarrer Debian sur Proxmox.
  • La machine virtuelle devrait maintenant démarrer correctement :
Menu de démarrage GRUB affichant Debian GNU/Linux après ajout manuel de l’entrée EFI via efibootmgr sur Proxmox.
  • La première chose à faire après le démarrage est d’ajouter l’entrée EFI. Ensuite, Debian démarrera automatiquement lors des redémarrages suivants :
root@host:~# efibootmgr --create --disk /dev/sda --part 1 --label "debian" --loader "\EFI\debian\shimx64.efi"
  • Comme nous l’avons fait avec le BIOS, identifiez le nouveau nom de l’interface réseau :
root@host:~# ip addr sh
1: lo: <.gLOOPBACK,UP,LOWER_UP>.g mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: enp6s8: <.gBROADCAST,MULTICAST>.g mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether bc:24:11:24:0b:be brd ff:ff:ff:ff:ff:ff
  • Et modifiez le fichier /etc/network/interfaces avec le nouveau nom d’interface, puis redémarrez le service réseau :
root@host:~# systemctl restart networking

OpenBSD

Logo OpenBSD

OpenBSD avec démarrage UEFI

Pour cela, je me suis appuyé sur la source suivante : https://forum.proxmox.com/.

  • Exécutez cette commande pour créer la VM et la démarrer en utilisant le disque RAW :
root@proxmox:~# qm create 303 --name "OpenBSD-UEFI" --memory 2048 --machine q35 --sockets 1 --cores 4 --agent 1,type=isa --cpu kvm64 --net0 virtio,bridge=vmbr0 --scsihw virtio-scsi-single --boot order=scsi0 --scsi0 ZFS_RAID10:0,import-from=/ZFS_RAID10/OpenBSD/OpenBSD.raw --bios ovmf --efidisk0 ZFS_RAID10:1,efitype=4m,pre-enrolled-keys=1,size=1M

Optionnel : utilisez l’option pre-enrolled-keys=0 lors de la création de la VM pour désactiver directement le Secure Boot.

  • La VM peut ne pas démarrer et rester bloquée sur cet écran. Comme indiqué, appuyez sur une touche pour accéder au Boot Manager Menu :
Échec d’amorçage UEFI d’une machine virtuelle Proxmox avec message 'Access Denied' et option pour entrer dans le Boot Manager.
  • Dans le Boot Manager Menu, accédez au Device Manager, sélectionnez Secure Boot Configuration puis désactivez le Secure Boot :
Désactivation de l'option Secure Boot dans le Device Manager UEFI d'une VM Proxmox via Secure Boot Configuration.
  • Une fois la VM démarrée, comme le nom de l’interface réseau a changé, vous devez identifier le nouveau nom :
host# ifconfig
lo0: flags=2008049<UP,LOOPBACK,RUNNING,MULTICAST,LRO> mtu 32768
	index 5 priority 0 llprio 3
	groups: lo
	inet6 ::1 prefixlen 128
	inet6 fe80::1%lo0 prefixlen 64 scopeid 0x5
	inet 127.0.0.1 netmask 0xff000000
vio0: flags=2008843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LRO> mtu 1500
	lladdr bc:24:11:53:f1:5a
	index 1 priority 0 llprio 3
	groups: egress
	media: Ethernet autoselect
	status: active
  • Renommez votre fichier hostname.interface en utilisant le nouveau nom d’interface :
root# mv /etc/hostname.OLD /etc/hostname.vio0
  • Appliquez les changements de configuration réseau :
root# sh /etc/netstart

OpenBSD avec démarrage Legacy (BIOS)

  • Exécutez cette commande pour créer la VM avec le disque RAW et la démarrer :
root@proxmox:~# qm create 304 --agent 1,type=isa --memory 4096 --bios seabios --name "OpenBSD-BIOS" --sockets 1 --cores 2 --cpu kvm64 --net0 virtio,bridge=vmbr0 --scsihw virtio-scsi-single --boot order='scsi0' --scsi0 ZFS_RAID10:0,import-from=/ZFS_RAID10/OpenBSD/OpenBSD.raw

Alpine Linux avec démarrage UEFI

Logo Alpine Linux
  • Exécutez cette commande pour créer la VM avec le disque RAW et la démarrer :
root@proxmox:~# qm create 305 --sockets 1 --cores 2 --memory 2048 --name "Alpine-UEFI" --bios ovmf --efidisk0 ZFS_RAID10:1,efitype=4m,pre-enrolled-keys=1,size=1M --net0 virtio,bridge=vmbr0 --ide0 ZFS_RAID10:0,import-from=/ZFS_RAID10/Alpine/Alpine.raw

Optionnel : utilisez l’option pre-enrolled-keys=0 lors de la création de la VM pour désactiver directement le Secure Boot.

  • La VM peut ne pas démarrer et rester bloquée sur cet écran. Comme demandé, appuyez sur une touche pour accéder au Boot Manager Menu :
Échec d’amorçage UEFI d’une machine virtuelle Proxmox avec message 'Access Denied' et option pour entrer dans le Boot Manager.
  • Dans le Boot Manager Menu, accédez au Device Manager, sélectionnez Secure Boot Configuration puis désactivez le Secure Boot :
Désactivation de l'option Secure Boot dans le Device Manager UEFI d'une VM Proxmox via Secure Boot Configuration.
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Contact :

contact mail address