Wenn das geklappt hat kann man den Kernel folgendermassen installieren (hier am Beispiel einer amd64 Umgebung d.h. das Paket kann bei Euch auch anders heissen) Code:
apt-get install linux-headers-2.6-openvz-amd64 apt-get install linux-image-2.6-openvz-amd64
obige Kommandos sollten Euch sogenannte Metapakete installieren d.h. diese Pakete sind eigentlich nicht mehr als Links auf die bentötigten Pakete. ACHTUNG: Obiges ist nur für Intel 64-bit Prozessoren korrekt!!
Bevor man zum ersten Mal den neuen openvz Kernel booten kann, muss man noch einige Anpassungen an der Konfiguration machen. Stellt als erstes sicher, dass folgende Einträge in /etc/sysctl.conf sind: Code:
# 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
Danach setzt ihr das Kommando
sysctl -p
ab. Um künftige Tipparbeit zu minimieren gleich noch einen Link anlegen
ln -s /var/lib/vz /vz
Die Konfiguration der virtuellen Maschinen liegt in /etc/vz/vz.conf
Gerade wenn ihr ein Modell mit zwei eth-Schnittstellen habt, macht es Sinn dort mal reinzugucken und explizit das Interface für openvz anzugeben.
Wenn ihr die Firewall der vm nutzen wollt, dann müsst ihr sicherstellen, dass folgenden Module in /etc/vz/vz.conf gesetzt sind (der code muss natürlich auf einer Zeile stehen, das Forum bricht es leider auch in code-Tags immer um)
IPTABLES="ip_tables ipt_REJECT ipt_tos ipt_limit ipt_multiport iptable_filter iptable_mangle ipt_TCPMSS ipt_tcpmss ipt_ttl ipt_length ip_conntrack ip_conntrack_ftp ip_conntrack_irc ipt_LOG ipt_conntrack ipt_helper ipt_state iptable_nat ip_nat_ftp ip_nat_irc ipt_TOS"
openvz kann man zum ersten Test mal manuell starten
/etc/init.d/vz start
wenn keinerlei Fehler kommen kann man den Start auch automatisch beim Booten einleiten
update-rc.d vz defaults 98
Nachdem obiges alles ohne Fehler vom System akzeptiert wurde kann man mal einen Reboot wagen. Bei der Installation des openvz-Kernels wurden die Startparameter im grub so angepasst, dass automatisch der openvz-Kernel geladen wird. Man kann also auf einer remote Shell einfach reboot eingeben und warten bis die DS wieder da ist.
Nachdem der Reboot geklappt hat kann man sich daran machen sich eine virtuelle Maschine zu erstellen. Virtuelle Maschinen bei openvz basieren auf sogn. templates. Von diesen Templates gibt es bereits viele vorgefertigte Pakete, die man sich einfach installieren kann. Eine Liste verschiedener Templates gibt es z.B hier oder http://download.openvz.org/contrib/template/precreated/
Wie man eigene Templates erstellen kann steht hier http://wiki.openvz.org/Debian_template_creation Habe ich aber selber bis jetzt ned probiert.
Die Templates (tar.gz) kommen nach /vz/template/cache Die Archive nicht entpacken sondern einfach dort reinschmeissen
Mit dem Programm vzctl kontrolliert man die virtuellen Maschinen und konfiguriert sie
vzctl create CTID --ostemplate OSNAME
CTID
: Nummer für eure VMOSNAME
: Name des Templates d.h. der Filename ohne Pfad und ohne tar.gzWenn unsere Template Datei also debian_squeeze_amd64.tar.gz heissen würde und wir die ID 101 für den Container wollen ergibt sich folgendes Kommando
vzctl create 101 --ostemplate debian_squeeze_amd64
dann weisst man diesem Container die IP und einen Nameserver zu
vzctl set 101 --ipadd XXX.XXX.XXX.XXX --save vzctl set 101 --nameserver YYY.YYY.YYY.YYY --save
das wars eigentlich schon. Mit dieser Konfig sollte die VM lauffähig sein. Natürlich XXX und YYY mit Euch passenden Werten ersetzen. Dann kann man den Container so anwerfen
vzctl start 101
und so kommt man vom Host in den Container rein
vzctl enter 101
Per default wird dem Container 256MByte RAM zugewiesen, sollte das zu wenig sein, kann man dem Container mittels vzctl mehr Speicher zuweisen
vzctl set 101 --privvmpages WERT --save
wichtig: Wert ist kein Bytewert sondern die Anzahl Speicherseiten. Normalerweise ist eine Seite 4096 bytes gross
Den laufenden Container kann man einfach mittels exit verlassen und mittels
vzctl stop 101
komplett stoppen (letzteres geht nur vom Hostsystem aus)
Wenn man einen Container komplett vernichten will
vzctl destroy 101
Hier mal noch ein kurzes HowTo zum Erstellen eines eigenen OS-Templates für openvz:
Am Bsp eines Debian möchte ich kurz zeigen wie man selber ein Template erstellen kann Zuerst einmal muss man auf dem Debian (kann aber auch eine Debian sonstwo sein) der DS
apt-get install debootstrap
machen. Unter der Voraussetzung dass man den Link /vz angelegt hat und eine amd64 Plattform hat
debootstrap --arch amd64 squeeze /vz/private/CTID http://mirror.switch.ch/ftp/mirror/debian/
Das dauert ein Weilchen und danach
vzctl set CTID --applyconfig basic --save
Damit wird das Basis Template erstellt Dann dem conf File sagen welches Template geladen werden soll
echo 'OSTEMPLATE=\"debian-squeeze-minimal\"' >> /etc/vz/conf/CTID.conf
Dann der VM eine IP und einen Nameserver hinzufügen, damit man sie mal testweise starten kann
vzctl set CTID --ipadd XXX.XXX.XXX.XXX --save vzctl set CTID --nameserver YYY.YYY.YYY.YYY --save vzctl start CTID
Dann mittels
vzctl enter CTID
in die VM rein und dann einige abschliessende Arbeiten machen
sed -i -e '/getty/d' /etc/inittab rm -f /etc/mtab ln -s /proc/mounts /etc/mtab dpkg-reconfigure tzdata #folgendes muss man ned unbedingt machen dpkg --purge modutils ppp pppoeconf pppoe pppconfig module-init-tools update-rc.d-insserv -f klogd remove update-rc.d-insserv -f quotarpc remove update-rc.d-insserv -f exim4 remove update-rc.d-insserv -f inetd remove
Zum Abschluss noch ein
apt-get --purge clean #und den Container verlassen exit
Danach (wieder im Hostsystem) die IP wieder entfernen
vzctl set CTID --ipdel all --save rm -f /vz/private/CTID/etc/hostname vzctl stop CTID cd /vz/private/CTID
es ist wichtig, dass ihr den letzten cd macht. Denn jetzt erstellen wir das Template File und sollten daher schon im korrekten Verzeichnis sein
tar --numeric-owner -zcf /vz/template/cache/debian-squeeze-minimal.tar.gz .
wichtig ist der Punkt am Ende, der gibt an dass das aktuelle Verzeichnis gepackt werden soll.
Wenn das durch ist testen indem ihr einen neuen Container anlegt
vzctl create 123456 --ostemplate debian-squeeze-minimal vzctl start 123456 vzctl exec 123456 ps ax
das letzte Kommando (mit exec) zeigt nur die Prozesse des Containers an Wenn diese Test geklappt haben dann sollte man den „alten“ Container, welchen man zum Erstellen des Templates gebraucht hat stoppen und zu entfernen
vzctl stop CTID vzctl destroy CTID
Das sollte es eigentlich gewesen sein
Falls ihr OpenVPN nutzen wollt innerhalb eines Containers muss man das tun Module im Host-System laden und dann dem Container zuweisen
lsmod | grep tun
falls obiges nichts zurückgibt ist das tun Module noch nicht geladen, was man mittels
modprobe tun
machen kann. Danach weist man dem Container das Interface zu
vzctl set CTID --devnodes net/tun:rw --save
Diskussion
Weitere nützliche Kommandos für openvz:
1. Mehr Plattenplatz für die vm
erster Wert gibt die „softe“ Grenze an und der zweite Wert die „harte“ d.h. aber dem letzten Wert ist kein weiteres Schreiben auf die Platten mehr möglich
2. Verzeichnisse des Hostsystems in die vm mounten
legt in /etc/vz/conf/ eine CTID.mount Datei an. Diese beinhaltet die Anweisung zu mounten der Verzeichnisse
Pfade natürlich ensprechend anpassen. Mittels -r kann der jeweilige mount RO erfolgen