
Heute möchte ich über ein Thema schreiben, das sicher den einen oder anderen Leser meines Blogs beschäftigt. Es geht um die Frage, wie man auf einer auf einem Raspberry Pi installierten Nextcloud ein RAID-System aufbaut, um Daten redundant auf dem Massenspeicher abzulegen.
Als Vorlage diente mir hierbei eine Anleitung von Daniel von der Firma apfelcast, die ich in Teilen etwas abgeändert habe.
Installation
Zuerst wird die Software mdadm auf dem Raspberry Pi installiert.
1 |
sudo apt-get install mdadm |
Um diese zu aktivieren, muss der Raspberry Pi nach der Installation von mdadm neu gestartet werden.
1 |
sudo reboot |
Danach schaut man nach den angeschlossenen Datenträgern. Ich setze voraus, dass man sich zuvor ausreichend mit dieser Materie auseinandergesetzt hat. Ein RAID-Level 1 erfüllt in unserem Fall alle Voraussetzungen für dieses Unterfangen.
Wenn zwei baugleiche SSDs mit identischer Speicherkapazität (z. B. 1 TB) angeschlossen sind, können diese mit folgendem Befehl identifiziert werden:
1 |
sudo lsblk |
Beide Laufwerke werden als /dev/sda und /dev/sdb ausgegeben.
RAID-System

Nun werden alle Daten und Partitionen der SSDs gelöscht. Hierzu werden beide Befehle nacheinander ausgeführt:
1 |
sudo parted /dev/sda "rm 1" |
1 |
sudo parted /dev/sdb "rm 1" |
Ein abschließender Check gibt Gewissheit.
1 |
sudo lsblk |
Bei Festplatten < 2 TB werden nun die MSDOS-Partitionstabellen erstellt.
1 |
sudo parted /dev/sda "mklabel msdos" |
1 |
sudo parted /dev/sdb "mklabel msdos" |
Bei Festplatten > 2 TB verwendet man hingegen folgende Befehle für GPT-Partitionstabellen.
1 |
sudo parted /dev/sda "mklabel gpt" |
1 |
sudo parted /dev/sdb "mklabel gpt" |
Anschließend werden die ext4-Partitionen auf beiden Datenträgern erstellt.
1 |
sudo parted /dev/sda "mkpart primary ext4 1M -1" |
1 |
sudo parted /dev/sdb "mkpart primary ext4 1M -1" |
Nun wird RAID auf beiden Partitionen aktiviert.
1 |
sudo parted /dev/sda "set 1 raid on" |
1 |
sudo parted /dev/sdb "set 1 raid on" |
Anschließend kann der Status überprüft werden (siehe Screenshot).
1 |
sudo parted -s /dev/sda print |
1 |
sudo parted -s /dev/sdb print |

Jetzt wird ein RAID-Level 1 erstellt, sodass beide Laufwerke zu einem zusammengeführt und so die Daten redundant gespeichert werden können. Falls eine SSD ausfällt, sollten somit keine Daten verloren gehen.
1 |
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1 |
Alternativ könnte ein RAID 0 eingerichtet werden, um beide SSDs hintereinander zu verknüpfen. Dabei würde sich die Speicherkapazität verdoppeln.
Eine letzte Überprüfung zeigt nun den aktuellen Zustand.
1 |
lsblk |

Einrichtung des Dateisystems
Nun kann das Dateisystem für das RAID eingerichtet werden.
1 |
sudo mkfs -t ext4 /dev/md0 |
Der Fortschritt wird mit den folgenden Befehlen überprüft (siehe Screenshots).
1 |
cat /proc/mdstat |

1 |
sudo mdadm --detail /dev/md0 |

Das Mountverzeichnis wird erstellt und der Datenspeicher darauf gemountet.
1 |
sudo mkdir /media/ssd |
1 |
sudo mount /dev/md0 /media/ssd |
Nun wird die Datei /etc/fstab bearbeitet, damit der Datenträger nach einem Neustart weiterhin mit unserer Nextcloud verbunden bleibt.
1 |
sudo nano /etc/fstab/ |
Dort fügt man folgende Zeile hinzu und speichert die Datei ab:
1 |
/dev/md0 /media/raid ext4 4,nofail 0 0 |

Die Bearbeitung der crontab sorgt dafür, dass das RAID-System beim Neustart korrekt eingebunden wird.
1 |
sudo crontab -e |
Dort wird folgender Eintrag hinzugefügt:
1 |
@reboot sleep 5; sudo mount /dev/md0 /media/raid |
Datenverzeichnis verschieben
Das vorhandene Datenverzeichnis wird von der MicroSD auf das RAID-System verschoben.
1 |
sudo mv /var/www/html/nextcloud/data /media/ssd |
Anschließend muss der Nextcloud noch mitgeteilt werden, wo sich das Datenverzeichnis befindet. Dazu wird die Konfigurationsdatei geöffnet.
1 |
sudo nano /var/www/html/nextcloud/config/config.php |
Der folgende Eintrag wird angepasst und von
1 |
'datadirectory' => '/var/www/html/nextcloud/data', |
in
1 |
'datadirectory' => '/media/ssd/data', |
geändert.
Damit ist die Einrichtung des RAID-Systems für die Nextcloud auf dem Raspberry Pi abgeschlossen!