windows server 2008 hyper v
TRANSCRIPT
La virtualisation de Microsoft
hyper-v sous Windows server
2008
La virtualisation est depuis quelques années en pleine expansion, et pour cause : la consolidation de serveurs à de
nombreux avantages comme la réduction des coûts énergétiques (véritablement problématique dans les
DataCenters), l’optimisation de l’espace, mais aussi une énorme souplesse dans la gestion des
sauvegardes/restaurations.
Ce document va donc vous présenter la nouvelle solution de virtualisation de Microsoft : Hyper-V.
Avant de rentrer dans le vif du sujet et afin de bien comprendre les enjeux et évolutions nous allons vous
présenter le coté théorique de la virtualisation ainsi que les différents modes de virtualisation. A la suite de cela
nous continuerons vers une approche plus spécifique d’Hyper-V puis une procédure de mise en production en
utilisant le mode Core de Windows Server 2008.
Sommaire
1. Un peu de théorie 1.1 introduction 1.2 L'intérêt de la virtualisation 1.3 Les Machines Virtuelles 1.4 Les Isolateurs 1.5 Les Hyperviseurs 1.6 Les paravirtualisateurs 1.7 Technologie Intel et AMD de support matériel de la virtualisation
2. Hyper-V 2.1 La genèse 2.2 Fonctionnement d’Hyper-V 2.3 Les fonctionnalités d’Hyper-v 2.4 Coût, licensing
3. Installation d'Hyper-V avec Windows Serveur 2008 Core 3.1 Introduction 3.2 Configuration pile TCP/IP 3.3 Configuration DNS 3.4 Désactivation du Firewall 3.5 Configuration du nom du seveur 3.6 Intégration au domaine 3.7 Update vers d’Hyper-V RC0/RC1 3.8 Installation d’Hyper-V 3.9 Vérification de l'installation
4. Les outils d'administration d'Hyper-V 4.1 Une nouvelle console d’administration 4.2 Création d’un réseau virtuel 4.3 Création d’une machine virtuelle 4.4 Optimisation des machines virtualisées 4.5 Gestion des Snapshots 4.6 Création de Snapshots via MMC 4.7 Création de Snapshots via Power Shell et WMI
5. Benchmarking des performancess 5.1 Introduction 5.2 Environnement de test 5.3 Les benchs
6. Conclusion
1. Un peu de théorie
1.1 Introduction
La virtualisation recouvre l'ensemble des techniques matérielles et/ou logicielles qui permettent de faire
fonctionner sur une seule machine hôte plusieurs systèmes d'exploitation, plusieurs instances différentes et
cloisonnées d'un même système ou plusieurs applications, séparément les uns des autres, comme s'ils
fonctionnaient sur des machines physiques distinctes. Nous allons voir tout d’abord pourquoi utiliser la
virtualisation, ensuite les différents types de virtualisation et pour finir l’impact de celle-ci sur les performances
ainsi que son évolution.
1.2 L'intérêt de la virtualisation
Les intérêts de la virtualisation sont :
Une utilisation optimale des ressources d'un parc de machines (répartition des machines virtuelles sur les
machines physiques en fonction des charges respectives) ainsi qu’une économie sur le matériel
(consommation électrique, compatibilité logicielle et matérielle…)
L’installation, le déploiement et la migration facile des machines virtuelles d'une machine physique à une
autre, notamment dans le contexte d'une mise en production à partir d'un environnement de qualification
ou de pré-production, livraison facilitée.
Sécurisation d'un réseau (l’attaquant n’a accès qu’aux machines virtuelles)
Isolation des différents utilisateurs simultanés d'une même machine
1.3 Les Machines Virtuelles
Une machine virtuelle est un logiciel qui tourne sur le système d’exploitation (O.S.) hôte. Ce logiciel permettant
de lancer un ou plusieurs OS invités. La machine virtualise le matériel, les O.S. invités pensent donc dialoguer
directement avec un matériel physique. En pratique on a recours à une émulation logicielle des périphériques, et
parfois aussi de tout ou partie de la machine.
Cette solution isole bien les systèmes d'exploitation invités, mais elle a un coût. Tout d’abord en performance,
principalement au niveau des entrées-sorties (I/O). A ce coût, relativement important, peut être ajouté un coût
supplémentaire si le processeur doit être intégralement émulé. Cette solution n'est pas non plus économe en
mémoire, puisque aucune économie d'échelle ne peut être réalisée en ce qui concerne les OS chargés. Le point
faible de cette solution est donc son importante consommation de ressources. Des exemples de logiciels
permettant l’utilisation de machines virtuelles sont Virtual PC/Server et VMWare Player/GSX/Workstation ou
bien encore Parallels Desktop.
1.4 Les Isolateurs
Un isolateur est un logiciel permettant d'isoler l'exécution des applications dans des contextes ou zones
d'exécution. Il permet ainsi de faire tourner plusieurs fois la même application alors que l’exécution de celle-ci
devrait être unique.
Notons que cette technologie consiste en quelque sorte à généraliser la notion de "contexte" Unix : ce dernier
isole les processus (mémoire, accès aux ressources), on ajoute alors : une isolation des périphériques (c'est le rôle
de l'isolateur), voire leur partage, les systèmes de fichiers donc les fichiers eux-mêmes et leurs accès.
UCette solution est très performante, du fait du peu d'overhead (chute de performance conséquente de l'ajout des
couches de virtualisation), mais les environnements virtualisés ne sont pas complètement isolés, ils partagent en
particulier le code du noyau. Cette solution est aussi remarquablement économique en mémoire par conséquence
de la dernière remarque. Ces environnements sont donc bien adaptés au déploiement de nombreux serveurs
virtuels de test ou développement basés sur un même système. Des exemples de logiciels sont Linux-VServer ou
encore BSD Jails
1.5 Les Hyperviseurs
Partant du principe, exposé précédemment, que pour avoir une virtualisation efficace il faut affiner les couches,
une première approche consiste à proposer un noyau léger (de type micro-noyau comme Mach par exemple),
lequel est accompagné d'outils de supervision, et adapté pour faire tourner des systèmes d'exploitation natifs.
Pour réussir cette approche, soit on émule le matériel (et on revient aux performances de la machine virtuelle
pour les I/O), soit on dispose des technologies dédiées à la virtualisation développées par AMD et Intel que nous
verrons plus tard. Exemple : VMWare ESX, Hyper-V
1.6 Les paravirtualisateurs
Un paravirtualiseur est un noyau hôte allégé et optimisé pour ne faire tourner que des noyaux de systèmes
d'exploitation invités, adaptés et optimisés pour cette utilisation. Les applications en espace utilisateur des
systèmes d'exploitation invités tournent ainsi sur une pile de deux noyaux optimisés, les OS ayant conscience
d'être virtualisés. A noter que l’utilisation des instructions Intel VT ou AMD-V rende possible l’utilisation d’un
OS non modifié. Un exemple de noyau: Xen, Hyper-V.
1.7 Technologie Intel et AMD de support matériel de la virtualisation
Dans le but de simplifier la virtualisation, Intel et AMD ont sorti une technologie de virtualisation matérielle. La
première à se lancer sur ce terrain fut Intel avec sa technologie VT (Virtualization Technology) fin 2005. En
2006 AMD sortit AMD-V (Virtualization). Ces deux technologies ont une structure similaire : elles se
composent de trois volets : un pour la virtualisation du processeur, un pour la virtualisation des périphériques et
enfin un dernier pour la virtualisation de la mémoire.
Avec ces technologies AMD et Intel ont ajouté des instructions ainsi qu’une nouvelle structure de contrôle
(VMCB pour Virtual Machine Control Block du coté d’AMD et VMCS pour Virtual Machine Control Structure
du coté d’Intel). Grâce à une de ces nouvelles instructions on peut passer à un nouveau mode d’exécution (VMX
chez Intel). Ce dernier permet de faire fonctionner les systèmes d’exploitation invités avec un niveau de privilège
très élevé (ring 0). Cela a pour avantage :
Meilleures performances. En effet, l’hyperviseur ne fait plus de translations binaires pour faire croire aux
OS invités qu’ils travaillent en ring 0.
Il n’est plus nécessaire de modifier les OS invités pour les faire fonctionner ailleurs que sur le ring 0.
2. Hyper-V
2.1 La genèse
Le lancement du projet semble avoir débuté en 2005. Suite à l’essor de VMWARE ESX server et de XEN, les
journalistes et les professionnels attendaient une réponse de la part de Microsoft en termes de virtualisation. En
effet, Microsoft avec Windows Virtual Server ne proposait qu’une solution de machines virtuelles classique, peu
performante et aux fonctionnalités réduites.
Si nous prenons en compte l’avance de ses concurrents et par conséquent, les attentes de la presse et des
professionnels, il est facile de saisir les enjeux de ce projet intitulé "Viridian".
Pour résumer, Microsoft se devait de proposer un produit :
Sensiblement aussi performant que les solutions déjà existantes.
Interopérable.
Qui s’intègre parfaitement dans les prochaines applications Microsoft en particulier Windows Server
2008 (Longhorn) et les produits de la gamme « system center » (configuration manager, Operation
Manager).
2.2 Fonctionnement d’Hyper-V
Tout d’abord Hyper-V n’est pas basé sur XEN, il est naturellement difficile de concevoir du code GPL dans un
Kernel Windows. Cette confusion a pris sa source dans différents documents mal interprétés, peut être celui-ci
paru en juillet 2006.
Conférence de presse de Juillet 2006
Cet article présente la synergie de Microsoft et XenSource afin de proposer différentes interopérabilités :
l’intégration de machine XEN dans l’Hyper-V de Microsoft ;intégration des machines Windows dans XEN. De
plus, le projet XEN a été financé en partie par MS Research ce qui peut expliquer la ressemblance entre les 2
architectures.
Hyper-V se base sur les concepts de paravirtualisation et d’hyperviseur vus précédemment.
Dans Virtual server/pc, on instancie une architecture x86 afin de créer une machine virtuelle. Nous avons donc
pour n machines virtuelles, n instanciations de l’architecture x86. Avec Hyper-V, l’architecture matérielle est
instanciée qu’une seule fois à travers une fine couche logicielle (< 1 MO) appelée "hyperviseur". L’hyperviseur
va permettre le multiplexage des ressources logiques vers les ressources physiques.
Au dessus de cette couche, une machine virtuelle particulière appelée "parente" est instanciée.
Les nouvelles machines virtuelles seront instanciées sur la même couche que la "machine parente". Elles
porteront le nom de "machine fille" et seront de type machine virtuelle classique ou machine virtuelle
"paravirtualisée".
La "paravirtualisation" permet aux machines virtuelles de communiquer ensemble et en particulier avec la
machine parente à travers un bus logiciel. Pour cela, une machine virtuelle paravirtualisée doit posséder une
couche logicielle appelée "enlightenment". Cette couche logicielle, comme pour l’ajout de composant sur une
machine virtuelle classique permet d’augmenter les performances d’entrée/sortie sur les périphériques.
Les machines filles paravirtualisées pourront ainsi profiter des périphériques supporter par Windows en standard
sans passer par de l’émulation comme dans la virtualisation "classique", les drivers officiels seront donc
supportés.
Pour résumer, les machines paravirtualisées n’exploiteront plus les pilotes émulés mais directement les drivers
physiques même pour la gestion des E/S ! Il est donc fort probable que Hyper-V offre des performances
remarquables pour toutes les applications gourmandes en terme d’E/S comme des BDD et autre serveurs mail.
A noter que VMWARE ESX server utilise encore l’émulation de périphérique, ce qui explique pourquoi certains
benchmarks parus sur Internet démontrent la supériorité d’Hyper-V en termes de performance.
Voici un schéma résumant le principe :
L’autre élément important d’Hyper-V est l’exploitation des extensions processeurs et chipsets comme AMD-V et
Intel VT.
2.3 Les fonctionnalités d’Hyper-v
Interopérabilité, possibilité d’exécuter des environnements différents de machines virtuelles. (Windows,
Linux, Unix, 32 bit et 64 bit).
Exploitation des processeurs SMP. Support de 4 CPU pour une machine virtuelle.
Prise en charge des drivers matériels par les machines virtuelles.
Possibilité d’équilibrage de charge entre les machines virtuelles (NLB)
Déplacement d’une VM sans quasiment aucune coupure d’une machine physique à une autre (2 secondes
environ)
Possibilité de réaliser une image fixe d’une machine virtuelle au même titre qu’une image Ghost.
Possibilité de migrer une machine virtuelle d’une machine hôte vers une autre avec un temps
d’indisponibilité minimale (Quick Migration)
Snapshot des machines virtuelles à chaud.
2.4 Coût, licensing
Hyper-V est compris dans Windows Server 2008. Il vous sera possible d’acquérir une version de Windows
Server 2008 sans Hyper-V pour environ 28$ de moins.
3. Installation d'Hyper-V avec Windows Serveur
2008 Core
3.1 Introduction
Il est possible d’installer Hyper-V en mode Windows Serveur 2008 Core. Celui-ci représentant bien sûr des
performances optimales, nous utiliserons ce mode. L’administration pourra se faire sur un autre Windows
Serveur 2008 ou Vista SP1 via MMC
Avertissement : les premier screens ont été pris avec un appareil photo. Nous vous prions de nous excuser pour la
faible qualité des captures. Nous avons néanmoins joint toutes les commandes associées.
3.2 Configuration pile TCP/IP
On utilisera la commande netsh pour modifier les propriétés TCP/IP.
Déterminer le nom de l’interface :
netsh interface ipv4 show interfaces
Définir l’adresse IP, le masque et la paserelle (ici 192.168.0.100 /16, passerelle 192.168.0.10):
netsh interface ipv4 set address name="Local Area Connection" source=static address=192.168.0.100
mask=255.255.0.0 gateway=192.168.0.10
3.3 Configuration DNS
Définir un serveur DNS (ici 192.168.0.110):
netsh interface ipv4 add dnsserver "Local Area Connection" 192.168.0.110
3.4 Désactivation du firewall
Pour simplifier la procédure nous désactiverons le firewall activé par défaut. On utilisera la commande:
netsh firewall set opmode disable
3.5 Configuration du nom du seveur
Pour renommer le serveur, il vous faut son nom actuel. On l'obtient grâce à la commande:
hostname
Il faudra ensuite indiquer son nom actuel et son nouveau nom.
netdom renamecomputer OldName /NewName:HV001
Vous devrez ensuite redémarrer le serveur grâce à la commande suivante:
shutdown /t 0 /r
3.6 Intégration au domaine
En l’état actuel des choses, il sera difficile d’administrer Hyper-V à distance si le serveur hôte et le client ne font
pas partis du même domaine. Nous vous recommandons d’intégrer le serveur dans un domaine avec cette
commande:
Netdom join ComputerName /domain DomainName
3.7 Update vers Hyper-V RC0/RC1
La version RTM de Windows Server 2008 est livrée avec une version Beta d’Hyper-V. Il convient d’installer la
RC0. Vous la trouverez ici : Lien de téléchargement RC0.
Note : la version RC1 est maintenant disponible vous la trouverez ici: Lien de téléchargement RC1.
Personnellement j’ai téléchargé le package sur un autre ordinateur et je l’ai mis sur clef usb pour l’installer sur le
serveur.
wusa.exe i:\nom du package.msu
3.8 Installation d’Hyper-V
Nous pouvons maintenant installer Hyper-V.
start /w ocsetup Microsoft-Hyper-V”
3.9 Vérification de l'installation
On peut lister les rôles du serveur pour vérifier l’installation:
OClist
Votre serveur est maintenant configuré et Hyper-V installé !
4. Les outils d'administration d'Hyper-V
Nous utiliserons Windows Vista SP1 pour administrer Hyper-V.
4.1 Une nouvelle console d’administration
La console est téléchargeable grâce au lien suivant: Télécharger la console MMC
La console MMC d’administration d’Hyper-V est intuitive. A droite, on retrouve les différents hôtes Hyper-V, au
centre, les différentes machines virtuelles ainsi que les points de sauvegarde. La partie de gauche représente
toutes les actions possibles.
4.2 Création d’un réseau virtuel
Avant de créer une machine virtuelle, nous allons créer un réseau virtuel. Dans la partie "Action", sélectionnez
"Virtual Network Manager".
Vous avez trois possibilités:
External: Permet d’utiliser une carte réseau présente physiquement sur l’hôte. Il faut utiliser ce type de réseau pour
permettre la communication entre la machine virtuelle et le réseau LAN/WAN.
Internal: Permet la communication entre les machines virtuelles ainsi qu’avec la machine hôte. Il n’utilise pas de carte
réseau physique de l’hôte
Private: Permet la communication entre les machines virtuelles uniquement.
A noter l’option "Enable Virtual LAN identification": si l’adaptateur physique de l’hôte le supporte, vous avez la
possibilité de marquer les trames Eternet pour les VLAN utilisant les tag (balisage VLAN 802.1Q).
4.3 Création d’une machine virtuelle
Dans la partie "Action", selectionnez "New" puis "Virtual Machine".
Indiquez le nom de la machine virtuelle.
Ajuster la mémoire à allouer à la mchine virtuelle.
Sélectionnez le réseau.
Pour le disque dur vous avez la possibilité de :
Créer un nouveau disque virtuel Utiliser un disque dur exeistant Attacher un disque virtuel plus tard
L’écran suivant présente un résumé de la configuration.
4.4 Optimisation des machines virtualisées
Afin que les VM travaillent en mode de paravirtualisation, il est nécessaire d’installer les composants
additionnels d’Hyper-V. Pour le moment, seul les OS suivants sont supportés :
Windows XP SP3
Windows Server 2003 SP2
Windows Vista SP1
Windows Server 2008
Pour l’installation il suffit de sélectionner dans le menu action de la VM "Insert Integration Services Setup Disk"
et de suivre le wizard.
Une fois l’installation terminée, plusieurs services seront installés.
A noter aussi l’ajout de nombreux périphériques (le screen n’en représente qu’une petite partie)
Attention : il semblerait que cet ajout de périphériques désactive Windows Vista !
4.5 Gestion de Snapshots
Grâce au service de shadow Copy, vous avez la possibilité de créer des sauvegardes à chaud de vous machines
virtuelles.
4.6 Création de Snapshots via MMC
Pour cela, cliquez simplement sur "Snapshot" dans le menu action.
Vos sauvegardes apparaîtront alors dans la partie médiane de la console d’aministration.
Vous avez la possibilité d’appliquer telle ou telle sauvegarde à la VM d’un simple clic.
4.7 Création de Snapshots via Power Shell et WMI
WMI Classes for Virtualisation
Les classes WMI fournissent une interface permettant de consulter et de manipuler tous les aspects de la
virtualisation et des machines virtuelles. Combinés aux classes de virtualisation WMI, PowerShell et son
approche orientée objet constituent un puissant outil de gestion des environnements virtualisés. Il est possible de
créer des fonctions ou des scripts de maintenance automatique de toute machine virtuelle et son système hôte.
L’espace de noms utilisé par le fournisseur WMI d’Hyper-V est: "\\.\Root\Virtualization". On distingue quatre
objets principaux :
ComputerSystem : représente les machines virtuelles et leur hôte. VirtualSystemSettingData : options de la machine virtuelle. ResourceAllocationSettingData : attribution des ressources.
VirtualSystemManagementService : méthodes de manipulation des objets.
Vous pouvez obtenir la liste complète des classes disponibles grâce à la commande suivante :
get-wmiobject -namespace root\virtualization –list.
Script PowerShell : Enregistrer un Snapshot
Variable de connexion au fournisseur WMI :
$VSMS = get-wmiobject –namespace root\virtualization –class Msvm_VirtualSystemManagementService
Variable de connexion à une machine virtuelle
$CS = get-wmiobject -namespace root\virtualization -class Msvm_ComputerSystem -filter " ElementName = 'NomDeLaMachineVirtuelle' "
Enregistrement d’un SnapShot
$VSMS.CreateVirtualSystemSnapShot($CS.__PATH)
Suppression et application de SnapShot:
Les méthodes RemoveVirtualSystemSnapShot et ApplyVirtualSystemSnapshot permettent respectivement de supprimer et appliquer un SnapShot.
Automatisation:
Une tâche planifiée peut alors être créée afin de déclencher la création d’un nouveau snapshot lors d’un évènement particulier ou à intervalles réguliers.
5. Benchmarking des performances
5.1 Introduction
On ne pouvait pas terminer cet article sans faire quelques benchs d’Hyper-V. Nous disposions de moyens
techniques modestes et le bench n’a donc pas pu se faire avec plusieurs machines virtuelles simultanées.
5.2 Environnement de test
Configuration
Tous les tests ont été effectués sur un portable Fujitsu Siemens Amilo PI2530, équipé d’un Core2Duo T7100
(1,8Ghz) et de 2GB de RAM (Dual DDR2-667), sur un chipset Intel PM965. Ce système supporte bien
évidemment les instructions 64bits ainsi que la virtualisation matérielle.
Outils choisis
Les outils de benchmarking fonctionnant sur les systèmes 64bits, dual core ne sont pas légion… Nous avons
néanmoins retenu Sandra qui permet d’évaluer les performances processeur, mémoire, et disque.
Solutions de virtualisation
L’Hyper-V utilisé lors de ces tests est la version RC0 du 18 mars, dernière version béta avant la version finale
prévue pour le mois d’août.
Il sera comparé à VMWare Server 2 beta 2, puis à son « ancêtre » : Virtual Server 2005 R2 SP1.
L’Hyper-V sera testée sur Windows Server 2008 Entreprise 64bits tandis que VMWare et Virtual Server seront
installés sur Windows Server 2003 R2 Entreprise 64bits.
Nomenclature
Dans un souci de lisibilité, les systèmes testés seront définis de la façon suivante :
2K8x64+2x1024 > Windows 2008 Server, Version 64bits, 2 CPU, 1024Mo de RAM
Ainsi, la première valeur désigne l’OS (2K8/2K3), la deuxième la version (x64/x86), la troisième le nombre de core (+1/+2),
la quatrième la quantité de mémoire (x1024).
[HV] / [VM] / [VS] > Hyper-V / VMWare / Virtual Server
5.3 Les Benchs
Sandra Pro XII SP1
Le logiciel de SiSoftware calcule l’indice de performance générale du système après avoiré réalisé 5 tests
concernant les processeurs arithmétique et multimédia, la bande passante mémoire, le système de fichiers et la
bande passante réseau. Nous n’avons retenu que les 4 premiers indices, le dernier ne variant pas d’un système à
l’autre... Les résultats sont ici ramenés à une valeur pour 1000 correspondant aux performances du système hôte.
Comme on pouvait s’en douter, et malgré des tests effectués sur une version beta, Hyper-V offre de très bonnes
performances. Il est très probable que ces performances soient exponentielles au nombre de machines virtualisées
sur le système hôte. Nous espèrons prochainement pouvoir enrichir ces benchs avec la version finale d'Hyper-V
et une montée en charge de l'hôte.
6. Conclusion
Hyper-V est plus qu'une évolution des précédents produits de virtualisation proposés par Microsoft. Il s'agit
véritablement d'un changement complet de technologie de virtualisation. Résolument novateur par rapport aux
produits concurrents Hyper-V associe parravirtualisation et hyperviseur le tout pour un prix modique.
Biensûr Hyper-V est encore un produit jeune (version RC) : les outils d'administrations ne sont pas exempts de
bug et il est clairement trop tôt pour consolider des serveurs de production avec cette version RC. La version
finale est prévue pour Aout 2008.
Concernant la stratégie de virtulisation de Microsoft, il est probable que Hyper-v soit utilisé dans les futurs OS
clients de Microsoft. En effet, assurer une compatibilité descendante des applications coûte extrêmement cher à
Microsoft. Il ne serait pas étonnant de voir l'hyperviseur utilisé pour virtualiser des anciens OS dans les futurs
systèmes clients, cela dégagerait Microsoft du support descendant des anciennes applications...
Source : Labo Microsoft
Plus des Cours : Club Tutoriel informatique