Accueil
Thèmes
Virtual Machines
Publication : le 3 mars 2024
Contributeurs : Stephanie Susnjara, Ian Smalley
Une virtual machine (VM) est une représentation virtuelle ou une émulation d’un ordinateur physique qui utilise un logiciel plutôt que du matériel pour exécuter des programmes et déployer des applications.
En utilisant les ressources d'une seule machine physique, telles que la mémoire, le processeur, l'interface réseau et le stockage, les machines virtuelles permettent aux entreprises d'exécuter virtuellement plusieurs machines avec différents systèmes d'exploitation sur un seul appareil.
Les machines virtuelles sont généralement appelées « invités », c’est-à-dire qu’une ou plusieurs machines invitées s’exécutent sur une machine physique appelée machine « hôte ». La technologie des machines virtuelles comprend les serveurs virtuels, les instances de serveurs virtuels (VSI) et les serveurs privés virtuels (VPS).
Dans un rapport de Global Market Insights (GMI) (lien externe à ibm.com), le marché des machines virtuelles a dépassé les 9,5 milliards de dollars en 2023. GMI prévoit que ce marché se développera à un taux de croissance annuel composé (TCAC) d'environ 12 % entre 2024 et 2032, stimulé par l'adoption constante du cloud computing. Alors que les entreprises migrent vers le cloud pour son évolutivité, sa flexibilité et son efficacité économique, les fournisseurs de cloud continuent d'intégrer des machines virtuelles et d'autres technologies critiques (par exemple, les conteneurs) pour fournir une infrastructure informatique stable.
Découvrez comment le DaaS (Desktop as a service) permet aux entreprises d'atteindre le même niveau de performance et de sécurité qu'en déployant les applications sur site.
Les machines virtuelles fonctionnent en utilisant la virtualisation, un processus de création de versions logicielles ou virtuelles de ressources (calcul, stockage, réseau, serveurs) ou d'applications.
La virtualisation permet une utilisation plus efficace du matériel informatique physique et constitue le fondement du cloud computing.
La virtualisation est rendue possible grâce à un hyperviseur, également appelé moniteur de machine virtuelle (VMM). Cette couche logicielle légère gère les machines virtuelles lorsqu’elles fonctionnent côte à côte.
La naissance de la virtualisation remonte à 1964, lorsque IBM a conçu et introduit CP-40, un projet de recherche expérimental en temps partagé pour IBM System/360. Le CP-40, qui a ensuite évolué pour devenir le CP-67 puis Unix, a fourni du matériel informatique capable de prendre en charge plusieurs utilisateurs simultanément et a jeté les bases des machines virtuelles.
Le 2 août 1972, IBM a déployé ce que beaucoup considèrent comme la première machine virtuelle, la VM/370, et les premiers mainframes System/370 prenant en charge la mémoire virtuelle.
En 1998, VMware (lien externe à ibm.com) a développé le système d'exploitation x86, qui permet de segmenter une seule machine en plusieurs machines virtuelles, chacune avec son propre système d'exploitation. En 1999, la société a lancé VM Workstation 1.0, le premier produit commercial permettant aux utilisateurs d'exécuter plusieurs systèmes d'exploitation en tant que machines virtuelles sur un seul PC.
Aujourd'hui, la virtualisation est une pratique courante pour les infrastructures informatiques de niveau entreprise et un élément moteur de l'économie du cloud computing, permettant aux entreprises d'augmenter l'utilisation des capacités et de réduire les coûts. Toutes les infrastructures informatiques peuvent être virtualisées, y compris les environnements de bureau, les systèmes d'exploitation, le matériel de stockage, les centre de données et bien plus encore.
La virtualisation repose sur la technologie des hyperviseurs. Cette couche logicielle placée sur un ordinateur physique ou un serveur (également appelé serveur bare metal) permet à l'ordinateur physique de séparer son système d'exploitation et ses applications de son matériel. Ces machines virtuelles peuvent exécuter leurs systèmes d'exploitation et leurs applications indépendamment tout en partageant les ressources originales (mémoire, RAM, stockage, etc.) du serveur, gérées par l'hyperviseur. En essence, l'hyperviseur agit comme un agent de circulation, allouant des ressources aux machines virtuelles et s'assurant qu'elles ne se perturbent pas mutuellement.
Il existe deux principaux types d’hyperviseurs :
Outre la classification selon la gestion des hyperviseurs, les machines virtuelles se répartissent en deux catégories principales : les machines virtuelles de système (également appelées machines de virtualisation complète) et les machines virtuelles de traitement.
Les machines virtuelles de système permettent de partager les ressources sous-jacentes des machines physiques entre différentes machines virtuelles, chacune exécutant son propre système d’exploitation. En revanche, les machines virtuelles de traitement (également appelées machines virtuelles d'application) exécutent une application dans un système d'exploitation et ne prennent en charge qu'un seul processus. Les machines virtuelles Java, qui exécutent des programmes compilés en Java, sont des exemples de machines virtuelles de traitement.
Les machines virtuelles offrent de nombreux avantages par rapport au matériel physique traditionnel.
Comme plusieurs machines virtuelles s’exécutent sur un même ordinateur physique, les clients n’ont pas besoin d’acheter un nouveau serveur chaque fois qu’ils souhaitent exécuter un autre système d’exploitation. Par conséquent, ils peuvent mieux rentabiliser chaque matériel qu’ils possèdent déjà, ce qui réduit considérablement les coûts informatiques liés aux dépenses d’investissement et d’exploitation.
Comme les machines virtuelles sont basées sur des logiciels, il est facile d’en créer de nouvelles, ce qui accélère la mise à l’échelle pour répondre aux nouvelles demandes de workloads par rapport à la mise à disposition de nouveaux environnements basés sur du matériel.
Les entreprises peuvent déplacer les machines virtuelles selon leurs besoins parmi les ordinateurs physiques d'un réseau. Cette fonctionnalité permet d’allouer des workloads à des serveurs disposant d’une puissance de calcul disponible. Les machines virtuelles peuvent même se déplacer entre des environnements sur site et cloud, ce qui les rend utiles pour les scénarios de cloud hybride dans lesquels vous partagez des ressources informatiques entre votre centre de données et un fournisseur de services cloud.
La création d’une VM est plus rapide et plus facile que l’installation d’un système d’exploitation sur un serveur physique, car vous pouvez cloner une VM avec le système d’exploitation déjà installé. Les développeurs et les testeurs de logiciels peuvent créer de nouveaux environnements à la demande pour gérer de nouvelles tâches à mesure qu'elles se présentent.
Les VM améliorent la sécurité de plusieurs manières par rapport aux systèmes d'exploitation, qui s'exécutent directement sur le matériel. À l’aide d’un programme externe, vous pouvez analyser un fichier VM à la recherche de logiciels malveillants. Vous pouvez créer un aperçu de la machine virtuelle à tout moment et la restaurer dans cet état si elle est infectée par un logiciel malveillant, ce qui permet de remonter dans le temps. La création rapide et facile de VM permet également de supprimer et de recréer rapidement une VM compromise, ce qui accélère la reprise après une infection par un logiciel malveillant.
Avec moins de serveurs physiques nécessaires pour exécuter les workloads et les applications, vous pouvez réduire considérablement la consommation d'énergie pour améliorer votre impact environnemental.
Bien que les machines virtuelles présentent de nombreux avantages, elles comportent également quelques inconvénients à prendre en compte.
Les VM dépendent des ressources matérielles mises à leur disposition sur l’ordinateur hôte. Des ressources limitées peuvent entraîner une baisse des performances et des inefficacités.
Les machines virtuelles peuvent être complexes à configurer et à gérer, nécessitant des équipes dotées de connaissances et d'expertise techniques pour leur installation et leur maintenance.
Les machines virtuelles présentent le risque d’un point de défaillance unique en s’appuyant sur un ordinateur physique.
Les machines virtuelles ont un large éventail d'utilisations pour les administrateurs et les utilisateurs informatiques d'entreprise, notamment :
Première entreprise à avoir commercialisé avec succès la virtualisation de l’architecture à microprocesseur x86, VMware est un leader sur le marché de la virtualisation (lien externe à ibm.com). VMware fournit des hyperviseurs et des logiciels de machine virtuelle de type 1 et de type 2 aux entreprises.
La plupart des hyperviseurs prennent en charge les machines virtuelles exécutant le système d'exploitation Windows en tant qu'invité. L'hyperviseur Hyper-V de Microsoft est fourni avec le système d'exploitation Windows. Lorsqu'il est installé, il crée une partition parentale qui le contient, ainsi que le système d'exploitation Windows principal, chacun bénéficiant d'un accès privilégié au matériel. D'autres systèmes d'exploitation, y compris les invités Windows, s'exécutent dans des partitions enfants et communiquent avec le matériel via la partition parente.
Le système d’exploitation Android open source de Google est courant sur les appareils mobiles et les appareils domestiques connectés.
Le système d'exploitation Android fonctionne uniquement sur l'architecture de processeur ARM typique de ces appareils, mais les passionnés, les joueurs Android ou les développeurs de logiciels pourraient vouloir l'exécuter sur PC. Cette situation peut être problématique, car les PC fonctionnent sur une architecture de processeur x86 totalement différente et un hyperviseur de virtualisation matériel ne fait que transmettre des instructions entre la VM et le CPU. Il ne les traduit pas pour les processeurs ayant différents ensembles d’instructions.
Divers projets, comme Shashlik ou Genymotion, peuvent résoudre ce problème en utilisant un émulateur qui recrée l'architecture ARM sous forme logicielle. Une alternative, le projet Android-x86, porte Android sur l'architecture x86. Pour l'exécuter, vous devez installer le programme Android-x86 en tant que machine virtuelle utilisant l'hyperviseur VirtualBox type 2. Une autre alternative, Anbox, exécute le système d'exploitation Android sur le noyau d'un système d'exploitation Linux hôte.
Apple autorise son système macOS à fonctionner uniquement sur du matériel Apple. Cela signifie que vous ne pouvez pas l’exécuter sur du matériel autre qu’Apple en tant que machine virtuelle ou dans le cadre de son contrat de licence d’utilisateur final. Cependant, vous pouvez utiliser des hyperviseurs de type 2 sur du matériel Mac pour créer des machines virtuelles avec un invité macOS.
Il est impossible d'exécuter iOS sur une machine virtuelle aujourd'hui parce qu'Apple contrôle strictement son système d'exploitation iOS et ne l'autorise qu'à fonctionner sur les appareils iOS.
Ce qui se rapproche le plus d’une machine virtuelle iOS, c’est le simulateur d’iPhone fourni avec l’environnement de développement intégré Xcode, qui simule l’ensemble du système iPhone dans le logiciel.
La plateforme Java est un environnement d'exécution pour les programmes écrits dans le langage de développement logiciel Java. La promesse de Java, « écrivez une fois, exécutez n'importe où », signifie que n'importe quel programme Java peut être exécuté sur n'importe quelle plateforme Java. C'est pourquoi celle-ci incluait une machine virtuelle Java (JVM).
Les programmes Java contiennent du bytecode, qui est une forme d’instruction destinée à la JVM. La JVM compile ce bytecode en code machine, qui est le langage de plus bas niveau utilisé par l'ordinateur hôte. La JVM d'une plateforme Java crée un ensemble d'instructions de code machine différent de celui de la JVM d'une autre plateforme, en fonction du code machine attendu par le processeur.
Par conséquent, la JVM n’exécute pas un système d’exploitation complet et n’utilise pas d’hyperviseur comme le font les autres machines virtuelles. Au lieu de cela, il traduit les programmes logiciels de niveau application pour qu’ils s’exécutent sur du matériel particulier.
Comme JVM, la machine virtuelle Python ne s'exécute pas sur un hyperviseur et ne contient pas de système d'exploitation invité. Il s'agit d'un outil qui permet aux programmes écrits dans Python de s'exécuter sur divers processeurs.
Comme Java, Python traduit ses programmes dans un format intermédiaire appelé bytecode et les stocke dans un fichier prêt à être exécuté. Lorsque le programme s'exécute, la machine virtuelle Python traduit le bytecode en code machine pour une exécution rapide.
Linux est un système d’exploitation invité typique utilisé dans de nombreuses machines virtuelles. Il s'agit également d'un système d'exploitation hôte typique utilisé pour exécuter des machines virtuelles et possède même son propre hyperviseur, la machine virtuelle basée sur le noyau (KVM). Bien qu'il s'agisse d'un projet open source, Red Hat possède KVM.
Ubuntu est une distribution Linux produite par Canonical. Elle est disponible en version de bureau et en version serveur, que vous pouvez installer en tant que machine virtuelle. Les utilisateurs peuvent déployer Ubuntu en tant que système d'exploitation invité sur Microsoft Hyper-V. Ce système fournit une version optimisée d'Ubuntu Desktop qui fonctionne bien en mode session amélioré d'Hyper-V, offrant une intégration étroite entre l'hôte Windows et la machine virtuelle Ubuntu. Cela inclut la prise en charge de l'intégration du presse-papiers, du redimensionnement dynamique des bureaux, des dossiers partagés et du déplacement de la souris entre les bureaux hôte et invité.
Les machines virtuelles publiques ou à locataires multiples sont des machines virtuelles avec plusieurs utilisateurs partageant une infrastructure physique commune. Ce modèle constitue l’approche la plus rentable et la plus évolutive pour le provisionnement des machines virtuelles. Cependant, les environnements à locataires multiples ne disposent pas de certaines caractéristiques d’isolation que les organisations ayant des mandats stricts en matière de sécurité ou de conformité pourraient préférer.
Il existe deux modèles de machines virtuelles à locataire unique : les hôtes dédiés et les instances dédiées.
Un modèle de paiement à la carte n’a pas de coûts initiaux pour la machine virtuelle, et les utilisateurs paient simplement ce qu’ils utilisent. Les clients paient à l’heure ou à la seconde, selon le fournisseur et le type d’instance.
Modèle de VM le moins coûteux, les instances transitoires ou ponctuelles tirent parti de la capacité excédentaire d'un fournisseur, mais peuvent être récupérées par ce dernier à tout moment. Les instances transitoires/ponctuelles sont utiles pour les applications qui n’ont pas besoin d’être activées en permanence ou dont le coût est prohibitif dans tout autre modèle.
Contrairement aux modèles de paiement à la carte, les cas réservés sont assortis d'un engagement à terme explicite, généralement compris entre un et trois ans, mais sont également assortis de remises importantes.
Un utilisateur paie généralement le coût total du serveur physique et est facturé par incréments selon ce que le fournisseur propose pour les serveurs dédiés, généralement à l'heure ou au mois.
Les bare Metal Servers sont avant tout une question de matériel brut, de puissance et d’isolation. Il s’agit de serveurs physiques avec infrastructure d'hébergement dédiée à un locataire unique, totalement dépourvus de cycles d’hyperviseur (logiciel de virtualisation), et entièrement dédiés à un seul client : vous.
Les workloads privilégiant les performances et l'isolement, comme les applications à forte intensité de données et les obligations de conformité réglementaire, sont généralement mieux adaptées aux bare Metal Servers, en particulier lorsqu'ils sont déployés sur des périodes prolongées.
Les programmes de ressources d'entreprise (ERP), la gestion de la relation client (CRM), la gestion de la chaîne d'approvisionnement (SCM), le commerce électronique et les applications de services financiers ne sont que quelques-unes des workloads idéales pour les serveurs bare metal.
En revanche, lorsque vos workloads exigent une flexibilité et une évolutivité maximales, il est préférable de placer un hyperviseur sur le matériel bare metal pour créer une machine virtuelle. Les virtual machines augmentent la capacité et l'utilisation des serveurs. Elles sont parfaites pour déplacer des données d’une VM à une autre, redimensionner les ensembles de données et diviser les workloads dynamiques.
Le moyen le plus simple de comprendre ce qu’est un conteneur est de connaître sa différence par rapport à une machine virtuelle (VM) traditionnelle. Dans la virtualisation traditionnelle, que ce soit sur site ou dans le cloud, un hyperviseur à virtualiser le matériel physique. Chaque VM contient alors un système d'exploitation invité, une copie virtuelle du matériel dont le système d'exploitation a besoin pour fonctionner, ainsi qu'une application et ses bibliothèques et dépendances associées.
Au lieu de virtualiser le matériel sous-jacent, les conteneurs virtualisent le système d'exploitation (généralement Linux). Chaque conteneur contient uniquement l'application et ses bibliothèques et dépendances. L'absence du système d'exploitation invité explique pourquoi les conteneurs sont si légers, rapides et portables.
Les conteneurs et Kubernetes, la plateforme open source d'orchestration de conteneurs qui les gère, sont devenus les unités de facto des architectures cloud natives et de microservices modernes. Bien que les conteneurs soient le plus souvent associés aux services sans état, les organisations peuvent également les utiliser pour les services avec état. Les conteneurs sont standard dans les scénarios de cloud hybride, car ils peuvent s'exécuter de manière constante sur le cloud public, le cloud privé et les environnements traditionnels sur site. Aujourd'hui, une organisation peut exécuter l'application sur son cloud privé, mais demain, elle peut avoir besoin de la déployer sur un cloud public d'un fournisseur différent. La conteneurisation des applications offre aux équipes la flexibilité nécessaire pour gérer les nombreux environnements logiciels de l'informatique moderne.
Il est important de noter que les entreprises peuvent coexister avec des conteneurs et des machines virtuelles. Par exemple, il est courant d’exécuter des conteneurs dans des machines virtuelles, car de nombreuses entreprises disposent d’une infrastructure basée sur ces dernières.
Une entreprise peut choisir un conteneur pour exécuter une application et utiliser une machine virtuelle pour fournir l'infrastructure sous-jacente. Cette méthode combine la portabilité et la vitesse des conteneurs avec la sécurité des machines virtuelles. Dans un autre scénario, une institution financière peut utiliser des machines virtuelles pour ses systèmes de bases de données, assurant une sécurité plus stricte avec isolation des ressources, et utiliser des conteneurs pour les applications frontales comme les applications mobiles orientées client.
Et l'article de blog «Conteneurs vs. VM : quelle est la différence ?» en explique davantage.
La vidéo suivante présente les principes de base de la conteneurisation et sa comparaison avec l’utilisation de machines virtuelles :
La sélection d’une machine virtuelle et d’un fournisseur de cloud commence par l’examen de vos besoins en workloads et de vos exigences budgétaires, ainsi que d’autres facteurs critiques. Vous trouverez ci-dessous les 10 éléments à prendre en compte lors de la sélection d’un fournisseur de services de machines virtuelles.
Machines virtuelles hautement évolutives, pour un ou plusieurs locataires, que vous pouvez démarrer rapidement pour un isolement et un contrôle maximum du réseau.
La famille IBM Power Virtual Servers comprend des serveurs IBM Power virtuels multi-locataires configurables avec accès aux services cloud IBM. Déplacez et gérez de manière fluide les workloads dans des environnements cloud et sur site.
IBM z/VM est un système d'exploitation doté d'une technologie d'hyperviseur et de virtualisation évolutive et riche en sécurité conçue pour exécuter des serveurs invités comme Linux, z/OS et z/TPF ainsi que Red Hat OpenShift sur les serveurs IBM Z et LinuxONE.
Le cloud computing transforme l’infrastructure informatique en fonctionnalité : il vous permet de vous « brancher » sur les ressources informatiques et les applications via Internet, sans avoir à les installer et à les gérer sur site.
Le cloud hybride regroupe des services de cloud public, de cloud privé et une infrastructure sur site au sein d’un environnement informatique distribué.
Le DevOps accélère la distribution de logiciels de meilleure qualité en combinant et en automatisant le travail des équipes de développement logiciel et d’exploitation informatique.
Les microservices, ou architecture de microservices, sont une approche architecturale cloud native dans laquelle une seule application est composée de nombreux composants ou services plus petits, faiblement couplés et déployables indépendamment.
Les conteneurs sont des unités exécutables de logiciel dans lesquelles le code de l'application est emballé avec ses bibliothèques et ses dépendances, de manière commune afin que le code puisse être exécuté n'importe où, que ce soit sur un ordinateur de bureau, dans un système informatique traditionnel ou dans le cloud.
La virtualisation est un processus qui permet une utilisation plus efficace du matériel informatique physique. Elle constitue la base du cloud computing.