OpenVZ
Willemers Informatik-Ecke

OpenVZ und der geteilte Kernel

Es ist keineswegs zwingend notwendig, einen kompletten PC zu virtualisieren, wenn mehrere virtuelle Debian-Rechner den gleichen Kernel wie das Gastsystem verwenden sollen. In diesem Fall können Sie OpenVZ einsetzen. Es verwendet eine gepatchte Version des Kernels. Dieser ist darauf vorbereitet, von mehreren Hosts genutzt zu werden. Für die Steuerung der virtuellen Maschinen wird das Programmpaket vzctl verwendet:
# apt-get install vzctl

Kernelvorbereitungen

Bevor Sie OpenVZ einsetzen, müssen Sie zunächst einen Kernel installieren, der darauf vorbereitet ist. Je nachdem, ob Sie ein 64- oder 32-Bit-System verwenden, lautet der Befehl zur Installation:
# apt-get install linux-image-openvz-amd64
# apt-get install linux-image-openvz-686
Wie immer nach der Installation eines neuen Kernels empfiehlt es sich, den Rechner neu zu starten. Nach dem Neustart testen Sie mit ps, ob OpenVZ läuft, und mit ifconfig, ob die virtuelle Netzwerkschnittstelle venet0 exisitiert:
# ps -ef | grep vz
root      2592     2  0 17:10 ?        00:00:00 [vzmond]
# ifconfig venet0
venet0    Link encap:UNSPEC  Hardware Adresse 00-00-00-0...

Templates und debootstrap

Für den Start benötigt die virtuelle Maschine ein Template. Sie finden vorbereitete Templates auf der OpenVZ-Website unter der folgenden URL zum Download: http://wiki.openvz.org/Download/template/precreated Alternativ können Sie sich ein eigenes Template erstellen. Das Vorgehen wird in der dem Paket beiliegenden Dokumentation in der Datei /usr/share/doc/vzctl/README.Debian.gz beschrieben. Dazu benötigen Sie das Programm debootstrap, das mit dem folgenden Befehl installiert wird:
# apt-get install debootstrap
Das Programm baut über das Internet eine startbare Linux-Installation zusammen. Der folgende Befehl erstellt für die 64-Bit-Architektur eine Debian-Version im Verzeichnis /var/lib/vz/private/100 aus den Ressourcen, die das Programm auf der Website http://ftp.uk.debian.org/debian findet. Je nach Geschwindigkeit Ihres Internetanschlusses dauert dieser Vorgang ein Weilchen. Der folgende Befehl wird normalerweise in einer Zeile gesetzt, wird hier allerdings aus drucktechnischen Gründen durch den Einsatz eines Backslashs umbrochen.
# debootstrap --arch amd64 linuxsrv \
          /var/lib/vz/private/100         \
          http://ftp.de.debian.org/debian
Die Zahl 100 im Pfad ist die Nummer der virtuellen Gastmaschine. Sie wird im Folgenden immer wieder benutzt, um die virtuelle Maschine zu konfigurieren, zu starten, zu betreten und zu stoppen. Wenn Sie mehrere Maschinen einrichten, muss jede eine eindeutige Nummer über 100 haben.

Basiskonfiguration

Der folgende Befehl richtet eine Basiskonfiguration für den Container ein. Der Befehl echo sorgt dafür, dass als Template ein Debian in die Konfigurationsdatei geschrieben wird. Sie könnten dies natürlich auch mit einem Editor tun.
# vzctl set 100 --applyconfig basic --save
# echo "OSTEMPLATE=debian" >> /etc/vz/conf/100.conf
Der Container soll den Hostnamen vzlinuxsrv erhalten. Die Domäne ist wie hier im Buch üblich willemer.edu. Ich bin sicher, Sie finden passendere Namen für Ihre Umgebung.
# vzctl set 100 --hostname vzlinuxsrv --save
# echo vzlinuxsrv.willemer.edu  \
             > /var/lib/vz/private/100/etc/mailname
Auf die gleiche Weise können dem Container eine IP-Adresse und der zuständige DNS-Server mitgeteilt werden:
# vzctl set 100 --ipadd 192.168.109.191 --save
# vzctl set 100 --nameserver 192.168.109.199 --save

Durchstarten

Nun sollte alles bereit sein, um die Maschine zu starten.
# vzctl start 100
Starting container ...
Initializing quota ...
Container is mounted
Adding IP address(es): 192.168.109.191
Setting CPU units: 1000
Set hostname: vzlinuxsrv
File resolv.conf was modified
Container start in progress...
#
Mit dem Befehl vzctl enter können Sie einen Container betreten. Die folgende Abfolge von Befehlen zeigt dies. Mit den Befehlen df und free wird gezeigt, wie der Container von innen aussieht. Sie können ihn durch einen normalen Logout verlassen. Mit dem Befehl vzctl stop wird der Container 100 wieder heruntergefahren.
# vzctl enter 100
entered into CT 100
root@vzlinuxsrv:/# df 
Filesystem    1K-blocks    Used Available Use% Mounted on
/dev/simfs      1048576  219952    828624  21% /
tmpfs            131072       0    131072   0% /lib/init/rw
tmpfs            131072       0    131072   0% /dev/shm
root@vzlinuxsrv:/# free
             total   used   free shared  buffers cached
Mem:        262144  29668 232476      0        0      0
-/+ buffers/cache:  29668 232476
Swap:            0      0      0
root@vzlinuxsrv:/# logout
exited from CT 100
# vzctl stop 100
Stopping container ...
Container was stopped
Container is unmounted
Wie Sie bereits zuvor gesehen haben, verwendet die Maschine 100 die Konfigurationsdatei /etc/vz/conf/100.conf. Jede Maschine besitzt also ihre eigene Konfiguration.