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