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.
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 uns mit sudo -s
Adminrechte veschaffen und die Cloud mit systemctl stop apache2
auĂer Betrieb nehmen.
Nun bringen wir erst mal den Pi auf den neusten Stand und installieren das Programm fĂŒr unser Software RAID
apt update apt upgrade apt install mdadm
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. 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.
umount /media/temp umount /media/festplatte mount /dev/md0p1 /media/festplatte chown -R www-data:www-data /media/festplatte
In dem Zuge sollten wir nun noch unseren Startvorgang anpassen und Raspbian mitteilen, dass es zukĂŒnftig nicht mehr die Partition sda1 fĂŒr die Cloud mounten soll, sondern md0p1. Daher bearbeiten wir die /etc/fstab
Datei und passen den vorhandenen Eintrag wie folgt an:
/dev/sda1 /media/festplatte ext4 defaults 0 0 zu /dev/md0p1 /media/festplatte ext4 defaults 0 0
Nun können wir testen und die Cloud mit systemctl start apache2 wieder starten. Sollte der Zugriff auf die Cloud klappen, so steht dem Finale nichts mehr entgegen.
Wir können daher nun endlich auch unseren ersten DatentrĂ€ger 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
.
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.
Hallo,
ich habe eine kleine frage, im betrieb wurde ein stick abgezogen. nun steht bei mdadm details der status removed. bekomme ich den stick wieder in den raid?
danke, gruĂ seeks.
Da habe ich erst letztens passend dazu ein Video gemacht. Hoffe dir hilft das weiter: https://www.youtube.com/watch?v=2t1anDg4rlM
Hallo Jet ich schon wieder ;-),
habe mich nun endlich aan deine Anleitung gewagt und gleich mal eine Frage besser gesagt hÀnge ich hier:
Ich bin deine Anleitung Schritt fĂŒr Schritt durch und komme jetzt nicht mehr weiter.
Was habe ich falsch gemacht?
Kannst du mir hier raushelfen möchte nichts zerstören Danke
root@Nextcloud:/media# mdadm –detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Thu Nov 19 15:57:22 2020
Raid Level : raid1
Array Size : 976630464 (931.39 GiB 1000.07 GB)
Used Dev Size : 976630464 (931.39 GiB 1000.07 GB)
Raid Devices : 2
Total Devices : 1
Persistence : Superblock is persistent
Intent Bitmap : Internal
Update Time : Thu Nov 19 18:27:10 2020
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
Consistency Policy : bitmap
Name : Nextcloud:0 (local to host Nextcloud)
UUID : 5c303a71:92578752:d0150389:a20e77b5
Events : 9863
Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
– 0 0 1 removed
root@Nextcloud:/media# mdadm –manage /dev/md0 –add /dev/sda
mdadm: /dev/sda not large enough to join array
Der letzte Satz sagt eigentlich schon alles aus. Der DatentrĂ€ger sda ist nicht groĂ genug. Eine Spiegelung ist nur möglich wenn der zweite DatentrĂ€ger gleichgroĂ oder gröĂer ist. Ich vermute das ist bereits der Fehler