Mit einer MicroSD Karte als Speichermedium läuft ein Raspberry Pi im Normalfall recht stabil. Allerdings möchte ich den kleinen Rechner nebst anderen Anwendungen als Server für meine WordPress Seite nutzen. Später sollen hier auch eine größere Anzahl Bilder verfügbar sein.
Um mehr Speicherplatz zu gewinnen und die MicroSD Karte von den vielen Schreib-/Lesezugriffen zu schützen, möchte ich eine SSD für das Raspbian OS, die Daten und die Bilder nutzen.
Vorbereitung der SSD
Um die SSD einzurichten, schließe ich sie einfach mit einem SATA-zu-USB Adapter an meinen Ubuntu Linux PC an. Ich habe eine ganze Menge an Tutorials gesehen, bei der die Einrichtung am Raspberry Pi erfolgt. Dies ist sicher möglich, für mich war es allerdings komfortabler, es vom PC aus zu erledigen.
Zur Formatierung nutze ich gparted und erstelle damit zuerst eine neue gpt Partitionstabelle. Nach erstelle ich eine (oder, je nach späteren Einsatzzweck) auch mehrere ext4 Partitionen.
$ gksudo gparted
(Tatsächlich habe ich hier zwei Partitionen erstellt – aber dies ist ein Thema für einen anderen Post…)
Danach die SSD sicher entfernen und vom USB Anschluss des PCs abziehen.
Zum jetzigen Zeitpunkt die SSD noch nicht am Raspberry Pi anschließen.
Den am USB verfügbaren Strom erhöhen
Je nach den Leistungsanforderungen der SSD ist dies ggf. gar nicht erforderlich. Da dies aber soweit mir bewusst ist keine negativen Auswirkungen hat, habe ich den Strom erhöht, den der Raspberry Pi am USB Anschluss zur Verfügung stellen kann.
Dazu vom PC aus ein Terminal öffnen und per ssh eine Verbindung mit dem Raspberry Pi herstellen und die Boot-Konfiguration anpassen:
$ ssh user@pi
$ sudo nano /boot/config.txt
Am Ende der Datei die Zeile
max_usb_current=1
einfügen und dann die Datei speichern. Danach den Raspberry Pi neu starten:
$ sudo reboot
Das Root-Verzeichnis auf die SSD verschieben
Nun die SSD mit dem SATA-zu-USB Adapter am Raspberry Pi anschließen und überprüfen wie die SDD bzw. die Partition erkannt wird:
$ ssh user@pi
$ sudo -s
$ cd /dev
$ ls
In meinem Fall wird die SSD als /dev/sda und die Partition als /dev/sda1 angezeigt. Nun können wir die Partition als neues Laufwerk einhängen:
$ mount /dev/sda1 /mnt
Die Laufwerksübersicht sollte nun so aussehen:
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 15G 4,0G 9,9G 29%
devtmpfs 459M 0 459M 0% /dev
tmpfs 463M 0 463M 0% /dev/shm
tmpfs 463M 6,3M 457M 2% /run
tmpfs 5,0M 4,0K 5,0M 1% /run/lock
tmpfs 463M 0 463M 0% /sys/fs/cgroup
/dev/mmcblk0p1 56M 20M 37M 36% /boot
tmpfs 93M 0 93M 0% /run/user/1001
/dev/sda1 58G 52M 55G 1% /mnt
Die SSD ist nun als /mnt erreichbar. Um das Betriebssystem und alle installierten Anwendungen zu verlagern, kopieren wir das gesamte Root-Verzeichnis auf die neue Partition.
$ rsync -axv / /mnt
Dies nimmt einige Zeit in Anspruch, in meinem Fall wurden ca. 4GB Daten kopiert.
Nachdem dies erledigt ist, müssen wir uns noch um einige Dinge kümmern, so dass nach einem Neustart auch das Root-Verzeichnis der SSD genutzt wird.
Dazu passen wir die Boot Kommandozeilen-Datei an. Auch ist es keine schlechte Idee, die Datei vorher zu sichern:
$ cp /boot/cmdline.txt /boot/cmdline.txt.bak
$ nano /boot/cmdline.txt
In der Datei ändern wir den Pfad auf das Root-Verzeichnis (dazu root=/dev/mmcblk0p2 in root=/dev/sda1 ändern). Zusätzlich fügen wir zur Verbesserung der Systemstabilität beim Hochfahren eine Verzögerung von 5 sec ein (rootdelay=5). Dies soll sicherstellen, dass nach dem Boot erst dann auf die SSD zugegriffen wird, wenn USB und SSD sicher laufen.
Am Ende sollten wir in der Datei eine lange Zeile wie folgt haben:
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/sda1 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait rootdelay=5
Zum Schluss muss noch die Dateisystem-Tabelle so angepasst werden, dass root auf /dev/sda1 zeigt.
$ nano /mnt/etc/fstab
proc /proc proc defaults 0 0
/dev/mmcblk0p1 /boot vfat defaults 0 2
# Comment out the original filesytem on the SD Card
# /dev/mmcblk0p2 / ext4 defaults,noatime 0 1
# Add entry for the new filesystem on the SSD
/dev/sda1 / ext4 defaults,noatime 0 1
In meinem Fall habe ich die Originalzeile auskommentiert und eine Kopie davon darunter entsprechend angepasst.
Das war’s.
Damit alles übernommen wird, muss noch ein Neustart durchgeführt werden:
$ reboot
Die neue Konfiguration überprüfen
Sobald der Raspberry Pi wieder hochgefahren ist, können wir uns das Ergebnis ansehen:
$ ssh user@pi
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 58G 4,1G 51G 8% /
devtmpfs 459M 0 459M 0% /dev
tmpfs 463M 0 463M 0% /dev/shm
tmpfs 463M 6,3M 457M 2% /run
tmpfs 5,0M 4,0K 5,0M 1% /run/lock
tmpfs 463M 0 463M 0% /sys/fs/cgroup
/dev/mmcblk0p1 56M 20M 37M 36% /boot
tmpfs 93M 0 93M 0% /run/user/1001
Hier sehen wir, dass sich die Größe des /dev/root von den 15 GB der MicroSD Karte auf die 58 GB der SSD Partition geändert hat. Nun läuft also das Raspbian OS und der Apache Server mit der WordPress Installation (sowie die anderen Anwendungen) von der SSD. Die MicroSD Karte wird nur noch zum Booten genutzt.