Retour : Microsoft Hyper-V

Principe

Une VM Hyper-V se compose de fichiers rangés dans les dossiers définis par l'hôte (voir Paramétrage de base) :

Fichier Rôle
<GUID>.vmcx Configuration de la VM
<GUID>.vmrs État d'exécution (mémoire lors d'une mise en veille)
*.vhdx Disque virtuel
*.avhdx Disque de différenciation d'un point de contrôle (snapshot)

Formats et types de disques

Format Taille maximale Remarque
VHDX 64 To Format actuel : résistant aux coupures de courant, secteurs de 4 Ko
VHD 2 To Ancien format, compatibilité uniquement
Type Principe Usage
--- --- ---
Dynamique Le fichier grossit au fil des écritures Cas général, économise l'espace
Fixe Toute la taille est allouée à la création Performances prévisibles (bases de données)
Différenciation Ne contient que les écarts avec un disque parent Points de contrôle, laboratoires à partir d'un disque modèle

⚠️ Ne jamais modifier ou déplacer un disque parent : tous ses disques de différenciation deviennent inutilisables.


Générations de VM

Choisie à la création, non modifiable ensuite :

Génération 1 Génération 2
Micrologiciel BIOS UEFI, démarrage sécurisé, TPM virtuel
Démarrage Contrôleur IDE Contrôleur SCSI
Disque de démarrage Jusqu'à 2 To (MBR) Jusqu'à 64 To (GPT)
Usage Systèmes anciens (32 bits, sans UEFI) Par défaut pour Windows récents et Linux récents

💡 Windows 11 exige une VM de génération 2 avec démarrage sécurisé et TPM virtuel activés (Paramètres de la VM → Sécurité).

💡 Pour un invité Linux en génération 2, choisir le modèle de démarrage sécurisé Autorité de certification UEFI Microsoft (Paramètres → Sécurité), sinon il ne démarre pas.


Opérations sur les disques

Via interface graphique
Via PowerShell
# Créer un disque dynamique de 60 Go et un disque fixe de 100 Go
New-VHD -Path "D:\Hyper-V\Disques\SRV01-data.vhdx" -SizeBytes 60GB -Dynamic
New-VHD -Path "D:\Hyper-V\Disques\SQL01-data.vhdx" -SizeBytes 100GB -Fixed

# Ajouter le disque à la VM (contrôleur SCSI, possible VM allumée)
Add-VMHardDiskDrive -VMName SRV01 -ControllerType SCSI -Path "D:\Hyper-V\Disques\SRV01-data.vhdx"

# Agrandir (possible à chaud sur le contrôleur SCSI), puis étendre le volume dans l'invité
Resize-VHD -Path "D:\Hyper-V\Disques\SRV01-data.vhdx" -SizeBytes 80GB

# Taille réelle du fichier / taille maximale
Get-VHD -Path "D:\Hyper-V\Disques\SRV01-data.vhdx" | Select-Object VhdType, FileSize, Size

# Convertir un disque dynamique en fixe (VM arrêtée)
Convert-VHD -Path "D:\Hyper-V\Disques\SRV01.vhdx" -DestinationPath "D:\Hyper-V\Disques\SRV01-fixe.vhdx" -VHDType Fixed

# Récupérer l'espace d'un disque dynamique (VM arrêtée)
Optimize-VHD -Path "D:\Hyper-V\Disques\SRV01.vhdx" -Mode Full

# Lister les disques de toutes les VM
Get-VM | Get-VMHardDiskDrive | Select-Object VMName, ControllerType, Path

Dans l'invité, étendre le volume après un agrandissement :

$taille = (Get-PartitionSupportedSize -DriveLetter E).SizeMax
Resize-Partition -DriveLetter E -Size $taille

Déplacer le stockage d'une VM

Déplacement du stockage à chaud, sans arrêter la VM :

Move-VMStorage -VMName SRV01 -DestinationStoragePath "E:\Hyper-V\SRV01"

Ou Gestionnaire Hyper-V → VM → Déplacer → Déplacer le stockage de l'ordinateur virtuel.


Où stocker les VM

Stockage Partagé entre hôtes Remarque
Disques locaux (NTFS / ReFS) Non ReFS accélère la création des disques fixes et la fusion des points de contrôle
Espaces de stockage (Storage Spaces) Non Miroir / parité logiciels sur des disques locaux
Partage SMB 3 (serveur de fichiers Windows) Oui Simple, sans SAN ; droits NTFS et de partage aux comptes ordinateurs des hôtes
LUN iSCSI / Fibre Channel Oui Avec un cluster : volumes partagés de cluster (CSV)
Storage Spaces Direct (S2D) Oui Hyperconvergé, Windows Server Datacenter

Connecter une LUN iSCSI

Start-Service MSiSCSI
Set-Service MSiSCSI -StartupType Automatic

New-IscsiTargetPortal -TargetPortalAddress 192.168.30.20
Get-IscsiTarget
Connect-IscsiTarget -NodeAddress "<IQN-de-la-cible>" -IsPersistent $true

# Initialiser et formater le nouveau disque
Get-Disk | Where-Object PartitionStyle -eq 'RAW' |
  Initialize-Disk -PartitionStyle GPT -PassThru |
  New-Partition -AssignDriveLetter -UseMaximumSize |
  Format-Volume -FileSystem ReFS -NewFileSystemLabel "VM-iSCSI"

💡 Placer le trafic iSCSI sur une carte et un VLAN dédiés, sans le faire passer par le commutateur virtuel des VM.


Surveiller l'espace

Avec des disques dynamiques, la somme des tailles maximales peut dépasser l'espace du volume. Surveiller l'espace libre réel :

Get-Volume | Select-Object DriveLetter, FileSystemLabel, SizeRemaining, Size

# Espace total réellement occupé par les disques des VM
Get-VM | Get-VMHardDiskDrive | Get-VHD |
  Measure-Object -Property FileSize -Sum

⚠️ Un volume plein met en pause les VM qui tentent d'écrire (état « Suspendu-critique »). Garder 20 à 30 % d'espace libre, en tenant compte des points de contrôle.


Étape suivante