Linux Containers LXC

Aus Thomas-Krenn-Wiki
Wechseln zu: Navigation, Suche

Linux Containers (LXC) ist eine Container Virtualisierung unter Linux. LXC ist Bestandteil des Linux-Kernels seit Version 2.6.29.

Linux Container basieren auf Kernel Namespaces für die Ressourcen Isolation und auf Cgroups für die Ressourcen Limitierung. LXC kann sowohl für Applikations-Container als auch für komplette System-Container (unterschiedliche Linux Distributionen) verwendet werden.

Am Linuxtag 2011 haben wir einen Vortrag über den Vergleich von LXC und OpenVZ gehalten. Die Folien sowie eine Audio-Aufzeichnung kann hier heruntergeladen werden: Event-News:_LinuxTag_2011_LXC_versus_OpenVZ_und_SSD_Grundlagen

Weiters gab es einen Vortrag mit dem Titel Lightweight Virtualization - LXC Best Practices auf der LinuxCon 2012 in Barcelona: Event-News:_LinuxCon_Europe_2012

2013 wurde am LinuxTag in Berlin der Praxiseinsatz von LXC beleuchtet: Event-News:_LinuxTag_2013_Lightweight_Virtualization_-_LXC_Best_Practices

Distributions Support

  • RHEL 6 unterstützt Linux Containers experimentiell [1]
  • seit Debian Squeeze (6.0). Achtung jedoch wegen fehlendem Memory Controller Support in Cgroups [2]
  • seit Ubuntu Lucid (10.04) unterstützt
  • seit openSUSE 11.2

Userspace Tools

Hier ein kurzer Auszug von verfügbaren Userspace Tools:

  • lxc-start / lxc-stop
    • Starten eines Containers
    • Bsp: lxc-start -n vm0 -f /lxc/vm0/config
  • lxc-create / lxc-destroy
    • Instanz eines Containers anlegen, entfernen
  • lxc-ls
    • zeigt erstellte sowie laufende Container an
  • lxc-attach
    • Kommando direkt in Container ausführen (default: bash)
  • lxc-console
    • lxc-console -n vm0 --tty 1
  • lxc-checkconfig
    • überprüft Kernel Namespace und Cgroup Support
  • generell lxc-*

Beispiele

# lxc-start -n vm0 -f /lxc/vm0/config -d
# lxc-attach -n vm0
root@vm0 # hostname
vm0
# exit
# lxc-console -n vm0 -t 3
Type <Ctrl+a q> to exit the console
Debian GNU/Linux 6.0 vm0 tty3
vm0 login:
# lxc-ls
vm0
# lxc-freeze -n vm0
# lxc-info -n vm0
'vm0' is FROZEN
# lxc-stop -n vm0

Integration

Pacemaker

Für Pacemaker ist seit 5/2011 ein Resource Agent für LXC verfügbar:

OpenQRM

Auch für OpenQRM existiert seit kurzem ein LXC Plugin:

Cgroups Fork Demo

Diese Demo zeigt, dass bei entsprechender Konfiguration der Cgroups, die Linux Container gut gegenseitig abgeschottet sind und sogar eine Fork-Bombe andere System kaum beeinflusst.

  1. Als normaler User eine Bash starten und die PID ausgeben lassen
    • bash
    • echo $$
  2. Als root User eine neue cgroup namens "forktest" anlegen
    • cd /sys/fs/cgroup/cpu
    • mkdir forktest
    • cd forktest
  3. Die CPU Shares limitieren auf 512 statt dem Default Wert 1024
    • echo 512 > cpu.shares
  4. Die PID der Bash der Cgroup zuweisen
    • echo <PID> > tasks
  5. Ident dazu erstellen Sie im Verzeichnis memory eine Cgroup namens "forktest"
    • cd /sys/fs/cgroup/memory
    • mkdir forktest
    • cd forktest
    • echo 512M > memory.limit_in_bytes
    • echo 512M > memory.memsw.limit_in_bytes
    • echo <PID> > tasks
  6. Jetzt starten wir in der Bash, die wir als normaler User in Schritt 1 gestartet haben, folgende Perl Fork Bomb:
    • perl -e "fork while fork"
  7. Jetzt wird die Load auf dem System sehr stark ansteigen (z.B. "load average: 11899.22, 8936.07, 5346.59"), das System ist aber noch immer nutzbar, da der RAM für die Fork Bomb eingeschränkt ist und es weniger CPU Shares bekommt, als der normale Benutzer (1024 vs. 512).
  8. Um die Fork Bombe wieder zu beenden, kann folgendes Bash Skript verwendet werden. Dafür ist wichtig, dass unter dem User keine perl Befehle laufen, die man beibehalten möchte.
#!/bin/bash
for (( c=1; c<=100; c++ ))
do
  killall -9 perl
done

Einzelnachweise

  1. http://www.heise.de/open/artikel/Erste-oeffentliche-Beta-von-Red-Hat-Enterprise-Linux-6-983198.html
  2. http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=534964

Weitere Informationen


Foto Werner Fischer.jpg

Autor: Werner Fischer

Werner Fischer, tätig im Bereich Web Operations & Knowledge Transfer bei Thomas-Krenn, hat sein Studium zu Computer- und Mediensicherheit an der FH Hagenberg abgeschlossen. Er ist regelmäßig Autor in Fachzeitschriften und Speaker bei Konferenzen wie LinuxTag, LinuxCon Europe, OSMC u.v.m. Seine Freizeit gestaltet er sehr abwechslungsreich. In einem Moment absolviert er seinen Abschluss im Klavierspielen, im anderen läuft er beim Linzmarathon in der Staffel mit oder interessiert sich für OpenStreetMap.


Das könnte Sie auch interessieren

Aktuelle Versionsinformationen zu Microsoft Hyper-V
ClickBIOS
Linux Gastsystem Support unter Hyper-V