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. 😉
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.
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.
user@debian:~$ ssh -l root 192.168.1.250
[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
[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
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.
[root@localhost:~] vim-cmd vmsvc/getallvms | grep -i W2K25
373 W2K25 [4T_RAID1] W2K25/W2K25.vmx windows2019srvNext_64Guest vmx-21
[root@localhost:~] vim-cmd vmsvc/power.shutdown 373
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.
user@debian:~$ ssh -l root 192.168.1.240
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
root@proxmox:~# scp -r root@192.168.1.250:/vmfs/volumes/4T_RAID1/W2K25/*vmdk /ZFS_RAID10/W2K25/
Le format VMDK n’est pas directement utilisable avec Proxmox, il faut donc le convertir au format RAW.
root@proxmox:~# cd /ZFS_RAID10/W2K25/
root@proxmox:~# qemu-img convert -p -f vmdk -O raw w2k25.vmdk w2k25.raw
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.
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).
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
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
root@host:~# systemctl restart networking
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
root@host:~# efibootmgr --create --disk /dev/sda --part 1 --label "debian" --loader "\EFI\debian\shimx64.efi"
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
root@host:~# systemctl restart networking
Pour cela, je me suis appuyé sur la source suivante : https://forum.proxmox.com/.
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.
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
root# mv /etc/hostname.OLD /etc/hostname.vio0
root# sh /etc/netstart
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
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.
Contact :