Machines virtuelles et modèles Hyper-V
- 1. Machine virtuelle
- 2. Création, lancement et destruction d'une machine virtuelle
- 3. Disques virtuels
- 4. Modèles de machines virtuelles (Template)
- 5. Instantannés (Snapshots / Checkpoints)
1. Machine virtuelle
Une machine virtuelle est principalement composée de deux types de fichiers :
- Un fichier de définition formelle de la machine virtuelle qui identifie ses composants (virtuels), une sorte de défintion de carte mère (CPU, RAM, bus divers, périphériques d'entrée et de sortie, ...).
- Un ou plusieurs fichiers contenant les données hébergées par la VM (OS et applications) représentant des disques durs virtuels (sous Hyper-V des fichiers
.VHD
ou.VHDX
)
1.1. Fichier de configuration
Le fichier de configuration de la machine virtuelle n'est pas directement accessible en Hyper-V 2016. Il s'agit d'instancier une copie de ce fichier et de le lire avec select
. L'extension du fichier de configuration est .vmcx
$tempVM = (Compare-VM -Copy -Path 'C:\ProgramData\Microsoft\Windows\Hyper-V\hy1\Virtual Machines\2ACE7D17-5281-4BB3-
B063-28F27F9A3B70.vmcx' -GenerateNewId).VM
$tempVM | select *
2. Création, lancement et destruction d'une machine virtuelle
Inspiration : https://msdn.microsoft.com/en-us/virtualization/hyperv_on_windows/quick_start/walkthrough_create_vm et https://technet.microsoft.com/en-us/windows-server-docs/compute/hyper-v/get-started/create-a-virtual-machine-in-hyper-v
2.1. Création d'une machine virtuelle
Script Powershell ISE
#
#Set VM Name, Switch Name, and Installation Media Path.
$VMName = 'TESTVM'
$Switch = 'NatSwitch'
$ISO = 'C:\Users\Administrator\Downloads\14393.0.160715-1616.RS1_RELEASE_SERVER_EVAL_X64FRE_EN-US.ISO'
$VHD = 'C:\Users\Administrator\Documents\'
$VHDSize = 40GB
$RAM = 4GB
#Create New Virtual Machine
New-VM -Name $VMName -MemoryStartupBytes 4GB -Generation 2 -NewVHDPath $VHD"$VMName\$VMName.vhdx" -NewVHDSizeBytes 40GB -Path $VHD"$VMName" -SwitchName $Switch
#Add DVD Drive to Virtual Machine
Add-VMScsiController -VMName $VMName
Add-VMDvdDrive -VMName $VMName -ControllerNumber 1 -ControllerLocation 0 -Path $ISO
#Mount Installation Media
$DVDDrive = Get-VMDvdDrive -VMName $VMName
# Configure Virtual Machine to Boot from DVD
Set-VMFirmware -VMName $VMName -FirstBootDevice $DVDDrive
2.2. Lancement de la machine virtuelle
Start-VM -Name <Name>
VMConnect.exe
Destruction d'une machine virtuelle
#
$VMname = 'TESTVM'
GET-VM –Name $VMname | GET-VMHardDiskDrive | Foreach { STOP-VM –Name $_.VMname; Remove-item –path $_.Path; REMOVE-VM –Name $_.VMname -Force }
2.3. Installation automatisées des systèmes d'exploitation
Pour préconfigurer et automatiser l'installation d'un système Windows, on devrait s'intéresser aux solutions Assessment and Deployment Kit (ADK), Microsoft Deployment Toolkit (MDT). La création d'un fichier Autounattend.xml
/ Unattend.xml
disponible sur une clé USB répondra aux questions d'installation. On trouvera sur ce site un générateur de fichier de réponses : http://windowsafg.no-ip.org/.
Pour le déploiement des machines Linux, on utilisera volontiers un fichier de configuration de type KickStart.
3. Disques virtuels
Pour connaître les disques VHD attachés à une VM
Get-VM –VMName <VM> | Select-Object VMId | Get-VHD
- Ajouter un DVD
- Physical disk or pass-through disk ?
- Ajouter un LUN
- VHD/VHDX
- Types de disques
- Convertir des disques
- Créer un disque et l'ajouter à une VM
- Redimensionnement de disques VHD
- Storage Live Migration
4. Modèles de machines virtuelles (Template)
Un modèle n'est jamais qu'une machine virtuelle qui sert de modèle. Bien qu'elle soit elle-même opérationnelle, ce sont ses copies qui sont déployées en production.
On propose ici un début de procédure à partir d'une machine virtuelle servant de modèle et déjà préparée (sysprep
).
$VMNAME = "DC01"
$VMPATH = "C:\users\Administrator\Documents\"
$TEMPLATE_PATH = "C:\users\Administrator\Documents\w2016-template\"
$TEMPLATE_VHD = "w2016-template.vhdx"
$SWITCH = "VmNAT"
# Create a new VM without disks (Generation 2 as the original machine)
New-VM -MemoryStartupBytes 4GB -VMName $VMNAME -Generation 2 -NoVHD -Path "$VMPATH$VMNAME" -SwitchName $SWITCH
# Copy de template disk into the VM location
Copy-Item -path $TEMPLATE_PATH$TEMPLATE_VHD -Destination "$VMPATH$VMNAME"
# Rename the copied virtual hard disk
Rename-Item -NewName "$VMNAME.vhdx" -Path "$VMPATH$VMNAME\$TEMPLATE_VHD"
# Add the disk to the VM
Add-VMHardDiskDrive -VMName $VMNAME -ControllerType SCSI -ControllerNumber 0 -Path "$VMPATH$VMNAME\$VMNAME.vdhx"
Disques Differencing
Un disque Differencing correspond à l'usage habituel d'un 'clone lié'. Le disque copié est le différentiel du disque original. On peut parler de disque parent et de disques enfants. Si c'est utile en lab, on déconseillera son usage en production car on imagine une faiblesse de performance lors d'accès concurrent sur un point unique de rupture sur l'image modèle.
New-VHD -Differencing -ParentPath E:\VHDStore\Template-2012R2.vhdx
-Path D:\Storage\VM-01 -SizeBytes 40GB