ubuntuusers.de

OpenVZ

Archivierte Anleitung

Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.

Artikel für fortgeschrittene Anwender

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.

Vor- und Nachteile von OpenVZ

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.

Installation

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 Archiv/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).

Achtung!

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.

Konfiguration

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 

Template herunterladen und installieren

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

VE installieren und starten

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> 

Betreten und verlassen

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.

Netzwerkkonfiguration

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.

Achtung!

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

Wartung

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> 

Snapshot

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.

Achtung!

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 

Snapshot wiederherstellen

Ein solcher Snapshot kann natürlich auch wiederhergestellt werden

sudo vzctl restore <VEID|NAME> [--dumpfile <PFAD>] 

Löschen einer VE

sudo vzctl destroy [VEID|VENAME] 

Überwachung

Das Auflisten der laufenden VEs geschieht mit

sudo vzlist 

Ein angehängtes -a listet alle VEs auf, auch die die nicht laufen.

Diese Revision wurde am 13. Februar 2020 09:25 von Heinrich_Schwietering erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Emulation und Virtualisierung, Server