[[Vorlage(archiviert)]] [[Vorlage(Fortgeschritten)]] {{{#!vorlage Wissen [:Pakete_installieren:Installation von Programmen] [:Paketquellen_freischalten: Bearbeiten von Paketquellen] [:Terminal:Ein Terminal öffnen] [:Editor:Einen Editor öffnen] }}} [[Inhaltsverzeichnis]] 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''' - [:Metapakete: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). {{{#!vorlage Warnung 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: {{{#!vorlage Befehl 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. [https://help.ubuntu.com/community/OpenVZ#Create%20Template hier] {en}. Vorgefertigte Templates (unter anderem auch mit der aktuellen Ubuntu Version) gibt es [http://openvz.org/download/template/cache/ auf dieser Seite] {dl}. Von dort einfach das gewünschte System-Template herunterladen und dann per {{{#!vorlage Befehl 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 {{{#!vorlage Befehl sudo vzctl create --ostemplate }}} 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 {{{#!vorlage Befehl sudo vzctl start }}} die VE starten. Beendet wird über {{{#!vorlage Befehl sudo vzctl stop }}} == Betreten und verlassen == Ab jetzt kann die VE im Prinzip schon mit {{{#!vorlage Befehl sudo vzctl enter }}} betreten und mit {{{#!vorlage Befehl 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 [http://wiki.openvz.org/Common_Networking_HOWTOs#Public_VEs_.28with_their_own_IP_addresses.29 hier] {en} 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 {{{#!vorlage Befehl sudo vzctl set --hostname --save }}} * Einstellen der IP-Adresse (sinnvollerweise die VEID der VE) {{{#!vorlage Befehl sudo vzctl set --ipadd --save }}} * Einstellen des DNS-Servers (in einem lokalen Netz mit Router meist die IP des Routers {{{#!vorlage Befehl sudo vzctl set --nameserver --save }}} * Vergeben eines Namens zur einfacheren Verwaltung und zum Ansprechen der VE (z.B. ''email'' oder ''webserver'') {{{#!vorlage Befehl sudo vzctl set --name --save }}} Wenn man jetzt die VE startet (''vzctl enter '') und betritt sollte ein {{{#!vorlage Befehl ping www.ubuntuusers.de }}} eine bestehende Verbindung bezeugen. {{{#!vorlage Warnung 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 --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 {{{#!vorlage Befehl sudo vzctl exec }}} == Snapshot == Ein Snapshot des aktuellen Stands der VE wird mit {{{#!vorlage Befehl sudo vzctl chkpnt [--dumpfile ] }}} erzeugt. Die Angabe von ``--dumpfile `` ist optional. Wird es weggelassen, wird der Snapshot unter '''/var/lib/vz/dump/dump.''' gespeichert. {{{#!vorlage Warnung 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: {{{#!vorlage Befehl 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 {{{#!vorlage Befehl sudo vzctl restore [--dumpfile ] }}} == Löschen einer VE == {{{#!vorlage Befehl sudo vzctl destroy [VEID|VENAME] }}} == Überwachung == Das Auflisten der laufenden VEs geschieht mit {{{#!vorlage Befehl sudo vzlist }}} Ein angehängtes ``-a`` listet alle VEs auf, auch die die nicht laufen. = Links = * [http://de.wikipedia.org/wiki/OpenVZ] {de} Wikipedia Artikel zum Thema * [http://openvz.org/] {en} Projektseite/-wiki * [https://help.ubuntu.com/community/OpenVZ] {en} Englisches Ubuntu HowTo zu OpenVZ #tag: Emulation und Virtualisierung, Server