Ubuntu Upgrade / Neuinstallation mit geringer Downtime

Wenn man den Ubuntu LTS auf einem Server einsetzt hat mein ein relativ ruhiges Leben. Es gibt kaum wartungsaufwand, da sich die Updates automatisch einspielen (wenn man das will), nur ab und an sollte man den Rechner neustarten.

Will man die Maschine jedoch auf die neue Version hochziehen ist Arbeit angesagt. Ob man nun das Upgrade macht oder ein blankes System aufspielt. Beides kostet Zeit und eine Downtime. Kann man ein ersatzsystem sein eigenen nennen oder eine Weile auf die Services verzichten ist das keine Problem, leider ist dem selten so.

In meinem Fall geht ohne meinen Ubuntu-Server gar nichts und für eine komplettes Spiegelsystem hab ich weder Geld noch Platz. Ich brauchte einen Weg um die Downtime für die gesamte Familie auf unter 4 Stunden zu drücken. Kurz der WLAN Wecker sollte am nächsten Morgen wieder wecken. (Ubuntu-Server = Radius, MediaStorage und MediaServer)

Was es dazu braucht ist ein Software-Raid (Mirror) eine zweite Maschine und eine Virtuelle-Umgebung die eine physikalische Platte „durchreichen“ kann.

Der Trick ist einfach. Man baut im laufenden Betrieb eine der Mirror-Platten aus. Das kann jeh nach Konfiguration (kein HotSwap, „umbauarbeiten“ notwendig) eine kurze Downtime bedeuten. Anschließend schließt man die Platte an einem anderen Rechner an und haut ein VM-Host seiner wahl drauf. Dieser sollte direkt mit Physikalischen Platten umgehen können. (VMWare, VirtualBox) Nun muss man nur noch eine VM erzeugen und anschließend von der Platte booten. In meinem Fall funktionierte das tadellos. Der virtuelle „Server“ meckerte zwar eine defekten Raid und fehlendes Netzwerk an, aber das ließ sich schnell beheben.

Ab diesem moment kann man in aller Sehlenruhe sein Upgrade einspielen oder gleich den ganzen Server neu aufsetzen.

Anschließen muss man nur die eigentliche Hardware runterfahren. Die noch aktive Platte ausbauen und (ganz wichtig) die RAID-Header-Informationen löschen (mdadm –zero-superblock). Die „VM“-Platte wieder in den Rechner einbauen durchstarten und hoffen dass man alles richtig eingerichtet hat. Wenn alles klappt bootet der Rechner ohne murren durch, man richtet den RAID wieder ein und hat eine Downtime von unter einer Stunde.

3Ware installation

Das erste was nach der Installation der Hardware auffällt ist, dass der Boot-Vorgang extrem viel länger dauert. Beim ersten Start hat es locker 30 Sek gebraucht, bis das BIOS des RAID-Controllers durch war und mein Server endlich ins Linux gebootet hat. In den folgenden Boots wird das nicht viel besser.

Die Installation des 9650 ist unter Ubuntu 9.04 denkbar einfach. Auch alle anderen Distributionen werden (wenn auch nicht offiziell) ohne Probleme unterstützt. Einzig die Kernelversion 2.6.14  oder die entsprechenden Treibermodule werden vorausgesetzt. 3Ware bietet drei Möglichkeiten den RAID-Controller zu administrieren. BIOS, CLI und die 3DM -genannte webbasierte RemoteManagement – Konsole. Die Installation erfolgt problemlos, einzig eine „echte“ JavaRuntime und das Programm „bc“ werden benötigt. Beide sind aber im offiziellen Repository enthalten und man gefährdet seinen Server nicht mit Fremdquellen. Ein „kleines“ „aptitude install“ vorneweg und die Installation kann beginnen.

Hat man eine grafische Oberfläche kann man das Setup einfach so starten, steht einem nur ein Kommandozeilen-Terminal zur Verfügung muss man noch den Parameter „-console“ anhängen. Anschließend führt ein Assistent durch die Installation und nach „wenigen“ Minuten steht einem der RAID-Controller in vollen Funktionsumfang zur Verfügung.

sudo aptitute install bc
tar xfvz 3DM2_CLI-Linux-x86_64-9.5.2.tgz
sudo ./setupLinux_x64.bin -consol

Jetzt wird man durch den Assistenten geführt. Das dauert wie gesagt ein paar Minuten. Anschließend ist alles nach Wunsch installiert und konfiguriert. Will man nachträglich etwas ändern so findet man das Config-File unter /etc/3dm2/

Man muss nur noch dafür sorgen, dass die Remote – Konsole auch automatisch gestartet wird. Leider ist der mitgelieferte Startscript, der auch brav unter /etc/init.d abgelegt wird, nicht ganz Standardkonform. Es fehlen die Angaben zu Required-Start und Required-Stop. Ergo schnell die Datei mit einem Editor der Wahl geöffnet und den Header angepasst.

#!/bin/sh
#
# 3dm2:         Starts the 3ware daemon
#
# Author:       Michael Benz

#
# Default-Start: 3 4 5
# Default-Stop: S 0 1 6
# Required-Start:  $network $remote_fs $syslog
# Required-Stop:   $network $remote_fs $syslog
# Provides: tdm2
# Short-Description: 3ware Daemon
# Description: Start the 3dm2 application which logs the current state
#              of the 3ware DiskSwitch controller card, and then polls
#              for state changes.
#
# config: /etc/3dm2/3dm2.conf

Zeile 9 und 10 sind von mir eingefügt. Anschließend folgenden Befehl ausführen.

sudo update-rc.d tdm2 defaults

Nun startet die Remote-Konsole automatisch beim Systemstart mit.
Für den ersten Test startet man entweder neu oder ruft den Script manuell auf.

/etc/init.d/tdm2 start

Wenn man die Konsole aufrufen will muss man beachten, dass nur HTTPS anfragen beantwortet werden. Nach dem Login (Standartpassword: 3ware) sollte man sofort die Passwörter ändern und ein BIOS-Update einspielen. letzteres bedarf leider eines Neustarts.

Anschließend kann man seine RAID-Arrays konfigurieren.