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.

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 (

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.

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é !

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

    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.

 

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+2×1024 > 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.

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…

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.

Cet article 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.