Um nun unsere Cloud auch noch gegen Hardwareausfälle zu schützen ist es sinnvoll wie bei unserer NAS Serie ein RAID zu verwenden. Sprich: Wir halten die Daten auf mehreren Datenträger vor. Die Vorraussetzung ist das wir mindestens über zwei gleich große und gleich schnelle Datenträger verfügen. In dieser Anleitung erzeugen wir exemplarisch ein RAID 1, es sind aber natürlich auch andere RAID Level möglich.
Dieser Artikel geht davon aus, dass die Cloud bereits mit einem Datenträger (Wie in Teil 2 gezeigt) eingerichtet wurde. Sollte der dazukommende Datenträger nicht gleich groß sein, so muss er zumindest kleiner sein, als der, der bereits im Einsatz ist. Sollte das nicht der Fall sein, so müssen alle Daten zuerst auf den neuen (größeren) Datenträger kopiert werden und das RAID wird dann mit dem kleineren begonnen. (Hintergrund ist der, dass das kleinste Gerät in einem RAID die Größe vorgibt. Sollten aber zu beginn des RAIDs nicht alle Datenträger verfügbar sein (So wie bei uns weil wir noch Daten vorhalten müssen) so muss der hinzugefügte Datenträger mindestens gleichgroß oder größer sein!)
Wir beginnen indem wir erst einmal den Raspberry Pi auf den aktuellsten Stand bringen, ggf. neustarten (Wenn das letzte Upgrade lange her war) und das Software RAID Programm MDADM installieren. Danach halten wir den Apache Webserver an, damit keine Änderungen mehr an der Cloud gemacht werden können, solange wir an den Clouddaten arbeiten und einen sauberen Stand beibehalten.
apt update apt upgrade apt install mdadm systemctl stop apache2
Nun können wir unser Level 1 RAID erstellen. Ich gehe hier davon aus, dass /dev/sda euer bisheriger Datenträger ist und /dev/sdb der neu hinzugekommene (bitte mit dem Befehl lsblk
ggf. nachprüfen). Da momentan daher auf /dev/sda unsere Cloud Daten sind, werden wir diesen Datenträger erst mal nicht ins RAID einbinden und dieses nur mit /dev/sdb wie folgt erstellen:
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb missing
Jetzt sollten wir wenn wir lsblk
eingeben einen neuen Datenträger /dev/md0 entdecken welcher sich unterhalb von /dev/sdb befindet.
Wenn das geklappt hat werden wir nun das RAID mit einer Partitionstabelle versehen und eine neue Partition erzeugen.
fdisk /dev/md0 #fdisk lässt sich über Buchstaben steuern. Daher diese wie unten angeben und eventuell auftretende Meldungen mit <return> bestätigen g n w
Nun sollte wenn wir lsblk
eingeben spätestens jetzt auch eine Partition md0p1 auftauchen. Dieser verpassen wir nun ein Filesystem, erstellen einen Ordner wo wir das RAID mounten können und tun dies auch gleich.
mkfs.ext4 /dev/md0p1 mkdir /media/temp mount /dev/md0p1 /media/temp
Nun können wir beginnen und unsere Clouddaten vom ersten Datenträger in das RAID zu kopieren. (Pfade gehen vom Tutorial aus und müssen ggf. angepasst werden)
cp -R /media/festplatte/. /media/temp
Nun sollten all unsere Clouddaten im RAID vorhanden sein. Um zu testen ob wir alles richtig gemacht haben, hängen wir nun den ersten Datenträger und das RAID aus und hängen das RAID an der richtigen Stelle ein und setzen die Zugriffsrechte. Ebenso starten wir danach den Webserver und schauen ob unsere Cloud wieder lebt.
umount /media/temp umount /media/festplatte mount /dev/md0p1 /media/festplatte chown -R www-data:www-data /media/festplatte systemctl start apache2
In dem Zuge sollten wir nun noch unseren Startvorgang anpassen und dem Betriebssystem mitteilen, dass es zukünftig nicht mehr die Partition sda1 für die Cloud mounten soll, sondern md0p1. Ab jetzt werden wir aber die Datenträger nicht mehr per Namen sondern per UUID ansprechen. Hierzu müssen wir wie in Part 2 die ID der RAID Partition herrausfinden. Das geschiet genauso per Befehl blkid
. Nun bearbeiten wir die /etc/fstab
Datei und passen den vorhandenen Eintrag mit der neuen UUID an. Der Aufbau bleibt wie gehabt:
/dev/disk/by-uuid/<PARTUUID> /media/festplatte ext4 nofail 0 2
Sollte der Zugriff auf die Cloud klappen, so steht dem Finale nichts mehr entgegen.
Wir können daher nun endlich auch unseren ursprünglichen Datenträger (/dev/sda) dem RAID hinzufügen.
mdadm --manage /dev/md0 --add /dev/sda
Nun sollte der Datenträger zum RAID gehören. Dies lässt sich über lsblk
einsehen. Allerdings werden beide Datenträger erst noch synchronisiert. Noch genauer sehen wir es über mdadm --detail /dev/md0
. Oder auch mit cat /proc/mdstat
.
Hier sehen wir auch den Fortschritt des synchronisierens der beiden Datenträger. Der Pi sollte nun solange durchlaufen bis beide Datenträger als synchron angezeigt werden.