{"id":417,"date":"2023-09-12T11:00:00","date_gmt":"2023-09-12T09:00:00","guid":{"rendered":"https:\/\/jet0jlh.de\/?p=417"},"modified":"2023-09-09T18:54:06","modified_gmt":"2023-09-09T16:54:06","slug":"nextcloud-bauen-mit-jet-64-bit-edition-08-raid","status":"publish","type":"post","link":"https:\/\/jet0jlh.de\/?p=417","title":{"rendered":"Nextcloud bauen mit Jet &#8211; 64 Bit Edition #08 &#8211; RAID"},"content":{"rendered":"\n<figure class=\"wp-block-embed is-provider-youtube wp-block-embed-youtube\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Wechsel von einem Datentr\u00e4ger auf mehrere Datentr\u00e4ger als RAID | Nextcloud bauen mit Jet 64 Bit #08\" width=\"625\" height=\"352\" src=\"https:\/\/www.youtube.com\/embed\/peXR9U_kzPU?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<figure class=\"wp-block-pullquote\"><blockquote><p>Alle Befehle in diesem Tutorial werden mit Administratorenrechten ausgef\u00fchrt.<br>Daher bitte einmal den Befehl <code>sudo -s<\/code> ausf\u00fchren, um Rootrechte zu erhalten.<\/p><\/blockquote><\/figure>\n\n\n\n<p>Um nun unsere Cloud auch noch gegen Hardwareausf\u00e4lle zu sch\u00fctzen ist es sinnvoll wie bei unserer NAS Serie ein RAID zu verwenden. Sprich: Wir halten die Daten auf mehreren Datentr\u00e4ger vor. Die Vorraussetzung ist das wir mindestens \u00fcber zwei gleich gro\u00dfe und gleich schnelle Datentr\u00e4ger verf\u00fcgen. In dieser Anleitung erzeugen wir exemplarisch ein RAID 1, es sind aber nat\u00fcrlich auch andere RAID Level m\u00f6glich.<\/p>\n\n\n\n<p>Dieser Artikel geht davon aus, dass die Cloud bereits mit einem Datentr\u00e4ger (Wie in Teil 2 gezeigt) eingerichtet wurde. Sollte der dazukommende Datentr\u00e4ger nicht gleich gro\u00df sein, so muss er zumindest kleiner sein, als der, der bereits im Einsatz ist. Sollte das nicht der Fall sein, so m\u00fcssen alle Daten zuerst auf den neuen (gr\u00f6\u00dferen) Datentr\u00e4ger kopiert werden und das RAID wird dann mit dem kleineren begonnen. (<em>Hintergrund ist der, dass das kleinste Ger\u00e4t in einem RAID die Gr\u00f6\u00dfe vorgibt. Sollten aber zu beginn des RAIDs nicht alle Datentr\u00e4ger verf\u00fcgbar sein (So wie bei uns weil wir noch Daten vorhalten m\u00fcssen) so muss der hinzugef\u00fcgte Datentr\u00e4ger mindestens gleichgro\u00df oder gr\u00f6\u00dfer sein!<\/em>)<\/p>\n\n\n\n<p>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 \u00c4nderungen mehr an der Cloud gemacht werden k\u00f6nnen, solange wir an den Clouddaten arbeiten und einen sauberen Stand beibehalten.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">apt update\napt upgrade\napt install mdadm\nsystemctl stop apache2<\/pre>\n\n\n\n<p>Nun k\u00f6nnen wir unser Level 1 RAID erstellen. Ich gehe hier davon aus, dass \/dev\/sda euer bisheriger Datentr\u00e4ger ist und \/dev\/sdb der neu hinzugekommene (bitte mit dem Befehl <code data-enlighter-language=\"bash\" class=\"EnlighterJSRAW\">lsblk<\/code> ggf. nachpr\u00fcfen). Da momentan daher auf \/dev\/sda unsere Cloud Daten sind, werden wir diesen Datentr\u00e4ger erst mal nicht ins RAID einbinden und dieses nur mit \/dev\/sdb wie folgt erstellen:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bat\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">mdadm --create \/dev\/md0 --level=1 --raid-devices=2 \/dev\/sdb missing<\/pre>\n\n\n\n<p>Jetzt sollten wir wenn wir <code data-enlighter-language=\"bash\" class=\"EnlighterJSRAW\">lsblk<\/code> eingeben einen neuen Datentr\u00e4ger \/dev\/md0 entdecken welcher sich unterhalb von \/dev\/sdb befindet.<br>Wenn das geklappt hat werden wir nun das RAID mit einer Partitionstabelle versehen und eine neue Partition erzeugen.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">fdisk \/dev\/md0\n#fdisk l\u00e4sst sich \u00fcber Buchstaben steuern. Daher diese wie unten angeben und eventuell auftretende Meldungen mit &lt;return> best\u00e4tigen\ng\nn\nw<\/pre>\n\n\n\n<p>Nun sollte wenn wir <code data-enlighter-language=\"bash\" class=\"EnlighterJSRAW\">lsblk<\/code> eingeben sp\u00e4testens jetzt auch eine Partition md0p1 auftauchen. Dieser verpassen wir nun ein Filesystem, erstellen einen Ordner wo wir das RAID mounten k\u00f6nnen und tun dies auch gleich.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">mkfs.ext4 \/dev\/md0p1\nmkdir \/media\/temp\nmount \/dev\/md0p1 \/media\/temp<\/pre>\n\n\n\n<p>Nun k\u00f6nnen wir beginnen und unsere Clouddaten vom ersten Datentr\u00e4ger in das RAID zu kopieren. (Pfade gehen vom Tutorial aus und m\u00fcssen ggf. angepasst werden)<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">cp -R \/media\/festplatte\/. \/media\/temp<\/pre>\n\n\n\n<p>Nun sollten all unsere Clouddaten im RAID vorhanden sein. Um zu testen ob wir alles richtig gemacht haben, h\u00e4ngen wir nun den ersten Datentr\u00e4ger und das RAID aus und h\u00e4ngen das RAID an der richtigen Stelle ein und setzen die Zugriffsrechte. Ebenso starten wir danach den Webserver und schauen ob unsere Cloud wieder lebt.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">umount \/media\/temp\numount \/media\/festplatte\nmount \/dev\/md0p1 \/media\/festplatte\nchown -R www-data:www-data \/media\/festplatte\nsystemctl start apache2<\/pre>\n\n\n\n<p>In dem Zuge sollten wir nun noch unseren Startvorgang anpassen und dem Betriebssystem mitteilen, dass es zuk\u00fcnftig nicht mehr die Partition sda1 f\u00fcr die Cloud mounten soll, sondern md0p1. Ab jetzt werden wir aber die Datentr\u00e4ger nicht mehr per Namen sondern per UUID ansprechen. Hierzu m\u00fcssen wir wie in Part 2 die ID der RAID Partition herrausfinden. Das geschiet genauso per Befehl <code data-enlighter-language=\"bash\" class=\"EnlighterJSRAW\">blkid<\/code>. Nun bearbeiten wir die <code>\/etc\/fstab<\/code> Datei und passen den vorhandenen Eintrag mit der neuen UUID an. Der Aufbau bleibt wie gehabt:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\/dev\/disk\/by-uuid\/&lt;PARTUUID>       \/media\/festplatte    ext4    nofail        0       2<\/pre>\n\n\n\n<p>Sollte der Zugriff auf die Cloud klappen, so steht dem Finale nichts mehr entgegen.<br>Wir k\u00f6nnen daher nun endlich auch unseren urspr\u00fcnglichen Datentr\u00e4ger (\/dev\/sda) dem RAID hinzuf\u00fcgen.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"bash\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">mdadm --manage \/dev\/md0 --add \/dev\/sda<\/pre>\n\n\n\n<p>Nun sollte der Datentr\u00e4ger zum RAID geh\u00f6ren. Dies l\u00e4sst sich \u00fcber <code data-enlighter-language=\"bash\" class=\"EnlighterJSRAW\">lsblk<\/code> einsehen. Allerdings werden beide Datentr\u00e4ger erst noch synchronisiert. Noch genauer sehen wir es \u00fcber <code data-enlighter-language=\"bash\" class=\"EnlighterJSRAW\">mdadm --detail \/dev\/md0<\/code>. Oder auch mit <code data-enlighter-language=\"bash\" class=\"EnlighterJSRAW\">cat \/proc\/mdstat<\/code>.<br>Hier sehen wir auch den Fortschritt des synchronisierens der beiden Datentr\u00e4ger. Der Pi sollte nun solange durchlaufen bis beide Datentr\u00e4ger als synchron angezeigt werden.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Alle Befehle in diesem Tutorial werden mit Administratorenrechten ausgef\u00fchrt.Daher bitte einmal den Befehl sudo -s ausf\u00fchren, um Rootrechte zu erhalten. Um nun unsere Cloud auch noch gegen Hardwareausf\u00e4lle zu sch\u00fctzen ist es sinnvoll wie bei unserer NAS Serie ein RAID zu verwenden. Sprich: Wir halten die Daten auf mehreren Datentr\u00e4ger&#8230; <a href=\"https:\/\/jet0jlh.de\/?p=417\">Read more &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15,5],"tags":[],"class_list":["post-417","post","type-post","status-publish","format-standard","hentry","category-nextcloud","category-tutorials"],"_links":{"self":[{"href":"https:\/\/jet0jlh.de\/index.php?rest_route=\/wp\/v2\/posts\/417","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jet0jlh.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jet0jlh.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jet0jlh.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jet0jlh.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=417"}],"version-history":[{"count":6,"href":"https:\/\/jet0jlh.de\/index.php?rest_route=\/wp\/v2\/posts\/417\/revisions"}],"predecessor-version":[{"id":489,"href":"https:\/\/jet0jlh.de\/index.php?rest_route=\/wp\/v2\/posts\/417\/revisions\/489"}],"wp:attachment":[{"href":"https:\/\/jet0jlh.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=417"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jet0jlh.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=417"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jet0jlh.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=417"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}