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.

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.

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.

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.

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

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.