Guide étape par étape : comment migrer des machines virtuelles de VMware ESXi vers Proxmox VE 8.4
- Mise à jour le 27 mai 2025

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 : là.
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. 😉
Ce guide vous accompagnera tout au long du processus de migration, que ce soit via la ligne de commande (CLI) ou l’interface graphique de Proxmox (GUI), afin que vous puissiez choisir la méthode qui correspond le mieux à vos préférences.
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.

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 :

- Depuis VCSA, sélectionnez l’hôte ESXi, puis allez dans Configure > Services et sélectionnez le service SSH. Enfin, cliquez sur Start :

- 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/

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
- 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.
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
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) :

- Dans le Boot Manager Menu, accédez au Boot Maintenance Manager puis sélectionnez Boot From File :

- Accédez à EFI > debian, puis sélectionnez shimx64.efi :

- La machine virtuelle devrait maintenant démarrer correctement :

- 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
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
- 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 :

- Dans le Boot Manager Menu, accédez au Device Manager, sélectionnez Secure Boot Configuration puis désactivez le Secure Boot :

- 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
- 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
- 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 :

- Dans le Boot Manager Menu, accédez au Device Manager, sélectionnez Secure Boot Configuration puis désactivez le Secure Boot :

Importation via l'interface graphique avec l'assistant Proxmox VE
Peu de temps après avoir rédigé cet article, j’ai découvert qu’un outil officiel de Proxmox permettait de migrer des VMs depuis VMware ESXi directement via l’interface graphique 😅. Je vais donc vous montrer ici comment importer des VMs depuis VMware ESXi en utilisant cet assistant.
- L’outil étant déjà intégré, il n’y a rien à installer. Il suffit simplement d’aller dans le menu Datacenter > Storage, puis de cliquer sur Add > ESXi :

- Dans la fenêtre Ajouter ESXi, saisissez les informations suivantes :
- ID : nom de votre choix pour identifier le datastore
- Serveur : nom ou adresse IP de l’hôte ESXi
- Nom d’utilisateur : identifiant pour l’hôte ESXi
- Mot de passe : mot de passe associé à l’utilisateur

- Le stockage ESXi devrait maintenant apparaître :

- Depuis le menu de stockage ESXi, cliquez sur l’onglet Machines virtuelles. Sélectionnez la VM que vous souhaitez importer, puis cliquez sur Importer :

- Dans la fenêtre Importer une machine, modifiez les champs pré-remplis si nécessaire, puis validez en cliquant sur Importer :

- Démarrez la VM importée :

Pour les VM Windows, il est recommandé d’installer les drivers VirtIO pour de meilleures performances (voir : ici) et de convertir le disque en mode SCSI : https://www.proxmox.com/.
Conclusion
Nous avons donc vu comment importer des machines virtuelles depuis VMware ESXi, à la fois via la ligne de commande et grâce à l’assistant d’importation de Proxmox VE. Vous n'avez plus d'excuse pour ne pas dire adieu à Broadcom! 👋