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.