Der neue Raspberry Pi 5 verfügt erstmals über eine PCIe-Schnittstelle. Leider hat man sich bei der Raspberry Pi Foundation nicht dazu aufraffen können, gleich auch einen Slot für eine PCIe-SSD vorzusehen. Gut möglich, dass es auch einfach an Platzgründen gescheitert ist. Oder wird dieser Slot das Kaufargument für den Raspberry Pi 6 sein? Egal.
Mittlerweile gibt es diverse Aufsteckplatinen für den Raspberry Pi, die den Anschluss einer PCIe-SSD ermöglichen. Sie unterscheiden sich darin, ob sie überhalb oder unterhalb der Hauptplatine des Raspberry Pis montiert werden, ob sie kompatibel zum Lüfter sind und in welchen Größen sie SSDs aufnehmen können. (Kleinere Aufsteckplatinen sind mit den langen 2280-er SSDs überfordert.)
Update: Im Mai 2024 stellte auch die Raspberry Pi Foundation einen SSD-Adapter vor. Vorteil: billig. Nachteil: nur für kleine SSDs geeignet (2230/2242). Siehe https://www.raspberrypi.com/news/m-2-hat-on-sale-now-for-12/
NVMe Base von Pimoroni
Für diesen Artikel habe ich die NVMe Base der britischen Firma Pimoroni ausprobiert (Link). Inklusive Versand kostet das Teil ca. 24 €, der Zoll kommt gegebenenfalls hinzu. Die Platine wird mit einem winzigen Kabel und einer Menge Schrauben geliefert.
Der Zusammenbau ist fummelig, aber nicht besonders schwierig. Auf YouTube gibt es eine ausgezeichnete Anleitung. Achten Sie darauf, dass Sie wirklich eine PCIe-SSD verwenden und nicht eine alte M2-SATA-SSD, die Sie vielleicht noch im Keller liegen haben!
Nachdem Sie alles zusammengeschraubt haben, starten Sie Ihren Raspberry Pi neu (immer noch von der SD-Karte). Vergewissern Sie sich mit lsblk
im Terminal, dass die SSD erkannt wurde! Entscheidend ist, dass die Ausgabe eine oder mehrere Zeilen mit dem Devicenamen nmve0n1*
enthält.
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
mmcblk0 179:0 0 29,7G 0 disk
├─mmcblk0p1 179:1 0 512M 0 part /boot/firmware
└─mmcblk0p2 179:2 0 29,2G 0 part
nvme0n1 259:0 0 476,9G 0 disk
Raspberry-Pi-OS klonen und von der SSD booten
Jetzt müssen Sie Ihre Raspberry-Pi-OS-Installation von der SD-Karte auf die SSD übertragen. Dazu starten Sie das Programm Zubehör/SD Card Copier, wählen als Datenquelle die SD-Karte und als Ziel die SSD aus.
SD Card Copier kopiert das Dateisystem im laufenden Betrieb, was ein wenig heikel ist und im ungünstigen Fall zu Fehlern führen kann. Der Prozess dauert ein paar Minuten. Während dieser Zeit sollten Sie auf dem Raspberry Pi nicht arbeiten! Das Kopier-Tool passt die Größe der Partitionen und Dateisysteme automatisch an die Größe der SSD an.
Als letzten Schritt müssen Sie nun noch den Boot-Modus ändern, damit Ihr Raspberry Pi in Zukunft die SSD als Bootmedium verwendet, nicht mehr die SD-Karte. Dazu führen Sie im Terminal sudo raspi-config
aus und wählen Advanced Options -> Boot Order -> NVMe/USB Boot.
Selbst wenn alles klappt, verläuft der nächste Boot-Vorgang enttäuschend. Der Raspberry Pi lässt sich mit der Erkennung der SSD so viel Zeit, dass die Zeit bis zum Erscheinen des Desktops sich nicht verkürzt, sondern im Gegenteil ein paar Sekunden verlängert (bei meinen Tests ca. 26 Sekunden, mit SD-Karte nur 20 Sekunden). Falls Sie sich unsicher sind, ob die SSD überhaupt verwendet wird, führen Sie noch einmal lsblk
aus. Der Mountpoint /
muss jetzt bei einem nvme-Device stehen:
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0 0 476,9G 0 disk
├─nvme0n1p1 259:1 0 512M 0 part /boot/firmware
└─nvme0n1p2 259:2 0 476,4G 0 part /
Wie viel die SSD an Geschwindigkeit bringt, merken Sie am ehesten beim Start großer Programme (Firefox, Chromium, Gimp, Mathematica usw.), der jetzt spürbar schneller erfolgt. Auch größere Update (sudo apt full-upgrade
) gehen viel schneller vonstatten.
Benchmark-Tests
Ist die höhere Geschwindigkeit nur Einbildung, oder läuft der Raspberry Pi wirklich schneller? Diese Frage beantworten I/O-Benchmarktests. (I/O steht für Input/Output und bezeichnet den Transfer von Daten zu/von einem Datenträger.)
Ich habe den Pi Benchmark verwendet. Werfen Sie immer einen Blick in heruntergeladene Scripts, bevor Sie sie mit sudo
ausführen!
wget https://raw.githubusercontent.com/TheRemote/ \
PiBenchmarks/master/Storage.sh
less Storage.sh
sudo bash Storage.sh
Ich habe den Test viermal ausgeführt:
- Mit einer gewöhnlichen SD-Karte.
- Mit einer SATA-SSD (Samsung 840) via USB3.
- Mit einer PCIe-SSD (Hynix 512 GB PCIe Gen 3 HFS512GD9TNG-62A0A)
- Mit einer PCIe-SSD (wie oben) plus PCIe Gen 3 (Details folgen gleich).
Die Unterschiede sind wirklich dramatisch:
Modell Pi 5 + SD Pi 5 + USB Pi 5 + PCIe Pi 5 + PCIe 3
----------------- ----------- ------------- ------------- ---------------
Disk Read 73 MB/s 184 MB/s 348 MB/s 378 MB/s
Cached Disk Read 85 MB/s 186 MB/s 358 MB/s 556 MB/s
Disk Write 14 MB/s 121 MB/s 146 MB/s 135 MB/s
4k random read 3550 IOPS 32926 IOPS 96.150 IOPS 173.559 IOPS
4k random write 918 IOPS 27270 IOPS 81.920 IOPS 83.934 IOPS
4k read 15112 KB/s 28559 KB/s 175.220 KB/s 227.388 KB/s
4k write 4070 KB/s 28032 KB/s 140.384 KB/s 172.500 KB/s
4k random read 13213 KB/s 17153 KB/s 50.767 KB/s 54.682 KB/s
4k random write 2862 KB/s 27507 KB/s 160.041 KB/s 203.630 KB/s
Score 1385 9285 34.723 43.266
Beachten Sie aber, dass das synthetische Tests sind! Im realen Betrieb fühlt sich Ihr Raspberry Pi natürlich schneller an, aber keineswegs in dem Ausmaß, den die obigen Tests vermuten lassen.
PCIe Gen 3
Standardmäßig verwendet der Raspberry Pi PCI Gen 2. Mit dem Einbau von zwei Zeilen Code in /boot/firmware/config.txt
können Sie den erheblich schnelleren Modus PCI Gen 3 aktivieren. (Der Tipp stammt vom PCIe-Experten Jeff Geerling.)
# in /boot/firmware/config.txt
dtparam=pciex1
dtparam=pciex1_gen=3
Die obigen Benchmarktests beweisen, dass die Einstellung tatsächlich einiges an Zusatz-Performance bringt. Ehrlicherweise muss ich sagen, dass Sie davon im normalen Betrieb aber wenig spüren.
Bleibt noch die Frage, ob die Einstellung gefährlich ist. Die Raspberry Pi Foundation muss ja einen Grund gehabt haben, warum Sie PCI Gen 3 nicht standardmäßig aktiviert hat. Zumindest bei meinen Tests sind keine Probleme aufgetreten. Auch dmesg
hat keine beunruhigenden Kernel-Messages geliefert.
Fazit
Es ist natürlich cool, den Raspberry Pi mit einer schnellen SSD zu verwenden. Für Bastelprojekte ist dies nicht notwendig, aber wenn Sie vor haben, Ihren Pi als Server, NAS etc. einzusetzen, beschleunigt die SSD I/O-Vorgänge enorm.
Schön wäre, wenn der Raspberry Pi in Zukunft einen PCIe-Slot erhält, um (zumindest kurze) SSDs ohne Zusatzplatine zu nutzen. Bis dahin sind die Erweiterungsplatinen eine Übergangslösung.
In der Community ist zuletzt die Frage aufgetaucht, ob der Raspberry Pi überhaupt noch preiswert ist. Diese Frage ist nicht unberechtigt: Die Kosten für einen neuen Pi 5 + Netzteil + Lüfter + SSD-Platine + SSD + Gehäuse gehen in Richtung 150 €. Sofern Sie ein Gehäuse finden, in dem der Pi samt SSD-Platine Platz findet … Um dieses Geld bekommen Sie auch schon komplette Mini-PCs (z.B. die Chuwi Larkbox X). Je nach Anwendung muss man fairerweise zugeben, dass ein derartiger Mini-PC tatsächlich ein besserer Deal ist.
Quellen/Links
- Pimoroni NVMe Base: https://shop.pimoroni.com/products/nvme-base, https://www.youtube.com/watch?v=odG7FbptgWQ
- Pineberry (2 Modelle): https://pineberrypi.com
- Geekworm (diverse Modelle): https://geekworm.com/search?type=product&q=pcie
- PCIe Gen 3: https://www.jeffgeerling.com/blog/2023/forcing-pci-express-gen-30-speeds-on-pi-5
- Chuwi Larkbox X: https://www.derstandard.at/story/3000000204570
- When did the Raspberry Pi get so expensive? https://www.jeffgeerling.com/blog/2024/when-did-raspberry-pi-get-so-expensive
- SSD-Adapter der Raspberry Pi Foundation: https://www.raspberrypi.com/news/m-2-hat-on-sale-now-for-12/
Die SSD statt SD hat auch den Vorteil, dass sie mit Dauerbetrieb besser klar kommt. Wenn es also um Zuverlässigkeit geht, ist sie die bessere Wahl.
Und ja, der Pi ist inzwischen nicht mehr günstiger als ein Mini PC (zumindest ein Pi 5 mit 8GB RAM und allem drum und dran), aber er schlägt den Mini PC immer noch deutlich bei den Betriebskosten (Energiebedarf).
So klar ist es also nicht, dass der PC die bessere Wahl ist. Es kommt auf den konkreten Einsatzzweck an.
Ich habe einige Projekte von RasPis auf einen Mini PC umgezogen, wo aufgrund von Virtualisierung mehrere Pis durch einen einzigen Mini PC ersetzt wurden (in diesem Fall ist diese der Energiekosten-effizientere Ansatz).
Aber ich habe immer noch einige Projekte direkt auf dedizierten Pis laufen, die entweder nicht von Virtualisierung profitieren oder auf die GPIO Pins, das Cam Interface oder bestimmte HATs angewiesen sind.
Was kann der Grund sein, wenn die SSD nicht erkannt wird?
Falsche SSD (SATA statt PCIe)?
Oder Verbindungskabel falsch befestigt?
Bei mir hat es zum Glück auf Anhieb funktioniert. Meine größte Angst war, dass ich das Kabel nicht ganz exakt platziere, bevor ich den Klemmriegel darübergeschoben habe.