Chapitre 616 minIntermédiaire
Créer une VM sous Proxmox : Debian 13 et Windows Server 2025
Par Josselyn C., prof de BTS SIO. Mis à jour le .
À la fin de ce chapitre, tu sauras
- créer une VM Linux avec l'assistant et choisir chaque réglage ;
- installer Windows Server 2025 avec les pilotes VirtIO ;
- lire le fichier de configuration d'une VM ;
- créer et piloter des VM avec la commande
qm.
4 exercices corrigés
Créer une machine virtuelle sous Proxmox VE, c'est choisir son système, son matériel virtuel (processeur, mémoire, disque, carte réseau) et son stockage dans l'assistant Create VM, puis installer le système invité depuis une image ISO, exactement comme sur un serveur physique. Ce chapitre crée srv-journaux sous Debian 13, puis srv-ad2 sous Windows Server 2025 avec les pilotes VirtIO, explique chaque réglage et donne l'équivalent en ligne de commande.
Déposer les images ISO
Une VM s'installe depuis une image ISO rangée sur un stockage qui accepte le contenu ISO image : local, ou mieux le partage NFS truenas-nfs, visible par tous les nœuds. Sélectionne le stockage dans l'arbre, puis ISO Images :
- Upload envoie un fichier depuis ton poste ;
- Download from URL fait télécharger le fichier directement par l'hôte. Colle l'adresse de l'image, clique sur Query URL, et renseigne l'empreinte (Hash algorithm SHA-256 et Checksum) publiée par l'éditeur : Proxmox vérifie le fichier après le téléchargement.
Les images de Sorbier : debian-13.x.x-amd64-netinst.iso pour Debian 13, l'ISO d'évaluation de Windows Server 2025 (180 jours) pour les TP, ou l'ISO sous licence en production, et virtio-win.iso, les pilotes VirtIO pour Windows, publiés par le projet virtio-win (Fedora).
Créer une VM Debian 13, onglet par onglet
srv-journaux (VM 180, 192.168.10.180) recevra les journaux et la supervision. Clique sur Create VM en haut à droite.
| Onglet | Champ | Valeur | Explication |
|---|---|---|---|
| General | Node, VM ID, Name | pve1, 180, srv-journaux | Le VMID suit la convention de Sorbier |
| OS | ISO image | debian-13.x.x-amd64-netinst.iso | L'image d'installation |
| Guest OS | Linux, 6.x - 2.6 Kernel | Proxmox ajuste ses réglages par défaut au système | |
| System | Machine | q35 | Une carte mère virtuelle moderne (PCI Express) |
| BIOS | OVMF (UEFI), avec Add EFI Disk | Démarrage UEFI, comme un serveur actuel ; SeaBIOS reste possible pour un système ancien | |
| SCSI Controller | VirtIO SCSI single | Un contrôleur par disque, ce qui permet un fil d'entrées-sorties (IO thread) par disque | |
| Qemu Agent | Coché | Proxmox dialoguera avec l'agent installé dans Debian | |
| Disks | Bus/Device, Storage, Disk size | SCSI 0, truenas-nfs (format qcow2), 100 Go | Stockage partagé : la VM pourra migrer et être protégée par la haute disponibilité |
| Discard, IO thread, SSD emulation | Cochés | Rend l'espace libéré au stockage, accélère les entrées-sorties | |
| CPU | Sockets, Cores, Type | 1, 4, x86-64-v2-AES | 4 processeurs virtuels ; le type par défaut permet la migration entre hôtes de générations différentes |
| Memory | Memory (MiB) | 16384 | 16 Gio ; dans Advanced, Ballooning Device reste coché |
| Network | Bridge, VLAN Tag, Model | vmbr0, 20, VirtIO (paravirtualized) | Le VLAN des serveurs |
| Firewall | Coché | Le pare-feu de Proxmox pourra filtrer cette carte | |
| Confirm | Start after created | Coché | Démarre la VM sur l'installateur |
Ouvre ensuite Console (noVNC, dans le navigateur) et installe Debian normalement : adresse fixe 192.168.10.180/28, passerelle 192.168.10.190, DNS 192.168.10.177, domaine ad.sorbier.example. Sans environnement de bureau : un serveur n'en a pas besoin, et il consomme de la mémoire et des mises à jour pour rien.
Après l'installation, installe l'agent invité :
apt update
apt install qemu-guest-agent
systemctl start qemu-guest-agent
L'onglet Summary de la VM affiche alors ses adresses IP, et les boutons Shutdown et Reboot passent par l'agent. Le service démarre ensuite tout seul à chaque démarrage, dès que l'option QEMU Guest Agent est active sur la VM.
Les réglages qui comptent
Les processeurs virtuels (vCPU). Chaque cœur virtuel est un fil d'exécution que l'hyperviseur place sur un cœur physique quand la VM en a besoin. Donne à une VM le nombre de vCPU dont elle a réellement besoin, pas plus : une VM à 16 vCPU sur un hôte de 16 cœurs doit attendre que 16 cœurs soient libres en même temps pour avancer, ce qui la ralentit. Le type de processeur compte aussi :
| Type | Ce que voit la VM | Conséquence |
|---|---|---|
| x86-64-v2-AES (par défaut) | Un jeu d'instructions commun aux processeurs récents | Migration possible entre hôtes de générations différentes |
| x86-64-v3, v4 | Des instructions plus récentes (AVX2…) | Plus rapide pour certains logiciels, exige des hôtes récents |
| host | Exactement le processeur de l'hôte | Performances maximales, mais migration à chaud seulement vers un hôte au processeur identique |
La mémoire et le ballooning. La mémoire d'une VM est réservée sur l'hôte quand la VM l'utilise. Avec le ballooning (le pilote virtio-balloon), tu indiques une mémoire maximale et une mémoire minimale (Minimum memory) : quand l'hôte manque de mémoire, Proxmox reprend progressivement à la VM ce qu'elle n'utilise pas, jusqu'au minimum. Le mécanisme KSM (Kernel Samepage Merging) fusionne aussi les pages identiques entre VM, utile quand plusieurs VM ont le même système. Ces deux mécanismes amortissent un pic ; ils ne remplacent pas un bon dimensionnement (chapitre 12).
Le disque. Laisse le cache par défaut (Default (No cache)), le plus sûr en cas de coupure. Discard permet au système invité de signaler les blocs libérés (la commande fstrim sous Linux, l'optimisation des lecteurs sous Windows), pour qu'un stockage à allocation dynamique les récupère.
Le démarrage automatique. Dans Options : Start at boot démarre la VM avec l'hôte, et Start/Shutdown order fixe l'ordre et le délai. Chez Sorbier, srv-ad démarre en premier (ordre 1, puis 120 secondes d'attente) : les autres serveurs ont besoin du DNS et de l'annuaire en démarrant. L'option Protection empêche de supprimer la VM ou ses disques par erreur.
qm set 177 --onboot 1 --startup order=1,up=120
qm set 177 --protection 1
Windows Server 2025 et les pilotes VirtIO
Windows ne contient pas les pilotes des périphériques VirtIO. Sans eux, l'installateur ne voit pas le disque ; avec, Windows est nettement plus rapide qu'avec des périphériques émulés. Pour srv-ad2 (VM 181, 192.168.10.181), les réglages qui diffèrent de la VM Debian :
| Onglet | Champ | Valeur |
|---|---|---|
| OS | Guest OS | Microsoft Windows, 11/2022/2025 |
| Add additional drive for VirtIO drivers | Coché, avec l'image virtio-win.iso | |
| System | Machine, BIOS | q35, OVMF (UEFI) avec Add EFI Disk et Pre-Enroll keys (démarrage sécurisé) |
| Add TPM, Version | Coché, v2.0 | |
| Disks | Bus/Device, Disk size | SCSI 0, 80 Go, avec Discard, IO thread et SSD emulation |
| CPU | Cores | 2 |
| Memory | Memory (MiB) | 4096 |
| Network | Model, VLAN Tag | VirtIO (paravirtualized), 20 |
Pendant l'installation de Windows Server 2025 :
- À l'écran de choix de l'emplacement d'installation, aucun disque n'apparaît. Clique sur Load driver, parcours le lecteur de l'ISO VirtIO et choisis le dossier
vioscsi\2k25\amd64. Le pilote Red Hat VirtIO SCSI pass-through controller s'installe et le disque apparaît. - Termine l'installation.
- Une fois Windows démarré, ouvre le lecteur de l'ISO VirtIO et lance
virtio-win-guest-tools.exe: il installe tous les pilotes (carte réseau NetKVM, ballooning, affichage…) et le QEMU Guest Agent. - Configure l'adresse IP, le nom et le DNS, puis joins le serveur au domaine et promeus-le contrôleur de domaine en suivant le cours Windows Server.
Le fichier de configuration d'une VM
Toute la configuration d'une VM tient dans un fichier texte, /etc/pve/qemu-server/<VMID>.conf, répliqué sur tous les nœuds du cluster. Celui de srv-ad2 :
agent: 1
bios: ovmf
boot: order=scsi0;ide2;net0
cores: 2
cpu: x86-64-v2-AES
efidisk0: truenas-nfs:181/vm-181-disk-0.qcow2,efitype=4m,ms-cert=2023k,pre-enrolled-keys=1,size=528K
ide0: truenas-nfs:iso/virtio-win.iso,media=cdrom
ide2: truenas-nfs:iso/WindowsServer2025.iso,media=cdrom
machine: pc-q35-11.0
memory: 4096
name: srv-ad2
net0: virtio=BC:24:11:5E:2A:81,bridge=vmbr0,firewall=1,tag=20
onboot: 1
ostype: win11
scsi0: truenas-nfs:181/vm-181-disk-1.qcow2,discard=on,iothread=1,size=80G,ssd=1
scsihw: virtio-scsi-single
smbios1: uuid=7d3f0f4e-2b8e-4c39-9a51-5f6f2f0d1c81
tpmstate0: truenas-nfs:181/vm-181-disk-2.raw,size=4M,version=v2.0
vmgenid: 1c6b2a7e-8d4f-4f0e-b3a2-6e9d5c4b2a10
Lis-le comme une fiche matérielle : cores et memory pour les ressources, scsi0 pour le disque, net0 pour la carte réseau avec son adresse MAC et son VLAN, vmgenid pour l'identifiant de génération. Les adresses MAC des VM Proxmox commencent par BC:24:11, le préfixe réservé à l'éditeur. Pour un invité Windows, Proxmox fige la version de la carte mère virtuelle (pc-q35-11.0, la version de QEMU de l'hôte au moment de la création) : Windows supporte mal que son matériel change entre deux démarrages. On ne modifie pas ce fichier à la main pendant que la VM tourne : on passe par l'interface ou par qm set.
Créer les mêmes VM en ligne de commande
L'assistant n'est qu'une façade : les mêmes VM se créent avec qm create, ce qui permet de les scripter et de les documenter. La notation stockage:taille crée un nouveau disque de cette taille en Gio.
# srv-journaux : Debian 13, 4 vCPU, 16 Gio, 100 Go sur le NFS de TrueNAS
qm create 180 --name srv-journaux --ostype l26 --machine q35 \
--bios ovmf --efidisk0 truenas-nfs:1,format=qcow2,efitype=4m,pre-enrolled-keys=1 \
--cpu x86-64-v2-AES --cores 4 --memory 16384 \
--scsihw virtio-scsi-single \
--scsi0 truenas-nfs:100,format=qcow2,discard=on,iothread=1,ssd=1 \
--ide2 truenas-nfs:iso/debian-13.x.x-amd64-netinst.iso,media=cdrom \
--net0 virtio,bridge=vmbr0,tag=20,firewall=1 \
--agent enabled=1 --boot 'order=scsi0;ide2' --onboot 1
# srv-ad2 : Windows Server 2025, avec TPM et le lecteur des pilotes VirtIO
qm create 181 --name srv-ad2 --ostype win11 --machine q35 \
--bios ovmf --efidisk0 truenas-nfs:1,format=qcow2,efitype=4m,pre-enrolled-keys=1 \
--tpmstate0 truenas-nfs:1,version=v2.0 \
--cpu x86-64-v2-AES --cores 2 --memory 4096 \
--scsihw virtio-scsi-single \
--scsi0 truenas-nfs:80,format=qcow2,discard=on,iothread=1,ssd=1 \
--ide2 truenas-nfs:iso/WindowsServer2025.iso,media=cdrom \
--ide0 truenas-nfs:iso/virtio-win.iso,media=cdrom \
--net0 virtio,bridge=vmbr0,tag=20,firewall=1 \
--agent enabled=1 --boot 'order=scsi0;ide2' --onboot 1
Remplace le nom des ISO par celui des fichiers que tu as déposés. Les commandes du quotidien :
| Commande | Effet |
|---|---|
qm list | Les VM du nœud, leur état, leur mémoire |
qm start 180 | Démarre la VM |
qm shutdown 180 | Arrêt propre, demandé au système invité (par l'agent ou par ACPI) |
qm stop 180 | Coupure immédiate, comme débrancher la prise : à éviter sauf VM bloquée |
qm reboot 180 | Redémarrage propre |
qm config 180 | Affiche la configuration |
qm set 180 --memory 8192 | Change un réglage |
qm disk resize 180 scsi0 +20G | Agrandit le disque ; il faut ensuite agrandir la partition dans l'invité |
qm terminal 180 | Console série (pour une VM configurée avec --serial0 socket) |
qm destroy 180 --purge | Supprime la VM, ses disques et ses références (sauvegardes planifiées, haute disponibilité) |
Les consoles
L'onglet Console ouvre noVNC, l'écran de la VM dans le navigateur. Deux autres consoles existent : SPICE, plus fluide pour un bureau graphique, avec le client virt-viewer sur le poste (il faut choisir l'affichage SPICE dans Hardware > Display), et xterm.js, un terminal texte pour les VM qui ont une console série, comme les modèles cloud-init du chapitre 8.
Exercices
Exercice 1 sur 4 Remplir l'assistant pour srv-web Réussi À revoir
Sorbier crée srv-web (VM 225) : Debian 13, serveur web de suivi des livraisons dans la DMZ (192.168.10.225/28, passerelle 192.168.10.238), 2 vCPU, 4 Gio de mémoire, 40 Go de disque sur le stockage partagé. Donne la valeur des champs VM ID, Name, Bridge, VLAN Tag, Model, Cores, Memory (MiB), Storage et Disk size, puis la passerelle à saisir pendant l'installation de Debian.
Voir la réponseMasquer la réponse de l'exercice 1
VM ID 225, Name srv-web, Bridge vmbr0, VLAN Tag 60 (la DMZ), Model VirtIO (paravirtualized), Cores 2, Memory (MiB) 4096, Storage truenas-nfs, Disk size 40. Pendant l'installation, la passerelle est 192.168.10.238, l'adresse du pare-feu dans la DMZ : la DMZ n'a pas de SVI sur le switch.
Tu avais trouvé ?
Exercice 2 sur 4 Windows ne voit pas le disque Réussi À revoir
Pendant l'installation de Windows Server 2025 dans une VM Proxmox, l'écran de choix de l'emplacement est vide. La VM a un disque SCSI 0 sur un contrôleur VirtIO SCSI single.
- Pourquoi Windows ne voit-il pas le disque ?
- Que fais-tu, précisément ?
- Que reste-t-il à installer une fois Windows démarré ?
Voir la réponseMasquer la réponse de l'exercice 2
- Windows n'a pas de pilote pour le contrôleur VirtIO SCSI, un périphérique paravirtualisé.
- Vérifie que l'ISO
virtio-win.isoest montée dans un second lecteur CD. Clique sur Load driver, parcours ce lecteur, choisis le dossiervioscsi\2k25\amd64et installe le pilote Red Hat VirtIO SCSI pass-through controller : le disque apparaît. - Les autres pilotes (réseau NetKVM, ballooning…) et l'agent invité : lance
virtio-win-guest-tools.exedepuis l'ISO VirtIO.
Tu avais trouvé ?
Exercice 3 sur 4 Le bon type de processeur Réussi À revoir
Le cluster de Sorbier a deux hôtes récents identiques et un troisième, plus ancien, d'une autre génération de processeur. Un technicien a mis le type host sur toutes les VM « pour aller plus vite ». Quel problème va-t-il rencontrer, et quand ? Que conseilles-tu ?
Voir la réponseMasquer la réponse de l'exercice 3
Avec le type host, la VM voit exactement les instructions du processeur de son hôte. La migration à chaud vers l'hôte plus ancien échouera ou fera planter la VM, puisque ce processeur n'a pas toutes ces instructions ; la haute disponibilité aura le même problème au moment de redémarrer la VM sur ce nœud. Il faut un type commun à tous les nœuds : le type par défaut x86-64-v2-AES, ou x86-64-v3 si les trois processeurs le gèrent. On garde host pour une VM qui ne migre jamais.
Tu avais trouvé ?
Exercice 4 sur 4 Lire une configuration Réussi À revoir
Voici un extrait de /etc/pve/qemu-server/179.conf. Donne, pour srv-gestion, le nombre de vCPU, la mémoire maximale et minimale, le VLAN, le stockage et la taille du disque, et dis si elle redémarre avec l'hôte.
balloon: 4096
cores: 4
memory: 8192
name: srv-gestion
net0: virtio=BC:24:11:3A:7C:09,bridge=vmbr0,firewall=1,tag=20
onboot: 1
scsi0: truenas-nfs:179/vm-179-disk-0.qcow2,discard=on,iothread=1,size=100G
startup: order=3,up=30
Voir la réponseMasquer la réponse de l'exercice 4
4 vCPU ; 8 192 Mio (8 Gio) au maximum et 4 096 Mio (4 Gio) au minimum grâce au ballooning ; VLAN 20 ; disque de 100 Go en qcow2 sur truenas-nfs ; elle démarre avec l'hôte (onboot: 1), en troisième position, 30 secondes avant la VM suivante.
Tu avais trouvé ?