Benutzer-Werkzeuge

Action disabled: source

"Virtualisierung" mit openvz und debian

openvz installieren

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!!

openvz konfigurieren

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 starten

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.

virtuelle Maschine installieren

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 VM
  • OSNAME: Name des Templates d.h. der Filename ohne Pfad und ohne tar.gz

Wenn 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

Template für VM selber erstellen

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 :-)

tun Interface für Container zugänglich machen

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

Tobi, 2011/12/27 12:57, 2011/12/27 12:57

Weitere nützliche Kommandos für openvz:

1. Mehr Plattenplatz für die vm

vzctl set CTID --diskspace 5G:10G --save

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

#!/bin/bash
. /etc/vz/vz.conf
. ${VE_CONFFILE}
SRC=/mnt/disk
DST=/media/mounts
mount -n -t simfs ${SRC} ${VE_ROOT}${DST} -o ${SRC}

Pfade natürlich ensprechend anpassen. Mittels -r kann der jeweilige mount RO erfolgen

Melden Sie sich an, um einen Kommentar zu erstellen.

Seiten-Werkzeuge