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

10

J'ai regardé le site stackexchange mais je n'ai rien trouvé. J'ai regardé l'entrée wikipedia sur le conteneur Linux https://en.wikipedia.org/wiki/LXC et ainsi que l'hyperviseur https://en.wikipedia.org/wiki/Hypervisor mais l'explication des deux est au-delà d'une personne qui n'a pas travaillé non plus comprendra. J'ai également vu http://www.linux.com/news/enterprise/cloud-computing/785769-containers-vs-hypervisors-the-battle-has-just-begun mais cela ne l'explique pas non plus.

J'ai joué avec des VM comme virtualbox. L'une des idées de départ pour ma compréhension limitée aurait pu être pour les machines virtuelles étaient peut-être de tester des logiciels dans un environnement sandbox (avoir une boîte Solaris lorsque vous ne pouvez pas acheter / vous permettre d'avoir la machine et avoir encore une idée de la façon dont le logiciel que vous développez pour que le matériel cible fonctionne.) Tout en étant limité, il avait été utilisé. C'est probablement l'une des façons dont il a également fait le saut dans le cloud computing. Les questions sont larges donc c'est comme ça que je les distille -

Certaines personnes peuvent-elles expliquer ce qu'est un hyperviseur et un conteneur * nix (avec des analogies si possible)?
Un hyperviseur * nix est-il identique à une machine virtuelle ou y a-t-il une différence?

shirish
la source

Réponses:

9

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

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

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

qemu-kvmet VMWaresont des exemples de la première. 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-kvmsystè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 le client pense être le véritable article. 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'effort, il présente un inconvénient en ce que 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 pilote est développé pour l'invité, conçu pour les performances dans un environnement virtuel. qemu-kvmfournir la virtiogamme de périphériques et de pilotes pour cela. Un inconvénient est que le système d'exploitation invité doit être pris en charge; mais s'ils sont pris en charge, les avantages en termes de performances sont importants.


lxcest un exemple de virtualisation au niveau du système d'exploitation, ou conteneurs. Sous ce système, il n'y a qu'un seul noyau installé - le noyau hôte. Chaque conteneur est simplement une isolation 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 complète de la zone utilisateur 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 - uniquement 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 sur Linux.

Les conteneurs sont généralement créés à l'aide d'un fichier chroot. Cela crée une racine privée ( /) distincte pour un processus avec lequel travailler. 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é. Des techniques plus avancées, telles que celles qui cgroupspeuvent isoler d'autres ressources telles que le réseau et la RAM.


Il y a des avantages et des inconvénients à la fois et de nombreux débats de longue haleine quant à ce qui est le mieux.

  • Les conteneurs sont plus légers, car aucun système d'exploitation complet n'est installé pour chacun; ce qui est le cas des hyperviseurs. Ils peuvent donc fonctionner sur du matériel de moindre spécification. 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 machine virtuelle et les invités ne connaissent pas les autres machines virtuelles. Cependant, cela utilise plus de ressources sur l'hôte, qui doit être relativement puissant.
garethTheRed
la source
2

Un conteneur est un peu comme un environnement chroot, sauf qu'il permet 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 s'il était sur du métal nu. "Système d'exploitation complet" comprend ici un noyau. Certaines machines virtuelles (par exemple QEMU ) permettent même de stimuler différents types d'architectures "bare metal".

Les conteneurs créent à la place 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 à l'intérieur du conteneur est à peu près la même qu'une machine virtuelle. Cependant, vous ne pouvez exécuter qu'un espace utilisateur du système d'exploitation compatible avec le seul noyau réel, dans ce cas, Linux. C'est différent des vraies machines virtuelles, où vous pouvez exécuter un noyau indépendant et donc tout type de système d'exploitation.

Les vraies VM 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 OS hôte. C'est pourquoi ces VPS sont proposés 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 des 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 machine; d'autres, comme VirtualBox, ne le font pas (c'est-à-dire que l'architecture de la machine virtuelle est toujours la même que l'hôte réel). La simulation d'une architecture nécessite plus de ressources, tout comme les machines virtuelles réelles nécessitent plus de ressources que les conteneurs.

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

boucle d'or
la source