Revamp LTSP: Doku zu Installation und Konfiguration

Aus revampedia

Einleitung

Nach mehreren bereits gestarteten Versuchen haben wir, Ende 2014, erneut intern entschieden unser stark ausgelastetes LTSP[1] System neu aufzusetzen.

Auch mit einer leistungsfähigeren Hardware.

Der LTSP Server soll innerhalb einer Xen[2] basierten virtuellen Maschine laufen. Dies bietet verschiedene Vorteile. Zum Beispiel können einzelne Dienste oder Anwendungen auf weitere virtuelle Maschinen ausgelagert werden.
"Images" können auch einfach gespeichert (Snapshots) oder verschoben werden, selbst auf einen physisch anderen Xen Server usw. usf..

Das Fundament dazu bilden RAID[3] + LVM[4].

Einsatzrahmen

  • ca. 20 Büro Arbeitsplätze mit Standardanwendungen
  • Umgebung für Softwareentwicklung (separate VM)
  • evtl. weitere

Hardware

Dell Poweredge 2950 (nachfolgend PE2950 genannt)

  • 2 x Intel(R) Xeon(R) CPU E5310 @ 1.60GHz (Quad Core)
  • 20GB RAM (max. 32GB)
  • 2x300GB SAS

Umsetzung Teil 1: Einrichtung des Xen Servers

Voreinstellungen

Vorzugsweise möchten wir ein Software RAID verwenden.

Bemerkung: Ein Software RAID bietet den Vorteil, dass es "maschinenunabhängig" ist. Das Software RAID wird im OS konfiguriert. (--> Wie genau, z.B. wo werden diese Informationen gespeichert ?)

Beim PE2950 wird jedoch, wenn der RAID Controller ausgeschaltet ist, keine der Festplatten erkannt.

Aus diesem Grund haben wir, gemäss Workaround[5], im RAID Controller BIOS (Ctrl+R), für die beiden Festplatten jeweils ein RAID0 eingestellt.

Grundinstallation

Wir haben uns für Debian Jessie entschieden. Jessie ist zwar im Moment noch testing befindet sich aber bereits im freeze und wird demnächst stable werden. Auch da dies ja unser eigener/interner LTSP wird. Für eine externe/Kunden-/Produktivmaschine sollte eigentlich immer stable gewählt werden.

Für die Installation verwenden wir das Installations-Image: firmware-jessie-DI-b2-amd64-netinst.iso[6]

Wir verwenden eine CD da booten von USB-Stick, trotz Auswahl im Boot-Screen (F11) nicht funktioniert.

Netzwerkkarten Erkennung

Aufgrund von proprietärer Firmware funktioniert die interne Broadcom Karte, während der Installation nicht.
Das Problem ist bekannt. Siehe: https://wiki.debian.org/InstallingDebianOn/Dell/PowerEdge2950/lenny

Leider funktioniert auch das Nachladen gemäss Debian Wiki[7] nicht. Auch die spezielle non-free Firmware CD Version sowie der Versuch die Firmware manuell zu laden haben nicht funktioniert.

Daher haben wir für die Installation (ev. auch für später ?) eine Intel PCIE Gigabit Ethernet Karte eingebaut. Mit dieser funktioniert die Netzwerkkarten Erkennung problemlos.

Partitionierung

Ein RAID1 für die beiden Festplatten erstellt (md0).

Bemerkung: Um einen allfälligen Ersatz der Festplatte durch ein anderes Modell zu gewährleisten, ist es von Vorteil etwas Platz frei zu lassen. Wir haben deshalb die Grösse auf 98% festgelegt.

LVM Volume Group für das RAID erstellt (pingu-vg).

LVM Logical Volumes:

Name Grösse Mountpunkt Verwendung
pingu-lv-dom0 5GB / Xen Grundsystems root (dom0)
pingu-lv-dom0-swap 2GB (swap) Xen Grundsystem swap

Als Dateisystem, für die root Partition, haben wir ext4 gewählt.

Installation

"base" System mit ssh (ohne graphische Oberfläche) gewählt.

Hostname: pingu

Benutzer:

  • root
  • revamp

Nachinstallation

Pakete:

  • firmware-bnx2 Treiber für die internen Netzwerkkarten
    Jetzt funktionieren diese.

  • lm-sensors Hardware Monitor/Temperaturanzeige

  • sudo[8] Authentifizierungsprogramm
    Benutzer revamp zur Gruppe sudo hinzugefügt.

    # gpasswd -a revamp sudo
  • htop, iotop Prozess/IO-Monitor

First Boot

Bemerkung: Debian Jessie verwendet systemd ![9]

Die Einheit lvm2-activation-early schlägt beim booten fehl.

Unit lvm2-activation-early [Failed]

Durch Google Suche stellt sich heraus, das Problem ist bekannt. Es handelt sich um einen Bug in systemd/Debian (v208)[10]. Soll in systemd 215 behoben sein.

Grundkonfiguration

Netzwerk

Grundeinstellungen eingetragen.

/etc/network/interfaces:

[...]
iface eth0 inet manual

auto xenbr0
iface xenbr0 inet dhcp
    bridge_ports eth0
[...]

Vorläufig verwenden wir DHCP. Für Xen, Bridge eingetragen.

Achtung: Wenn weitere interfaces (z.B. eth1, eth2) eingetragen werden, ohne das diese am Netzwerk angeschlossen sind. Führt dies zu einem langen Delay während des Boot, oder beim Start von networking.service.

Grub

Anzeigen der Meldungen beim Boot.
quiet Kernel Parameter entfernt. /etc/defaults/grub:

GRUB_CMDLINE_LINUX_DEFAULT=""

Kernel Parameter für den Xen Kernel eintragen. RAM und Anzahl CPU's festlegen für die dom0.

GRUB_CMDLINE_XEN="dom0_mem=1024M dom0_max_vcpus=1 dom0_vcpu_pin"

Xen-Server (Hypervisor) Einrichtung

Installation

Pakete installiert:

  • xen-linux-system Xen Metapackage
  • xen-tools optionale (distributionsspezifische-->?) Tools zur automatischen PV Guest creation

Hauptkonfiguration

RAM und Anzahl CPU's festlegen für die dom0.[11]
Ballooning (dynamische Anpassung des RAM) ausschalten.

Bemerkung: Solange die dom0 vorallem/nur als Xen Hypervisor eingesetzt wird, kann das Ballooning deaktiviert werden.

/etc/xen/xend-config.sxp:

(dom0-min-mem 1024)
(enable-dom0-ballooning no)
(dom0-cpus 1)

Xen als default Bootoption in grub festlegen.[12]

Bemerkung: Der Xen Hypervisor bootet mit einem eigenen Kernel.

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

Umsetzung Teil 2: Virtuelle Maschinen

Bemerkung: Unter Xen werden virtuelle Maschinen auch als "paravirtualised guest", kurz "PV Guests" bezeichnet.[13]

LTSP Server

Partitionierung

Übersicht Partitionierung LTSP-Server (virtualisiert)
Name Grösse Mountpunkt Verwendung
xen-ltsp-root 25GB / LTSP Server root
xen-ltsp-home 100GB /home LTSP Server home*
xen-ltsp-swap 5GB (swap) LTSP Server swap
xen-ltsp-var 5GB /var LTSP Server var

*) Grosszügig, für 50 Benutzer gerechnet, wären das 2GB pro Benutzer. In der späteren LTSP Systemkonfiguration sollte das dann auch wirklich begrenzt werden (Stichwort: "Quotas").

Bemerkung: Um ein allfälliges Auffüllen der root Partition durch logfiles zu verhindern macht es Sinn var als separate Partition einzurichten. systemd böte allenfalls Möglichkeiten dies zu handhaben --> ?.

Kreation

Damit die Partitionen, beim erstellen der virtuellen Maschine mittels xen-tools, entsprechend erstellt werden, müssen diese in der Konfiguration eingetragen werden.
/etc/xen-tools/partitions.d/pingu-ltsp:

[root]
size=20G
type=ext4
mountpoint=/
options=sync,errors=remount-ro

[swap]
size=5G
type=swap

[home]
size=100G
type=ext4
mountpoint=/home
options=nodev,nosuid

[var]
size=5G
type=ext4
mountpoint=/var
options=defaults

Virtuelle Maschine erstellen (mittels xen-tools).

# xen-create-image --hostname=xen-ltsp --memory=8gb --vcpus=4 \
                    --dhcp \
                    --lvm=pingu-vg \
                    --dist=jessie \
                    --apt_proxy=http://192.168.50.14:3142 \
                    --partitions=/etc/xen-tools/partitions.d/pingu-ltsp \
                    --pygrub

Referenz: http://wiki.xenproject.org/wiki/Xen_Project_Beginners_Guide#Creating_a_Debian_PV_Paravirtualized_Guest

Netzwerk / Bridge

Netzwerk Interfaces (virtuell) in der Konfig eintragen.
/etc/xen/xen-ltsp.cfg:

#  Networking
#
dhcp        = 'dhcp'
vif         = [ 'mac=00:16:3E:E3:92:1C,bridge=xenbr0','mac=00:16:3E:E3:92:1D,bridge=xenbr1' ]

Domain Management

Domains werden unter Xen mit dem Befehl xl gesteuert.
Bsp.: Die Domain pingu-ltsp starten (als root auszuführen).

# xl create /etc/xen/pingu-ltsp.cfg

Ohne Argumente gibt xl eine Liste aller möglichen Unterbefehle aus.

Innerhalb der virtuellen Domain kann nun die Konfiguration normal weitergeführt werden, so wie wenn es sich um eine physische Maschine handeln würde.

Umsetzung Teil 3: LTSP Server Einrichtung

TODO