Howto: Virtualisierung mit OpenVZ unter Debian Lenny (Linux Kernel 2.6.26)
OpenVZ ist einer der eher unbekannteren Virtualisierungslösungen. Vom Ansatz her arbeitet es ähnlich wie Linux-Vserver: Ein Kernel wird in virtuelle “Zonen” eigeteilt, die sich fast wie eigenständige Server verhalten. Durch diese Art der Virtualisierung kann nur Linux unter Linux virtualisiert werden, jedoch fast jede Distribution.
Da es sich um keine volle Virtualisierung handelt, wird der Speicher des Hostsystems optimal genutzt und die allgemeine Performance ist sehr gut, der Overhead kann praktisch vernachlässigt werden.
Für OpenVZ und gegen Linux-Vserver spricht aufjedenfall die einfache Handhabung und die schnelle Installation. Auch wenn ich Linux-Vserver nur kurz gesehen habe, scheint es mir wesentlich komplizierter. Außerdem hat OpenVZ ein sehr interessantes Feature: Der Netzwerkverkehr wird vollständig virtualisiert, eigene Firewallregeln (Iptables) sind möglich.
Hier ein kleines Howto um OpenVZ unter Debian Lenny einzurichten:
1. Installation:
apt-get install iproute libatm1 linux-image-2.6.26-1-openvz-amd64 linux-image-openvz-amd64 rsync vzctl vzquota
2. Anpassen der Datei /etc/sysctl.conf, dieser Abschnitt muss angefügt werden:
# On Hardware Node we generally need
# packet forwarding enabled and proxy arp disabled
net.ipv4.conf.default.forwarding=1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.ip_forward=1
# Enables source route verification
net.ipv4.conf.all.rp_filter = 1
# Enables the magic-sysrq key
kernel.sysrq = 1
# TCP Explict Congestion Notification
#net.ipv4.tcp_ecn = 0
# we do not want all our interfaces to send redirects
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.eth0.proxy_arp = 1
3. Diese neuen Regeln laden
sysctl -p
4. Nun kann man OpenVZ symbolisches nach /vz linken (Optional, aber hilfreich)
ln -s /var/lib/vz /vz
Am schnellsten hat man seine virtuelle Maschiene eingerichtet, wenn man sich ein Template aus diesem OpenVZ Template Repository aussucht. Diese Templates sind vorgefertigte Images der beliebtesten Distributionen, die ein sekundenschnelles Einrichten ermöglichen.
5. Nun ist es an der Zeit in das frische OpenVZ-System zu booten. Falls lilo verwendet wird, muss der Befehl lilo noch ausgeführt werden (Bei grub muss nichts gemacht werden)
shutdown -r now
6. z.b. das Debian Lenny Template:
cd /vz/template/cache und wget http://download.openvz.org/contrib/template/precreated/debian-5.0-amd64-minimal.tar.gz
Falls apt-get es nicht automatisch gemacht hat, kann man jetzt OpenVz starten und in den default runlevel legen:
7. /etc/init.d/vz start
8. update-rc.d vz defaults 98
9. Anlegen einer virtuellen Maschiene, a.b.c.d sind durch IP-Adressen zu ersetzten:
vzctl create 101 --ostemplate debian-5.0-amd64-minimal
vzctl set 101 --ipadd a.b.c.d --save
vzctl set 101 --nameserver a.b.c.d --save
vzctl start 101
Nun kann man in sein frisch installiertes System “herabsteigen” und ein Passwort festlegen:
vzctl enter 101
passwd
(Zum beenden der Sitzung dann strg+d drücken)
Und so schnell hat man seine virtuelle Linux-Maschiene lauffähig. Mit vzlist behält man den Überblick über die Maschienen, vzctl stop 101 würde die eben erstelle Maschiene stoppen.
Für weitergehende Konfigurationen kann ich das englisch-sprachige Wiki auf openvz.org empfehlen, vorallem den Teil über user_beancounter sollte man sich gut angucken.
Das wars fürs erste! To be continued!
Aus /usr/share/doc/vzctl/README.Debian.gz:
— — — —
First create a filesystem. You can do that by unpacking an image
or by using debootstrap. Below is an example by using debootstrap. You can
change the VEID (100) to some other value if you like. Avoid zeros in the
beginning of the VEID as vzctl treat this value as an integer. This means that
001 is translated to 1. Also avoid VEID below 100 as they are reserved for
package management work.
— — — —
Also vielleicht sollte man anstatt 01 lieber 101 nehmen. Weiss aber auch
nicht genau, wofür (und ob wirklich) die unter 100 reserviert sind.
Gruß, Karl
Danke Karl! Ich denke es schadet nicht, dann lieber die 1xx’s als VEID’s zu verwenden. Es gab zwar keine Probleme bei meinem Testlauf (bis zu 10 VEID’s), werde trotzdem den Artikel bei Gelegenheit mal anpassen.
Wenn man das Standardverzeichnis (var/lib/vz) ändern möchte muss man in /etc/vz/vz.conf sämtliche Dateilinks anpassen.
Beispiel Regex für VIM:
von /var/lib/vz/ nach /vserver/
%s/\/var\/lib\/vz/\/vserver