Linux-VServer
# Linux-VServer

VServer ist ein Open-Source-Projekt, das virtuelle Linux-Server auf Basis von Betriebssystemvirtualisierung für den Linux-Kernel implementiert. Das Produkt ist freie Software, die unter der GNU General Public License (GPL) veröffentlicht wird. Es verfolgt damit einen grob vergleichbaren Ansatz wie OpenVZ.

Das Projekt wurde von Jacques Gélinas begonnen und wird jetzt von dem Österreicher Herbert Pötzl betreut. Das Produkt hat nichts mit dem Linux Virtual Server zu tun, der für eine gleichmäßige Lastverteilung (Load Balancing) sorgen soll.

Linux-VServer schafft die Möglichkeit, Teile eines Computersystems wie das Dateisystem, die Prozessorzeit, Netzwerkadressen und den Hauptspeicher so aufzuteilen und sicher voneinander abzugrenzen, dass einzelne Prozesse keine Möglichkeit haben, außerhalb ihrer Partition, des ihnen zugestandenen Arbeitsbereiches, zuzugreifen.

Jede Partition bzw. jeder Arbeitsbereich stellt einen sogenannten Security Context dar, in dem das virtualisierte Computersystem einen virtuellen Server bildet. Ein dem Chroot-Mechanismus vergleichbares Werkzeug bietet Zugriff auf diesen Security Context. Das Booten dieses virtuellen Servers beschränkt sich dann auf Durchführen eines Init in diesem Security Context, das Herunterfahren entspricht vergleichbar einem Beenden der in diesem Security Context ablaufenden Prozesse. Die Security Contexte, also die virtuellen Maschinen, sind leistungsfähig genug, um beispielsweise viele Linux-Distributionen unmodifiziert verwenden und verarbeiten zu können, dazu gehören auch Debian und Fedora.

Virtuelle Server werden normalerweise von Webhosting-Dienstleistern verwendet, da sie bei gleichzeitiger Zusammenfassung der Computerressourcen eine saubere Trennung verschiedener virtueller Kundenmaschinen sowie eine Abschottung dieser Maschinen untereinander erlauben. Um bei solchen Installationen mit möglichst wenig Plattenplatz auszukommen, wird das Dateisystem jedes virtuellen Servers als ein Copy-On-Write Hard Link auf ein virtuelles Dateisystem aufgesetzt. Dieser Hard Link besitzt spezielle Dateisystemattribute, die bei einer erkannten Änderung die zu schreibende Datei durch eine sicher und transparent geschriebene reale Kopie der Datei ersetzen.

Linux-VServer existiert in zwei verschiedenen Versionen, einer stabilen Version V.2.2.x und einer Entwicklerversion V.2.3.x für den Linux-Kernel 2.6, sowie einer stabilen Version für den Linux-Kernel 2.4.

## Vergleichbare Virtualisierungsmechanismen

Andere vergleichbare Virtualisierungstechniken sind OpenVZ, von FreeBSD das FreeBSD Jail-Verfahren, Solaris Containers und FreeVPS (eine frühe Ableitung (Fork) von Linux-VServer).

## Vorteile

* Virtuelle Server benutzen die gleiche System Call Schnittstelle und erzeugen keine zusätzliche Last durch Emulation.
* Die virtuellen Server müssen nicht durch ein intransparentes Disk Image gesichert werden, sondern können ein allgemeines, gemeinsames Dateisystem benutzen (durch copy-on-write hard links). Das macht die Sicherung eines virtuellen Servers einfacher und erlaubt, den vorhandenen Plattenplatz für mehrere virtuelle Server zu nutzen.
* Prozesse innerhalb der virtuellen Server laufen wie normale Prozesse auf einem Rechnersystem. Das ist weit effizienter in Bezug auf Speicherausnutzung und I/O-Last als die vollständige Emulation eines Rechners, die unbenutzten Hauptspeicher oder Plattenplatz nur über Umwege (Ballooning, Thin Provisioning) dem Hostrechner oder anderen virtuellen Servern zur Verfügung stellen kann.
* Prozesse innerhalb eines virtuellen Servers werden mit dem Scheduler des Hostrechners abgearbeitet, was für die Gastprozesse des virtuellen Servers eine gleichzeitige Ausführung auf Multiprozessorsystemen (SMP) erlaubt. Eine derartige Implementation für Komplettemulationen eines Rechners wäre aufwendig.
* Die Netzwerkverbindungen werden durch Pakettrennung statt durch Virtualisierung realisiert; auch hier wird eine zusätzliche Paketverarbeitung vermieden.

## Nachteile

* Linux-VServer erfordert auf dem Host einen modifizierten Betriebssystem-Kernel.
* Alle virtuellen Server benutzen diesen selben Kernel und sind daher auch für darin enthaltene Bugs und Sicherheitslücken anfällig.
* Es sind weder Clustering noch Prozessübernahme möglich; der Kernel des Hostrechners sowie der Hostrechner selbst bilden immer noch einen Single Point of Failure für alle virtuellen Server.
* Da die Netzwerkverbindungen auf einer Pakettrennung und nicht auf einer Virtualisierung beruhen, kann keiner der virtuellen Server eigene interne Routingtabellen aufbauen oder als Firewall-Rechner benutzt werden.
* Einige besonders hardwarespezifische Systemaufrufe wie beispielsweise der Echtzeituhr und von Teilen des /proc und /sys Dateisystems sind nicht virtualisierbar.
* Linux-VServer erlaubt noch keine Zuweisung von I/O-Bandbreite zu einzelnen virtuellen Servern. Diese Option ist erst in den Development-Versionen verfügbar, aber noch nicht in der stabilen Version.
