Blog ENI : Toute la veille numérique !
-25€ dès 75€ sur les livres en ligne, vidéos... avec le code FUSEE25. J'en profite !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici

Machines virtuelles, containers et Cloud

La virtualisation

La virtualisation est une technique permettant de faire fonctionner simultanément, séparément et isolément plusieurs systèmes d’exploitation ou applications sur une même machine physique.

La distinction entre système d’exploitation et application est importante : la machine virtuelle n’est pas le seul mécanisme de virtualisation. Une application peut également être virtualisée à l’aide de mécanismes d’isolation.

De nombreux critères interviennent dans la décision de virtualiser ou non. Le principal reste la réalisation d’économies. Économie financière tout d’abord, puisque le coût d’acquisition sera moindre ainsi que le coût de maintenance matérielle. Économie de ressources ensuite par une bonne répartition des machines virtuelles sur les serveurs afin d’optimiser l’ensemble des performances. Économie d’administration car il est plus simple d’installer, déployer et migrer des machines virtuelles, il est notamment possible via divers outils de transformer une machine physique en machine virtuelle et vice-versa, et l’environnement matériel virtuel est généralement identique pour chaque machine virtuelle.

1. Le Cloud

Le Cloud permet de louer des services d’infrastructure via Internet : serveurs virtuels, réseaux, stockages, etc., sous forme d’offre IaaS (Infrastructure as a Service) par exemple. Un serveur sur le Cloud n’est en fait qu’une machine virtuelle, hébergée sur les serveurs d’un prestataire (Amazon, Google, Microsoft ou autre), et accessible soit par Internet, soit par le réseau de votre entreprise (dans le cas d’un VPN ou d’un...

Méthodes de virtualisation

1. L’isolation

L’isolation consiste à exécuter des applications dans des environnements isolés les uns des autres, appelés contextes ou zones d’isolation. Plusieurs instances d’une même application peuvent être démarrées simultanément, chacune dans son contexte. L’application ne fonctionne pas dans une véritable machine virtuelle, mais se trouve simplement isolée des autres grâce à une fonctionnalité du système d’exploitation. L’isolateur le plus connu sur Linux est chroot, qui permet de changer de racine.

images/11CE01V6.png

Principe des isolateurs

Le principe de chroot est simple. Un répertoire contient tous les éléments nécessaires à l’exécution d’un programme, par exemple un serveur web ou ftp : l’application et ses fichiers de configuration, mais aussi les bibliothèques et les commandes qu’elle utilise. La commande chroot est appliquée à ce répertoire qui devient la nouvelle racine. Les processus du serveur n’ont accès qu’aux données contenues dans cette nouvelle racine et ne peuvent en sortir. 

Le noyau Linux dispose de mécanismes d’isolation intégrés appelés les namespaces ou "espaces de nommage" qui définissent ce que les processus peuvent voir....

Paravirtualisation

1. Principe

Lorsqu’on est en présence d’un hyperviseur de type 1 ou 2, le système hôte peut proposer une interface logicielle optimisée et similaire à du matériel réel. C’est ce qu’on appelle de la paravirtualisation. L’interface logicielle API permet au système invité de la machine virtuelle un accès quasi-direct à un ou plusieurs composants matériels. 

images/11CE05V6.png

Paravirtualisation : le système accède à l’hôte via des API

Cette possibilité peut être offerte par le noyau du système hôte, par l’architecture matérielle (par exemple le microprocesseur), ou par les deux.

Dans le cas de l’accès au matériel par les systèmes invités, les pilotes qui seront installés établissent une communication directe avec l’API du système hôte.

Sous Linux les produits XEN et KVM utilisent si elles sont disponibles des techniques de paravirtualisation.

2. VirtIO

VirtIO, Virtual Input Output, est l’interface de programmation (API) du noyau Linux dédiée aux pilotes de périphériques des machines virtuelles (ou plutôt des systèmes invités). 

Une communication de type FIFO est établie entre l’hyperviseur (le noyau du système hôte) et le noyau du système invité. Les pilotes se basent sur cette interface.

VirtIO est l’API par défaut de KVM, et Linux propose les pilotes réseau et disques associés. Des pilotes sont aussi disponibles pour...

Les containers

1. Principe

L’isolation d’un ou plusieurs processus est assurée par le noyau Linux à l’aide des deux mécanismes que sont les espaces de nommage et les groupes de contrôle.

Le noyau Linux intègre ces fonctions par défaut :

Les namespaces, ou espaces de nommages, permettent :

  • une isolation des processus, et un processus de PID 1 comme premier processus dans son espace,

  • une isolation du réseau, avec sa propre adresse IP et ses ports,

  • une isolation des volumes de données, du stockage,

  • une isolation des droits et des utilisateurs par rapport à l’hôte : être root au sein d’un container peut ainsi correspondre à un utilisateur non root sur l’hôte.

Les cgroups, ou groupes de contrôle, définissent les ressources du système qu’un groupe de processus peut utiliser, afin de :

  • limiter les ressources mémoires ou processeur d’un groupe,

  • gérer les priorités,

  • obtenir des informations « comptables » sur ce groupe,

  • contrôler dans son ensemble (arrêter, par exemple) plusieurs processus,

  • isoler ce groupe, en l’associant à un espace de nommage,

L’association de ces deux mécanismes est la base du principe du container (ou conteneur).

2. Container et machine virtuelle

Les containers sont souvent comparés à des machines virtuelles, et bien qu’il s’agisse de deux types de technologies de virtualisation, le concept est différent.

Les machines virtuelles fonctionnent sur des hyperviseurs. Que le matériel utilisé soit émulé ou non, les machines virtuelles exécutent un système d’exploitation complet, avec noyau et pilotes de périphériques (même si ceux-ci utilisent de la paravirtualisation). Les applications s’installent sur le système d’exploitation de la machine virtuelle. Du point de vue de l’hyperviseur, la machine virtuelle est un processus unique.

Les conteneurs fonctionnent directement sur l’hôte, sur le même noyau. Les processus qu’ils contiennent sont des processus comme les autres, mais isolés et limités en ressources. Si un conteneur contient 10 processus, il y aura bien 10 processus en cours de fonctionnement sur l’hôte.

images/11CE10V6.png

Le container utilise le noyau...

Le Cloud

Le Cloud, ou Cloud Computing, ou informatique en nuage, c’est l’utilisation des moyens informatiques, généralement des serveurs, distants au travers d’un réseau. Dans le cadre d’un Cloud public, ce réseau est Internet. Le mot Cloud, ou nuage, indique que l’utilisateur ne sait pas, ou n’a pas besoin de connaître l’emplacement des serveurs.

Le Cloud peut aussi être privé. Dans ce cas, l’infrastructure associée est gérée par l’organisation pour son propre compte, mais propose à l’ensemble de ses services ou entités des moyens identiques à ceux d’un Cloud public : serveurs, réseaux, exposition, etc.

Ce qui distingue une offre Cloud d’un service classique :

  • Des ressources en libre-service : on peut créer, utiliser, modifier ou supprimer simplement un serveur selon ses besoins et ses moyens, généralement de manière automatique, avec une réponse immédiate.

  • Le paiement à l’usage ou Pay-per-use : on ne paie que ce que l’on consomme. La consommation est mesurée par l’opérateur, non seulement pour adapter ses capacités (ajout de ressources physiques ou logiques), mais aussi pour facturer le client.

  • La mutualisation : les infrastructures matérielles (serveurs, baies disques, réseaux) sont communes à l’ensemble des clients et peuvent être hétérogènes. Les couches supérieures sont entièrement virtualisées : machines virtuelles, containers, réseaux, répartiteurs de charges, etc.

  • L’ouverture : que ce soit un Cloud public ou privé, les services sont accessibles à l’utilisateur via des terminaux web, des API, des CLI, etc. Ceci permet un niveau avancé d’automatisation.

Un mot important est l’élasticité. On dit que le Cloud est élastique, dans le sens où il est capable de s’adapter aux besoins le plus rapidement possible en étendant ou réduisant à la demande ses services. On peut aussi parler de plasticité et de scalabilité.

On se concentrera ici sur le Cloud Public.

1. Services Cloud

On distingue plusieurs services proposés par les opérateurs, reconnaissables au suffixe...

Systèmes invités

1. Hyperviseur et additions

Par système invité, on entend le système d’exploitation déployé sur une machine virtuelle. Selon l’OS installé sur l’hôte physique, plusieurs logiciels de virtualisation sont disponibles. Pour Linux :

  • Qemu,

  • KVM, dérivé de qemu, mais qui, utilisant virtio et un accès au noyau, offre de meilleures performances,

  • Virtualbox, de l’éditeur Oracle, disponible également sous Windows et macOS,

  • VMWare Workstation, de VMWare, lui aussi multiplateforme,

  • Xen, hyperviseur de type 1, qui nécessite une installation particulière.

Qemu et KVM disposent bien entendu de commandes accessibles via le shell, mais aussi, grâce à libvirt, d’une interface graphique très performante, permettant même de gérer des machines virtuelles d’autres hyperviseurs (comme Virtualbox, Xen, VMware…).

images/11CE15V6.png

Le virtualiseur KVM au sein d’une Fedora dans un système Virtualbox Fedora sur un Mac OS X

Pour obtenir un fonctionnement optimal des systèmes d’exploitation invités, quelques éléments sont à prendre en compte :

  • La quantité de mémoire allouée doit être celle nécessaire au système et à l’environnement graphique. Un hôte avec 16 Go de mémoire peut faire fonctionner...