cours
Qu'est-ce qu'une machine virtuelle ? Types, avantages et cas d'utilisation
Les machines virtuelles (VM) sont un élément essentiel de l'infrastructure informatique. Il s'agit d'émulations logicielles d'ordinateurs physiques qui offrent une flexibilité logistique et informatique.
Dans cet article, j'expliquerai les machines virtuelles, leur fonctionnement, leurs avantages, les cas d'utilisation les plus courants, et bien plus encore !
Qu'est-ce qu'une machine virtuelle (VM) ?
Une machine virtuelle est une technologie qui émule des systèmes informatiques complets : unité centrale, mémoire, stockage, interfaces réseau et système d'exploitation.
Les VM empruntent des ressources à l'ordinateur physique pour générer ces ordinateurs virtuels. Par exemple, si un ordinateur dispose de 8 unités centrales et de 16 Go de mémoire vive, nous pouvons virtualiser un environnement avec 4 unités centrales et 8 Go de mémoire vive, séparés du matériel physique.
Nous nous appuyons sur des hyperviseurs, des logiciels qui contrôlent la virtualisation des ressources matérielles et gèrent plusieurs environnements virtuels, pour gérer plusieurs machines virtuelles sur un seul ensemble de matériel.
Machines virtuelles vs. Machines physiques
Il est important de comprendre en quoi une machine virtuelle peut différer d'une machine physique.
Commençons par clarifier la différence entre le matériel et le logiciel. Le matériel fait référence aux composants physiques d'un système, tels que la carte mère, le processeur, la mémoire, le processeur graphique et le stockage. Les logiciels, tels que le système d'exploitation ou d'autres programmes, fonctionnent sur le matériel.
Les machines physiques fonctionnent directement sur le matériel. D'autre part, les machines virtuelles exécutent un logiciel qui crée du matériel "virtualisé". Comme nous l'avons mentionné précédemment, le système de base peut fonctionner sur 64 Go de RAM, mais nous pouvons virtualiser 32 Go de RAM à partager avec la machine virtuelle.
Comme les machines virtuelles peuvent partager des ressources matérielles, nous pouvons allouer efficacement les ressources dont une machine virtuelle a besoin. Par exemple, si nous disposons d'un serveur puissant, nous pouvons faire fonctionner plusieurs machines virtuelles qui effectuent de nombreuses tâches en parallèle, en ne disposant que des ressources nécessaires pour que chaque machine virtuelle accomplisse sa tâche. Cela peut améliorer l'utilisation globale des ressources et les coûts.
Le tableau suivant compare les machines virtuelles et physiques côte à côte :
Fonctionnalité |
Machines virtuelles (VM) |
Machines physiques |
Dépendance à l'égard du matériel |
Fonctionne sur du matériel virtualisé fourni par le logiciel. |
S'exécute directement sur des composants matériels physiques. |
Allocation des ressources |
Partage des ressources matérielles (par exemple, RAM, CPU) avec d'autres VM. |
Ressources matérielles entièrement dédiées. |
Évolutivité |
Hautement évolutif ; plusieurs machines virtuelles peuvent être exécutées sur une seule machine physique. |
Limité par le matériel de la machine physique. |
Efficacité |
Permet une meilleure utilisation des ressources en n'allouant que les ressources nécessaires. |
Peut conduire à une sous-utilisation du matériel. |
Flexibilité |
Facile à reconfigurer et à reproduire. |
Moins flexible ; nécessite des ajustements ou des remplacements physiques. |
Coût |
Coût moins élevé grâce au partage des ressources. |
Coût plus élevé car chaque machine nécessite son propre matériel. |
Performance |
Léger surcoût dû à la virtualisation. |
Performances accrues grâce à l'utilisation directe du matériel. |
Types de machines virtuelles
Il existe deux types principaux de machines virtuelles : les machines système et les machines processus. L'un émule un système d'exploitation complet, tandis que l'autre émule une seule application :
Machines virtuelles du système
Les machines virtuelles système sont celles auxquelles nous pensons le plus souvent lorsque nous parlons de machines virtuelles. Ils simulent un système d'exploitation entier, tel qu'un ordinateur Linux complet. Un seul matériel peut ainsi simuler plusieurs instances de système d'exploitation. Ceci est utile si nous avons besoin de plusieurs environnements pour faire des choses différentes.
Les machines virtuelles du cloud en sont un exemple courant. Dans ces systèmes, des environnements OS entiers sont hébergés et accessibles à distance via l'internet, ce qui les rend idéaux pour une infrastructure évolutive.
Traiter les machines virtuelles
Les processus VM sont des processus singuliers qui s'exécutent sur un système d'exploitation hôte. Il ne s'agit pas d'un système complet en soi, mais d'environnements plus petits qui permettent à n'importe quel ordinateur d'exécuter une application qui n'est pas nécessairement native dans le système d'exploitation de base. Par exemple, la machine virtuelle Java permet à n'importe quelle machine d'exécuter des applications Java en mode natif.
Les machines virtuelles de processus sont plus légères que les machines virtuelles de système et sont largement utilisées pour l'exécution d'applications isolées spécifiques, en particulier dans les scénarios de développement et de débogage.
Type de VM |
Description |
Cas d'utilisation |
Machine virtuelle du système |
Simule une machine physique complète, y compris le matériel et le système d'exploitation. |
Exécution de plusieurs systèmes d'exploitation, consolidation de serveurs et tests. |
Traiter la machine virtuelle |
Exécute une seule application ou un seul processus, fournissant ainsi un environnement isolé. |
Exécution, développement et débogage d'applications multiplateformes. |
Composants d'une machine virtuelle
Chaque machine virtuelle comporte quelques composants de base. Bien que la mise en œuvre exacte puisse différer, ils devraient tous comprendre des éléments similaires. Passons-les en revue dans cette section.
1. Hyperviseur
D'une manière générale, un hyperviseur est la couche logicielle qui gère et initialise les machines virtuelles. Il gère les ressources entre la VM et la machine physique.
Il existe deux types d'hyperviseurs :
- Les hyperviseurs de type 1 s'installent au-dessus du métal nu et fonctionnent sur le serveur lui-même. Ils ont généralement un accès direct aux ressources du serveur.
- Hyperviseurs de type 2 sont généralement installés sur un système d'exploitation hôte. Ils n'ont pas le contrôle total des ressources de l'ordinateur et sont gérés par le système d'exploitation hôte.
2. Matériel virtuel
L'hyperviseur alloue le matériel virtuel à la VM. Il s'agit de séparer virtuellement les ressources physiques de la machine et de les confier à l'environnement virtuel. Il peut s'agir de diviser la mémoire vive, les cœurs de l'unité centrale et d'autres ressources informatiques afin que la VM puisse exécuter des processus.
3. Système d'exploitation invité
Le système d'exploitation invité s'exécute à l'intérieur de la VM. Il ne doit pas nécessairement s'agir du même système d'exploitation que l'hôte et peut s'agir de n'importe quel système d'exploitation. Différentes machines virtuelles sur le même hyperviseur ou serveur peuvent même avoir des systèmes d'exploitation différents en fonction de leur utilisation.
4. Disque virtuel
Les machines virtuelles disposent souvent de disques virtuels pour stocker temporairement des informations pendant leur fonctionnement. Parfois, nous transférons des données d'un disque virtuel vers le système de stockage réel de l'ordinateur hôte, mais nous le faisons avec précaution pour éviter d'endommager l'ordinateur hôte.
Schéma d'architecture d'un serveur sur lequel tournent trois machines virtuelles. Source de l'image : DataCamp.
Machines virtuelles vs. Conteneurs
La conteneurisation est une autre méthode de virtualisation très répandue. Bien qu'ils aient des objectifs similaires, les machines virtuelles et les conteneurs sont assez différents dans leur mise en œuvre. Voyons leurs différences.
- Les machines virtuelles sont conçues pour reproduire l'intégralité d'un appareil, y compris son matériel. Cela signifie qu'une VM reproduira des éléments tels qu'une carte mère, un processeur, un dispositif de mise en réseau, etc. afin de garantir que toutes les applications exécutées sur la VM semblent s'exécuter sur un matériel indépendant.
- Les conteneurs, en revanche, sont conçus pour exécuter des applications logicielles spécifiques indépendamment de l'environnement. Ils n'initialisent pas leurs ressources mais s'exécutent sur les ressources de l'ordinateur hôte.
Schéma d'architecture d'un serveur utilisant trois conteneurs. Source de l'image : DataCamp.
Quand utiliser des machines virtuelles ou des conteneurs ?
Utilisez les VM lorsque vous devez exécuter plusieurs systèmes d'exploitation en parallèle et que vous avez besoin d'une gestion discrète des ressources. Les machines virtuelles sont également préférables lorsque vous avez besoin d'une quantité constante et prévisible de ressources pour vos processus.
Les conteneurs, en revanche, sont idéaux pour le déploiement d'applications légères. Comme les conteneurs partagent des ressources, il est important de s'assurer que votre serveur peut gérer plusieurs conteneurs à la fois et allouer les ressources de manière appropriée.
Si ces concepts vous sont inconnus, le cours sur les concepts de conteneurisation et de virtualisation pourrait vous aider à comprendre leurs cas d'utilisation. Pour en savoir plus sur les différences entre les machines virtuelles et les conteneurs, consultez l' article de blog comparant les conteneurs et les machines virtuelles.
Avantages des machines virtuelles
Les machines virtuelles présentent de nombreux avantages, notamment une meilleure efficacité des ressources et une plus grande sécurité. Une bonne utilisation des machines virtuelles peut simplifier votre infrastructure technologique et la rendre plus robuste. Examinons de plus près leurs avantages :
Efficacité des ressources et réduction des coûts
Comme les VM partagent le même matériel, vous pouvez obtenir une utilisation beaucoup plus importante de vos serveurs physiques en utilisant des VM. La combinaison de différents environnements réduit la nécessité d'acheter du matériel spécifique à un cas d'utilisation donné et permet au contraire de partager les ressources et de réaliser des économies globales.
Isolement et sécurité
Comme chaque VM fonctionne indépendamment du système hôte, elle est naturellement isolée. Cela renforce la sécurité en minimisant le risque qu'un seul système tombe en panne ou qu'une violation devienne un problème. Il n'y a généralement pas de communication entre les machines virtuelles et elles ne dépendent pas les unes des autres. Il est donc facile d'arrêter les machines virtuelles qui posent problème ou d'isoler rapidement les problèmes de sécurité.
Flexibilité et portabilité
Les machines virtuelles offrent une grande flexibilité aux infrastructures informatiques car elles peuvent être facilement répliquées. Cela simplifie les choses lorsque plusieurs environnements doivent être lancés simultanément, car ils peuvent partager les mêmes instructions de démarrage. Cela permet également de faciliter les tests, les sauvegardes et la reprise après sinistre.
Cas d'utilisation courants des machines virtuelles
Examinons quelques-unes des utilisations les plus courantes des machines virtuelles. Ils peuvent effectuer toutes les tâches qui peuvent être réalisées sur un ordinateur normal et sont d'une valeur inestimable pour toute une série d'opérations !
Environnements de test et de développement
Les développeurs utilisent souvent les machines virtuelles pour créer des environnements de test et de développement pour les nouveaux logiciels ou les correctifs. Les machines virtuelles permettent de tester facilement les modifications apportées à un programme sur différents écosystèmes afin d'effectuer des essais approfondis sans avoir d'incidence sur la machine hôte. Un seul script peut être utilisé pour déployer la même modification sur un grand nombre de machines virtuelles à des fins de test.
Consolidation des serveurs
Les professionnels consolident plusieurs serveurs physiques en un nombre réduit de serveurs à l'aide de machines virtuelles. Cela permet de réduire les coûts globaux de maintenance du matériel et d'économiser de l'espace dans les salles de serveurs. Elle améliore également l'utilisation des ressources, car les machines physiques ne sont plus liées à un environnement ou à une tâche unique.
Exécution d'applications patrimoniales
Avec l'évolution des technologies, les systèmes d'exploitation modernes peuvent ne plus être en mesure de prendre en charge les processus existants. L'utilisation d'une VM permet de maintenir ces applications patrimoniales pendant qu'elles sont modernisées, de sorte que les opérations peuvent se poursuivre sans problème.
Reprise après sinistre et sauvegardes
Avec le volume croissant de données et d'informations, les machines virtuelles peuvent servir de sauvegardes rapides d'environnements entiers afin d'accroître la robustesse d'un système. Si une seule VM tombe en panne sur un serveur physique, d'autres copies de la même VM peuvent continuer à fonctionner ou prendre le relais. Il s'agit d'une composante essentielle de l'informatique en nuage.
L'informatique en nuage (cloud computing)
La majeure partie du cloud repose sur la virtualisation. Les plateformes cloud comme AWS, Azure et Google Cloud peuvent fournir une infrastructure évolutive et flexible, car il est facile de faire tourner et de fermer des machines virtuelles. Ils peuvent rapidement faire des copies virtuelles de sites web ou de programmes entiers pour répondre à une demande croissante, puis les supprimer lorsqu'ils ne sont plus nécessaires.
Pour en savoir plus sur la façon dont le cloud computing tire parti de la virtualisation, consultez le cours sur la compréhension du cloud computing.
Les machines virtuelles dans la science des données
Grâce à leur flexibilité et à leur utilité, les machines virtuelles sont d'excellents outils pour la science des données ! Voici quelques-unes de leurs nombreuses utilisations dans ce domaine :
Environnements de développement isolés
Tout comme les ingénieurs en informatique peuvent utiliser des machines virtuelles pour créer des environnements de développement uniques, les scientifiques des données peuvent utiliser des machines virtuelles pour créer des environnements isolés pour différents projets de données.
Par exemple, vous pouvez utiliser une VM pour construire un modèle prédictif en Python et une autre pour prétraiter les données avec R. Cette séparation permet d'exécuter simultanément plusieurs projets à forte intensité de calcul sur différents environnements, ce qui améliore l'efficacité.
Reproductibilité des expériences en science des données
Les scientifiques des données devront souvent être en mesure de reproduire les résultats. Par exemple, lorsque vous entraînez un modèle d'apprentissage profond, vous pouvez partager avec vos collègues une VM qui inclut la même version de TensorFlow, les mêmes bibliothèques et les mêmes ensembles de données. Cela garantit la cohérence des expériences et élimine le risque que les différences environnementales affectent les résultats.
Évolutivité pour les projets de big data
Au fur et à mesure que les projets prennent de l'ampleur, plusieurs grappes de machines virtuelles dans le cloud peuvent s'avérer nécessaires. Imaginez que vous entraîniez un modèle de traitement du langage naturel sur des téraoctets de données textuelles ; les fournisseurs de cloud comme AWS peuvent automatiquement répartir la charge de travail sur plusieurs VM. Par exemple, des outils comme Apache Spark peuvent s'appuyer sur des clusters virtuels pour traiter efficacement des calculs à grande échelle.
Logiciels de machines virtuelles populaires
Il existe de nombreux outils qui vous permettent d'exécuter des machines virtuelles sur votre ordinateur et dans des environnements d'entreprise. Voici quelques-unes des plus populaires :
VMware
VMware est l'un des outils de virtualisation les plus populaires pour les environnements d'entreprise. Elle offre une assistance solide et des solutions basées sur le cloud. VMware collabore avec ses clients pour leur fournir des outils de virtualisation des postes de travail et des serveurs, en fonction de leurs besoins. Leur principal hyperviseur est l'hyperviseur VMware ESXi Type 1, qui permet une virtualisation aisée des serveurs et s'accompagne d'une interface HTML 5 facile à utiliser.
Microsoft Hyper-V
Hyper-V de Microsoft est un hyperviseur adapté à l'environnement Windows Server. Cela signifie que toute virtualisation nécessite un système d'exploitation Windows pour fonctionner et utilise des partitions de disque. Il permet une virtualisation aisée des bureaux virtuels dans l'environnement Windows Server et constitue une excellente solution pour ceux qui souhaitent rester dans l'écosystème Windows ou même Azure.
VirtualBox
VirtualBox est l'un des logiciels de virtualisation open-source les plus populaires. Il permet aux utilisateurs de créer des bureaux virtuels de toutes sortes sur leurs propres ordinateurs. Il offre une interface simple et peut utiliser des images de disques pour faciliter la reproductibilité. Il s'agit d'un excellent outil d'introduction au monde de la virtualisation, fortement recommandé pour la pratique et l'expérience.
KVM (machine virtuelle basée sur le noyau)
Le noyau Linux vous permet de créer des machines appelées KVM. Tous les systèmes Linux modernes sont livrés avec KVM et permettent aux utilisateurs de convertir n'importe quel matériel basé sur Linux en hyperviseur. Elle exploite le matériel existant et est souvent gérée à l'aide d'un logiciel de virtualisation tel que Red Hat.
Conclusion
Les machines virtuelles font partie intégrante de l'écosystème informatique en vous permettant de créer rapidement plusieurs environnements virtuels à partir d'un seul serveur. Ils sont souvent gérés par un logiciel d'hyperviseur, qui crée et alloue des ressources en fonction des besoins. Cela permet d'améliorer l'utilisation des ressources, la reproductibilité, la résilience et l'efficacité, en particulier lorsque plusieurs processus doivent être exécutés en parallèle.
Pour explorer ces concepts et comprendre comment les VM se comparent aux technologies telles que les conteneurs, consultez le cours sur les concepts de conteneurisation et de virtualisation. C'est un excellent moyen d'approfondir votre compréhension de ces technologies essentielles !
Obtenez une certification en science des données
Validez vos compétences professionnelles de data scientist.

FAQ
Les machines virtuelles peuvent-elles consommer trop de ressources ?
Il est possible de surallouer des ressources à une VM. Si c'est le cas, recréez la VM avec moins de ressources à l'aide de votre logiciel de gestion.
Les machines virtuelles posent-elles des problèmes de sécurité ?
Les machines virtuelles étant généralement conçues pour être complètement isolées du reste du système, leur utilisation ne présente généralement qu'un risque de sécurité minimal.
Quels sont les principaux cas d'utilisation d'une VM ?
Nous utilisons généralement des VM pour garantir une bonne allocation des ressources pour une grande variété de tâches, telles que les algorithmes d'apprentissage automatique, la gestion de sites web et la programmation dans le cloud. Il ne s'agit là que de quelques exemples d'utilisation d'une VM.
Existe-t-il une meilleure façon de créer une VM ?
Il n'existe pas de VM optimale unique qui convienne à tous les usages. Elles sont conçues pour être adaptées à des besoins spécifiques, et il est préférable d'adapter votre VM à l'objectif spécifique plutôt que de créer une VM qui peut tout faire.
Quel logiciel VM populaire puis-je utiliser pour essayer la virtualisation ?
Je vous recommande vivement d'essayer VMware pour commencer.
Je suis un data scientist avec de l'expérience dans l'analyse spatiale, l'apprentissage automatique et les pipelines de données. J'ai travaillé avec GCP, Hadoop, Hive, Snowflake, Airflow et d'autres processus d'ingénierie et de science des données.
Apprenez-en plus sur la virtualisation avec ces cours !
cursus
Conteneurisation et virtualisation
cours