- Qu'est-ce que LXC?
- Pour quoi c'est utile?
- Quelles sont les différences entre LXC et la virtualisation commune?
Réponses:
Si par «anglais ordinaire» vous entendez des personnes non techniques, la différence ne peut pas être expliquée facilement. Ces cheveux sont trop fins pour se fendre sans un examen très attentif.
Si par «anglais ordinaire» vous entendez des types de gestion qui parlent à des techniciens, et ont donc au moins une compréhension passagère des sujets techniques, je soumets le verbage suivant:
Il s'agit d'une autre forme de virtualisation.
Si vous regardez VMWare ESXi, c'est un hyperviseur complet exécutant ce qu'on appelle la virtualisation complète. Il existe une très petite couche entre les systèmes virtualisés fonctionnant au-dessus du matériel. Il existe une virtualisation matérielle complète, où le système d'exploitation s'exécutant dans la machine virtuelle est entièrement indépendant de l'hyperviseur lui-même et est présenté avec tout le matériel qu'il attend.
Faites un pas de plus et regardez quelque chose comme VMWare Player, Workstation, ESX (pas ESXi) ou VMWare Server, et vous avez un système d'exploitation complet fournissant le rôle d'hyperviseur. Cependant, les machines virtuelles sont toujours présentées avec une gamme complète de matériel virtuel.
Une autre approche est la para-virtualisation, que Xen a suivie pendant un certain temps. Dans cette forme de virtualisation, le système d'exploitation invité sait qu'il est virtualisé et a été modifié pour fonctionner dans cet environnement. Parfois, tout cela a besoin de pilotes de para-virtualisation spéciaux. D'autres fois, des modifications radicales du noyau sont nécessaires.
LXC, ou conteneurs Linux, est encore une autre étape. Dans ce cas, il exécute plusieurs instances du même système d'exploitation . Le noyau peut être le même, mais plusieurs espaces utilisateurs sont en cours d'exécution pour chaque conteneur de système d'exploitation. Chaque conteneur peut ou non avoir un système de fichiers différent.
Les conteneurs offrent un moyen de fournir une séparation de sécurité forte entre les processus d'une manière qui n'est pas disponible dans les systèmes qui ont le même espace utilisateur. Les systèmes d'exploitation de type Unix ont la «prison chroot» depuis un certain temps, mais ils ne permettent pas de séparer les processus ni de limiter les ressources consommées par les processus en prison. En conteneurisant ces processus, l'utilisation des ressources peut être limitée, des adresses IP discrètes peuvent leur être attribuées et des failles de sécurité exploitant l'espace utilisateur sont contenues dans le reste du système.
Où utiliseriez-vous LXC par rapport à un autre type de virtualisation? Cela dépend, mais LXC devrait fournir moins de pénalisation de virtualisation que toute autre méthode de vitualisation car il s'agit du même noyau assurant la médiation de tous les appels de l'espace utilisateur plutôt que d'un hyperviseur prétendant être le matériel d'un tas d'images de système d'exploitation qui s'attendent à parler au matériel physique. Donc, si vous avez un tas de traitements qui nécessitent la même version du système d'exploitation et peuvent être redémarrés en même temps pour les mises à jour, LXC pourrait fournir un moyen peu coûteux d'exécuter tout cela en toute sécurité et avec la gestion des ressources.
LXC est un moyen par lequel isoler les systèmes / processus du noyau. Le système est verrouillé dans un "conteneur" afin qu'il ne puisse pas interagir avec quoi que ce soit à l'extérieur de ce conteneur. D'où le nom de conteneurs Linux.
Il pourrait être utile pour de nombreuses choses, dont l'une serait d'isoler les services exécutés sur une machine. Si l'un de ces services est compromis, le système hôte lui-même (ainsi que les autres services exécutés dans leurs propres LXC) ne sera pas affecté. Il pourrait même être utilisé comme un moyen stupide pour donner à chaque utilisateur un accès root à leur propre système, sans craindre qu'ils n'interagissent les uns avec les autres.
La plupart des autres virtualisations «courantes» imposent une surcharge importante d'utilisation des ressources en raison de la nécessité d'émuler les périphériques matériels. LXC ne nécessite aucune sorte d'émulation pour les périphériques matériels, car chaque LXC dispose d'un accès direct limité / nul au matériel. Chaque système "s'exécute" sur l'hôte, mais ne peut rien affecter en dehors de son conteneur. Ce type de virtualisation a été appelé virtualisation au niveau du système d'exploitation (google it). Ce qui signifie essentiellement très peu / inexistant de surcharge pour exécuter un conteneur Linux. Ainsi, vous pouvez avoir des centaines de LXC sur une machine donnée, mais vous manqueriez de ressources assez rapidement en utilisant un logiciel de machine virtuelle "commun".
Je suis en fait plus familier avec Linux-Vserver mais la théorie est à peu près la même.
Le moyen le plus simple de le comprendre est d'apprendre ce que fait le chroot. chroot vous permet de "vous connecter" à un dossier d'un système de type Unix, comme s'il s'agissait du système complet à part entière. En d'autres termes:
si tu as:
/
/boot
/etc
/home
...
etc., alors vous pouvez ajouter un répertoire some_new_install:
/
/some_new_install
/boot
/etc
/home
/usr
...
/boot
/etc
/home
/usr
...
et connectez-vous à / some_new_install. Ensuite, / some_new_install / etc est le nouveau / etc, par exemple, et le / etc original est caché et (principalement) inaccessible. / usr / bin peut être différent de l'original, avec des programmes différents. MySQL pourrait être le même programme dans / usr / bin / mysql, mais avec des données différentes dans / var / lib / mysql.
Le système de fichiers a été virtualisé; vous avez divisé votre système de fichiers d'origine, en partageant ses ressources, en isolant ces ressources des autres ressources virtualisées.
C'est assez bien. Au lieu d'exécuter une toute nouvelle copie virtuelle d'Unix, juste pour exécuter un programme supplémentaire, vous pouvez sauter dans un système de fichiers virtuel et l'exécuter sur le même noyau, les mêmes bibliothèques (si vous avez utilisé des liens symboliques), etc. C'est BEAUCOUP plus efficace que quelque chose comme Xen ou VirtualBox.
Le problème est que, si l'un de ces programmes, disons, MySQL, devient fou et commence à utiliser tout votre processeur et à échanger sur le disque, alors cela va toujours affecter le reste de la machine, car seul le système de fichiers a été virtualisé, pas le CPU ou les performances du disque sous-jacent. Les adresses IP et les ports ne sont pas virtualisés non plus, donc si deux programmes envoient des informations sur le réseau, ils le feront à partir des mêmes IP, ce qui pourrait provoquer des conflits. De même, si deux copies de mysql tentent d'écouter sur un port, la seconde échouera, car le port est en cours d'utilisation.
LXC résout cela en virtualisant non seulement le système de fichiers, mais aussi les ips / ports / interfaces réseau, le CPU, l'utilisation de la mémoire, etc.
LXC n'est pas aussi sûr que les machines virtuelles complètes, mais en général, c'est la solution supérieure. Après tout, les systèmes d'exploitation consistent à partager des ressources en toute sécurité. La plupart du temps, il est idiot d'exécuter plusieurs systèmes d'exploitation pour ce faire - nous avons juste besoin d'un meilleur système d'exploitation avec une meilleure isolation. C'est ce que fournissent LXC et des outils similaires.