web-dev-qa-db-fra.com

Différence entre KVM et LXC

Quelle est la différence entre KVM et Linux Containers (LXCs)? Il me semble que LXC est également un moyen de créer plusieurs VM au sein du même noyau si nous utilisons à la fois des "espaces de noms" et " groupes de contrôle "fonctionnalités du noyau.

38
JuliandotNut

Texte de https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/7-Beta/html/Resource_Management_and_Linux_Containers_Guide/sec-Linux_Containers_Compared_to_Kht_Virtual Copyright © 2014 Red Hat, Inc. :

Conteneurs Linux par rapport à KVM Virtualisation

La principale différence entre la virtualisation KVM et les conteneurs Linux est que les machines virtuelles nécessitent une instance de noyau distincte pour fonctionner, tandis que les conteneurs peuvent être déployés à partir du système d'exploitation hôte. Cela réduit considérablement la complexité du conteneur la création et la maintenance. En outre, la surcharge réduite vous permet de créer un grand nombre de conteneurs avec des vitesses de démarrage et d'arrêt plus rapides. Les conteneurs Linux et la virtualisation KVM virtualisation ont certains avantages et inconvénients qui influencent les cas d'utilisation dans auxquels ces technologies sont généralement appliquées:

Virtualisation KVM

La virtualisation KVM vous permet de démarrer des systèmes d'exploitation complets de différents types, même des systèmes non Linux. Cependant, une configuration complexe est parfois nécessaire. Les machines virtuelles sont gourmandes en ressources, vous ne pouvez donc en exécuter qu'un nombre limité sur votre machine hôte.

L'exécution d'instances de noyau distinctes signifie généralement une meilleure séparation et sécurité. Si l'un des noyaux s'arrête de façon inattendue, il ne désactive pas l'ensemble du système. En revanche, cette isolation rend plus difficile la communication des machines virtuelles avec le reste du système et, par conséquent, plusieurs mécanismes d'interprétation doivent être utilisés.

La machine virtuelle invitée est isolée des modifications de l'hôte, ce qui vous permet d'exécuter différentes versions de la même application sur l'hôte et la machine virtuelle. KVM fournit également de nombreuses fonctionnalités utiles telles que la migration en direct. Pour plus d'informations sur ces fonctionnalités, consultez le Guide d'administration et de déploiement de la virtualisation de Red Hat Enterprise Linux 7).

Conteneurs Linux:

La version actuelle de Linux Containers est conçue principalement pour prendre en charge l'isolement d'une ou plusieurs applications, avec des plans pour implémenter des conteneurs OS complets dans un avenir proche. Vous pouvez créer ou détruire des conteneurs très facilement et ils sont faciles à entretenir.

Des modifications à l'échelle du système sont visibles dans chaque conteneur. Par exemple, si vous mettez à niveau une application sur la machine hôte, cette modification s'appliquera à tous les sandbox qui exécutent des instances de cette application.

Les conteneurs étant légers, un grand nombre d'entre eux peuvent s'exécuter simultanément sur une machine hôte. Le maximum théorique est de 6 000 conteneurs et 12 000 montages de liaison des répertoires du système de fichiers racine. De plus, les conteneurs sont plus rapides à créer et ont de faibles temps de démarrage.

source

31
Viswesn

LXC , ou les conteneurs Linux sont les unités de virtualisation légères et portables basées sur le système d'exploitation qui partagent le noyau du système d'exploitation de base, mais agissent en même temps comme des environnements isolés avec son propre système de fichiers, processus et pile TCP/IP. Ils peuvent être comparés à Solaris Zones ou Jails sur FreeBSD. Comme il n'y a pas de surcharge de virtualisation, ils fonctionnent bien mieux que les machines virtuelles.

KVM représente les capacités de virtualisation construites dans le propre noyau Linux. Comme déjà indiqué dans les réponses précédentes, c'est l'hyperviseur de type 2, c'est-à-dire qu'il ne fonctionne pas sur un métal nu.

7
Nedo

Ce livre blanc donne la différence entre l'hyperviseur et les conteneurs Linux et aussi un peu d'histoire derrière les conteneurs http://sp.parallels.com/fileadmin/media/hcap/pcs/documents/ParCloudStorage_Mini_WP_EN_042014.pdf

Un extrait du document: un hyperviseur fonctionne en ayant le système d'exploitation hôte émuler le matériel de la machine, puis en faisant apparaître d'autres machines virtuelles (VM) en tant que systèmes d'exploitation invités au-dessus de ce matériel. Cela signifie que la communication entre les systèmes d'exploitation invité et hôte doit suivre un paradigme matériel (tout ce qui peut être fait dans le matériel peut être fait par l'hôte à l'invité).

D'un autre côté, la virtualisation de conteneurs (illustrée à la figure 2) est la virtualisation au niveau du système d'exploitation, au lieu du niveau matériel. Ainsi, chacun des systèmes d'exploitation invités partage le même noyau, et parfois des parties du système d'exploitation, avec l'hôte. Ce partage amélioré donne aux conteneurs un grand avantage en ce sens qu'ils sont plus légers et plus petits que les invités hyperviseurs, simplement parce qu'ils partagent beaucoup plus de pièces avec l'hôte. Cela leur donne également l'énorme avantage que le noyau invité est beaucoup plus efficace dans le partage des ressources entre les conteneurs, car il considère les conteneurs comme de simples ressources à gérer.

Un exemple: le conteneur 1 et le conteneur 2 ouvrent le même fichier, le noyau hôte ouvre le fichier et en place des pages dans le cache de pages du noyau. Ces pages sont ensuite distribuées au conteneur 1 et au conteneur 2 selon les besoins, et si les deux veulent lire la même position, ils obtiennent tous les deux la même page. Dans le cas où VM1 et VM2 font la même chose, l'hôte ouvre le fichier (création de pages dans le cache de page d'hôte), mais chacun des noyaux de VM1 et VM2 fait la même chose, ce qui signifie que si VM1 et VM2 lisent le même fichier , il existe désormais trois pages distinctes (une dans les caches de pages des noyaux Host, VM1 et VM2) simplement parce qu'elles ne peuvent pas partager la page de la même manière qu'un conteneur. Ce partage avancé de conteneurs signifie que la densité (nombre de conteneurs de machines virtuelles que vous pouvez exécuter sur le système) est jusqu'à trois fois plus élevée dans le cas des conteneurs comme dans le cas de l'hyperviseur.

Résumé: KVM est un hyperviseur basé sur l'émulation de matériel virtuel. Les conteneurs, en revanche, sont basés sur des systèmes d'exploitation partagés et sont plus maigres. Mais cela pose une limitation sur les conteneurs que nous sommes en utilisant un seul noyau partagé et donc ne peut pas exécuter Windows et Linux sur le même matériel partagé

6
bhdeeps