GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was ist ein Linux-Container und ein Linux-Hypervisor?

Eine virtuelle Maschine (VM) ist ein ziemlich allgemeiner Begriff für viele Virtualisierungstechnologien.

Es gibt viele Variationen von Virtualisierungstechnologien, aber die wichtigsten sind:

  • Virtualisierung auf Hardwareebene
  • Virtualisierung auf Betriebssystemebene

qemu-kvm und VMWare sind Beispiele für die erste. Sie verwenden einen Hypervisor, um die virtuellen Umgebungen zu verwalten, in denen ein vollständiges Betriebssystem ausgeführt wird. Zum Beispiel auf einem qemu-kvm System können Sie auf einer VM FreeBSD, auf einer anderen Windows und auf einer anderen Linux ausführen.

Die durch diese Technologien erstellten virtuellen Maschinen verhalten sich für den Gast wie isolierte einzelne Computer. Diese haben eine virtuelle CPU, RAM, NIC, Grafik usw., die der Gast für den echten Artikel hält. Aus diesem Grund können viele verschiedene Betriebssysteme auf den VMs installiert werden und sie funktionieren "out of the box", ohne dass Änderungen erforderlich sind.

Dies ist zwar sehr praktisch, da viele Betriebssysteme ohne großen Aufwand installiert werden können, hat jedoch den Nachteil, dass der Hypervisor die gesamte Hardware simulieren muss, was die Dinge verlangsamen kann. Eine Alternative ist paravirtualisierte Hardware, bei der ein neues virtuelles Gerät und ein neuer Treiber für den Gast entwickelt werden, der für die Leistung in einer virtuellen Umgebung ausgelegt ist. qemu-kvm geben Sie virtio ein Reihe von Geräten und Treibern dafür. Ein Nachteil dabei ist, dass das Gastbetriebssystem unterstützt werden muss; aber wenn unterstützt, sind die Leistungsvorteile großartig.

lxc ist ein Beispiel für Virtualisierung auf Betriebssystemebene oder Container. Unter diesem System ist nur ein Kernel installiert – der Host-Kernel. Jeder Container ist einfach eine Isolation der Userland-Prozesse. Zum Beispiel ein Webserver (zum Beispiel apache ) ist in einem Container installiert. Soweit es diesen Webserver betrifft, ist er selbst der einzige installierte Server. Ein anderer Container führt möglicherweise einen FTP-Server aus. Dieser FTP-Server kennt die Webserver-Installation nicht - nur seine eigene. Ein anderer Container kann die vollständige Userland-Installation einer Linux-Distribution enthalten (solange diese Distribution mit dem Kernel des Hostsystems laufen kann).

Bei der Verwendung von Containern gibt es jedoch keine separaten Betriebssysteminstallationen, sondern nur vereinzelte Instanzen von Userland-Diensten. Aus diesem Grund können Sie nicht verschiedene Plattformen in einem Container installieren - kein Windows unter Linux.

Container werden normalerweise mit einem chroot erstellt . Dadurch wird ein separates privates Stammverzeichnis (/ ) für einen Prozess, mit dem gearbeitet werden kann. Durch das Erstellen vieler individueller privater Roots laufen Prozesse (Webserver oder eine Linux-Distribution usw.) in ihrem eigenen isolierten Dateisystem. Fortgeschrittenere Techniken wie cgroups kann andere Ressourcen wie Netzwerk und RAM isolieren.

Es gibt Vor- und Nachteile für beide und viele lang andauernde Debatten darüber, was am besten ist.

  • Container sind leichter, da nicht für jeden ein vollständiges Betriebssystem installiert wird; was bei Hypervisoren der Fall ist. Sie können daher auf Hardware mit niedrigeren Spezifikationen ausgeführt werden. Sie können jedoch nur Linux-Gäste (auf Linux-Hosts) ausführen. Da sie sich den Kernel teilen, besteht außerdem die Möglichkeit, dass ein kompromittierter Container einen anderen beeinträchtigt.
  • Hypervisoren sind sicherer und können verschiedene Betriebssysteme ausführen, da auf jeder VM ein vollständiges Betriebssystem installiert ist und Gäste andere VMs nicht kennen. Dies verbraucht jedoch mehr Ressourcen auf dem Host, der relativ leistungsfähig sein muss.

Ein Container ist ein bisschen wie eine Chroot-Umgebung, außer dass er eine vollständigere Isolierung des Benutzerbereichs erreicht. Es bietet keine echte VM, sondern ein virtuelles Betriebssystem. VMs erwecken die Illusion mehrerer Maschinen, auf denen jeweils ein echtes, vollständiges Betriebssystem wie auf Bare Metal laufen kann. "Komplettes Betriebssystem" beinhaltet hier einen Kernel. Einige VMs (z. B. QEMU) ermöglichen sogar die Anregung verschiedener Arten von "Bare-Metal"-Architekturen.

Container erzeugen stattdessen die Illusion mehrerer Kernel, von denen jeder ein komplettes Userland betreibt. Sie könnten z. B. Debian in einem Container und Arch in einem anderen ausführen, sodass die Perspektive innerhalb des Containers der einer VM sehr ähnlich ist. Sie können jedoch nur ein Betriebssystem-Userland ausführen, das mit dem einen tatsächlichen Kernel kompatibel ist, in diesem Fall Linux. Dies ist anders als bei echten VMs, wo Sie einen unabhängigen Kernel und damit jede Art von Betriebssystem ausführen können.

Echte VMs sind also ressourcenmäßig teurer als Container. Wenn Sie nicht in jeder VM unterschiedliche Kernel benötigen, können Sie auch einen Container verwenden.

Es gibt andere Virtualisierungssysteme, die etwas Ähnliches wie LXE tun, wie z. B. openVZ, das von VPS-Anbietern weit verbreitet ist. Ein openVZ VPS ist ein unabhängiges Userland, das den Kernel seines Host-Betriebssystems verwendet. Aus diesem Grund gibt es solche VPSs in einer Reihe von Linux-Varianten, aber sonst nichts; sie müssen mit dem Host-Kernel kompatibel sein.

Die Virtualisierung im Stil von OpenVZ und LXC wird als Virtualisierung auf Betriebssystemebene bezeichnet .

Ein Hypervisor ist ein System, das virtuelle Maschinen wie VirtualBox, QEMU oder Xen verwaltet. Einige Hypervisoren, wie z. B. Xen, laufen auf Bare Metal und benötigen kein Host-Betriebssystem (obwohl sie möglicherweise ein gehostetes Betriebssystem benötigen, um als Steuerschnittstelle zu dienen). Andere, wie VirtualBox und QEMU, laufen innerhalb eines Host-Betriebssystems. Einige, wie QEMU, ermöglichen die Simulation verschiedener Maschinenarchitekturen; andere, wie VirtualBox, tun dies nicht (d. h. die VM-Architektur ist immer die gleiche wie der reale Host). Das Simulieren einer Architektur erfordert mehr Ressourcen, genauso wie echte VMs mehr Ressourcen benötigen als Container.

Die Virtualisierung im Hypervisor-Stil wird als Virtualisierung auf Plattformebene bezeichnet .


Linux
  1. Was ist ein Linux-Server und warum benötigt Ihr Unternehmen einen?

  2. Was ist ein Chown-Befehl unter Linux und wie wird er verwendet?

  3. Was sind Softlinks und Hardlinks im Linux-Dateisystem?

  4. Was sind vdso und vsyscall?

  5. Was ist der Unterschied zwischen einem Bibliotheksaufruf und einem Systemaufruf in Linux?

Redox OS:ein in Rust geschriebenes Betriebssystem

Erste Schritte mit dem Linux-Betriebssystem

Ist Linux ein Betriebssystem oder ein Kernel?

Unix- und Linux-Geschichte

Was ist das Linux-Dateisystem? Einfache Anleitung

Was sind Linux-Systemaufrufe und Bibliotheksfunktionen?