Endlich sind alle Teile für meinen Server gekommen und ich freue mich anfangen zu können.
Das wirklich spannende ist, dass ich nicht einfach die Platten aus den alten Server nehmen und in den neuen Server schieben kann, den zfs-Pool importiere und alles ist gut. Nein, leider nicht. Also war mein Vorgehen folgendes:
- Sicherung anlegen
- Server aufbauen
- Platten integrieren
- System installieren und konfigurieren
- Backup zurück spielen
So die Theorie!
In der Praxis hatte ich folgendes vor. Die beide HDDs sollten wieder als Mirror konfiguriert und als Daten-Pool dienen. Beiden beiden baugleichen SSDs hatte ich etwas anderes vor. Im alten Server gab es eine SSD für das Betriebssystem und eine SSD diente als L2ARC. Da ich aber nie so hohe Last hatte, dass sich dieser L2ARC bemerkbar machte, habe ich ein anderes Setup ausgearbeitet.
- eine sd-Karte mit 16GB Kapazität ist für das OS gedacht (der HP hat einen Slot dafür onboard)
- die beiden HDDs sollen als Mirror die Daten speichern
- die beiden SSDs werden als Mirror-Verbund dazu dienen meine jails zu speichern (somit erwarte ich schneller jails und somit schneller Performance für Web-, File- und Datenbank-Server
Alle Platten werden über den AHCI-Controller direkt angesprochen, so habe ich eine sehr schnelle Verbindung. Von CD gebootet wollte ich die Installation starten, aber mein Bauchgefühl hatte noch ein Problem. Die SD-Karte passte irgend wie nicht in das Konzept. So habe ich mit im Endeffekt für einen USB-Stick mit 16GB entschieden, der auch direkt auf das Main-Board des Server gesteckt wird. Durch die USB2 Verbindung sollte es für das Booten reichen.
Warum ich so ein Layout gewählt habe, lässt sich mit der Flexibilität erklären. Ich kann jeden der beiden Mirrors in Kapazität erweitern. Kein SATA-Port wird für das OS verbraucht. Manche Leute schließen eine SSD an den 5.Port für eine OS Platte an. Auch das kann ich mit diesem Setup bessern machen in Zukunft. Falls ich einmal mehr HDD-Platz brauche, dann könnte ich die Bays, in denen im Moment noch die SSDs sind mit baugleichen HDDs bestücken und den Platten Mirror auf ein 10-Raid vergrößern (Raid 10 hat die beste Performance) und den 5. SATA Port mit einer SSDs verbinden und die Jails von dort laufen lassen. Da ich jeden Tag eine Sicherung der Jails mache sollte bei einem Ausfall nicht viel verloren gehen. Sol wären alle SATA-Ports optimal ausgenutzt und zukunftssicher!
Die Installation von FreeBSD ging, wie gewohnt einfach und ich war sehr erstaunt, dass alle Devices erkannt wurden. Wie ich aber nach der Installation die Maschine neu startete, kam es zu Kernel-Panic! WAS!!!! Ich konnte es kaum glauben, was ich da las! FreeBSD konnte den ZFS-System-Pool nicht finden. Ich versucht auch eine Installation mit UFS, aber gleiches Ergebnis. Die Nacht wurde immer länger und ich immer verzweifelter! War des doch ein Fehlkauf? Sollte ich die alte Hardware wieder nehmen?
Im Internet wurde ich aber nach kurzen suchen fündig. HP hat mit 3TB Platten und ZFS ein Problem, dass der Kernel sich ausgerechnet mit 3TB Platten in Panik läuft. Ein findiger Typ hat einen neuen zfsloader geschrieben. wenn man den aktuellen mit diesem austauscht, dann sollte das System booten.
Ich hatte nix zu verlieren und tauschte die Datei im /boot Verzeichnis aus, und siehe da, das System startete durch! Nun konnte ich alles andere einrichten. Die zpools wurden angelegt und die Backups nach und nach eingespielt.
Bei der Einrichtung der Jails bemerkte ich beim ersten starten der Jails, dass es eine gute Entscheidung war, diese auf die SSDs zu spielen. Die Jails starten nun wesentlich schneller und die Datenbank zugriffen habe sich merklich gesteigert.
Da in dem HP-Server Gen8 zwei Netzwerk-Karten verbaut sind, dachte ich mir, es wäre doch prima beide Interfaces zu nutzen. Ich habe mit überlegt mich mit dem lagg-Interface auseinander zu setzen.
Dieses Interface bietet die Möglichkeit mehrere Netzwerk-Karten im Failover- oder anderen Setups zu verbinden. Bei einem Klein-Server finde ich es sehr schade, wenn eine Netzwerk-Komponente brach liegt und darauf wartet einen Failover zu bedienen. Das ist nicht effizient. Ich habe die beiden Interface so zusammen gefasst, dass diese eine Lastverteilung machen. so kann ich den Durchsatz verbessern.
Dieser Typ ist in der man-Pages des lagg-Interfaces so beschrieben:
…
loadbalance: Balances outgoing traffic across the active ports based on
hashed protocol header information and accepts incoming
traffic from any active port. This is a static setup anddoes not negotiate aggregation with the peer or exchange
frames to monitor the link. The hash includes the Ethernet
source and destination address, and, if available, the VLAN
tag, and the IP source and destination address.
…
Die Einrichtung findet in der rc.conf-Datei statt und sieht folgendermaßen aus:
…
ifconfig_bge0=“up“
ifconfig_bge1=“up“
cloned_interfaces=“lagg0″
ifconfig_lagg0=“laggproto loadbalance laggport bge0 laggport bge1″ipv4_addrs_lagg0=“192.168.1.254/24 192.168.1.10-16/32″
…
Ja, man kann an dieses Interface auch mehrere IP-Adressen für Jails binden.
Nun läuft das System endlich zu meiner Zufriedenheit. Den zfsloader habe ich in einem Patch Verzeichnis gesichert, damit ich falls ein Update diese überschreibt und nix mehr geht, kann ich diese wieder herstellen.
Jetzt geht es daran das System einzufahren! Ich freue mich schon auf die Ergebnisse.
Mehr kommt im nächsten Eintrag!
Gruß
Robert