Dachte ich erzähle mal ein wenig von meiner Baustelle die ich schon auf einigen Threads erwähnt habe. In der Summe ziemlich verrückt und ich weiß noch nicht, wie gut es am Ende laufen wird, aber sicherlich einige Ideen dabei, die man einzeln wiederverwenden kann.
Komponenten
Gehäuse: SilverstoneTech ML03B HTPC Gehäuse, 19" Format, ca. 2RU hoch.
HTPC:
Netzteil: Silverstone Tech 300W SFX Form Factor
Motherboard: MSI B450i miniITX Ryzen
CPU: Ryzen 5 2400G (mit eingebauter GPU)
Memory: Corsair Vengeance LPX 16GB
Disk: Patriot Scorch 256GB NVMe M.2 PCIe SSD
Optisches Laufwerk: ASUS BW-16D1HT ("UHD Friendly")
Gehäuselüfter: Arctic F8 silent.
OS: Windows 10 Pro
NAS:
NAS Vorrechner: Raspberry PI4 model b, 2 GByte, Samsung 32GB 95MB/s (U3) MicroSDXC EVO
Disks: 12 * Seagate 2.5" USB HDD
Controller: 3 * AmazonBasics USB Hub 3.0 mit 4 Ports, Anker 4-Port USB 3.0 hub
Control: USB Relay
Netzteil: Buck Converter Module DC 6-40V to 1.2-36V 20A 300W
OS:
Inspiration/Kodi-HTPC
Initial sollte das Gerät nur ein HTPC sein. Das Gehäuse passt in ein Hi-Fi rack und hat Platz für ein Vollformat DVD-Laufwerk, und als ich das gekauft hatte kannte ich kein UHD-Friendly slimline bluray Laufwerk. Die Ryzen CPU / GPU hat sich auch als ideal für Kodi HTPC (IMHO) herausgestellt, weil ich damit problemlos 3D hinbekommen habe ohne die Umschaltprobleme bei NVidia oder den DP/HDMI adapterproblemen bei (zumindestens älteren) Intel NUC. Das Motherboard hat ja auch einen PCIx16 slot, wenn man also auch noch Gaming will kann man immer noch bis zu NVidia 1650 nachrüsten (low profile).
Wenn man keine verrückten NAS Basteleien machen würden in das Gehäuse auch noch 2 x 3.5" SATA Festplatten und >= 2 x 2.5 SATA HDD passen.
NAS
Die Idee in das Gerät auch noch Festplatten/NAS einzubauen kam, nachdem die 5TB Seagate USB Festplatten einmal für 90 Euro verkauft wurden, und ich sowieso ein Komplettback meines Betriebs NAS und anderer Platten machen wollte. Und nachdem klar war, das diese USB Platten auch "gerade so" in das Gehäuse passen.
Für Backup-Platten sollten die Platten eigentlich nur dann unter Strom stehen, wenn sie gebraucht werden (schreiben, restaurieren). 2.5" USB Festplatten beziehen ihren Strom vom USB Bus. Gute (wenige) USB Hubs unterstützen auch die Möglichkeit, die Spannungsversorgung pro Port zu kontrollieren. Das Programm dafür ist uhubctl. Unter Windows kann es nicht funktionieren, weil Windows nicht den zugriff auf die notwendigen USB Parameter bietet.
https://github.com/mvp/uhubctl
Die Amazon basics hubs sind fast die einzigen Hubs, bei denen die Hardware tatsächlich die Spannnungsversorgung pro Port kontrolliert werden kann.
RPI als NAS Vorrechner
Original war die Idee, die NAS Software in eine Linux-VM zu tun und unter Hyper-V im WIndows 10 laufen zu lassen, weil der HTPC unter Windows 10 laufen soll (3D Support, Desktop support auf Projektor, gaming, etc. pp.). Dazu hätte man aber PCI-Passthrough verwenden müssen um einen PCI-USB Controller durchzureichen. Die Ryzen Motherboards sind dafür gut, weil die 3 PCI Controller haben, aber alle USB 3 Controller sind in einer IOMMU Gruppe. Zudem ist bei Windows 10 PCI Passthrough in Hyper-V disabled. Damit hätte ich Windows Server installieren müssen und dazu noch Die Probleme mit IOMMU gruppen gehabt. Deswegen ist da jetzt im Gehäuse ein RPI4 als NAS Vorrechner, an den der USB Bus mit den USB Hubs und USB Festplatten angeschlossen ist.
Auf die EVO MicroSDXC Karte schafft der RPI knapp 100MByet lesen, 30MByte schreiben, was für das Betriebssystem voll ausreichend sein sollte.
RPI4 in PC einbauen
Der RPI4 ist einfach mit selbstklebenden Klettband am Gehäuse befestigt. Das Ethernet ist mit einem kurzen Stub auf ein Slotblech geführt, so daß es einfach von aussen ans Netz angeschlossen werden kann.
Das größte Problem ist es, eine stabile Stromversorgung für den RPI4 zu bekommen, weil er 2.5A braucht. Man muß sich ein Molex->USB31 Kabel löten, und die meisten USB Kabel haben zu dünne Adern um die Stromversorgung sicherzustellen. Das sicherste ist es, ein Kabel von einem >= 2.5 A Netzteil zu abzuschneiden und zu verwenden, weil es auch schwierig ist, direkt an einen USB C Stecker ein Kabel anzulöten. Wenn das Kabel nicht ausreicht gibt es im Log auf dem RPI4 Medlungen wie "Under voltage...".
Stromversorgung USB Festplatten
Das größte Problem ist die Stromversorgung von vielen USB Festplatten, wahrscheinlich vor allem, weil die Hubs kaskadiert sein müssen um die Anzahl der Ports zu erreichen. Der Anchor Port ist der root Hub, die 3 Amazon Basics Hubs sind an diesen angeschlossen, und an jedem können bis zu 4 Festplatten angeschlossen werden. Jeder Hub hat einen eigenen Stromversorgungsanschluss, und deren Originalkabel wurden zuerst alle zusammen über einen 4-pin Molex Stecker an das Netzteil angeschlossen. Ohne Kabel mit zu zu geringem Querschnitt (AWG18 oder besser).
Bereits bei Versuchen, mit Debian auf dem Ryzen Hauptrechner gab es beim gleichzeitigen Zugriff auf 3 oder mehr Platten immer wieder I/O Errors und andere Probleme. Ebenso bei RPI4. Das Problem war letztendlich die Stromversorgung, daß die Spannnung die bei den Platten ankam wohl geringer als 4.75V war, wenn mehrere Platten aktiv waren. Ob das 5V AWG 20 Kabel vom Netzteil das Problem war und/oder Spannungsverlust in den Hubs selbst oder deren Stromversorgungskabel habe ich nicht versucht zu analysieren.
Am ende habe ich einen kleinen (12 Euro) Buck-Konverter verwendet, der über 12V am PC Netzteil angeschlossen ist und am Ausgang auf 5.2V getrimmt ist. der wird im Betrieb auch mit allen Festplatten aktiv lesend nicht sehr warm. Die Spanning an einem Hub-Ausgang liegt bei 5.2V wenn alle Platten via USB vom Strom abgetrennt sind, sie ist 5.04V wenn alle Platten laufen aber der Kopf steht, und sie geht auf ca. 4.8 V wenn alle Platten gleichzeitig aktiv lesen. Dies stellt ungefähr den Zustand dar, den man bei Neuschreiben von Redundanz braucht. Dies lief 24 Stunden problemlos im Test. 5.25V ist wohl die obere Grenze, die bei USB Geräten unterstützt werden muß. RPI Netzteile geben ebenso 5.2V aus.
Nachdem ich auch schon frueher mit USB Hubs an anderen Rechnern Probleme mit zuverlässigkeit hatte denke ich jetzt das das wahrscheinlich auch mit Stromversorgung zu tun hatte.
Relais
Die Stromversorgung der Platten/USB-Hubs ist über ein USB-Relais geschaltet, das an einen USB2 Port des RPI4 angeschlossen ist. Anders als das Ryzen Motherboard unterbricht der RPI4 beim reboot die Stromversorgung zum USB wodurch das Relais sicher ausschaltet, und der RPI4 beim Booten einen definierten Zustand aller Platten hat (alles ausgeschaltet).
Belüftung
Initial war angedacht 12 USB Festplatten nebeneinander einzubauen, da gibt es dann aber keine Zirkulation, und die Festplatten wurden heisser als 60 Grad im gleichzeitigen Betrieb, was die maximal erlaubte Temperatur ist. Dann fängt SMART an Fehler zu melden. Wie auf obigen Bild zu sehen ist, sind jetzt 10 Festplatten nebeneinander eingebaut, mit Korkenstücken auf Abstand gebaut und mit 4 Lüftern belüftet. Um die Platten/Lüfter ist ein aus fester Plastikfolie gebasteltes Gehäuse um die Luftzirkulation zu steuern. Dies hält die Festplatten im simultanene Schreibbetrieb bei ca. 40 Grad. Es müßen noch passend Löcher in den Deckel gebohrt werden um das Gehäuse zu schließen.
Wenn in einfachen Betrieb nur eine Platte mit Strom versorgt werden soll um Daten zu lesen/schreiben ist eigentlich keine aktive Kühlung notwendig.
Durchsatz
Der Durchsatz beim gleichseitigen Lesen von allen Platten liegt bei 280 MByte/sec. Derselbe Wert wird auch auf dem Ryzen PC Motherboard erreicht, der RPI4 ist hier also keine Bremse. Wenn man versucht beide USB3 Anschlüsse auf dem RPI4 gleichzeitig zu verwenden, erhöht sichd er Gesamtdurchsatz nicht. Dies ist ebenso auf dem Ryzen Motherboard.
Software
Bisher laufen Scripten die uhubctl verwenden um Platten an/auszuschalten und einfacher zu verwendende device-Namen erzeugen. Alles andere ist in Planung. Veracrypt zur Verschlüsselung, SnapRAID um intern Redundanz zu halten. OMV hoffentlich um die Administration insgesamt zu vereinfachen. OMV, Veracrypt sind schon installiert.