Transcription

Fachhochschule KölnUniversity of Applied Sciences CologneCampus GummersbachDiplomarbeitServervirtualisierung unter LinuxAnalyse und BewertungPrüfer:Prof. Dr. H. L. StahlDipl. Ing. Sebastian WennerVorgelegt von:Björn Groß-HohnackerTechnische InformatikMat. Nr.: 11029835Vorgelegt am:25. August 2006

Inhaltsverzeichnis1 Einleitung91.1Was ist Virtualisierung . . . . . . . . . . . . . . . . . . . . . . . .91.2Zielsetzung der Diplomarbeit . . . . . . . . . . . . . . . . . . . . .101.3Grundlagen von Virtualisierungsverfahren . . . . . . . . . . . . .111.3.1Geschichte der Virtualisierung . . . . . . . . . . . . . . . .111.3.2Aufbau eines Virtualisierungssystems . . . . . . . . . . . .131.3.3Anwendungsgebiete . . . . . . . . . . . . . . . . . . . . . .131.3.3.1Serverkonsolidierung . . . . . . . . . . . . . . . .141.3.3.2Sicherheit und Fehlerisolierung . . . . . . . . . .141.3.3.3Multi-Tier-Umgebungen . . . . . . . . . . . . . .151.3.3.4Live Migration und Load Balancing . . . . . . . .161.3.3.5Hochverfügbarkeit . . . . . . . . . . . . . . . . .171.3.3.6Administrierbarkeit und Wartbarkeit . . . . . . .181.3.3.7Verlässlichkeit und Verfügbarkeit . . . . . . . . .191.3.3.8Virtualisierung und IT-Sicherheit . . . . . . . . .19Funktionsweise unterschiedlicher Virtualisierungsansätze . . . . .211.4.1Kapselung von einzelnen Prozessen . . . . . . . . . . . . .211.4.2Virtualisierung auf Betriebssystemebene . . . . . . . . . .231.4.3Virtualisierung auf Systemebene . . . . . . . . . . . . . . .241.4.4Virtualisierung durch Emulation . . . . . . . . . . . . . . .251.4II

Inhaltsverzeichnis1.4.5Paravirtualisierung . . . . . . . . . . . . . . . . . . . . . .271.4.6Das IA-32 Ringkonzept . . . . . . . . . . . . . . . . . . . .281.4.7Hardwarevirtualisierung . . . . . . . . . . . . . . . . . . .311.5Freie und kommerzielle Virtualisierungslösungen . . . . . . . . . .331.6Virtualisierungssysteme im Überblick . . . . . . . . . . . . . . . .351.7Eingrenzung des Themenbereichs der Diplomarbeit . . . . . . . .362 Analyse ausgewählter Virtualisierungsverfahren2.1OpenVZ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .382.1.1Implementierung und Funktionsweise . . . . . . . . . . . .382.1.2OpenVZ VPS-Management . . . . . . . . . . . . . . . . . .402.1.3Ressourcenmanagement . . . . . . . . . . . . . . . . . . .412.1.3.1CPU-Management . . . . . . . . . . . . . . . . .422.1.3.2Festplattenmanagement . . . . . . . . . . . . . .442.1.3.3IPC-Ressourcenmanagement . . . . . . . . . . . .452.1.3.4Speichermanagement . . . . . . . . . . . . . . . .472.1.3.5Netzwerkvirtualisierung . . . . . . . . . . . . . .492.1.4Installation eines OpenVZ-VPS . . . . . . . . . . . . . . .502.1.5Spezielle Funktionen . . . . . . . . . . . . . . . . . . . . .522.1.5.1Checkpointing . . . . . . . . . . . . . . . . . . .522.1.5.2Live Migration . . . . . . . . . . . . . . . . . . .53Virtuozzo . . . . . . . . . . . . . . . . . . . . . . . . . . .53Xen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .552.2.1Implementierung und Funktionsweise . . . . . . . . . . . .552.2.1.1Hardwarevirtualisierung mit Xen . . . . . . . . .562.2.1.2Hardwareunterstützung unter Xen . . . . . . . .56Das Xen-Domänenkonzept . . . . . . . . . . . . . . . . . .572.2.2.1582.1.62.2372.2.2Domäne 0 . . . . . . . . . . . . . . . . . . . . . .III

Inhaltsverzeichnis2.2.2.2. . . . . . . . . . . . . . . . . . . . .59Xen-Domänenmanagement . . . . . . . . . . . . . . . . . .602.2.3.1Xen Control Daemon . . . . . . . . . . . . . . . .602.2.3.2Xen Management User Interface. . . . . . . . .612.2.3.3Virtuelle Gerätearchitektur . . . . . . . . . . . .62Ressourcenmanagement . . . . . . . . . . . . . . . . . . .632.2.4.1CPU-Management . . . . . . . . . . . . . . . . .632.2.4.2Festplattenmanagement . . . . . . . . . . . . . .652.2.4.3Speichermanagement . . . . . . . . . . . . . . . .652.2.4.4Netzwerkvirtualisierung . . . . . . . . . . . . . .662.2.5Installation einer Domäne U . . . . . . . . . . . . . . . . .672.2.6Spezielle Funktionen . . . . . . . . . . . . . . . . . . . . .692.2.7Erweiterungen für Xen . . . . . . . . . . . . . . . . . . . .702.2.32.2.4Domäne U3 Exemplarische Implementierung und Benchmarks3.1Grundlagen der Implementierung . . . . . . . . . . . . . . . . . .3.1.0.13.275Die OpenVZ-Testumgebung . . . . . . . . . . . . . . . . . . . . .783.2.1Installation der OpenVZ-Umgebung . . . . . . . . . . . . .783.2.1.1Einrichtung OpenVZ-Host . . . . . . . . . . . . .783.2.1.2Einrichtung OpenVZ-Gast . . . . . . . . . . . . .81Inbetriebnahme . . . . . . . . . . . . . . . . . . . . . . . .82Die Xen-Testumgebung . . . . . . . . . . . . . . . . . . . . . . . .833.3.1Installation der Xen-Umgebung . . . . . . . . . . . . . . .833.3.1.1Einrichtung Domäne 0 . . . . . . . . . . . . . . .833.3.1.2Einrichtung Domäne U . . . . . . . . . . . . . . .86Inbetriebnahme . . . . . . . . . . . . . . . . . . . . . . . .89Benchmarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .903.3.23.473Der Logical Volume Manager (LVM) . . . . . . .3.2.23.372IV

Inhaltsverzeichnis3.4.13.4.2Unixbench . . . . . . . . . . . . . . . . . . . . . . . . . . .903.4.1.1Unixbench Benchmarkergebnisse . . . . . . . . .91Siege . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .943.4.2.194Siege Benchmarkergebnisse . . . . . . . . . . . .4 Bewertung und Fazit964.1Bewertung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .964.2Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .98A Literaturverzeichnis100B Erklärung103V

Abbildungsverzeichnis1.1Change Root Umgebung . . . . . . . . . . . . . . . . . . . . . . .221.2Virtualisierung auf Betriebssystemebene . . . . . . . . . . . . . .241.3Virtualisierung auf Systemebene . . . . . . . . . . . . . . . . . . .261.4IA-32 Ring Konzept. . . . . . . . . . . . . . . . . . . . . . . . .291.5Virtualisierung auf Prozessorebene . . . . . . . . . . . . . . . . .312.1Xen-Domänenkonzept. . . . . . . . . . . . . . . . . . . . . . . .583.1Logical Volume Management . . . . . . . . . . . . . . . . . . . . .763.2CPU Benchmarks . . . . . . . . . . . . . . . . . . . . . . . . . . .923.3IPC Benchmarks . . . . . . . . . . . . . . . . . . . . . . . . . . .933.4Dateisystem Benchmarks . . . . . . . . . . . . . . . . . . . . . . .94VI

Tabellenverzeichnis1.1Vergleich von Virtualisierungsverfahren . . . . . . . . . . . . . . .353.1Netzwerk-Benchmarks . . . . . . . . . . . . . . . . . . . . . . . .95VII

AbkürzungsverzeichnisAMD SVMAMD Secure Virtual Machinechrootchange rootCPUCentral Processing UnitGPLGNU General Public LicenseGUIGraphical User InterfaceHTTPHypertext Transfer ProtocolIA-32Intel Architecture 32Intel VTIntel Virtualization TechnologyIDIdentifikationsnummerIPInternet ProtocolITInformationstechnikPCPersonal ComputerRPMRed Hat Package ManagerTCOTotal Cost of OwnershipVMVirtual MachineVMMVirtual Machine MonitorVMXVirtual Machine ExecutionVPSVirtual Private ServeryumYellowdog Updater ModifiedVIII

1 Einleitung"Virtualisierung ist eine Herangehensweise in der IT, die Ressourcen sozusammenfasst und verteilt, dass ihre Auslastung optimiert wird und automatischAnforderungen zur Verfügung steht." 11.1 Was ist VirtualisierungVirtualisierung in der Informationstechnik (IT) ist ein Verfahren, bei demdie physikalischen Hardwareressourcen eines Computersystems, wie Prozessor,Speicher und Netzwerk, auf eine oder mehrere virtuelle Umgebungen verteiltwerden, um die vorhandenen Ressourcen optimal auszunutzen. Eine virtuelleUmgebung verhält sich wie ein reales System. Virtualisierung stellt also eineAbstraktionsebene zwischen der vorhandenen Hardware und dem Betriebssystemdar, um mehrere voneinander getrennte Betriebssystemumgebungen auf einerHardware parallel zu betreiben.1Quelle: [10], Virtualisierung: Rechenleistung aus dem großen Topf9

Einleitung1.2 Zielsetzung der DiplomarbeitIn dieser Diplomarbeit soll, nach einer Einführung in den n gegeben werden. Im Folgenden wird anhand einerAnalyse einiger ausgewählter Open Source Verfahren zur Virtualisierung unterLinux, mit anschließender exemplarischer Implementierung, eine Bewertungdieser Verfahren durchgeführt werden. Die Implementierung soll es ermöglichen,einen Vergleich der Leistung der einzelnen Systeme mit Hilfe einer Durchführungvon Benchmarks anzustellen. Das Ziel ist es zu zeigen, welche Form derVirtualisierung in einer Linux-Serverumgebung sich für welche Anforderungen inder IT am besten eignet.10

Einleitung1.3 Grundlagen von VirtualisierungsverfahrenEs gibt diverse Ansätze, ein System oder eine Umgebung zu virtualisieren.Computersysteme bilden bei dem Begriff der Virtualisierung nur einenTeilbereich. Grundsätzlich lässt sich die Virtualisierung eines Systems als eineAbbildung einer Umgebung verstehen, welche so weit abstrahiert ist, dass sieimmer noch die erforderlichen Eigenschaften der realen Umgebung vorweist,ohne eine exakte Kopie dieser zu sein. Im Folgenden wird speziell auf dieVirtualisierung von Betriebssystemumgebungen von Serversystemen unter Linuxeingegangen werden.1.3.1 Geschichte der VirtualisierungVirtualisierung von Computersystemen ist kein neuer Gedanke. Schon inden 70er Jahren wurde von G. Popek und R. Goldberg in dem Auszug„Formal requirements for virtualizable third generation architectures“[13] genauaufgezeigt, welche Vorraussetzungen eine Rechnerarchitektur erfüllen muss, umvirtualisierbar zu sein. Schon vorher, Mitte der 60er Jahre, hatte IBM bereitsdie erste virtuelle Maschine VM/370 entwickelt, die auf den Modellen der Serie370 zum Einsatz kam, um mehreren Benutzern virtuelle eigenständige IBMSystem/370 Betriebssysteme zur Verfügung zu bssystemsunterdemNamen z/VM in Systemen der IBM Z-Series eingesetzt, um zum Beispielmehrere vollständig voneinander getrennte Linux-Installationen auf einemGroßrechnersystem in virtuellen Maschinen zu betreiben. Des weiteren kannein Großrechner durch Hardwarevirtualisierung in mehrere so genannte Logical2Vgl. [6], The Origin of the VM/370 Time-Sharing System11

EinleitungPartition (LPAR) aufgeteilt werden, um voneinander unabhängige virtuelleSysteme zu erhalten, in denen dann jeweils ein Betriebssystem wie Linux oderauch wieder z/VM installiert werden kann.Doch erst in den letzten Jahren wurden Computersysteme so weit entwickelt,dass es sich nicht mehr nur auf Großrechnern lohnt, Virtualisierung zu betreiben.Moderne Computersysteme nutzen häufig nur einen Bruchteil ihrer vorhandenenRessourcen und werden trotzdem immer leistungsstärker. Während noch voreinigen Jahren eher ein Trend zur Dezentralisierung von Serverumgebungenzu beobachten war, da immer komplexer werdende Systeme, aus Gründen derAdminstrierbarkeit und Stabilität, auf mehrere Rechner verteilt wurden, bietenvirtualisierte Systeme mit Hilfe von Zentralisierung, eine effizientere Ausnutzungder vorhandenen Ressourcen in modernen Rechnersystemen.Ein großes Problem in heutigen Rechenzentren ist es, zum einen genug Platzfür die immer größer werdende Anzahl von Systemen bereitzustellen und zumanderen die vorhandenen Systeme wirtschaftlich im Bezug auf entstehendeKosten für Strom, Wartung und weitere Bereiche auszunutzen. Virtualisierungkann dazu dienen, auf einer physikalischen Hardware mehrere Dienste oder auchganze Betriebssysteme vollständig voneinander getrennt parallel zu betreibenund somit das Leistungspotenzial moderner Central Processing Unit’s (CPUs)3weiter auszuschöpfen.3engl. zentrale Recheneinheit eines (Mikro)prozessors12

Einleitung1.3.2 Aufbau eines VirtualisierungssystemsEin Virtualisierungssystem in einer Rechnerumgebung besteht grundsätzlich auszwei Hauptkomponenten, dem Host4 , der die Verwaltungsinstanz darstellt, undseinen Gästen, die in so genannten virtuellen Maschinen laufen.Eine virtuelle Maschine bezeichnet in diesem Zusammenhang eine Laufzeitumgebung, in der Prozesse isoliert von denen anderer virtueller Maschinen betriebenwerden.Der Host verwaltet in erster Linie die physikalische Hardware und stellt seinenGästen vorhandene Ressourcen zur Verfügung. Je nach Virtualisierungslösungkann er Ressourcenmanagement vornehmen und ist auch für die Verwaltung derGäste zuständig.1.3.3 AnwendungsgebieteDas Problem der überdimensionierten Rechnersysteme wird speziell in großenServerlandschaften deutlich. Die Betriebskosten jedes Rechners verteilen sich aufdie Anschaffungs- oder Leasingkosten und die Unterhaltskosten für zum BeispielStrom und Wartung. Es ist nicht immer ohne weiteres möglich einen einzelnenServer so zu dimensionieren, dass alle vorhandenen Ressourcen optimal genutztwerden. Daraus folgt, dass viele Ressourcen in einer Serverlandschaft ungenutztbleiben. Die Vorteile, die man durch Virtualisierung von einzelnen Diensten oderauch eines ganzen Betriebssystems in Serverumgebungen erhalten kann, sinddaher vielfältig.4engl. Wirt, Gastgeber13

Einleitung1.3.3.1 VorteileimZusammenhangmitVirtualisierung ist die Möglichkeit der Konsolidierung, die in der IT denProzess der Vereinheitlichung und Zusammenführung oder Verschmelzungvon Systemen in Serverlandschaften bezeichnet. Das Ziel ist es, möglichstviele Serverdienste in eine einzelne physikalische Maschine zu bringen unddiese dort mit der optimalen Ausnutzung der vorhandenen Rechenleistungzu betreiben. Moderne Serversysteme in Rechenzentren sind zumeist für ihreAufgaben überdimensioniert und verschenken daher einen großen Teil ihrerRessourcen.Virtualisierung kann dazu beitragen, die Leistung einer einzelnen physikalischenMaschine optimal auszunutzen. Durch eine Konsolidierung erhält man häufig eineSenkung der Total Cost of Ownership (TCO). Das heißt, die laufenden Kostenfür Hardware, Strom, Software, Reparatur und Wartung können gesenkt werden.Ein Nachteil, der sich aus der Konsolidierung jedoch ergibt, ist die Entstehungeines so genannten Single Point of Failure, also einer Stelle im System, die beiProblemen die gesamte virtualisierte Umgebung beeinträchtigen wird, da alleGäste vom fehlerfreien Betrieb des Hosts abhängig sind. Möglichkeiten dementgegen zu wirken werden unter Kapitel 1.3.3.7 beschrieben.1.3.3.2 Sicherheit und FehlerisolierungDie Grundvorraussetzung einer virtuellen Umgebung ist es, dass alle virtuellenMaschinen vollständig isoliert voneinander laufen. Dies ist in erster Linie nötig,damit eventuell auftretende Probleme in einem Gast keine Auswirkung aufden Rest der vorhandenen Gäste haben. Es resultiert daraus aber auch der14

EinleitungVorteil, dass mehrere kritische Prozesse, wie zum Beispiel öffentliche Webund Filetransferserver, gleichzeitig auf dem selben physikalischen Server laufenkönnen, ohne dass ein Einbruch in einen dieser Prozesse dazu führen könnte, diegesamte virtuelle Umgebung zu kompromittieren.Wenn es also gelingt, über eine Sicherheitslücke in einem Prozess unberechtigtenZugriff auf eine virtuelle Maschine zu erlangen, sind die anderen virtuellenMaschinen trotzdem geschützt. Nahezu alle Virtualisierungssysteme erfüllen dieseAnforderung einer Isolierung der einzelnen Gäste voneinander. Diese Trennungwird von den jeweiligen Virtualisierungsansätzen jedoch meist unterschiedlichrealisiert und kann teilweise auch nur eingeschränkt garantiert sein.Um diese Sicherheit und Fehlerisolierung zu gewährleisten, ist es jedoch wichtigdie Hostumgebung mit Bedacht aufzubauen und abzusichern, da von dieserdas komplette Management der Gäste durchgeführt wird. Es muss besondersdarauf geachtet werden, dass ein unbefugter Zugriff auf die Hostumgebungweitestgehend verhindert wird, indem beispielsweise nicht benötigte Dienstedeaktiviert werden. Im Falle eines Einbruchs auf den Host wäre sonst das gesamteVirtualisierungssystem mit allen Gästen kompromittiert.1.3.3.3 Multi-Tier-UmgebungenDurch Virtualisierung ist es möglich, ein komplexes System auf eine Multi-TierUmgebung 5 aufzuteilen. Dies bedeutet, dass einzelne Dienste dieses Systems aufmehrere eigenständige Umgebungen verteilt werden, ohne zusätzliche Hardwarezur Verfügung stellen zu müssen. So kann ein einzelner physikalischer Server, aufdem mehrere kritische Dienste wie Webserver, Applikationsserver und Datenbankzusammen parallel laufen, auf mehrere virtuelle Umgebungen verteilt werden.5engl. mehrstufige Umgebung15

EinleitungDies hilft die Stabilität der einzelnen Systeme zu erhöhen, da Probleme ineinem Bereich eines gesamten Systems so zunächst keine Auswirkung auf andereBereiche hat.Des weiteren gibt es die Möglichkeit ein physikalisches oder auch virtuellvorhandenes, produktives System in eine neue virtuelle Maschine zu kopierenund diese dann zum Beispiel als Test- und Entwicklungsumgebung zu nutzen. Diesermöglicht es geplante Veränderungen wie ein Update eines Systems im Vorausausgiebig in einer Umgebung zu testen, die ein genaues Abbild der produktivenUmgebung ist, bevor die Veränderungen in das Produktivsystem übernommenwerden. Das schließt sowohl den Test von Änderungen einzelner Dienste, alsauch Veränderungen am gesamten Betriebssystem ein. Dadurch können dieKosten für eine zusätzliche Testmaschine um ein Vielfaches reduziert werden.Die Implementierung von Multi-Tier-Umgebungen ermöglicht es also für dieproduktiven Dienste mit relativ geringem Aufwand die Quality of Service 6 (QOS)zu erhöhen, da die allgemeine Stabilität einer komplexen Umgebung verbessertwerden kann.1.3.3.4 Live Migration und Load BalancingDer Begriff der Live Migration beschreibt die Möglichkeit eine virtuelleMaschine zur Laufzeit von einem physikalischen System auf ein anderes zuverschieben. Dabei kann ein Gast während des laufenden Betriebes direkt voneinem physikalischem Host auf einen anderen transferiert werden, wobei dasunterliegende Virtualisierungssystem dafür sorgt, dass weder die Speicherinhalteund Prozesszustände noch Netzwerkverbindungen verloren gehen.6engl. Dienstgüte16

EinleitungDies eröffnet zum Beispiel die Möglichkeit Load Balancing 7 für den Hostder virtuellen Gäste einzusetzen. Load Balancing für eine virtuelle Maschinebeschreibt den Vorgang, bei dem ein Hostsystem einige Gäste an einen anderenHost übergeben muss, da die Gäste mehr als die zur Zeit vorhandenen Ressourcenbenötigen. Es kann jedoch auch dazu eingesetzt werden um Wartungen amHostsystem durchzuführen, ohne dass die Gäste des Hosts heruntergefahrenwerden müssen. Man würde also alle Gäste eines Hosts zur Laufzeit auf einenoder mehrere andere Hosts migrieren, und könnte danach Veränderungen amHost durchführen und diesen sogar neu starten, wobei die Gäste weiterhin ihrenDienst auf einem anderen Host verrichten können.1.3.3.5 HochverfügbarkeitUm eine Umgebung hochverfügbar zu machen, ist es nötig das vorhandeneSystem bei einem Totalausfall in möglichst kurzer Zeit wieder herzustellen.Virtualisierung kann zum Teil einen Beitrag dazu leisten. So kann manbeispielsweise wie erwähnt eine Kopie des inaktiven Systems oder einen sogenannten Snapshot 8 der virtuellen Maschine erstellen. Beim Snapshot werden,ähnlich wie bei der Live Migration, Prozess- und Speicherzustände eineslaufenden Systems gesichert, jedoch kann dieses kopierte System zu beliebigerZeit reaktiviert werden.Es ergeben sich so zwei Ausfallszenarien, bei denen eine Sicherung eines Gastszur schnellen Wiederherstellung eines Systems beitragen kann. Zunächst kann beieinem schwerwiegenden Fehler der virtuellen Maschine, diese wieder durch eineAktivierung der Sicherung hergestellt werden. Das zweite Szenario bezieht sich78engl. Lastverteilungengl. Schnappschuss - eine Kopie des Gasts zur Laufzeit17

Einleitungauf Fehler in der Hostumgebung. Hierbei kann man die Sicherung von den Gästendes betroffenen Hosts auf einen oder mehrere andere Hostsysteme portieren undreaktivieren. Zu beachten ist jedoch, dass bei diesem Verfahren die Sicherungennicht auf dem Hostsystem liegen sollten, sondern auf einem Speicher, der auchvon anderen Hostsystemen genutzt werden kann.So stellt der Einsatz von Snapshots und Kopien für Sicherungen vonvirtuellen Maschinen, eine kostengünstige Alternative für eine einfacheHochverfügbarkeitslösung dar, da in erster Linie lediglich Plattenplatz fürdie Ablage von Sicherungen benötigt wird.1.3.3.6 Administrierbarkeit und WartbarkeitVirtualisierung kann auch dazu beitragen die Administrierbarkeit undWartbarkeit von Serversystemen zu verbessern. So ist es zum einen möglich,sehr schnell eine Kopie eines Systems anzulegen und dieses dann mit relativwenig Aufwand als eine neue virtuelle Maschine zu betreiben. Diese SystemImages9 können bei den meisten Virtualisierungslösungen direkt auf dem Hostabgelegt werden und eine vollständig neue virtuelle Maschine innerhalb wenigerMinuten erstellen.Da es nur noch eine Basishardware in der virtuellen Maschine gibt, muss auchnur diese Systemarchitektur für die Gäste eines Hosts gewartet werden undnicht eine ganze Reihe von Servern. Die virtualisierten Betriebssysteme greifendann entweder direkt auf die vorhandenen Ressourcen zu oder nutzen die vomVirtualisierungssystem zugewiesenen Ressourcen.9engl. Abbilder18

Einleitung1.3.3.7 Verlässlichkeit und VerfügbarkeitWie zuvor erwähnt ist ein großes Problem der Virtualisierung, dass der Host denSingle Point of Failure darstellt. Das bedeutet, dass ein Fehler auf dem Hostsich auf alle Gäste auswirken kann. Diesem Problem kann man entgegenwirken,indem man den Host zusätzlich absichert, zum Beispiel durch Redundanz derHardware und regelmäßige Sicherung der Gäste.Die Gäste wiederum erhalten durch Virtualisierung häufig einen hohen Gradvon Verlässlichkeit und Verfügbarkeit. Durch die Möglichkeit Snapshotsvon den Gästen jederzeit anlegen zu können, ist es zum Beispiel möglich,das Betriebssystem bei einem Ausfall oder auch fehlgeschlagenen Updatewiederherzustellen.1.3.3.8 Virtualisierung und IT-SicherheitVirtualisierung bietet noch eine Reihe von weiteren Anwendungsgebieten. So istes möglich, Virtualisierung für eine forensische Analyse zu verwenden, indembeispielsweise ein reales System in eine virtuelle Umgebung kopiert wird, umdort Analysen durchzuführen. Wenn die Analyse zu einer Zerstörung des Systemsführen sollte, so kann die virtuelle Umgebung wieder hergestellt werden.Es gibt jedoch auch gewisse Risiken, die im Zusammenhang mit IT-Sicherheit vonVirtualisierung ausgehen. So wurde beispielsweise in der Konzeptstudie „SubVirt:Implementing maleware with virtual machines“[9] der Universität Michiganbeschrieben, wie es möglich ist, Virtualisierung so zu missbrauchen, dass ein nichtvirtualisiertes Betriebssystem von einem Angreifer in eine virtuelle Umgebungverschoben wird, um dann vollständige Kontrolle über dieses System zu erlangen.19

EinleitungDie Vorraussetzung für einen solchen Angriff ist zwar ein temporärer Vollzugriffauf das System, dieser kann aber beispielsweise durch eine Schwachstelle ineinem Dienst erreicht werden. Die Veränderungen am System werden jedochletztendlich unter Umständen nicht offensichtlich für den Nutzer des Systems,womit alle Prozesse auf dem System kompromittiert wären.20

Einleitung1.4 Funktionsweise unterschiedlicherVirtualisierungsansätzeEs gibt eine Reihe verschiedener Ansätze, um Betriebssystemprozessevoneinander isoliert laufen zu lassen. Dies kann mit Funktionen desHostbetriebssystems erzielt werden, durch komplexe Systemvirtualisierungeneiner Hardwarearchitektur oder auch mit Hardware-gestützter Virtualisierungdurch den Prozessor.1.4.1 Kapselung von einzelnen ProzessenEine einfache Möglichkeit, auf einem Unix-Betriebssystemprozesse voneinanderisoliert laufen zu lassen, ist der Einsatz einer so genannten Change Root (chroot)Umgebung. Als root 10 bezeichnet man in einem Linux-Betriebssystem, dasStammverzeichnis oder auch das Wurzelverzeichnis eines Verzeichnisbaums. Inden Unterverzeichnissen dieses Stammverzeichnisses befinden sich alle nötigenProgramme, von den Programmen benötigte Bibliotheken, Schnittstellen zuGeräten und sonstige Dateien des Betriebssystems. Für die Programme undProzesse existiert kein Verzeichnis unterhalb dieser Wurzel.Bei der Change Root Umgebung handelt es sich um eine sehr einfacheTrennung eines Prozesses vom ursprünglichen System durch eine so genannteWrapper Funktion (siehe Abbildung 1.1). Dies ist genau genommen eineBetriebssystemfunktion, die einen Prozess und somit dessen Kindprozesse ineinem Unterverzeichnis der Dateisystemebene ausführt und dort einsperrt. Dasheißt, sie hindert diesen Prozess und dessen Kinder daran, auf Dateien unterhalb10engl. Wurzel21

Einleitungdes Change Root Verzeichnisses zuzugreifen. Das Verzeichnis wird für den Prozessalso zu seinem Wurzelverzeichnis.Abbildung 1.1: Change Root UmgebungIn diesem Zusammenhang ist zu erwähnen, dass alle Verzeichnisse und Geräte ineinem Unix-Betriebssystem durch eine Datei dargestellt werden. Das Ziel einerChange Root Umgebung ist es also, zu verhindern, dass ein Prozess und dessenUnterprozesse überhaupt die Möglichkeit bekommen, auf Dateien zuzugreifen,die sie nicht direkt benötigen, um ihre Funktion ausführen zu können.Andererseits muss jedoch darauf geachtet werden, dass dem Prozess allebenötigten Systembibliotheken, Binär- und Konfigurationsdateien und auchVerknüpfungen auf Geräte innerhalb der Change Root Umgebung zur Verfügunggestellt werden, zum Beispiel durch Kopieren der nötigen Dateien undVerzeichnisse in Unterverzeichnisse der Change Root Umgebung.22

keineMöglichkeitenEinschränkungen der CPU-Verteilung oder der Eingabe/Ausgabe direkt zuimplementieren.1.4.2 Virtualisierung auf s, ist die Virtualisierung von Prozessen in voneinandergetrennten Instanzen auf der Hostbetriebssystemebene. Diese Instanzen könnenein nahezu vollständiges Betriebssystem darstellen, das nicht mit einemeigenen Kernel läuft, sondern auf die Ressourcen des HostbetriebssystemKernels zurückgreift. Diese Herangehensweise nutzt zum einen den Ansatz derChange Root Umgebung, erweitert diesen aber um zusätzliche Funktionen,wie der variablen Verteilung von CPU-Zeit oder das Bereitstellen von virtuellenNetzwerkstrukturen und Zugriff auf Geräte, für einzelne Prozesse beziehungsweiseProzessinstanzen. Es wird dafür gesorgt, dass ohne großen manuellen Aufwandeine nahezu vollständige virtuelle Umgebung für diese Instanzen bereitgestelltwird, die alle benötigten Bibliotheken und Kommunikationsschnittstellen vonund zu Geräten zur Verfügung hat (siehe Abbildung 1.2).23

EinleitungAbbildung 1.2: Virtualisierung auf BetriebssystemebeneGenauso wie bei der Change Root Umgebung kommt, wie bereits erwähnt,lediglich der Kernel des Hosts zum Einsatz, der das vollständige Management derGäste übernimmt. Daher sind Verfahren, die diesen Ansatz verfolgen, meistenssehr performant, so dass Gäste mit der selben Geschwindigkeit laufen können, wieder Host selbst. Häufig ist auch die Ausnutzung des Systems sehr effektiv, da derBetriebssystem-Kernel lediglich alle vorhandenen Ressourcen auf die laufendenProzesse verteilen muss. Virtualisierungssysteme, die diesen Ansatz verfolgen,sind OpenVZ 11 , dessen kommerzielle Variante Virtuozzo 12 und Linux-VServer 13 .1.4.3 Virtualisierung auf SystemebeneDie zuvor genannten Ansätze zur Virtualisierung auf Betriebsystemebene habenden entscheidenden Nachteil, dass lediglich der Kernel des Hostsystems genutztwerden kann und nur real vorhandene Geräte im System zur Virtualisierungeingesetzt werden können. Soll beispielsweise ein BSD-Gast auf einem .com/13http://linux-vserver.org/1224

Einleitungbetrieben werden, ist dies mit den zuvor vorgestellten Ansätzen nicht möglich.Soll sogar Hardware emuliert und so dem Gastbetriebssystem beispielsweise einekomplett andere Struktur als die real existierende Hardware bereitgestellt werden,ist dies fast gar nicht möglich. Eine vollständige Betriebssystemvirtualisierungkann durch Emulation, Paravirtualisierung oder Hardwarevirtualisierungerfolgen.1.4.4 Virtualisierung durch EmulationEmulation bedeutet im Zusammenhang mit Virtualisierung, dass Teile einesSystems oder auch das gesamte System für eine virtuelle Umgebung nachgebildetwerden, ohne dass die real darunter liegende Hardware des Hostsystems dieseKomponenten besitzt. Durch Emulation kann also sogar die CPU für einvirtuelles System nachgebildet werden. Dieses Verfahren hat jedoch den Nachteil,dass Emulation durch erhöhte Komplexität um ein vielfaches mehr an Ressourcenbenötigt. Damit ist dieses Verfahren nur eingeschränkt zur Virtualisierung vonServerbetriebssystemen einsetzbar. Um eine Emulation durchzuführen, ist esnötig das Betriebssystem des Hosts und seine unterliegende Hardware von denvirtuellen Umgebungen zu trennen. Diese Trennung wird durch den Einsatz einesso genannten Hypervisor ermöglicht werden, was im Folgenden näher erläutertwerden soll.Ein so genannter Hypervisor, auch bekannt als Virtual Machine Monitor(VMM), stellt eine Verwaltungsinstanz für virtuelle Maschinen dar, die beider Virtualisierung auf Systemebene zwischen dem Hostbetriebssystem undden Gästen liegt. Der VMM übernimmt zum einen die Verwaltung derGastsysteme und stellt diesen vor allem eine virtuelle Architektur zur Verfügung(siehe Abbildung 1.3). Diese virtuelle Architektur kann zum einen durch die25

Einleitungzuvor beschriebene Emulation erstellt werden, also durch Nachbildung vonKomponenten, die nicht im Host physikalisch vorhanden sind, aber auch durchVerteilung der physikalischen Komponenten auf mehrere Gäste.Abbildung 1.3: Virtualisierung auf SystemebeneSo ist es möglich, unter einem VMM Gäste zu betreiben, die einen eigenenBetriebssystem-Kernel verwenden, unter dem dann wiederum Applikationenlaufen, die direkt den Kernel des Gastsystems verwenden. Durch dieses Konzeptist es nicht nötig, dass das Gastsystem für die

"Virtualisierung ist eine Herangehensweise in der IT, die Ressourcen so zusammenfasst und verteilt, dass ihre Auslastung optimiert wird und automatisch Anforderungen zur Verfügung steht."1 1.1 Was ist Virtualisierung Virtualisierung in der Information