Wie viele interessante Geschichten fängt auch diese mit einer zufälligen Gelegenheit an. Die Situation, um die es hier ging, war, dass eine universitäre Einrichtung bei unserem lokalen Hackerspace anfragte, ob wir nicht ein paar ältere Server haben wollten, die aus dem laufenden Betrieb dekommissioniert wurden (vermutlich um sich die Verschrottungskosten zu sparen, aber nun ja). „Ein paar“ waren dann schlussendlich mehr als 2 volle Full-Height-Racks an 1HE-Supermicro-Servern. Der Löwenanteil davon ältere Dual-Node-Server, also Servergehäuse, in denen ein Netzteil, aber zwei Mainboards in einer proprietären Bauform untergebracht sind. Nach ein paar Wochen ausreizen der maximalen Belastbarkeit der Quadratmeter-Traglast des Bodenbelags im Hackerspace und der mit 16A abgesicherten Steckdosen sowie etwas Rumspielen mit Kubernetes, Ceph und sonstiger Cluster-Software (wann hat man schon mal so viel Hardware gleichzeitig herumstehen, mit der man Clustern kann), stellt sich dann aber doch relativ schnell Ernüchterung ein: Die Server sind Dual-Node Dual-CPU Opteron-Server, und damit viel zu alt, um sie sinnvoll für egal was zu verwenden. Da wir mit so vielen Servern ohnehin nichts anfangen konnten, haben wir an alle befreundeten Entitäten, die Interesse hatten, Server herausgegeben. Ich habe mir auch 2 davon geschnappt, und war mir sicher, dass man da was tolles draus bauen kann. Und genau darum geht es hier…
Meine Idee war, dass ein Ultra-Low-Power/Low-Noise Backup-Server eine tolle Sache wäre. Einfach die vorhandene Hardware bis auf die Backplane rausschmeissen, und irgendein kleines Netzteil und ein Mini-ITX-Board reinbauen, fertig. Vielleicht kriegt man noch ein paar HDDs extra auf der anderen Seite unter. Soweit das Grobkonzept, aber der Teufel steckt wie üblich im Detail.
So oder so, erstmal muss alles raus, was man definitiv nicht verwenden will, also die Mainboards (2x Supermicro H8DMT-F mit je 2 AMD Opteron 2382 CPUs und 32GB DDR2(!)-ECC-Ram pro Node). Das ist einfach viel zu alt. Eine Node verheizt deshalb auch gleich mal so 180W im Idle (wo natürlich auch die Lüfter und das IPMI ihr übriges zutun), und 40mm Counter-Rotating Serverlüfter sind zwar vom Luftdurchsatz her beeindruckend, aber nicht grade wohnzimmer- oder überhaupt wohnungstauglich (und nur mit einer dicken Stahltür noch grade noch so kellertauglich). Beim Netzteil siehts nicht viel anders aus, alles viel zu laut…
Das sind im übrigen die Mainboards und das hier das Gehäuse.
Also einmal alles leer machen: Mainboards, Lüfter, Netzteil, Netzteil-Breakout-Board, alles raus, es bleibt nur die Backplane. Die Lüfterhalter und I/O-Shields werden hinterher noch als Vorlage dienen und später noch ausgetauscht:
Als nächstes muss ein Netzteil her. ATX fällt bei 1HE flach, genauso wie Flex-ATX. Pico-PSUs würden theoretisch (ggf. mit 90° Adapter) funktionieren, aber eher nicht, wenn hinterher noch Festplatten dran sollen. Gleiches gilt für Mainboards, die über einen Gleichspannungs-Hohlbuchsenstecker (D/C-Barrel Plug) am I/O-Shield betrieben werden: Nicht genug Saft.
Glücklicherweise haben die Netzteile, die bei Supermicro in den kurzen 1HE-Gehäusen (SC-51x..) verbaut werden (erhältlich von 200w bis etwa 350w), die gleichen Außenmaße wie das Original-Netzteil…naja fast. Der Netzteiltunnel verengt sich nach einem Viertel der Strecke, daher muss der weichen, aber der wäre eh tendentiell nur im Weg, also weg damit. Ich habe ein Supermicro PWS-202-1H benutzt, weil ich es noch da hatte, aber beim neu Kaufen lohnen sich die aktuelleren Revisionen dieser Netzteile aufgrund der besseren Effizienz und der leiseren Lüfter eher. Am einfachsten gebraucht bekommt man die Netzteile, wenn man nach kurzen 1HE Supermicro Cases und Servern auf eBay sucht. Bei diesen Gehäusen sind die üblicherweise mit dabei, denn diese Gehäuse gibt es bei Supermicro schon relativ lange. Im Grunde sollten die meisten 1HE-Servernetzteile, die nicht herstellerspezifisch sind, passen. Also raus mit dem Blechteil in der Mitte.
Mit Dremel, Blechschere und Akkuschrauber zum Ausbohren der Nieten war der Tunnel schnell entfernt. Kanten entgraten und Netzteil einpassen. Meines hat als einzige hier verwendbare Befestigungsmöglichkeit vorne 2 Gewindelöcher im Blech, also noch schnell 2 neue Löcher gebohrt und von unten gesenkt und das Netzteil passt. Die Gewinde sind die gleichen wie überall sonst im Gehäuse, man kann also die sehr flachen Senkschrauben des Gehäuses verwenden, ohne dass Schrauben überstehen.
Als nächstes wird das Netzteil modifiziert. Der Lüfter darin ist einfach viel zu laut. In dem Gehäuse wird später anderweitig für genug Airflow gesorgt und es wird sich später in einem normalen Rack befinden. Der Lüfter wird also nicht gegen extreme Umweltbedingungen kämpfen müssen. Ich habe also aus meiner Ersatzteilkiste einen Lüfter über einen Low-Noise-Adapter von Noctua angeschlossen (welcher einfach nur einen etwas dickeren Widerstand in die VCC-Leitung einschleift). Als Lüfter eignet sich meiner Meinung nach am besten ein Supermicro FAN-0100L4 (der leiseste der 40/28mm Supermicro Lüfter), oder ein Arctic S4028-6K (die sind super und die habe ich auch im Rest des Gehäuses verwendet. Die Arctic-Lüfter weisen im Datenblatt explizit aus, dass sie auch sauber über die Eingangsspannung reguliert werden können, obwohl das normale 4-Pin-PWM-Lüfter sind. Das ist bei vielen Lüftern nicht der Fall!). Ich habe einen Supermicro-Lüfter benutzt, weil ich von denen noch einen da hatte. Auf jeden Fall muss es für Servernetzteile meist ein 28mm tiefer Lüfter sein. Auch kann nicht jedes Netzteil einfach modifiziert werden. Grade größere Servernetzteile, welche die Lüfterdrehzahl überwachen und diese ggf. über PM-Bus ans IPMI ausgeben, weigern sich oft zu starten, wenn der Lüfter nicht eine gewisse Mindestdrehzahl erreicht, die das Netzteil erwartet. Low-Noise-Adapter würden daran nichts ändern. Diese senken die Umdrehungen über die Spannung, oder limitieren die PWM-Range, aber ausgelesen wird dennoch das unveränderte Tacho-Signal. Man könnte da was bauen, das lohnt aber den Aufwand nicht.
Dass Arbeiten an Netzteilen bei mangelnder Sorgfalt und/oder Sachkenntnis lebensgefährlich sein können, sollte jedem bewusst sein! (Nicht am Kondensator lecken!)
Das Netzteil ist fertig, als nächstes kommt die Wahl des Mainboards. Da wird es etwas kniffelig, aber es gibt Möglichkeiten. Die größte Hürde an dem Gehäuse sind zunächst die selten dämlichen Lochabstände. Im vorderen Bereich (also direkt hinter den Festplatten bzw. den Lüftern) gibt es ein Set von vier Befestigungs-Gewinden, die fast exakt das MiniITX-Lochbild haben. Aber halt auch nur fast. Die Löcher sind jeweils etwa 0,5-1mm zu weit Richtung Mitte des Mainboards, also grade so viel, dass man ums verrecken das Board nicht montiert kriegt… zumindest nicht ohne Cheaten. Mainboardschrauben (wie die meisten, aber nicht alle Schrauben in Computern) haben für gewöhnlich imperiale und keine metrischen Gewinde. Die hier verwendete Größe liegt irgendwo zwischen M3 und M4. Wenn man nun M3 Schrauben nimmt, passt es grade so. Normalerweise würden die in den Stand-Offs nicht greifen, da das Lochbild aber nach innen versetzt ist, werden die Schrauben etwas nach außen gedrückt und jede der vier Schrauben hält mit der äußeren Hälfte des Gewindes absolut sicher fest, da der Gewinde-Pitch der gleiche ist. Das ist alles andere als „sauber“, funktioniert aber wirklich sehr viel besser, als man denkt. Davon abgesehen ist es die einzige Möglichkeit ein Mainboard sinnvoll zu befestigen, wenn man nicht neue Löcher setzen will, und vorher die alten ausbohrt oder abschraubt. Für alles, was größer (oder auch kleiner) als Mini-ITX ist, müssen ohnehin neue Löcher gebohrt werden. Es stellt sich sowieso die Frage, welches Mainboard für ein Low-Power-NAS in Frage kommt. Man kann natürlich sowas wie einen Raspberry-Pi oder ein Intel NUC-Mainboard nehmen, aber das stellt leistungsmäßig und hinsichtlich der Möglichkeit, Hardware anzuschließen, zu viele Kompromisse dar. Also MiniITX. Bei MiniITX sollte man sich bewusst sein, dass man maximal einen PCIe-Slot zur Verfügung hat, den man hier aus Platzgründen trotzdem sehr wahrscheinlich nicht nutzen kann, entsprechend muss alles, was man braucht OnBoard vorhanden sein. Insbesondere Netzwerk (bei mehr als einem Port ist man auf jeden Fall fast automatisch bei Serverboards), Grafik (über iGPU der CPU oder IPMI) und ausreichend SATA-Ports. Das schränkt die Auswahl deutlich ein. Wenn man IPMI (also Fernwartungsmöglichkeiten im ausgeschalteten Zustand) haben will, bleiben auch nur noch Serverboards oder Lösungen wie Pi-KVM übrig. Letzteren würde man platzmäßig sogar problemlos untergebracht kriegen (in der Mitte, wo vorher das Verteiler-Board des Netzteils war). Wenn man seine Auswahl also eingeschränkt hat, bleibt nicht mehr viel an möglichen Kandidaten übrig. Ich habe zufällig halbwegs günstig ein AsRock Rack C2550D4I auf eBay Kleinanzeigen inklusive 16GB DDR3-ECC-Ram für etwas über 200€ gefunden. Das mag für ein DDR3-Board viel klingen, aber alleine, dass ein Board IPMI hat (weil es halt ein Serverboard ist), treiben die Kosten (neu wie gebraucht) deutlich in die Höhe. Darüber hinaus haben Servermainboards eine deutlich bessere Haltbarkeit gegenüber Comsumerboards, da besonders Server-Mainboards mit integrierter CPU ohnehin meist für einen Produktzyklus von etwa 7 Jahren konzipiert werden. Andernfalls müsste man die Kosten für einen Pi-KVM mit Zubehör gegenrechnen, und dann lohnt sich das Ganze schon wieder (zumindest wenn man IPMI haben möchte, ich will das definitiv). Sinnvolle Kühlung kann das Board lange seinen Dienst verrichten lassen. Oben genanntes Board (Details und Manual) hat einen Intel Atom C2550 (4C/4T) mit einer TDP von 14W (details), ist also schon mal stromsparend, und hat 3xEthernet (davon 1x fürs IPMI) und sage und schreibe 12(!) SATA-Ports. Nicht alle davon sind SATA3, nicht alle davon unterstützen sauber Hot-Plugging unter FreeNas/TrueNas, aber dazu später mehr. Wer es moderner haben will, es gibt von dem Board auch eine Atom C3xxx-Version mit DDR4 (und modernerem IPMI), aber diese Version kostet neu in unserer aktuell sehr verkorksten Hardware-Preis-Situation (Mitte 2022) immernoch deutlich über 400€, was dem Sinn eines Resteverwertungs-Projekts irgendwie nicht so richtig gerecht wird, auch wenn es technisch und vom Energieverbrauch her die definitiv bessere Wahl wäre. Supermicro hat ähnliche Lösungen im Programm, denn Boards dieser Art sind schon seit jeher klassischerweise die Grundlage für stromsparende NAS-Systeme, werden heutzutage nur zunehmend uninteressanter, da sie kein 10G-Ethernet-Interface haben. Aber für eine reine Backup-Lösung ist das egal. Auch sollte man sich bewusst sein, dass IPMI-Chipsätze quasi eigene Mini-Rechner im Rechner sind, und durchaus auch ihren Strom verbrauchen. In meinem Fall verbraucht das IPMI (inkl. Standby-Verlustleistung des Netzteils) ca. 14W, was nicht unerheblich ist, aber für mich den Gegenwert rechtfertigt, out-of-band-Management zu haben. Alternativ kann man ein Consumer-Board nehmen, da dürfte es allerdings feature-mäßig dünn werden. Oft kann man einen M.2-nvme-Port zu noch mal 4xSATA oder zu einem Ethernet-Port umbauen. Darauf sollte man sich aber nicht verlassen, denn das hängt u.a. von den PCIe-bifurcation-Einstellungen des Mainboard-BIOS ab. Wo ich schon bei dem von mir verwendeten Board bin, gehe ich noch eben auf die spezifischen Probleme dieses Boards ein, denn da gibt es durchaus ein paar, aber keine davon sind unlösbar.
Als allererstes will man bei einem 5+ Jahre alten Board vielleicht mal eine neue Bios-Batterie springen lassen. Danach kommt das IPMI an die Reihe: Netzteil anschließen, 3 Minuten warten bis das IPMI gebooted ist, VGA und Netzwerk anschließen, aber ansonsten den Rechner noch nicht booten. Danach die IP vom IPMI rausfinden und mit hoffenlich Default-Credentials (admin/admin) am Web-UI anmelden. Das IPMI ist…alt, um es schonend zu formulieren, und deswegen kann es mit https nur neuestens SSLv3, was die Browser heutzutage gar nicht mehr mögen und was es darüber hinaus schwieriger macht, eigene Zertifikate darauf auszurollen. Entsprechend ist es zwingend nötig, so ein Interface in ein eigenes Management-Netz zu sperren, wenn mans richtig machen will. Darüber hinaus ist das noch ein Java-KVM ohne HTML5. Unter Linux braucht man also icedtea-web, wenn man die Remote-Konsole benutzen will (was dann aber doch noch ganz gut funktioniert). Auch muss man in modernen Browsern teilweise händisch Cookies setzen und Popups erlauben, damit der Firmware-Updateprozess nicht hängenbleibt (einfach nach googlen, aber wenigstens brickt man sich das Board damit nicht). Das IPMI-Interface sollte man sinnvollerweise als dedicated-Interface mit statischer IP konfigurieren.
Weiter gehts im BIOS. Hier gibt es ein paar Dinge zu beachten, wenn man per UEFI booten will, da die Implementation davon hier offenbar nicht ganz ausgereift ist. Bei den Storage Optionen stellt man das Link-Management (+Agressive) bei allen Ports an. Nur dann funktionieren hinterher in TrueNas so Dinge wie Spin-Down von HDDS im Idle vernünftig und ohne Datenverlust. Man kann sogar staggered-spinup in dem Bios konfigurieren, das sieht man wirklich nicht so häufig (außer auf dedizierten Raidcontrollern). Auch macht man da die Boot-Optionen der zusätzlichen Controller aus (dazu gleich mehr). Wenn man Legacy-CSM-Boot machen will, funktioniert wahrscheinlich alles relativ problemlos, und UEFI über USB scheint auch sauber zu funktionieren. UEFI von einem ZFS-Mirror hat hingegen …einige Hürden…Man stellt bei allen Optionen, wo das irgendwie möglich ist, alles auf UEFI only um (siehe Bilder), und macht Netzwerk-Boot aus (außer man will das hier tatsächlich verwenden). Sinn der Sache ist, dass keine zusätzlichen Boot-Optionen übrig bleiben. An dieser Stelle habe ich TrueNAS Core (13) auf einem ZFS-Mirror von 2 älteren 60GB-SSDs installiert. Beim Reboot nach der Installation fällt auf, dass irgendwas nicht sauber funktioniert.
Klappt der UEFI-Boot von USB noch normal, tut er das von den SSDs aus unklaren Gründen nicht, egal was man einstellt. Das Board bootet immer ins BIOS, denn wenn man alle CSM-Optionen wegkonfiguriert hat, ist die einzig übriggebliebene Boot-Option die Build-in EFI Shell. Das ist außerdem die einzige, die von dem Board nicht automatisch gebootet wird. Normalerweise will man das auch nicht, weil man die benutzt, um seine kaputten EFI-Einträge zu reparieren oder Bios-Updates zu machen (zumindest bei einigen Boards). Dennoch bietet diese Shell genau das, was wir brauchen. Auch wenn das BIOS die EFI-Einträge vom installierten TrueNAS nicht findet, die EFI-Shell findet sie sehr wohl, und kann diese auch booten, das BIOS hat hier also Probleme mit zumindest einigen EFI-Einträgen.
Das Problem ist nur, dass (zumindest bei diesem Board) die EFI-Shell Einträge offenbar nicht sauber starten kann, wenn es Mixed-Mode Einträge (also z.B. ein CSM-Eintrag vom SATA-Controller, deswegen will man das ausmachen) oder sonstige zusätzliche Einträge gibt. Wenn allerdings nur die EFI-Shell zur Verfügung steht (welche leider nicht automatisch gebootet wird), drückt man beim Booten F11, um in die Boot-Auswahl zu kommen, startet den jetzt einzigen Eintrag (die EFI-Shell) und wartet den 5-Sekunden-Timer ab, denn dann bootet die Shell den ersten EFI-Eintrag auf den Platten, was in diesem Fall unser installiertes TrueNAS ist. Dieses Verhalten habe ich nirgendwo dokumentiert gefunden, und ja, das hat mich viel zu viel Zeit gekostet, rauszufinden, warum sich das wie verhält, aber ich wollte UEFI benutzen. Vermutlich wäre CSM einfacher gewesen, aber nun ja. Ein offensichtlicher Nachteil ist, dass man jeden Reboot babysitten muss, um F11 zu drücken. Nicht schön, aber eigentlich auch nicht so wild, man hat ja seine IPMI-Konsole für sowas. Entsprechend kann man das Resume-Verhalten nach Stromverlust auch gleich auf „always off“ stellen, da das Board so ohnehin nicht ohne weiteres Zutun bis zum OS durchbooted. Eine weitere interessante Einschränkung stellen jene SATA-Ports dar, die über den Marvell 9230 Chipsatz angebunden sind (jene, die mit SATAIII-M0-M3 beschriftet sind), denn diese können offenbar – zumindest unter FreeNAS/TrueNAS(Core) – kein hotswap, also bietet es sich an, nicht grade die Backplane mit den Wechselrahmen an diese Ports anzuschließen. Auch sind nicht alle Ports auf dem Board SATA3-fähig. Mindestens 4 Ports sind noch SATA2, aber im OS werden (zumindest laut smartctl) alle angeschlossenen Disk so reportet, als wären sie per SATA3 angeschlossen (zumindest wenn es SATA3-fähige Datenträger sind, also heutzutage alle). Vielleicht wurde ja mit irgendeinem BIOS-Update ein Softlock dahingehend aufgehoben (ja, sowas gibt es tatsächlich schon mal). Allerdings sind die SATA2-Ports die von der Atom-CPU und da weißt das Datenblatt explizit aus, dass 2 der 6 möglichen SATA-Ports an der CPU SATA3 sind, die restlichen nicht. Naja, die wesentlichen Features, die SATA3 gegenüber SATA2 bietet, sind vor allem Erweiterungen von NCQ (native command queueing) und mehr Geschwindigkeit natürlich. Solange man die SSDs also an SATA3-Ports anschließt, sollte der Nachteil in diesem Setup sowieso gleich Null sein.
Das Mainboard ist eingebaut, das BIOS konfiguriert, aber was nun weiter? Wer kein Supermicro-Board benutzt, wird schnell festgestellt haben, dass das Front-I/O-Panel nicht ganz Standardkonform ist. Supermicro führt sein Front-I/O seit Ewigkeiten über ein 16-Poligen 8×2-Flachbandstecker für die Taster und LEDs raus. Es gibt ein Adapterkabel (Supermicro CBL-0084L Frontpanel Split Cable), mit dem man SM-Cases auf nicht SM-Boards und umgekeht anschließen kann. Sowas braucht man, kostet ein paar Euro. In dem Gehäuse befindet sich noch ein zweites Frontpanel, das ich derzeit nicht benutze. Wenn man zusätzlich einen Raspberry Pi einbaut, kann man da sicher was sinnvolles mit anstellen, was besseres fällt mir aber auch nicht ein. Wer gute Ideen hat, gerne in die Kommentare.
Spätestens jetzt muss man sich aber Gedanken um das Storage-Layout machen. Ich persönlich hasse es, von kaputten Festplatten dazu gezwungen zu werden, Server neu zu installieren, also hab ich mein TrueNAS auf einem ZFS-mirror aus 2x60GB SSDs installiert. Die würde man zur Not auch mit Klebeband oder Kabelbinder irgendwo eingebaut kriegen. Vorne im Gehäuse passen 4 HDDs in die Wechselrahmen, aber was ist mit dem Rest? Im Gehäuse ist noch Platz, und an das Board passen 12 Disks, Kühlung wäre auch nicht schlecht und irgendwie müssen die ganzen Mainboard-Anschlüsse an die Rückseite des Gehäuses verlegt werden. Das Ziel ist also, 12 Datenträger unterzukriegen, und mit ein bisschen out-of-the-box-thinking funktioniert das sogar (8×3.5″, 4×2.5″).
Zunächst kommt die Kühlung dran, denn die diktiert, wieviel Platz für den Rest übrig bleibt. Dabei habe ich mich von dem Originaldesign inspirieren lassen. Das ist einfach nur ein Rahmen, der mit Gummi-Entkopplern auf zwei Metall-Dorne aufgesteckt wird. Die Lüfter selbst werden dann auf Gummifüßchen gestellt. Letztere habe ich aus dem ursprünglichen Serversetup übernommen. Auch wollte ich nur 2 statt 3 Kühler pro Seite haben. Das reicht mehr als aus, wenn man bedenkt, dass das Mainboard eigentlich passiv gekühlt wird. Als „Exhaust“, also hinten am Gehäuse habe ich auf der noch leeren Gehäuseseite ebenfalls 2 Lüfter eingeplant, da hier ja noch weitere Festplatten hinkommen sollen. Die Festplatten haben mit Temperaturen jenseits der 40°C deutlich mehr Probleme als eine CPU. Also hab ich mich an OpenSCAD gesetzt, und was passendes konstruiert.
Ich finde, das Ergebnis ist ganz gut geworden, und es erfüllt den geplanten Zweck perfekt. Damit eine sinnvolle Menge Airflow zusammenkommt, habe ich die Halter für 40mm Lüfter (28mm tief) designed. Verwendet habe ich oben schon erwähnten Arctic Lüfter. Der Maximalspeed dieser Lüfter ist 6000RPM. Da die Lüfter auch noch bei seeehr niedrigem PWM-Signal anlaufen (bei 500RPM), habe ich im BIOS die Mindestschwelle auf 50% PWM für alle Lüfter erhöht. Damit Laufen die Lüfter immer zwischen 3000 und 4000 Umdrehungen, bei denen sie hörbar, aber nicht laut sind, und halten alles ausreichend kühl. Im Gegensatz zum Originaldesign braucht es für meinen Zweck keinen abgedichteten und 100% gerichteten Airflow, es muss nur ein bisschen Luft von vorne nach hinten geschoben werden, also muss man hier keine getrennten Luftzonen oder dergleichen schaffen.Die Gummifüße der Lüfter und die Gummipuffer der Halter wurden vom Originalgehäuse übernommen.
Zufälligerweise konnte ich die hintersten Anschraubpunkte des Mainboards nutzen, um die rückwärtigen Lüfter zu befestigen, es musste nur der Lochabstand etwas geändert werden, und ein Loch wegen der Sechskant-Mutter sechseckig gemacht werden, dann konnte der Halter da angeschraubt werden
Auch der hintere Adapter passt ohne Probleme. Die Fläche in der Mitte kann man bei allen Haltern sogar noch fürs Kabel-Management nutzen.
Alle Lüfter sind angeschlossen und funktionieren, als nächstes kommen die I/O-Blenden dran, die man im letzten Bild schon sieht. Eine fungiert nur als Lüftungsgitter, und da hätte man die Originale auch dran lassen können, aber die andere muss hinterher die ganzen I/O-Ports vom Mainboard bereitstellen, und wenn ich ohnehin noch mal dafür ans Reißbrett muss, kann ich auch gleich beide Seiten machen.
Nach 1-2 Iterationen war das Modell dann auch soweit, dass es mir gefiel. Ich habe die Blenden gleich als Split-Design konzipiert, also wenn man in der scad-Datei einen Parameter ändert, wird ein Schlitz und ein paar Löcher in der Mitte gerendert, damit mein armer, kleiner Delta das auch drucken kann (sonst wäre das relativ knapp geworden). Die beiden Seiten werden dann einfach zusammengeschraubt.
Mit dem finalen Design bin ich sehr zufrieden, das sieht tiptop aus. Wie immer gibt es irgendwas, was nicht passt und hier ist das unerwarteter Weise der Deckel. Der ist am Blech hinten um die Kante gefalzt, und hakt schlussendlich unter das Blech der Oberseite des I/O-Shields ein.
Wenn ich das umsetzen wollte, müsste das Material an der Oberseite noch mal deutlich dünner werden, daher hab ich mich lieber dafür entschieden, die umgefalzte Kante einfach gradezubiegen. Es macht rein funktional ohnehin keinen Unterschied.
Die andere Seite ist schon spannender. Da das Mainboard in der Mitte des Gehäuses sitzt, muss ein Weg gefunden werden, die ganzen I/O-Ports nach hinten zu verlegen. Die ID-LED kann mit über das Frontpanel angeschlossen werden, den Knopf dafür lasse ich mal außen vor, weil man das auch über das IPMI blinken lassen kann (alternativ könnte man das irgendwie an das zweite Frontpanel bringen). Für den ganzen Rest habe ich kurze Verlängerungen zwischen 20 und 35cm besorgt, die für die Montage in Panelen vorgesehen sind. 3xRJ45, 1xVGA und 1x Dual-USB2.0. Ich habe die Ports halbwegs gleichverteilt und dann die Zwischenräume mit weiteren Lüftungsschlitzen versehen. Den VGA-Port habe ich etwas weiter eingesenkt, da der ja im Gegensatz zu den anderen Ports mit Abstandshaltern angeschraubt wird, und die Dicke davon auf 1mm Blechdicke ausgelegt ist, damit die Pins korrekt sitzen.
Oben sieht man die erste Iteration der Blende. Aber das war mir zu wenig an Lüftungsschlitzen, und darüber hinaus habe ich noch mal aus Platzgründen die Ports anders angeordnet. Auch die Anschraublöcher passten noch nicht alle.
Und so sieht das Ganze dann mit der finalen Version von innen aus. Im obigen Bild ganz unten (also von hinten gesehen ganz rechts) sind die USB-Ports. Das Mainboard stellt nur 3 USB-Ports insgesamt zur Verfügung, aber man hat 2 an der I/O-Blende und einen normalen 2-Port-USB-Header auf dem Mainboard. Bei diesem Board muss man per Jumper einstellen, ob man die 2 Ports am Header oder am I/O-Shield verwenden will. Die jeweils andere Stelle kriegt dann den restlichen USB-Port (interessantes Konzept, hab ich so auch noch nicht gesehen). Mein Kabel kommt auf den Onboard-Header, also habe ich das entsprechend gejumpert. Weil ich grade dabei war, Temperaturen und Stromverbrauch zu testen, habe ich in meiner Kiste mit alten Kühlkörpern was passendes gesucht, um das auf den IPMI-Controller zu kleben, denn in dem Setup war das zu dem Zeitpunkt die wärmste Stelle im Server. Es hat jetzt einen hübschen Kühlkörper meiner alten ATi Rage 128 GL (…ich glaub ich werd‘ alt).
Die Ports sind alle angeschlossen und funktionieren, alle Löcher passen nun. Im Bild oben sieht man jetzt auch, dass das Netzteil ausreichend durch den Deckel arretiert wird, auch wenn das Netzteil nur mit 2 Schrauben fixiert ist.
Als nächstes muss der verbleibende Platz sinnvoll mit Datenträgern gefüllt werden, also erst mal mit ein paar alten Festplatten austesten, wieviel noch reinpasst.
Eigentlich wollte ich die im Gehäuse vorhandenen Befestigungslöcher soweit möglich beibehalten, und bisher ist mir das auch ganz gut für fast alles gelungen, aber bei den Festplatten war da nix zu machen. Entweder die Löcher sind zu nah dran oder zu weit weg, oder sind grundsätzlich im Weg. Ich habe ein paar Stunden mit verschiedenen Designs experimentiert. Schlussendlich habe ich mich dann aber doch dafür entschieden, alle bisher nicht genutzten Anschraubpunkte abzumontieren, oder – wo das nicht möglich war, weil die fest mit dem Boden verbunden waren – auszubohren. Stattdessen habe ich dann einen Festplattenhalter designed, der eine 3.5″ und eine 2.5″-Platte gleichzeitig unterbringen kann, und diesen verwendet.
Ein kleiner Designfehler ist mir unterlaufen, weil einige der seitlichen Löcher mit den „Flügeln“ zum anschrauben am Boden überlappen. Im finalen Design habe ich das überarbeitet, aber ich wollte die nicht noch mal drucken, also habe ich einfach etwas vom Plastik mit einem kleinen Seitenschneider entfernt.
Die Drucke sehen ein bisschen unsauber aus, weil ich die mit >100mm/s (aus PLA) gedruckt habe, aber es soll ja nur eine Funktion erfüllen und keinen Schönheitspreis gewinnen.
Die HDD-Halter sind flach genug für 1HE, in die Löcher in den Seiten kommen kurze M3-Einsenk-Muttern für 3D-gedruckte Teile rein (diese hier).
Die Gehäuseschrauben sind allerdings nicht M3, also müssen die neu zu bohrenden Löcher von unten relativ tief gesenkt werden, damit normale M3-Senkkopfschrauben flach mit dem Boden abschließen. Wenigstens bin ich jetzt meine alten, stumpfen kleinen Metallbohrer los, denn es sind mir beim Bohren doch tatsächlich 2 abgebrochen, aber es passt alles. Grade so, aber es passt!
Zum jetzigen Zeitpunkt hat dieses unscheinbare, normalgroße 1HE-Servergehäuse also neben dem Mainboard Platz für 8 HDDs und 4 SSDs, was ordentlich ist. Da der Server ein Backup-NAS wird, habe ich nur 2 kleine SSDs zum booten verbaut, aber der Platz für 2 weitere ist da.
In Servern ist Kabel-Management definitv nicht optional, grade wenn alles so eng ist wie hier. Nach dem finalen Zusammenbau habe ich noch mal alles so grade verlegt wie möglich. Bei einem 200W-Netzteil schadet es auch nicht, die aus dem Netzteil kommenden Kabel halbwegs gleichmäßig zu belasten, um da nicht in Probleme zu kommen. Ich habe etwas länger in meinen Kabelkisten gewühlt, um die jeweils flachsten Adapter und Kabel zu finden. Ein paar SATA-Kabel habe ich extra für den Server gekauft, denn auf gar keinen Fall kriegt man hier die Kabel unter, die normalerweise bei Mainboards beiliegen, die sind viel zu steif und zu breit. Auch habe ich da, wo ich keine 2.5″-Disks verbaut habe, dennoch die Kabel passend dahingelegt. Wenn ich den Server in absehbarer Zeit noch mal aufmachen muss, um Festplatten zu wechseln, werde ich mir ein paar Stromkabel in Custom-Länge und mit den richtigen Winkeln selber zusammencrimpen. Dafür habe ich alles da, aber das war leider alles zu spät angekommen, daher hab ich benutzt, was da war. Passen tut dennoch alles, wenn auch nur sehr knapp.
Schlussendlich tut der Server genau das was ich will: leise und stromsparend sein, sowie Platz für Backups bieten. Ich habe insgesamt 6x4TB-Platten und 2x3TB-Platten verwendet. Mehr als genug also. Die HDDs kommen teilweise aus meinem anderen NAS, wo es sich irgendwann nicht mehr lohnt, 4TB-Platten zu verwenden, weil man so viel zu viele Platten bräuchte, um auf irgendwas sinnvolles zu kommen, aber für einen Backup-Server ist das perfekt. Weil die meisten Platten relativ alt sind, besteht mein ZFS-Pool hier aus gespiegelten 4TB bzw 3TB-vdevs. ZFS-Raid-z1/z2 würde auch gehen, dann hätte ich aber die 3TB-Disks nicht verwenden können und die CPU-Last wäre deutlich höher beim Schreiben, was im Endeffekt die Schreibgeschwindigkeit reduziert und damit gegen die Kapazität ausspielt. Das macht ((6x4TB)+(2x3TB))/2=15TB tatsächliches Speichervolumen. Ich habe darauf geachtet, dass die Platten, die die höchste Chance haben, auszufallen (also im wesentlichen die ältesten Platten) nach Vorne in die frontseitigen Wechselrahmen zu packen, damit ein Austausch einer Platte relativ schnell von statten gehen kann. In TrueNAS habe ich für alle Disks Powermanagement und Spindown nach 10 Minuten konfiguriert. Effektiv wird der Server nicht als NAS benutzt, sondern als Backupziel für daily backups von VMs, Workstations und dem eigentlichen NAS, also gibt es keinen Grund, dass die Festplatten die ganze Zeit drehen. Im Idle braucht das ganze Setup dafür mit 10 verbauten Datenträgern auch nur etwa 40W. Wenn alle Festplatten aktiv sind, 55-60W. Wenn man bedenkt, dass ~14W bereits auf das IPMI entfallen, und die Lüfter kombiniert im Mittel bestimmt auch noch mal 5-8W brauchen, ist das absolut vertretbar. Auch die Temperaturen sind absolut traumhaft, wenn man bedenkt, dass in Deutschland aktuell grade noch so Hochsommer ist:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
backup# for i in ada{0..9}; \ do echo -ne $i\:\ ;\ smartctl --all /dev/$i | \ grep ^194 ; done && \ ipmitool sdr | grep -i degree ada0: 194 Temperature_Celsius 0x0022 127 103 000 Old_age Always - 25 ada1: 194 Temperature_Celsius 0x0022 127 105 000 Old_age Always - 25 ada2: 194 Temperature_Celsius 0x0022 025 042 000 Old_age Always - 25 (0 19 0 0 0) ada3: 194 Temperature_Celsius 0x0022 026 043 000 Old_age Always - 26 (0 19 0 0 0) ada4: 194 Temperature_Celsius 0x0022 026 050 000 Old_age Always - 26 (0 13 0 0 0) ada5: 194 Temperature_Celsius 0x0023 067 067 000 Pre-fail Always - 33 ada6: 194 Temperature_Celsius 0x0023 067 067 000 Pre-fail Always - 33 ada7: 194 Temperature_Celsius 0x0022 028 047 000 Old_age Always - 28 (0 13 0 0 0) ada8: 194 Temperature_Celsius 0x0002 200 200 000 Old_age Always - 30 (Min/Max 15/53) ada9: 194 Temperature_Celsius 0x0022 125 104 000 Old_age Always - 25 MB Temperature | 41 degrees C | ok CPU Temperature | 28 degrees C | ok backup# |
Alternativen und Erweiterungen
Natürlich wird quasi niemand, der das hier liest, mein Setup exakt so nachbauen, daher spare ich mir auch Teilelisten, da insbesondere sowas wie Kabel sehr davon abhängig sind, was man genau verbaut hat, aber es geht hier auch eher um das Konzept, Hardware sinnvoll zu nutzen, auch wenn sie augenscheinlich keinen sinnvollen Nutzen mehr erfüllt. Frei nach dem Motto „Totgesagte leben länger“. Beim Planen und Umsetzen des Backup-Servers sind mir auch noch einige sinnvolle Erweiterungen, Ergänzungen und Änderungen in den Sinn gekommen, die ich noch anbringen will, auch wenn sie in meinem Setup keinen Platz mehr gefunden haben.
1) SSDs vorne
Vom Platz her würden über den Frontseitig eingebauten Wechselrahmen durchaus jeweils noch eine SSD platz finden. Schwierig wäre die Montage eines geeigneten Haltesystems, möglich wäre das aber allemale.
2) ssds in der mitte
In der Mitte des Gehäuses könnte man je nach restlichem Setup ohne weiteres 1-2 Stapel zu je 4 SSDs unterbringen. Idealerweise würde das über 3D-gedruckte Halter funktionieren, aber da wäre auf jeden Fall Platz
3) Mikrocontroller in der Mitte
Damit sind sowas wie ein Raspberry Pi, ein ESP32 oder ein Arduino gemeint. In einem normalen Rechner könnte man so irgendwas an Lüftersteuerung oder RGB-LED-Blingbling unterbringen, aber für Server wäre das nur mäßig interessant.
4) PI-KVM
Eigentlich nicht viel anders als Punkt 3, aber mit einem Pi-KVM kann man einem Consumer-Board die Vorteile eines IPMI-Interfaces beibringen, und man kann es sogar im gleichen Gehäuse unterbringen.
5) I/O Shield
Mit dem zweiten I/O-Shield kann man auch sinnvolle Dinge tun. Ein Display oder LEDs einbauen, je nach Mainboard die I/O-Sektion dahingehend erweitern, sowas wie Strom und SATA/SAS-Anschlüsse unterbringen, damit der Server mit einem Disk-Shelf erweitert werden kann, sowas in der Art.
6) PCIe-karte
Der Punkt gehört lose zum vorherigen. Wenn man eines der originalen I/O-Panels eingebaut lässt, sieht das zwar blöd, leer und falsch aus, ABER man kann in diesen Panels das Blech einer PCIe-Karte arretieren und damit eine PCIe-Karte einbauen, und mit einem Riser-Kabel ans Mainboard führen. Mit PCIe-x16 könnte das etwas schwierig werden, noch schlimmer bei PCIe-4.0, aber es gibt auch x1-Riserkabel oder man schaut sich bei der Crypto-Mining-Hardware um, die benutzen USB-Kabel um einen PCIe-Slot anders zu platzieren. Ein Gaming-Rechner wird das damit nicht, aber eine 10G-Netzwerkkarte oder eine kleine GPU fürs transcoding von Mediainhalten mit Plex, Emby oder Jellyfin würde funktionieren. Auch PI-KVM-Lösungen gibt es von der Bauform her mittlerweile als PCIe-Karte (die bräuchte auch keine PCIe-Lanes zum Mainboard).
7) Zweites Frontpanel
Das Supermicro SC808T ist ja eigentlich ein Dual-Node-Gehäuse, entsprechend hat es zwei Front-I/O-Panels. Das sind auch nur LEDs und Taster und man kann vielleicht was sinnvolles damit anstellen. Mir ist außer „man könnte ein Lauflicht draus bauen“ nicht wirklich was eingefallen, aber wenn jemand gute Ideen hat, immer her damit. Wenn man einen Microcontroller oder Raspberry Pi (Punkt 3) einbaut, kann man die natürlich auch dafür benutzen und da dann auch, um Skripte und Aktionen zu triggern, aber ich habe da noch keinen guten Anwendungsfall.
8) Raspberry Pi Cluster
Ein ganz anderer Ansatz könnte auch sein, das Ding einfach mit Raspberry Pis vollzustopfen, low-power-Kubernetes-cluster-in-a-box sozusagen. Insbesondere, da es im Formfaktor von Mini-ITX Boards gibt, auf denen man 4xRaspberry-Pi-4-Compute-Modules unterbringen kann. Das würde hier mindestens zwei mal reinpassen, ebenso ein (oder 2) passende(r) Switch(es). Die HDD-Wechselrahmen könnte man auch für Raspberry Pis benutzen, oder natürlich um HDDs an den Cluster anzuschließen. Wenn RasPis mal wieder günstiger werden, ist das auf jeden Fall eine Option.
9) Alternative Backplanes
Eine interessante Alternative kann man mit backplanes erreichen, die 90° andersrum sind, als normale Serverbackplanes, wenn die BP also quasi an den Boden geschraubt wird, und die Disks über den Gehäuseboden arretiert werden, und nur an die BP drangeschoben werden. Damit ergeben sich für 1HE-Gehäuse noch mal deutlich mehr Möglichkeiten (wenn auch nicht für dsa Dual-Node-Gehäuse hier). Eine solche Backplane, die sehr praktisch für solche Aufbauten ist, ist die Supermicro BPN-SAS-801T-A4 (z.B. verbaut in SuperServer 6018R-TD8).
That’s all folks, und nicht vergessen: Immer schön Backups machen!
Sourcefiles für 3D-gedruckte Dinge: Link
-zeus