Posts mit dem Label HP Proliant Microserver Gen8 werden angezeigt. Alle Posts anzeigen
Posts mit dem Label HP Proliant Microserver Gen8 werden angezeigt. Alle Posts anzeigen

Dienstag, 19. Juli 2016

HP Microserver: OS Installation

Irgendwie bin ich nie dazu gekommen, den letzten Teil der Server-Serie zu posten. Das soll nun nachgeholt werden:

Heute installieren wir das Betriebssystem: Debian natürlich – die aktuelle stabile Version AKA Jessie AKA Debian 8.

Ein CD Laufwerk hat mein Server nicht, denn im ODD Slot ist ja die SSD eingezogen. Also gibt es im Wesentlichen folgende Optionen für das Installationsmedium:
  1. CD/DVD von externem Laufwerk
  2. Vom USB-Stick
  3. Via debootstrap
  4. Via iLO Virtual Media Image
Außerdem ist zu entscheiden, ob man Tastatur und Monitor anschließen, oder über die Remote Konsole installieren möchte.

Variante 1 ist doof, denn dann muss ich erst eine CD brennen und mit dem externen Laufwerk rumhantieren. Und CDs sind soooo 90er....

Variante 2 ist meine normalerweise favorisierte Option und extrem einfach zu machen: Debian installation image runterladen (ich nehm immer netinst) und dann einfach roh auf den Stick bügeln:

$ dd if=foo/debian-netinst.iso of=/dev/sdX

Dann den Stick einfach einstecken, Server starten, los geht's.

Variante 3 ist etwas aufwändiger und eher was für embedded Systeme wie Raspberry Pi. debootstrap ist im Wesentlichen ein System, mit dem man aus einer anderen Debian Installation heraus eine Neuinstallation auf einem gemounteten Laufwerk machen kann. So hab ich mein Debian z.B. auf eine SD-Karte installiert, um den RPi zum Laufen zu bekommen. Für einen Server nicht uninterressant, denn man kommt so ohne  Keyboard und Monitor aus, aber dafür gibt es auch andere Möglichkeiten.

Variante 4 ähnelt denen in 1 und 2, nur dass das installations image nicht auf ein physikalisches Medium kopiert, sondern auf einem Webserver zur Verfügung gestellt wird und dann von dort gebootet werden kann.

Vorbereitung

Aber erstmal müssen wir ein paar grundlegende Probleme lösen:

Der Server hat zwei SATA Controller. Die SSD hängt am zweiten, der erste bedient die 4 drive bays an der Front. Leider gibt es für Debian keinen Treiber für den RAID-Controller, also Software RAID. Auch gut.

Im allwissenden Netz fand ich eine Installationsanleitung, die empfiehlt, den Controller in den AHCI Modus zu schalten (BIOS). Leider kann man dann immer noch nicht direkt von der SSD booten, da das BIOS keine Konfiguration der Boot-Präferenz bezüglich der beiden Controller bietet. Die vorgeschlagene Lösung dafür lautet, grub auf einen USB Stick, oder eine SD-Karte zu installieren, die man dann in die entsprechenden Slots auf dem Motherboard steckt. Dann bootet das System von SD-Karte, der dortige Bootloader startet das System dann von der SSD. Nicht sehr elegant. Und auch nicht unproblematisch, denn die grub Konfiguration ist eine Wissenschaft für sich...

Nach etwas Rumprobieren fand ich dann heraus, dass man die Bootreihenfolge der beiden Controller aber sehr wohl konfigurieren kann, wenn man statt AHCI den SATA Legacy Mode verwendet. Sehr gut - so machen wir das!

Also erstmal ins BIOS booten (F9 oder via iLO: Boot to System RBSU). Dort dann den Modus einstellen:
System Options 
  -> SATA Controller Options 
    -> Embedded SATA Configuration 
      -> Enable SATA Legacy Support

Als nächstes müssen wir die Bootreihenfolge festlegen:

Boot Controller Order
  -> Ctlr:2 
    -> Controller Order 1

Und

Standard Boot Order (IPL) 
  -> IPL:1  Hard Drive C:

OS Installation

Als erstes brauchen wir einen Webserver. Auf diesem stellen wir das Installations-Image per http bereit. Die URL wird dann im iLO als virtuelles Medium eingetragen:

Virtual Media
  -> Scripted Media URL 
    -> http://192.168.0.99/debian-8.5.0-amd64-netinst.iso
  -> Boot on Next Reset -> check
  -> Insert Media


Nun können wir den Server starten/rebooten. Das geht auch aus dem iLO heraus (Server Reset) - sehr cooles Gefühl ;-).

An dieser Stelle trennen sich die Wege: Wenn wir mit Tastatur und Monitor, oder der graphischen iLO remote Konsole (Java oder .NET) installieren, können wir ganz normal arbeiten. Wer's etwas nerdiger mag, der schaltet sich nun per ssh auf das iLO und startet die remote console mit dem Befehl TEXTCONS. Das funktioniert aber nicht out of the box, weil der Debian Installer gerne den VGA Modus verstellt und den Framebuffer aktiviert, womit die virtuelle serielle Konsole nicht klarkommt. Deshalb muss man beim Booten der CD sofort Esc drücken, sobald sich der Isolinux Boot prompt zeigt. Auf diese Weise gelangt man in ein Kommandozeilen-Interface in dem man die Boot-Optionen von Hand eingeben kann. Und genau das tun wir:

    install vga=normal fb=false

Diesen Tip habe ich übrigens im Debian Wiki gefunden.

Die eigentliche Installation ist dann eher unspektakulär – alles wie bei jedem anderen Computer auch. Ein Tipp allerdings: Ich installiere zunächst komplett auf der SSD, als gäbe es die großen Disks nicht. Der Installer unterstützt das komplexe Szenario nicht nach meinem Geschmack und ich richte /home inklusive RAID lieber von Hand ein.

Als nächstes bearbeite ich gewöhnlich /etc/network/interfaces und konfiguriere dort eine statische IP-Adresse. Das ist für Server erheblich angemessener, als DHCP:

iface eth0 inet static
            address 192.168.0.10
            netmask 255.255.255.0
            gateway 192.168.0.1


Nun nur noch die gewünschte Software installieren und es kann losgehen. Apropos Software – mindestens die folgenden Tools sollten an dieser Stelle installiert werden, damit man vernünftig konfigurieren kann:
  • sudo
  • vim
  • hdparm
  • mdadm
Und der verwendete non-root user sollte in /etc/sudoers angelegt werden. Von root logins rate ich grundsätzlich ab – auch unter ssh.

Software RAID einrichten

Als Erstes müssen wir mal herausbekommen, wie unsere diversen Platten heißen:

$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda           8:0    0   3.7T  0 disk  

sdb           8:16   0   3.7T  0 disk 
sdc           8:32   0 117.4G  0 disk 
|-sdc1        8:33   0 112.6G  0 part  /
|-sdc2        8:34   0     1K  0 part 
`-sdc5        8:37   0   4.8G  0 part  [SWAP]


OK - also sda und sdb sind unsere RAID-Platten. Diese partitionieren wir nun:

$ sudo fdisk /dev/sda

'g':  create a new empty GPT partition table (for disks >2TB)
'n':  create new partition (accept all defaults)
't':   change partition type to 'LINUX RAID' (21)
'w':  write changes to disk and exit:w

Und analog auch für sdb.

Bei einem RAID Server ist es ratsam, den write-cache der Platten nicht zu verwenden. Also erstmal Status checken:

$ sudo hdparm -W /dev/sda
    /dev/sda:
     write-caching =  0 (off)


Sehr gut – ist aus. Wenn nicht hilft dies:

$ sudo hdparm -W0 /dev/sda

Und natürlich analog für sdb.

Nun legen wir das RAID-System an. In meinem Fall RAID1:

$ sudo mdadm --create /dev/md0 --level=1 \
    --raid-devices=2 /dev/sda1 /dev/sdb1

Das geht recht schnell, aber die eigentliche Musik spielt im Hintergrund, denn vom User unbemerkt wird das RAID synchronisiert.  Den Fortschritt kann man so prüfen:

$ cat /proc/mdstat
    Personalities : [raid1]
    md0 : active raid1 sdb1[1] sda1[0]
          3906887488 blocks super 1.2 [2/2] [UU]
          [>....................]  resync =  0.3% (15118784/3906887488) finish=1872.7min speed=34633K/sec
          bitmap: 30/30 pages [120KB], 65536KB chunk

    unused devices: <none>


Das dauert ewig (bei mir >30 Stunden), aber man muss nicht warten bis es fertig ist.

Nun haben wir ein RAID1, aber dieses ist das Äquivalent einer rohen Platte – d.h. wir müssen noch (mindestens) eine Partition anlegen:

$ sudo fdisk /dev/md0

Und ein Filesystem kann auch nicht schaden:

$ sudo mkfs.ext4 -m 0.1 /dev/md0p1

Die Option -m legt fest, welcher Prozentsatz für root reserviert wird. Default sind 5%, was bei einer 4TB Platte einfach viel zu viel ist.

Als nächstes müssen wir das RAID einbinden, d.h. in /etc/fstab eintragen, damit es automatisch gemountet wird. Nun könnte man das Device /dev/md0p1 verwenden, doch sicherer ist es, die UUID zu verwenden. Und die findet man so:

$ sudo blkid /dev/md0p1
    /dev/md0p1: UUID="0a39c667-1947-4e97-993e-d294cedc6752"

    TYPE="ext4" PARTUUID="1ed56347-2adc-4454-8fb5-c11af8c7e1eb"

In /etc/fstab tragen wir dementsprechend ein:

UUID=0a39c667-1947-4e97-993e-d294cedc6752 /home/ ext4 errors=remount-ro 0 1

Nur noch mounten und das System ist im Wesentlichen fertig:

$ sudo mount -a


Sehr gut. Nun kann es losgehen: D.h. weitere Software je nach Anwendungsfall installieren, Daten draufspielen etc. etc.

Dienstag, 5. Januar 2016

SSD Caddy für DVD-Bay

Im vorigen Post hatte ich von meinem neuen Server berichtet. Wer genau auf die Bilder geachtet hat konnte sehen, dass meine SSD für das Betriebssystem mehr oder weniger lose im Slot lag, der eigentlich für ein DVD-Laufwerk gedacht war. Nun hat mein Server kein optisches Laufwerk - wozu auch? D.h. dieser Slot bietet sich also an, um die SSD unterzubringen.

Nun ist eine SSD leicht und unempfindlich, d.h. ich könnte sie einfach mit etwas Klebeband befestigen, aber das fand ich stillos. Ob HP passende Trays anbietet entzieht sich meiner Kenntnis - jedenfalls hab ich keine gefunden. Also als nächstes mal auf Amazon schauen. In der Tat findet man mit geeigneten Suchbegriffen ("SSD Caddy") Trays im vermeintlich richtigen Format (9.5mm Höhe) inklusive SATA-Adapter. Gekauft.

Zwei verschiedene Produkte habe ich ausprobiert. Keines davon war ideal. Sie haben in den Slot gepasst und die SSD ging auch rein, aber in keinem Fall passte die dazugehörige Frontblende wirklich richtig und die Originalblende konnte man nicht mehr montieren, wenn der Caddy im Schacht steckt. Das sieht Sch**** aus. Ja ich weiß - sieht ja keiner, steht eh im Keller bla bla bla. Sagte ich schon, dass ich was stilvolles wollte? ;-)

Also anders. Wozu habe ich eigentlich einen 3D-Drucker? Zunächst habe ich mal die einschlägigen Modell-Repositories durchsucht. Da gab es diverse Adapter für die HDD-Bays, aber nix für den ODD-Schacht, das meinen Vorstellungen genügt hätte. Also selber entwerfen.

Erstmal maßnehmen

Vor das Objekt hat die Natur das Konstruieren gesetzt und davor wiederum das Vermessen der Lage. Also Messschieber und Lineal geholt und das Fach vermessen. Kling trivial, ist es aber nicht so ganz, denn wer sich die Situation genauer ansieht, erblickt diverse Haken, Klammern etc. und das ist schwierig korrekt zu vermessen:
Nach einigem Gefummel hatte ich aber alle relevanten Zahlen auf Papier und eine grobe Zeichnung hingepfuscht.

Design

Nun musste das Gekritzel also nur noch in ein echtes Design übersetzt werden und so stellte sich als nächstes die Frage, welches Werkzeug ich verwenden will. Die meisten Leute nehmen ein traditionelles CAD-Programm. AutoCAD (wenn man das Geld dafür ausgeben will), Sketchup oder FreeCAD oder sowas. Als Opensource Jünger will ich natürlich was, das unter LINUX läuft. Und OSS sollte es idealerweise auch sein. Also FreeCAD? Nein - ich bin kein Zeichner, ich bin ein Coding-Guy. Und auch für diese Spezies gibt es was schönes: OpenSCAD. Das ist eine simple Programmierumgebung zum Design von 3D Modellen. Nicht super perfekt, aber schon sehr benutzbar. Leider nicht Python basiert, obwohl es mit SolidPython immerhin inzwischen etwas in der Richtung gibt. Kürzlich habe ich was entdeckt, das mächtiger, pythoniger und ausgefeilter erscheint (CADquery), aber das hab ich noch nie benutzt und es erscheint mir einigermaßen komplex und in den normalen Debian Repositories ist es auch nicht. Also was soll's – diesmal verwenden wir OpenSCAD.

Nach einigem Herumprobieren hatte ich eine erste Version des Caddys fertig:

v0.1
..., aber wie es immer so ist hatte ich dann doch eine essentielle Aussparung (für einen Kabel-Clip) übersehen und so passte das Ding nicht in den Slot. Außerdem hatte ich die hinteren Aussparungen zu knapp bemessen, so dass die Slot-Blende nicht ein- und ausrasten konnte.

In der zweiten Iteration passte es ganz gut in den Slot und hat auch noch eine abgeschrägte Rückseite bekommen, damit die Schachtblende besser draufpasst:

v0.2
..., aber wo ich schonmal dabei war hatte ich einen zusätzlichen Clip hinzugefügt, damit das Tray in den vorgesehenen Mechanismus einrasten kann – und diesen zu weit links plaziert.  Zudem war die Aussparung für den Kabel-Clip zu kurz.

Die dritte Generation hatte dieses Problem nicht mehr:
v0.3
Leider passte die blöde Blende immer noch nicht, sobald das Ganze in Slot steckt - irgendwie zuwenig Platz. Grumpf!

Version 4 (naja eigentlich 0.4 in meiner Versionierung, denn so verblendet bin ich nun wieder nicht) habe ich dann von grundauf umdesigned:
v0.4
weniger massiv und teils mit großen runden Löchern perforiert, um Material und v.a. Druckzeit zu sparen. Sah viel besser aus, passt ganz gut in den Slot, hatte aber immernoch ein Problem, wenn man die Slotblende zum Schluss aufstecken wollte. Offenbar ist die SSD noch zu nah am hinteren Ende.

Also nun Version 0.5: SSD etwas weiter nach vorne verschoben, damit die Abdeckung draufgeht, ein bisschen an den Maßen gefeilt, Seitenführungen noch etwas gekürzt, noch ein paar mehr Löcher in die Grundplatte gemacht und zuguterletzt noch Löcher für Befestigungsschrauben hinzugefügt, obwohl ich die wohl nicht verwenden werde, denn die SSD passt straff in die Aussparung. Wenn man aber stattdessen eine Festplatte nimmt ist festschrauben vielleicht sinnvoll...

v0.5

An diesem Punkt war ich mit dem Ergebnis ganz zufrieden. Und so sieht das dann in echt aus:




Und damit der nächste, der sowas haben will nicht wieder bei Null anfängt habe ich Source Code und STL-File auf youmagine deponiert. Nun ist die Hardware-Seite des Servers also komplett zu meiner Zufriedenheit und ich werde mich im nächsten Post dann der OS Installation zuwenden.

 

Was habe ich gelernt?

  • openscad ist ein nettes tool, allerdings fühlt es sich nicht ganz ausgereift an und ist stinklangsam - selbst bei so einem simplen Objekt
  • Planen ist gut, rapid Prototyping ist besser. Die Fehler, die ich im Prozess gemacht habe, hätte man natürlich durch gründlichere Planung, besseres Ausmessen etc. finden können - aber drucken und ausprobieren ist exrem effektiv und effizient. Es ist einfach etwas ganz Anderes, einen Prototypen in der Hand zu haben, als sich theoretische Gedanken zu machen. OK - die Druckzeiten sind bei einem Heim-3D-Drucker happig (viele Stunden), aber wenn man v.a. Abendbastler ist, dann druckt man am besten über Nacht und kann am nächsten Tag testen und weitermachen.
  • Eventuell hätte ich mir was gespart, wenn ich am Anfang eine super simple Schablone aus Karton geschnitten hätte, um die teils unpräzisen Messwerte für die Lage der diversen Haken und Hindernisse zu prüfen.
  • 3D-Drucken macht Spaß! Ok - dass wusste ich schon ...