{"id":455,"date":"2018-10-01T10:13:40","date_gmt":"2018-10-01T08:13:40","guid":{"rendered":"https:\/\/www.gluecksgriff-taschen.de\/?p=455"},"modified":"2022-07-02T17:45:27","modified_gmt":"2022-07-02T15:45:27","slug":"ubuntu-software-raid-erstellen","status":"publish","type":"post","link":"https:\/\/www.gluecksgriff-taschen.de\/?p=455","title":{"rendered":"Ubuntu &#8211; Software Raid erstellen"},"content":{"rendered":"<p>Wir haben in der Firma eine Video\u00fcberwachung des Au\u00dfengel\u00e4ndes mit einem Dutzend Kameras. Die aufgezeichneten Videos werden f\u00fcr ein paar Tage gespeichert. Allerdings sind die dabei anfallenden Datenmengen und Transferraten so gro\u00df, dass eine einzelne Platte \u00fcberfordert w\u00e4re. Normalerweise bevorzuge ich ja Hardware Raid, aber wir haben gerade keinen Raid-Controller da und f\u00fcr den Anwendungszweck ist ein Software Raid vollkommen ok.<\/p>\n\n\n<h3 class=\"wp-block-heading\">Die Ausgangslage<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ich habe zur Abwechslung mal keinen virtuellen Server, sondern richtiges Blech. Es handelt sich um ein \u00e4lteres Serverboard INTEL S1200BTL mit 8GB RAM und einer kleinen SSD f\u00fcr das Betriebssystem sowie 5 SATA-Platten \u00e1 2TB f\u00fcr unser Software RAID. Als Betriebssystem ist ein Ubuntu 16.04LTS installiert.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h3 class=\"wp-block-heading\">Wichtige Vorarbeiten<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Die Festplatten sind nat\u00fcrlich in einer Backplane verbaut, so dass man defekte Platten tauschen kann ohne gleich den ganzen Server auseinander nehmen zu m\u00fcssen (erschwerend kommt in meinem Fall hinzu, dass er ganz oben im Rack auf 2m H\u00f6he eingebaut ist). Damit bei einem Ausfall nicht die falsche Festplatte gezogen und damit evtl. das RAID zerst\u00f6rt wird, beschrifte ich die einzelnen Slots der Backplane mit den jeweiligen Seriennummern der Festplatten.&nbsp;<br>Die Seriennummern des Festplatten verr\u00e4t mir <code>hdparm<\/code>.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; highlight: [1]; title: ; notranslate\" title=\"\">\nedv@kameraserver:~$ sudo hdparm -i \/dev\/sdb \/dev\/sdc \/dev\/sdd \/dev\/sde \/dev\/sdf | grep -i serial\nModel=ST2000DM006-2DM164, FwRev=CC26, SerialNo=Z504JJC9\nModel=ST2000VX008-2E3164, FwRev=CV12, SerialNo=Z520LDBJ\nModel=Hitachi HDS722020ALA330, FwRev=JKAOA3EA, SerialNo=JK11A1YAJJ44LV\nModel=Hitachi HDS722020ALA330, FwRev=JKAOA3EA, SerialNo=JK1171YAGZ0GES\nModel=Hitachi HDS722020ALA330, FwRev=JKAOA3EA, SerialNo=JK1101YAJJ5EHV\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">Partitionen erstellen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Bevor ich das Raid erstellen kann, muss ich zun\u00e4chst mal auf allen Platten eine Partition identischer Gr\u00f6\u00dfe erstellen. Da ich Festplatten unterschiedlicher Hersteller im Einsatz habe und 2TB nicht \u00fcberall 2TB sind, lasse ich die letzten 8192 Sektoren ungenutzt. So kann ich dann im Bedarfsfall auch eine Platte einsetzen, wo der Hersteller ein paar Sektoren eingespart hat. Als erstes lege ich mittels <code>parted<\/code> eine leere Partitionstabelle an.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; highlight: [1,3]; title: ; notranslate\" title=\"\">\nedv@kameraserver:~$ sudo parted \/dev\/sdb mklabel gpt\nWarning: The existing disk label on \/dev\/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?\nYes\/No? y\nInformation: You may need to update \/etc\/fstab.\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Das ganze nat\u00fcrlich nicht nur f\u00fcr <code>\/dev\/sdb<\/code>, sondern in meinem Fall wiederholt bis <code>\/dev\/sdf<\/code>.<br>Als n\u00e4chstes lege ich die Partition an und setze den Partitionstyp auf &#8222;raid&#8220;, auch dies ist mit <code>parted<\/code> schnell erledigt.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; highlight: [1,3]; title: ; notranslate\" title=\"\">\nedv@kameraserver:~$ sudo parted -a optimal -- \/dev\/sdb mkpart primary 2048s -8192s\nInformation: You may need to update \/etc\/fstab.\nedv@kameraserver:~$ sudo parted \/dev\/sdb set 1 raid on\nInformation: You may need to update \/etc\/fstab.\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Ob das wie gew\u00fcnscht geklappt hat, pr\u00fcfe ich kurz mit <code>fdisk<\/code>.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; highlight: [1]; title: ; notranslate\" title=\"\">\nedv@kameraserver:~$ sudo fdisk -l \/dev\/sdb\nDisk \/dev\/sdb: 1,8 TiB, 2000398934016 bytes, 3907029168 sectors\nUnits: sectors of 1 * 512 = 512 bytes\nSector size (logical\/physical): 512 bytes \/ 4096 bytes\nI\/O size (minimum\/optimal): 4096 bytes \/ 4096 bytes\nDisklabel type: gpt\nDisk identifier: D5D5DEB6-1A05-4434-A2AF-0CF3EDC5EF7A\n\nDevice     Start        End    Sectors  Size Type\n\/dev\/sdb1   2048 3907020976 3907018929  1,8T Linux RAID\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Sieht gut aus, also wiederhole ich das ganze wieder mit den anderen Festplatten bis <code>\/dev\/sdf<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Raid einrichten<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Nun kann ich endlich das eigentliche Raid anlegen, in meinem Fall ein RAID 6, welches dann unter dem Block-Device <code>\/dev\/md0<\/code> verf\u00fcgbar ist.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; highlight: [1]; title: ; notranslate\" title=\"\">\nedv@kameraserver:~$ sudo mdadm --create \/dev\/md0 --level=6 --raid-devices=5 \/dev\/sd&#x5B;bcdef]1\nmdadm: Defaulting to version 1.2 metadata\nmdadm: array \/dev\/md0 started.\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Der Aufbau des Raid kann durchaus einige Stunden dauern, den aktuellen Status kann ich mir jederzeit mittels<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; highlight: [1]; title: ; notranslate\" title=\"\">\nedv@kameraserver:~$ sudo cat \/proc\/mdstat\nPersonalities : &#x5B;linear] &#x5B;multipath] &#x5B;raid0] &#x5B;raid1] &#x5B;raid6] &#x5B;raid5] &#x5B;raid4] &#x5B;raid10]\nmd0 : active raid6 sdf1&#x5B;4] sde1&#x5B;3] sdd1&#x5B;2] sdc1&#x5B;1] sdb1&#x5B;0]\n      5860134912 blocks super 1.2 level 6, 512k chunk, algorithm 2 &#x5B;5\/5] &#x5B;UUUUU]\n      &#x5B;&gt;....................]  resync =  0.9% (18899392\/1953378304) finish=453.3min speed=71123K\/sec\n      bitmap: 15\/15 pages &#x5B;60KB], 65536KB chunk\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">anschauen, in meinem Fall wird es also wohl noch knappe 8 Stunden dauern. Es ist aber nicht n\u00f6tig nun in Ehrfurcht vor dem Rechner zu verharren, selbst bei einem Neustart wird der Build nahtlos fortgef\u00fchrt. In der Zwischenzeit speichere ich die Raid-Konfiguration ab. Dies geschieht in der Datei <code>\/etc\/mdadm\/mdadm.conf<\/code>. Den n\u00f6tigen Konfigurationseintrag lasse ich mir erstmal anzeigen.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; highlight: [1]; title: ; notranslate\" title=\"\">\nedv@kameraserver:~$ sudo mdadm --examine --scan --verbose\nARRAY \/dev\/md\/0  level=raid6 metadata=1.2 num-devices=5 UUID=21ae1412:e3b4dd92:2c42cdaa:09862571 name=kameraserver:0\n   devices=\/dev\/sdf1,\/dev\/sde1,\/dev\/sdd1,\/dev\/sdc1,\/dev\/sdb1\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Diese Ausgabe f\u00fcge ich nun exakt so wie sie ist ans Ende der <code>\/etc\/mdadm\/mdadm.conf<\/code> hinzu, die nun so aussieht.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; highlight: [24,25]; title: ; notranslate\" title=\"\">\n# mdadm.conf\n#\n# Please refer to mdadm.conf(5) for information about this file.\n#\n\n# by default (built-in), scan all partitions (\/proc\/partitions) and all\n# containers for MD superblocks. alternatively, specify devices to scan, using\n# wildcards if desired.\n#DEVICE partitions containers\n\n# auto-create devices with Debian standard permissions\nCREATE owner=root group=disk mode=0660 auto=yes\n\n# automatically tag new arrays as belonging to the local system\nHOMEHOST &amp;lt;system&gt;\n\n# instruct the monitoring daemon where to send mail alerts\nMAILADDR ralf\n\n# definitions of existing MD arrays\n\n# This file was auto-generated on Thu, 27 Sep 2018 18:35:02 +0200\n# by mkconf $Id$\nARRAY \/dev\/md\/0  level=raid6 metadata=1.2 num-devices=5 UUID=21ae1412:e3b4dd92:2c42cdaa:09862571 name=kameraserver:0\n   devices=\/dev\/sdf1,\/dev\/sde1,\/dev\/sdd1,\/dev\/sdc1,\/dev\/sdb1\n\n<\/pre><\/div>\n\n\n<h3 class=\"wp-block-heading\">RAID formatieren und mounten<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ich m\u00f6chte ext4 als Dateisystem verwenden und 200GB (also ungef\u00e4hr 3%) meines RAID6 f\u00fcr den Benutzer root reservieren. Soviel Platz brauche ich zwar nicht wirklich f\u00fcr root, aber es dient auch dazu eine Fragmentierung zu vermeiden.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; highlight: [1]; title: ; notranslate\" title=\"\">\nedv@kameraserver:~$ sudo mkfs.ext4 -m 3 -b 4096 -E stride=128,stripe-width=384 \/dev\/md0\nmke2fs 1.42.13 (17-May-2015)\nEin Dateisystems mit 1465033728 (4k) Bl\u00f6cken und 183132160 Inodes wird erzeugt.\nUUID des Dateisystems: 1bf6c85b-9dbd-4741-95b1-6465edac30aa\nSuperblock-Sicherungskopien gespeichert in den Bl\u00f6cken:\n        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,\n        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,\n        102400000, 214990848, 512000000, 550731776, 644972544\n\nbeim Anfordern von Speicher f\u00fcr die Gruppentabellen: erledigt\nInode-Tabellen werden geschrieben: erledigt\nDas Journal (32768 Bl\u00f6cke) wird angelegt: erledgt\nDie Superbl\u00f6cke und die Informationen \u00fcber die Dateisystemnutzung werden\ngeschrieben: erledigt\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Ich m\u00f6chte das RAID-Laufwerk im Verzeichnis <code>\/mnt\/aufzeichnung<\/code> zur Verf\u00fcgung stellen, daher lege ich dieses Verzeichnis an.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; highlight: [1]; title: ; notranslate\" title=\"\">\nedv@kameraserver:~$ sudo mkdir \/mnt\/aufzeichnung\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Damit mein RAID nach einem Neustart automatisch gemountet wird und direkt zur Verf\u00fcgung steht, f\u00fcge ich an das Ende der <code>\/etc\/fstab<\/code> folgendes hinzu:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; highlight: [1]; title: ; notranslate\" title=\"\">\n\/dev\/md0 \/mnt\/aufzeichnung\/ ext4 defaults,nosuid,noexec,nodev,noatime 1 2\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Ich verwende diese Mountoptionen, da das RAID ausschlie\u00dflich f\u00fcr Video-Dateien verwendet wird. Sollen dort auch ausf\u00fchrbare Dateien liegen, macht die eine oder andere Option eher wenig Sinn, also bitte nicht blind \u00fcbernehmen sondern mal nachlesen was die wirklich machen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nun fix testen ob das Mounten auch funktioniert, entweder per Neustart oder durch ein<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; highlight: [1]; title: ; notranslate\" title=\"\">\nedv@kameraserver:~$ sudo mount -a\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Wenn alles geklappt hat, sollte das RAID6 nun als <code>\/dev\/md0<\/code> unter <code>\/mnt\/aufzeichnung<\/code> zur Verf\u00fcgung stehen und ganz normal genutzt werden k\u00f6nnen, schauen wir mal nach.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; highlight: [1]; title: ; notranslate\" title=\"\">\nedv@kameraserver:~$ df -h\nFilesystem      Size  Used Avail Use% Mounted on\nudev            3,8G     0  3,8G   0% \/dev\ntmpfs           770M  8,7M  761M   2% \/run\n\/dev\/sda1       1,8T  2,3G  1,7T   1% \/\ntmpfs           3,8G     0  3,8G   0% \/dev\/shm\ntmpfs           5,0M     0  5,0M   0% \/run\/lock\ntmpfs           3,8G     0  3,8G   0% \/sys\/fs\/cgroup\ntmpfs           770M     0  770M   0% \/run\/user\/1000\n\/dev\/md0        5,5T   58M  5,3T   1% \/mnt\/aufzeichnung\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Das sieht sehr gut aus, nun noch schnell Samba installieren und die Freigaben f\u00fcr die Kameras erstellen und fertig ist die Laube.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Informationen \u00fcber den RAID-Zustand kann ich mir jederzeit \u00fcber <code>mdadm<\/code> ausgeben lassen.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; highlight: [1]; title: ; notranslate\" title=\"\">\nedv@kameraserver:~$ sudo mdadm --detail \/dev\/md0\n\/dev\/md0:\n        Version : 1.2\n  Creation Time : Fri Sep 28 15:46:21 2018\n     Raid Level : raid6\n     Array Size : 5860134912 (5588.66 GiB 6000.78 GB)\n  Used Dev Size : 1953378304 (1862.89 GiB 2000.26 GB)\n   Raid Devices : 5\n  Total Devices : 5\n    Persistence : Superblock is persistent\n\n  Intent Bitmap : Internal\n\n    Update Time : Mon Oct  1 09:51:18 2018\n          State : clean\n Active Devices : 5\nWorking Devices : 5\n Failed Devices : 0\n  Spare Devices : 0\n\n         Layout : left-symmetric\n     Chunk Size : 512K\n\n           Name : kameraserver:0  (local to host kameraserver)\n           UUID : 21ae1412:e3b4dd92:2c42cdaa:09862571\n         Events : 5507\n\n    Number   Major   Minor   RaidDevice State\n       0       8       17        0      active sync   \/dev\/sdb1\n       1       8       33        1      active sync   \/dev\/sdc1\n       2       8       49        2      active sync   \/dev\/sdd1\n       3       8       65        3      active sync   \/dev\/sde1\n       4       8       81        4      active sync   \/dev\/sdf1\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Wie man eine defekte Festplatte im Raid ersetzt, habe ich <a href=\"https:\/\/www.gluecksgriff-taschen.de\/?p=596\" target=\"_blank\" rel=\"noreferrer noopener\" aria-label=\"hier (\u00f6ffnet in neuem Tab)\">hier<\/a> beschrieben.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wir haben in der Firma eine Video\u00fcberwachung des Au\u00dfengel\u00e4ndes mit einem Dutzend Kameras. Die aufgezeichneten Videos werden f\u00fcr ein paar Tage gespeichert. Allerdings sind die dabei anfallenden Datenmengen und Transferraten so gro\u00df, dass eine einzelne Platte \u00fcberfordert w\u00e4re. Normalerweise bevorzuge ich ja Hardware Raid, aber wir haben gerade keinen Raid-Controller da und f\u00fcr den Anwendungszweck &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"https:\/\/www.gluecksgriff-taschen.de\/?p=455\"> <span class=\"screen-reader-text\">Ubuntu &#8211; Software Raid erstellen<\/span> Weiterlesen &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","site-sidebar-layout":"default","site-content-layout":"default","ast-global-header-display":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","footnotes":""},"categories":[3],"tags":[29,86,16,87,85],"class_list":["post-455","post","type-post","status-publish","format-standard","hentry","category-linux","tag-installation","tag-mdadm","tag-raid","tag-raid6","tag-software-raid"],"_links":{"self":[{"href":"https:\/\/www.gluecksgriff-taschen.de\/index.php?rest_route=\/wp\/v2\/posts\/455","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gluecksgriff-taschen.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gluecksgriff-taschen.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gluecksgriff-taschen.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gluecksgriff-taschen.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=455"}],"version-history":[{"count":45,"href":"https:\/\/www.gluecksgriff-taschen.de\/index.php?rest_route=\/wp\/v2\/posts\/455\/revisions"}],"predecessor-version":[{"id":795,"href":"https:\/\/www.gluecksgriff-taschen.de\/index.php?rest_route=\/wp\/v2\/posts\/455\/revisions\/795"}],"wp:attachment":[{"href":"https:\/\/www.gluecksgriff-taschen.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=455"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gluecksgriff-taschen.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=455"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gluecksgriff-taschen.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=455"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}