Erklären Sie in Plain English, was LXC ist und wofür es nützlich ist [geschlossen]

9
  • Was ist LXC?
  • Wofür ist es nützlich?
  • Was sind die Unterschiede zwischen LXC und allgemeiner Virtualisierung?
Daniel Cukier
quelle
8
Was haben Sie bisher selbst herausgefunden?
Andol

Antworten:

23

Wenn Sie mit "Plain English" untechnische Leute meinen, kann der Unterschied nicht einfach erklärt werden. Das Haar ist zu fein, um es ohne große Überlegung zu spalten.

Wenn mit "Plain English" Führungstypen gemeint sind, die mit technischen Mitarbeitern sprechen und somit zumindest ein vorübergehendes Verständnis für technische Themen haben, übermittle ich das folgende Wort:


Es ist eine andere Form der Virtualisierung.

Wenn Sie sich VMWare ESXi ansehen, handelt es sich um einen vollständigen Hypervisor, auf dem die sogenannte vollständige Virtualisierung ausgeführt wird. Zwischen den virtualisierten Systemen, die auf der Hardware ausgeführt werden, befindet sich eine sehr kleine Schicht. Es gibt eine vollständige Hardwarevirtualisierung, bei der das in der virtuellen Maschine ausgeführte Betriebssystem völlig unabhängig vom Hypervisor selbst ist und die gesamte erwartete Hardware präsentiert wird.

Machen Sie einen weiteren Schritt nach oben und sehen Sie sich VMWare Player, Workstation, ESX (nicht ESXi) oder VMWare Server an. Sie verfügen über ein vollständiges Betriebssystem, das die Hypervisor-Rolle bereitstellt. Virtuelle Maschinen verfügen jedoch weiterhin über eine vollständige Palette virtueller Hardware.

Ein anderer Ansatz ist die Paravirtualisierung, der Xen einige Zeit gefolgt ist. Bei dieser Form der Virtualisierung ist dem Gastbetriebssystem bekannt, dass es virtualisiert ist und für die Arbeit in dieser Umgebung geändert wurde. Manchmal sind nur spezielle Paravirtualisierungstreiber erforderlich. In anderen Fällen sind direkte Kerneländerungen erforderlich.

LXC oder Linux Containers ist ein weiterer Schritt nach oben. In diesem Fall werden mehrere Instanzen desselben Betriebssystems ausgeführt . Der Kernel ist zwar derselbe, es werden jedoch mehrere Benutzerbereiche für jeden Betriebssystemcontainer ausgeführt. Jeder Container kann ein anderes Dateisystem haben oder nicht.

Container bieten eine Möglichkeit, eine starke Sicherheitstrennung zwischen Prozessen auf eine Weise bereitzustellen, die in Systemen mit demselben Benutzerbereich nicht verfügbar ist. Unix-ähnliche Betriebssysteme haben seit einiger Zeit das "Chroot-Gefängnis", aber es bietet keine Prozesstrennung oder die Möglichkeit, den Ressourcenverbrauch von Prozessen im Gefängnis zu begrenzen. Durch die Containerisierung solcher Prozesse kann die Ressourcennutzung eingeschränkt, ihnen können diskrete IP-Adressen zugewiesen werden, und Sicherheitslücken, die den Benutzerbereich ausnutzen, sind im Rest des Systems enthalten.

Wo würden Sie LXC im Vergleich zu einer anderen Art von Virtualisierung verwenden? Es hängt davon ab, aber LXC sollte weniger Virtualisierungsaufwand bieten als jede andere Vitualisierungsmethode, da es sich um denselben Kernel handelt, der alle Userspace-Aufrufe vermittelt, und nicht um einen Hypervisor, der vorgibt, Hardware für eine Reihe von Betriebssystemabbildern zu sein, die erwarten, mit physischer Hardware zu kommunizieren. Wenn Sie also eine Reihe von Prozessen haben, die dieselbe Betriebssystemversion benötigen und gleichzeitig für Updates neu gestartet werden können, bietet LXC eine kostengünstige Möglichkeit, all dies sicher und mit Ressourcenverwaltung auszuführen.

sysadmin1138
quelle
Viel beredter ausgedrückt.
Nicholi
Nun, außer dass ich mir ziemlich sicher bin, dass Sie VMWare ESX falsch charakterisieren. Das ist ein vollständiger Hypervisor, der auf Bare Metal läuft. Es wird nur eine Linux-Konsole angezeigt. Wikipedia: "Bis zur aktuellen ESX-Version 4.1 wird zuerst ein Linux-Kernel gestartet [6] und zum Laden einer Vielzahl spezialisierter Virtualisierungskomponenten verwendet, einschließlich der VMkernel-Komponente von VMware. Dieser zuvor gestartete Linux-Kernel wird dann zum ersten virtuellen Betriebssystem Maschine und heißt Service-Konsole. " Wie Novell Netware - bootet mit DOS als Bootloader, und dann ist der NW-Kernel zur Laufzeit Bare Metal.
Mfinni
@mfinni Wenn Sie mit Leuten sprechen, die "einfaches Englisch" fordern, sind solche Unterscheidungen weniger wichtig. Sowohl ESX / ESXi als auch Player sind noch vollständig virtualisiert. Der Unterschied besteht darin, wie nahe der Hypervisor am Metall sitzt.
sysadmin1138
5

LXC ist ein Mittel, um Systeme / Prozesse im Kernel zu isolieren. Das System ist in einem "Container" eingeschlossen, so dass es mit nichts außerhalb dieses Containers interagieren kann. Daher der Name Linux Containers.

Dies kann für viele Dinge nützlich sein, unter anderem für die Isolierung von Diensten, die auf einem Computer ausgeführt werden. Wenn einer dieser Dienste kompromittiert wird, ist das Hostsystem selbst (zusammen mit den anderen Diensten, die in ihren eigenen LXCs ausgeführt werden) nicht betroffen. Es könnte sogar als dummes Mittel verwendet werden, um jedem Benutzer Root-Zugriff auf sein eigenes System zu gewähren, ohne sich Sorgen machen zu müssen, dass sie miteinander interagieren.

Die meisten anderen "gängigen" Virtualisierungen verursachen einen hohen Aufwand für die Ressourcennutzung, da Hardwaregeräte emuliert werden müssen. LXC erfordert keine Emulation für Hardwaregeräte, da jedem LXC ein eingeschränkter / kein direkter Zugriff auf die Hardware gewährt wird. Jedes System "läuft" auf dem Host, kann jedoch nichts außerhalb seines Containers beeinflussen. Diese Art der Virtualisierung wurde als Virtualisierung auf Betriebssystemebene (google it) bezeichnet. Dies bedeutet im Wesentlichen sehr wenig / nicht vorhandenen Overhead für die Ausführung eines Linux-Containers. Sie können also Hunderte von LXCs auf einer bestimmten Maschine haben, aber mit "gängiger" Software für virtuelle Maschinen gehen Ihnen schnell die Ressourcen aus.

Ich bin eigentlich besser mit Linux-Vserver vertraut, aber die Theorie ist sehr ähnlich.

Nicholi
quelle
3

Der einfachste Weg, dies zu verstehen, besteht darin, zu lernen, was Chroot tut. Mit chroot können Sie sich in einen Ordner eines Unix-ähnlichen Systems "einloggen", als wäre es das vollständige System für sich. Mit anderen Worten:

Wenn Sie haben:

 /
   /boot
   /etc
   /home
   ...

usw., dann können Sie ein neues_Installationsverzeichnis hinzufügen:

 /
   /some_new_install
      /boot
      /etc
      /home
      /usr
      ...
   /boot
   /etc
   /home
   /usr
      ...

und melden Sie sich bei / some_new_install an. Dann ist / some_new_install / etc beispielsweise das neue / etc, und das ursprüngliche / etc ist ausgeblendet und (meistens) nicht zugänglich. / usr / bin kann mit verschiedenen Programmen vom Original abweichen. MySQL könnte dasselbe Programm in / usr / bin / mysql sein, jedoch mit unterschiedlichen Daten in / var / lib / mysql.

Das Dateisystem wurde virtualisiert. Sie haben Ihr ursprüngliches Dateisystem aufgeteilt, seine Ressourcen freigegeben und diese Ressourcen von anderen virtualisierten Ressourcen isoliert.

Das ist ziemlich toll. Anstatt eine ganz neue, virtuelle Kopie von Unix auszuführen, können Sie, um nur ein zusätzliches Programm auszuführen, in ein virtuelles Dateisystem springen und es auf demselben Kernel, denselben Bibliotheken (wenn Sie Symlinks verwendet haben) usw. ausführen. Es ist VIEL effizienter als so etwas wie Xen oder VirtualBox.

Das Problem ist, dass, wenn eines dieser Programme, z. B. MySQL, verrückt wird und anfängt, Ihre gesamte CPU zu verwenden und auf der Festplatte zu tauschen, dies immer noch Auswirkungen auf den Rest des Computers hat, da nur das Dateisystem virtualisiert wurde, nicht die CPU oder zugrunde liegende Festplattenleistung. IP-Adressen und -Ports werden ebenfalls nicht virtualisiert. Wenn also zwei Programme Informationen im Netzwerk senden, werden sie von denselben IP-Adressen aus gesendet, was möglicherweise zu Konflikten führen kann. Wenn zwei Kopien von MySQL versuchen, einen Port abzuhören, schlägt die zweite fehl, da der Port verwendet wird.

LXC löst dieses Problem, indem nicht nur das Dateisystem, sondern auch die Netzwerk-IPs / Ports / Schnittstellen, die CPU, die Speichernutzung usw. virtualisiert werden.

LXC ist nicht ganz so sicher wie vollständige virtuelle Maschinen, aber im Allgemeinen ist es die überlegene Lösung. Bei Betriebssystemen geht es schließlich darum, Ressourcen sicher zu teilen. Meistens ist es dumm, mehrere Betriebssysteme auszuführen, um dies zu tun - wir brauchen nur ein besseres Betriebssystem mit besserer Isolation. Das bieten LXC und ähnliche Tools.


quelle