Electronic / Foto / Technik / SmartHome
APR 19 2017

Wie Du im Eigenbau ein NAS aufbaust

Elektronik, Unkategorisiert



NEU im Shop: BANANA PI M2 BRY für 38,99 Euro


In diesem Artikel möchte ich euch eine NAS-Lösung im Eigenbau mit dem RaspberryPI vorstellen. Mit diesem Eigenbau NAS habt ihr den vollen Umfang wie Q-NAP oder ähnliche Systeme.

Erfahrungen im täglichen Einsatz haben gezeigt das System läuft sehr stabil im RAID 5. Hier mein Setup:

  • Raspberry PI
  • Installation (JESSY)
  • OPENMEDIAFAULT
  • 3 x 1,2TB externe USB-Festplatten

 

1.0 RaspberryPI Installation

die benötigte Software OpenMediaFault in der aktuellen Version

Ich habe das Image mit WinDisk32 auf die SSD-Karte geschrieben.

 

1.1 Eigenbau NAS OMV Startkonfiguration

Nachdem das OpenMediaFault auf dem RaspberryPI läuft erreicht man das Webinterface über folgende Adresse:

http://192.168.0.54/

Meldet euch zunächst mit dem Benutzer admin und dem Passwort openmediavault an. Klickt im linken Menü auf Allgemeine Einstellungen und ändert das Sitzungslimit auf 0, damit werdet ihr nicht mehr automatisch abgemeldet. Diese Einstellung ist meine persönliche Präferenz und optional, stellt hier ein was ihr für euch am geeignetsten empfindet.

Im Anschluss daran sollte unbedingt das Web Administrator Passwort geändert werden!

Es folgt die Einstellung von Datum&Zeit sowie Netzwerk. Die Netzwerkeinstellung im Detail erreicht ihr unter dem Reiter Schnittstellen. Wählt eure Netzwerkkarte aus und klickt auf bearbeiten. Hier könnt ihr die IP-Adresse des NAS festlegen, DHCP bedeutet, dass euer Router dem NAS automatisch eine IP-Adresse zuweist.

Ich empfehle euch auf eurem Router dem NAS eine feste IP-Adresse zuzuweisen.

 

2.0 Systemaktualisierung

es gibt zwei Möglichkeiten um das NAS zu aktualisieren. Eine Möglichkeit ist die Aktualisierung direkt im OpenMediaFault zu machen. Eine andere Möglichkeit ist die Aktualisierung über die shell. Ich bevorzuge diese Methode.

Hierzu startet ihr eine ssh zum Beispiel Putty und setzt folgende Befehle ab:

sudo -s
 apt-get update
 apt-get dist-upgrade

 

3.0 Benachrichtigungen

OpenMediaVault kann euch bei einem Fehler automatisch durch den Versand einer E-Mail benachrichtigen. Da man sich ja nicht täglich auf sein NAS einloggt, ist dies sehr zu empfehlen um möglichst schnell auf einen Ausfall reagieren zu können. Alles was ihr dafür benötigt ist ein E-Mail Account bei einem Provider eurer Wahl.

 

4.0 Eigenbau NAS RAID einrichten

da wir hier ein Software RAID aufbauen welches auf dem RaspberryPI läuft und die angeschlossenen Festplatten über den USB des RaspberryPI angesprochen werden dauert die Einrichtung eines RAID5 entsprechend lange! In meinem Fall dauerte die RAID Initialisierung der 3 TB-Platten gut 3 Tage!

Über die RAID Verwaltung lässt sich aus den Datenfestplatten mit Leichtigkeit ein Raid-Verbund erstellen. Dazu wählt man zuerst den gewünschten Raid-Typ (Raid 0,1,5,6 oder JBOD) aus.

Ist der RAID erstellt muss dieser initialisiert werden. Erst danach kann das Filesystem installiert werden. Hier empfehle ich EXT4

Nach dem Anlegen des Dateisystems muss der Raid noch eingebunden werden – ansonsten ist dieser nicht nutzbar. Sollte der Speicherplatz mit der Zeit nicht mehr ausreichen, ist es möglich den Raid-Verbund nachträglich – und ohne Datenverlust – um eine oder mehrere Festplatten zu erweitern. Dies ist allerdings nur bei einem 5 oder 6 möglich. Nachdem eine neue Festplatte hinzugefügt wurde muss unter dem Punkt „Dateisysteme“ die Partition des Raids auf die nun neue Größe erweitert werden. Dies geschieht alles ohne Datenverlust.

Achtung!!! Ein RAID ist kein Backup oder sollte als solches gesehen werden. Im Falle eines Ausfalls einer Platte  und dem Austausch dieser Platte und anschließendem Neuberechnen (Rebuild) komplett ausgelastet. Sollte jetzt eine weitere Platte ausfallen ist der Datenverlust zu 100%

Kleine Codeschnipsel die den Rebuildvorgang etwas beschleunigen

sudo mdadm --grow --bitmap=internal /dev/md0

Nach dem Rebuild kann mit folgendem Code wieder auf die normale Geschwindigkeit gefahren werden:

sudo mdadm --grow --bitmap=none /dev/md0

Während des Rebuilds kann der Raid weiterhin benutzt werden und das NAS kann auch zwischendurch neugestartet oder heruntergefahren werden, der Rebuild wird nach dem Neustart an der Stelle fortgesetzt. Im wirklichen Ernstfall würde ich allerdings dazu raten das NAS während eines Rebuild nicht zu benutzen um die Wahrscheinlichkeit eines weiteren Ausfalls zu verringern.

5.0 S.M.A.R.T

S.M.A.R.T steht für Self-Monitoring, Analysis and Reporting-Technology und beschreibt einen in Festplatten eingebauten Standard. Die Festplatte kann unter einem Betriebssystem ausgelesen und die S.M.A.R.T-Werte analysiert werden.

Ich habe mit den folgenden Einstellungen sehr gute Erfahrungen gemacht

Klickt auf S.M.A.R.T. und setzt einen Haken bei aktivieren. Möchtet ihr die Festplatten alle 4 Stunden prüfen, wählt bei Prüfintervall 14400 (60 [Sekunden] * 60 [Minuten] * 4 [Stunden]) aus. Der Powermodus sollte auf Bereitschaft stehen, damit eure Festplatten nicht bei jeder Prüfung geweckt werden.

Anschließend müsst ihr unter dem Reiter Laufwerke manuell die S.M.A.R.T. Überprüfung für jede Festplatte aktivieren!

Ein NAS läuft meistens für mehrere Stunden, daher ist es sinnvoll die Festplatten in einen energiesparenden Zustand zu versetzen, sofern diese nicht benötigt werden – denn die Festplatten sind die größten Energieverbraucher in einem NAS. Klickt dazu auf den Punkt Reale Festplatten, wählt eine Festplatte aus und klickt auf Bearbeiten.

In meinem NAS benutze ich eine Spindownzeit von 30 Minuten, es kann aber auch Sinn machen die Zeit auf 60 Minuten zu erhöhen. Findet in der eingestellten Zeit kein Zugriff auf die Festplatten statt, werden diese in einen energiesparenden Zustand versetzt.

 

6.0 Erstellen einer Freigabe für andere Computer

Zunächst müsst ihr euch entscheiden ob ihr eine SMB/CIFS oder eine NFS Freigabe erstellen möchtet. Die meisten werden sich aufgrund der Windows-Kompatibilität sicher für SMB entscheiden. Klickt auf den Menüpunkt SMB/CIFS und aktiviert diesen Dienst. Danach könnt ihr über den Reiter Freigaben eine Freigabe erstellen. Ich nenne meine Freigabe als Beispiel Daten. Ich habe da ich auch un Linux einen Zugang in mein RAID haben möchte auch noch die Freigabe NFS eingerichtet.

Um darauf zugreifen zu können geben wir den freigegebenen Ordner an

7.0 Eigenbau NAS Freigabe in Windows einbinden

Unter Windows 10 gehst Du folgendermaßen vor:

Öffne zuerst die Windows-10-Suche mit [Windows] + [S] und gebe  „Dieser PC“ ein.
Klicke  anschließend oben in der Leiste auf „Computer“ und anschließend auf „Netzlaufwerk verbinden„.

Nun kann neben dem Punkt „Laufwerk:“ einen Laufwerksbuchstaben festgelegt werden, unter dem das spätere Netzlaufwerk angezeigt wird.
Hinter „Ordner“ muss der Pfad des Netzlaufwerks angegeben werden. Wenn Du den genauen Pfad nicht kennst und sich das Laufwerk in Deinem Heimnetz befindet, kannst Sie dieses auch mit einem Klick auf „Durchsuchen…“ auswählen.

Soll das Netzlaufwerk bei jedem Neustart automatisch verbunden werden, musst Du  den ersten Haken setzen. Wenn Du dich mit einer anderen Benutzerkennung an dem Laufwerk anmelden möchtest, solltest Du den zweiten Haken setzen.

Mit einem Klick auf „Fertig stellen“ wird das Netzlaufwerk abschließend auf Deinem Computer eingerichtet.

Das war es auch schon. Ihr könnt nun auf das NAS zugreifen.

 

 

Was tun wenn eine Platte als defekt gemeldet wird?

Habe hierzu die Seriennummern der HDDs notiert, die HDD, die als defekt gemeldet wird deaktivieren. Dann die Sereiennummern unter „Reale Festplatten“ wieder angeschaut und somit die fehlende lokalisiert. Danach die Platte ausbauen und durch eine exakt gleiche Platte ersetzen, Kabel wieder verbinden. Die jetzt lokalisierte (vorher nicht eingebundene Festplatte) über „Reale Festplatten“ löschen, um abschließend über die „RAID-Verwaltung“ die Wiederherstellung für eben diese Festplatte laufen zu lassen.

 

Nachtrag:

Hinweis für alle Anderen:
– Festplatten, die einmal aus einem RAID-Verbund raus geworfen wurden, werden nicht automatisch wieder in den Verbund integriert
– dafür muss man die „entfernte“ Festplatte lediglich als „HotSpare“ dem „degraded Array“ wieder hinzufügen und der Rebuild startet sofort
– alternativ hat man über die Konsole noch die Möglichkeit, den Verbund mit Gewalt wieder zusammen zu bauen, was allerdings auch einen sofortigen Resync (ist fast das Gleiche wie ein Rebuild) zur Folge hat …

 

Mögliche RAID-Level

  • Linear: Aneinanderhängen von mehreren Partitionen
  • Multipath: Kein RAID, sondern ein Mapping einer Datei auf zwei verschiedene Pfade auf der gleichen Partition (Spiegelung)
  • Faulty: Emuliert ein fehlerhaftes RAID-System für Testfälle
  • Level 0 (Block Level Striping): Aneinanderhängen von mehreren kleinen Block-Devices zu einem großen.
  • Level 1 (Mirror): Spiegelung einer Disk
  • Level 4: Wie Level 0, aber mit einem zusätzlichen Device für Paritätsbits (erhöhte Ausfallsicherheit).
  • Level 5: Wie Level 4, die Paritätsbits werden aber über alle Geräte verteilt.
  • Level 6: Wie Level 5 aber mit zwei unabhängigen Paritätsbits pro Segment (erhöhte Ausfallsicherheit).
  • Level 10: Kombination von Level 0 und Level 1.

Installation von mdadm

Wenn bei der Linux Installation kein RAID erstellt wurden muss das mdadm Paket aus den Repositories installiert werden.

:~$ sudo aptitude install mdadm

Nach der Installation sind keine weiteren Schritte zur Konfiguration nötig und das Tool kann verwendet werden.

Befehle zur Konfiguration und Verwaltung

Grundsätzliche Syntax

mdadm [mode] <raiddevice> [options] <component-devices>

Array erstellen

mdadm --create /dev/md/<Label> --level=<RAID-Level> --raid-devices=<Anzahl der physischen Partitionen im Array> /dev/sdX1 /dev/sdY1

Parameter:

  • --create kann ein optionaler Parameter gegeben werden in welchem ein Label für das RAID festgelegt werden kann. Bsp.: /dev/md/md_1
  • --level=: Spezifiziert den gewünschten RAID-Level. Erlaubte Eingaben sind: linear, raid0, 0, stripe, raid1, 1, mirror, raid4, 4, raid5, 5, raid6, 6, raid10, 10, multipath, mp, faulty, container
  • --raid-devices=: Spezifiziert die Anzahl der physischen Partitionen im Software-RAID. Zusätzlich müssen noch die einzelnen Partitionen angegeben werden. Bsp.: --raid-devices=2 /dev/sda2 /dev/sdb3

RAID 0 mit MDADM

Um ein RAID 0 (Block Level Striping) Array zu erstellen werden mindestens 2 Partitionen benötigt. Diese sollten gleich groß, und sich auf verschiedenen physischen Festplatten befinden. Der RAID 0 Array kann mit folgendem Befehl initalisiert werden: mdadm --create /dev/md/<Label> --level=0 --raid-devices=<Anzahl> /dev/sdX1 /dev/sdY1

Beispiel (2 physische Festplatten):

root@swraid:~# mdadm --create /dev/md/md_test --level=0 --raid-devices=2 /dev/sdb1 /dev/sdc1 
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md/md_test started.

RAID 1 mit MDADM

Um ein RAID 1 (Block Level Mirroring) Array zu erstellen werden wiederum mindestens zwei physische Partitonen benötigt. Diese sollten gleich groß und sich auf verschiedenen physischen Festplatten befinden. Der RAID 1 Array kann mit folgendem Befehlt initialisiert werden: mdadm --create /dev/md/<Label> --level=1 --raid-devices=<Anzahl> /dev/sdX1 /dev/sdY1

Beispiel (2 physische Festplatten):

root@swraid:/dev# mdadm --create /dev/md/md_test --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1 
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90 
Continue creating array? yes
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md/md_test started.

Array löschen

Um ein RAID-Array auszubinden muss das Array ausgehängt sein (umount) und der Befehl mdadm --stop /dev/md/<Name des RAID> aufgerufen werden. Dadurch wird das Array zwar aus dem System ausgebunden allerdings bleibt das RAID-Array physisch vorhanden.

Um das Array zu entfernen muss bei jeder Festplatte der Superblock, welcher die Festplatte/Partition als RAID-Device festlegt, auf Null gesetzt werden. Dies kann mit dem Befehl mdadm --zero-superblock /dev/<physische Partition> durchgeführt werden.

Beispiel:

root@swraid:/dev# umount -l /mnt/test
root@swraid:/dev# mdadm --stop /dev/md/md_test
mdadm: stopped /dev/md/md_test
root@swraid:/dev# mdadm --zero-superblock /dev/sdb1
root@swraid:/dev# mdadm --zero-superblock /dev/sdc1

Arrays/Partitionen auflisten

RAID-Arrays können mit zweierlei Befehlen aufgelistet werden --detail bezieht sich auf ein gesamtes aktives Array wohingegen sich --examine auf die einzelnen physichen Devices in einem RAID-Verbund bezieht.

root@swraid:/mnt/test# mdadm --examine --brief --scan  --config=partitions
ARRAY /dev/md/md_test metadata=1.2 UUID=81c1d8e5:27f6f8b9:9cdc99e6:9d92a1cf name=swraid:md_test

Dieser befehlt kann auch mit -Ebsc partitions abgekürzt werden.

root@swraid:/dev/md# mdadm --detail /dev/md/md_test 
/dev/md/md_test:
        Version : 1.2
  Creation Time : Fri Apr  7 09:14:36 2017
     Raid Level : raid0
     Array Size : 16776192 (16.00 GiB 17.18 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Fri Apr  7 09:14:36 2017
          State : clean 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

     Chunk Size : 512K

           Name : swraid:md_test  (local to host swraid)
           UUID : 81c1d8e5:27f6f8b9:9cdc99e6:9d92a1cf
         Events : 0

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       33        1      active sync   /dev/sdc1

Hotspare

Bei Hotspare Festplatten/Partitionen handelt es sich um Festplatten/Partitionen welche im Normalfall nicht verwendet werden. Diese kommen zum Einsatz wenn eine der aktiven Festplatten/Partitionen des RAID-Verbundes einen Fehler aufweist oder defekt ist. Wenn in einem Software-Raid keine Hotspare Platte definiert ist muss der Rebuild eines defekten RAID-Verbundes manuell gestartet werden. Ist eine Hotspare vorhanden wird mit dem Rebuild automatisch begonnen. Eine Hotspare Festplatte kann mit dem Befehlt mdadm --add /dev/md/<RAID-Name> /dev/sdX1 hinzugefügt werden, wobei der erste Parameter der Name des RAID-Verbundes und der zweite der Name der hinzuzufügenden Festplatte ist. Soll eine Hotspare Festplatte aus dem RAID-Verbund entfernt werden, so muss der Befehl mdadm --remove /dev/md/<RAID-Name> /dev/sdX1 aufgerufen werden. Hierbei ist wiederum der erste Parameter die Bezeichnung des RAID-Verbundes und der zweite die Bezeichnung der Hotspare Festplatte.

Rebuild

Wenn eine Partition/Festplatte einen Defekt(Software oder Hardware) aufweist muss der RAID-Verbund rebuilded werden. Dazu muss zunächst das defekte Device aus dem RAID entfernt werden. Dazu wird der Befehl mdadm --manage /dev/md/<RAID-Name> -r /dev/sdX1 benötigt. Der erste Parameter von bezieht sich auf den RAID-Verbund. Der zweite auf das defekte Device. Wenn keine Hotspare Festplatte zur Verfügung steht muss eine neue Festplatte partitioniert werden. Wichtig dabei ist das die neue Festplatte die selbe partitionierung wie die defekte Festplatte aufweist. Zum Partitionieren einer Festplatte helfen die tools fdisk /dev/sdX, cfdisk /dev/sdX1 sowie parted /dev/sdX1. Ist die neue Festplatte korrekt partitioniert kann sie dem RAID-Verbund wieder hinzugefügt werden. Dies geschieht mit mdadm --manage /dev/md/<RAID-Name> -a /dev/sdX1. Wenn dabei keine Fehler aufgetreten sind, kann mit der eigentlichen Wiederherstellung(Rebuild) begonnen werden. Dazu muss die neue Partition im RAID-Verbund auf „faulty“ (=fehlerhaft) gesetzt werden: mdadm --manage --set-faulty /dev/md/<RAID-Name> /dev/sdX1. Dadurch wird der rebuild des RAID-Verbundes angestoßen. Mit watch cat /proc/mdstat kann der Fortschritt des Rebuilds verfolgt werden.

Every 2.0s: cat /proc/mdstat                                                         Fri Jul  5 09:59:16 2013


root@swraid:/dev# watch cat /proc/mdstat 
Personalities : [raid0] [raid1]
md127 : active raid1 sdc1[1] sdb1[0]
      8384448 blocks super 1.2 [2/2] [UU]
      [==============>......]  check = 74.7% (6267520/8384448) finish=0.1min speed=202178K/sec

unused devices: <none>

Sobald der Rebuild des RAID-Verbundes abgeschlossen ist muss die Partition aus dem RAID-Verbund entfernt und wieder hinzugefügt werden um den Status „faulty“ zu entfernen. mdadm --manage /dev/md/<RAID-Name> -r /dev/sdX1 zum entfernen und mit mdadm --manage /dev/md/<RAID-Name> -a /dev/sdX1 wieder hinzufügen. Mit dem Befehl mdadm --detail /dev/md/<RAID-Name> kann der Status des RAID-Verbundes noch einmal überprüft werden. Dieser sollte nun den State: clean aufweisen.

E-Mail Adresse für Array-Überwachung einrichten

Um eine Benachrichtigung per E-Mail im Falle eines Defekts zu erhalten kann in der Konfigurationsdatei von mdadm (/etc/mdadm/mdadm.conf) bei MAILADDR root statt root die gewünschte E-Mail Adresse eingetragen werden. Dazu muss ein E-Mail Dienst (postfix, exim, ...) auf dem System konfiguriert sein. /etc/mdadm/mdadm.conf mit einem Editor öffnen und folgende Zeile editieren:

Statt MAILADDR root deshalb eine E-Mail Adresse wie zum Beispiel MAILADDR email@example.com eintragen und abspeichern.

Array überprüfen

Um ein konstantes Monitoring zu betreiben wird das tool checkarray benötigt. Dies kann mit crontab -e in die Liste der Cronjobs eingetragen werden.

/usr/share/mdadm/checkarray --cron --all --quiet


Pollin
NAS