Skip to main content

Debian XEN-Server via debootstrap auf Server4You Root-Server installieren

Dies ist eine Anleitung um Debian Squeeze und XEN-Server auf einem dedizierten Host der Server4You zu installieren.

Der Server, für den diese Anleitung erstellt wurde, hat folgende Stats:

  • Fujitsu PRIMERGY MX130 S2
  • AMD Opteron 3280 Octacore
  • 2x 2000 GB SATA 3,5„ 7.200 rpm (für Softraid)
  • 16x Gigabyte RAM
  • +3 zusätzliche IP Adressen

Der Server sollte Virtualisierung unterstützen. Ob das Virtualisierungs-Bit aktiviert ist, läßt sich vor der Installation über dieses Kommando herausfinden: „egrep '(vmx|svm)' /proc/cpuinfo“. Sobald der Server mit einem XEN-Kernel gebootet ist, verschwindet die Anzeige aus /proc/cpuinfo. Die Info taucht dafür aber im dmesg von XEN auf: „xm dmesg | egrep -i '(vmx|svm)'“. Bitte beachten: bei AMD-Prozessoren heißt das Flag SVM, bei Intel hingegen VMX.

Statt vif-bridge verwende ich für meine Server vif-nat. vif-bridge hat den Nachteil, dass man von den 4 IP-Adressen letztlich nur 2 für die VMs verwenden kann.

Ich habe alle öffentlichen IP-Adressen direkt auf dem Xen-Host konfiguriert und natte diese auf die privaten IPs der virtuellen Server. Nach außen wird jede VM auf die zugehörige externe IP genattet. Ich habe das ganze mit Shorewall umgesetzt. Wer sich für meine Regeln interessiert möge mich anschreiben.

1. Sofern noch nicht geschehen unbedingt Daten sichern. Es handelt sich hier um eine Neuinstallation, alle vorhandenen Daten gehen verloren.

2. Recovery System über https://my.server4you.de aktivieren und per SSH verbinden

3. Im Recovery System den alten Server löschen, d.h:

  • mdadm raids auflösen und löschen
  • per fdisk alle Partitionen löschen

4. neue Partitionen erstellen:

neue Partitionen auf beiden Disks exakt gleich konfigurieren (z.B.: 500MB /boot, 8GB SWAP, 100GB System, Rest für LVM + XEN)

5. md-raids konfigurieren:

  • /dev/sda1 + /dev/sdb1 → md0 (boot)
  • /dev/sda3 + /dev/sdb3 → md1 (XEN dom0)
  • /dev/sda4 + /dev/sdb4 → md2 (Daten)
# in neueren mdadm Versionen: 
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1

# alt:
mdadm --create /dev/md0 --raid-level=1 /dev/sda1 /dev/sdb1
mdadm --create /dev/md1 --raid-level=1 /dev/sda3 /dev/sdb3
mdadm --create /dev/md2 --raid-level=1 /dev/sda4 /dev/sdb4

6. Partitionen formatieren

mkfs.ext2 -L boot /dev/md0
mkfs.ext4 -L system /dev/md1

mkswap -L swap-sda /dev/sda2
mkswap -L swap-sdb /dev/sdb2

7. Partitionen für debootstrap mounten

mkdir /mnt/debinst
mount /dev/md1 /mnt/debinst
mkdir /mnt/debinst/boot /mnt/debinst/work
mount /dev/md0 /mnt/debinst/boot
cd /mnt/debinst/work

8. debootstrap besorgen:

wget http://ftp.us.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.26+squeeze1_all.deb
ar -xf debootstrap_1.0.26+squeeze1_all.deb

9. Installation starten

cd / 
/usr/sbin/debootstrap --arch amd64 squeeze /mnt/debinst http://ftp.de.debian.org/debian

10. nötiges Zeugs mounten

mount sysfs /mnt/debinst/sys -t sysfs
mount proc /mnt/debinst/proc -t proc
mount -o bind /dev /mnt/debinst/dev

11. ins neue System chrooten

cd /
LANG= chroot /mnt/debinst /bin/bash

12. ggf. /etc/apt/sources.list anpassen:

deb http://ftp.de.debian.org/debian/ stable main contrib non-free
deb-src http://ftp.de.debian.org/debian/ stable main contrib non-free
deb http://security.debian.org/ stable/updates main contrib non-free
deb-src http://security.debian.org/ stable/updates main contrib non-free

13. eventuell vorhandene Updates installieren

aptitude update
aptitude full-upgrade

14. vim installieren

aptitude install vim

15. /etc/fstab anpassen

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0

/dev/md0	/boot		ext2	defaults,noatime,ro,nosuid,nodev	0	2
/dev/md1	/		ext4	defaults,noatime			0	1

LABEL=swap-sda	none		swap	sw,pri=1	0	0
LABEL=swap-sdb	none		swap	sw,pri=1	0	0

16. proc mounten

mount -t proc proc /proc

17. Konsolenoptionen

aptitude install console-setup

folgendes auswählen: Germany - Eliminate dead keys UTF-8 . Combined - Latin; Slavic Cyrillic; Greek

18. Netzwerkkonfiguration

in /etc/network/interfaces folgendes eintragen (entsprechend für deinen Server anpassen!):

# /etc/network/interfaces - network interfaces configuration

# loopback interface
auto lo
iface lo inet loopback

# ethernet interface
auto eth0
iface eth0 inet static
  address XXX.XXX.XXX.XXX
  network XXX.XXX.XXX.XXX
  netmask 255.255.255.XXX
  broadcast XXX.XXX.XXX.XXX
  gateway XXX.XXX.XXX.XXX

in /etc/resolv.conf folgendes eintragen (eigene Domains einsetzen):

nameserver 8.8.8.8
nameserver 8.8.4.4
search meinserver.de
domain meinserver.de
options rotate
options timeout:3

den Hostnamen in /etc/hostname eintragen

xen1.meinserver.de

die Hosts-Datei anpassen (/etc/hosts)

XXX.XXX.XXX.XXX    xen1.meinserver.de xen1

127.0.0.1	localhost
::1			localhost ip6-localhost ip6-loopback
fe00::0		ip6-localnet
ff00::0		ip6-mcastprefix
ff02::1		ip6-allnodes
ff02::2		ip6-allrouters

19. Sprachpaket installieren

aptitude install locales
dpkg-reconfigure locales

Auswählen: de_DE.UTF-8

         en_US.UTF-8

Danach je nach gewünschter Systemsprache englisch oder deutsch auswählen

20. Systemzeit konfigurieren

  dpkg-reconfigure tzdata
  1. > Europe / Berlin auswählen

21. SSH für den späteren Remote-Zugriff installieren

aptitude -y install ssh

22. Kennwörter und SSH-Keys verteilen

Root-Kennwort setzen:

passwd root

und SSH-Key verteilen

  mkdir /root/.ssh
  vi /root/.ssh/authorized_keys  

deinen SSH-Pubkey reinkopieren

23. mdadm + mta installieren

  aptitude install mdadm postfix

Postfix Einstellungen: Internet site, System mail name: <FQDN>

24. mdadm-Settings anpassen und überprüfen, ob das Raid korrekt erkannt wurde

  mdadm --detail --scan # und mit /etc/mdadm/mdadm.conf vergleichen

sollte etwa so aussehen:

# mdadm.conf
#
# Please refer to mdadm.conf(5) for information about this file.
#

# by default, scan all partitions (/proc/partitions) for MD superblocks.
# alternatively, specify devices to scan, using wildcards if desired.
DEVICE partitions

# auto-create devices with Debian standard permissions
CREATE owner=root group=disk mode=0660 auto=yes

# automatically tag new arrays as belonging to the local system
HOMEHOST <system>

# instruct the monitoring daemon where to send mail alerts
MAILADDR info@meinserver.de

# definitions of existing MD arrays
ARRAY /dev/md/0 metadata=1.2 UUID=0ae98489:3d0011dd:422ef339:7c089e1f name=disk1176:0
ARRAY /dev/md/1 metadata=1.2 UUID=d89a438e:7f0f2925:dfc1dd45:59788ac8 name=disk1176:1
ARRAY /dev/md/2 metadata=1.2 UUID=bbab94a1:003343e6:6b2629ab:2f8193f7 name=disk1176:2

# This file was auto-generated on Sun, 23 Sep 2012 14:39:40 +0200
# by mkconf 3.1.4-1+8efb9d1+squeeze1

25. Kernel installieren

aptitude install linux-image-2.6-amd64 firmware-linux-nonfree

26. Boot-Loader installieren

aptitude install grub2
  1. > Command line: „quiet“
grub-install /dev/md0
update-grub

27. alles sauber unmounten und Recovery-Modus beenden:

/etc/init.d/postfix stop
/etc/init.d/mdadm stop
exit # (jetzt wieder in der Recovery shell
umount /mnt/debinst/dev /mnt/debinst/sys /mnt/debinst/proc /mnt/debinst/boot
umount /mnt/debinst
<code>

Recovery-Modus über https://my.server4you.de beenden und das System rebooten.

28. Aufräumen

jetzt sollte der Server hoffentlich ordentlich gebootet wieder hochkommen

einloggen und das /work-Verzeichnis löschen
<code>
ssh xen.meinserver.de
rm -rf /work

29. mdadm Resync beenden lassen

nach dem Reboot werden unmounted md-Raids üblicherweise als "active (auto-read-only)" angezeigt und der Resync steht auf "PENDING". Sobald schreibend darauf zugegriffen wird, läuft der Resync weiter. Das kann man aber auch manuell triggern:
<code>
mdadm --readwrite /dev/md0
mdadm --readwrite /dev/md2

md1 ist bereits rw, da das unser root-Filesystem ist. md0 ist /boot (per fstab read-only gemounted) und auf md2 kommt gleich unser LVM

30. nützliche Tools installieren

</code> aptitude install htop tcpdump mtr-tiny strace sysstat lshw </code>

31. LVM konfigurieren (kommt auf das freie md-Raid md2)

aptitude install lvm2
pvcreate /dev/md2
vgcreate lvm-raid /dev/md2

32. XEN installieren

mount -o remount,rw /boot
aptitude install xen-hypervisor-amd64 xen-linux-system-2.6-xen-amd64 xen-tools

33. XEN-Kernel höher priorisieren und ein paar Boot-Optionen setzen

dpkg-divert --divert /etc/grub.d/08_linux_xen --rename /etc/grub.d/20_linux_xen
update-grub

folgendes ab Zeile 10 in /etc/default/grub einfügen (nicht mehr als 1GB RAM für dom0):

# Xen boot parameters for all Xen boots
GRUB_CMDLINE_XEN="dom0_mem=1024M"

und in /etc/xen/xend-config.sxp die Einträge wie folgt aktivieren/ändern:

(network-script network-nat)
(vif-script vif-nat)
(dom0-min-mem 512)
(enable-dom0-ballooning no)
(total_available_memory 0) 
(dom0-cpus 0)
(vncpasswd '')

34. in den XEN-Kernel rebooten, wieder einloggen und XEN prüfen

uname -a

sollte so aussehen:

  Linux xen1.meinserver.de 2.6.32-5-xen-amd64 #1 SMP Sun May 6 08:57:29 UTC 2012 x86_64 GNU/Linux

„xm info“ sollte auch jede Menge Infos liefern

35. /etc/xen-tools/xen-tools.conf anpassen bzw. nach eigenen Vorlieben konfigurieren:

lvm = lvm-raid
arch = amd64
install-method = debootstrap
vcpus  = 4        # number of cores
size   = 50Gb     # Disk image size.
memory = 1024Mb   # Memory size
swap   = 128Mb    # Swap size
noswap = 1        # Don't use swap at all for the new system.
fs     = ext4     # use the EXT3 filesystem for the disk image.
dist   = squeeze  # Default distribution to install.
image  = sparse   # Specify sparse vs. full disk images.
gateway    = XXX.XXX.XXX.1
netmask    = 255.255.255.0
broadcast  = XXX.XXX.XXX.255
genpass = 0
hash_method = sha512
passwd = 1
kernel = /boot/vmlinuz-`uname -r`
initrd = /boot/initrd.img-`uname -r`
arch = amd64
mirror = http://ftp2.de.debian.org/debian/

33. die erste virtuelle Maschine erzeugen:

xen-create-image --hostname=vm1.myserver.de --ip=XXX.XXX.XXX.123

sollte dann so aussehen:

  General Information
--------------------
Hostname       :  vm1.myserver.de
Distribution   :  squeeze
Mirror         :  http://ftp2.de.debian.org/debian/
Partitions     :  /               50Gb  (ext4)
Image type     :  full
Memory size    :  1024Mb
Kernel path    :  /boot/vmlinuz-2.6.32-5-xen-amd64
Initrd path    :  /boot/initrd.img-2.6.32-5-xen-amd64

Networking Information
----------------------
IP Address 1   : XXX.XXX.XXX.123 [MAC: 00:16:3E:B4:09:6A]
Netmask        : 255.255.255.0
Broadcast      : XXX.XXX.XXX.255
Gateway        : XXX.XXX.XXX.1


Creating ext4 filesystem on /dev/lvm-raid/vm1.myserver.de-disk
Done
Installation method: debootstrap
Done

Running hooks
Done

No role scripts were specified.  Skipping

Creating Xen configuration file
Done
Setting up root password
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
All done


Logfile produced at:
	 /var/log/xen-tools/vm1.myserver.de.log

Installation Summary
---------------------
Hostname        :  vm1.myserver.de
Distribution    :  squeeze
IP-Address(es)  :  XXX.XXX.XXX.123
RSA Fingerprint :  24:29:f0:67:60:f1:4e:f6:41:7b:ad:0a:8e:88:87:8f
Root Password   :  N/A

36. die VM starten und beim Booten mit Hochfahren

mkdir /etc/xen/auto
mv /etc/xen/vm1.myserver.de.cfg /etc/xen/auto/
xm create /etc/xen/auto/vm1.myserver.de.cfg