Mittwoch Mai 29, 2013

Linux-Container (LXC) — Teil 1: Überblick

[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 an 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:


About

Dieses Blog befasst sich mit Themen rund um Oracle Linux, Virtualisierung (primär mit Oracle VM) sowie Cloud Computing mit Oracle Produkten. Es wird betreut von Manuel Hoßfeld
- - - - - - - - - - - - - - - - - - - -
DISCLAIMER: Die Artikel und Kommentare in diesem Blog entsprechen den Meinungen der jeweiligen Autoren, und nicht notwendigerweise denen der Oracle Deutschland B.V. & Co. KG oder der Oracle Corporation.

Search

Categories
Archives
« Mai 2013 »
MoDiMiDoFrSaSo
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
30
31
  
       
Heute