Mittwoch Mai 29, 2013
Linux-Container (LXC) — Teil 1: Überblick
By Lenz Grimmer on Mai 29, 2013
[Dies ist ein Gastartikel von Lenz Grimmer. Er arbeitet bei Oracle im Product Management Team für Oracle Linux.] Linux-Container (LXC) erlauben die Isolation von einzelnen Diensten und
Applikationen oder eines kompletten
Linux-Betriebssystems.
Jeder Container verfügt dafür über seine eigenen
Netzwerk-Schnittstellen, IP-Adressen
und Prozess-Tabelle — die laufenden Prozesse anderer Container oder des
Host-Systems
sind innerhalb des Containers nicht sichtbar.
Linux-Container ermöglichen darüber hinaus eine sehr fein granulierte
Kontrolle des
Ressourcen-Verbrauchs (z.B. RAM, CPU, Disk-I/O). Generell verfolgen Linux-Container einen komplett anderen Ansatz als
klassische Virtualisierungstechnologien wie KVM oder Xen (auf dem z.B. Oracle
VM Server für x86 basiert). Eine innerhalb des Containers laufende
Anwendung wird direkt auf dem Betriebssystem-Kern des Host-Systems
ausgeführt, was eine sehr direkte und faire Verteilung von CPU- und
I/O-Ressourcen ermöglicht. Linux-Container bieten daher bestmögliche
Performance und sehr ausgefeilte Möglichkeiten, die zur Verfügung
stehenden Ressourcen zu verwalten und aufzuteilen. Im Gegensatz zur "klassischen" Virtualisierung und ähnlich wie bei
den Containern (Zonen) in Oracle Solaris oder auch den "Jails" auf
FreeBSD, läuft also auf dem Host und in den Containern die gleiche
Betriebssystem-Version; es ist nicht möglich, andere
Linux-Kernelversionen oder gar andere Betriebssysteme wie z.B. Windows
oder Oracle Solaris/x86 innerhalb eines Linux-Containers laufen zu
lassen. Vom Host abweichende Linux-Distributionen (z.B. ein Fedora
Linux als Container auf einem Oracle Linux Host) sind möglich, so lange
sie die auf dem
Host laufende Linux-Kernelversion unterstützen. Der Unbreakable
Enterprise Kernel (UEK) Release 2 (2.6.39) unterstützt beispielsweise sowohl
Oracle Linux 5 und 6. Es ist damit z.B. möglich, Oracle Linux 5
Instanzen als Container
auf einem Oracle Linux 6 Host-System zu betreiben. Da Linux-Container
vollständig auf Betriebssystem-Ebene realisiert werden, lassen sie sich
übrigens ohne Weiteres auch mit anderen Virtualisierungstechnologien
kombinieren. So ist es z.B. durchaus möglich,
Linux-Container innerhalb einer virtualisierten Linux-Instanz (z.B. auf
Oracle VM Server oder Oracle VM VirtualBox) zu erstellen.
Die Anwendungsbereiche für Linux-Container sind vielfältig:
Konsolidierung mehrerer
einzelner Linux Systeme auf einem Server: Linux-Instanzen, die
nicht performance-kritisch sind und unter Umständen nur sporadisch zum
Einsatz kommen (z.B. Fax- oder Printserver, Intranet-Services),
benötigen oft nicht notwendigerweise einen dedizierten Server für ihren
Betrieb. Diese lassen sich energiesparend in separaten Containern auf
einem einzelnen Server zusammenfassen. Paralleler Betrieb mehrerer
Instanzen einer Applikation, z.B. für unterschiedliche
Anwender/Kunden. Jeder Anwender erhält "seine" eigene
Applikationsinstanz, bei Bedarf mit einer definierten, zugesicherten
Systemleistung. Dies verhindert, daß eine "Amok laufende" Applikation
das gesamte Server-System in die Knie zwingt und stellt sicher, dass
jeder Anwender nur Zugriff auf seine eigenen Daten hat. Schnell zu erstellende
"Sandbox"-Umgebungen für Entwicklungs-
oder Testzwecke: einmal erstellte und konfigurierte
Linux-Container können als Vorlage (Template) archiviert werden und bei
Bedarf schnell dupliziert (geklont) werden. Nach Beendigung der
Aktivität kann dieser Klon einfach gelöscht werden. Dies ermöglicht
beispielsweise jederzeit reproduzierbare Software-Builds und
Test-Ergebnisse, da die Umgebung stets wieder in ihren Urzustand zurück
versetzt werden kann. Linux-Container booten üblicherweise auch
erheblich schneller als "klassische" virtuelle Maschinen, was einen
deutlichen Zeitgewinn bei der Entwicklung und dem Test von
Applikationen bedeuten kann. Gesicherter Betrieb einer
bestimmten Anwendung: das Host-System und andere Container
bleiben geschützt, falls die Anwendung aufgrund einer Sicherheitslücke
kompromittiert werden sollte und der Angreifer damit Zugriff auf die
Betriebssystem-Instanz erlangen würde. Der angerichtete Schaden kann
somit minimiert und direkt vom Host-System aus analysiert und behoben
werden. Achtung: bitte berücksichtigen Sie, dass Linux-Container
auf Oracle Linux 6 mit dem Unbreakable Enterprise Kernel Release 2
(2.6.39) derzeit noch den Status "Technology Preview" tragen. Der
Einsatz wird
daher im Moment nur für Test- und Evaluierungszwecke empfohlen. Das Open-Source-Projekt "Linux
Containers"
(LXC) treibt die Entwicklung der auf der "Control Groups"- und
"Name Spaces"-Funktionalität des Linux-Betriebssystemkerns basierenden
Container-Technologie stetig weiter voran.
Control Groups (Cgroups) ermöglichen es, die Ressourcen-Zuteilung für
einzelne
Prozesse oder Prozessgruppen unter Linux zu regeln und zu überwachen.
So lassen
sich z.B. die
Menge des zur Verfügung stehenden Hauptspeichers, der verfügbare Anteil
CPU-Zeit oder der maximal mögliche Durchsatz zum Festplattenspeicher
für eine Applikation festlegen. Mit Hilfe
der "Name Spaces" lassen sich diese Prozessgruppen noch zusätzlich
gegeneinander abschirmen,
z.B. was die Sichtbarkeit anderer auf dem System laufender Prozesse
angeht, oder den exklusiven Zugriff auf
eine Netzwerk-Schnittstelle. Auch eine Einschränkung der sichtbaren
Dateisystem-Hierarchie
lässt sich mit Hilfe von Name Spaces realisieren (ähnlich wie es bei
einer klassischen "chroot"-Umgebung der Fall ist). CGroups und Name Spaces bilden das Fundament, auf dem Linux-Container
basieren; sie lassen sich allerdings auch unabhängig davon nutzen. Wie genau das Erstellen von Linux-Containern funktioniert erläutert der zweite Teil dieses Artikels, inkl. eines Beispiels. Weitere Links zum Thema Linux Container: OTN Artikel: The
of Oracle Solaris Zones and Linux Containers in a
Strategy Linux Containers
Wikipedia Category: Virtualisierung
Tags: container linux lxc virtualisierung Permanent link to this entry Geschäftseinheit, zuständig für Europa. Die folgenden Themen wie Oracle Desktop Virtualization Infrastructure, VirtualBox, Ultra Thin Client 'Sun Ray', Oracle Virtual Desktop Client und Secure Global Desktop werden von ihm technologisch betreut.] Einführung in die Desktopvirtualisierung Die Virtualisierung von Servern und Storage ist inzwischen aufgrund der folgenden Vorteile weit verbreitet: Ressourcen lassen sich flexibel zuweisen, mehrere Services bzw. Anwendungen können über den selben Server betrieben werden und durch die dadurch verbesserte Auslastung der Hardware werden Kosten eingespart. Doch wie verhält es sich mit den Arbeitsplätzen der Endanwender? In der Regel werden dort immer noch viele einzelne, dedizierte PCs mit gängigen Desktop-Betriebssystemen verwendet, obwohl dies im Zeitalter von Webanwendungen und Cloud Computing für viele Anwendungsfälle gar nicht mehr nötig ist. Auf der anderen Seite können und wollen viele Anwender nicht auf z.B. "ihr" eigenes (sprich: "lokales") Office-Programm verzichten. Desktopvirtualisierung - auch bekannt unter dem Begriff "Virtual Desktop Infrastructure" (VDI) - ist daher ein Ansatz, die o.g. Vorteile der Servervirtualisierung mit den Anforderungen von Endanwendern zu kombinieren: Bei der Virtualisierung von PC Betriebssystemen werden auf einem Server individuell konfigurierte Betriebssystem-Instanzen für einzelne Anwender bereitgeste