24.7 Manuelle Konfiguration 

Manchmal ist es nötig, vor der Installation von Gastsystemen eine grundlegende Struktur selbst anzulegen oder diese zumindest zu kontrollieren. Zu dieser Grundstruktur gehören neben einigen Verzeichnissen und den darin enthaltenen Konfigurationsdateien auch bestimmte Dateien, die wir als blockorientierte Geräte für den Betrieb der Gäste nutzen wollen.
Kompatibilität
Gerade bei der Verwendung von distributionsübergreifenden Werkzeugen zum Installieren von Xen-Gästen sollten Sie mit der nötigen Vorsicht zu Werke gehen. Einige Distributionen gehen mit wenig Gefühl für Kompatibilität zu Werke, so dass es notwendig sein kann, diese Grundstruktur selbst anzulegen oder zumindest den korrekten Betrieb zu überprüfen. Bei meinen Untersuchungen tragen Ubuntu und Fedora in Sachen Kompatibilität die rote Laterne.
Anlegen der Konfigurationsdateien
Beim Betrieb von Xen-Gästen müssen Sie prinzipiell drei Punkte überprüfen, die für eine korrekte Ausführung essentiell sind:
- das Vorhandensein und die korrekte Bezeichnung notwendiger Verzeichnisse
- das Vorhandensein von blockorientierten Geräten, die wir als Dateisysteme nutzen. Alternativ können natürlich auch reale Partitionen verwendet werden.
- das Vorhandensein und die korrekte/vollständige Syntax notwendiger Konfigurationsdateien
Verzeichnisse
Wir beginnen mit der Überprüfung und dem Einrichten des Heims für die Gäste. Wenn Sie eine Linux-Distribution mit SELinux verwenden, müssen Sie unbedingt darauf achten, dass die Verzeichnisse korrekt benannt sind.
Sie legen die nötigen Verzeichnisse wie folgt an:
sudo mkdir -p /var/xen/domains/<NAME> sudo cd /var/xen/domains/<NAME>/ sudo mkdir imagemount
Blockorientierte Geräte
Wir arbeiten an dieser Stelle mit einfachen Dateien, die wir als blockorientierte Geräte verwenden wollen. Dies hat gegenüber der Verwendung von realen Partitionen den Vorteil einer wesentlich größeren Flexibilität.
Sie legen diese Dateien so an:
sudo dd if=/dev/zero of=./disk.img bs=1024k count=2048 sudo dd if=/dev/zero of=./swap.img bs=1024k count=256 sudo mkfs.ext3 disk.img sudo mkswap swap.img
Beim Aufruf der dritten Zeile mkfs.ext3 disk.img erhalten Sie eine Warnung, dass die Datei disk.img kein korrektes blockorientiertes Gerät ist. Bei der Nachfrage, ob Sie den Vorgang trotzdem fortsetzen möchten, antworten Sie mit y.
Zum Abschluss muss dieses blockorientierte Gerät an der vorbereiteten Stelle (siehe oben) in den Verzeichnisbaum eingebunden werden. Dies erledigen Sie mit folgendem Befehl:
sudo mount -o loop disk.img imagemount/
Konfigurationsdateien
Als Letztes wollen wir uns den Konfigurationsdateien widmen. Prinzipiell können diese an beliebiger Stelle im Dateisystem liegen, wenn die darin enthaltenen dateibezogenen Angaben absolute Pfade enthalten.
Es ist in der Praxis allerdings sinnvoll, sich an bestimmte Verzeichnisse und Konventionen zu halten. Zwei Verzeichnisse sind bei der Positionierung der Konfigurationsdateien besonders sinnvoll:
- Wenn Sie an jeder beliebigen Stelle des Dateisystems virtuelle Maschinen starten möchten, ohne sich über den Speicherort der Gäste Gedanken machen zu müssen, sollten sich alle Konfigurationsdateien im Verzeichnis /etc/xen befinden. Dort sucht der Befehl xm create diese Dateien, wenn sie nicht in dem Verzeichnis zu finden sind, in dem das Kommando ausgeführt wurde.
- Es ist oftmals von Vorteil, wenn Sie alle Dateien, die zu einer virtuellen Maschine gehören, an einem gemeinsamen Ort speichern. In unserem Fall ist dies das eben erstellte Verzeichnis /var/xen/domains/<NAME>/. Diese Vorgehensweise drängt sich gerade bei der Verwendung von Dateien als blockorientierten Geräten auf, da so ein einfaches Migrieren wesentlich erleichtert wird.
Bei der zweiten Variante müssen Sie erheblich mehr Aufmerksamkeit auf die korrekte Angabe aller Dateipfade verwenden. Da Sie hierbei mehr lernen, werden wir uns die Konfigurationsdateien für einen solchen Fall im Folgenden etwas genauer ansehen.
config
Zuerst sollten Sie die grundlegende Konfigurationsdatei mit dem Namen in diesem Verzeichnis anlegen:
sudo nano /var/xen/domains/>NAME>/config
Der Inhalt sollte folgendermaßen aussehen:
kernel='/boot/vmlinuz-2.6-xen' ramdisk='/boot/initrd.img-2.6-xen' memory = 64 name = ''<NAME>'' vif = [''] disk = [ 'file:/var/xen/domains/<NAME>disk.img,xvda1,w', 'file:/var/xen/domains/>NAME>/swap.img,xvda2,w' ] root = ''/dev/xvda1 ro''
Die Bezeichnung des Kernels und der Initrd können selbstverständlich bei Ihnen abweichen. Die genauen Bezeichnungen können Sie im Verzeichnis /boot nachsehen.
Der richtige Kernel
Wenn Sie mehrere in Frage kommende Kernel installiert haben, können Sie sich diese mit
sudo find /boot -name "vmlinuz-*xen*"
anzeigen lassen. Sie erhalten in der Regel zu jedem installierten Kernel bis zu drei »Treffer«. Hierbei handelt es sich nur bei einem Pfad um den gesuchten Kernel, bei den anderen beiden haben wir es mit symbolischen Links auf diesen Kernel zu tun. Sie erkennen die symbolischen Links an der gekürzten Schreibweise.
Wenn Sie Ihre Xen-Installation »update-sicher« gestalten wollen, verwenden Sie als Konfigurationszeile den Pfad zu einem symbolischen Link. In diesem Fall müssen Sie bei einem vorhandenen Sicherheits-Update für Ihren Kernel nicht sämtliche Konfigurationsdateien erneut anpassen.
Die richtige Initrd
Bei der Suche nach der richtigen Initial RAM Disk (Initrd) können Sie genauso verfahren:
sudo find /boot -name "initrd.img-*xen*"
Sie können auf die Angabe einer Initrd ganz verzichten, wenn Sie für den Gast einen Kernel verwenden, in dem alle nötigen Treiber fest einkompiliert sind.
Verschiedene Kernel für Host und Gast
Normalerweise liefern alle Linux-Distributionen für den Host und den Gast nur einen einzigen Kernel und eine Initrd mit. Selbstverständlich können Sie aber auch unterschiedliche Kernel und Initrd-Dateien verwenden. In einem solchen Fall müssen Sie beim Eintragen der betreffenden Konfigurationszeile auf den richtigen Pfad zum betreffenden Kernel/Initrd achten. Am besten ist es, wenn Sie die Kernel mit unterschiedlichen Bezeichnungen versehen haben, beispielsweise mit xen0 für die privilegierte Domain0 (Host) und mit xenU für die unprivilegierte DomainU (Gast).
Element | Beschreibung |
pae |
Gibt die Konfigurationsdaten der physikalischen Adresserweiterung an. |
apic |
Gibt die Konfigurationsdaten des erweiterten, programmierbaren Interrupt-Controllers an. |
memory |
Gibt die Speichergröße in Megabytes an. |
vcpus |
Gibt die Anzahl der virtuellen CPUs an. |
console |
Gibt die Portnummern an, an die die Konsolen der Domain exportiert werden. |
nic |
Gibt die Anzahl der virtuellen Netzwerkschnittstellen an. |
vif |
Listet die zufällig zugewiesenen MAC-Adressen und Brücken (Bridges) auf, die zur Verwendung mit den Netzwerkadressen der |
Domain zugewiesen wurden. |
|
disk |
Listet die Blockgeräte auf, die für die Domain exportiert werden sollen, und exportiert physikalische Geräte für eine Domain mit schreibgeschütztem Zugriff. |
dhcp |
Aktiviert das Netzwerk unter Verwendung von DHCP. |
netmask |
Gibt die konfigurierten IP-Netzmasken an. |
gateway |
Gibt die konfigurierten IP-Gateways an. |
acpi |
Gibt die Konfigurationsdaten der ACPI-Schnittstelle an. |
Variablen
Die Xen-Konfigurationsdateien enthalten unter anderem die Standardvariablen aus der Tabelle. Bei der Bearbeitung dieser Konfigurationselemente müssen Sie darauf achten, dass die Variablen in Anführungszeichen (") stehen. Die Konfigurationsdateien befinden sich im Verzeichnis /etc/xen.