Dieser Artikel wurde archiviert, da er - oder Teile daraus - nur noch unter einer älteren Ubuntu-Version nutzbar ist. Diese Anleitung wird vom Wiki-Team weder auf Richtigkeit überprüft noch anderweitig gepflegt. Zusätzlich wurde der Artikel für weitere Änderungen gesperrt.
Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.
OpenVZ ist eine Virtualisierungslösung auf Kernel-Ebene. Das heißt, statt eines kompletten Systems samt Hardware wird lediglich das Betriebssystem virtualisiert. Dieser Artikel geht auf die Installation und grundsätzliche Konfiguration einer virtuellen Maschine (VE = Virtual Enviroment) mit OpenVZ unter Ubuntu 8.04 Hardy Heron ein. Sowohl frühere als auch neuere Ubuntu Versionen werden nicht behandelt, da der OpenVZ-Kernel lediglich bei Hardy in den Quellen ist.
Im Vergleich zu den hardwarebasierenden Virtualisierungslösungen wie z.B. VirtualBox, KVM/QEMU oder XEN wird dem virtualisierten System bei OpenVZ keine Hardware vorgegaukelt, sondern nur ein Betriebssystem emuliert, was den gleichen Kernel wie das Hostsystem verwendet. Die Vorteile dieser Lösung sind:
Einfachere (und schnellere) Installation
Einfachere Wartbarkeit
höhere Geschwindigkeit
weniger Overhead
Der größte Nachteil ist die geringere Flexibilität, da die Gastsysteme den gleichen Kernel verwenden müssen wie das Hostsystem. Außerdem ist das Aufsetzen eines graphischen Systems nicht ohne weiteres möglich. Der Zugriff vom Hostsystem aus erfolgt in erster Linie über die Kommandozeile, es können aber natürlich Funktionen wie SSH oder VNC verwendet werden um doch grafischen Zugriff zu bekommen.
Kein wirklicher Nachteil aber in gewisser Hinsicht eine Einschränkung ist, dass OpenVZ über die Quellen nur für Ubuntu 8.04 LTS verfügbar ist.
Folgende Pakete werden zum Betrieb von OpenVZ benötigt [1]:
linux-openvz - Metapaket, installiert automatisch den neusten freigegebenen OpenVZ-Kernel (multiverse [2])
linux-image-openvz (universe)
vzctl (universe)
Je nachdem welche Kernel-Module verwendet werden oder ob die Header zum Kompilieren von Modulen erforderlich sind, müssen auch noch diese Pakete installiert werden:
linux-headers-openvz
linux-restricted-modules-openvz (multiverse)
linux-backport-modules-hardy-openvz (universe)
Dadurch wird der OpenVZ-Kernel installiert und in GRUB eingetragen, standardmäßig an der Stelle über dem generic-Kernel. Nun muss das System neu gestartet werden und beim Neustart in Grub der OpenVZ-Kernel ausgewählt werden (falls das nicht schon der Fall ist).
Werden Grafiktreiber verwendet, die nicht in den Modulen enthalten sind (z.B. fglxr oder nvidia), funktioniert die Grafikausgabe möglicherweise beim Neustart nicht oder nur eingeschränkt. Daher VOR dem Neustart in der xorg.conf einen sicheren Grafiktreiber einstellen (notfalls MESA) und den Grafiktreiber nach dem Neustart für diesen Kernel installieren.
Damit die VEs am Ende Netzwerkzugang haben, müssen ein paar Einstellungen in der Systemkonfiguration vorgenommen werden. Hierfür bitte mit einem Editor [4] die Datei /etc/sysctl.conf öffnen und folgende Variablen ändern bzw. einfügen:
# Aktiviert im Hostsystem Paketweiterleitung für IPv4 um die VEs ans Netz anzubinden net.ipv4.conf.default.forwarding=1 net.ipv4.conf.default.proxy_arp = 0 net.ipv4.ip_forward=1 # Aktiviert eine Überprüfung der Quelle net.ipv4.conf.all.rp_filter = 1 # Aktiviert den ''magic-sysrq key'' kernel.sysrq = 1 # TCP Explict Congestion Notification #net.ipv4.tcp_ecn = 0 # Damit nicht alle Interfaces Weiterleitungen senden net.ipv4.conf.default.send_redirects = 1 net.ipv4.conf.all.send_redirects = 0
Jetzt die sysctl.conf noch neu laden:
sudo sysctl -p
Da OpenVZ kein komplettes System emuliert muss auch kein System im klassischen Sinne installiert werden. Stattdessen werden Templates verwendet, die entweder selbst erstellt werden oder einfach vorgefertigt heruntergeladen werden können. Auf die Erstellung eines eigenen Templates wird in diesem Artikel nicht eingegangen, mehr Informationen dazu gibt es z.B. hier .
Vorgefertigte Templates (unter anderem auch mit der aktuellen Ubuntu Version) gibt es auf dieser Seite . Von dort einfach das gewünschte System-Template herunterladen und dann per
sudo cp /Pfad/zum/Template /var/lib/vz/template/cache
in den OpenVZ Template-Ordner kopieren (oder wahlweise verschieben).
Jetzt kann die VE mit einem einfachen
sudo vzctl create <VEID> --ostemplate <Name des heruntergeladenen Templates OHNE Pfad und ''tar.gz''>
erstellt werden.
Die VEID ist eine eindeutige Zahl zur Identifizierung der VE, die größer als 100 sein sollte (also 101, 102 usw...).
Nun mit
sudo vzctl start <VEID>
die VE starten. Beendet wird über
sudo vzctl stop <VEID>
Ab jetzt kann die VE im Prinzip schon mit
sudo vzctl enter <VEID>
betreten und mit
exit
wieder verlassen werden. Allerdings ist ohne Netzwerkzugriff (und damit Internet) ein vernünftiges Arbeiten mit einem derart minimalen System kaum sinnvoll.
OpenVZ erstellt auf dem Hostsystem automatisch ein virtuelles Interface das von den VEs genutzt wird. Die einfachste (und hier beschriebene Möglichkeit) ist den VEs einfach eine IP im lokalen (oder wahlweise auch einem Sub-) Netz und einen DNS-Server zuzuweisen. Exotischere Konfigurationen wie das Bridging und die IP-Zuweisung per DHCP werden hier beschrieben.
Der simple Weg geht folgendermaßen (alle Kommandos werden im Hostsystem ausgeführt):
Zuerst muss die VE gestoppt werden (siehe oben). Danach werden die grundlegenden Parameter der VE eingestellt.
Setzen eines Hostnamens in der VE
sudo vzctl set <VEID> --hostname <gewünscher Hostname> --save
Einstellen der IP-Adresse (sinnvollerweise die VEID der VE)
sudo vzctl set <VEID> --ipadd <gewünsche IP> --save
Einstellen des DNS-Servers (in einem lokalen Netz mit Router meist die IP des Routers
sudo vzctl set <VEID> --nameserver <IP des DNS-Servers> --save
Vergeben eines Namens zur einfacheren Verwaltung und zum Ansprechen der VE (z.B. email oder webserver)
sudo vzctl set <VEID> --name <gewünscher Name/NAME> --save
Wenn man jetzt die VE startet (vzctl enter <VEID|NAME>) und betritt sollte ein
ping www.ubuntuusers.de
eine bestehende Verbindung bezeugen.
Ab jetzt wird die VE bzw. die VEs bei jedem Start des Rechners hochgefahren. Wer das nicht möchte unterbindet es mit
sudo vzctl set <VEID|NAME> --onboot no --save
. Logischerweise führt ein --onboot yes
wieder zum automatischen Starten
Einer der größten Vorteile von OpenVZ ist die einfache Wartung der VEs. Eine VE kann über Befehle vom Hostsystem gesteuert werden. Das ermöglicht ein einfaches Verwalten der VEs über Skripte, die vom Hostsystem ausgeführt werden. Hierfür genügt ein
sudo vzctl exec <auszuführender Befehl>
Ein Snapshot des aktuellen Stands der VE wird mit
sudo vzctl chkpnt <VEID|NAME> [--dumpfile <PFAD>]
erzeugt. Die Angabe von --dumpfile <PFAD>
ist optional. Wird es weggelassen, wird der Snapshot unter /var/lib/vz/dump/dump.<VEID> gespeichert.
Wird das Template von Hardy Heron verwendet kann es beim Snapshot zu einem Fehler ("Error: iptables-save exited with 255") kommen. Das hängt damit zusammen dass das minimale Ubuntu in diesem Template keine iptables verwendet, die Regeln aber vom Snapshot gespeichert werden sollen.
Der einfachste Weg den Fehler loszuwerden ist das Ausführen dieser Kommandos innerhalb der VE:
ln -sf /bin/true /sbin/iptables-save ln -sf /bin/true /sbin/iptables-restore
Ein solcher Snapshot kann natürlich auch wiederhergestellt werden
sudo vzctl restore <VEID|NAME> [--dumpfile <PFAD>]
Das Auflisten der laufenden VEs geschieht mit
sudo vzlist
Ein angehängtes -a
listet alle VEs auf, auch die die nicht laufen.
http://de.wikipedia.org/wiki/OpenVZ Wikipedia Artikel zum Thema
http://openvz.org/ Projektseite/-wiki
https://help.ubuntu.com/community/OpenVZ Englisches Ubuntu HowTo zu OpenVZ
Diese Revision wurde am 3. Mai 2013 11:43 von frustschieber erstellt.