Article de reference

Virtualisation

Capture d'écran d'un environnement de virtualisation En informatique , la virtualisation (ou virtualisation en anglais du Commonwealth ; voir les différences d'orthographe ), ab...

Capture d'écran d'un environnement de virtualisation

En informatique , la virtualisation (ou virtualisation en anglais du Commonwealth ; voir les différences d'orthographe ), abrégée en v12n , est un ensemble de technologies permettant de diviser les ressources informatiques physiques en une série de machines virtuelles , de systèmes d'exploitation , de processus ou de conteneurs. La virtualisation a débuté dans les années 1960 avec IBM CP/CMS . Le programme de contrôle CP fournissait à chaque utilisateur un ordinateur System/360 autonome simulé.

En virtualisation matérielle , la machine hôte est celle utilisée par la virtualisation, et la machine invitée est la machine virtuelle. Les termes « hôte » et « invité » permettent de distinguer le logiciel exécuté sur la machine physique de celui exécuté sur la machine virtuelle. Le logiciel ou le microprogramme qui crée une machine virtuelle sur le matériel hôte est appelé hyperviseur ou moniteur de machine virtuelle . La virtualisation matérielle est différente de l'émulation matérielle . La virtualisation assistée par matériel facilite la création d'un moniteur de machine virtuelle et permet l'exécution isolée des systèmes d'exploitation invités.

La virtualisation de bureau est le concept qui consiste à séparer le bureau logique de la machine physique.

La virtualisation au niveau du système d'exploitation , également connue sous le nom de conteneurisation , désigne une fonctionnalité du système d'exploitation dans laquelle le noyau permet l'existence de plusieurs instances isolées de l'espace utilisateur .

L'objectif habituel de la virtualisation est de centraliser les tâches administratives tout en améliorant l'évolutivité et l'utilisation globale des ressources matérielles.

Histoire

Une forme de virtualisation a été initialement démontrée avec le système de recherche CP-40 d'IBM en 1967, puis diffusée en open source dans CP/CMS entre 1967 et 1972, et réimplémentée dans la famille de machines virtuelles d'IBM de 1972 à nos jours. Chaque utilisateur de CP/CMS disposait d'un ordinateur virtuel autonome. Chaque machine virtuelle possédait l'intégralité des fonctionnalités de la machine physique sous-jacente et, pour son utilisateur, était indiscernable d'un système privé. Cette simulation était complète et basée sur le manuel de fonctionnement du matériel. Elle incluait ainsi des éléments tels que le jeu d'instructions, la mémoire principale, les interruptions, les exceptions et l'accès aux périphériques. Il en résultait une machine unique pouvant être multiplexée entre plusieurs utilisateurs.

La virtualisation assistée par matériel est apparue pour la première fois sur l' IBM System/370 en 1972, pour être utilisée avec VM/370 , le premier système d'exploitation de machines virtuelles. IBM a ajouté du matériel de mémoire virtuelle à la série System/370 en 1972 ; ce matériel est différent des anneaux VT-x d'Intel qui offrent un niveau de privilèges plus élevé à l'hyperviseur pour contrôler correctement les machines virtuelles, nécessitant un accès complet aux modes superviseur, programme et utilisateur.

Avec la demande croissante de graphismes informatiques haute définition (par exemple, la CAO ), la virtualisation des ordinateurs centraux a perdu de son attrait à la fin des années 1970, lorsque les mini-ordinateurs émergents ont favorisé l'allocation des ressources grâce au calcul distribué , englobant la marchandisation des micro-ordinateurs .

L'augmentation de la capacité de calcul par serveur x86 (et notamment la forte hausse de la bande passante des réseaux modernes) a ravivé l'intérêt pour l'informatique en centre de données, basée sur les techniques de virtualisation. Le principal moteur de ce regain d'intérêt résidait dans le potentiel de consolidation des serveurs : la virtualisation permettait à un seul serveur de mutualiser, à moindre coût, la puissance de calcul de plusieurs serveurs dédiés sous-utilisés. Le symbole le plus visible de ce retour aux sources de l'informatique est le cloud computing , synonyme d'informatique en centre de données (ou informatique de type mainframe) via des réseaux à haut débit. Il est étroitement lié à la virtualisation.

L'architecture x86 initialement implémentée ne répondait pas aux exigences de virtualisation de Popek et Goldberg pour parvenir à une « virtualisation classique » :

  • Équivalence : un programme exécuté sous le moniteur de machine virtuelle (VMM) doit présenter un comportement essentiellement identique à celui observé lors de son exécution directe sur une machine équivalente.
  • Contrôle des ressources (également appelé sécurité ) : le VMM doit avoir un contrôle total sur les ressources virtualisées.
  • efficacité : une fraction statistiquement dominante des instructions machine doit être exécutée sans intervention du VMM

Cela rendait difficile la mise en œuvre d'un moniteur de machine virtuelle pour ce type de processeur. Parmi les limitations spécifiques, on peut citer l'impossibilité d' intercepter certaines instructions privilégiées . Par conséquent, pour pallier ces limitations architecturales, les concepteurs ont virtualisé l'architecture x86 selon deux méthodes : la virtualisation complète et la paravirtualisation . Toutes deux créent l'illusion d'un matériel physique afin d'atteindre l'objectif d'indépendance du système d'exploitation vis-à-vis du matériel, mais présentent des compromis en termes de performances et de complexité.

La virtualisation complète n'était pas pleinement disponible sur la plateforme x86 avant 2005. De nombreux hyperviseurs de plateforme pour la plateforme x86 s'en approchaient beaucoup et prétendaient offrir une virtualisation complète (tels que Adeos, Mac-on-Linux, Parallels Desktop for Mac , Parallels Workstation , VMware Workstation , VMware Server (anciennement GSX Server), VirtualBox , Win4BSD et Win4Lin Pro ).

En 2005 et 2006, Intel et AMD (travaillant indépendamment) ont créé de nouvelles extensions de processeur pour l' architecture x86, appelées respectivement Intel VT-x et AMD-V. Sur l' architecture Itanium , la virtualisation assistée par matériel est connue sous le nom de VT-i. La première génération de processeurs x86 prenant en charge ces extensions a été commercialisée fin 2005/début 2006.

  • Le 13 novembre 2005, Intel a lancé deux modèles de Pentium 4 (modèles 662 et 672) comme les premiers processeurs Intel à prendre en charge VT-x.
  • Le 23 mai 2006, AMD a lancé l'Athlon 64 (« Orleans »), l'Athlon 64 X2 (« Windsor ») et l'Athlon 64 FX (« Windsor ») comme les premiers processeurs AMD à prendre en charge cette technologie.

Virtualisation matérielle

La virtualisation matérielle (ou virtualisation de plateforme) répartit les ressources de calcul sur une ou plusieurs machines virtuelles . Une machine virtuelle implémente les fonctionnalités d'un ordinateur (physique) doté d'un système d'exploitation. Le logiciel ou le microprogramme qui crée une machine virtuelle sur le matériel hôte est appelé hyperviseur ou moniteur de machine virtuelle .

Les logiciels exécutés sur ces machines virtuelles sont dissociés des ressources matérielles sous-jacentes. Par exemple, un ordinateur exécutant Arch Linux peut héberger une machine virtuelle qui ressemble à un ordinateur doté du système d'exploitation Microsoft Windows ; les logiciels compatibles Windows peuvent être exécutés sur cette machine virtuelle.

Les différents types de virtualisation matérielle comprennent :

  • Virtualisation complète – Virtualisation quasi complète du matériel physique permettant aux environnements logiciels, y compris un système d'exploitation invité et ses applications, de fonctionner sans modification.
  • Paravirtualisation – Les applications invitées sont exécutées dans leurs propres domaines isolés, comme si elles s'exécutaient sur un système distinct, mais aucun environnement matériel n'est simulé. Les programmes invités doivent être spécifiquement modifiés pour fonctionner dans cet environnement.
  • Virtualisation hybride – Principalement une virtualisation complète, mais utilisant des pilotes de paravirtualisation pour augmenter les performances de la machine virtuelle .

Virtualisation complète

Schéma logique de la virtualisation complète

La virtualisation complète utilise des techniques qui regroupent les ressources physiques d'un ordinateur en une ou plusieurs instances ; chacune exécutant un environnement virtuel où tout logiciel ou système d'exploitation compatible avec le matériel physique peut être exécuté dans la machine virtuelle. Deux techniques de virtualisation complète sont généralement utilisées : (a) la traduction binaire et (b) la virtualisation complète assistée par matériel. La traduction binaire modifie automatiquement le logiciel à la volée pour remplacer les instructions qui « perforent la machine virtuelle » par une séquence d'instructions différente, compatible avec la machine virtuelle. La ​​virtualisation assistée par matériel permet d'exécuter des systèmes d'exploitation invités de manière isolée, sans modification notable de ces derniers.

La virtualisation complète exige que chaque caractéristique essentielle du matériel soit reflétée dans l'une des nombreuses machines virtuelles – y compris l'ensemble des instructions, les opérations d'entrée/sortie , les interruptions, l'accès à la mémoire et tous les autres éléments utilisés par le logiciel qui s'exécute sur la machine physique et qui est destiné à s'exécuter dans une machine virtuelle.

Cette approche a été initiée en 1966 avec les IBM CP-40 et CP-67 , prédécesseurs de la famille VM .

Traduction binaire

Certains hyperviseurs effectuent une traduction binaire entre le système invité et l'hôte, que ce soit entre des architectures de jeu d'instructions différentes ou entre un système invité et un hôte utilisant le même jeu d'instructions. L'hyperviseur peut être conçu pour interpréter directement le code machine du système invité ou pour générer du code machine pour l'architecture de l'hôte, sous la forme d'une traduction binaire dynamique .

La plupart des hyperviseurs courants, y compris ceux qui utilisent du matériel pour faciliter la virtualisation, effectuent une traduction binaire de certaines instructions d'accès au matériel. Dans ce cas, l'hyperviseur intercepte l' instruction et exécute les fonctions nécessaires pour émuler les périphériques requis. Les hyperviseurs effectuant une traduction binaire peuvent également être conçus pour substituer des instructions dans le contexte invité afin d'améliorer la sécurité ou les performances.

Assistance matérielle

La virtualisation assistée par matériel (ou virtualisation accélérée ; Xen l'appelle machine virtuelle matérielle (HVM), et Virtual Iron , virtualisation native) est une méthode permettant d'améliorer l'efficacité globale de la virtualisation matérielle grâce à l'assistance des processeurs hôtes. Une virtualisation complète est utilisée pour émuler un environnement matériel complet, ou machine virtuelle , dans lequel un système d'exploitation invité non modifié (utilisant le même jeu d'instructions que la machine hôte) s'exécute de manière totalement isolée.

La virtualisation assistée par matériel a été introduite pour la première fois sur les processeurs IBM 308X en 1980, avec l'instruction Start Interpretive Execution (SIE). Elle a été ajoutée aux processeurs x86 ( Intel VT-x , AMD-V ou VIA VT ) en 2005, 2006 et 2010 respectivement.

IBM propose la virtualisation matérielle pour ses systèmes IBM Power Systems sous AIX , Linux et IBM i , ainsi que pour ses mainframes IBM Z. IBM désigne sa forme spécifique de virtualisation matérielle sous le nom de « partition logique », ou plus couramment LPAR .

La virtualisation assistée par matériel réduit les coûts de maintenance liés à la virtualisation basée sur la traduction binaire, car elle diminue (voire élimine) la quantité de code à traduire dans le système d'exploitation invité. Elle permet également d'obtenir plus facilement de meilleures performances.

paravirtualisation

La paravirtualisation est une technique de virtualisation qui présente aux machines virtuelles une interface logicielle similaire, mais non identique, à l'interface matérielle-logicielle sous-jacente. Comparée à la virtualisation complète, la paravirtualisation améliore les performances et l'efficacité en permettant au système d'exploitation invité de communiquer avec l'hyperviseur. En autorisant le système d'exploitation invité à indiquer son intention à l'hyperviseur, les deux peuvent coopérer pour obtenir de meilleures performances lors de l'exécution dans une machine virtuelle.

L'objectif de l'interface modifiée est de réduire le temps d'exécution de la machine virtuelle invitée consacré à des opérations nettement plus complexes à réaliser dans un environnement virtuel que dans un environnement non virtualisé. La paravirtualisation fournit des mécanismes spécifiques permettant à la ou aux machines virtuelles invitées et à l'hôte de demander et de valider ces tâches, qui seraient autrement exécutées dans le domaine virtuel (où les performances sont moindres). Une plateforme paravirtualisée performante peut simplifier le moniteur de machine virtuelle (VMM) (en déplaçant l'exécution des tâches critiques du domaine virtuel vers le domaine hôte) et/ou réduire la dégradation globale des performances d'exécution au sein de la machine virtuelle invitée.

La paravirtualisation exige que le système d'exploitation invité soit explicitement adapté à l' API paravirtualisée . Une distribution OS classique non compatible avec la paravirtualisation peut néanmoins s'exécuter sur une machine virtuelle paravirtualisée. Cependant, même lorsque le système d'exploitation ne peut être modifié, des composants permettent de bénéficier de nombreux avantages significatifs en termes de performances. Par exemple, le projet Xen Windows GPLPV fournit un ensemble de pilotes de périphériques compatibles avec la paravirtualisation, destinés à être installés dans une machine virtuelle Microsoft Windows exécutée sur l'hyperviseur Xen . Ces applications sont généralement accessibles via l'environnement d'interface de la machine paravirtualisée. Ceci garantit la compatibilité du mode d'exécution avec plusieurs modèles d'algorithmes de chiffrement, permettant une intégration transparente au sein du cadre paravirtual.

Histoire

Le terme « paravirtualisation » a été utilisé pour la première fois dans la littérature scientifique en lien avec le gestionnaire de machines virtuelles Denali . Il est également employé pour décrire les hyperviseurs Xen , L4 , TRANGO, VMware , Wind River et XtratuM . Tous ces projets utilisent, ou peuvent utiliser, des techniques de paravirtualisation pour prendre en charge des machines virtuelles hautes performances sur du matériel x86, en implémentant une machine virtuelle qui n'implémente pas les parties difficiles à virtualiser du jeu d'instructions x86

En 2005, VMware a proposé une interface de paravirtualisation, la Virtual Machine Interface (VMI), comme mécanisme de communication entre le système d'exploitation invité et l'hyperviseur. Cette interface permettait une paravirtualisation transparente, grâce à laquelle une seule version binaire du système d'exploitation pouvait s'exécuter soit sur le matériel natif, soit sur un hyperviseur en mode paravirtualisé.

La première apparition du support de la paravirtualisation dans Linux a eu lieu avec la fusion du port ppc64 en 2002, qui prenait en charge l'exécution de Linux en tant qu'invité paravirtualisé sur le matériel IBM pSeries (RS/6000) et iSeries (AS/400).

Lors de la conférence USENIX de 2006 à Boston (Massachusetts) , plusieurs fournisseurs de solutions Linux (dont IBM, VMware, Xen et Red Hat) ont collaboré à une forme alternative de paravirtualisation, initialement développée par l'équipe Xen et appelée « paravirt-ops » . Le code de paravirt-ops (souvent abrégé en pv-ops) a été intégré au noyau Linux principal à partir de la version 2.6.23 et fournit une interface indépendante de l'hyperviseur entre ce dernier et les noyaux invités. La prise en charge des noyaux invités pv-ops est apparue dans les distributions Linux à partir d'Ubuntu 7.04 et Red Hat 9. Les hyperviseurs Xen basés sur un noyau 2.6.24 ou ultérieur prennent en charge les invités pv-ops, tout comme le produit VMware Workstation à partir de la version 6

virtualisation hybride

La virtualisation hybride combine des techniques de virtualisation complète avec des pilotes paravirtualisés pour surmonter les limitations de la virtualisation complète assistée par matériel.

Une approche de virtualisation complète assistée par matériel utilise un système d'exploitation invité non modifié, ce qui implique de nombreuses interruptions de la machine virtuelle et génère une surcharge importante du processeur, limitant ainsi l'évolutivité et l'efficacité de la consolidation des serveurs. L'approche de virtualisation hybride surmonte ce problème.

Virtualisation de bureau

La virtualisation de bureau sépare le bureau logique de la machine physique.

L’infrastructure de bureau virtuel (VDI), une forme de virtualisation de bureau, peut être considérée comme une forme plus avancée de virtualisation matérielle. Au lieu d’interagir directement avec un ordinateur hôte via un clavier, une souris et un écran, l’utilisateur interagit avec celui-ci à l’aide d’un autre ordinateur de bureau ou d’un appareil mobile via une connexion réseau, telle qu’un réseau local (LAN) , un réseau local sans fil (WLAN) ou même Internet . De plus, dans ce scénario, l’ordinateur hôte devient un serveur capable d’héberger simultanément plusieurs machines virtuelles pour plusieurs utilisateurs.

Des entreprises comme HP et IBM proposent un modèle VDI hybride avec une gamme de logiciels de virtualisation et de modèles de déploiement afin de pallier les limitations de l'informatique client distribuée . Certains environnements clients déplacent les charges de travail des PC et autres appareils vers les serveurs du centre de données, créant ainsi des clients virtuels bien gérés. Les applications et les environnements d'exploitation clients sont hébergés sur les serveurs et le stockage du centre de données. Pour les utilisateurs, cela signifie qu'ils peuvent accéder à leur bureau depuis n'importe quel endroit, sans être liés à un seul appareil client. Grâce à la centralisation des ressources, les utilisateurs qui se déplacent entre différents lieux de travail peuvent toujours accéder au même environnement client, à leurs applications et à leurs données. Pour les administrateurs informatiques, cela se traduit par un environnement client plus centralisé et plus efficace, plus facile à maintenir et capable de répondre plus rapidement à l'évolution des besoins des utilisateurs et de l'entreprise. Une autre forme de virtualisation, la virtualisation de session, permet à plusieurs utilisateurs de se connecter et d'accéder simultanément à un ordinateur partagé mais puissant via le réseau. Chaque utilisateur dispose d'un bureau et d'un dossier personnel pour stocker ses fichiers. Avec une configuration multi-utilisateurs , la virtualisation de session peut être réalisée à l'aide d'un seul PC avec plusieurs moniteurs, claviers et souris connectés.

Les clients légers , que l'on retrouve dans la virtualisation de bureau, sont des ordinateurs simples et/ou peu coûteux, conçus principalement pour se connecter au réseau. Ils peuvent manquer d'espace de stockage disque , de mémoire vive ou même de puissance de traitement , mais de nombreuses organisations commencent à considérer les avantages économiques liés à l'élimination des postes de travail « clients lourds », surchargés de logiciels (et nécessitant des frais de licence logicielle), et à des investissements plus stratégiques.

La virtualisation des postes de travail simplifie la gestion des versions logicielles et des correctifs : la nouvelle image est simplement mise à jour sur le serveur, et le poste de travail bénéficie de la version mise à jour lors de son redémarrage. Elle permet également un contrôle centralisé des applications auxquelles l’utilisateur a accès sur son poste de travail.

Le passage des postes de travail virtualisés au cloud crée des postes de travail virtuels hébergés (HVD), dans lesquels les images de bureau sont gérées et maintenues de manière centralisée par une société d'hébergement spécialisée. Les avantages comprennent l'évolutivité et la réduction des dépenses d'investissement, remplacées par des coûts opérationnels mensuels.

conteneurisation

La virtualisation au niveau du système d'exploitation, également appelée conteneurisation , désigne une fonctionnalité du système d'exploitation permettant au de exister plusieurs instances isolées de l'espace utilisateur . Ces instances, appelées conteneurs, partitions, environnements virtuels ( ) ou jails ( jail FreeBSD ou jail chroot ), peuvent apparaître comme des ordinateurs physiques du point de vue des programmes qui s'y exécutent. Un programme s'exécutant sur un système d'exploitation classique peut accéder à toutes les ressources de cet ordinateur (périphériques connectés, fichiers et dossiers, partages réseau , puissance du processeur, capacités matérielles quantifiables). En revanche, les programmes exécutés dans un conteneur ne peuvent accéder qu'au contenu du conteneur et aux périphériques qui lui sont attribués.

Cela offre de nombreux avantages des machines virtuelles, tels que la standardisation et l'évolutivité, tout en utilisant moins de ressources puisque le noyau est partagé entre les conteneurs.

La conteneurisation a commencé à gagner en importance en 2014, avec l'introduction de Docker .

Types divers

Logiciel
Mémoire
  • Virtualisation de la mémoire : le regroupement des ressources RAM de plusieurs systèmes en réseau au sein d’un pool de mémoire unique est un concept souvent désigné par les termes de mémoire désagrégée , de mise en commun de la mémoire ou d’accès à la mémoire distante . Cette architecture vise à pallier les limitations traditionnelles de la mémoire d’un système unique en permettant à plusieurs ordinateurs ou nœuds de partager leur mémoire de manière performante et à faible latence.
  • Mémoire virtuelle : donner à une application l’impression de disposer d’une mémoire de travail contiguë, en l’isolant de l’implémentation de la mémoire physique sous-jacente.
Stockage
Données
  • Virtualisation des données : présentation des données sous forme de couche abstraite, indépendante des systèmes de bases de données, des structures et du stockage sous-jacents.
  • Virtualisation de bases de données : le découplage de la couche de base de données, qui se situe entre les couches de stockage et d’application au sein de la pile applicative.
Réseau

Avantages et inconvénients

La virtualisation, et en particulier la virtualisation complète, s'est avérée bénéfique pour :

  • partage d'un système informatique entre plusieurs utilisateurs ;
  • isoler les utilisateurs les uns des autres (et du programme de contrôle) ;
  • Émuler du nouveau matériel pour améliorer la fiabilité, la sécurité et la productivité.

L'un des objectifs communs de la virtualisation est de centraliser les tâches administratives tout en améliorant l'évolutivité et l'utilisation globale des ressources matérielles. Grâce à la virtualisation, plusieurs systèmes d'exploitation peuvent être exécutés en parallèle sur un seul processeur . Ce parallélisme tend à réduire les coûts et se distingue du multitâche, qui consiste à exécuter plusieurs programmes sur le même système d'exploitation. En utilisant la virtualisation, une entreprise peut mieux gérer les mises à jour et les modifications rapides du système d'exploitation et des applications sans perturber l'utilisateur.

En définitive, la virtualisation améliore considérablement l’efficacité et la disponibilité des ressources et des applications au sein d’une organisation. Au lieu de s’appuyer sur l’ancien modèle « un serveur, une application » qui conduit à une sous-utilisation des ressources, les ressources virtuelles sont allouées dynamiquement pour répondre aux besoins de l’entreprise sans gaspillage.

Les machines virtuelles exécutant des systèmes d'exploitation propriétaires nécessitent une licence, quel que soit le système d'exploitation de la machine hôte. Par exemple, l'installation de Microsoft Windows dans une machine virtuelle invitée requiert le respect de ses exigences de licence.