In eigener (Server-) Sache

Wenn man bedenkt, was man heutzutage alles auf einen Server packt, dann ist das schon eine ganze Menge. Und verfügbar soll das im Fehlerfall ja auch immer noch sein. Und nichts ist schlimmer, als wenn die digitalen Schnappschüsse der letzten Jahre und andere wichtige Daten auf Nimmerwiedersehen bei einem Servercrash verschwunden sind. Ich mache zwar immer ein regelmässiges Backup auf externe Platten, aber das ist mir auf die Dauer doch zu aufwändig. Also musste ein zweiter Server her, der mir dann als Backup dienen wird. Die Daten werden automatisch repliziert und damit ist die Sache dann gegessen und man vergisst nicht, ein Backup anzustossen.

Da ich als Basis für Andondo.com und Andondo.de jetzt schon mehrere Jahre einen HP Microserver N40L ohne Probleme oder Ausfälle betreibe, fiel mir die Wahl beim Nachfolgegerät nicht schwer. Daher steht nun neben dem N40L ein Microserver Gen8 G1610T.

Server Andondo.com

Im Gegensatz zum N40L habe ich mich beim Gen8 für FreeBSD entschieben, da ich ZFS als Dateisystem einsetzen möchte.

Bei der Installation von FreeBSD bin ich wie auch in den Foren beschrieben über die üblichen Probleme gestolpert. Die Unterstüzung des RAID Controllers HP120i im Gen8 ist bei den freien Betriebssystemen noch verbesserungsfähig und der Controller hält zusätzlich einige weitere Fallstricke bereit. Da die Microserver zu einem unschlagbaren Preis vier Einbauschächte für Festplatten bereithalten und man auch an Stelle eines optischen Laufwerks noch weitere Platten anschliessen kann, hatte ich folgende Konfiguration geplant:

  • Einbauschacht 1 (BIOS Kennung: 0x80): Festplatte
  • Einbauschacht 2 (BIOS Kennung: 0x81): Festplatte
  • Einbauschacht 3 (BIOS Kennung: 0x82): Festplatte
  • Einbauschacht 4 (BIOS Kennung: 0x83): Festplatte
  • Optisches Laufwerk (BIOS Kennung: 0x84): SSD

Festplatten und SSD waren vorhanden, fehlten nur einige Adapter und Kabel und ein Einbaurahmen für den optischen Laufwerksschacht und schon konnte es losgehen. Da wie erwähnt der RAID Controler nicht benötigt wird, da ja ein ZFS Pool mit RAID zum Einsatz kommen soll, kann man das RAID des Controlles im Setup des Gen8 deaktivieren, sodass die einzelnen Laufwerke normal vom BIOS erkannt werden können. Lässt man das RAID aktiv, dann bootet der Controller nur vom einem Array, das nur aus Laufwerken der vier Einbauschächte gebildet werden kann. Eine SSD am optischen Anschluss wird nicht berücksichtigt. Leider hat das BIOS zusätzlich die unangenehme Eigenschaft, dass der Gen8 ohne RAID Konfiguration nur dann von der SSD bootet, wenn sich in den Einbauschächten keine Festplatten befinden. Ist dies jedoch der Fall, so versucht der Gen8 immer vom Laufwerk in Einbauschacht 1 zu booten, aber da soll die SSD ja aus nachvollziehbaren Gründen genau nicht hin. Schaltet man den Controller in den „Legacy Mode“ kann man das umgehen und das Bootlaufwerk direkt angeben, man verliert aber AHCI und die damit verbundenen Vorteile. Also auch keine Lösung. Der Gen8 (wie auch der N40) haben aber einen USB Port auf dem Mainboard, der mit einem entsprechenden Stick bestückt werden kann. Auf diesen Stick kann man dann das Betriebssystem installieren und davon auch prima booten. Das hat allerdings den Nachteil, dass bei Unix unter Umständen viele Schreiboperationen (logging, swap, tmp, usw.) auf diesem Speicher ausgeführt werden, und leider ist diese Speicherart für einen solchen Einsatz nicht gedacht. Es ist abzusehen, dass ein derart betriebener USB Stick nach kurzer Zeit das Zeitliche segnen wird. Das geht also auch nicht. Wenn schon USB Stick, dann darf vom USB Stick nur gelesen werden und danach sollte der Stick nicht weiter aktiv genutzt werden. Dann ist die Haltbarkeit kein Problem mehr. Verschiedene Bootloader bieten zu diesem Zweck einen „Chainload“ an, d.h. es wird initial von einem Gerät gebootet, der Systemstart erfolgt aber von einem anderen Gerät. Der erste Bootvorgang hat also nur den Zweck dem Bootloader mitzuteilen, von welchem anderen Gerät der eigentliche Systemstart erfolgen soll. Es existieren in diversen Foren einige Anleitungen, die GRUB unter Linux auf diese Art und Weise zum Booten von der SSD im Microserver verwenden. Leider habe ich hier aber nicht Linux sondern FreeBSD im Einsatz. Und es funktioniert auch mit FreeBSD! Dabei wird kein Grub benötigt, FreeBSD bringt bereits alles Notwendige mit. Ich bin also wie nachfolgend beschrieben vorgegangen. Dazu muss ich vorher noch anmerken, dass der Gen8 zusätzlich zum USB Port auch noch einen MicroSD Kartenleser auf dem Motherboard hat. Der verhält sich ähnlich wie der USB Port und ist ebenfalls bootfähig. Also warum nicht dieses Gerät verwenden und mit einer kleinen MicroSD Karte ausstatten? In meinen Falle benutze ich eine Karte mit 512MB Kapazität, die ich noch in einem alten MP3 Player stecken hatte und die Kapazität ist allemal ausreichend. Gesagt – getan.

Die folgende Vorghensweise habe ich mit einer SD Karte im internen Leser durchgeführt. Dieses Gerät wird unter FreeBSD als „da1“ erkannt. Generell sollte das auch analog mit einem USB Stick auf dem Motherboard funktionen – dieses Gerät hat die Kennung „da0“. Ich habe das allerdings nicht getestet, daher kann ich hierfür, wie auch für alle anderen Schritte, keine Garantie übernehmen. Wer das nachvollziehen möchte, handelt auf eigene Verantwortung und Gefahr.

Zuerst natürlich die Karte in den SD Kartenleser einlegen und dann ein entsprechendes Image von FreeBSD auf einem USB Stick oder CD/DVD oder per Netzwerk booten und die Installation soweit durchführen bis man gefragt wird, ob man noch vor dem Abschluss der Installation auf die Kommandozeile (shell) wechseln möchte, um dort die Konfiguration ggf. weiter anzupassen. Hier mit „Ja“ antworten und die folgenden Befehle eingeben:

  • Anlegen einer Partition auf der SD Karte:
    gpart create -s GPT da1
  • Den Bootcode auf die SD Karte übertragen:
    gpart bootcode -b /boot/boot0 da1
  • Konfiguration des Bootloaders anpassen (Automatischer Start (-s 5) von Gerät 0x8x (-d 0x8x)). 0x8x ist die BIOS Kennung desjenigen Geräts, von dem das Betriebssystem gestartet werden soll. Sind weniger als vier Laufwerke in den Einbauschächten vorhanden, so wird die SSD als letztes Gerät vom BIOS identifiziert. Die Gerätekennungen starten hierbei mit 0x80 (Einbauschacht 1). Hat man z.B. nur zwei Laufwerke installiert (also 0x80 und  0x81), so erhält die SSD die Kennung 0x82. Die Option „-d <Gerätekennung>“ muss daher entsprechend der gewählten Hardwarekonfiguration angepasst werden. Die Gerätekennungen der installierten Laufwerke werden auch beim Systemstart angezeigt. Für meine Konfiguration (alle Einbauschächte bestückt) erhält die SSD die Kennung 0x84 und das Kommando lautet daher
    boot0cfg -Bv -o setdrv -d 0x84 -s 5 da1
  • Nun die Shell wieder verlassen
  • Installation abschliessen
  • System herunterfahren und neu starten. Vor dem Neustart das Installationsmedium entfernen!

Das System startet nun neu und nach Booten von da1 erscheint der Bootloader von FreeBSD, der dann das installierte System von der SSD startet.