olreilly - Wartung

Transcrição

olreilly - Wartung
e
he ab
sc g
ut aus
De nal
i
ig
Or
Intelligente Virtualisierungslösungen mit XEN 3
XEN
Kochbuch
O’Reilly
Hans-Joachim Picht
Xen Kochbuch
Hans-Joachim Picht
mit Sebastian Ott
Beijing · Cambridge · Farnham · Köln · Sebastopol · Taipei · Tokyo
Die Informationen in diesem Buch wurden mit größter Sorgfalt erarbeitet. Dennoch können
Fehler nicht vollständig ausgeschlossen werden. Verlag, Autoren und Übersetzer übernehmen
keine juristische Verantwortung oder irgendeine Haftung für eventuell verbliebene Fehler und
deren Folgen.
Alle Warennamen werden ohne Gewährleistung der freien Verwendbarkeit benutzt und sind
möglicherweise eingetragene Warenzeichen. Der Verlag richtet sich im Wesentlichen nach den
Schreibweisen der Hersteller. Das Werk einschließlich aller seiner Teile ist urheberrechtlich
geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung,
Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.
Kommentare und Fragen können Sie gerne an uns richten:
O’Reilly Verlag
Balthasarstr. 81
50670 Köln
E-Mail: [email protected]
Copyright der deutschen Ausgabe:
© 2009 by O’Reilly Verlag GmbH & Co. KG
1. Auflage 2009
Bibliografische Information Der Deutschen Bibliothek
Die Deutsche Bibliothek verzeichnet diese Publikation in der
Deutschen Nationalbibliografie; detaillierte bibliografische Daten
sind im Internet über http://dnb.ddb.de abrufbar.
Lektorat: Christine Haite, Köln
Fachliche Unterstützung: Andreas Bildstein, Stuttgart & Christof Vollrath, Berlin
Korrektorat: Oliver Mosler, Köln
Satz: Tim Mergemeier, Reemers Publishing Services GmbH, Krefeld; www.reemers.de
Umschlaggestaltung: Marcia Friedman, Boston & Michael Oreal, Köln
Produktion: Andrea Miß, Köln
Belichtung, Druck und buchbinderische Verarbeitung:
Druckerei Kösel, Krugzell; www.koeselbuch.de
ISBN 978-3-89721-729-4
Dieses Buch ist auf 100% chlorfrei gebleichtem Papier gedruckt.
Inhalt
Vorwort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XI
1 Einführung in die Virtualisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1
1.2
1.3
1.4
1.5
Was ist Virtualisierung? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Die Geschichte der Virtualisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Einsatzgebiete und Vorteile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Virtualisierungsarten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Was ist Xen? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2 Xen installieren und das Hostsystem vorbereiten (Domain-0)
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
2.9
2.10
2.11
2.12
2.13
2.14
2.15
2.16
2.17
22
..............
Xen-Installation auf Basis des Quellcodes. . . . . . . . . . . . . . . . . . . . . . . . . .
Erstellung einer initialen RAM-Disk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Anpassung des Boot-Managers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Xen unter Ubuntu installieren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Xen unter Debian installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Xen unter openSUSE installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Xen unter Fedora installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Installation der Binärpakete von xensource.com . . . . . . . . . . . . . . . . . . . .
Die TLS-Bibliothek deaktivieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Starten, Stoppen und Neustarten des Xen-Daemons . . . . . . . . . . . . . . . . .
Deinstallation von Xen unter Debian und Ubuntu . . . . . . . . . . . . . . . . . . .
Deinstallation von Xen unter Fedora . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Deinstallation von Xen unter openSUSE . . . . . . . . . . . . . . . . . . . . . . . . . .
Deinstallation von Xen als Binärpaket . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Deinstallation eines aus den Quellen kompilierten Xen . . . . . . . . . . . . . . .
Xen unter Debian und Ubuntu aktualisieren . . . . . . . . . . . . . . . . . . . . . . .
Xen unter openSUSE aktualisieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
27
29
32
35
37
39
41
43
46
48
49
50
51
52
53
54
|
V
2.18
2.19
2.20
2.21
Xen unter Fedora-Linux aktualisieren. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ein aus den Quellen oder als Binärpaket installiertes Xen aktualisieren. . .
Xend in den Boot-Vorgang einbinden . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Automatisches Starten der Gastsysteme . . . . . . . . . . . . . . . . . . . . . . . . . . .
55
56
57
59
3 Konfiguration des Hostsystems (Domain-0) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3.1
3.2
3.3
3.4
Konfiguration des Xen-Daemons (xend). . . . . . . . . . . . . . . . . . . . . . . . . . .
Ein Bridging-Netzwerk einrichten. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ein Routing-Netzwerk einrichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ein Netzwerk mit Network Address Translation konfigurieren . . . . . . . . .
60
66
73
75
4 Vorbereitung des Systems auf die Gäste (Paravirtualisierung) . . . . . . . . . . . . . . 81
4.1
4.2
4.3
4.4
4.5
4.6
4.7
Speicherplatz auf Basis physikalischer Geräte einrichten . . . . . . . . . . . . . .
Speicherplatz auf Basis physikalischer Geräte mit LVM einrichten . . . . . .
Dateibasierte Geräte als Storage Backend einsetzen . . . . . . . . . . . . . . . . . .
Zugriff auf die root-Partition über NFS. . . . . . . . . . . . . . . . . . . . . . . . . . . .
Erstellung des Dateisystems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Konfiguration des Gastsystems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Booten des Gastsystems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5 Distributionsspezifische Gast-Installation (Paravirtualisierung)
5.1
5.2
5.3
5.4
...........
Gastsysteme mit virt-install unter Fedora installieren. . . . . . . . . . . . . . . .
Gastsysteme mit YaST auf SUSE installieren . . . . . . . . . . . . . . . . . . . . . .
Gastsysteme für Debian und Ubuntu mit Xen-Tools installieren . . . . . . .
Paravirtualisiertes NetBSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
81
83
89
91
93
94
97
101
101
105
108
110
6 Unmodifizierte Gastsysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
6.1 Einführung:
Der Unterschied zwischen Para- und Hardware-Virtualisierung . . . . . . .
6.2 Xen und die x86-Ringe paravirtualisiert . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3 Hardware-Unterstützung prüfen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.4 Konfiguration für unmodifizierte Gastsysteme . . . . . . . . . . . . . . . . . . . . .
6.5 Von einem CD/DVD-Laufwerk booten . . . . . . . . . . . . . . . . . . . . . . . . . .
6.6 Von einer (virtuellen) Festplatte booten . . . . . . . . . . . . . . . . . . . . . . . . . .
6.7 Booten einer Live-CD/DVD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.8 Installation von Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.9 Installation von Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.10 Benutzung der virtuellen Windows-Systeme. . . . . . . . . . . . . . . . . . . . . . .
VI
| Inhalt
115
118
119
122
123
124
125
128
131
135
7 Hardwarezugriff
7.1
7.2
7.3
7.4
7.5
7.6
7.7
.................................................
Hotplugging virtueller Festplatten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Hotplugging virtueller Netzwerkkarten . . . . . . . . . . . . . . . . . . . . . . . . . .
Ein virtuelles Trusted Platform-Module (TPM) nutzen . . . . . . . . . . . . . .
Der virtuelle Framebuffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PCI-Karten in einem Gastsystem zugänglich machen. . . . . . . . . . . . . . . .
Eine Backend-Domain konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . .
OpenGL-Hardware-3-D-Beschleunigung für virtuelle Maschinen: VMGL
138
138
140
142
144
146
147
149
8 Automatische Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
8.1
8.2
8.3
8.4
8.5
8.6
8.7
8.8
Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Installation minimaler Linux-Systeme in ein Verzeichnis . . . . . . . . . . . . .
Installation eines minimalen SUSE-Systems für eine virtuelle Maschine .
Installation einer virtuellen Maschine auf Basis einer RPM-basierten
Linux-Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Einsatz vorgefertigter DomUs (paravirtualisiert) . . . . . . . . . . . . . . . . . . .
Austausch der Kernel-Module innerhalb der virtuellen Maschine . . . . . .
Klonen virtueller Maschinen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Vorbereitungen zum Klonen einer hardwarevirtualisierten WindowsDomäne mittels sysprep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
153
154
158
161
164
166
168
171
9 Backup & Restore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
9.1
9.2
9.3
9.4
9.5
9.6
Den Zustand einer virtuellen Maschine speichern . . . . . . . . . . . . . . . . . .
Eine virtuelle Maschine anhalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Backup via FTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Backup mit rsync. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Backup mit LVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Xen & RAID: Virtuelle Maschinen auf einem Software-RAID-1 betreiben
173
175
176
178
181
183
10 Migration virtueller Maschinen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
10.1
10.2
10.3
10.4
10.5
10.6
Einführung: Unterschiedliche Migrationskonzepte im Überblick . . . . . .
Physical-to-Virtual-Migration (P2V) mit Hardwarevirtualisierung. . . . . .
P2V-Migration ohne Hardwarevirtualisierung . . . . . . . . . . . . . . . . . . . . .
Ein physikalisches Fedora/Red Hat Enterprise Linux virtualisieren . . . . .
P2V von OpenSUSE/SUSE Linux Enterprise-Servern . . . . . . . . . . . . . . . .
Von VMware zu Xen migrieren. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
189
190
195
199
202
204
Inhalt | VII
11 Live-Migration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
11.1 Konfiguration des Xen-Relocation-Servers . . . . . . . . . . . . . . . . . . . . . . . . 208
11.2 Live-Migration zwischen verschiedenen Hosts . . . . . . . . . . . . . . . . . . . . . 211
12 Hochverfügbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
12.1
12.2
12.3
12.4
Verteilte Replikation von Dateisystemen via DRBD . . . . . . . . . . . . . . . . .
Xen-Cluster mit Ganeti verwalten. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Hochverfügbarkeitscluster mit Heartbeat einrichten . . . . . . . . . . . . . . . .
Virtuelle Xen-Gäste im Hochverfügbarkeitscluster . . . . . . . . . . . . . . . . . .
220
226
240
244
13 Monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
13.1
13.2
13.3
13.4
13.5
Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Monitoring mit Xens Bordmitteln. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Virtuelle Maschinen unter Fedora Linux überwachen . . . . . . . . . . . . . . .
Die CPU-Auslastung mit XenStats auswerten. . . . . . . . . . . . . . . . . . . . . .
Monitoring virtueller Maschinen mithilfe von Nagios –
vorbereitende Schritte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13.6 Monitoring von Domain-0s und ihren virtuellen Maschinen mit Nagios
13.7 Alternative Lösungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
249
250
261
263
267
284
291
14 Virtuelle Maschinen verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
14.1
14.2
14.3
14.4
Textbasierte Verwaltung virtueller Maschinen mit der Xen-Shell. . . . . . .
Webbasierte Verwaltung mit Enomalism . . . . . . . . . . . . . . . . . . . . . . . . .
Grafische Verwaltung virtueller Maschinen mit XenMan . . . . . . . . . . . . .
Grafische Verwaltung virtueller Maschinen mit dem Virtual Machine
Manager (virt-manager). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
296
299
301
303
15 Eigene Anwendungen zum Xen-Management entwickeln . . . . . . . . . . . . . . . . 306
15.1
15.2
15.3
15.4
15.5
15.6
15.7
15.8
15.9
15.10
15.11
VIII |
Inhalt
Einführung: Die libvirt-Bibliothek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die libvirt unter Fedora installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die libvirt unter openSUSE installieren. . . . . . . . . . . . . . . . . . . . . . . . . . .
Die libvirt unter Debian installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die libvirt aus dem Quellcode installieren . . . . . . . . . . . . . . . . . . . . . . . .
Das erste C-Programm mit libvirt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Das erste Python-Programm mit libvirt. . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Fähigkeiten des Hypervisors in C-Programmen anzeigen . . . . . . . . .
Die Fähigkeiten des Hypervisors in Python-Skripten anzeigen . . . . . . . . .
Eine Domäne verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Eine neue Domäne anlegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
306
308
309
310
311
314
316
317
318
319
321
15.12
15.13
15.14
15.15
15.16
15.17
15.18
Eine Domäne herunterfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Eine Domäne »einschlafen« lassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Eine Domäne aufwecken. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Gastsysteme in einem C-Programm auflisten. . . . . . . . . . . . . . . . . . .
Die Gastsysteme in einem Python-Skript auflisten . . . . . . . . . . . . . . . . . .
Die Geräte einer Domäne mit einem C-Programm verwalten . . . . . . . . .
Die Geräte einer Domäne mit einem Python-Skript verwalten . . . . . . . . .
322
323
324
325
327
328
329
16 Der XenStore
331
16.1
16.2
16.3
16.4
332
333
334
335
....................................................
Einführung: Aufbau und Navigation der XenStore-Verzeichnisstruktur .
Informationen auslesen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Einträge anlegen und modifizieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Einträge entfernen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17 Ressourcenkontrolle
17.1
17.2
17.3
17.4
17.5
17.6
17.7
..............................................
Einführung in die Speicherverwaltung . . . . . . . . . . . . . . . . . . . . . . . . . . .
Speicherlimits für virtuelle Maschinen einrichten. . . . . . . . . . . . . . . . . . .
Einführung: CPUs verwalten. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zuordnung zwischen virtuellen CPUs und Gastsystemen . . . . . . . . . . . .
Zuordnung zwischen logischen CPUs und Gastsystemen . . . . . . . . . . . .
Scheduling von CPU-Zyklen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Traffic Shaping mit Xen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
336
336
337
340
340
343
344
346
18 Sicherheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
18.1
18.2
18.3
18.4
18.5
18.6
18.7
Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Die Daten virtueller Maschinen verschlüsseln . . . . . . . . . . . . . . . . . . . . .
Vorüberlegungen zum Firewall-Setup unter Xen . . . . . . . . . . . . . . . . . . .
Firewall-Konfiguration in einem Bridge-Setup (Dom0) . . . . . . . . . . . . . .
Firewall-Konfiguration in einem NAT-Setup (Dom0) . . . . . . . . . . . . . . .
Firewall-Konfiguration in einem Routing-Setup (DomU). . . . . . . . . . . . .
Firewall-Setup mit der DTC-Xen-Firewall unter Debian GNU/Linux
oder Ubuntu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18.8 Mechanismen zur Zugriffskontrolle einrichten. . . . . . . . . . . . . . . . . . . . .
18.9 Xen und Intrusion-Detection-Systeme (IDS). . . . . . . . . . . . . . . . . . . . . . .
348
350
358
359
366
368
371
374
388
19 Troubleshooting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
19.1 Zeitabweichung in der virtuellen Maschine . . . . . . . . . . . . . . . . . . . . . . . 391
19.2 Die Fehlermeldung »Backend Device not found« . . . . . . . . . . . . . . . . . . . 393
19.3 Die Meldung »Is a directory« . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
Inhalt | IX
19.4 Die Meldung »Error: (22, 'Invalid argument')« . . . . . . . . . . . . . . . . . . . . . 397
19.5 »4gb seg fixup« – eine Fehlermeldung unter Debian . . . . . . . . . . . . . . . . 399
19.6 Einen Bugreport einreichen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
20 Erweiterte Netzwerkkonfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
20.1
20.2
20.3
20.4
20.5
20.6
Eine VLAN-Umgebung einrichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Zugriff auf ein VLAN von der Domain-0 einrichten . . . . . . . . . . . . . . . . .
Zugriff auf ein VLAN von einer Domain-U einrichten . . . . . . . . . . . . . . .
Einer virtuellen Maschine den Zugriff auf ein VLAN ermöglichen . . . . . .
Bonding-Unterstützung aktivieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ein Bonding-Device einsetzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A Das Programm xm im Überblick
.....................................
Virtuelle Maschinen verwalten. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Befehle zur Steuerung der Domain-0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Virtuelle Blockgeräte verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Virtuelle Netzwerkadapter verwalten. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Virtuelle TPM-Geräte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Access Control Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
404
406
408
409
410
412
416
417
423
424
426
427
428
B Glossar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
C Weiterführende Informationen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
Index
X
Literaturhinweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mailinglisten. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Internet Relay Chat (IRC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Webseiten. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Veranstaltungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
438
439
444
444
446
...............................................................
447
| Inhalt
Vorwort
Nach einem »Dornröschenschlaf« von fast 20 Jahren ist das Thema Virtualisierung nun
wieder in aller Munde. Was unter Mainframes schon ein alter Hut aus den Sechzigerjahren ist, erlebt auf dem PC gerade seine Blütezeit. Das zeigt sich nicht nur an der Fülle
unterschiedlicher Virtualisierungstechnologien im Open Source-Umfeld, sondern auch
an dem reichen Ökosystem an Programmen darum herum. Durch die Vielzahl der zur
Verfügung stehenden Tools und die unterschiedlichen Ausprägungen der einzelnen Distributionen ist es allerdings oftmals nicht leicht, den Wald vor lauter Bäumen noch zu
sehen. Mit diesem Buch soll versucht werden, das Chaos etwas zu ordnen und praxisorientiert typische Aufgabenstellungen rund um die Virtualisierung anzugehen. Wir
konzentrieren uns dabei auf Xen, eine der momentan beliebtesten Virtualisierungsimplementierungen, die unter der GPL steht. Xen wird mittlerweile durch eine Vielzahl
oftmals konkurrierender Unternehmen mit entwickelt, zu denen laut wikipedia.org1 nicht
nur Sun, Intel und AMD, IBM, HP, Red Hat und Novell/SUSE zählen, sondern auch
Microsoft. Zudem unterstützt die »Bill & Melinda Gates Foundation« die Entwicklung
von Xen finanziell.
Zu diesem Buch
Die Idee zu diesem Buch gärt schon länger in meinem Kopf und hat sich dann im Laufe
der Zeit in einem nicht mehr zu bändigenden Papierstapel mit Schnipseln von Konfigurationsdateien, einzeiligen Programmaufrufen und gelben Post-its materialisiert. Da ich
diesen Stapel auch noch auf viele Reisen mitgenommen habe, konnten Eselsohren, fehlende Seiten und Abdrücke von Kaffeetassen nicht lange ausbleiben. Und ständig kamen
neue Ideen und Notizen dazu, die ich im Zuge meiner Präsentationen auf Linux-Konferenzen und Linux-Schulungen in verschiedenen Städten gesammelt habe.
Der Anblick dieses wachsenden chaotischen Papierstapels ist ein gutes Sinnbild für die
Probleme, die sich ergeben, wenn man versucht, eine sich permanent weiterentwickelnde
Software in den langfristigen kommerziellen Einsatz zu nehmen. Was auf einer Distribu1 http://de.wikipedia.org/w/index.php?title=Xen&oldid=52816287
| XI
tion problemlos funktioniert, kann auf einer anderen schon durch das Fehlen der entsprechenden Software-Abhängigkeiten scheitern. Dieses Wirrwarr galt es also zu ordnen,
und ich habe versucht, gerade diese Distributionsabhängigkeit durch explizite distributionsspezifische Hinweise und Rezepte für Debian GNU/Linux (und Ubuntu) sowie
Fedora und openSUSE abzudecken.
Zielgruppe des Buchs
Dieses Buch richtet sich an all diejenigen, die sich – aus welchen Gründen auch immer –
mit dem Thema Virtualisierung durch Xen beschäftigen möchten oder müssen. Hierbei
liegt der Fokus auf einer konkreten problemorientierten Herangehensweise. In einer Vielzahl kurzer Rezepte wird versucht, das komplexe Thema in kleine, der Reihe nach abzuarbeitende Teillösungen herunterzubrechen.
Ein Großteil der aktuellen Literatur zum Thema Virtualisierung im Allgemeinen oder
Xen im Besonderen will erst einmal die Virtualisierungsthematik und die größeren
Zusammenhänge lang und breit erläutern, und am Ende fehlt dann leider oftmals der
Platz, um sich den ganz konkreten Problemen und Nöten eines Sysadmins zu widmen,
dessen System auch im Produktivbetrieb überleben soll. Diesem Trend widersetzt sich
das vorliegende Buch durch seine klassische O’Reilly-Kochbuchstruktur.
Ich gehe also in diesem Buch davon aus, dass Sie weder Laie noch Manager sind, sondern
ein gestandener Systemadministrator, der Lösungen für seine technischen Probleme
sucht und der spätestens nach der Lektüre dieses Vorworts die Ärmel hochkrempeln will.
Wenn Sie sich überhaupt mit einem Vorwort aufhalten ...
Das Buch ist so angelegt, dass es nicht nur für Power-User und Admins kleiner und mittlerer Netzwerke, sondern auch für Betreuer großer Serverparks etwas zu bieten hat. Während wir dem ambitionierten Heimanwender den parallelen Betrieb verschiedener
Betriebssysteme näherbringen, bekommen Administratoren Mittel und Wege aufgezeigt,
in kürzester Zeit mit Hilfe von Xen neue Systeme zur Verfügung zu stellen. Durch die
Abschnitte »Monitoring«, »Hochverfügbarkeit« und die Passagen zur Entwicklung eigener Management- und Automatisierungslösungen finden auch diejenigen, die große
Rechenzentrumsinstallationen verwalten, hilfreiche Rezepte rund um den Einsatz von
Xen.
Voraussetzungen
Dieses Buch hat sein Hauptaugenmerk auf dem Einsatz von Xen unter Linux. Wenn Sie
sich noch nicht mit Linux im Allgemeinen auskennen, sollte dieses Buch frühestens Ihr
zweites oder drittes Buch zum Thema Linux-Administration sein.
In den anfänglichen Kapiteln, die sich mit der Vorbereitung oder der ersten Inbetriebnahme einer virtuellen Maschine auf Basis von Xen beschäftigen, setzen wir lediglich
grundlegende Linux-Kenntnisse voraus, die man sich vermutlich bereits im Zuge einer
ersten Linux-Installation und mit einem Ausflug auf die Kommandozeile angeeignet hat.
XII | Vorwort
Generell versuche ich, für die meisten Befehle die Kommandozeile zu verwenden, wie es
beim Einsatz klassischer Unix-Fernwartungsprogramme üblich ist. Nur in wenigen vereinzelten Rezepten arbeiten wir mit einer grafischen Oberfläche.
Je spezieller die Themen werden, desto mehr Erfahrungen werden vorausgesetzt. So sollten Sie beispielsweise im Kapitel 18, das sich mit Sicherheitsaspekten und einem Xenspezifischen Firewall-Setup beschäftigt, bereits grundlegend mit iptables vertraut sein.
Außerdem gibt es ein Kapitel zur Entwicklung individueller Management-Programme für
Xen-Systeme – auch dort wird davon ausgegangen, dass Sie eine der exemplarisch
erwähnten Programmiersprachen (primär C und Python, aber auch OCaml, Ruby und
Java) kennen.
Für den echten Linux-Guru werden dann noch Konzepte und Möglichkeiten aufgezeigt,
ein Xen-Setup zu überwachen und sehr feingranulare, vor allem für das PerformanceTuning notwendige Details abzufragen.
Hardware-Anforderungen
Prinzipiell sind die Ressourcen CPU, Festplattenspeicher und Memory entscheidend für
den Einsatz von Xen. Mit weniger als 512 MB Hauptspeicher ist es kaum sinnvoll, eine
virtuelle Maschine betreiben zu wollen. Wenn mehrere virtualisierte Betriebssysteme
installiert werden, müssen diese auch gleichzeitig auf dem zur Verfügung stehenden Festplattenspeicher vorrätig gehalten werden können. Sind diese Voraussetzungen erfüllt,
kann Xen vom alten Pentium III über ein handelsübliches Notebook bis zum High-EndServer mit AMD oder Intel-CPU betrieben werden. Wenn Sie den Einsatz eines proprietären Betriebssystems in einer virtualisierten Umgebung ins Auge fassen, werden hierfür
allerdings spezielle Prozessoren mit zusätzlichen Virtualisierungs-Hardwareeigenschaften
benötigt (siehe Kapitel 6, Unmodifizierte Gastsysteme).
Aufbau
Dieses Buch besteht aus 20 Kapitel sowie drei Anhängen, auf die sich die folgenden
Inhalte verteilen:
Kapitel 1, Einführung in die Virtualisierung
Als Erstes wollen wir auf das Thema Virtualisierung im Allgemeinen eingehen und
erklären, was sich hinter dem Begriff verbirgt. Weiterhin gehen wir kurz auf die
Geschichte der Virtualisierung ein, gefolgt von möglichen Anwendungsszenarien
sowie einem Überblick über die verschiedenen Virtualisierungsarten, denen man
heutzutage begegnet.
Kapitel 2, Xen installieren und das Hostsystem vorbereiten (Domain-0)
Als Grundlage für alles Weitere wollen wir Ihnen zeigen, wie Sie Ihr bestehendes
Linux-System auf den Einsatz von Xen vorbereiten.
Vorwort
| XIII
Kapitel 3, Konfiguration des Hostsystems (Domain-0)
Nachdem in Kapitel 2, Xen installieren und das Hostsystem vorbereiten (Domain-0),
die notwendigen Voraussetzungen installiert wurden, macht Sie dieses Kapitel mit
allen Dingen rund um die Konfiguration der Domain-0, dem Hostsystem, vertraut.
Kapitel 4, Vorbereitung des Systems auf die Gäste (Paravirtualisierung)
Jetzt, wo das Hostsystem in der Lage ist, ein Gastsystem zu betreiben, betrachtet
das Kapitel 4, Vorbereitung des Systems auf die Gäste (Paravirtualisierung), die zur
Einrichtung einer virtuellen Maschine notwendigen Schritte. Neben verschiedenen
Möglichkeiten, eine virtuelle Festplatte einzurichten, stehen in diesem Kapitel die
benötigten Anweisungen, um eine virtuelle Maschine unabhängig von einer
bestimmten Linux-Distribution aufzusetzen. Neben der Erstellung einer Konfigurationsdatei und den nötigen Anpassungen der Netzwerkkonfiguration wird beschrieben, wie man sich mit einem Gastsystem über die Kommandozeile und die grafische
Oberfläche verbindet.
Kapitel 5, Distributionsspezifische Gast-Installation (Paravirtualisierung)
Dieses Kapitel beschreibt die distributionsspezifische Installation von Gastsystemen.
Aufgrund der Tatsache, dass von Distribution zu Distribution unterschiedliche »Insellösungen« existieren, wird auf die Installation in folgenden weitverbreiteten Distributionen eingegangen: Debian, Fedora, SUSE und Ubuntu. Am Ende des Kapitels ist
zusätzlich die Installation von NetBSD beschrieben.
Kapitel 6, Unmodifizierte Gastsysteme
In diesem Kapitel, das mit einigen Vorbemerkungen zum Thema Hardware-Virtualisierung beginnt, werden Sie mit den notwendigen Techniken vertraut gemacht, die
es ermöglichen, ein unmodifiziertes Betriebssystem, beispielsweise aus dem Hause
Microsoft, unter Linux in einer Xen-Instanz zu betreiben.
Kapitel 7, Hardwarezugriff
Der Zugriff auf verschiedene Hardware aus einer virtuellen Maschine heraus wird in
diesem Kapitel besprochen. Hierbei betrachten wir sowohl virtuelle Hardware, die
einer unprivilegierten virtuellen Maschine zugewiesen werden kann, als auch den
direkten Zugriff eines Gastsystems auf die Hardware.
Kapitel 8, Automatische Installation
Einen wesentlichen Vorteil der Virtualisierung lernen wir in Kapitel 8, Automatische
Installation, kennen: die Möglichkeit, neue Systeme in kurzer Zeit zur Verfügung zu
stellen. Dies wird vor allem durch die Technik des »Klonens« virtueller Maschinen
möglich, wobei ein System einmalig installiert wird, um daraus anschließend einfach weitere Kopien anzufertigen. Weiterhin beschäftigt sich dieser Teil des Buches
mit Fragen rund um das Thema automatisierte Installation.
Kapitel 9, Backup & Restore
Dieses Kapitel zeigt Ihnen die besonderen Vorteile und Fallstricke, denen man
begegnet, wenn es um die Datensicherung oder das Wiederherstellen eines Xen-Systems geht.
XIV |
Vorwort
Kapitel 10, Migration virtueller Maschinen
Dieses Kapitel beschäftigt sich anfangs mit den Möglichkeiten der Migration von
physikalischen Servern zu virtuellen Maschinen. Im Weiteren wird darauf eingegangen, wie vorhandene Virtualisierungslösungen zu Xen migriert werden können.
Kapitel 11, Live-Migration
Den Vorteil virtueller Maschinen, dass sich das gesamte System mit vergleichsweise
geringem Aufwand auf ein anderes physikalisches System migrieren lässt, betrachten wir in diesem Kapitel, das sich der Live-Migration widmet.
Kapitel 12, Hochverfügbarkeit
Nachdem wir uns in den vorangegangenen zwei Kapiteln mit der Migration vertraut gemacht haben, wollen wir uns diese nun zunutze machen, um Hochverfügbarkeits-Cluster auf Xen-Basis aufzubauen.
Kapitel 13, Monitoring
Dieses Kapitel beschäftigt sich mit dem Warum, Was, Wann, Wo und Wie des
Monitorings, mit den Xen-spezifischen Aspekten, dem Einsatz von Linux-Bordmitteln und auch mit großen Monitoring-Lösungen wie Nagios.
Kapitel 14, Virtuelle Maschinen verwalten
In diesem Kapitel werden einige alternative Lösungen zum zentralen Xen-Verwaltungsprogramm xm vorgestellt. Diese reichen von kommandozeilenbasierten Programmen über Web-Frontends bis hin zu grafischen Oberflächen.
Kapitel 15, Eigene Anwendungen zum Xen-Management entwickeln
In diesem Abschnitt des Xen-Kochbuchs wird erläutert, wie man aus eigenen Programmen heraus auf die Xen-Funktionen zugreifen kann. Dies ist vor allem für
Anwendungsentwickler interessant, die bestehende Anwendungen um Funktionen
zur Verwaltung virtueller Maschinen erweitern oder eine eigene, angepasste
Management-Lösung erstellen wollen.
Kapitel 16, Der XenStore
In diesem Kapitel eignen wir uns Wissen über den XenStore an, eine Technologie,
mit der Informationen zwischen virtuellen Maschinen ausgetauscht oder gespeichert werden und die bei der Fehlersuche oder bei der Entwicklung eigener Treiber
und Programme hilfreich ist.
Kapitel 17, Ressourcenkontrolle
In diesem Kapitel wird beschrieben, wie die Ressourcen Speicher, CPU sowie Netzwerkbandbreite unter den einzelnen Gästen aufgeteilt werden. Weiterhin werden
wir lernen, wie einer Domäne zusätzliche Ressourcen zur Verfügung gestellt werden
können. Obendrein werden Wege aufgezeigt, um zu verhindern, dass eine virtuelle
Maschine bestimmte Ressourcen übermäßig nutzt und dabei andere Gastsysteme
blockiert.
Vorwort |
XV
Kapitel 18, Sicherheit
Dieses Kapitel widmet sich den Sicherheitsaspekten einer Xen-Installation. Hierbei
werden – ausgehend von allgemeinen Hinweisen – folgende Themen behandelt: der
Einsatz verschlüsselter Dateisystemimages, unterschiedliche Firewall-Architekturen, Policies sowie der Einsatz von Intrusion-Detection-Systeme in virtualisierten
Umgebungen.
Kapitel 19, Troubleshooting
Hier finden Sie die fünf häufigsten Probleme, die beim Einsatz von Xen typischerweise auftauchen können – und natürlich die entsprechenden Lösungen. Anschließend gehen wir noch darauf ein, wie man bei den Entwicklern von Xen einen BugReport einreicht.
Kapitel 20, Erweiterte Netzwerkkonfiguration
Dieses Kapitel beschäftigt sich mit fortgeschrittenen Aspekten der Netzwerkkonfiguration in Host und Gast. Neben der Konfiguration eines VLANs wird auf das
Thema Bonding eingegangen.
In den Anhängen zum Buch finden Sie noch eine Reihe von Informationen zum Nachschlagen. Diese werden Ihnen sowohl beim Lesen des Textteils als auch später bei der
täglichen Arbeit hilfreiche Dienste leisten.
Anhang A, Das Programm xm im Überblick
Dieser Anhang enthält eine Zusammenstellung der wichtigsten Befehle rund um das
zentrale Xen-Verwaltungsprogramm xm.
Anhang B, Glossar
In diesem Anhang finden Sie ein Glossar, in dem an zentraler Stelle die wichtigsten
Fachbegriffe erklärt werden, die in diesem Kochbuch verwendet werden.
Anhang C, Weiterführende Informationen
Der letzte Anhang gibt einen Überblick über weiterführende Ressourcen.
Hinweise zur Lektüre
Das ist kein Buch, mit dem man es sich auf dem Sessel im Wohnzimmer gemütlich
macht, um es vom Anfang bis zum Ende durchzulesen (auch wenn natürlich nichts Sie
davon abhalten soll, dies zu tun). Es bietet sich vielmehr an, dass Sie sich – analog zu
einem »echten« Kochbuch oder einer Enzyklopädie – immer das Wissen heraussuchen,
das Sie aktuell benötigen.
In der typischen Struktur der O’Reilly-Kochbücher wird in jedem Rezept ein konkretes
Problem aufgegriffen, das es zu lösen gilt. Nach einer üblicherweise kompakten Problemlösung, die dem geübten Linux-Administrator möglicherweise bereits ausreicht, gibt es
im Anschluss immer auch einen ausführlichen Diskussionsabschnitt. In diesem wird im
Detail auf die gezeigte Lösung und eventuelle Abweichungen, Warnungen oder Hinweise
eingegangen. Als Letztes folgt am Ende eines jeden Rezepts ein Bereich, in dem Hinweise
auf weitere Informationen zu finden sind.
XVI |
Vorwort
Setzt man beispielsweise nur eine einzelne Linux-Distribution wie GNU/Debian oder
Fedora ein, kann man sich die Abhandlungen, die speziell auf openSUSE eingehen, komplett sparen und sich auf die eigenen Fragestellungen konzentrieren.
Wen der kurze Überblick zum geschichtlichen Abriss und über die Virtualisierungstechniken im Allgemeinen nicht interessiert, kann Kapitel 1, Einführung in die Virtualisierung,
getrost überspringen. Ist Ihr System bereits auf den Einsatz von Xen vorbereitet, können
Sie auch direkt Kapitel 5, Distributionsspezifische Gast-Installation (Paravirtualisierung),
aufschlagen. Und wenn Sie einfach nur ein Windows-System auf Ihrem Linux-Desktop
mit Hilfe von Xen installieren wollen, werden Sie in Kapitel 6, Unmodifizierte Gastsysteme, fündig. Müssen Sie bereits eine Xen-Installation administrieren und sind auf der
Fehlersuche, ist Kapitel 19, Troubleshooting ein guter Start. Sollten Sie in C oder Python
programmieren, finden Sie in Kapitel 15, Eigene Anwendungen zum Xen-Management
entwickeln, wertvolle Hinweise, wie Sie tägliche Arbeitsvorgänge rund um Xen in einfachen Programmen automatisieren können.
Typografische Konventionen
Dieses Buch wendet folgende typografische Konventionen an:
Kursivschrift
Für E-Mail-Adressen, Dateinamen, URLs, um neue Begriffe hervorzuheben, wenn
sie erstmalig benutzt werden, und für Kommentare innerhalb von Code-Abschnitten.
Nichtproportionalschrift
Für den Code – um den Inhalt von Dateien oder die Ausgabe von Kommandos zu
zeigen und um Module, Methoden, Anweisungen und Kommandos zu kennzeichnen.
Nichtproportionalschrift, fett
In Code-Abschnitten, um Kommandos oder Text zu kennzeichnen, der von Ihnen
eingegeben werden soll.
Nichtproportionalschrift, kursiv
Um austauschbare Komponenten in Code-Abschnitten zu markieren.
KAPITÄLCHEN
Für Elemente grafischer Oberflächen wie Buttons, Menüs und Schaltflächen aller
Art.
Dieses Icon steht für einen Tipp, einen Vorschlag oder einen allgemeinen
Hinweis.
Dieses Icon steht für eine Warnung.
Vorwort |
XVII
Danksagung
Die Zeit, in der dieses Buch entstanden ist, war eine lange Reise, und das nicht nur im
übertragenen Sinne. Im Jahr 2007 ging es los, mit dem Laptop im Handgepäck. Aus den
von mir zu Beginn veranschlagten sportlichen drei Monaten wurde dann mehr als ein
Jahr. Ein Jahr, in dem ein knappes Manuskript zu einem umfassenden Kochbuch heranwuchs.
Die Reise begann im Rheinland, genauer gesagt in Düsseldorf. Von dort aus setzt sich die
mobile Entstehungsgeschichte fort, quer durch Deutschland, die Schweiz, Frankreich,
die USA, Österreich und Tschechien. Viele Kapitel sind in der Bahn (speziell auf der Strecke Marburg – Stuttgart) oder in Hotels und nur in den seltensten Fällen am heimischen
Schreibtisch entstanden. Hierbei sind zwei Laptops, ein Koffer und ein Auto auf der Strecke geblieben – hinzugewonnen wurden zwei Punkte in Flensburg.
Danken möchte ich allen, die mich auf dieser Reise begleitet haben, ausgehend von meiner Lektorin Christine Haite, die nicht nur zahlreiche Vorschläge und Korrekturen beigesteuert hat, sondern mir auch bei allen Fragen jederzeit mit Rat und Tat beiseite stand.
Weiterhin möchte ich Jürgen »Huega« Falb und Claus Allweil danken, die mich auf dem
ersten Drittel dieser Reise begleitet haben. Jürgen, der mir auch eine Einführung in die
kulinarischen Gepflogenheiten der Region Stuttgart verpasst hat, ist ein Großteil der
Abschnitte zum Thema Installation und Hardware-Virtualisierung sowie etliche Skizzen
in den ersten Kapiteln zu verdanken. Und Claus hat nicht nur meine Fragen zu Spezifika
von SUSE und openSUSE beantwortet, sondern auch das Fundament für das Kapitel
»Hochverfügbarkeit« gelegt.
Mein besonderer Dank gilt meinem Koautor und Reisebegleiter während der Arbeit an
diesem Buch: Sebastian Ott. Sebastian möchte zwar an dieser Stelle nicht erwähnt werden, aber ohne seine Hilfe wäre das Buch nicht zu dem geworden, was es jetzt ist. Er hat
nicht nur an vielen Rezepten mitgearbeitet, sondern auch fast alles, was ich teilweise
leicht übermüdet fabriziert habe, zu lesen bekommen, was bestimmt nicht immer eine
leicht verdauliche Kost war.
Weiterhin gilt mein Dank den beiden Fachgutachtern, die viele Dinge hinterfragt und
somit unschätzbar zur Fehlersuche beigetragen haben. Von ihnen habe ich auch das folgende schwäbische Sprichwort gelernt, aber nicht verinnerlicht: Nicht geschimpft, ist
genug gelobt!
Darüber hinaus möchte ich noch meiner Familie danken, die mich immer das hat
machen lassen, was ich für richtig hielt, sowie der Wirtin des Ochsen in Stuttgart-Heslach
und den Betreibern des Cappuccino in Marburg, die mir oftmals bei einem leeren Kühlschrank in heimischen Gefilden ein rettender Hafen waren.
Die größte Entbehrung musste natürlich meine Freundin Manuela-Madeleine ertragen,
die sowieso schon unter meiner Freude, unterwegs zu sein, leiden muss, sowie unter meinem Talent, die mir zur Verfügung stehende Zeit mehrfach zu verplanen; nun musste sie
auch noch auf viele Stunden der rar gesäten gemeinsamen Zeit verzichten. Ich danke dir
XVIII | Vorwort
für dein Verständnis, die immerwährende gute Laune und deine Unterstützung auch in
Zeiten, in denen mein kreatives Chaos andere schon längst zur Verzweiflung getrieben
hätte ;-)
Die Website zum Buch
Unter der URL http://www.picht.org/xenkochbuch finden Sie weitere Informationen und
Updates rund um das vorliegende Buch. Bitte beachten Sie, dass auf diesem Weg leider
kein kostenloser Support angeboten werden kann.
Anmerkungen, Fehler und Kritik
Auch nach vielen Tests auf diversen Distributionen mit unterschiedlichen Kernel- und
Xen-Versionen hat sich bestimmt dennoch der eine oder andere Fehler in dieses Buch
eingeschlichen. Sollten Sie einen solchen finden, zögern Sie nicht, ihn zu melden, und
zwar per E-Mail an [email protected].
Dasselbe gilt natürlich auch für Anmerkungen, Kritik oder Verbesserungsvorschläge.
Vielleicht haben Sie ja sogar das eine oder andere von mir beschriebene Programm selbst
entwickelt, und ich habe den Funktionsumfang nicht richtig erkannt und die wichtigsten
Parameter unverwendet gelassen. Gerne nehme ich Ihre Hinweise entgegen und ergänze
sie dann auf der Webseite des Buches.
Vorwort |
XIX
KAPITEL 1
Einführung in die Virtualisierung
Laut der Umfrage eines amerikanischen IT-Magazins, das die »IT-Buzzwords« des Jahres
2006 untersucht hat, belegte der Ausdruck Virtualisierung Platz eins, gefolgt von RSS,
SAAS (einer SOA-Komponente),Wiki, Social Bookmarking und Web 2.0.
Nur ein Hype? Nein: In den letzten zwei Jahren hat sich gezeigt, dass wir mit dem Schlagwort keineswegs einem kurzlebigen Trend aufgesessen sind, sondern eine intelligente
Technik an die Hand bekommen haben, die verwendet werden kann, um verschiedenste
Probleme zu lösen.
Vorab seien hier vor allem zwei Stärken genannt: Zum einen lässt sich eine virtuelle
Maschine wesentlich schneller in Betrieb nehmen als ein neuer Server, der erst noch
beschafft werden muss. Zum anderen lassen sich durch die Konsolidierung vereinzelter
physikalischer Server in Form von virtuellen Maschinen immense Kosten sparen.
Diese Einführung beschäftigt sich neben der Frage, warum der Begriff »Virtualisierung«
in aller Munde ist und was er eigentlich bedeutet, mit der Herkunft und dem Nutzen dieser Technik für Administratoren, Anwender und Entwickler. Dieses Kapitel soll erst einmal einen Überblick geben – auf viele Hintergründe werde ich dann später bei den
entsprechenden Fragestellungen eingehen, bei denen ein Thema zum ersten Mal behandelt wird.
1.1
Was ist Virtualisierung?
Virtualisierung ist ein breit gefächerter Ausdruck, der nicht eindeutig definiert ist, aber
unter dem oftmals die Emulation oder die Simulation von Hardware-Ressourcen verstanden werden kann. Dieses Konzept führt zu einer Entkopplung von Hardware und
Betriebssystem und in der Folge zu einem höheren Grad an Flexibilität. Mittels Virtualisierung wird eine zentrale, einheitliche Sicht auf bestimmte Ressourcen erreicht, unabhängig von ihrem physikalischen Ort.
|
1
Entgegen der landläufigen Meinung handelt es sich hierbei keinesfalls um eine neu entwickelte Technologie! Virtualisierung wurde bereits in den sechziger Jahren eingesetzt und
hat ihren Ursprung im Mainframe-Umfeld. Dort wurde sie eingesetzt, um die Auslastung
des sehr mächtigen, gleichzeitig aber auch sehr teuren Mainframe zu verbessern. Einem
User konnte schon damals die Illusion vermittelt werden, auf einer eigenen dedizierten
Maschine zu arbeiten, während er tatsächlich nur einen kleinen Teil der gesamten Hardware zur Verfügung hatte.
Versteckte Virtualisierung im Alltag
Man ist sich dessen kaum bewusst, aber auch in ganz gewöhnlichen PCs sind viele verschiedene Virtualisierungstechniken versteckt. Wenn zum Beispiel eine Swap-Partition
existiert, werden der echte Hauptspeicher und die Kapazität der Swap-Partition zu einem
virtuellen Speicher zusammengefasst.
Auch findet beim gleichzeitigen Ausführen verschiedener Programme eine Virtualisierung
statt. Genauso beim Zugriff auf Hardware: Eingabegeräte wie Maus und Tastatur können
von mehreren Applikationen parallel genutzt werden.
Je nach eingesetztem Festplattenspeichersystem, zum Beispiel LVM oder Raid (siehe Kapitel 2, Xen installieren und das Hostsystem vorbereiten (Domain-0)), kann ein Dateisystem
zudem über mehrere Festplatten verteilt sein und in Form einer virtuellen Festplatte angesprochen werden. Virtualisierung ist also keine Geheimwissenschaft, sondern ein gewöhnlicher Bestandteil unseres IT-Lebens.
Zurzeit ist das Thema von starkem Interesse, weil durch Virtualisierung schneller neue
Systeme bereitgestellt werden können und kurzfristig auf sich ändernde Ressourcenanforderungen reagiert werden kann. Einer virtuellen Maschine mehr Hauptspeicher oder
Festplattenplatz zuzuweisen ist wesentlich einfacher zu realisieren als der Einbau neuer
Hardware-Komponenten: Neue Hardware muss meistens die Prozesse Freigabe, Einkauf,
Anlieferung, Aufbau und Installation durchlaufen, dies kann schon einmal mehrere
Wochen benötigen. Zusätzlich wird Virtualisierung interessanter durch neue Prozessoren, die wesentliche Aufgaben direkt auf dem Prozessor ausführen können, was zu einer
Performance-Steigerung führt.
Virtualisierung außerhalb der Informatik
In der Medientheorie bezeichnet Virtualisierung die Tatsache, dass sich journalistische
Themen vermehrt aus virtuellen Quellen ergeben. Virtuell bedeutet in diesem Zusammenhang, dass es keinen persönlichen Kontakt des Autors zum recherchierten Objekt gibt.
Dies ist zum Beispiel bei Informationen von Nachrichtenagenturen oder von Internetseiten
der Fall.
2 | Kapitel 1: Einführung in die Virtualisierung
1.2
Die Geschichte der Virtualisierung
Im Jahre 1959 stellte Christopher Strachey in seiner Abhandlung »Time Sharing in Large
Fast Computers« das Konzept des Multitasking vor. Statt der bisher üblichen streng
sequenziellen Datenverarbeitung schlägt er vor, eine höhere CPU-Auslastung zu erreichen, indem bei Programmen mit Gerätezugriff ein sogenannter Kontextwechsel der
CPU möglich wird. Statt die CPU warten zu lassen, während ein Programm mit den I/OOperationen auf den angeschlossenen Bändern beschäftigt ist, sollte sich die CPU einer
anderen Aufgabe zuwenden können.
Beim Kontextwechsel, im Englischen als context switch bekannt, wird in einem Betriebssystem der Zustand einer CPU gespeichert (stored) bzw. wiederhergestellt (restored), so
dass ein Prozess mit Unterbrechungen abgearbeitet werden kann und sich folglich
mehrere Prozesse eine einzelne CPU teilen können.
Eine Aufteilung des Hauptspeichers in einzelne Teilbereiche ermöglichte außerdem die
gleichzeitige Bearbeitung mehrerer Bänder.
In den 1960ern beschäftigten sich Gerald Popek und Robert Goldberg mit der Frage, welche Anforderungen notwendig sind, um effektiv zu virtualisieren. Dabei stellten sie folgende Anforderungen an ein System:
• Gleichheit: Jedes Programm, das in einer virtualisierten Umgebung ausgeführt wird,
muss sich genauso verhalten wie auf nativer Hardware.
• Effektivität: Ein Großteil der Instruktionen des virtuellen Prozessors muss direkt
vom realen Prozessor ausgeführt werden können.
• Ressourcenkontrolle: Die Virtualisierungkomponente (Virtual Machine Manager,
VMM) muss die komplette Kontrolle über die Ressourcen erhalten: Hauptspeicher,
Eingabegeräte usw...
Im Jahre 1967 baute IBM den Vorläufer virtueller Maschinen auf Mainframes (siehe
Abbildung 1-1). Der hierfür entwickelte Hypervisor ist eine Technologie, die später auf
dem Mainframe als VM bekannt wurde und heutzutage unter dem Namen z/VM firmiert, mit dessen Hilfe man Linux auf dem Mainframe (Linux on System z) einsetzen
kann.
Ende der Siebzigerjahre des vorigen Jahrhunderts entstand das Konzept, eine virtuelle
Maschine zur Implementierung einer Programmiersprache einzusetzen. 1977 wurde mit
P-Code ein Zwischencode von Pascal verwendet, der in einer virtuellen Maschine lief.
Richtig populär wurde dieses Konzept dann 1991 mit oak, dem Vorläufer der Programmiersprache Java, die ebenfalls eine virtuelle Maschine enthält.
Acht Jahre später beginnt VMWare Inc, erste Virtualisierungsprodukte zu verkaufen.
Das Unternehmen ist aus einem Forschungsprojekt an der Universität von Stanford mit
Mendel Rosenblum und den beiden Informatik-Promotionsstudenten Edouard Bugnion
und Scott Devine hervorgegangen.
1.2 Die Geschichte der Virtualisierung |
3
Virtualisierung aus der Sicht der Mathematik
Da Popek und Goldberg Mathematiker waren (zu dieser Zeit gab es noch keinen eigenständigen Studiengang Informatik), stellten sie sich den Zusammenhang zwischen Gastund Hostsystem als Abbildung (im Fachjargon Isomorphismus genannt) vor:
Cr
Cv
f(Si)
Si
ei(Si)
Sj
S' i
e' i(S' i)
S' j
Der linke Teil des Bildes (Cr) repräsentiert das Hostsystem, während die rechte Seite (Cv)
das virtuelle Gastsystem darstellt. Der von Popek und Goldberg verwendete Bezeichner C
steht hierbei für Computer, während die Indizes zwischen real (r) und virtuell (v) unterscheiden. Weiterhin zeigt die Abbildung zwei Zustände Si und Sj (S für state), in denen sich
das System befinden kann, wobei man von Zustand Si nach Sj kommt, indem die Operation ei(Si) ausgeführt wird. Die Verbindung von der linken zur rechten Bildhälfte f(Si) sorgt
für das Mapping zwischen Host und Gast. Auf Seiten der virtuellen Maschine gibt es zu Si
und Sj korrespondierende Zustände namens S'i und S'j sowie die passende Instruktion
e'i(S'i), um von Zustand S'i nach S'j zu kommen.
Die vollständige Veröffentlichung von Goldberg & Popek zu diesem Thema finden Sie
unter http://doi.acm.org/10.1145/361011.361073.
1999 erblickte das von Jeff Dicke ins Leben gerufene Projekt User Mode Linux, abgekürzt UML, das Licht der Welt. Die Abkürzung UML ist mehrfach belegt und sollte
daher nicht mit der Unified Modeling Language verwechselt werden. UML ist eine eigenständige Prozessor-Architektur innerhalb des Linux-Kernel. Der Kernel des Gastsystems
wird dabei innerhalb des Hostsystems wie eine Anwendung gestartet und läuft als Prozess unter der Kontrolle des Hostsystems. Dieses Programm umschließt das darin laufende Linux und schirmt es ab, so dass die darin ausgeführte Anwendung nicht bemerkt,
dass ihr Kernel selbst eine Applikation ist, die auch auf einem weiteren Kernel aufsetzt.
Im Oktober 2003 wurde Xen 1.0 auf einer Konferenz vorgestellt. Xen wurde ursprünglich
von der »Systems Research Group« an der Universität von Cambridge im Computerlabor
entwickelt, als Teil des Xenoserver-Projekts. Xenoserver hat zum Ziel, eine öffentliche
Infrastruktur für verteilte Computerberechnungen zu starten. Xen wurde entwickelt, weil
4 | Kapitel 1: Einführung in die Virtualisierung
Abbildung 1-1: Bild eines historischen Mainframes1
eine Software benötigt wurde, die es erlaubt, eine einzelne Maschine effizient so aufzuteilen, dass mehrere Kunden unabhängig voneinander Betriebssysteme und Anwendungen
ausführen können.1
Mittlerweile ist aus Xenoserver, einem kleinen Teilforschungsprojekt, ein Unternehmen
namens XenSource Inc. mit Sitz in Cambridge und dem Silicon Valley hervorgegangen,
das Xen unter Beteiligung von Firmen wie AMD, HP, IBM, Intel, Novell und RedHat
weiterentwickelt. Im Jahre 2007 wurde der Mehrheitsanteil an XenSource Inc. vom amerikanischen Software-Hersteller Citrix übernommen.
Siehe auch
• http://publib.boulder.ibm.com/infocenter/eserver/v1r2/topic/eicay/eicay.pdf (Veröffentlichung von IBM aus dem Jahre 2006 zum Thema Virtualisierung).
• Weitere Informationen über historische Betriebssysteme finden Sie in Classic Operating Systems: From Batch Processing to Distributed Systems von Per Brinch Hansen,
Springer Verlag (2001).
• Einen guten Überblick über Virtualisierungskonzepte im Allgemeinen liefert Virtual
Machines – Versatile platforms for systems and processes von James Smith und Ravi
Nair, Morgan Kaufmann Publishers (2005).
1 Quelle: http://upload.wikimedia.org/wikipedia/commons/thumb/a/af/DM_IBM_S360.jpg/800px-DM_IBM_S360.
jpg.
1.2 Die Geschichte der Virtualisierung |
5
Virtualisierung und Abstraktion
Man kann sich dem komplexen Begriff »Virtualisierung« auch nähern, indem man ihn von
ähnlichen in diesem Kontext verwendeten Begriffen abgrenzt. Zum Beispiel fällt im Zusammenhang mit der Virtualisierung oft das Wort »Abstraktion«. Abstraktion sorgt für eine
vereinfachte Darstellung von Ressourcen und reduziert hiermit den Grad der Komplexität.
Dadurch werden viele komplizierte EDV-Vorgänge erst durchführbar. Ein Anwendungsentwickler, der ein Programm schreibt, um eine Datei auf der Festplatte zu speichern, muss
sich aufgrund verschiedener Abstraktionsschichten heutzutage weder direkt mit dem Aufbau des Dateisystems noch mit der Ansteuerung der Hardware beschäftigen.
Während Abstraktion aber eher nur Details versteckt, schafft Virtualisierung umfassende
Illusionen, indem sie durch verschiedene Techniken dafür sorgt, dass sich eine Ressource
genauso verhält wie auf nativer Hardware.
Ein prominentes Beispiel für Virtualisierung in diesem Zusammenhang sind beispielsweise
Storage Area Networks (SAN), die virtuelle Festplatten in unterschiedlichen Servern zur
Verfügung stellen, die alle physikalisch in einer entfernten Komponente verwaltet werden.
Auch beim Surfen im Internet begegnet einem das Phänomen der Virtualisierung. Nicht
jede Webseite, die heutzutage aufgerufen werden kann, benötigt einen einzelnen Server,
was auch nicht sehr ökonomisch wäre. Große Internetprovider stellen heutzutage mehrere
Tausend Webseiten zur Verfügung. Die Seiten laufen alle auf unterschiedlichen Domains
(Apache Virtual Hosts), teilen sich aber CPU, Haupt- und Festplattenspeicher.
Zusammengefasst steckt hinter Virtualisierung die Grundidee, dass sich verschiedene
Betriebssysteme eine Hardware teilen und sich dabei jede Betriebssysteminstanz so verhält
wie auf einem physikalischen Rechner. Dadurch wird also ein gleichzeitiger Betrieb verschiedener Systeme unabhängig voneinander auf Basis derselben Hardware möglich.
Durch verschiedene Software- und/oder Hardware-Techniken, abhängig von der Implementierung, werden dabei Betriebssysteminstanzen voneinander abgeschirmt, um parallel
koexistieren zu können.
1.3
Einsatzgebiete und Vorteile
Es gibt verschiedene Einsatzgebiete für Virtualisierung. Unter anderem wird sie verwendet, um die Auslastung von Servern zu erhöhen bzw. um mehrere physikalische Server
auf einer Hardware-Plattform durch virtuelle Maschinen zu konsolidieren, um etwa
Energie und Ressourcen in Rechenzentren effizienter zu nutzen.
Kosteneffizienz
In großen Serverlandschaften fließen viele Faktoren in die Betriebskosten eines jeden Servers ein. Neben den Anschaffungs- und/oder Leasingkosten sind die Unterhaltskosten
für Strom und Wartung nicht unerheblich. Weiterhin kommt das Problem hinzu, dass
sich in einem Rechenzentrum die Stellfläche für Server kaum beliebig vergrößern lässt.
6 | Kapitel 1: Einführung in die Virtualisierung
Die Zusammenführung von Servern auf virtuellen Maschinen kann also den Total Cost of
Ownership (TCO) senken. Das bedeutet, dass die laufenden Kosten für Software, Reparaturen, Wartung und Hardware gesenkt werden können.
Bei einer solchen Zusammenführung muss jedoch darauf geachtet werden, nicht zu viele
Single Point of Failures (SPF) einzubauen: Wenn in einem Serverpark von zehn Servern
ein Server ausfällt, sind neun weiterhin erreichbar. Werden alle auf derselben physikalischen Hardware betrieben, führt der Ausfall des Hosts allerdings zur Nichterreichbarkeit
all dieser zehn Server!
Harmonisierung
Ein weiterer Vorteil der Einführung von Virtualisierungstechniken wie Xen liegt in der
Möglichkeit, die Systeme nicht nur konsolidieren zu können, sondern sie bei dieser Gelegenheit auch gleichzeitig vom Wildwuchs über die Jahre gewachsener Software- und
Hardware-Strukturen zu befreien und einen einheitlichen Disaster Recovery Plan (DRP)
einzuführen.
Unter dem Begriff DRP versteht man eine Reihe von Maßnahmen, die nach einem
Unglücksfall eingeleitet werden. Diese existieren für Behörden, Regierungen, Industrieanlagen genauso wie für die IT. Im einfachsten Fall bezeichnet der Begriff die Datenwiederherstellung durch Zurückspielen eines Backups, nachdem die Festplatte eines Servers
ausgefallen ist. Oftmals ist ein Disaster Recovery Plan Bestandteil oder Teilaspekt eines
Business Continuity Plan (BCP), der festlegt, wie der Geschäftsbetrieb im Falle eines
Unglücks wieder aufgenommen wird.
Flexibilität
Obendrein ist es mit Virtualisierung möglich, flexibel auf schwankende Ressourcenanforderungen zu reagieren. Eine virtuelle Maschine kann im laufenden Betrieb mehr Hauptoder Festplattenspeicher zugewiesen bekommen – vorausgesetzt, das Hostsystem verfügt
über diese Ressourcen. Außerdem ist es wesentlich schneller, eine zusätzliche virtuelle
Maschine zu erstellen, als einen neuen Server zu besorgen.
Durch Konzepte wie die Live-Migration (siehe Kapitel 11, Live-Migration), die das »Verschieben« virtueller Maschinen zwischen unterschiedlichen Hosts ermöglicht, kann
zudem die Ausfallzeit von Systemen gering gehalten werden, da sich kurzzeitige Unterbrechungen durch Wartungsarbeiten ausfallfrei gestalten lassen, so dass sie vom Benutzer gar nicht mehr wahrgenommen werden.
Sicherheit
Im Sicherheitsumfeld werden virtuelle Maschinen bevorzugt eingesetzt, um nicht vertrauenswürdige Anwendungen in einer beschränkten Umgebung auszuführen. Dazu
zählt eine virtuelle Maschine, die keinen Zugriff auf die kompletten Hardware-Ressour-
1.3 Einsatzgebiete und Vorteile |
7
cen eines PCs hat. Wird eine nicht vertrauenswürdige Anwendung – und dazu kann man
auch einen Webserver mit einer PHP-Anwendung zählen – zu einem Sicherheitsproblem,
so ist davon lediglich die virtuelle Maschine und nicht der komplette Host mit allen
darauf enthaltenen Daten betroffen.
Diese Tatsache haben jedoch auch schon Virenprogrammierer herausgefunden, und es
existieren erste Schadprogramme (Malware), die überprüfen, ob sie in einer virtuellen
Umgebung ausgeführt werden, und sich dann unauffällig verhalten und nur auf echter
Hardware zum Leben erweckt werden. Umgekehrt existieren bereits erste Ansätze, bei
denen sich Viren die Hardware-Virtualisierungsfunktionen moderner Prozessoren
zunutze machen und das laufende Betriebssystem unbemerkt unter die Kontrolle eines
Hypervisors stellen. Das eigentliche Schadprogramm wird als weitere virtuelle Instanz
»neben« dem eigentlichen Betriebssystem ausgeführt und ist so für dieses nicht mehr
erkennbar. Solche Angriffe, zu denen auch Joanna Rutkowskas blue pill zählt, sind
jedoch weitestgehend von wissenschaftlicher Neugier bezüglich der Machbarkeit und
experimentellen Implementierungen geprägt. Im Endeffekt überwiegen im Kontext virtueller Maschinen jedoch eindeutig die Sicherheitsvorteile.
Einsparung von Hardware
Im Schulungsumfeld wird Virtualisierung eingesetzt, um Hardware zu sparen und so beispielsweise in einem Kurs für Linux-Systemadministratoren auch mehrere Server zur Verfügung zu haben, ohne sich im Schulungsraum wie in einem Rechenzentrum zu fühlen.
1.4
Virtualisierungsarten
Es existieren viele verschiedene Virtualisierungstechnologien, die sich in folgende Bereiche einteilen lassen:
• Programmiersprachen
• Interpretation und Simulation
• Systemvirtualisierung
• Prozessvirtualisierung
• Hardware-Virtualisierung/Full Virtualization
• Paravirtualisierung
• Hardware-Virtualisierung durch Partitionierung
Virtualisierung bei Programmiersprachen
Im Umfeld von Programmiersprachen kommt Virtualisierung z.B. bei Java zum Zuge –
und zwar in Form der Java Virtual Machine (JVM), um dadurch Plattformunabhängigkeit zu erreichen (siehe Abbildung 1-2).
8 | Kapitel 1: Einführung in die Virtualisierung
Quellcode
-------------------------------------------------------------
Java Runtime
Byte-Code
------------- ------------------------- ------------------------- -------------
UNIX
PC
Macintosh
...
Abbildung 1-2: Die Java Virtual Machine
Java-Quellcode wird in ein Zwischenformat übersetzt, das Bytecode genannt wird. Auf
jedem Betriebssystem bzw. der entsprechenden Hardware, für die eine Java Virtual
Machine existiert, kann dieser Bytecode dann ausgewertet und die darin hinterlegten
Programminstruktionen ausgeführt werden.
Dadurch ist weder ein erneutes Übersetzen des Quellcodes noch eine Portierung auf eine
andere Hardware-Plattform notwendig, sofern eine Java-Laufzeitumgebung (JRE – Java
Runtime Environment) existiert, welche die virtuelle Maschine enthält.
Andererseits darf allerdings der Code auch keine betriebssystemspezifischen Codefragmente haben. Eine hosts-Datei zur Namensauflösung, die
sich bei Windows unter c:\winnt\system32\drivers\etc\hosts befindet, wird
unter Linux nicht automatisch unter /etc/hosts gesucht.
Interpretation und Simulation/Emulation
Ein weiterer Virtualisierungsansatz besteht in der Simulation eines kompletten Systems.
Hierzu zählen Programme wie das von Fabrice Bellard entwickelte QEMU (http://fabrice.
bellard.free.fr/qemu/) und Bochs (http://bochs.sourceforge.net/), die ein komplettes System
1.4 Virtualisierungsarten |
9
bzw. komplette Instruktionen einer anderen Architektur emulieren und somit auch die
Ausführung von Betriebssystemen ermöglichen, die für eine ganz andere Hardware ausgelegt sind.
Im Zuge der Emulation wird ein System auf einem anderen nachgeahmt, wobei es dieselben Daten verarbeitet und bei Berechnungen zu demselben Ergebnis kommt wie das Original, jedoch in der Regel mit verringerter Geschwindigkeit.
Funktionsweise
Um dieses Konzept einfach verständlich zu machen: Man kann ja bekanntlich ein System
in Hardware- und Software-Komponenten unterteilen. Hierbei zählen zur Software
neben einem Programm ebenfalls die von einer Applikation benötigten Bibliotheken,
genauso wie das Betriebssystem, welches wiederum aus verschiedenen Komponenten
besteht.
Zwischen der Hardware und Software befindet sich die sogenannte Instruction Set
Architecture (ISA). Im Deutschen könnte man hier von der »Befehlssatzarchitektur« sprechen. Hierbei handelt es sich stark vereinfacht um eine Grenze zwischen Hardware und
Software, die gleichzeitig einer Richtlinie über das Verhalten des Prozessors aus Sicht des
Programmierers bzw. des Entwicklers eines Compilers entspricht (siehe Abbildung 1-3).
Das Konzept einer ISA wurde im Zuge der Entwicklung des ersten IBM-Mainframes,
Modell S/360, eingeführt.
Applikationen
Bibliotheken
Gast
Gast-ISA
Betriebssystem
Treiber
Scheduler
Memory
Management
Emulation
Instruction Set Architecture (ISA)
Host-ISA
Hardware
Host
Abbildung 1-3: Emulation von unterschiedlichen Hardware-Umgebungen
Die einfachste Emulationsmethode ist die Interpretation. Hierbei analysiert ein Programm die Instruktionen für die Ziel-ISA, dekodiert diese und emuliert das entsprechende Verhalten, wie in Abbildung 1-4 zu sehen ist. Die Dekodierung wird in der
sogenannten »Dispatch Loop« durchgeführt. Diese kann im einfachsten Fall in Form
10 |
Kapitel 1: Einführung in die Virtualisierung

Documentos relacionados