XEN-Etch: Unterschied zwischen den Versionen

Aus Neobikers Wiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
Keine Bearbeitungszusammenfassung
Zeile 11: Zeile 11:


* Disks mit '''RAID1''' gespiegelt, Partitionierung mit '''LVM'''
* 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!
* '''XEN 3.0.3''' Host-System nur mit DNS/DHCP ohne jegliche weitere Funktionen!
* Development System (zum Kompilieren usw.)
* Development System (zum Kompilieren usw.)
Zeile 77: Zeile 78:
</pre>
</pre>
Man kann das natürlich auch alles in eine grosse Partition plus ''swap'' nehmen.
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 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.
Die LVM Konfiguration von ''/dev/md2'' als ''/data'' machen wir später von Hand.
Zeile 113: Zeile 114:
=== Netzwerk ===
=== Netzwerk ===


Statische IP Konfiguration für Server (bei Servern immer). Zusätzliche XEN-Bridges füge ich später im XEN Scripts hinzu.
Statische IP Konfiguration für Server (bei Servern immer). Zusätzliche XEN-Bridges füge ich später im modifizierten XEN Scripts hinzu.
<pre>
<pre>
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
Zeile 194: Zeile 195:
server ptbtime1.ptb.de
server ptbtime1.ptb.de
server ptbtime2.ptb.de
server ptbtime2.ptb.de
server efw.neobiker.de
server ntp0.freenet.de
server ntp0.freenet.de
server gwdu01.gwdg.de
server gwdu01.gwdg.de
server efw.neobiker.de
...
...
</pre>
</pre>
Zeile 213: Zeile 214:
Dort (in der Volumegroup ''vg'') können jetzt die logischen Volumes installiert werden:
Dort (in der Volumegroup ''vg'') können jetzt die logischen Volumes installiert werden:
<pre>
<pre>
lvcreate -L 10G -n devel vg
lvcreate -L 10G -n devel vg   # Development (e.g. compiling kernel/modules)
lvcreate -L 1G -n efw vg
lvcreate -L 1G -n efw   vg   # Endian Firewall
lvcreate -L 4G -n srv vg
lvcreate -L 4G -n srv   vg   # Main Server
</pre>
</pre>
Eine Development Partition (10GB) und 2x Partitionen für virtuelle Maschinen ''efw'' und ''srv''.
Eine Development Partition (10GB) und 2x Partitionen für virtuelle Maschinen ''efw'' und ''srv''.
Zeile 242: Zeile 243:
Und die Partitionen mounten
Und die Partitionen mounten
<pre>
<pre>
mkdir -p /vserver/devel /vserver/efw /vserver/srv
mkdir -p /vm/devel /vm/efw /vm/srv
mount /vg/devel /vserver/devel
mount /vg/devel /vm/devel
mount /vg/efw /vserver/efw
mount /vg/efw   /vm/efw
mount /vg/srv /vserver/srv
mount /vg/srv   /vm/srv
</pre>
</pre>


Zeile 252: Zeile 253:
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).
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).
<pre>
<pre>
apt-get remove exim4 exim4-base lpr nfs-common portmap pidentd
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 remove pcmcia-cs pppoe pppoeconf ppp pppconfig
apt-get install xen-utils-3.0.3-1
</pre>
 
 
Jetzt installieren wir den XEN Hypervisor und den XEN-Kernel für Intel Pentium4:
<pre>
apt-get install xen-hypervisor-3.0.3-1-i386 xen-linux-system-2.6.18-3-xen-686 linux-image-2.6.18-3-xen-686 linux-modules-2.6.18-3-xen-686 libc6-xen  
apt-get install ssh python-twisted bridge-utils xen-utils-3.0.3-1
</pre>
</pre>


Zeile 267: Zeile 261:
Zum booten muss ''grub'' noch entsprechende Einträge in der Datei ''/boot/grub/menu.list'' erhalten:
Zum booten muss ''grub'' noch entsprechende Einträge in der Datei ''/boot/grub/menu.list'' erhalten:
<pre>
<pre>
title          Xen 3.0.3-1-i386 / Debian GNU/Linux, kernel 2.6.18-3-xen-686
title          Xen 3.0.3-1-i386 / Debian GNU/Linux, kernel 2.6.18-4-xen-686
root            (hd0,0)
root            (hd0,0)
kernel          /xen-3.0.3-1-i386.gz dom0_mem=54M
kernel          /xen-3.0.3-1-i386.gz dom0_mem=54M
module          /vmlinuz-2.6.18-3-xen-686 root=/dev/md1 ro console=tty0
module          /vmlinuz-2.6.18-4-xen-686 root=/dev/md1 ro console=tty0 noirqdebug nousb
module          /initrd.img-2.6.18-3-xen-686
module          /initrd.img-2.6.18-4-xen-686
savedefault
savedefault
</pre>
</pre>
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 ...
Jetzt kann ein ''reboot'' folgen und hoffentlich den XEN Hypervisor starten ...
Zeile 287: Zeile 282:
<pre>
<pre>
name="devel"
name="devel"
memory=256
kernel="/boot/vmlinuz-2.6.18-4-xen-686"
kernel="/boot/vmlinuz-2.6.18-4-xen-686"
ramdisk="/boot/initrd.img-2.6.18-4-xen-686"
ramdisk="/boot/initrd.img-2.6.18-4-xen-686"
root="/dev/hda1"
root="/dev/hda1"
memory=256
dhcp="none"
extra="3"
 
disk=['phy:vg/devel,hda1,w',
disk=['phy:vg/devel,hda1,w',
       'file:/vserver/devel/swap.img,hda2,w'
       'file:/vserver/devel/swap.img,hda2,w'
     ]
     ]
 
vif=[ 'mac=aa:00:00:00:00:01, bridge=xenbr0'
# network
    ]
vif=[ 'mac=aa:00:00:00:00:01, bridge=xenbr0' ]
dhcp="none"
 
extra="3"
</pre>
</pre>

Version vom 30. April 2007, 17:43 Uhr

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

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.)


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:

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)

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

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
server ptbtime2.ptb.de
server ntp0.freenet.de
server gwdu01.gwdg.de
server efw.neobiker.de
...

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:

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

Und die Partitionen mounten

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

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=54M
module          /vmlinuz-2.6.18-4-xen-686 root=/dev/md1 ro console=tty0 noirqdebug nousb
module          /initrd.img-2.6.18-4-xen-686
savedefault

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

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"
dhcp="none"
extra="3"

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