Linux Containers LXC
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.
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:
- http://www.openqrm.com/?q=node/180
- http://www.howtoforge.com/how-to-install-openqrm-4.7-with-lxc-containers-in-debian-squeeze-lenny-step-by-step
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.
- Als normaler User eine Bash starten und die PID ausgeben lassen
bash
echo $$
- Als root User eine neue cgroup namens "forktest" anlegen
cd /sys/fs/cgroup/cpu
mkdir forktest
cd forktest
- Die CPU Shares limitieren auf 512 statt dem Default Wert 1024
echo 512 > cpu.shares
- Die PID der Bash der Cgroup zuweisen
echo <PID> > tasks
- 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
- 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"
- 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).
- 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
Weitere Informationen
- Neuerungen in LXC 1.0
- https://linuxcontainers.org/
- http://www.ibm.com/developerworks/linux/library/l-lxc-containers/
- Introducing Linux virtual containers with LXC (blogs.techrepublic.com)
- http://virt.kernelnewbies.org/LXC
- http://virt.kernelnewbies.org/TechComparison
- http://en.opensuse.org/LXC
- http://lxc.teegra.net/
Vorträge
- Event-News: LinuxTag 2011 LXC versus OpenVZ und SSD Grundlagen
- Event-News: LinuxCon Europe 2012
- Event-News: LinuxTag 2013 Lightweight Virtualization - LXC Best Practices
Autor: Werner Fischer Werner Fischer arbeitet im Product Management Team von Thomas-Krenn. Er evaluiert dabei neueste Technologien und teilt sein Wissen in Fachartikeln, bei Konferenzen und im Thomas-Krenn Wiki. Bereits 2005 - ein Jahr nach seinem Abschluss des Studiums zu Computer- und Mediensicherheit an der FH Hagenberg - heuerte er beim bayerischen Server-Hersteller an. Als Öffi-Fan nutzt er gerne Bus & Bahn und genießt seinen morgendlichen Spaziergang ins Büro.
|