GNU/Linux >> Tutoriels Linux >  >> Linux

Qu'est-ce qu'un conteneur Linux et un hyperviseur Linux ?

Une machine virtuelle (VM) est un terme assez générique pour de nombreuses technologies de virtualisation.

Il existe de nombreuses variantes des technologies de virtualisation, mais les principales sont :

  • Virtualisation au niveau matériel
  • Virtualisation au niveau du système d'exploitation

qemu-kvm et VMWare sont des exemples du premier. Ils utilisent un hyperviseur pour gérer les environnements virtuels dans lesquels un système d'exploitation complet s'exécute. Par exemple, sur un qemu-kvm système, vous pouvez avoir une machine virtuelle exécutant FreeBSD, une autre exécutant Windows et une autre exécutant Linux.

Les machines virtuelles créées par ces technologies se comportent comme des ordinateurs individuels isolés pour l'invité. Ceux-ci ont un processeur virtuel, une RAM, une carte réseau, des graphiques, etc. que l'invité considère comme l'article authentique. Pour cette raison, de nombreux systèmes d'exploitation différents peuvent être installés sur les machines virtuelles et ils fonctionnent "prêts à l'emploi" sans aucune modification nécessaire.

Bien que cela soit très pratique, dans la mesure où de nombreux systèmes d'exploitation s'installent sans trop d'efforts, cela présente un inconvénient dans la mesure où l'hyperviseur doit simuler tout le matériel, ce qui peut ralentir les choses. Une alternative est le matériel para-virtualisé, dans lequel un nouveau périphérique virtuel et un pilote sont développés pour l'invité qui est conçu pour les performances dans un environnement virtuel. qemu-kvm fournir le virtio gamme d'appareils et de pilotes pour cela. Un inconvénient est que le système d'exploitation invité doit être pris en charge; mais s'il est pris en charge, les avantages en termes de performances sont considérables.

lxc est un exemple de virtualisation au niveau du système d'exploitation, ou de conteneurs. Sous ce système, il n'y a qu'un seul noyau installé - le noyau hôte. Chaque conteneur est simplement un isolement des processus de l'espace utilisateur. Par exemple, un serveur Web (par exemple apache ) est installé dans un conteneur. En ce qui concerne ce serveur Web, le seul serveur installé est lui-même. Un autre conteneur peut exécuter un serveur FTP. Ce serveur FTP n'est pas au courant de l'installation du serveur Web - seulement le sien. Un autre conteneur peut contenir l'installation utilisateur complète d'une distribution Linux (tant que cette distribution est capable de fonctionner avec le noyau du système hôte).

Cependant, il n'y a pas d'installations de système d'exploitation distinctes lors de l'utilisation de conteneurs - seulement des instances isolées de services utilisateur. Pour cette raison, vous ne pouvez pas installer différentes plates-formes dans un conteneur - pas de Windows sous Linux.

Les conteneurs sont généralement créés en utilisant un chroot . Cela crée une racine privée séparée (/ ) pour un processus à utiliser. En créant de nombreuses racines privées individuelles, les processus (serveurs Web ou distribution Linux, etc.) s'exécutent dans leur propre système de fichiers isolé. Techniques plus avancées, telles que cgroups peut isoler d'autres ressources telles que le réseau et la RAM.

Il y a des avantages et des inconvénients dans les deux cas et de nombreux débats de longue date quant à savoir lequel est le meilleur.

  • Les conteneurs sont plus légers, dans la mesure où un système d'exploitation complet n'est pas installé pour chacun ; c'est le cas des hyperviseurs. Ils peuvent donc fonctionner sur du matériel moins performant. Cependant, ils ne peuvent exécuter que des invités Linux (sur des hôtes Linux). De plus, comme ils partagent le noyau, il est possible qu'un conteneur compromis en affecte un autre.
  • Les hyperviseurs sont plus sécurisés et peuvent exécuter différents systèmes d'exploitation, car un système d'exploitation complet est installé sur chaque VM et les invités ne connaissent pas les autres VM. Cependant, cela utilise plus de ressources sur l'hôte, qui doit être relativement puissant.

Un conteneur est un peu comme un environnement chroot sauf qu'il réalise une isolation plus complète de l'espace utilisateur. Il ne fournit pas une vraie VM, mais un système d'exploitation virtuel. Les machines virtuelles créent l'illusion de plusieurs machines, dans chacune desquelles un système d'exploitation réel et complet peut fonctionner comme sur du métal nu. "Système d'exploitation complet" comprend ici un noyau. Certaines VM (par exemple QEMU) permettent même de stimuler différents types d'architectures "bare metal".

Les conteneurs créent plutôt l'illusion de plusieurs noyaux, chacun exécutant un espace utilisateur complet. Vous pouvez, par exemple, exécuter Debian dans un conteneur et Arch dans un autre, de sorte que la perspective depuis l'intérieur du conteneur est à peu près la même que celle d'une machine virtuelle. Cependant, vous ne pouvez exécuter qu'un espace utilisateur de système d'exploitation compatible avec le seul noyau réel, dans ce cas, Linux. Ceci est différent des vraies machines virtuelles, où vous pouvez exécuter un noyau indépendant et donc n'importe quel type de système d'exploitation.

Les vraies machines virtuelles sont donc plus chères, en termes de ressources, que les conteneurs ; si vous n'avez pas besoin de noyaux différents dans chaque machine virtuelle, vous pouvez tout aussi bien utiliser un conteneur.

Il existe d'autres systèmes de virtualisation qui font quelque chose de similaire à LXE, comme openVZ, largement utilisé par les fournisseurs de VPS. Un VPS openVZ est un espace utilisateur indépendant qui utilise le noyau de son système d'exploitation hôte. C'est pourquoi ces VPS viennent dans un tas de saveurs Linux mais rien d'autre; ils doivent être compatibles avec le noyau hôte.

La virtualisation de style OpenVZ et LXC est appelée virtualisation au niveau du système d'exploitation .

Un hyperviseur est un système qui gère les machines virtuelles, telles que VirtualBox, QEMU ou Xen. Certains hyperviseurs, tels que Xen, fonctionnent sur du métal nu et ne nécessitent pas de système d'exploitation hôte (bien qu'ils puissent nécessiter un système d'exploitation hébergé pour servir d'interface de contrôle). D'autres, tels que VirtualBox et QEMU, s'exécutent dans un système d'exploitation hôte. Certains, comme QEMU, permettent de simuler différentes architectures de machines; d'autres, comme VirtualBox, ne le font pas (c'est-à-dire que l'architecture de la machine virtuelle est toujours la même que celle de l'hôte réel). La simulation d'une architecture nécessite plus de ressources, tout comme les vraies machines virtuelles nécessitent plus de ressources que les conteneurs.

La virtualisation de type hyperviseur est appelée virtualisation au niveau de la plate-forme .


Linux
  1. Qu'est-ce qu'un serveur Linux et pourquoi votre entreprise en a-t-elle besoin ?

  2. Que sont vdso et vsyscall ?

  3. À quoi servent les fichiers /etc/shadow et shadow cache dans le système d'exploitation Linux ?

  4. Quelle est la différence entre un appel Library et un appel System sous Linux ?

  5. Quelle est la différence entre les pages de manuel 'hier(7)' et 'file-hierarchy(7)' ?

Redox OS :un système d'exploitation écrit en Rust

Premiers pas avec le système d'exploitation Linux

Linux est-il un système d'exploitation ou un noyau ?

Histoire Unix et Linux

Qu'est-ce que le système de fichiers Linux ? Guide facile

Qu'est-ce que les appels système Linux et les fonctions de bibliothèque ?