Wenn Ihr XEN installiert (XEN installation) habt, könnt Ihr mit den folgenden Befehlen eure virtuellen Maschinen verwalten.
Linux Gastsystem installieren
Hier wird beschrieben, wie man ein Linux Gastsystem installiert.
Auf ein reelles Dateisystem installieren
Ist auf der Festplatte noch genug Platz für weitere Partitionen, kann man auf diesen ganz einfach das Betriebssystem über eine Bootfähige CD installieren.
Warnung: Der Bootmanager darf NICHT in den MBR geschrieben werden, da XEN das virtuelle Linux starten soll und nicht GRUB |
Für weitere VM's kann das installierte Linux auch kopiert werden.
Installieren in einem Image
Als erstes erstellen wir einen Ordner, in dem die Images gespeichert werden sollen.
Wir nehmen dafür jetzt einfach mal /var/images
mkdir /var/images
Images erstellen
Festplatten Image anlegen
Jetzt legen wir ein Festplattenimage an, dass wir in diesem Beispiel vm1disk nennen.
Als Größe verwenden wir in diesem Beispiel 1GB und formatieren dieses mit ext3:
dd if=/dev/zero of=/var/images/vm1disk bs=1024k count=1024 mkfs.ext3 /var/images/vm1disk
SWAP-Image anlegen
Als nächstes legen wir einen SWAP-Speicher mit der Größe von 256MB an:
dd if=/dev/zero of=/var/images/vm1swap bs=1024k count=256 mkswap /var/images/vm1swap
Notiz: Das count wird in MB angegeben! |
Image in das Hostsystem einbinden
Jetzt müssen wir das Festplattenimage in das Hostsystem einbinden, dies geschieht mit dem folgendem Befehl, zuerst legen wir aber dafür in /mnt einen Ordner an:
mkdir /mnt/disk mount -o loop /var/images/vm1disk /mnt/disk
Jetzt können wir die Betriebssystemdateien in das Image kopieren.
Installation von Debian über "debootstrap"
Installation von "debootstrap"
Das installieren von debootstrap geschieht mit dem folgendem Befehl:
apt-get install debootstrap
Installieren von Debian Lenny über "debootstrap"
Um Debian Lenny 32Bit über debootstrap zu installieren benutzen wir den folgenden Befehl:
debootstrap --arch i386 lenny /mnt/disk http://ftp.de.debian.org/debian/
Der Befehl besitzt die folgenden Parameter:
--arch = gibt die Architektur an, z.B. i386 für 32Bit oder amd64 für 64Bit.
Als nächstes folgt die Betriebssystemversion, z.B. etch, lenny oder sid
Danach folgt der Ordner, wohin es heruntergeladen werden soll, z.B. /mnt/disk
Als letztes folgt der Mirror-Server von dem das Image herunter geladen werden soll, z.B. http://ftp.de.debian.org/debian/
Konfigurieren des installierten Debian Lenny
In das Image mit chroot wechseln
Jetzt wechseln wir mit unserer Konsole in das Image, dies geschieht mit dem folgendem Befehl:
chroot /mnt/disk /bin/bash
Damit wir die Shell nicht verwechseln markieren wir diese mit einem (chroot):
export PS1="(chroot) $PS1"
Hostnamen setzen
Den Hostnamen der virtuellen Maschine kann in der Datei /etc/hostname gesetzt werden.
IP-Adresse setzen
Die IP-Adresse muss in /etc/network/interfaces gesetzt werden, dies kann z.B. so aussehen:
auto lo iface lo inet loopback
auto eth0 iface eth0 inet static address 192.168.1.11 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.1
Debian-Repo-Sources anpassen
In der Datei /etc/apt/sources.list können jetzt noch die Debian Repos angepasst werden.
fstab anpassen
Als nächstes müssen wir in dei Datei /etc/fstab folgendes rein schreiben:
/dev/sda1 / ext3 errors=remount-ro 0 1 /dev/sda2 none swap sw 0 0 proc /proc proc defaults 0 0
tls deaktivieren
Wie auch auf dem Hostsystem sollte man auch auf dem Gastsystem tls deaktivieren.
Notiz: Die Datei existiert nicht unter jedem System! |
mv /lib/tls /lib/tls.disabled
SSH-Server installieren
Damit wir nachher auf die virtuelle Maschine zugreifen können, installieren wir noch einen SSH-Server.
Dies geschieht mit dem folgendem Befehl:
apt-get install openssh-server
Notiz: Vorher muss wahrscheinlich noch die Paketliste mit apt-get update neu geladen werden! |
Das chroot verlassen
Jetzt müssen wir das chroot wieder verlassen, dies geschieht einfach mit
exit
Einbindung des Images lösen
Jetzt müssen wir die Einbindung des Images wieder lösen.
Dies geschieht mit dem folgendem Befehl:
umount /mnt/disk
VM starten
Als erstes erstellen wir in /etc/xen eine Konfigurationsdatei mit dem Namen unserer VM, in unserem Beispiel heißt diese xenvm1.
Hier ist ein Beispiel-Inhalt:
kernel = "/boot/vmlinuz-2.6.26-1-xen-686" ## RAM-Speicher Zuweisung (in Megabyte) für die neue Domain memory = 128 ## Name des virtuellen Servers name = "xenvm1" ### Liste von zugewiesenen Partitionen oder Imagedateien ## Eintrag für oben genannte debootstrap-Beispiel mit Image. disk = [ 'file:/var/images/vm1disk,sda1,w', 'file:/var/images/vm1swap,sda2,w' ] ## Beispiel für reale Partitionen #disk = [ 'phy:hda7,sda1,w', 'phy,sda2,w' ] root = "/dev/sda1 ro"
Und dies sind die Parameter:
kernel gibt den zu verwendenden Kernel an,
memory gibt den RAM in MB an,
name gibt den Namen der VM an,
disk gibt das Laufwerk/Image von dem Dateisystem und dem SWAP an.
und root gibt das Rootdateisystem für die VM an.
Damit eine VM gestartet werden kann, muss der XEN-Daemon gestartet werden, falls dies noch nicht getan wurde.
Dies geschieht mit:
xend start
Zum starten der VM geben wir jetzt den folgenden Befehl ein:
xm create -c xenvm1 -vmid=1
Die Parameter dazu sind:
xenvm1 ist der Name der Konfigurationsdatei, vmid ist eine eindeutige Nummer der VM
Jetzt sollte man in der Konsole der VM gelandet sein, falls kein Fehler aufgetreten ist.
Um das Basis-System zu konfigurieren gibt man den folgenden Befehl ein:
base-config
VM automatisch starten
Wenn die VM automatisch beim Systemstart gestartet werden soll, dann muss eine Verknüpfung zur Konfigurationsdatei in den Ordner /etc/xen/auto/ erstellt werden.
Dies geschieht mit:
ln -s /etc/xen/xenvm1 /etc/xen/auto/
Administration der VMs
xm
xm ist das Hauptprogramm zur Verwaltung von XEN-VMs.
Wir haben es bereits oben benutzt um die VM zu starten, aber es kann auch wesentlich mehr.
xm list
Wenn man den folgenden Befehl eingibt
xm lst
sollte eine Ausgabe wie folgt kommen:
Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 64 1 r----- 112.0 xenvm1 3 128 1 ------ 27.4
Erläuterung der einzelnen Spalten:
Name = Name der VM
ID = Eindeutige ID der VM
Mem(MiB) = Arbeitsspeicher der VM
VCPUs = Anzahl der zugewiesenen CPUs
State = Status der VM. Hier gibt es folgende: r = laufend, b = blockiert, p = pausiert, s = heruntergefahren, c = abgestürzt
Time(s) = Verbrauch von CPU-Rechenzeit in Sekunden
Eine detailliertere Ausgabe erhält man mit:
xm list -l
xm console
Mit diesem Befehl wechselt man zur Konsole der VM.
Mit dieser sieht man, was man sehen würde, wenn man wirklich an diesem PC sitzen würde.
Mit <Strg>+<F5> kann man diese wieder verlassen!
Beispel:
xm console 3
Die 3 ist dabei die ID der VM!
xm shutdown
Mit diesem Befehl kann man eine VM herunterfahren.
Beispiel:
xm shutdown 3
Die 3 ist wieder die ID der VM!
xm mem-set
Mit diesem Befehl kann man den Arbeitsspeicher für die VM ändern.
Beispel:
xm mem-set 3 256
Die 3 ist wieder unsere ID und die 256 sind die MB an RAM.
Der geänderte zugewiesene Speicher kann erst nach einem Neustart der VM benutzt werden.
xm new
Dieser Befehl fügt eine neue VM zum XEN VM Management hinzu.
Beispiel:
xm new xenvm1
xenvm1 ist hierbei die Konfigurationsdatei.
xm delete
Dieser Befehl löscht eine VM vom XEN VM Management.
Beispiel:
xm delete xenvm1
Wobei xenvm1 wieder unsere Konfigurationsdatei ist.
xm destroy
Bricht eine VM sofort ab.
Beispiel:
xm destroy xenvm1
xenvm1 ist wieder unsere Konfigurationsdatei.
xm dump-core
"Dump Core" für eine VM.
Beispiel:
xm dump-core -L xenvm1 xenvm1.dmp
xenvm1 ist wieder unsere Konfigurationsdatei.
-L bzw. --live bedeutet, dass die VM nicht pausiert wird.
-C bzw. --crash bedeutet, dass die VM nach Beendigung des dump-Vorgangs abstürzen soll.
xenvm1.dmp ist der Dateiname des Images.
xm migrate
Migriert eine VM auf eine Maschiene.
Beispiel:
xm migrate -l xenvm1 xensys2
-l bzw. --live bedeutet, dass die Migration live stattfinden soll.
-p=NUM bzw. --port=NUM setzt einen speziellen Port.
-r=MBIT bzw. --ressource=MBIT begrenzt die Geschwindigkeit der Migration.
xensys2 ist der Hostname des Zielsystems.
xm pause
Pausiert eine VM.
Beispiel:
xm pause xenvm1
xenvm1 ist wieder unsere Konfigurationsdatei.
xm reboot
Startet eine VM neu.
Beispiel:
xm reboot xenvm1
xenvm1 ist wieder unsere Konfigurationsdatei.
xm resume
Setzt eine VM wieder fort.
Beispiel:
xm resume xenvm1
xenvm1 ist wieder unsere Konfigurationsdatei.
-p bzw. --paused bedeutet, dass die VM nach dem fortsetzten nicht unpausiert wird.
xm save
Erstellt ein Backup von einer VM.
Beispiel:
xm save -c xenvm1 xenvm1.bak
-c bzw. --chechpoint bewirkt, dass die VM am laufen bleibt, nachdem das Backup erstellt wurde.
xenvm1 ist wieder unsere Konfigurationsdatei.
xm shell
Startet eine interaktive Shell.
Beispiel:
xm shell
xm start
Startet eine VM.
Beispiel:
xm start xenvm1
xenvm1 ist wieder unsere Konfigurationsdatei.
-p bzw. --paused bewirkt, dass die VM nicht geunpaused wird, nachdem sie gestartet wurde.
-c bzw. --console_autoconnect bewirkt, dass man sofort nach dem starten in der Konsole der VM landet.
xm suspend
Friert eine VM ein.
Beispiel:
xm suspend xenvm1
xenvm1 ist wieder unsere Konfigurationsdatei.
xm top
Zeigt Statistiken über Host und VM in Echtzeit.
Beispiel:
xm top
xm unpause
Setzt eine pausierte VM wieder fort.
Beispiel:
xm unpause xenvm1
xenvm1 ist wieder unsere Konfigurationsdatei.
xm uptime
Zeit die Laufzeit aller oder einer VM an.
Beispiele:
xm uptime
oder
xm uptime xenvm1
xenvm1 ist wieder unsere Konfigurationsdatei.
xm vcpu-set
Setzt die Anzahl der aktiven VCPUs einer VM.
Beispiel:
xm vcpu-set xenvm1 2
xenvm1 ist wieder unsere Konfigurationsdatei. 2 ist die Anzahl der CPUs.
Grafische Administration
Es gibt auch grafische Tools, mit denen man XEN steuern kann.
Hierbei gibt es kostenpflichtige wie vadmin
und kostenlose wie ConVirt