Debian LXC
Einleitung
LXC (Linux Container) erstellt mehrere isolierte, sichere virtuelle Umgebungen (Virtual Environments, kurz VEs) auf einem einzigen physischem Server, sorgt so für eine bessere Serverausnutzung und stellt sicher, dass Programme (Applikationen) nicht miteinander in Konflikt geraten. Jede VE arbeitet und verhält sich genau wie ein eigenständiger Server; VEs können unabhängig voneinander neu gestartet werden und haben Root-Zugriff, Benutzer, IP-Adressen, Speicher, Prozesse, Dateien, Programme, Systembibliotheken und Konfigurationsdateien.
Im Vergleich zu Virtuellen Maschinen von VMware bzw Virtualbox oder zu Para-Virtualisierungstechnologien wie Xen bietet OpenVZ weniger Flexibilität, was die Auswahl von Gast-Betriebssystemen betrifft: sowohl Gast- als auch Host-Betriebssystem muss Linux sein (obwohl verschiedene Linux-Distributionen in verschiedenen VEs eingesetzt werden können).
Im Gegensatz zu OpenVZ ist LXC Bestandteil des Mainline Kernel und erfordert somit keinerlei spezielle Patches, wie dies bei OpenVZ erforderlich ist. D.h. es wird im Rahmen des "normalen" Linux-Kernels weiterentwickelt und sollte deshalb in Zukunft gegenüber OpenVZ bevorzugt werden. Der Nachfolger des aktuellen Squeeze stellt vermutlich den Support für OpenVZ ein.
Installation LXC
Nachdem LXC Bestandteil des Kernels ist, sind lediglich Userspace-Tools für die Verwaltung der LXC-Container erforderlich.
apt-get update apt-get install lxc bridge-utils
Konfiguration des Host
Für die Nezwerkverwaltung benötiogt LXC eine Netzwerkbrücke (Bridge) auf dem Host.
vi /etc/network/interfaces
Z.B. vorhandene Einstallungen:
# The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug eth0 iface eth0 inet static address 192.168.100.111 netmask 255.255.255.0 gateway 192.168.100.1
Die physikalische Netzwerkschnittstelle (z.B. eth0) auf manual setzen (und die iface-Einstellungen auskommentieren):
auto eth0 iface eth0 inet manual #iface eth0 inet static # address 192.168.100.111 # netmask 255.255.255.0 # gateway 192.168.100.1 # broadcast 192.168.100.255
Stattdessen die Bridge automatisch konfigurieren:
auto br0 iface br0 inet static address 192.168.100.111 netmask 255.255.255.0 gateway 192.168.100.1 broadcast 192.168.100.255 bridge_ports eth0 bridge_fd 0 bridge_maxage 12 bridge_stp off
Netzwerk neu starten, um die Änderungen zu übernehmen:
/etc/init.d/networking restart
LXC Templates
Im Verzeichnis /usr/lib/lxc/templates/ liegen Templates für die Installation von Debian (Lenny), Ubuntu und Fedory Distributionen als Gast Container.
Durch eine kleien Änderung des Debian-Templates kann dieses anstatt einer Lenny auch eine Squeeze Distribution installieren:
cp /usr/lib/lxc/templates/lxc-debian /usr/lib/lxc/templates/lxc-squeeze chmod +x /usr/lib/lxc/templates/lxc-squeeze vi /usr/lib/lxc/templates/lxc-squeeze
- In Zeile 93: dhcp-client durch isc-dhcp-client ersetzen
- In Zeile 113: lenny durch squeeze ersetzen
- In Zeile 139: cache="/var/cache/lxc/debian" durch cache="/var/cache/lxc/squeeze" ersetzen
- In Zeile 223: cache="/var/cache/lxc/debian" durch cache="/var/cache/lxc/squeeze" ersetzen
LXC Container anlegen
Die Container (Root Filesystem des Gastbetriebssystems) werden in Unterverzeichnissen unter /var/lib/lxc abgelegt. Beispielhaft wird hier ein Debian Gast-Container (Squeeze) mit Namen debian angelegt.
cd /var/lib/lxc mkdir debian /usr/lib/lxc/templates/lxc-squeeze -p /var/lib/lxc/debian/