Banana Pi mit SSD betreiben

Standardmäßig werden Einplatinencomputer wie der Raspberry Pi oder der Banana Pi mit einer SD Karte als Speichermedium betrieben. Dort liegen der Bootloader, das Betriebssystem samt Applikationen und möglicherweise auch die Daten. SD Karten haben jedoch ein paar Nachteile. Sie sind nicht sonderlich langlebig und haben dazu im Vergleich zu Festplatten schlechtere Schreib- Leseraten. Mit einer Transcend Class 10 SDHC Karte wurde auf dem Banana Pi die Lese- und Schreibgeschwindigkeit getestet.


Test der Lesegeschwindigkeit:

sudo hdparm -t --direct /dev/mmcblk0

bananapi_ssd01

18,08 MB/s sind jetzt nicht gerade überragend. Dies macht sich bei jedem Zugriff bemerkbar.

Test der Schreibgeschwindigkeit:

sync;time bash -c "(dd if=/dev/zero of=speedtest bs=8k count=256k; sync)"

bananapi_ssd02

Beim Schreiben schaut es erwartungsgemäß mit 13 MB/s noch schlechter aus. Die erzeugte Datei kann nach dem Schreibtest wieder gelöscht werden.

rm speedtest

Der Banana Pi bzw. der Banana Pro kann in Sachen Performance punkten. Er bringt eine SATA II Schnittstelle zum Anschluss einer Festplatte mit. Damit lassen sich deutlich höhere Schreib- Leseraten erzielen, was der Gesamtperformance des Systems spürbar zugutekommt. Um eine Festplatte, sei es HDD oder SSD, an einen Banana Pi anzuschließen, wird ein spezielles SATA Kabel für Strom und Daten benötigt. Der Strom für die Festplatte wird direkt vom Banana Pi geliefert. Das Kabel kostet nur ein paar Euro und lässt sich über gängige Onlineshops für Elektroartikel beziehen. Ist die Festplatte angeschlossen, müssen alle Daten der zweiten Partition der SD Karte kopiert werden, um zukünftig das Betriebssystem und die Applikationen auf der Festplatte zu haben. Eine SD Karte wird jedoch weiterhin benötigt, weil sich darauf der Bootloader befinden muss, um das System zu starten. Um die notwendigen Aktionen auszuführen, wechselt man am besten in eine Root Umgebung.

sudo su

Die neue Festplatte muss nun „neu“ partitioniert werden. Um zu wissen, welcher Datenträger überhaupt angesprochen werden muss, können alle vorhandenen angezeigt werden.

fdisk -l

Die Festplatte sollte in der Regel als „/dev/sda“ melden. Um genau diesen Datenträger zu partitionieren wird folgender Befehl ausgeführt.

fdisk /dev/sda

Sollte die Festplatte bereits partitioniert sein, lassen sich die Partitionen mit „d“ löschen. Mit „n“ wird eine neue Partition angelegt. Die Partition wird mit „p“ als Primäre Partition gekennzeichnet. Weitere Fragen lassen sich mit „Return“ bestätigen. Zum Abschluss der Partitionierung müssen die Änderungen auf die Festplatte geschrieben werden. Dazu muss die Aktion mit „w“ abgeschlossen werden. Wurde eine einzige Partition angelegt, muss diese noch mit dem „ext4“ Dateisystem formatiert werden.

mkfs.ext4 /dev/sda1

Zur Vorbereitung der Kopier- und Konfigurationsaktionen müssen drei Verzeichnisse, die später als Mountpoint dienen angelegt werden.

mkdir /tmp/old
mkdir /tmp/new
mkdir /tmp/boot

Nach einem Neustart werden die Verzeichnisse automatisch wieder gelöscht. Jetzt können die Daten von der SD Karte auf die neu partitionierte Festplatte kopiert werden. Dazu wird zuerst die zweite Partition der SD Karte sowie die Festplatte gemountet.

mount /dev/mmcblk0p2 /tmp/old
mount /dev/sda1 /tmp/new

Jetzt können die Daten übertragen werden. Dies kann ein paar Minuten dauern.

rsync -ax --progress /tmp/old/ /tmp/new

Damit nach dem erfolgreichen Kopiervorgang von der Festplatte gebootet wird, muss die Root Partition auf den neuen Speicherort angepasst werden. Dazu wird die erste Partition der SD Karte mit den Bootinformationen gemountet.

mount /dev/mmcblk0p1 /tmp/boot

Jetzt kann die Datei uEnv.txt bearbeitet werden.

nano /tmp/boot/uEnv.txt

Hier muss der Wert „root=/dev/mmcblk0p2“ in „root=/dev/sda1“ geändert werden. Danach können die zwischengespeicherten Informationen zurückgeschrieben werden.

sync

Jetzt kann der Banana Pi neu gestartet werden, damit er von Festplatte bootet. Nach dem Neustart kann geprüft werden, ob die Konfigurationsänderung funktioniert hat.

df -h

Die Lesegeschwindigkeit mit SSD schaut jetzt im Vergleich zur SD-Karte schon ganz anders aus.

sudo hdparm -t --direct /dev/sda

bananapi_ssd03

160 MB/sec können zwar nicht mit einem Desktoprechner mit SSD mithalten, brauchen sich aber in Kombination mit einem Single-Board nicht verstecken. Die fast 9 fache Lesegeschwindigkeit bringt einen spürbaren Performancesprung. Bei der Schreibgeschwindigkeit ist der Unterschied nicht ganz so groß, jedoch spürt man die Verdreifachung auch recht ordentlich.

sync;time bash -c "(dd if=/dev/zero of=speedtest bs=8k count=256k; sync)"

bananapi_ssd04

Die Testdatei kann auch hier wieder gelöscht werden.

rm speedtest

Beim Einsatz einer SSD sollte noch regelmäßig Trim ausgeführt werden, damit gelöschte Blöcke wieder zur Verfügung stehen. Trim wird jedoch nicht von jeder SSD unterstützt. Bevor also getrimmt wird, muss auf jeden Fall geprüft werden ob es unterstützt wird.

sudo hdparm -I /dev/sda | grep -i TRIM

bananapi_ssd05

Damit einmal pro Woche Trim automatisch ausgeführt wird, kann ein Cron Job verwendet werden. Dazu wird unter „/etc/cron.weekly/“ ein Skript abgelegt.

sudo nano /etc/cron.weekly/fstrim

In die Datei kommt folgender Inhalt.

#! /bin/sh
fstrim /

Damit wird sichergestellt, dass einmal pro Woche Trim ausgeführt wird, um die SSD dauerhaft optimal nutzen zu können. Wer also noch eine SSD zu Hause rumliegen hat, kann damit die Gesamtleistung des Banana Pi deutlich verbessern. Gerade der verbesserte Lesezugriff macht schon wirklich Laune.