Installation und Benutzung von OpenVZ auf Debian Lenny (AMD64)

Version 1.1
Autor: Falko Timme


Übersetzt durch:  rini90

In diesem Howto werde ich beschreiben, wie man einen Debian Lenny Server für OpenVZ vorbereitet. Mit OpenVZ kann man mehrere virtuelle private Server (VPS) auf der selben Hardware erstellen, ähnlich wie Xen und das Linux VServer Projekt. OpenVZ ist ein Opensource branch von Virtuozzo, eine kommerzielle Virtualisierungs- Lösung, welche von vielen Anbietern, die virtuelle Server anbieten benutzt wird. Der OpenVZ kernel patch ist unter der GPL Lizenz lizensiert, und die user-level tools stehen unter einer QPL Lizenz.

Dieses Howto ist eine Praxisanleitung; es zeigt nicht die theoretischen Hintergründe. Diese findet man in einem Haufen anderer Dokumente im Internet.

Dieses Dokument gibt keinerlei Gewährleistung! Ich möchte sagen, das dieses nicht der einzige Weg ist ein solches System aufzusetzen. Es gibt viele Wege ans Ziel zu kommen, aber das ist der Weg, den ich gewählt habe. Ich gebe keinerlei Garantie, das es bei Euch genauso funktioniert.

1 Vorbemerkung

Ich benutze hier ein x86_64 (amd64) system. Wenn du ein i386 System benutzt, werden ein paar Befehle werden unterschiedlich sein - aber da wo Unterschiede sind, habe ich den anderen Weg hinzugeschrieben.

2 Installation von OpenVZ

Ein OpenVZ kernel und die vzctl und vzquota Pakete findet man in den Debian Lenny Paketdatenbanken, deswegen können wir sie wie folgt installieren:

apt-get install linux-image-openvz-amd64 vzctl vzquota


(Wenn Du ein i386 system benutzt, heißt das kernel paket linux-image-openvz-686.)

Erstell einen Symlink von /var/lib/vz zu /vz um eine Rückwärtskompatibilität anbieten zu können:

ln -s /var/lib/vz /vz


Öffne /etc/sysctl.conf und stell sicher, dass Du die folgenden Einstellungen darin findest:

vi /etc/sysctl.conf


[...]
net.ipv4.conf.all.rp_filter=1 net.ipv4.icmp_echo_ignore_broadcasts=1 net.ipv4.conf.default.forwarding=1 net.ipv4.conf.default.proxy_arp = 0 net.ipv4.ip_forward=1 kernel.sysrq = 1 net.ipv4.conf.default.send_redirects = 1 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.eth0.proxy_arp=1 [...]
Wenn es nötig ist /etc/sysctl.conf zu ändern, benutze

sysctl -p


anschließend.

Der nächste Schritt ist wichtig, wenn die IP adressen von deiner virtuellen Maschine von einem anderen subnet als die host system IP Adresse.Wenn Du das nicht tust, funktioniert das Netzwerk in der virtuellen Maschine nicht.


Öffne /etc/vz/vz.conf und ändere NEIGHBOUR_DEVS zu all:

vi /etc/vz/vz.conf


[...]
# Controls which interfaces to send ARP requests and modify ARP tables on. NEIGHBOUR_DEVS=all [...]
Ebenso möchte ich das Paket vzdump installieren, welches nicht in den Debian Lenny Paketbanken verfügbar ist - erfreulicher Weise gibt es ein .deb Paket welches auf http://www.proxmox.com/cms_proxmox/en/virtualization/openvz/vzdump/ verfügbar ist. Als erstes installieren wird das Paket cstreamzu welchen vzdump in Abhängigkeit steht:

apt-get install cstream


Dann installieren wir vzdump wie folgt:

wget http://www.proxmox.com/cms_proxmox/cms/upload/vzdump/vzdump_1.1-1_all.deb
dpkg -i vzdump_1.1-1_all.deb

Schließlich rebooten wir unser System:

reboot


Wenn dein System ohne Fehler neustartet, ist alles richtig gewesen!

Starte

uname -r


und dein neuer OpenVZ Kernel sollte wie folgt angezeigt werden:

server1:~# uname -r
2.6.26-1-openvz-amd64
server1:~#


3 Benutzung von OpenVZ

Bevor wir mit OpenVZ eine virtuelle Maschine erstellen können, brauchen wir zuerst ein Template für die Distribution, welche wir in der virtuellen Maschine laufen lassen wollen im /var/lib/vz/template/cache Verzeichnis. Die virtuelle Maschine wird aus dem Template erstellt.

Ein paar neue Templates findet man auf http://download.openvz.org/debian-systs in den Lenny Paketdatenbanken. Lass uns das repository zu /etc/apt/sources.list hinzufügen:

vi /etc/apt/sources.list


[...]
deb http://download.openvz.org/debian-systs lenny openvz [...]
Aber klar doch (nicht um Dein System voll zu stopfen), wir wollen nur dann Pakete von dem repository installieren, wenn es kein passendes Paket in den offiziellen Lenny Paketdatenbanken gibt - wenn es aber ein Paket in den offiziellen Paketbnmken von Lenny gibt oder in den OpenVZ Paketbanken, installieren wir es von dort. Um das zu tun, geben wir diesen Paketen eine höhere Priorität in /etc/apt/preferences:

vi /etc/apt/preferences


Package: *
Pin: release o=Debian Pin-Priority: 700 Package: * Pin: release o=debian.systs.org lenny archive Pin-Priority: 650
Führe aus

wget -q http://download.openvz.org/debian-systs/dso_archiv_signing_key.asc -O- | apt-key add - && apt-get update


Anschließend um den key von dem repository runterzuladen und die Paketdatenbank upzudaten

Starte

apt-cache search openvz


In der Ausgabe solltest du einige Debian templates sehen, z.B.:

vzctl-ostmpl-debian-4.0-amd64-minimal - OpenVZ - OS Template debian-4.0-amd64-minimal
vzctl-ostmpl-debian-4.0-i386-minimal - OpenVZ - OS Template debian-4.0-i386-minimal
vzctl-ostmpl-debian-5.0-amd64-minimal - OpenVZ - OS Template debian-5.0-amd64-minimal
vzctl-ostmpl-debian-5.0-i386-minimal - OpenVZ - OS Template debian-5.0-i386-minimal

wähle das Templates, welches du brauchst und installiere es wie folgt(die amd64 templates sind nicht auf einem i386 host verfügbar):

apt-get install vzctl-ostmpl-debian-5.0-amd64-minimal vzctl-ostmpl-debian-4.0-amd64-minimal


Du kannst eins von diesen templates benutzen oder eine Liste mit vorerstellten Templates aufhttp://wiki.openvz.org/Download/template/precreated benutzen. Zum Beispiel, anstatt vzctl-ostmpl-debian-5.0-amd64-minimal template mit apt zu installieren,können wir es ebenso wie folgt runterladen :

cd /var/lib/vz/template/cache
wget http://download.openvz.org/template/precreated/contrib/debian-5.0-amd64-minimal.tar.gz

(Wenn Dein Host ein i386 System ist, kannst du kein amd64 template benutzen - Du musst dann i386 templates nutzen!)


Ich werde dir nun die basic befehle für die Benutzung von OpenVZ zeigen.

Um ein VPS von demvzctl-ostmpl-debian-5.0-amd64-minimal template aufzusetzen(Du findest es in /var/lib/vz/template/cache), starte:

vzctl create 101 --ostemplate debian-5.0-amd64-minimal --config vps.basic


Die 101 muss eine eindeutige ID sein - jede virtuelle Maschine muss seine eigene ID haben. Du kannst den letzten Teil der IP Adresse der virtuellen Maschine dafür benutzen. Zum Beispiel, wenn die virtuelle Maschine die IP adresse 192.168.0.101 hat, benutzt du 101 als die ID.

Wenn Du die vm beim booten gestartet haben willst, starte

vzctl set 101 --onboot yes --save


Um einen hostnamen und eine IP addresse für die vm einzustellen, starte:

vzctl set 101 --hostname test.example.com --save
vzctl set 101 --ipadd 192.168.0.101 --save

Als nächstes setze wir die nummer des sockets auf 120 und geben der vm ein paar nameservers:

vzctl set 101 --numothersock 120 --save
vzctl set 101 --nameserver 145.253.2.75 --nameserver 213.191.92.86 --save

(Anstatt den Befehl vzctl set zu benutzen, kannst Du auch direkt die vm Kkonfigurationsdatei welche du in dem Verzeichnis /etc/vz/conf findest. Wenn die ID der vm 101 ist, dann ist die Konfigurationsdatei /etc/vz/conf/101.conf.)

Um die VM zu starten, starte:

vzctl start 101


Um ein rootpasswort für die vm anzulegen, gib folgendes ein:

vzctl exec 101 passwd


Du kannst nun endwederüber ssh zur vm verbinden(z.B. mit PuTTY), oder wie folgt drauf zugreifen:

vzctl enter 101


Um die vm Konsole zu verlassen, tippe

exit


Um eine vm zu stoppen, starte

vzctl stop 101


Um eine vm neu zu starten, gib ein

vzctl restart 101


um eine vm von der Festplatte zu löschen (sie muss zuvor gestoppt werden), starte

vzctl destroy 101


Um eine Liste all deiner vm und deren status zu bekommen, starte

vzlist -a


server1:~# vzlist -a
VEID NPROC STATUS IP_ADDR HOSTNAME
101 8 running 192.168.0.101 test.example.com
server1:~#

Um die Quelle der vm heraus zufinden, starte

vzctl exec 101 cat /proc/user_beancounters


server1:~# vzctl exec 101 cat /proc/user_beancounters
Version: 2.5
uid resource held maxheld barrier limit failcnt
101: kmemsize 500737 517142 11055923 11377049 0
lockedpages 0 0 256 256 0
privvmpages 2315 2337 65536 69632 0
shmpages 640 640 21504 21504 0
dummy 0 0 0 0 0
numproc 7 7 240 240 0
physpages 1258 1289 0 2147483647 0
vmguarpages 0 0 33792 2147483647 0
oomguarpages 1258 1289 26112 2147483647 0
numtcpsock 2 2 360 360 0
numflock 1 1 188 206 0
numpty 1 1 16 16 0
numsiginfo 0 1 256 256 0
tcpsndbuf 17856 17856 1720320 2703360 0
tcprcvbuf 32768 32768 1720320 2703360 0
othersockbuf 2232 2928 1126080 2097152 0
dgramrcvbuf 0 0 262144 262144 0
numothersock 1 3 120 120 0
dcachesize 0 0 3409920 3624960 0
numfile 189 189 9312 9312 0
dummy 0 0 0 0 0
dummy 0 0 0 0 0
dummy 0 0 0 0 0
numiptent 10 10 128 128 0
server1:~#

Die failcnt Spalte ist sehr wichtig , es sollte nur null anzeigen;wenn es nicht null ist, heißt es, das die vm mehr resourcen braucht als zur Zeit der vm zugewiesen sind. Öffne die vm konfigurationsdatei in /etc/vz/conf und erhöhe die anzahl der jetzigen resourcen, dann starte die vm neu.

Um mehr über vzctl command herauszufinden, starte

man vzctl


4 Links