Geekworm X1004 Dual NVME HAT

Die Lösung mit der USB to SATA Bridge an meinem Nextcloud Pi gefiel mir von Anfang an nicht richtig, da das Kabel das System unhandlich machte. Außerdem ist diese Bridge sehr stromhungrig, wodurch Nextcloud immer wieder ausgebremst wurde. Bei meiner Suche nach einer besseren Möglichkeit, stieß ich auf das Geekworm X1004 Dual NVME HAT, das zwei NVME Laufwerke über PCIe anbinden kann.

Ein 2TB M.2 Laufwerk hatte ich eh noch übrig, dass ich als Ersatz nehmen kann.Das Bootlaufwerk kann ich vom X1001 Aufbau übernehmen.

Geekworm X1004 mit dem Montagematerial
raspithek.de - Olli Graf
contentCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Geekworm X1004 mit dem Montagematerial

Akt I schneller Umbau

Ich dachte zunächst, als Schnelllösung schraube ich das X1001 vom Raspi ab, ersetze es durch das X1004, montiere das Bootlaufwerk und starte erstmal noch mit der SSD als Datenplatte. Allerdings leuchteten dann die beiden blauen LED des HAT der Pi startete aber nicht. Daraufhin habe ich meine Notfall MicroSD Karte benutzt und davon gestartet, um zu sehen, was das Problem ist.

Akt II Strom oder nicht Strom?

Mit dem Rescue System konnte ich mit lsblk das Bootlaufwerk als nvme1n1 sehen und mounten. Aber nur nach einem Kaltstart nach jedem reboot now war es wieder weg. Mein Verdacht war sofort, dass das Netzteil nicht genügend Strom liefert. Da das Netzteil 5A auf 5,1V liefert, suchte ich weiter. In der Ausgabe von dmesg entdeckte ich diese Meldung: Unable to change power state from D3cold to D0, device inaccessible

Dies deutet daraufhin, dass das Laufwerk nicht aus dem Stromsparmodus geweckt werden kann. Deshalb habe ich den Raspberry etwas umkonfiguriert.

In der /boot/firmware/cmdline.txt habe ich

usbcore.autosuspend=-1

eingetragen und die /etc/firmware/config.txt noch um

pcie_aspm=off

erweitert. Dies soll verhindern dass das Laufwerk in den Stromsparmodus geht. Tatsächlich war danach das Laufwerk auch nach einem Warmstart noch vorhanden. An das Datenlaufwerk kam ich immer noch nicht ran. Beim Nachmessen stellte ich fest, dass das System beim Einschalten 1,6 bis 1,7A Strom zog, im Idlemodus etwa die Hälfte. Damit war bewiesen, dass die Stromversorgung ausreichend und stabil ist.

Akt III defekter Controllerchip

Was ich auch versuchte, das Datenlaufwerk war zu keinem Zeitpunkt verfügbar. Also steckte ich es mal in meinen M.2 USB Adapter am Desktop. Zu meiner Überraschung war das Drive auch dort nicht sichtbar. Daher habe ich es mit defektem Controllerchip beim Händler gegen eine Crucial P3plus NVME umgetauscht. Auf dieser habe ich dann eine einzige ext4 Partition angelegt und über den Desktoprechner mit

rsync -aAXv /mnt/ssd /mnt/nvme

den gesamten Datenbestand umkopiert. Danach habe ich noch ein

diff -r /mnt/ssd /mnt/nvme

drüber laufen lassen, um die Integrität der Dateien zu überprüfen und damit war die Crucial P3 vorbereitet.

Akt IV Es kann der Frömmste nicht in Ruhe booten

Allerdings klappte das Booten vom Systemlaufwerk immer noch nicht. Mein Gedanke war jetzt, dass das evtl. nur über den NVME Slot direkt an der GPIO Leiste funktioniert. Um das zu prüfen habe ich das Bootlaufwerk wieder raus geschraubt und dabei festgestellt, das entgegen meiner Erinnerung das Bootlaufwerk keine NVME sondern eine SATA M.2 war. Das X1004 bootet im Gegensatz zu seinem kleinen Bruder aber nur von NVME Drives. Also habe ich auch gegen eine Crucial P3plus NVME ersetzt.

Akt V Es dockert nicht

Auf die neue NVME schreibe ich den Inhalt der alten M.2, setze sie ein und entferne die MicroSD Karte. Ich werde von einem blauen Flackern der Status LED des Laufwerks. Das System bootet endlich wieder. Allerdings muss ich feststellen, dass der Docker Service nicht gestartet ist. Auch ein manuelles Starten brachte da nichts. Recherchen sagten mir, das ich das Kernelmodul „overlay“ prüfen soll. Da dies für die Kernelversion gar nicht im Dateisystem zu finden war und mir alle Lösungsansätze zu kompliziert erschienen, entscheide ich mich, das System komplett neu aufzusetzen und flashe die NVME mit dem Imager neu. Dank Ansible und Docker dauert es keine 20 Minuten, den Raspi komplett neu einzurichten und dieses Drama hat noch ein Happy End. Die Daten sind sofort alle verfügbar und die Datenbankkonfiguration funktioniert auch auf Anhieb. Nachdem ich beim Desktopclient die Synchronisation wieder eingeschaltet habe, werden die neuen Dateien auch sofort übertragen.

Konfiguration

In der /etc/fstab habe ich die PARTUUID des SSD Datenlaufwerks gegen die der neuen NVME ausgetauscht. Ich habe dazu den Tipp gefunden, die Partition mit der nofail Option zu versehen. Davon rate ich aber für dieses Szenario ab. Wenn der Nextcloud Container ohne die Datenpartition gestartet wird, sind für Nextcloud keine Daten mehr vorhanden und alle verbundenen Clients werden ihren Datenbestand gnadenlos löschen. Da ist es besser, das System bleibt bei einem Mountproblem stehen, um das Problem zu untersuchen. Aus dem selben Grund habe ich während der Arbeiten die automatische Synchronisation aller Clients gestoppt.

Zwei blaue LEDs zeigen den Status der beiden NVME an, die grüne den Betrieb des Raspis.
Zwei blaue LEDs zeigen den Status der beiden NVME an, die grüne den Betrieb des Raspis.

Tests

Nach diesem „Drama einer beinahe Katastrophe“ konnte ich das das endlich lauffähige System testen.

Startzeit

Nach dem Boot von der NVME ist der Raspi nach 13,169s im Multi-User-Modus gestartet. Zum Vergleich, der Homeassistant-Raspi braucht von der MicroSD 22,796s

Strom

Für die Test habe ich den Stromsparmodus wieder aktiviert. Schließlich wird der Raspi im Dauerbetrieb laufen.

Die Stromaufnahme im Leerlauf liegt typischerweise zwischen 0,623 und 0,7A. Unter Vollast zieht das System zwischen 1,3 und 1,5A. Je nach dem, ob der Lüfter läuft oder nicht. Das Netzteil ist also ausreichend dimensioniert.

Das Messgerät zeigt 0,610A Strombedarf im Leerlaufmodus an.
raspithek.de - Olli Graf
power-idleCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Das Messgerät zeigt 0,610A Strombedarf im Leerlaufmodus an.

Temperatur

Während des Lastsets läuft der Lüfter immer mal wieder kurz an. Die CPU Temperatur übersteigt aber niemals 60,9°C (bei einer Raumtemperatur von 25,4°C). Die Kühlkörper auf den NVME werden im Test maximal etwa 32°C warm.

Das Wärmebild zeigt eine nur geringe Wärmentwicklung auf dem NVME Heatsinks.
raspithek.de - Olli Graf
thermal_nvmeCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Das Wärmebild zeigt eine nur geringe Wärmentwicklung auf dem NVME Heatsinks.

Geräusch

Von dem System gehen nur Geräusche aus, wenn der Active Cooler anläuft.

Fazit

Der fertig zusammengebaute Raspberry Pi 5 16GB mit 2 NVME auf dem Geekworm X1004 HAT
raspithek.de - Olli Graf
assembledCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Der fertig zusammengebaute Raspberry Pi 5 16GB mit 2 NVME auf dem Geekworm X1004 HAT

Das Ganze liest sich komplizierter als es in Wirklichkeit ist. Das Geekworm X1004 ist schnell montiert und kann in weniger als einer Stunde einsatzbereit sein. Die meisten „Probleme“, die ich oben beschrieben habe, entstammen meinem Plan, das bestehende System vom X1001 umzubauen.

Ich konnte dadurch aber in diesem Post zeigen, dass es sich manchmal lohnt, sich von Rückschlägen nicht entmutigen zu lassen und am Ball zu bleiben.

Durch das X1004 ist der Raspi sehr handlich, der ohne Latenzen richtig performant arbeitet und ohne die Kabelpeitsche des USB 3.0/SATA Adapters sehr viel besser unterzubringen ist.

Ich könnte mir gut vorstellen, dass ich das ausgebaute X1001 samt M.2 in meinem Smarthome Raspi einbaue.

Schreibe einen Kommentar

Insert math as
Block
Inline
Additional settings
Formula color
Text color
#333333
Type math using LaTeX
Preview
\({}\)
Nothing to preview
Insert
Creative Commons License
Except where otherwise noted, the content on this site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Olli Graf - raspithek.de
WordPress Cookie Hinweis von Real Cookie Banner