XEN-Etch
Aus Neobiker's Wiki
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

