# Hyper-V

Hyper-V, également connu sous le nom de Windows Server Virtualisation, est un système de virtualisation basé sur un hyperviseur 64 bits de la version de Windows Server 2008. Il permet à un serveur physique de devenir Hyperviseur et ainsi gérer et héberger des machines virtuelles communément appelées VM (virtual machines).
Grâce à cette technologie il est possible d’exécuter virtuellement plusieurs systèmes d'exploitation sur une même machine physique et ainsi d'isoler ces systèmes d'exploitation les uns des autres.
Les ressources de l'hyperviseur sont alors mutualisées pour différentes VM, ce qui présente un intérêt économique car auparavant il fallait envisager une machine physique par serveur.
Il est possible d'utiliser la console Hyper-V sur Windows 7. Dans le sens inverse, de nombreux systèmes d'exploitation peuvent tourner à l'intérieur de Hyper-V :
* Bien évidemment pour les systèmes d'exploitation Microsoft Windows 10 (sauf Home Edition), Windows 8.1, Windows 8, Windows 7 (sauf édition familiale), Windows Vista SP1/SP2 (sauf édition familiale), Windows Server 2012, Windows Server 2008 x64 SP1/SP2 & R2, Windows Server 2003 x64 SP2 & R2 SP2, Windows 2000 SP4, Windows XP Professionnel SP2/SP3 & x64 SP2
* Pour les systèmes d'exploitation Linux :
** SUSE Linux Enterprise Server 10 SP1/SP2 & 11
** Red Hat Enterprise Linux 5.2 x64 et versions ultérieures
** Ubuntu 12.04 LTS et versions ultérieures

## Architecture

Hyper-V utilise le concept des partitions pour isoler les machines virtuelles. Une partition est une unité logique d’isolation, supportée par l’hyperviseur, dans laquelle s’exécute un système d'exploitation. L’instance de l’hyperviseur requiert la présence d’au moins une partition parente qui exécute Windows Server 2008. La couche de virtualisation s’exécute dans la partition parente et dispose d’un accès direct aux périphériques matériels. La partition parente crée ensuite des partitions enfants dans lesquelles s’exécutent les systèmes d’exploitation. Elle appelle pour cela l’Interface de programmation Hypercall.
Une partition virtuelle n’a pas accès au microprocesseur. En fait, elle a une vue virtuelle du microprocesseur et s’exécute dans le Guest Virtual Address, qui en fonction de la configuration de l’hyperviseur, peut ou pas être la totalité de l’espace d’adressage virtuel. Un hyperviseur peut choisir de n’exposer qu’un sous ensemble des processeurs à chaque partition. L’hyperviseur intercepte les interruptions du processeur et les redirige vers les partitions respectives en utilisant la logique de Synthetic Interrupt Controller (SynIC). Hyper-V utilise les accélérations matérielles pour redéfinir les adresses dans les différents espaces d’adressage virtuels des partitions enfants en utilisant IOMMU (I/O Memory Management Unit) (en) qui fonctionne indépendamment du gestionnaire de la mémoire vive utilisé par le processeur.
Les partitions enfants n’ont pas accès directement aux ressources matérielles, bien qu’elles aient une vue virtuelle de celles-ci en termes de périphériques virtuels. Chaque appel à un périphérique virtuel est redirigé via le VMBus vers son périphérique correspondant dans la partition parent qui prendra en charge la requête. Le VMBus est un canal logique qui permet la communication entre les partitions. La réponse est aussi redirigée par le VMBus. Si les périphériques de la partition parent sont aussi des périphériques virtuels, ils seront redirigés jusqu’à ce qu’ils atteignent la partition parent ou ils pourront accéder aux périphériques physiques. La partition parent exécute une Virtualization Service Provider (VSP) qui est connecté au VMBus et intercepte les requêtes des périphériques des partitions enfants. Les périphériques virtuels des partitions enfants exécutent un Virtualization Service Consumer (VSC) qui redirige les requêtes vers les VSP de la partition parent via le VMBus. Ce processus est complètement transparent pour le système d’exploitation de la partition enfant.
Les périphériques virtuels peuvent aussi tirer parti d’une fonctionnalité de Windows Server Virtualization, appelée Enlightened I/O, pour le stockage, le réseau et le sous-système graphique. Enlightened I/O permet à des protocoles de haut niveau, comme SCSI, de bénéficier directement des avantages du VMBus en détournant tout accès à la couche émulée d’un périphérique. Cela rend les communications plus efficaces mais nécessite que le système d’exploitation de la partition enfant supporte les fonctions Enlightened I/O.

## Versioning

| Système | Ressources | Windows Server 2008 R2 | Windows Server 2012 R2 |
| Hôte | Processeurs logiques | 64 | 320 |
| | Mémoire physique | 1 To | 4 To |
| | Processeurs virtuel par hôte | 512 | 2048 |
| Machine Virtuelle | Socket virtuel par machine virtuelle | 4 | 64 |
| | Mémoire par machine virtuelle | 64 Go | 1 To |
| | Machine virtuelle active par hôte | 384 | 1024 |
| | Invité NUMA | Non | Oui |
| Cluster | Nombre de nœuds maximum | 16 | 64 |
| | Nombre maximum de machines virtuelles | 1000 | 8000 |