====== Xen ====== [[wpde>Xen]] ist eine ausgereifte Lösung um Betriebssysteme mit wenig Leistungsverlust (overhead) zu virtualisieren. Wichtige [[linux:distributionen und live-cds|Distributionen]] wie [[Debian:Debian]], [[ubuntu:Ubuntu]] und [[Suse:Suse]] haben es integriert. Siehe auch: [[software:Virtualisierung#Vorteile von Virtualisierung]]. * [[domUs bzw. Gäste erstellen]] * [[Konfiguration]] auch: Netzwerk-Anbindung * [[Xen-Installation auf einem Desktop]] * [[Xen-Installation auf einem Server]] * [[Verwaltung und tools]] * [[Fehlerbehebung]] * [[server:drbd#drbd und xen]] ===== Fachbegriffe ===== Xen bietet **Paravirtualisierung** oder **Vollvirtualisierung** an. ==== Paravirtualisierung ==== Bei der **Paravirtualisierung** wird nicht komplett virtualisiert (wie z.B. bei [[software:vmware]]) sondern viele Befehle werden direkt ausgeführt. Das soll eine nahezu Verlustfreie Ausführung (nur wenige Prozent gegenüber deutlich spürbaren Verlusten bei [[software:vmware]]) bringen. Das Betriebssystem ist schon auf eine Virtualisierung angepasst, also muss nichts mehr simuliert werden. Gast-Betriebssysteme lassen sich leicht und schnell **auf einen anderen Server verschieben = live-migration**. Die Ausfallzeit ist dabei minimal. Außerdem unterstützt es suspend und resume von Gast-Betriebssystemen. * **Warum müssen Gastsysteme (bei der Paravirtualisierung) angepasst sein?** Moderne Betriebssysteme erwarten auf [[wpde>Ring (CPU)|Ring 0]] des Prozessors zu arbeiten (wo jetzt Xen arbeitet bzw. überwacht), daher muss das Betriebssystem an Xen angepasst sein, da in jedem Fall eine abstrahierende Schicht zwischen der Hardware und den Gastsystemen (überwacht durch den [[wpde>Hypervisor]]) eingezogen wird. Nur wenn man aktuelle Hardware benutzt, genauer [[software:virtualisierung#Prozessorerweiterungen für Virtualisierung|Prozessorerweiterungen]], brauchen die laufenden Betriebssystem keine Anpassung, da diese Erweiterungen dann einen zweiten (weniger priviligierten) [[wpde>Ring (CPU)|Ring 0]] zur Verfügung stellen. Glücklicherweise sind aktuelle Prozessoren schon seit einiger Zeit mit diesen Erweiterung erhätlich. Allerdings erwartet ein unangepasstes Betriebssystem natürlich auch direkten Hardwarezugriff auf Netzwerkkarten, Festplatten usw. den ihm Xen nicht zur Verfügung stellt. Zur Lösung diese Problems greift Xen auf Treiber von [[software:Qemu]] zurück, dabei funktionieren aktuell aber Live-migration, Suspend und Resume nicht. Wenn ein [[wpde>Hypervisor]] (mangels o.g. Prozessorerweiterungen) erforderlich ist, ist man aktuell als Gast auf [[linux:Linux]], [[bsd:bsd#FreeBSD]] oder [[solaris:Solaris]] beschränkt. ==== Vollvirtualisierung ==== Mit den entsprechenden [[software:virtualisierung#Prozessorerweiterungen]] ist es möglich mittels **Vollvirtualisierung** auch unangepasste Gäste (wie [[windows:Windows]]) laufen zu lassen. Dabei werden die Treiber von [[software:Qemu]] benutzt. Wenn die CPU nicht geeignet ist, wird die Erstellung von von vollvirtualisierten Gästen mit der folgenden Fehlermeldung scheitern: Error: HVM guest support is unavailable: is VT/AMD-V supported by your CPU and enabled in your BIOS? Xen unterscheidet **privilegierte** (sog. Domäne-0) und **unprivilegierte Domänen**, d. h. virtuelle (Gast-)Systeme. Die Domäne-0 hat die volle Kontrolle über das System und die anderen Gast-Domänen. Deshalb sollte sie auch unbedingt abgesichert (=gehärtet) werden. ==== Zusammenfassung ==== * live-migration: das nahezu unterbrechungsfreie Verschieben von Gastsystemen * privilegierte (sog. Domäne-0 oder Dom0): Ein minimal-System zur Verwaltung der Gäste * suspend / resume: das Anhalten und Wiederaufnehmen von Gastsystemen * unprivilegierte Domänen (DomU), d. h. virtuelle (Gast-)Betriebbssysteme * [[wpde>Hypervisor]]: Überwachungsschicht von Xen, ein sog. [[http://www.cl.cam.ac.uk/research/srg/netos/xen/|Virtual Machine Monitor (VMM)]] ===== Live-migration ===== Bei der live-migration wird der Arbeitsspeicher kopiert, die Daten auf der Festplatte müssen in einer entsprechenden Speicheranbindung (shared storage) liegen. Das Kopieren der Festplattendaten würde zu lange dauern und damit zu einer merkbaren Ausfallzeit führen. Während der Migration ist das System zwischen 50 bis 100 ms nicht erreichbar. Eine zweite Möglichkeit ist die offline-Migration, hier wird die DomU kurzzeitig angehalten und auf dem neuen Server wieder gestartet. ==== Einschränkungen ==== - eine live-migration momentan nicht über Kollisionsdomänen (über Router) hinweg möglich, da die virt. Maschinen ihre MAC-Adressen mitnehmen. - Prozessor (32/64-Bit, Prozessorerweiterungen wie MMX) und Speichermodell (z.B. PAE) müssen identisch sein - die Virtuellen Maschinen müssen auf einem Massenspeicher liegen, auf die auch beide physikalische Maschinen (schreibend!) zugreifen können müssen (z. B. ein [[wpde>Network Attached Storage|NAS]], [[wpde>Storage Area Network|SAN]], NFS oder ein [[wpde>Network Block Device]]. Alternativ geht auch [[http://fghaas.wordpress.com/2007/09/03/drbd-806-brings-full-live-migration-for-xen-on-drbd/|drbd 8.0.12 und Xen]] - der Xend-relocation-Server bietet keine Authentifizierung, man kann nur die erlaubten Quellhosts über die Option ''xend-relocation-hosts-allow'' beschränken. :!: Es muss auf dem Zielsystem genug Speicher vorhanden sein. [[http://www.heise.de/newsticker/Hypervisor-Xen-3-3-0-steht-zum-Download-bereit--/meldung/114726|Hypervisor Xen 3.3.0 steht zum Download bereit]] ===== mögliche Probleme ===== Die folgenden Probleme müssen aktuelle nicht mehr bestehen, da die Entwicklung von Xen sehr schnell vorran schreitet. * wichtige Überlegungen: sollen bestimmte VMs auf dem gleichen physikalischen Rechner laufen? (externe / interne Firewall?) Lösung: shype * Zugriff auf gleiche Ressourcen: (nicht Clusterfähige) Dateisysteme auf die gleichzeitig geschrieben wird * [[wpde>Trusted Computing]] geht nicht, Lösung ist vTPM also virtualisiertes TPM durch einen Cluster von TPM-Modulen * Es sind (bisher) keine Snapshots auf Xen-Ebene möglich (Lösung: [[http://linuxczar.net/moin/XenWithSnaphots|LVM-Snapshots]]) * USB 2.0 ist nicht unterstützt (Stand 03/2007 könnte evtl. gefixt sein) * der Speicher des Images sollte von der VM nicht über Netzwerk angesprochen werden müssen, SAN o.ä. sind ok. * Hauptspeicher (der Gäste) kann nicht dynamisch zugeteilt werden. Die Dom-0 kann mit xm mem-set angepasst werden. ===== XenServer ===== * [[http://www.xensource.com/support/3.2/xenserver-userguide.html|Getting Started With XenServer 3.2]] ===== Sicherheitserweiterungen ===== * Trennung der Netzwerkfunktionen durch Custom Bridges * Device Driver Domain (nicht Xen paravirtualisiert eine einzelne Hardware sondern einer der Gäste, falls man im Treiber eine Kompromittierung der Dom0 befürchtet) * shype (s.u.) **[[http://streaming.linux-magazin.de/events/dfn-cert2007/rspenneberg/frames-java.htm|Vortrag Xen-Sicherheit]]** + [[http://www.dfn-cert.de/events/ws/2007/dfncert-ws2007-f8.pdf|Folien]]. ==== shype ==== [[http://www.itnewsbyte.com/de/articles/art226,,,.htm|shype]] ist ein von IBM entwickeltes [[wpde>Mandatory Access Control]] -System, auch ACM). shype erreicht eine Trennung von Reference Monitor und Access Control Policy und folgt der FLASK-Architektur (siehe [[http://www.tu-ilmenau.de/fakia/fileadmin/template/startIA/vsbs/lehre/itsvs/SS07/kap4.pdf|IT-Sicherheit in verteilten Systemen - Kapitel 4: Sicherheitsarchitekturen und Sicherheitsinfrastrukturen]]). Es ist standardmäßig nicht einkompiliert (kompilieren mit ACM_Security=yes) mit GUI: xensec_ezpolicy oder xensec_gen. Wenn Verzeichnis /etc/xen/acm-security/ existiert, ist das ACM bereits enthalten. ===== Links ===== * **[[http://chaosradio.ccc.de/cre092.html|Hervorragender Podcast über Virtualisierung]]** * **[[http://wiki.xensource.com/xenwiki/FrontPage|XenWiki]]** * [[http://www.xensource.com/|XenSource]] - bietet auch kommerzielle Produkte * [[http://www.xen4um.de/|deutsches Xenforum]] * [[http://www.linux-magazin.com/videos/virtualization_a_new_way_of_managing_workloads_and_servers|Vortrag: Virtualization - A New Way of Managing Workloads and Servers]] * [[http://www.serverwatch.com/tutorials/article.php/3641646|The Importance of Hypervisors]] * [[http://www.howtoforge.com/virtualization_with_xenexpress|Using XenExpress To Virtualize Your Server]] * [[http://www.linuxtoday.com/high_performance/2006072601226OSHLSV|Linux.com: Live Migration of Xen Domains]] * [[http://www.linuxtoday.com/high_performance/2006042701026INHLHE|SearchOpenSource: Data Center Dos and Don'ts: Virtualization]] * [[http://www.linuxtoday.com/high_performance/2006042600826OSHESV|SearchOpenSource: Xen in Action: Deploying Multiple Servers]] * [[http://skaya.enix.org/wiki/XenStats/|XenStats]] * [[http://www.heise.de/newsticker/meldung/8993|Xen 3.1: Bessere Virtualisierung mit Hardwareunterstützung]] * [[http://www.linux-magazin.de/heft_abo/ausgaben/2006/04/der_eigene_mini_mainframe| Der eigene Mini-Mainframe]] * [[http://www.novell.com/coolsolutions/feature/19745.html|NetWare Virtualized on Xen Tips]] ==== Paravirtualisierte Treiber für Windows ==== Paravirtualisierte Treiber für Windows sind bei XEN Enterprise dabei, für SLES gibt es diese optional zu kaufen. * [[http://www.meadowcourt.org/downloads/|Xen OpenSource Treiber]] * [[http://wiki.xensource.com/xenwiki/XenWindowsGplPv|Paravirtualisierte (freie) Treiber für Windows]] * [[http://apt.univention.de/download/addons/gplpv-drivers/|signed GPLPV drivers in Windows Xen instances]] (Blockgeräte und Netzwerk) [[http://wiki.univention.de/index.php?title=Installing-signed-GPLPV-drivers|Installationsanleitung]] ==== kommerzielle Dienste ==== * [[http://www.heise.de/newsticker/Amazon-vermietet-virtuelle-Server-auch-mit-Windows--/meldung/117894|Xen-Miete bei Amazon]] ==== Papers ==== * [[http://www.hpl.hp.co.uk/personal/Lucy_Cherkasova/projects/papers/final-perf-study-usenix.pdf|Measuring CPU Overhead for I/O Processing in the Xen Virtual Machine Monitor]] * [[http://www.cs.nps.navy.mil/people/faculty/irvine/publications/2000/VMM-usenix00-0611.pdf|Die Virtualisierungslücke: "Analysis of the Intel Pentium’s Ability to Support a Secure Virtual Machine Monitor"]] (PDF) * [[wp>Popek and Goldberg virtualization requirements]] ==== Zusatztools ==== * angepasste Treiber für [[windows:Windows]]: Novell ([[http://www.novell.com/de-de/products/vmdriverpack/|Virtual Machine Driver Pack]]) und XenSource (XenSource Windows Tools); nicht kostenlos erhältlich. * Physical-to-Virtual (P2V) Migration: Wandelt physikalisch vorhandene Server in eine virtuelle Maschine um. * [[http://tx.downloads.xensource.com/products/v2xva/README.txt|Virtual Disk Migration Utility]] (V2V): Konvertiert [[software:VMWare]]-Images zu XVA (Xen Virtual Appliance)-Images ==== Clustering ==== * [[http://www.clustermonkey.net/content/view/139/33/|Building A Virtual Cluster with Xen (Part One)]] * [[http://jailtime.org/download:contrib:cluster|Clustering Xen]] * [[http://www.golem.de/0812/64024.html|Hochverfügbarkeit für Xen mit kamari]] ==== Installation ==== * **[[http://www.pug.org/index.php/Xen-Installation|Xen-Installation]]** * **[[https://help.ubuntu.com/community/Xen#head-bf68767fe94da57927b9b249675ba10be61fcac5|Xen @ ubuntu documentation]]** * [[http://wiki.xensource.com/xenwiki/HowTos|Xen HowTos]] * [[http://www.howtoforge.com/debian_etch_xen_3.1|The Perfect Xen 3.1.0 Setup For Debian Etch (i386)]] * [[http://www.howtoforge.com/ganeti_xen_cluster_management_debian_etch|Xen Cluster Management With Ganeti On Debian Etch]] * [[http://free-electrons.com/community/howtos/raid-xen-ubuntu/|RAID + Xen on Ubuntu Edgy]] * [[http://www.linuxtoday.com/high_performance/2006072600626OSHLHE|ClusterMonkey: Building A Virtual Cluster with Xen (Part One)]][[http://www.linuxtoday.com/developer/2006101100626OSHLHE|(Part Two)]] * [[http://www.howtoforge.com/xen_tools_xen_shell_argo|Managing Xen With Xen-Tools, Xen-Shell, And Argo]] * [[http://wiki.xensource.com/xenwiki/DebianDomU|Xen Wiki (DebianDomU, LVM)]] * [[http://www.sapphirepaw.org/blog/index.php?/archives/120-Getting-Xen-up-and-running-part-I.html|Getting Xen up and running: part I]] [[http://www.sapphirepaw.org/blog/index.php?/archives/127-Xen-part-II.html|Part II]] * [[http://en.opensuse.org/Installing_Xen3|Installing Xen3]] * [[http://en.opensuse.org/How_to_Install_a_Xen_VM_Server|How to Install a Xen VM Server]] ===== Xenoppix ====== Ein mit [[xen:Xen]] angepasstes [[linux:Knoppix]] Xenoppix started mit automatischer Hardware-erkennung und aktiviert dann ein Gast-Betriebssystem (Plan9, [[bsd:bsd#NetBSD]] oder Xenoppix selbst) über X11 und VNC-Fullscreen.\\ Der Gast kann als Server arbeiten, da er eine IP über externes DHCP bekommt. http://unit.aist.go.jp/itri/knoppix/xen/index-en.html ===== EisXen ===== [[wpde>EisXen]] ist eine spezielle Xen-Distribution, die eine schnelle Einrichtung eines Xen-Servers erlaubt. * [[http://www.pro-linux.de/news/2006/10003.html|eisXen veröffentlicht]] * [[http://www.eisxen.org/geteisxen.html|Download eisXen]] * [[http://t3n.yeebase.com/magazin/ausgaben/artikel/von-null-auf-xen-in-10-minuten|Servervirtualisierung leicht gemacht mit eisXen]]