Unterschiede zwischen den Revisionen 20 und 37 (über 17 Versionen hinweg)
Revision 20 vom 2009-05-13 18:05:55
Größe: 7829
Autor: BodoBellut
Kommentar:
Revision 37 vom 2012-09-23 18:13:31
Größe: 12454
Autor: BodoBellut
Kommentar:
Gelöschter Text ist auf diese Art markiert. Hinzugefügter Text ist auf diese Art markiert.
Zeile 1: Zeile 1:
<<TableOfContents>>
Zeile 45: Zeile 47:

Die ersten beiden Zeilen sind selbsterklärend, die dritte Zeile (''serial_device'') sorgt dafür, dass in der DomU ein getty auf ''hvc0'' eingetragen wird statt auf ''tty1'' oder ''ttyS0''.
  * disk_device = xvda

Die ersten beiden Zeilen sind selbsterklärend, die dritte Zeile (''serial_device'') sorgt dafür, dass in der DomU ein getty auf ''hvc0'' eingetragen wird statt auf ''tty1'' oder ''ttyS0'' und die vierte Zeile (''disk_device'') schliesslich sorgt dafür, dass virtuelle Blockgeräte statt emulierten SCSI-Geräten verwendet werden. Letzteres ist bei der Verwendung eines nicht-Dom0-Kernels wichtig, da diese nur mit den virtuellen Blockgeräten umgehen können.
Zeile 54: Zeile 57:
}}}
{{{
xen-create-image --memory=1G --size=10G --swap=2G --ip=83.97.42.10 --netmask=255.255.255.192 --gateway=83.97.42.1 --lvm=ping02-data --hostname=web.ping.de --passwd --dist squeeze --pygrub
Zeile 66: Zeile 72:
}}}

Zusätzlich ist es notwendig, der DomU mitzuteilen, wo ihre Konsole ist, da sie sonst nicht korrekt startet. Dazu ist eine weitere Zeile in o.g. Konfigurationsdatei zu ergänzen:

{{{
extra = 'xencons=tty'
Zeile 118: Zeile 118:
                        allow ^83\.97\.48\.10$
Zeile 129: Zeile 128:
                rm cpu
                scp bb@seven:munin/cpu .
Zeile 142: Zeile 143:
Nur die ''-bigmem''-Varianten haben DomU-Unterstützung. Nur die ''-bigmem''-Varianten haben DomU-Unterstützung. Für die ''amd64''-Architektur muss auch in der DomU der Xen-Kernel verwendet werden, der Vanilla-Kernel enthält keine DomU-Unterstützung.
Zeile 158: Zeile 159:
Weiterhin ist es sinnvoll, den DHCP-Client zu entfernen:
{{{
apt-get remove --purge dhcp3-client dhcp3-common
}}}
Zeile 181: Zeile 187:

== pygrub vs. Dom0-Kernel ==

Um in der DomU einen eigenen Kernel zu verwenden, der sich auch vom in der Dom0 eingesetzten unterscheiden kann, empfielt sich der Einsatz von ''pygrub''. Alternativ kann aber auch der in der DomU zu verwendende Kernel in der Dom0 installiert und wie oben beschrieben vorgegangen werden.

Ist die Version von ''xen-create-image'' neu genug (Version 3.9-4 aus lenny kennt diese Option leider noch nicht), reicht es aus, diesem als Option ''--pygrub'' mitzugeben, sonst ist die Installation etwas komplizierter:

=== Schritt 0 ===

Die DomU muss installiert werde wie oben bereits beschrieben, zum Einsatz kommt vorerst ein in der Dom0 installierter Kernel.

=== Schritt 1 ===

Nach dem Start der DomU wird in diese gewechselt und in dieser grub und der gewünschte Kernel installiert:
{{{
   apt-get install grub linux-image-686-bigmem linux-image-xen-amd64 linux-modules-xen-amd64
   mkdir /boot/grub
   echo -e '(hd0)\t/dev/xvda' > /boot/grub/device.map
   mknod /dev/xvda b 202 0
   update-grub
   sed -i -e 's/^# groot=(hd0)/# groot=(hd0,2)/' /boot/grub/menu.lst
   update-grub
   vi /etc/kernel-img.conf
      do_initrd = Yes
      postinst_hook = update-grub
      postrm_hook = update-grub
}}}

Anmerkungen:
 * Wurde bei der Konfiguration der DomU eine komplette Festplatte konfiguriert (hierbei ist es unerheblich, ob diese tatsächlich eine Partitionstabelle enthält oder nicht), muss ''/dev/xvda'' nicht angelegt werden, es muss dann auch ''menu.lst'' nicht angepasst werden.
 * Das Device ''/dev/xvda'' wird nicht durch udev erzeugt, wenn nur virtuelle Partitionen (''xvda1'') konfiguriert wurden. Um das Device beim Systemstart automatisch erzeugen zu lassen kann wie folgt vorgegangen werden:
{{{
mknod /lib/udev/devices/xvda b 202 0
chmod 0660 /lib/udev/devices/xvda
chown root:disk /lib/udev/devices/xvda
}}}
 * Für die ''x86''-Architektur ist der ''-bigmem''-Kernel notwendig, der Standardkernel enthält keine DomU-Unterstützung. Die ''amd64''-Architektur benötigt sogar den Xen-Kernel (Dom0), nur dieser enthält auch Unterstützung for die DomU.

=== Schritt 2 ===

Die DomU wird gestoppt und ihre Konfigurationsdatei modifiziert. Statt der Optionen ''kernel'' und ''ramdisk'' bekommt sie die Option ''bootloader'':
{{{
bootloader = '/usr/lib/xen-3.2-1/bin/pygrub'
}}}

Anmerkungen:
 * Der genaue Pfad von pygrub kann sich unterscheiden, kann pygrub nicht gefunden werden kann die DomU nicht gestartet werden.
 * Die Partition mit dem Kernel muss in der Liste der virtuellen Platten (''disk = '') an erster Stelle stehen. Dabei ist es irrelevant, ob sich der Kernel auf der ersten Partition befindet, die Kernel-Partition muss nur als erste aufgeführt werden.

Anschliessend sollte sich die DomU starten lassen und den eigenen Kernel verwenden.

=== Schritt 3 ===

Abschliessend können in der DomU nun nicht mehr benötigte Pakete entfernt werden:
{{{
   apt-get remove --purge linux-modules-2.6.26-1-xen-686 linux-modules-2.6.26-2-xen-686 linux-modules-xen-686
}}}

Anmerkungen:
 * Die Pakete linux-modules-xen-amd64, linux-modules-2.6-xen-amd64 und linux-modules-2.6.26-2-xen-amd64 dürfen ''nicht'' entfernt werden.

== Weitere Aktionen mit DomUs ==

=== Ändern der IP einer DomU ===

/!\ Work in Progress

Vorgehen:
 1. Hostname und IP in der DomU anpassen
 1. DomU stoppen
 1. Hostname, IP und LVM in der Dom0 anpassen
 1. DomU wieder starten
 1. auf diversen Systemen SSH-Hostkeys anpassen
 1. testen, testen, testen

==== In der DomU ====

 * Hostname
   * /etc/hosts
   * /etc/motd
   * /etc/hostname
 * IP
   * /etc/network/interfaces
   * /etc/hosts

==== In der Dom0 ====

 * LVM
   * ''lvrename /dev/VG/LVold /dev/VG/LVnew''
 * /etc/xen/host.domain.tld.cfg
   * umbenennen
   * '''name = '''
   * '''vif = '''
   * '''disk = '''
 * /etc/xen/auto/host.domain.tld.cfg
   * Symlink anpassen

== externe Links ==

 * http://wiki.debian.org/Xen
 * http://wiki.debian.org/PyGrub

Erstellung einer Xen-DomU

/!\ Diese Anleitung enthält die Konfiguration für ein echtes System, mit allergrößter Wahrscheinlichkeit müssen einige bis alle Daten angepasst werden.

/!\ Es ist empfehlenswert, vor der Benutzung dieser Anleitung diese einmal vollständig zu lesen.

/!\ Diese Anleitung wurde für Debian etch geschrieben und auf Debian lenny angepasst.

vorbereitende Schritte

Diese Anleitung benötigt das Paket xen-tools, dieses ist zu installieren, falls nicht bereits geschehen.

In der Dom0 müssen folgende Einstellungen vorgenommen werden:

  • /etc/xen/xend-config.sxp
    • (network-script network-dummy)
    • (vif-script 'vif-bridge bridge=br1')

Die erste Zeile (network-script) sorgt dafür, daß beim Start keine Bridges erzeugt werden, stattdessen kann die Debian-eigene Konfiguration in /etc/network/interfaces verwendet werden. Ein Beispiel für eine derart konfigurierte Bridge (von al.prima.de):

auto br0
        iface br0 inet manual
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0

auto br1
        iface br1 inet static
        address 83.97.48.6
        gateway 83.97.48.30
        netmask 255.255.255.192
        bridge_ports eth1
        bridge_stp off
        bridge_fd 0

In diesem Beispiel existieren zwei Bridges, die erste (br0) wird nur zur Verbindung von eth0 und einer DomU (seven.prima.de) verwenden, die zweite dient der Kommunikation mit der Dom0 selbst und allen anderen DomUs.

Die zweite Zeile gibt den Namen der zu verwendenden Bridge an (Default, kann in der Konfiguration der DomU überschrieben werden, siehe weiter unten.), die Angabe des Namens kann entfallen, wenn nur eine Bridge im System existiert.

Die ersten beiden Zeilen sind selbsterklärend, die dritte Zeile (serial_device) sorgt dafür, dass in der DomU ein getty auf hvc0 eingetragen wird statt auf tty1 oder ttyS0 und die vierte Zeile (disk_device) schliesslich sorgt dafür, dass virtuelle Blockgeräte statt emulierten SCSI-Geräten verwendet werden. Letzteres ist bei der Verwendung eines nicht-Dom0-Kernels wichtig, da diese nur mit den virtuellen Blockgeräten umgehen können.

Erzeugen der DomU

Im nächsten Schritt wird jetzt die DomU erzeugt:

xen-create-image --memory=1024 --size=2Gb --swap=1Gb --ip=83.97.48.10 --netmask=255.255.255.192 --gateway=83.97.48.30 --lvm=VSERVER --hostname=griff.prima.de --passwd --role=udev

xen-create-image --memory=1G --size=10G --swap=2G --ip=83.97.42.10 --netmask=255.255.255.192 --gateway=83.97.42.1 --lvm=ping02-data --hostname=web.ping.de --passwd --dist squeeze --pygrub

Anmerkungen zu den Optionen:

  • Die Angabe des Speichers (memory) erfolgt in kB, Zusätze wie Gb werden ignoriert.

  • In diesem Beispiel wird das Dateisystem und der Swapspace innerhalb der volume group VSERVER erzeugt, diese muss vorher via vgcreate erstellt worden sein.

  • Die Option --passwd erfragt das root-Passwort für die DomU interaktiv, ohne diese Option wird ein leeres root-Passwort gesetzt.

  • Die Option --role=udev sorgt dafür, dass bei der Erzeugung der DomU udev gleich mit installiert wird, dieses ist unverzichtbar, da sonst auch kein devpts verfügbar ist und somit kein Login möglich ist.

Wurde die DomU erfolgreich erstellt erhält man schließlich zwei logical volumes (VSERVER/griff.prima.de-disk und VSERVER/griff.prima.de-swap) und eine Konfigurationsdatei (/etc/xen/griff.prima.de.cfg). In dieser Konfigurationsdatei kann nun noch wie oben erwähnt eine andere Bridge konfiguriert werden. Dazu ist eine Zeile zu erweitern:

vif  = [ 'ip=83.97.48.10,bridge=br1' ]

Jetzt wird die DomU gestartet

xm create griff.prima.de.cfg -c

Die Option -c sorgt dafür, daß die DomU sofort mit der aktuellen Konsole verbunden wird, sodaß die Startmeldungen und evtl. Fehlermeldungen sichtbar sind, außerdem kann so gleich eine Anmeldung erfolgen.

Konfiguration der neuen DomU

Abschließend sind sinnvollerweise noch ein paar Pakete zu installieren und zu konfigurieren:

        apt-get update
        apt-get upgrade
        apt-get install debsums
        apt-get clean
        debsums_init
        apt-get install less vim vim-scripts nullmailer apticron apt-listchanges uptimed screen file logcheck logcheck-database bind9-host
        update-alternatives --config editor
                /usr/bin/vim.basic
        vi /etc/nullmailer/adminaddr
                griff@prima.de
        update-locale
        dpkg-reconfigure tzdata
        /etc/init.d/rsyslog restart
        /etc/init.d/cron restart
        vi /etc/ssh/sshd_config
                ListenAddress 83.97.48.10
                Protocol 2,1
                HostKey /etc/ssh/ssh_host_key
                PermitRootLogin no
        ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_key -C '' -N ''
        /etc/init.d/ssh restart
        dpkg-reconfigure apt-listchanges
                method: text
                skip: yes
                email: root
                type: both
                confirm: no
        vi /etc/hosts.allow
                sshd: kelly.prima.de seven.prima.de LOCAL
        vi /etc/hosts.deny
                ALL: ALL
        apt-get install munin-node munin-plugins-extra
                vi /etc/munin/munin-node.conf
                        allow ^83\.97\.42\.133$
                cd /etc/munin/plugins/
                rm if_e*
                ln -s /usr/share/munin/plugins/uptime
                ln -s /usr/share/munin/plugins/users
                ln -s /usr/share/munin/plugins/netstat
                rm iostat
                cp /usr/share/munin/plugins/iostat iostat
                vi iostat
                        # comment "Special case for devices like cXdXpX"
                rm cpu
                scp bb@seven:munin/cpu .
                /etc/init.d/munin-node restart
        adduser bb
        apt-get clean

Anmerkungen:

  • Das Neustarten von klogd, syslogd und crond ist notwendig, weil diese vor dem setzen der Zeitzone die lokale Zeit als UTC betrachten und dadurch hinterher "nach gehen".

Abhängig vom benutzten Kernel (Dom0-Kernel, Vanilla-Kernel, VServer-Kernel) ist es empfehlenswert, weitere Pakete zu installieren, um immer die aktuellen Kernel-Module zu verwenden:

Dom0-Kernel

linux-modules-xen-686

Vanilla-Kernel

linux-image-686-bigmem

VServer-Kernel

linux-image-vserver-686-bigmem

Nur die -bigmem-Varianten haben DomU-Unterstützung. Für die amd64-Architektur muss auch in der DomU der Xen-Kernel verwendet werden, der Vanilla-Kernel enthält keine DomU-Unterstützung.

Jetzt sind noch die Dateien

/etc/hosts
/etc/resolv.conf

anzupassen. In ersterer wird unpraktischerweise der Name der Dom0 mit der IP 127.0.1.1 und die IPs der anderen DomUs eingetragen. Da dieses der Kommunikation mit der Dom0 abträglich ist, muss die Zeile entfernt oder auskommentiert werden, die IPs der anderen DomUs können theoretisch unverändert bleiben, es schadet allerdings auch nicht, diese zu entfernen. In der zweiten Datei werden Domain-Such-Pfad und Nameserver der Dom0 eingetragen, diese sind ggf. den Gegebenheiten anzupassen.

Außerdem wird die Datei

/etc/sudoers

aus der Dom0 in die DomU kopiert, diese ist ggf. anzupassen.

Weiterhin ist es sinnvoll, den DHCP-Client zu entfernen:

apt-get remove --purge dhcp3-client dhcp3-common

automatischer Start

Um die DomU beim Systemstart automatisch starten zu lassen sind folgende Schritte notwendig:

cd /etc/xen/auto/
ln -s ../griff.prima.de.cfg

shutdown vs. save

Bei lenny werden DomUs beim shutdown der Dom0 automatisch gesichert, beim Start der Dom0 werden sie in ihrem vorherigen Zustand wiederhergestellt. Wer möchte, dass die DomUs beim shutdown der Dom0 stattdessen ebenfalls herunter gefahren werden muss in der Datei

/etc/default/xendomains

Die Zeile

XENDOMAINS_SAVE=/var/lib/xen/save

durch

XENDOMAINS_SAVE=""

ersetzen.

pygrub vs. Dom0-Kernel

Um in der DomU einen eigenen Kernel zu verwenden, der sich auch vom in der Dom0 eingesetzten unterscheiden kann, empfielt sich der Einsatz von pygrub. Alternativ kann aber auch der in der DomU zu verwendende Kernel in der Dom0 installiert und wie oben beschrieben vorgegangen werden.

Ist die Version von xen-create-image neu genug (Version 3.9-4 aus lenny kennt diese Option leider noch nicht), reicht es aus, diesem als Option --pygrub mitzugeben, sonst ist die Installation etwas komplizierter:

Schritt 0

Die DomU muss installiert werde wie oben bereits beschrieben, zum Einsatz kommt vorerst ein in der Dom0 installierter Kernel.

Schritt 1

Nach dem Start der DomU wird in diese gewechselt und in dieser grub und der gewünschte Kernel installiert:

   apt-get install grub linux-image-686-bigmem linux-image-xen-amd64 linux-modules-xen-amd64
   mkdir /boot/grub
   echo -e '(hd0)\t/dev/xvda' > /boot/grub/device.map
   mknod /dev/xvda b 202 0
   update-grub
   sed -i -e 's/^# groot=(hd0)/# groot=(hd0,2)/' /boot/grub/menu.lst
   update-grub
   vi /etc/kernel-img.conf
      do_initrd = Yes
      postinst_hook = update-grub
      postrm_hook   = update-grub

Anmerkungen:

  • Wurde bei der Konfiguration der DomU eine komplette Festplatte konfiguriert (hierbei ist es unerheblich, ob diese tatsächlich eine Partitionstabelle enthält oder nicht), muss /dev/xvda nicht angelegt werden, es muss dann auch menu.lst nicht angepasst werden.

  • Das Device /dev/xvda wird nicht durch udev erzeugt, wenn nur virtuelle Partitionen (xvda1) konfiguriert wurden. Um das Device beim Systemstart automatisch erzeugen zu lassen kann wie folgt vorgegangen werden:

mknod /lib/udev/devices/xvda b 202 0
chmod 0660 /lib/udev/devices/xvda
chown root:disk /lib/udev/devices/xvda
  • Für die x86-Architektur ist der -bigmem-Kernel notwendig, der Standardkernel enthält keine DomU-Unterstützung. Die amd64-Architektur benötigt sogar den Xen-Kernel (Dom0), nur dieser enthält auch Unterstützung for die DomU.

Schritt 2

Die DomU wird gestoppt und ihre Konfigurationsdatei modifiziert. Statt der Optionen kernel und ramdisk bekommt sie die Option bootloader:

bootloader  = '/usr/lib/xen-3.2-1/bin/pygrub'

Anmerkungen:

  • Der genaue Pfad von pygrub kann sich unterscheiden, kann pygrub nicht gefunden werden kann die DomU nicht gestartet werden.
  • Die Partition mit dem Kernel muss in der Liste der virtuellen Platten (disk = ) an erster Stelle stehen. Dabei ist es irrelevant, ob sich der Kernel auf der ersten Partition befindet, die Kernel-Partition muss nur als erste aufgeführt werden.

Anschliessend sollte sich die DomU starten lassen und den eigenen Kernel verwenden.

Schritt 3

Abschliessend können in der DomU nun nicht mehr benötigte Pakete entfernt werden:

   apt-get remove --purge linux-modules-2.6.26-1-xen-686 linux-modules-2.6.26-2-xen-686 linux-modules-xen-686

Anmerkungen:

  • Die Pakete linux-modules-xen-amd64, linux-modules-2.6-xen-amd64 und linux-modules-2.6.26-2-xen-amd64 dürfen nicht entfernt werden.

Weitere Aktionen mit DomUs

Ändern der IP einer DomU

/!\ Work in Progress

Vorgehen:

  1. Hostname und IP in der DomU anpassen
  2. DomU stoppen
  3. Hostname, IP und LVM in der Dom0 anpassen
  4. DomU wieder starten
  5. auf diversen Systemen SSH-Hostkeys anpassen
  6. testen, testen, testen

In der DomU

  • Hostname
    • /etc/hosts
    • /etc/motd
    • /etc/hostname
  • IP
    • /etc/network/interfaces
    • /etc/hosts

In der Dom0

  • LVM
    • lvrename /dev/VG/LVold /dev/VG/LVnew

  • /etc/xen/host.domain.tld.cfg
    • umbenennen
    • name =

    • vif =

    • disk =

  • /etc/xen/auto/host.domain.tld.cfg
    • Symlink anpassen

Software/Xen-DomU (zuletzt geändert am 2012-09-23 18:13:31 durch BodoBellut)