OpenVZ HowTo

By | 12. August 2008

Da das Thema Virtualisierung immer mehr im kommen ist und die Tools schon eine verdammt gutes performanceergebniss erzielen, will ich in diesem HowTo OpenVZ etwas näher erläutern. OpenVZ wird schon seit längerer Zeit bei vielen Hostern eingesetzt, da Virtuozzo auch auf OpenVZ aufbaut.

Dieses HowTo bezieht sich auf eine Installation unter Debian Etch.

Wer näheres zu OpenVZ lesen möchte kann auf die Intertseite des Projects schauen -> OpenVZ.org

1. Kernel installieren

Um den OpenVZ Kernel zu installieren benötigen wir erst die richtige Quelle. Diese tragen wir in der sources.list ein.

1
# vi /etc/apt/sources.list

deb http://download.openvz.org/debian etch main
Danach müssen wir die Quellen aktualisieren und können den Kernel installieren

1
2
3
# apt-get update
# apt-cache search linux-image-2.6.18-openvz
# apt-get install <linux-image>

Wer seinen Kernel nicht kennt –> „uname -a“

2. Tools installieren

OpenVZ können wir mit einigen Tools steuern. Dise müssen wir noch installieren:

1
# apt-get install vzctl vzquota

3. Netzwerk am Hostsystem anpassen

1
# vi /etc/network/interfaces

Folgende Zeilen müssen zur der verwendeten Netzwerkkarte geschrieben werden.
Bitte „%DEV%“ durch das eigentlich Interface ersetzen z.B. eth0

1
2
up sysctl -w net.ipv4.conf.%DEV%.proxy_arp=100
pre-down sysctl -w net.ipv4.conf.%DEV%.proxy_arp=0

Jetzt müssen wir noch Einstellungen für den proxy vornehmen:

1
# vi /etc/sysctl.conf

Die Datei muss so angepasst werden

1
2
3
4
5
6
7
8
9
10
11
12
13
# On Hardware Node we generally need
# packet forwarding enabled and proxy arp disabled
net.ipv4.ip_forward = 1
net.ipv4.conf.default.proxy_arp = 0
# 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

4. Symlink setzen

Jetzt benötigen wir noch einen Symlink für das Verzeichniss VZ

1
# ln -s /var/lib/vz /vz

5. Kernel laden

Um den neuen Kernel zu starten benötigen wir einen neustart des Systems

1
# reboot

6.)Installation prüfen

Nachdem das System wieder erreichbar ist können wir „uname -a“ sehen ob der OpenVZ Kernel geladen wurde

1
2
openvz:/# uname -a
Linux openvz 2.6.18-openvz-12-1etch1-686 #1 SMP Sat May 5 00:26:59 CEST 2007 i686 GNU/Linux

Wenn das so passt sollten wir auch ein neues Netzwerkinterface „venet0“ haben

1
2
3
4
5
6
7
8
9
openvz:/# ifconfig
...
...
venet0    Protokoll:UNSPEC  Hardware Adresse 00-00-00-00-00-00-00-00-00-00-00-00
UP BROADCAST PUNKTZUPUNKT RUNNING NOARP  MTU:1500  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
Kollisionen:0 Sendewarteschlangenlänge:0
RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

7. Templates installieren

Jetzt kommen wir zu den eigentlichen Templates (Betiebsystemen) für OpenVZ.
Hier ist ein größer Unterschied zwischen OpenVZ und VMWare festzustellen.
Unter OpenVZ kann nur wieder ein Linux gestartet werden, nicht aber ein Windows.

Es gibt schon eine große Sammlung von OpenVZ Templates auf der Seite des Projektes -> Template Diese sind schon vorkonfiguriert und müssen nur noch heruntergeladen werden. Wir wollen jetzt einfach mal ein OpenSuSE 10 in OpenVZ zum laufen zu bringen.

7.1 Templates herunterladen

Die Templates müssen in das folgende Verzeichniss abgelegt werden:

1
openvz:/var/lib/vz/template/cache#

Am besten nehmen wir gleich wget um das fertige Template auf unseren Rechner zu bringen:

1
# wget http://download.openvz.org/template/precreated/opensuse-10-i386-default.tar.gz

8. Erste Virtual Environment anlegen

Nachdem wir das Template heruntergeladen haben, können wir es einmal installieren und immer wieder für eine neue Maschine benützen.Es muss auch nicht entpackt werden.
Los gehts:

1
# vzctl create 101 --ostemplate opensuse-10-i386-default

Damit erstellen wir eine neue VE mit der ID 101 und dem Template von OpenSuSE
Wichtig ist das die ID größer 100 sein muss. Das ganze sollte dann so aussehen:

1
2
3
4
5
openvz:/# vzctl create 101 --ostemplate opensuse-10-i386-default
Creating VPS private area: /var/lib/vz/private/101
Performing postcreate actions
VPS private area was created
openvz:/#

Jetzt müssen wir der VE noch eine IP vergeben:

1
# vzctl set 101 --ipadd 192.168.100.217 --save

Wenn das auch geklappt hat sollte ein „Save parameters for VPS 101“ erscheinen. Das war es auch schon mit der einrichtung und wir können die VE starten:

1
# vzctl start 101

9. Virtual Environment testen

Nachdem die VE jetzt läuft können wir direkt Befehle in der VE absetzen. Der Grundbefehl lautet:

1
# vzctl exec VEID

So können wir mal alle Prozesse die innerhalb der VE laufen abfragen:

1
# vzctl exec 101 ps ax

Jegliches Command kann abgesetzt werden wir es jeder von Linux kennt. Es muss jedeglich ein „vzctl exec VEID“ davor gestellt werden.

SSH ist normalerweise bei den vorkonfigurierten schon am laufen. Es muss nur noch das root Passwort neu gesetzt werden und man kann sich direkt per SSH an der VE anmelden.

10. VE Sichern (Backup)

Wer von seinen VE eine Sicherung machen will, der sollte vzdump installieren

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

vzdump ist eigentlich ziemlich selbst erklären:

1
2
3
4
5
6
7
8
9
vzdump OPTIONS [--all ]
--compress              compress dump file (gzip)
--dumpdir DIR           store resulting files in DIR
--xdelta                create a differential backup using xdelta
--mailto EMAIL          send notification mail to EMAIL
--stop                  stop/start VPS if running
--suspend               suspend/resume VPS when running
--snapshot              use LVM snapshot when running
--restore FILENAME      restore FILENAME

11. Comannds im überblick

Hier ein kurzer Überblick der OpenVZ Commandos. Quelle: Wikipedia

1
vzctl create VEID [--ostemplate ] [--config ]

Dieser Befehl erzeugt ein neues VE, das eine numerische ID, ein angegebenes OS-Template (eine Linux Distribution) und die Ressourcen, die in der angegebenen Konfigurationsdatei spezifiziert sind, hat. Die beiden Parameter –ostemplate und –config sind optional. Die Hauptkonfigurationsdatei enthält Standardwerte für beide.

1
vzctl start VEID

Startet das angegebene VE. Das Starten bedeutet das Erzeugen eines Virtual Environment im Kernel, Initialisieren von allen Ressourcenverwaltungsparametern und Starten des VE’s /sbin/init in diesem Umfeld.

1
vzctl stop VEID

Stoppt das angegebene VE. Ein VE kann auch mit Hilfe von eigenen /sbin/halt oder /sbin/reboot -Befehlen gestoppt oder neu gestartet werden.

1
vzctl exec VEID

Startet den Befehl im angegebenen VE. Um beispielsweise alle Prozesse im VE 102 anzeigen zu lassen, kann man vzctl exec 102 ps ax nutzen.

1
vzctl enter VEID

Öffnet die VE-Shell. Das ist nützlich, wenn z. B. sshd nicht gestartet ist und Sie das Problem untersuchen möchten.

1
vzctl set VEID --parameter  [...] [--save]

Setzt den angegebenen Parameter für das VE. Hier können verschiedene Parameter benutzt werden; Um die Festplattenquota für das VE festzulegen, verwenden Sie

1
vzctl set VEID --diskspace soft:hard --save.

Um das Kernel-RAM-Soft-Limit und –Hard-Limit für VE zu (re)definieren, müssen Sie den Befehl so starten:

1
vzctl set VEID --kmemsize barrier:limit --save

Und um eine VE wieder zu löschen

1
vzctl destroy VEID

2 thoughts on “OpenVZ HowTo

  1. Emile

    Useful information. Lucky me I found your site by accident, and I am shocked why this coincidence didn’t took place earlier! I bookmarked it.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.