Der erste Gedanke, warum die Kombination von LVM und Xen für einen Desktop-Rechner interessant sein kann, erschließt sich zu Beginn nicht gleich. Denn wer benötigt schon einen Logical Volume Manager, der einem dynamische Partitionen zur Verfügung stellt und eine Software zur Virtualisierung weiterer Betriebssysteme? Doch wird deren Einsatz genauer betrachtet, kann man selbst reichlich davon profitieren. Warum ich mich selbst dafür entschieden habe und wie die Installation und Konfiguration durchzuführen ist, soll der folgende Artikel etwas näher darstellen.
Der Grund, meinen jetzt schon fast drei Jahre alten Barebone SN95G5 von Shuttle komplett neu zu installieren, liegt daran, dass ich trotz der nun schon lange dauernden Eingewöhnungsphase mit meinem MacBook, mit diversen Eigenheiten nicht zurecht komme. Erwähnt sollen hier in aller Kürze nur zwei sein:
- Entwickler haben beim Tastaturlayout des Mac klar das Nachsehen. Es fehlt der bequeme Zugriff auf diverse Zeichen, die für die Programmierung benötigt werden. So sind wichtige Tasten wie {[]}/\~ nur schwer über die deutsche Tastatur erreichbar. Klarer Vorteil für Standard-Benutzer, jedoch ich fühle mich behindert.
- Da ich aufgrund meiner Arbeit sehr viel mit der Shell arbeiten muss und auch den Midnight Commander für unverzichtbar halte, ist mir die Bedienung besonders wichtig. Doch hier patzt Mac OS X auch. Es fehlen Tasten für ein flüssiges und effizientes Arbeiten. So gibt es beim Bearbeiten von Dateien unter mc keine Möglichkeit mit Pos 1 an den Anfang bzw. mit Ende an das Ende einer Datei zu springen.
Weiterhin habe ich den Bedarf, Software unter verschiedenen Versionen eines bzw. sogar unter verschiedenen Betriebssystemen zu testen und möchte aufgrund der zu installierenden Bibliotheken nicht mein Desktop-Betriebssystem verwenden. Ebenfalls soll ein LAMP-System innerhalb einer abgesicherten Umgebung laufen, ohne das auftretende Sicherheitslöcher meinen Desktop gefährden. Und zuletzt möchte ich diese Umgebungen leicht auf andere Rechner transferieren können, ohne jedes Mal ein neues System installieren zu müssen.
Leider war mir bereits von Anfang an klar, dass ich mit der aktuellen Konfiguration nur eine Paravirtualisierung erreichen kann. Der eingebaute Prozessor AMD Athlon(tm) 64 Processor 3200+ besitzt keine Pacifica-Erweiterung und für den Einbau eines AMD X2 hätte ich neben dem Board auch das Mainboard und den Speicher wechseln müssen. Da jedoch alle meine Testsysteme auf Linux basieren und sich deren Kernel anpassen lässt, habe ich nicht mehr über eine Aufrüstung nachgedacht.
Die Entscheidung für Xen als Software zur Paravirtualisierung war schnell gefällt. Alternativen wie linux-vserver oder openvz verwenden für die Gastsysteme generell nur den Kernel des Wirtssystems, was deren Einsatz ausschloss. Gleiches gilt für VMware und Virtualbox, die nicht wie Xen unterhalb des Betriebssystemkernels ansetzen und somit langsamer laufen. Ein auch sehr großer Vorteil ist, dass es Xen unter Ubuntu 7.04 als fertiges Paket gibt, das nur noch installiert werden muss. Damit ist Xen eindeutiger Sieger.
Doch wo werden die Daten der Gastsysteme abgelegt? Hier gibt es zwei Möglichkeiten. Entweder es werden Images verwendet, die alle Dateien des Gastes innerhalb einer Datei zusammenfassen, was Geschwindigkeitseinbußen mit sich bringt. Oder es werden eigenständige Partitionen verwendet. Damit wird eine native Schreibgeschwindigkeit erreicht und selbst während der Gast läuft, kann man Einblick in sein Dateisystem erhalten. Normale Partitionen sind dafür jedoch nicht zu empfehlen, da es nicht einfach ist, diese nachträglich in der Größe anzupassen, ohne andere Partitionen zu beeinflussen. Wie die dynamischen Datenträger unter Windows gibt es für Linux den Logical Volume Manager. Mit ihm ist es möglich, mehrere Festplatten zu einer Volume Group (VG) zu verbinden und Logical Volumes (LV) auch plattenübergreifend anzulegen.
Aber genug der Einleitung – kommen wir zum eigentlichen Thema – der Installation von LVM und Xen unter Ubuntu 7.04 (Feisty Fawn)…
Installation von Ubuntu 7.04
Um den LVM unter Ubuntu verwenden zu können, wird die Alternate-CD benötigt, denn die Desktop-CD enthält nicht die notwendigen Pakete! Zum Download für verschiedene Architekturen steht Sie hier bereit und ist etwas größer als die Desktop-CD. Sobald die CD gebrannt ist, kann der Rechner neu gestartet werden und er sollte von der CD booten. Nach Auswahl der Spracheinstellungen startet die Auswahl des ersten Menü-Eintrages den Installationsassistenten. Im Gegensatz zur Desktop-CD kommt hier noch die textbasierte Variante zum Einsatz, was aber keine Einbußen mit sich bringt, da auch mit diesem Installer alle Einstellungen übersichtlich durchgeführt werden können. Nach der Netzwerkkonfiguration und der Eingabe des Rechnernamens kommt der wichtigste Teil – die Partitionierung der Festplatte. Für den ersten Test ist sicherlich die geführte Variante mit Verwendung des LVM hilfreich. Die Größen der notwendigen Partitionen werden dabei automatisch bestimmt. Bei mir endete diese Variante leider in einer normalen Boot-Partition und einem Root-LV, das neben dem Swap-LV die gesamte Physical Volume belegte. Da ich meine Benutzerdaten jedoch getrennt von der Software haben möchte, wählte ich beim zweiten Mal die manuelle Variante. Folgende Partitionierung habe ich gewählt:
Partition | Größe | Dateisystem | Mount Point |
---|---|---|---|
/dev/sda1 | 236M | ext3 | /boot |
/dev/sda2 | 152GB | vlm | vg01 |
/dev/vg01/swap | 2GB | swap | |
/dev/vg01/root | 6GB | ext3 | / |
/dev/vg01/home | 5GB | ext3 | /home |
/dev/vg01/shared | 100GB | ext3 | /shared |
Wie zu erkennen ist, wurde nicht die gesamte Größe der Volume Group ausgenutzt, da für die Xen-Gastsysteme noch Platz benötigt wird. Die Boot-Partition muss außerhalb des LVM liegen, da sonst das Booten des Systems fehlschlägt. Bei der Root- und Swap-Partition kann es sich jeder selbst überlegen, ob sie in den LVM gehören. Bei auftretenden Problemen wird die Fehlerbehebung jedoch erschwert, da nicht direkt auf die Partitionen zugegriffen werden kann! Die Installation kann anschließend normal zu Ende geführt und das System neu gestartet werden.
Achtung: Die obige Installations-Prozedur musste ich aufgrund verschiedener Bugs im Installer 5x wiederholen, da er ständig mit Fehlern abgebrochen hat. Auch für das Aktivieren des LVM und das Anlegen eines Logical Volumes brauchte er jeweils ca. 4 Minuten, währendessen der Installer zu hängen schien. Hier sind auf alle Fälle noch Verbesserungen notwendig!
Nun sollte ein lauffähiges System existieren. Für diverse Anpassungen der Oberfläche oder Installation weiterer Treiber sind die Tutorials auf ubuntuusers.de hilfreich, so dass ich nicht weiter darauf eingehen werde.
Installation und Konfiguration von Xen 3
Mit Erscheinen von Ubuntu 7.04 gibt es nun auch zum ersten Mal ein Meta-Paket, dass alle notwendigen Pakete installiert. Für einen Desktop-Rechner kann mit dem folgenden Befehl das Xen-System installiert werden:
# apt-get install ubuntu-xen-desktop
Damit werden die Pakete bridge-utils, libc6-xen, libxen3.0, python-xen3.0, xen-docs-3.0, xen-hypervisor-3.0-i386, xen-ioemu-3.0, xen-tools, xen-utils-3.0, xenman und xen-image-2.6.19-4-generic heruntergeladen, installiert und eingerichtet. Es ist keine weitere Arbeit notwendig. Ein Neustart des Systems sollte Ubuntu jetzt als Wirtssystem an die Domäne 0 (dom0) binden:
# uname -a
Linux marvin 2.6.19-4-generic #2 SMP Thu Apr 5 06:06:18 UTC 2007 i686 GNU/Linux
# xm list
Name ID Mem(MiB) VCPUs State Time(s)
Domain-0 0 865 1 r----- 2334.1
Jetzt sollte zuerst Xen an die eigenen Bedürfnisse konfiguriert werden. Bearbeiten sie dazu die Datei /etc/xen/xend-config.sxp, um globale Einstellungen festzulegen. Da die Gastsysteme auf einem Desktop-Rechner meist über nur eine Netzwerkkarte verfügen, ist die Anbindung der Gäste über eine Bridge zu empfehlen. Dazu sollte (network-script network-bridge) auskommentiert und (network-script network-dummy) herausgenommen werden. Mit einem Neustart des xend-Dämons werden die neuen Einstellungen übernommen:
# /etc/init.d/xend restart
Restarting XEN: xend.
Neues Gastsystem erstellen
Das Erstellen von neuen Gastsystemen wird mit den installierten XenTools wesentlich vereinfacht. Sie erstellen auf Wunsch automatisch neue Logical Volumes für das System und dem Swap-Speicher, laden alle für das neue System notwendigen Pakete herunter und installieren sie und richten das System ein. Doch dazu sollten zuerst die Einstellungen angepasst werden:
# /etc/xen-tools/xen-tools.conf
# Output directory for storing loopback images.
##
# dir = /home/xen
# If you don't wish to use loopback images then you may specify an
# LVM volume group here instead
##
lvm = vg01
# Installation method.
##
# copy = /path/to/pristine/image
debootstrap = 1
# rpmstrap = 1
# tar = /path/to/img.tar
# Command definitions.
##
# --copy:
# copy-cmd = /bin/cp -a $src/* $dest
#
# --tar:
# tar-cmd = /bin/tar --numeric-owner -xvf $src
# Disk and Sizing options.
##
size = 5Gb # Disk image size.
memory = 128Mb # Memory size
swap = 128Mb # Swap size
# noswap = 1 # Don't use swap at all for the new system.
fs = ext3 # use the EXT3 filesystem for the disk image.
dist = etch # Default distribution to install.
image = sparse # Specify sparse vs. full disk images.
# Currently supported and tested distributions include:
#
# sid - Debian
# sarge - Debian
# etch - Debian
# dapper - Ubuntu
# centos4 - CentOS 4
# fedora-core4 - Fedora Core 4 (codname stentz)
# Networking setup values.
##
gateway = 192.168.123.254
netmask = 255.255.255.0
# Uncomment this if you wish the images to use DHCP
##
# dhcp = 1
##
# Misc options
##
# Uncomment the following line if you wish to disable the caching
# of downloaded .deb files when using debootstrap to install images.
##
# cache = no
# Uncomment the following line if you wish to interactively setup
# a new root password for images.
##
passwd = 1
# If you'd like all accounts on your host system which are not present
# on the guest system to be copied over then uncomment the following line.
##
# accounts = 1
# Default kernel and ramdisk to use for the virtual servers
##
kernel = /boot/vmlinuz-`uname -r`
initrd = /boot/initrd.img-`uname -r`
# The architecture to use when using debootstrap or rpmstrap.
##
# arch=i386
# The default mirror for debootstrap which can be used to install
# Debian Sid, Sarge, and Etch.
##
mirror = http://ftp.us.debian.org/debian/
# A mirror suitable for use when installing the Dapper release of Ubuntu.
##
# mirror = http://gb.archive.ubuntu.com/ubuntu/
# Uncomment if you wish newly created images to boot once they've been
# created.
##
# boot = 1
Die obigen Einstellungen sind auf meine Vorgaben bezogen. Netzwerkeinstellungen und Auswahl des jeweiligen Systems sind selbst anzupassen. Sollte wie in diesem Falle auch debootstrap verwendet werden, um das Basissystem zu installieren, so ist das Paket zuerst zu installieren:
# apt-get install debootstrap
Jetzt kann ein neuer Gast mit Debian Etch als Betriebssystem erstellt werden:
# xen-create-image --hostname web --ip 192.168.123.2
Nach etwa 5min sollten zwei neue Logical Volumes existieren, die das installierte Basissystem und den Swap-Speicher enthalten:
# lvdisplay | grep web
LV Name /dev/vg01/web-disk
LV Name /dev/vg01/web-swap
Der Gast wird mit
xm create web.cfg -c
gestartet und gleichzeitig zu dessen Konsole gewechselt. Nach dem Einloggen mit dem bereits vorgegebenen Passwort, kann das Basissystem angepasst und je nach Bedarf weitere Pakete (z.B. ssh, apache, etc.) installiert werden. Soll der Gast automatisch beim Start des Rechners gestartet werden, so ist ein Sym-Link auf dessen Konfigurationsdatei im Verzeichnis /etc/xen/auto abzulegen.
Ich hoffe, dass durch diese Anleitung doch ein paar Ubuntu-Benutzer die Möglichkeiten von LVM ausnutzen möchten und freue mich auf Feedback und Hinweise.
Update: Die Verwendung von Xen 3.0.3 kann ich leider doch nicht so uneingeschränkt Neueinsteigern in Linux empfehlen. Zum Einen müssen Besitzer eines AMD-Prozessors mit PowerNow-Feature auf die dynamische Anpassung des Prozessortaktes verzichten, solange sie nicht diesen Patch einspielen und Xen selbst kompilieren. Ähnliches trifft auf den Nvidia-Treiber zu, für den zum Bauen des Moduls zuerst die Kernel-Header installiert werden müssen. All dies hat jedoch keinen Einfluss auf die Verwendung von LVM.
Guten Morgen,
diese Webseite hat mir viel geholfen, meiner Lösung näher zu kommen: es gilt, eine alte SuSE7.0-Installation UNmodified zu virtualisieren. (Der LVM-Link funzt nicht (404), also mache ich’s normal; geht ja auch).
Es war ja meine Hoffnung, daß sich Ubuntu dazu eignet, und den entscheidenden Hinweis habe ich NUR HIER gefunden (das apt-get…)!
Jetzt gilt es, das Gastsystem einzurichten.
Vielen Dank für’s Aufschreiben all dieser Info!!
Herzliche Grüße aus KarlsDORF,
Klaus Beck
Guten Tag
Hab mir gerade nen neuen HP DL380 G5 mit VMWare ESX Starter angeschafft. Tolle Sache. Die Kleinigkeit, dass zur Verwendung von mehr als einem Core per Guest der 4-fache Lizenzpreis entrichtet werden muss, hat mich hier hingebracht. Xen mutet interessant an,
Ein Ubuntu Gast ist geplant und scheint ja kein Problem zu sein aber hat jemand Erfahrungen mit Windows Server 2003 und W2K als Gastsystem?
Marcel Härry
Bis jetzt kann ich leider noch nicht auf eigene Erfahrung zurückgreifen, da mein aktueller PC nur einen Core besitzt und die Hardware-Virtualisierung somit nicht unterstützt. Das wird sich jedoch auch bald ändern. In spätestens einem Monat soll der aktuelle Prozessor gegen einen AMD X2 ausgetauscht werden. Dann werde auch ich basierend auf Xen versuchen, Windows XP als HVM-Gast einzurichten. Im Netz gibt es dazu bereits etliche Tutorials.
Danke für dieses Howto. Nach Problemen mit einem XEN-Setup (unter Etch) habe ich hier auf Anhieb meinen Fehler bemerkt. Ich habe vergessen für die XEN-Instanzen Platz auf der Festplatte freizuhalten … 🙁
Jetzt läuft alles. 🙂
Hallo zusammen,
also Windows 2003 und XP läuft da problemlos…. Ich administriere aktuell bei einem Kunden ca 150 Windosen….
Das ganze ohne wirklich Probleme – zumindest linux-seitig 🙂 Windowsseitig brauchts leider alle 2-3 Monate mal n Neustart – Redmond halt 🙂
Das ganze läuft jetzt schon ne ganze Weile orderntlich stabil…. Lustig sind dann so Sachen wie
xm migrate irgendwas –live
Da kommt fast schon VI3-Atmosphäre auf 🙂
Ansonsten kann ich auch jedem openqrm empfehlen – die optimale Management-Lösung für heterogene Netzwerke – openqrm.org
Grüßle
Thomas
müsste in der xen-tools.conf nicht der xen kernel eingetragen werden?
gruß
panos
Richtig. Danke für die Berichtigung. Da sind mir wirklich die falschen Zeilen hineingeraten. Hab es aktualisiert.
[…] traditionellen Partitionen. Allerdings werde ich auch das