Home ORDIX AG             Dienstleistung             Trainingsshop    Kunden / Referenzen Aktuelles    Kontakt
Home  Pfeil  ORDIX News  Pfeil  1/2008  Pfeil  Open/Source
suche: 
Der Artikel richtet sich an Systemadministratoren, Anwender und Entscheider, die sich mit Virtualisierung beschäftigen und für neue Techniken/Alternativen interessieren.

Glossar

Virtual Environment oder Virtual Private Server (VPS)
Bezeichnung der Gastsysteme unter OpenVZ, welche auf derselben Hardware ausgeführt werden.
Quota
Mit Festplattenquotas kann bestimmt werden, wie viel Speicherplatz ein Benutzer oder eine Gruppe im Dateisystem belegen darf.


Alternative Virtualisierungslösungen

Alles virtuell mit OpenVZ und Virtuozzo

In vergangenen ORDIX News Artikeln haben wir schon des Öfteren über Themen aus den Bereichen der Virtualisierung berichtet. Hierbei wurden vor allem VMware und XEN, die wohl bekanntesten Virtualisierungslösungen, behandelt. In dieser Ausgabe berichten wir über OpenVZ und Virtuozzo, zwei Virtualisierungslösungen, die vor allem im Internetsektor inzwischen sehr stark verbreitet sind.

OpenVZ, das Freie

Abb. 1: Aufbau von Host und Virtual
Environments. (vergrößern)

OpenVZ, die Open Source Virtualisierungslösung (siehe Abbildung 1), erstellt mehrere voneinander isolierte und sichere, virtuelle Umgebungen auf einem einzigen, physikalischen Linux-Server, die sich „Virtual Environment“ oder „Virtual Private Server“ (VPS) nennen. OpenVZ sorgt für eine bessere Ausnutzung der Hardware und stellt dabei sicher, dass ausgeführte Anwendungen nicht miteinander in Konflikt geraten. Jedes Virtual Environment arbeitet und verhält sich genau wie ein eigenständiger Server. Virtual Environments können unabhängig voneinander neu gestartet werden, haben einen eigenen root-Account sowie eigene Benutzer, IP-Adressen, Speicher, Prozesse, Dateien, Programme, Systembibliotheken und Konfigurationsdateien.

Die Prozesse eines Virtual Environments sind als Prozesse unter dem Hostsystem sichtbar und alle Prozessoren des Hostsystems können voll genutzt werden. Das Dateisystem eines Virtual Environments ist ein Unterverzeichnis auf dem Hostsystem, in dem ein komplettes Linux-Betriebssystem installiert ist. Beim Starten eines Virtual Environments wird mit dem Befehl chroot in das entsprechende Unterverzeichnis gewechselt und dort der normale init-Vorgang gestartet. Da das Hostbetriebssystem Zugriff auf alle Dateien des Virtual Environments hat, ist der Austausch von Dateien zwischen Host und Gast leicht durchführbar. Der Austausch von Dateien zwischen den Virtual Environments wird ganz normal mit Netzwerkdiensten wie NFS, FTP, SCP etc. durchgeführt.

Das Netzwerk wird durch OpenVZ weitestgehend virtualisiert. Jedes Virtual Environment kann mit einer oder mehreren IP-Adressen konfiguriert werden. Dabei sind die Virtual Environments voneinander und vom physikalischen Netzwerk isoliert. Dadurch entsteht Sicherheit, denn es ist z. B. nicht möglich, den Netzwerkverkehr eines anderen Environments oder des Hosts mit Sniffern mitzuhören. Innerhalb eines Virtual Environments ist es möglich, Routing, NAT und Firewall-Regeln einzurichten.

OpenVZ unterstützt bis zu 8 CPUs mit 32 oder 64 Bit, 64 GB RAM und ein Maximum von 100 gleichzeitigen VPS-Instanzen. Dazu nutzt OpenVZ eine einzige Version des darunter liegenden Linux-Kernels für jede seiner VPS-Instanzen, wobei unterschiedliche Linux-Distributionen zeitgleich laufen können. Aus diesen Gründen ist OpenVZ ideal für Experimentierfreudige, IT-Integratoren und für kleinere IT-Unternehmen, in denen die Hardware möglichst gut ausgelastet sein soll und die ihre Server mit unterschiedlichen Distributionen betreiben möchten. OpenVZ ist unter der GPL Version 2 lizenziert. Das OpenVZ Softwarepaket besteht aus einem angepassten Kernel und Tools zur Verwaltung virtueller Maschinen.

Ressourcenverwaltung

Da alle Virtual Environments denselben Kernel nutzen, spielt die Ressourcenverwaltung eine wichtige Rolle. Jedes Virtual Environment darf nur im Rahmen seiner zugewiesenen Ressourcengrenzen bleiben und die anderen Environments nicht beeinflussen.

Die Ressourcenverwaltung von OpenVZ besteht aus drei Teilsystemen:

Jede dieser Ressourcen lässt sich im laufenden Betrieb verändern. Es ist hierfür kein Neustart des Virtual Environments notwendig. Soll einem Virtual Environment beispielsweise mehr Arbeitsspeicher zugewiesen werden, können die entsprechenden Parameter „on the fly“ geändert werden.

Festplattenquota

Da die Dateien des Virtual Environments unter dem Hostbetriebsystem komplett sichtbar sind, gibt es zwei Ebenen, auf denen der Festplattenplatz des Environments eingeschränkt werden kann. Die erste Ebene ist ein Festplattenquota pro Virtual Environment, welches auf dem Hostbetriebsystem definiert wird. Die zweite Ebene ist die standardmäßige Unix-Festplattenquota pro Benutzer und pro Gruppe innerhalb eines Virtual Environments. Durch Vergrößern der entsprechenden Festplattenquota kann einem Virtual Environment, einem Benutzer oder einer Gruppe mehr Festplattenplatz zur Verfügung gestellt werden.

CPU-Scheduler

Auch der CPU-Scheduler in OpenVZ besitzt eine auf zwei Ebenen aufgeteilte Strategie. Auf der ersten Ebene entscheidet der Scheduler, welches Virtual Environment den CPUTakt erhält. Der Administrator kann mit dem Befehl vzctl --cpuunits unterschiedliche CPU-Scheduler Prioritäten an die Virtual Environments vergeben. Auf der zweiten Ebene entscheidet der standardmäßige Linux-Scheduler, welcher Prozess im ausgewählten Virtual Environment den CPU-Takt bekommen soll. Dabei werden die Standard Linux Prioritäten (nice-Wert) von Prozessen benutzt.

User Beancounters

uid  resource        held  maxheld  barrier       limit  failcnt
123: kmemsize      836919  1005343  2752512     2936012        0
     lockedpages        0        0       32          32        0
     privvmpages     4587     7289    49152       53575        0
     shmpages          39       39     8192        8192        0
     dummy              0        0        0           0        0
     numproc           20       26       65          65        0
     physpages       2267     2399        0  2147493647        0
     vmguarpages        0        0     6144  2147493647        0
     oomguarpages    2267     2399     6144  2147493647        0
     numtcpsock         3        3       80          80        0
     numflock           3        4      100         110        0
     numpty             1        1       16          16        0
     numsiginfo         0        1      256         256        0
     tcpsndbuf          0        0   319488      524288        0
     tcprcvbuf          0        0   319488      524288        0
     othersockbuf    6684     7888   132096      336896        0
     dgramrcvbuf        0     8372   132096      132096        0
     numothersock       8       10       80          80        0
     dcachesize     87672    92168  1048576     1097728        0
     numfile          238      306     2048        2048        0
     dummy              0        0        0           0        0
     dummy              0        0        0           0        0
     dummy              0        0        0           0        0
     numiptent         10       16      128         128        0
Abb. 2: Übersicht über verfügbare User Beancounters.

Die User Beancounters sind ein Satz von Ressourcenzählern, Limits und Garantien, die pro Virtual Environment definiert werden können. Es gibt circa 20 unterschiedliche Parameter, die vom Administrator sorgfältig ausgewählt werden müssen, um alle Aspekte der Virtual Environment Funktionalität zu berücksichtigen. Abbildung 2 zeigt eine Übersicht über mögliche User Beancounters. Zu den kontrollierten Ressourcen gehören der Arbeitsspeicher und verschiedene Kernel-Objekte, wie IPC Shared Memory Segments, Netzwerk-Buffer etc. Die eingestellten Werte können unter /proc/user_beancounters innerhalb des Virtual Environments eingesehen werden. Das Feld uid in Abbildung 2 gibt die numerische Zuordnung des Virtual Environments an.

Weiterhin werden immer 5 Werte für jeden einzelnen Parameter angezeigt:

Die Bedeutungen von Soft-Limit und Hard-Limit unterscheiden sich von Parameter zu Parameter. Generell gilt: Wenn irgendeine Ressource das Soft-Limit überschreitet, wird der entsprechende Fehlerzähler erhöht. Wird das Hard-Limit erreicht, kann von der entsprechenden Ressource nicht mehr reserviert werden.

Live-Migration

Die Live-Migration ist eine Funktionalität von OpenVZ, die es ermöglicht, ein Virtual Environment von einem physikalischen Server auf einen anderen zu migrieren, ohne dabei das Virtual Environment komplett beenden zu müssen. Das Virtual Environment wird stattdessen eingefroren und alle Prozesse werden in einer Datei gespeichert. Dieser Vorgang des Einfrierens wird Checkpointing genannt. Anschließend wird die gespeicherte Datei auf eine andere Maschine übertragen und alle Prozesse werden wiederhergestellt.

Die Übertragung des Virtual Environments auf ein anderes Hostsystem nimmt nur einige Sekunden in Anspruch, was vor allem vom gemeinsam genutzten Medium (SAN, NAS etc.) abhängig ist. Für den Benutzer äußert sich die Migration nur mit einer kleinen Verzögerung, verursacht aber keine Downtime. Die Tatsache, dass dabei der komplette Status des Virtual Environments gespeichert wird, wie zum Beispiel geöffnete Netzwerkverbindungen, macht den ganzen Migrationsprozess für den Benutzer völlig transparent.

Einsatzgebiete der Live-Migration wären z. B. Software-Wartungsarbeiten oder ein Upgrade eines Servers, ohne alle Environments komplett beenden zu müssen. Wenn eine Datenbank oder eine andere Applikation in einem Virtual Environment mehr Arbeitsspeicher oder CPU-Ressourcen benötigt, das aktuelle Hostsystem aber keine Ressourcen mehr frei hat, kann das Virtual Environment auf ein leistungsstärkeres System „Live“ migriert werden. Dort können die entsprechenden Limits vergrößert werden.

Virtuozzo, das Kommerzielle

Virtuozzo ist das kommerzielle Produkt aus dem Hause SWsoft Inc., das auf Basis von OpenVZ entwickelt und weiterentwickelt wurde. Das Projekt OpenVZ wird von SWsoft unterstützt und vorangetrieben. Dabei nutzt SWsoft das Open Source Produkt als exzellente Testmöglichkeit für künftige Entwicklungen der kommerziellen, umfangreicheren Produktlinie. Die ursprünglichen Hauptziele bei der Entwicklung von Virtuozzo waren Leistungsfähigkeit, möglichst wenig Serverlast zu erzeugen und eine möglichst einfache Verwaltung der Gastsysteme.

Abb. 3: Administrationsmenü von Virtuozzo.
(vergrößern)

Im Gegensatz zu OpenVZ adressiert Virtuozzo (siehe Abbildung 3) produktive IT-Umgebungen und bietet eine höhere Skalierbarkeit, Performance sowie eine größere Vielfalt an Administrationswerkzeugen. Insgesamt gewährleistet Virtuozzo ein einfacheres Management und eine bessere Ausnutzung vorhandener Hardware. Außerdem läuft Virtuozzo auf Linux und auch auf Windows Servern.

Auch die Einsatzszenarien sind bei Virtuozzo etwas breiter. Es werden bis zu 32 Prozessoren unterstützt, die auf 32-Bit oder 64-Bit-Architektur laufen und Zigtausende an virtuellen Umgebungen erlauben. Während bei OpenVZ Administration, Monitoring und Inbetriebnahme über die Kommandozeile gesteuert werden, beinhaltet Virtuozzo zusätzlich GUI- und Browser-basierte Managementwerkzeuge.

Vergleich mit anderen Techniken

Im Vergleich zu den Virtualisierungslösungen von VMware oder XEN bietet OpenVZ weniger Flexibilität bezüglich der Auswahl von Gast-Betriebssystemen. Sowohl als Gast- als auch als Host-Betriebssystem kann nur ein Linux-Derivat zum Einsatz kommen. Andererseits bietet die Technologie von OpenVZ bessere Leistungsfähigkeit, Skalierbarkeit, höhere Dichte, dynamische Ressourcenverwaltung und einfachere Administration. Laut den OpenVZ-Entwicklern verliert das System durch die Virtualisierung nur 1 - 3 Prozent der Leistung gegenüber einem System, das allein auf einer physikalischen Hardware läuft.

Basierend auf seiner Architektur haben Open-VZ und Virtuozzo einen anderen Ansatz, Server zu virtualisieren als Konkurrenzprodukte, die auf Hardwareebene virtualisieren oder emulieren. Bei OpenVZ/Virtuozzo wird ein Betriebssystem gestartet, indem einfach nur weitere Prozesse gestartet werden. Das macht sich vor allem bei der Geschwindigkeit positiv bemerkbar, hat aber den Nachteil, dass Host- und Gastsystem gleich sein müssen.

Manch andere Virtualisierungslösung hat hingegen den Nachteil, dass sie die einzelnen Instanzen noch zu wenig trennen kann, während die Technik von Virtuozzo ausschließt, dass durch den Absturz eines einzelnen Environments die anderen Instanzen beeinträchtigt werden.

Fazit

OpenVZ und Virtuozzo sind somit für Entwickler weniger geeignet, da diese meist Testumgebungen mit verschiedenen Betriebssystemen im Einsatz haben.

Kommt man jedoch mit nur einem Betriebssystem aus, wie es häufig im Bereich Webhosting der Fall ist, ist man mit beiden Produkten gut beraten. Seit 2001 läuft Virtuozzo z. B. bei verschiedenen Providern mit hunderten von Virtual Environments. Dieser Erfolg spricht für sich. Ob man sich aber der Meinung von SWsoft anschließen möchte, die einfache Verwaltung und hohe Leistung insbesondere von Virtuozzo hebe die Einschränkung „nur ein Betriebssystem zu virtualisieren“ auf, da die meisten virtuellen Server sowieso unter dem gleichen Betriebssystem laufen, wie der Host selbst, bleibt natürlich jedem selbst überlassen.

Christian Fertsch (info@ordix.de).