Pilotes VirtIO Windows et QEMU Guest Agent¶
Objectif. Installer les pilotes VirtIO et le QEMU Guest Agent dans une VM Windows (VMID 101), puis passer son disque système sur VirtIO SCSI et sa carte réseau sur VirtIO, sans écran bleu INACCESSIBLE_BOOT_DEVICE.
Pourquoi. Les périphériques paravirtualisés VirtIO offrent les meilleures performances disque et réseau. L'agent invité permet l'arrêt propre, le gel du système de fichiers pendant les sauvegardes et l'affichage des IP dans la GUI. C'est l'équivalent des VMware Tools.
Avant de toucher la prod
- VM sauvegardée sur
pbs-localou snapshot pris (qm snapshot 101 avant-virtio). - ISO virtio-win téléchargée depuis le dépôt Fedora virtio-win et déposée sur un stockage ISO. Préférez la version indiquée comme sans problème connu sur la page Proxmox.
- Vieux Windows (2012 R2, 7) : vérifiez que la version de l'ISO contient encore ses pilotes ; sinon, prenez une version plus ancienne.
- Configuration IP de la carte actuelle notée (
ipconfig /all). - Fenêtre de maintenance : deux redémarrages de la VM sont nécessaires.
Étapes¶
1. Installer les pilotes et l'agent dans Windows¶
- VM 101 → Hardware → Add → CD/DVD Drive → choisir l'ISO
virtio-win-<version>.iso. - Dans Windows, ouvrir le lecteur CD et lancer
virtio-win-gt-x64(pilotes) puisvirtio-win-guest-tools(agent invité et pilotes). Accepter les composants par défaut. - VM 101 → Options → QEMU Guest Agent → cocher Use QEMU Guest Agent. Laisser Freeze/thaw guest filesystems on backup coché.
- Arrêter puis démarrer la VM (Shutdown, puis Start) : un simple redémarrage depuis Windows ne suffit pas pour activer le canal de l'agent.
2. Passer le disque système sur VirtIO SCSI (méthode du disque témoin)¶
Windows ne charge un pilote de démarrage que s'il a déjà vu le contrôleur correspondant. On lui présente donc d'abord un petit disque sur VirtIO SCSI.
- VM 101 → Hardware → SCSI Controller → Edit → VirtIO SCSI single.
- Add → Hard Disk → bus SCSI, 1 Go, sur
ceph-vm(oulocal-zfs). - Démarrer Windows. Dans Gestion des disques, vérifier que le disque de 1 Go apparaît. Le pilote
vioscsiest actif. - Arrêter la VM. Détacher puis supprimer le disque de 1 Go (Detach puis Remove sur l'entrée Unused Disk).
- Sélectionner le disque système (
sata0ouide0) → Detach. Il devient Unused Disk 0. - Double-cliquer sur Unused Disk 0 → bus SCSI, numéro 0, cocher Discard et IO thread → Add.
- Options → Boot Order → placer
scsi0en premier et le cocher. - Démarrer la VM.
qm set 101 --scsihw virtio-scsi-single --scsi1 ceph-vm:1 # disque témoin 1 Go
qm start 101 # vérifier le disque dans Windows, puis arrêter
qm shutdown 101
qm set 101 --delete scsi1 # devient unusedN
qm config 101 | grep -E '^(sata0|ide0|unused)'
qm set 101 --delete sata0 # le disque système devient unused0
qm set 101 --scsi0 ceph-vm:vm-101-disk-0,discard=on,iothread=1
qm set 101 --boot order=scsi0
qm start 101
Supprimez ensuite le volume du disque témoin resté en unusedN depuis la GUI (Remove), après avoir vérifié son nom dans qm config 101.
3. Passer la carte réseau sur VirtIO¶
- VM 101 → Hardware → Network Device → Edit → Model : VirtIO (paravirtualized). Conserver la MAC si une réservation DHCP ou une licence en dépend. CLI :
qm set 101 --net0 virtio=<MAC>,bridge=vmbr0,tag=<vlan>. - Au démarrage, Windows voit une nouvelle carte « Red Hat VirtIO Ethernet Adapter » : saisir à nouveau l'IP fixe notée.
4. VMs Linux¶
Les noyaux Linux récents intègrent VirtIO. Installez seulement l'agent :
apt install qemu-guest-agent # Debian / Ubuntu
dnf install qemu-guest-agent # RHEL / Rocky / Alma
systemctl start qemu-guest-agent
Puis activez l'option QEMU Guest Agent de la VM et faites un arrêt / démarrage complet.
Vérifications
Sortie attendue :agent: enabled=1 (ou agent: 1), scsihw: virtio-scsi-single, scsi0: ceph-vm:vm-101-disk-0,discard=on,iothread=1,…, net0: virtio=…, boot: order=scsi0.
Renvoie un JSON avec la version de Windows. Dans la GUI, VM 101 → Summary affiche les adresses IP. Dans Windows, le Gestionnaire de périphériques ne montre aucun périphérique inconnu, et le service « QEMU Guest Agent » est démarré.
Rollback
Écran bleu au démarrage après l'étape 2 : arrêter la VM, détacher scsi0, le rattacher en sata0, remettre boot: order=sata0, redémarrer, puis reprendre l'étape 2 depuis le disque témoin. En dernier recours : qm rollback 101 avant-virtio, puis supprimer le snapshot une fois la VM validée (qm delsnapshot 101 avant-virtio).
Pièges vus en support
- Changer directement
sata0enscsi0sans disque témoin : écran bleuINACCESSIBLE_BOOT_DEVICE. - Agent coché dans Proxmox mais non installé dans Windows : les arrêts et sauvegardes attendent l'agent jusqu'au délai d'expiration.
- Agent installé mais VM seulement redémarrée depuis Windows : le canal série virtio n'existe pas encore, l'agent ne répond pas.
- SQL Server et gel du système de fichiers : en cas de conflit VSS, corrigez la configuration de l'agent dans l'invité plutôt que de décocher le gel, qui rend les sauvegardes incohérentes.
- Ancienne carte réseau fantôme gardant l'IP fixe : Windows refuse l'IP sur la nouvelle carte. Supprimez la carte masquée dans le Gestionnaire de périphériques (Afficher les périphériques cachés).
Quand ouvrir un ticket iTop
Écran bleu persistant après rollback en SATA, VM critique qui ne démarre plus : P2. Agent qui ne répond pas malgré installation et arrêt / démarrage complet : P3. Joignez qm config 101, la version de l'ISO virtio-win et la version de Windows.
Pour aller plus loin : Créer une VM optimisée · Windows VirtIO Drivers · Qemu-guest-agent