{"id":444,"date":"2015-04-19T19:11:40","date_gmt":"2015-04-19T18:11:40","guid":{"rendered":"http:\/\/www.schoen-bloed.at\/blog\/?p=444"},"modified":"2021-10-26T13:45:20","modified_gmt":"2021-10-26T12:45:20","slug":"vorbereiten-eines-zfs-raidz1-mit-nur-2-festplatten-unter-linux","status":"publish","type":"post","link":"https:\/\/www.schoen-bloed.at\/blog\/2015\/04\/vorbereiten-eines-zfs-raidz1-mit-nur-2-festplatten-unter-linux\/","title":{"rendered":"Vorbereiten eines ZFS raidz1 mit nur 2 Festplatten unter Linux."},"content":{"rendered":"<p>Die Ausgangssituation ist wie folgt, ich m\u00f6chte ein RaidZ1 mit ZFS unter Linux erstellen. Allerdings wurden bis jetzt nur 2 der 3 ben\u00f6tigten Festplatten geliefert. Da ich ungeduldig bin soll Raid schon jetzt in betrieb gehen und die parity Festplatte erst sp\u00e4ter hinzugef\u00fcgt werden.<!--more--><\/p>\n<p>Leider bietet ZFS keine native M\u00f6glichkeit um ein Raid mit einem fehlenden Laufwerk zu erstellen. Also m\u00fcssen wir ein Laufwerk f\u00fcr den Zeitraum der Erstellung bereitstellen. Die L\u00f6sung daf\u00fcr ist ein Loop Device welches eine normale Datei auf dem Speichermedium als als Blockdevice bereitstellt. Dazu wird unter Linux f\u00fcr losetup verwendet, andere Betriebssysteme haben \u00e4hnliche L\u00f6sungen. Damit das funktioniert muss das Virtuelle Device genauso gro\u00df sein wie die echten Festplatten. In meinem Fall sind das 8TB und da ist schon eines der Hauptprobleme. Diese Festplatten sind zum Zeitpunkt der Erstellung des Artikels ganz neu auf dem Markt und die gr\u00f6\u00dfte Speicherkapazit\u00e4t die man kaufen kann.<\/p>\n<p>Die L\u00f6sung liegt in einem der Kernfeatures von ZFS, Deduplikation. Also ist das vorgehen wie folgt, wir erstellen eine mit \/dev\/zero gef\u00fcllte Datei die genauso gro\u00df ist wie die physikalischen Festplatten (oder SSDs) auf einem ZFS Laufwerk mit deduplication. Dann machen wir ein Loop Device, erstellen das Raidz1 und entfernen das Loop Device aus dem Raidverbund. So bald die 3te Festplatte verf\u00fcgbar ist wird diese in das Raid eingebunden.<\/p>\n<p>Hier das Vorgehen wie ich mein Raidz1 mit 8TB Festplatten gemacht habe. Dabei ist zu beachten das ich bereits ein Raid mit aktivierte Deduplikation angelegt habe.<\/p>\n<p>Aktivieren von\u00a0 Deduplikation auf dem bestehenden Dateisystem TB3\/temp.<\/p>\n<p><code>\/schoenbloed# zfs set dedup=on TB3\/temp<\/code><\/p>\n<p>Erstellen der leeren Datei mit 8.000.000.000.000 Bytes.<\/p>\n<p><code>\/schoenbloed# truncate -s 8TB\u00a0TB3\/temp\/dummy_disk<\/code><\/p>\n<p>Erstellen des Loop Devices mit automatischer freier Device Zuweisung und anzeigen aller Loop Devices<\/p>\n<p><code>\/schoenbloed# losetup -f TB3\/temp\/dummy_disk<br \/>\n\/schoenbloed# losetup -a<br \/>\n\/dev\/loop0: [001b]:7 (TB3\/temp\/dummy_disk)<\/code><\/p>\n<p>Erstellen des ZFS raidz1 mit dem Name TB8 sowie den 2 physischen Festplatten und einer tempor\u00e4ren virtuellen &#8222;Festplatte&#8220;.<\/p>\n<p><code>\/schoenbloed# zpool create TB8 raidz1 \/dev\/sda \/dev\/sdb \/dev\/loop0<br \/>\n\/schoenbloed# zpool status TB8<\/code><\/p>\n<pre>  pool: TB8\n state: ONLINE\n  scan: none requested\nconfig:\n\n\tNAME                                    STATE     READ WRITE CKSUM\n\tTB8                                     ONLINE       0     0     0\n\t  raidz1-0                              ONLINE       0     0     0\n\t    sda                                 ONLINE       0     0     0\n\t    sdb                                 ONLINE       0     0     0\n\t    loop0                               ONLINE       0     0     0\n\nerrors: No known data errors\n<\/pre>\n<p>Loop Device &#8222;offline&#8220; nehmen.<\/p>\n<p><code>\/schoenbloed# zpool offline TB8 \/dev\/loop0<br \/>\n\/schoenbloed# zpool status TB8<\/code><\/p>\n<pre>  pool: TB8\n state: DEGRADED\nstatus: One or more devices has been taken offline by the administrator.\n\tSufficient replicas exist for the pool to continue functioning in a\n\tdegraded state.\naction: Online the device using 'zpool online' or replace the device with\n\t'zpool replace'.\n  scan: none requested\nconfig:\n\n\tNAME                                    STATE     READ WRITE CKSUM\n\tTB8                                     DEGRADED     0     0     0\n\t  raidz1-0                              DEGRADED     0     0     0\n\t    sda                                 ONLINE       0     0     0\n\t    sdb                                 ONLINE       0     0     0\n\t    loop0                               OFFLINE      0     0     0\n\nerrors: No known data errors<\/pre>\n<p>\/schoenbloed# df -h TB8<br \/>\nFilesystem Size Used Avail Use% Mounted on<br \/>\nTB8 15T 128K 15T 1% TB8<\/p>\n<p>Erst jetzt sollten Daten auf das Dateisystem kopiert werden, weil wir sonst in die Gefahr laufen das die dummy_disk Datei zu gro\u00df f\u00fcr das deduplizierte Laufwerk wird.<\/p>\n<p>Im n\u00e4chsten Schritt haben wir die 3te Festplatte bekommen und f\u00fcgen Sie dem Raid hinzu.<\/p>\n<p><code>\/schoenbloed# zpool replace TB8 \/dev\/loop0 \/dev\/sdc<\/code><\/p>\n<p>Mittels &#8222;zpool status TB8&#8220; k\u00f6nnen wir den Status des Resilvern ansehen. Sobald das fertig ist, ist das Raid voll einsatzbereit.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die Ausgangssituation ist wie folgt, ich m\u00f6chte ein RaidZ1 mit ZFS unter Linux erstellen. Allerdings wurden bis jetzt nur 2 der 3 ben\u00f6tigten Festplatten geliefert. Da ich ungeduldig bin soll Raid schon jetzt in betrieb gehen und die parity Festplatte erst sp\u00e4ter hinzugef\u00fcgt werden.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,13],"tags":[],"_links":{"self":[{"href":"https:\/\/www.schoen-bloed.at\/blog\/wp-json\/wp\/v2\/posts\/444"}],"collection":[{"href":"https:\/\/www.schoen-bloed.at\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.schoen-bloed.at\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.schoen-bloed.at\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.schoen-bloed.at\/blog\/wp-json\/wp\/v2\/comments?post=444"}],"version-history":[{"count":9,"href":"https:\/\/www.schoen-bloed.at\/blog\/wp-json\/wp\/v2\/posts\/444\/revisions"}],"predecessor-version":[{"id":597,"href":"https:\/\/www.schoen-bloed.at\/blog\/wp-json\/wp\/v2\/posts\/444\/revisions\/597"}],"wp:attachment":[{"href":"https:\/\/www.schoen-bloed.at\/blog\/wp-json\/wp\/v2\/media?parent=444"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.schoen-bloed.at\/blog\/wp-json\/wp\/v2\/categories?post=444"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.schoen-bloed.at\/blog\/wp-json\/wp\/v2\/tags?post=444"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}