Déploiement des hôtes Hyper-V

1. Plateformes disponibles et licences

Microsoft Hyper-V est disponible avec :

  • Windows
  • Windows Server avec ou sans GUI (Core)
  • Hyper-V Server

Avec Windows, on dispose d'une solution "Workstation" aux fonctionnalités HA limitées (Cluster, Live Migration).

On connaît des limites en nombre de machine virtuelles licenciées avec Windows Server Standard.

Hyper-V Server est gratuit mais ses machines doivent être sous licence.

  • Windows 10 : 14393.0.160715-1616.RS1_RELEASE_CLIENTENTERPRISEEVAL_OEMRET_X64FRE_EN-US.ISO
  • Windows 2016 Server : 14393.0.160715-1616.RS1_RELEASE_SERVER_EVAL_X64FRE_EN-US.ISO
  • Windows 2016 Hyper-V : 14393.0.160916-1106.RS1_REFRESH_SERVERHYPERCORE_OEM_X64FRE_EN-US.ISO

Versions 2016

Source : http://www.thewindowsclub.com/windows-server-2016-editions

Comparaison des versions

Source : http://www.thewindowsclub.com/windows-server-2016-editions

Pour plus de détail sur le licensing Windows 2016 Server / Hyper-V 2016 Server

2. Déploiement à partir de Windows Server avec GUI

Source : https://technet.microsoft.com/fr-fr/windows-server-docs/compute/hyper-v/get-started/install-the-hyper-v-role-on-windows-server

  1. Dans Gestionnaire de serveur, dans le menu Gérer, cliquez sur Ajouter des rôles et fonctionnalités.
  2. Dans la page Avant de commencer, vérifiez que votre serveur de destination et environnement réseau sont préparés pour le rôle et la fonctionnalité que vous voulez installer. Cliquez sur Suivant.
  3. Dans la page Sélectionner le type d’installation, cliquez sur Installation basée sur un rôle ou une fonctionnalité, puis sur Suivant.
  4. Dans la page Sélectionner le serveur de destination, sélectionnez un serveur dans le pool de serveurs, puis cliquez sur Suivant.
  5. Dans la page Sélectionner des rôles de serveurs, sélectionnez Hyper-V.
  6. Pour ajouter les outils avec lesquels vous créez et gérez des ordinateurs virtuels, cliquez sur Ajouter des fonctionnalités.
  7. Dans la page Fonctionnalités, cliquez sur Suivant.
  8. Dans les pages Créer des commutateurs virtuels, Migration d’ordinateur virtuel et Emplacements pardéfaut, sélectionnez les options appropriées.
  9. Dans la page Confirmer les sélections d’installation, sélectionnez Redémarrer automatiquement le serveur de destination, si nécessaire, puis cliquez sur Installer.
  10. Fin de l’installation, vérifiez que Hyper-V a été installée correctement. Ouvrez le tous les serveurs page dans le Gestionnaire de serveur et sélectionnez un serveur sur lequel vous avez installé Hyper-V. Vérifier le des rôles et fonctionnalités vignette sur la page pour le serveur sélectionné.

3. Déploiement avec Windows Server Core

Pour installer Hyper-V sur un serveur auquel vous êtes connecté à distance, exécutez la commande suivante et remplacez -ComputerName <computer_name> avec le nom du serveur.

Install-WindowsFeature -Name Hyper-V -ComputerName <computer_name> -IncludeManagementTools -Restart

Si vous êtes connecté localement sur le serveur, exécutez la commande sans -ComputerName <computer_name>.

Après le redémarrage du serveur, vous pouvez voir que le rôle Hyper-V est installé et voir quels sont les autres rôles et fonctionnalités installés en exécutant la commande suivante.

Get-WindowsFeature -ComputerName <computer_name>

Si vous êtes connecté localement sur le serveur, exécutez la commande sans -ComputerName <computer_name>.

4. Limites des hôtes

Source : https://technet.microsoft.com/fr-fr/windows-server-docs/compute/hyper-v/plan/plan-for-hyper-v-scalability-in-windows-server-2016

Ces valeurs maximales s’appliquent à chaque hôte Hyper-V.

Composant Maximum Remarques
Processeurs logiques 512 Ces deux éléments doivent être activés dans le microprogramme : Virtualisation à assistance matérielle -Prévention de l’exécution des données appliquée par matériel (DEP) L’hôte du système d’exploitation (partition racine) ne verront maximales 320 processeurs logiques
Memory 24 TO Aucune.
Associations de cartes réseau (cartes) Aucune limite imposée par Hyper-V. Pour plus d’informations, consultezcartes.
Cartes réseau physiques Aucune limite imposée par Hyper-V. Aucune.
Ordinateurs virtuels en cours d’exécution par serveur 1024 Aucune.
Stockage Limité par ce qui est pris en charge par le système d’exploitation hôte.Aucune limite imposée par Hyper-V. Remarque :Microsoft prend en charge le stockage connecté au réseau (NAS) lors de l’utilisation de SMB 3.0.Le stockage NFS n’est pas pris en charge.
Ports de commutateur réseau virtuel par serveur Varie ; aucune limite imposée par Hyper-V. La limite pratique dépend des ressources informatiques disponibles.
Processeurs virtuels par processeur logique Aucun ratio imposé par Hyper-V. Aucune.
Processeurs virtuels par serveur 2 048 Aucune.
Réseaux de zone de stockage virtuel (SAN) Aucune limite imposée par Hyper-V. Aucune.
Commutateurs virtuels Varie ; aucune limite imposée par Hyper-V. La limite pratique dépend des ressources informatiques disponibles.

5. Exercice d'installation d'une machine virtuelle

Installation d'une première machine virtuelle Centos 7, Windows 10 ou Windows 2016 Server avec le Gestionnaire graphique Hyper-V. Découverte des fonctionnalité, notamment du réseau et des paramètres de mémoire.

6. Exercice de gestion des VM en powershell

Source : https://msdn.microsoft.com/en-us/virtualization/hyperv_on_windows/quick_start/walkthrough_powershell

Après avoir créé une machine virtuelle en interface graphique avec le Gestionnaire Hyper-V.

Aide Powershell

Get-Help Get-VM
NAME
    Get-VM

SYNOPSIS
    Gets the virtual machines from one or more Hyper-V hosts.


SYNTAX
    Get-VM [[-Name] <String[]>] [-CimSession <Microsoft.Management.Infrastructure.CimSession[]>] [-ComputerName <String[]>] [-Credential
    <System.Management.Automation.PSCredential[]>] [<CommonParameters>]

    Get-VM [[-Id] <Guid]>] [-CimSession <Microsoft.Management.Infrastructure.CimSession[]>] [-ComputerName <String[]>] [-Credential
    <System.Management.Automation.PSCredential[]>] [<CommonParameters>]

    Get-VM [-ClusterObject] <PSObject> [<CommonParameters>]


DESCRIPTION
    The Get-VM cmdlet gets the virtual machines from one or more Hyper-V hosts.


RELATED LINKS
    Online Version: http://go.microsoft.com/fwlink/?LinkID=306845

REMARKS
    To see the examples, type: "get-help Get-VM -examples".
    For more information, type: "get-help Get-VM -detailed".
    For technical information, type: "get-help Get-VM -full".
    For online help, type: "get-help Get-VM -online"


PS C:\Users\Administrator> Get-Help Get-VM

Commande Get-VM

Get-VM
Name State   CPUUsage(%) MemoryAssigned(M) Uptime             Status             Version
---- -----   ----------- ----------------- ------             ------             -------
c7-1 Running 0           512               1.02:31:09.6040000 Operating normally 8.0
hy1  Running 0           4096              1.02:18:54.5370000 Operating normally 8.0
test Off     0           0                 00:00:00           Operating normally 8.0

Obtenir un état de machine virtuelle


Get-VM | where {$_.State -eq "Running"}


Name State   CPUUsage(%) MemoryAssigned(M) Uptime             Status             Version
---- -----   ----------- ----------------- ------             ------             -------
c7-1 Running 0           512               1.02:35:36.8510000 Operating normally 8.0
hy1  Running 0           4096              1.02:23:21.7850000 Operating normally 8.0
Get-VM | where {$_.State -eq "Off"}

Name State CPUUsage(%) MemoryAssigned(M) Uptime   Status             Version
---- ----- ----------- ----------------- ------   ------             -------
test Off   0           0                 00:00:00 Operating normally 8.0

Démarrer une machine virtuelle

Get-Help Start-VM -examples

NAME
    Start-VM

SYNOPSIS
    Starts a virtual machine.


    Example 1

    PS C:\>Start-VM –Name TestVM

    Starts virtual machine TestVM.


    Example 2

    PS C:\>Start-VM –Name Test*

    Starts all virtual machines whose names start with “Test.”

Arrêter une machine virtuelle

Get-Help Stop-VM -examples

NAME
    Stop-VM

SYNOPSIS
    Shuts down, turns off, or saves a virtual machine.


    Example 1

    PS C:\>Stop-VM –Name TestVM

    Shuts down virtual machine TestVM through the guest operating system.


    Example 2

    PS C:\>Stop-VM –Name VM1 -Force

    Shuts down virtual machine TestVM through the guest operating system, regardless of any unsaved application data. Hyper-V gives the
    guest five minutes to save data, then forces a shutdown. This shutdown can result in loss of unsaved data.


    Example 3

    PS C:\>Stop-VM –Name TestVM –TurnOff

    Turns off virtual machine TestVM. This operation is equivalent to disconnecting the power from the virtual machine, and can result in
    loss of unsaved data.

Démarrer toutes les machines éteintes

Get-VM | where {$_.State -eq "Off"} | Start-VM

Eteindre toutes les machines en fonction

Get-VM | where {$_.State -eq 'Running'} | Stop-VM

Créer un checkpoint (snapshot)

Get-VM -Name <VM Name> | Checkpoint-VM -SnapshotName <name for snapshot>

Script de création d'une machine virtuelle

$VMName = "VMNAME"

$VM = @{
  Name = $VMName
  MemoryStartupBytes = 2147483648
  Generation = 2
  NewVHDPath = "C:\Virtual Machines\$VMName\$VMName.vhdx"
  NewVHDSizeBytes = 53687091200
  BootDevice = "VHD"
  Path = "C:\Virtual Machines\$VMName"
  SwitchName = (Get-VMSwitch).Name[0]
}

New-VM @VM

Configurer une machine virtuelle

Source : https://www.starwindsoftware.com/blog/automate-the-hyper-v-virtual-machine-deployment-with-powershell

To configure deeply a VM, you can use the Set-VM PowerShell cmdlet. Below an example:

Set-VM -Name <VM Name>
        -ProcessorCount <number of vCPU>
        -DynamicMemory
        -MemoryMinimumBytes <Minimum Memory>
        -MemoryStartupBytes <Startup Memory>
        -MemoryMaximumBytes <Maximum Memory>
        -AutomaticStartAction <automatic Start Action>
        -AutomaticStartDelay <Automatic Start Delay in second>
        -AutomaticStopAction <Automatic stop action>
  • Name: Name of the VM you would like to edit
  • ProcessorCount: number of vCPU that you want to assign to the VM
  • DynamicMemory: Enable the Dynamic Memory
  • MemoryMinimumBytes: set the minimum memory value
  • MemoryStartupBytes: set the startup memory value
  • MemoryMaximumBytes: set the maximum memory value
  • AutomaticStartAction: action which is run when the Hyper-V service is starting (Nothing, Start, StartIfRunning)
  • AutomaticStartDelay: number of second to wait before the automatic start action is run
  • AutomaticStopAction: action which is run when the Hyper-V service is stopping (Save, Shutdown, TurnOff)

If you want to configure the VM with static memory you can use the below command:

Set-VM -Name <VM Name>
        -ProcessorCount <number of vCPU>
        -StaticMemory
        -AutomaticStartAction <automatic Start Action>
        -AutomaticStartDelay <Automatic Start Delay in second>
        -AutomaticStopAction <Automatic stop action>