XEN-Etch

Aus Neobiker's Wiki

Wechseln zu: Navigation, Suche

Hier beschreibe ich (neobiker) meine XEN Installation mit Debian Etch - vielleicht kann ja jemand was damit anfangen...(zum spicken).


Ausgangsbasis: Meine erste Installation mit Sarge


Ausgangssituation:

  • Intel P4 1.7 GHz, 768MB RAM, 2x 160 GB + 1x 240 GB Disks, 2x 100 MBit Ethernet
  • AVM Fritzcard PCI
  • USB Drucker
  • WLAN-DSL Router mit integrierter Firewall (Linux stateful firewall)

Zielsystem:

  • Disks mit RAID1 gespiegelt, Partitionierung mit LVM
  • SnapShot Backup mit rsync
  • XEN 3.0.3 Host-System nur mit DNS/DHCP ohne jegliche weitere Funktionen!
  • Development System (zum Kompilieren usw.)
  • mehrere weitere virtuelle Systeme (Firewall, DMZ, usw.)


Inhaltsverzeichnis

[Bearbeiten] 1 Debian Installation

Ich installiere ein neues Debian System mittels der Netinst Methode.

Debian Etch laden und installieren, Kernel 2.6 Installation:

boot: linux26

Installations-Dialog bis zur Partitionierung der Disks:

Language: English
Country: Germany
Keyboard Layout: German
Hostname: xen0
Domain name: neobiker.de

Die Partitionierung mit RAID1 und LVM ist nicht trivial. Wichtig ist die Reihenfolge:

1. Partitionierung der Disks
2. RAID Konfigurieren
3. LVM-Filesystem definieren
4. EXT3 Filesystem installieren
5. Mount Points eintragen

Ich partitioniere beide Disks mittels Manual partition disks wie folgt:

1. Disk sda Partitionieren
1.0 GB     RAID   <-- bootable YES
4.0 GB     RAID
30  GB     RAID
2.0 GB     swap

2. Disk sdb Partitionieren
1.0 GB     RAID   <-- bootable YES
4.0 GB     RAID
30  GB     RAID
2.0 GB     swap

Jetzt muss das RAID konfiguriert werden Configure software RAID:

create md device - RAID1 - 2 active - 0 spare

RAID Konfiguration: 2/0 (Disk/Spare)
   md0:  sda1 + sdb1
   md1:  sda2 + sdb2
   md2:  sda3 + sdb3

Jetzt können die RAID Devices #0 (ext3), #1 (ext3) und #2 (lvm) formatiert werden:

RAID 1 device #0
    #1   1GB  ext3    /boot
RAID 1 device #1
    #1   4GB  ext3    /
RAID 1 device #2
    #1  30GB  LVM

Man kann das natürlich auch alles in eine grosse Partition plus swap nehmen. Die separate /boot Partition erweist sich als nützlich, wenn man verschiedene Systeme von unterschiedlichen Disks/Partitionen starten möchte (/ liegt woanders als grub).

Die LVM Konfiguration von /dev/md2 als /data machen wir später von Hand.

Weiter mit dem Installations-Dialog:

Auswahl: Minimal System (Alles abwählen)
Grub in MBR: YES
Finish Installation: Continue

Reboot des Rechners ...

Die Debian Konfiguration startet wieder automatisch, hier

Hardware Clock GMT: No
Timezone Europe/Berlin: YES
...
APT Configuration: FTP
Mirror Country: Germany
Debian Mirror: ftp.de.debian.org
Proxy:
...
Mail configuration: No Config at this time

Damit GRUB im Fehlerfalle auch von der 2. Platte booten kann, muss GRUB auch in den MBR der 2.ten Disk installiert werden:

xen0# grub

grub> device (hd0) /dev/sdb
grub> root (hd0,0)
grub> setup (hd0)

[Bearbeiten] 1.1 Netzwerk

Statische IP Konfiguration für Server (bei Servern immer). Zusätzliche XEN-Bridges füge ich später im modifizierten XEN Scripts hinzu.

# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)

# The loopback interface
auto lo
iface lo inet loopback

# The first network card - this entry was created during the Debian installation
# (network, broadcast and gateway are optional)
auto eth0
iface eth0 inet static
        address 192.168.0.10
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1

iface eth1 inet manual

Hostnamen definieren

Datei /etc/hosts editieren:

127.0.0.1       localhost.localdomain   localhost
192.168.0.10    xen0.neobiker.de     xen0

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Namensauflösung

Ich benutze in meinem LAN neobiker.de einen eigenen Nameserver, der keine externe Adressen auflöst (das macht die Firewall).

Datei /etc/resolv.conf anpassen:

search neobiker.de
nameserver 127.0.0.1

[Bearbeiten] 1.2 Sonstige Konfigurationen

APT

Ich trage nur die Standard Repositories in die Datei /etc/apt/sources.list ein:

# debian etch online quellen
deb http://ftp.de.debian.org/debian/ etch main
deb-src http://ftp.de.debian.org/debian/ etch main

# debian security online quellen
deb http://security.debian.org/ etch/updates main
deb-src http://security.debian.org/ etch/updates main


Installation updaten

Jetzt kann die gesamte Installation aktualisiert werden:

apt-get update
apt-get upgrade

Uhrzeit automatisch aktualisieren

Die Uhrzeit aktualisiere ich über ntpd.

apt-get install ntp ntpdate

xen0# vi /etc/ntp.conf
...
#server ptbtime1.ptb.de # Kein direkter ptbtime Zugriff mehr gewüscht!
#server ptbtime2.ptb.de # Kein direkter ptbtime Zugriff mehr gewüscht!
server ntp0.freenet.de
server gwdu01.gwdg.de
server 0.de.pool.ntp.org
server 1.de.pool.ntp.org
...

[Bearbeiten] 1.3 LVM Konfiguration

Die grosse Partition soll für grössere Flexibilität mit LVM installiert werden.

Konfiguration der LVM-Partition: Es wird ein physisches Volume angelegt, welches mehrere logische Volume-Gruppen aufnehmen kann. Wir legen nur eine Volume-Gruppe an:

apt-get install lvm2

pvcreate /dev/md2

vgcreate vg /dev/md2

Dort (in der Volumegroup vg) können jetzt die logischen Volumes installiert werden:

lvcreate -L 10G -n devel vg   # Development (e.g. compiling kernel/modules)
lvcreate -L  1G -n efw   vg   # Endian Firewall
lvcreate -L  4G -n srv   vg   # Main Server

Eine Development Partition (10GB) und 2x Partitionen für virtuelle Maschinen efw und srv.

Jetzt das Filesystem formatieren:

mkfs.ext3 /dev/vg/devel
mkfs.ext3 /dev/vg/efw
mkfs.ext3 /dev/vg/srv

Die Konfiguration in /etc/fstab

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
/dev/md1        /               ext3    defaults,errors=remount-ro 0       1
/dev/md0        /boot           ext3    defaults        0       2
/dev/hda5       none            swap    sw              0       0
/dev/hdb5       /tmp            ext3    defaults        0       2
/dev/hdd        /media/cdrom0   iso9660 ro,user,noauto  0       0
/dev/fd0        /media/floppy0  auto    rw,user,noauto  0       0
/dev/vg/devel   /vm/devel       ext3    defaults,noauto 0       0
/dev/vg/srv     /vm/srv         ext3    defaults,noauto 0       0
/dev/vg/efw     /vm/efw         ext3    defaults,noauto 0       0

Und für die Partitionen ein Mountpoint anlegen, bzw. ein Swapfile für die DomUs anlegen:

mkdir -p /vm/devel /vm/efw /vm/srv

dd if=/dev/zero of=/vm/devel/swap.img bs=1024k count=512
mkswap /vm/devel/swap.img

Bei Bedarf kann das System ganz einfach benutzt oder geändert werden, z.B. um

  • Files in der DomU zu ändern, oder um
  • per chroot das System zu benutzen, oder um
  • setup oder passwd im System aufzurufen, oder um
  • Netzwerkkonfiguration manuell zu ändern,
  • oder um ...
mount /dev/vg/devel /vm/devel
mount -t proc none /vm/devel/proc
chroot /vm/devel
...

[Bearbeiten] 2 XEN Installation

Ich installiere nur die XEN-Binaries, da ich in dem Hypervisor-Hostsystem keine Development-Umgebung zum Übersetzen von Sourcen installieren möchte (und anderes Zeugs auch nicht).

apt-get install xen-hypervisor-3.0.3-1-i386 xen-linux-system-2.6.18-4-xen-686 linux-image-2.6.18-4-xen-686 linux-modules-2.6.18-4-xen-686 libc6-xen 
apt-get install xen-utils-3.0.3-1

XEN Boot-Einträge für GRUB

Zum booten muss grub noch entsprechende Einträge in der Datei /boot/grub/menu.list erhalten:

title           Xen 3.0.3-1-i386 / Debian GNU/Linux, kernel 2.6.18-4-xen-686
root            (hd0,0)
kernel          /xen-3.0.3-1-i386.gz dom0_mem=64M
module          /vmlinuz-2.6.18-4-xen-686 root=/dev/md1 ro console=tty0 noirqdebug nousb pciback.hide=(02:09.0)(02:09.1)
module          /initrd.img-2.6.18-4-xen-686
savedefault

Einen Memory squeeze error in netback driver vermeide ich, indem ich der Dom0 Memory fest zuweise - Option dom0_mem=64M. In /etc/xen/xend-config.sxp sollte natürlich der Wert dom0_min_mem dazu passen. Die Optionen noirqdebug und nousb verwende ich, weil ich PCI-Geräte in DomU's verwenden möchte, nicht in der Dom0. Hat sich als stabiler erwiesen (vorher ist auf meiner Hardware manchmal das System eingefroren, wg. IRQ-Problemen in DomUs).

Jetzt kann ein reboot folgen und hoffentlich den XEN Hypervisor starten ...

reboot

[Bearbeiten] 2.1 XEN Konfiguration

Ich liste mal eine XEN Installation in eine eigene Partition und in eine Image Datei auf (wie beim c't Server die UML).

Konfig-Datei /etc/xen/devel für eine XEN-Installation in einer eigenen (LVM-) Partition /dev/vg/devel:

name   ="devel"
memory =256

kernel ="/boot/vmlinuz-2.6.18-4-xen-686"
ramdisk="/boot/initrd.img-2.6.18-4-xen-686"
root   ="/dev/hda1"
extra  ="3"
dhcp   ="none"

disk   =[ 'phy:vg/devel,hda1,w'
         ,'file:/vm/devel/swap.img,hda2,w'
        ]
vif    =[ 'mac=aa:00:00:00:00:01, bridge=xenbr0'
        ]

Ein Swapfile für die DomU ist schnell angelegt:

dd if=/dev/zero of=/vm/devel/swap.img bs=1024k count=512
mkswap /vm/devel/swap.img

Jetzt kann die DomU schon gestartet werden - ... sofern sie schon unter /dev/vg/devel installiert wurde ;-)

xm create -c devel
Persönliche Werkzeuge