OpenVZ unter Debian
Neben verbreiteten Virtualisierungslösungen wie ESX, Xen und KVM existiert noch eine weitere, weniger verbreitete Methode:
OpenVZ ist eine Virtualisierungstechnik für Linux. Damit lassen sich mehrere so genannte Virtual Private Server einrichten, die alle den Kernel und die Hardware des Host-Systems nutzen. Das Konzept ähnelt also anderen Techniken wie FreeBSD Jails und Solaris Zones. Auch als Gastsystem unterstützt OpenVZ ausschließlich Linux. Durch eine detaillierte Ressourcenaufteilung soll es möglich sein, sehr viele virtuelle Maschinen parallel auf einem physischen Computer zu betreiben, die alle streng voneinander isoliert sind. [golem.de]
Installieren kann man OpenVZ auf viele Linux basierten Betriebssysteme direkt aus den Paketquellen; im folgenden habe ich als Beispiel ein Debian (32bit) auf meinem DL380 G3 verwendet.
Zuerst müssen die passenden Kernel und Pakete installiert werden:
1 | apt-get install linux-image-openvz-686 vzctl vzquota cstream |
Leider ist das Tool vzdump nicht mehr in den Paketquellen enthalten, ist aber essentiell um eine virtuelle Maschine im laufenden Betrieb zu sichern:
1 2 3 | cd /tmp/ wget http://download.openvz.org/contrib/utils/vzdump/vzdump_1.2-4_all.deb dpkg -i vzdump_1.2-4_all.deb |
Danach müssen in der Datei /etc/sysctl.conf folgende Punkte ergänzt werden:
1 2 3 4 5 | net.ipv4.conf.default.proxy_arp = 0 net.ipv4.conf.default.forwarding=1 kernel.sysrq = 1 net.ipv4.conf.default.send_redirects = 1 net.ipv4.conf.eth0.proxy_arp=1 |
Nach dieser Anpassung darf nicht vergessen worden, die Konfiguration neu einzulesen:
1 | sysctl -p |
Nun muss der Server neugestartet werden, damit der OpenVZ-Kernel auch verwendet wird.
Nun ist OpenVZ soweit eingerichtet und die ersten “virtuellen” Maschinen können eingerichtet werden.
Hier zeigt sich aber auch schon die erste Schwäche von dieser Virtualisierungslösung, denn entgegen anderen Methoden lassen sich mit OpenVZ nur genau das Betriebssystem mit dem Kernel für Guests verwenden, welcher auch der Host benutzt.
Nun da alles eingerichtet ist, können die ersten Templates heruntergeladen werden.
Dazu müssen zuerst die Paketquellen angepasst werden:
1 | echo "deb http://download.openvz.org/debian-systs lenny openvz" >> /etc/apt/sources.list |
Das der neue Eintrag problemlos funktioniert, muss noch der passende Schlüssel nachgeladen werden:
1 2 | wget -q http://download.openvz.org/debian-systs/dso_archiv_signing_key.asc -O- | apt-key add - apt-get update |
Nun sollten auch die passenden Templates in den Paketquellen gelistet werden:
1 | apt-cache search openvz | grep vzctl |
Damit ein Guest mit diesem Template eingerichtet werden kann, muss er vorher natürlich noch heruntergeladen und installiert werden:
1 | apt-get install vzctl-ostmpl-debian-4.0-i386-minimal vzctl-ostmpl-debian-5.0-i386-minimal |
Nun kann auch schon mit dem Einrichten des ersten Guests begonnen werden.
Die dazu zur Verfügung stehenden Templates sind unter /var/lib/vz/template/cache/ gelistet.
Hier zeigt sich nun ein Vorteil von OpenVZ gegenüber den alternativen Virtualisierungslösungen. Das einrichten eines neuen Guest dauert hier gerade mal ein paar Sekunden, während bei ESX oder Xen normalerweise stets die gesamte Installation durchlaufen werden muss. Das eintippen eines einfachen Befehls reicht schon aus:
1 | vzctl create 1 --ostemplate debian-5.0-i386-minimal --config vps.basic |
Erhält man danach eine Ausgabe, wie die folgende, so war die Aktion erfolgreich:
1 2 3 | Creating VE private area (debian-5.0-i386-minimal) Performing postcreate actions VE private area was created |
Nun hat man die Möglichkeit direkt Einstellungen für einen Guest vorzunehmen:
1 2 3 4 5 6 7 8 9 10 11 | #Beim Booten aufstarten vzctl set 1 --onboot yes --save #Hostname setzen vzctl set 1 --hostname tux1.linux.ch --save #IP Adresse setzen vzctl set 1 --ipadd 192.168.0.1 --save #DNS Server setzen vzctl set 1 --nameserver 145.253.2.75 --nameserver 213.191.92.86 --save |
Alle nun gemachten Einstellungen werden in der Datei /etc/vz/conf/1.conf gespeichert.
Nun kann der Guest das erste mal gestartet und gleichzeitig auch noch das Rootpasswort angepasst werden:
1 2 | vzctl start 1 vzctl exec 1 passwd |
Will man den Guest direkt auf der Kommandozeile ansprechen, so kann dies entweder per SSH oder direkt über den Host passieren. Dazu kann folgendes Kommando verwendet werden:
1 | vzctl enter 1 |
Eine List mit allen virtuellen Maschinen erhält man mit dem Befehl vzlist:
1 | vzlist -a |
Weitere Informationen bekommt man durch die Manpages:
1 | man vzctl |
oder dem offiziellen Wiki
Was ich bisher noch nicht finden konnte ist eine Möglichkeit mit vzctl set 1 … den Guest zu einer dynamischen IP Adresse zu zwingen.
Insgesamt ist es eine gute Möglichkeit um schnell und unkompliziert zu virtualisieren, jedoch wer viele Ansprüche hat und nicht immer das selbe Betriebssystem / die selbe Distribution verwendet, wird nie seinen Spass an OpenVZ haben.
Natürlich lässt sich alles problemlos auch auf andere Distributionen und Architekturen portieren, wobei die Namen, besonders für die Templates, angepasst werden müssen.
Willkommen auf meinem Blog über Informatik, Technik und Linux.
Wirklch sehr informativ! Werde aufjedenfall wieder kommen. Danke fuer den Beitrag.
Gruss
Andres