Virtualisierung ist das Schlagwort der IT-Branche im Moment überhaupt. Wenn Sie ein Webhosting- oder Root-Server-Paket für Ihr zukünftiges Internetprojekt buchen, kommen sie an diesem Begriff kaum noch vorbei. Darum lohnt sich ein Blick hinter die Kulissen, auch wenn die Technik der virtuellen Server soweit perfektioniert ist, dass kein Kunde den Unterschied bemerkt zu einem Server, der allein auf Single-Hardware-Host installiert ist.
Linux VServer vs. Emulation
Viele kennen ein gängiges Prinzip der Emulation. In einem Wirtssystem wird eine virtuelle Maschine gestartet, welche die Hardware eines Rechners simuliert. Auf dieser virtuellen Maschine kann dann ein beliebiges Gastsystem installiert werden. Das heißt aber auch, dass viel Rechenzeit zur Simulation der Hardware verschwendet wird. Wenn für das Gastsystem z.B. die Betriebssystemschnittstellen des Wirtssystems nicht direkt erreichbar sind, wird viel Rechenzeit verbraucht.
Linux VServer verfolgt hier einen anderen Ansatz. Es lassen sich zwar bei Bedarf komplette Gastsysteme wie Debian oder Fedora Core installieren, eine Minimallösung für den Betrieb eines weiteren virtuellen Servers ist auch möglich. In beiden Fällen wird aber zusätzlich Rechenzeit eingespart, wie unten näher erläutert.
Prinzipien von Linux VServer.
Linux VServer kann sicher und stabil Dateisystem, die Prozessorzeit, Netzwerkadressen und den Hauptspeicherauf verschiedene Serverprozesse aufteilen, sodass es zu keinen unerwünschten Wechselwirkungen kommt. Jeder Serverprozess in einem Gastsystem lässt sich so verwalten, als würde man mit Systemverwalter-Rechten vor einem einzigen Computer sitzen. Es hat also jeder Gastserver seinen eigenen Arbeitsbereich, den sogennannten Security Context. Jeder Security Context lässt sich booten, herunterfahren oder neu starten wie ein eigenständiges Betriebssystem. Das Verfahren wird gerne von Webhostern auf sehr leistungsfähigen Hostrechnern eingesetzt, da man einerseits Hardwareressourcen gemeinsam nutzen kann, aber dennoch eine saubere Trennung und Abschottung von Kundenservern gewährleistet ist.
Wie Linux VServer im einzelnen arbeitet
Jeder virtuelle Server hat ein eigenes virtuelles Dateisystem. Die geschriebenen Dateien werden sicher und transparent im Copy-on-Write Hard Link Verfahren auf die physikalische Festplatte abgebildet. Das Verfahren ist dabei sehr flexibel, dem Gastsystem muss nicht begrenzter Plattenplatz reserviert werden, sondern alle Gastsysteme teilen sich dynamisch die Festplatte. Jeder Virtual Server benutzt die gleiche System Call Schnittstelle im Wirtssystem, was den Hostrechner entlastet. Die Virtual Server laufen schlicht als Prozesse eines Rechnersystems und nutzen den Speicher und I/O-Ressourcen mit Mitteln des Wirtssystems. Wie oben schon erwähnt wird dadurch Rechenkapazität eingespart im Gegensatz zur kompletten Emulation. Unbenutzter Hauptspeicher oder Plattenplatz werden dem Wirtssystem oder anderen virtuellen Servern zur Verfügung gestellt. Das System unterstützt leistungsfähige Multiprozessorsysteme, mit Emulation wäre das ebenfalls undenkbar. Die TCP/IP-Verbindungen im Netz werden ebenfalls nicht emuliert, sondern finden auf normaler Grundlage vom dem Hostrechner aus statt. Es ist lediglich eine Pakettrennung notwendig, um Datenströme korrekt auf die verschiedensten virtuellen Server zu verteilen.
Denkbare Nachteile des Linux VServer
Für den Betrieb als Wirtssystem ist ein modifizierter Linux-Kernel notwendig, auf den die VServer bei Systemaufrufen zugreifen. Enthält dieser modifizierte Linux-Kernel jedoch einen Fehler, sind gleich alle Virtual Server davon betroffen. Für das Wirtssystem ist leider keine Prozessübernahme möglich. Bei virtuellen Systemen ist dies beliebt, z.B. im Falle eines Hardware-Fehlers oder -Reparatur den virtuellen Server auf ein anderen Host zu verschieben. Für das Wirtssystem ist dies mit Linux VServer leider nicht möglich, so dass ein Fehler in Kernel oder Hardware des Wirtssystems gleich alle aufgesetzten Virtual Server betrifft. Da die Netzwerkverbindungen nicht virtualisiert werden, können die VServer keine eigenen Routing-Tabellen aufbauen oder gar als Firewall eingesetzt werden. Ein weiterer Nachteil ist, dass die /proc und /sys Dateisysteme nicht virtualisierbar sind. Das hängt damit zusammen, dass die VServer als Prozesse im Wirtssystem implementiert sind und dementsprechend mit Informationen eben aus dem Wirtssystem versorgt werden müssen. Erzeugt ein Virtual Server einen neuen Prozess, so ist dieser immer Kindprozess aus der Sicht des Wirtssystems. Last but not least können für die einzelnen VServer keine Transfer-Quotas eingerichtet werden, um gezielt den I/O-Datenfluss zu reglementieren.