Projekt: NAS mit dem Raspi

NAS

Ein NAS (Network Attached Storage) ist einfach gesagt, eine Festplatte, die in deinem gesamten Netzwerk zur Verfügung gestellt wird und auf die dann alle Geräte zugreifen können.
Diese gibt es fertig zu kaufen, in diese Geräte kann man dann mehrere Datenträger zu einem RAID zusammenfassen.
Ich will die hier zeigen, wie du ein einfaches NAS selbst mit deinem Raspi bauen kannst.

3,5"Festplatte im externen Gehäuse
Olli Graf - raspithek.de
externHDCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
3,5″Festplatte im externen Gehäuse für unser NAS

Material

Ich hatte folgendes noch im Schrank, um ein NAS bauen zu können:

  • Raspberry Pi 4B 8GB
  • 3,5″ Festplatte 8TB (z.B. Toshiba N300 NAS)
  • externes 3,5″ USB-Gehäuse (UGREEN USB 3.0)
  • USB-HUB
  • MicroSD-Karte
  • CAT5 Kabel, bei größeren Datenmengen reicht meiner Erfahrung nach WLAN nicht aus.

Der USB-Hub mit eigener Stromversorgung dient vor allem dazu den USB-Port deines Raspis nicht als Stromquelle für die Platte zu benutzen.
Statt des externen Gehäuses und der 3,5″ Platte kannst du auch jede beliebige externe SSD benutzen. Die Kombination der oben angebenen Platte mit dem Gehäuse hat den Vorteil, dass die Platte bei Nichtbenutzung automatisch heruntergefahren wird. Du musst nicht unbedingt eine einzelne Platte benutzen, mit einem Logical Volume bist du flexibel, den Plattenplatz bei Bedarf zu vergrößern.

Die 2 GB Version des Raspi 4 würde vermutlich auch reichen.

Hardware

Zunächst musst du natürlich deinen Raspberry Pi in Betrieb nehmen.

Wenn du, wie ich eine lose Festplatte ins externe Gehäuse bauen willst, musst du der Montageanleitung des Gehäuses folgen. Das von mir benutzte Gehäuse hat den Vorteil, dass du es ohne Werkzeug montieren kannst.

Danach verbindest du den USB-Hub mit einem der USB 3.0 Ports des Raspis (das sind die blauen), es würde auch mit den USB2.0 Ports funktionieren, aber die Datenübertragung ist dann deutlich langsamer.
Das USB Kabel der Festplatte steckst du in den USB-Hub. Jetzt noch Hub und Festplatte mit Strom versorgen, das war’s an Hardwaresetup eigentlich schon.

Festplatte einrichten

Zunächst kontrollieren wir, ob die Platte verbunden und vom OS erkannt wurde.

Log dich auf dem Pi ein und gib folgendes ein:

> lsblk
Ausgabe lsblk
Olli Graf - raspithek.de
NAS-lsblkCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Ausgabe des lsblk Kommandos

Hier werden alle sog. „Block“-Devices wie Festplatten USB-Sticks und auch die MicroSD Karte aufgelistet. Meine externe Festplatte wurde als „sda“ erkannt und hat eine Partition „sda1“. Letztere fehlt bei dir noch, das wollen wir jetzt ändern.

Einschub: Linux gibt den erkannten Block-Devices interne Namen wie sd<x>, <x> ist ein Buchstabe, der in aufsteigender Reihenfolge hochgezählt wird, eine zweite Festplatte würde also sdb heißen. Die Partitionen auf der Platte werden mit einer Zahl hochgezählt. sd1 ist also die erste Partition auf der ersten externen Festplatte.

> sudo fdisk /dev/sda

fdisk ist ein einfaches Programm zur Partionierung von Festplatten. Da der Inhalt der Platte jetzt überschrieben wird, ist es wichtig, dass du dich vergewisserst, dass du das richtige Device benutzt!

Hilfeseite von fdisk
Olli Graf - raspithek.de
fdisk-helpCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Die Hilfeseite von fdisk

Als erstes legst du mit „g“ eine neue leere GPT-Partitionstabelle an.
Danach erstellst du mit „n“ eine neue Partition. Du kannst dabei alle vorgegeben Werte einfach mit „Return“ übernehmen, da wir nur eine einzige Partition anlegen wollen, die den gesamten Datenträger einnimmt, als Partition type wählst du „p für primary aus. Die Partitionsnummer ist die „1“, für Start- und Zielsektor übernimmst du die vorgegebenen Werte.
Wieder im Hauptmenü, kannst du dir die neue Partitionstabelle mit „p“ anzeigen lassen. Wenn alles in Ordnung ist, schreibst du die Änderungen mit „w“ auf die Platte.

> sudo mkfs.ext4 /dev/sda1

Hiermit legst du das Dateisystem auf der neuen Partition an. Ich benutze gerne ext4 als Dateisystem.

Deine Festplatte ist jetzt einsatzbereit, das Dateisystem muss aber noch ins System eingeklinkt (gemountet) werden.

Zunächst legst du einen Einhängpunkt (engl. Mountpoint) an und überträgst ihn an deinen User.

> sudo mkdir -p /mnt/nas
> sudo chown $USER /mnt/nas

Das Verzeichnis kannst du frei wählen.

Ermittle jetzt erstmal die User und GroupID deines Benutzeraccounts

> id

Bei mir ist UserID und GroupID jeweils 1000
Als nächstes binden wir das neue Dateisystem ein.

> sudo mount -t ext4 -o umask=770,uid=1000, gid=1000 /dev/sda1 /mnt/nas 

Mit diesem Kommando hängen wir das Dateisystem /dev/sda1 vom Typ ext4 im Verzeichnis /mnt/nas ein.Bei uid= und gid= trägst du die oben ermittelten Werte ein. Mit umask= wird festgelegt, welcher Nutzer auf dem Raspi welchen Zugriff auf das Laufwerk hat. 770 bedeutet, dass dein User Lesen/Schreiben/Verzeichniswechsel durchführen darf ebenso alle Benutzer in deiner Gruppe. Alle anderen Nutzer haben keinen Zugriff auf das Laufwerk. Wirklich wichtig ist das nur bei Mehrnutzersystemen!

Dateisystem des NAS exportieren

Damit deine anderen Computer das neue Dateisystem im Netzwerk finden können, muss es jetzt noch exportiert werden. Es gibt verschiedene Protokolle dafür.

NFS

Das Network File System wurde speziell entwickelt, um Dateien eines Rechners für andere Systeme im Netz zugänglich zu machen. Es erfreut sich gerade in Unix-Netzwerken großer Beliebtheit, was es für ein Netzwerk von Raspis geradezu ideal macht.

Bei mir wird das NAS vom Raspberry Pi mit dem Hostnamen clancy bereitgestellt.

Packages installieren

Folgendes Package müssen wir zunächst installieren

sudo apt install nfs-kernel-server

Server Konfiguration

Danach habe ich folgende Zeile ans Ende der Datei /etc/exports angefügt:

/Backup-Repo	quimby(rw,sync,no_subtree_check)

Dies stellt das Verzeichnis /Backup-Repo für den Raspi quimby zur Verfügung. Dieser darf Lesen und Schreiben (rw). Die Anforderungen von quimby beantwortet clancy nur, wenn die letzte Transaktion geschrieben wurde (sync). clancy prüft nicht, ob eine Datei noch innerhalb der Verzeichnisstruktur vorhanden ist (no_subtree_check)

Jetzt musst du innerhalb von NFS die Liste der exportierten Verzeichnisse aktualisieren

sudo exportfs -ra

Folgendes Kommando gibt dir eine Liste aller exportierten Verzeichnisse auf deinem NAS aus.

showmount -e localhost
NFS Laufwerk einbinden

Jetzt kannst du auf dem Client die NAS-Platte einbinden.

sudo mkdir -p /mnt/Backup-Repo
sudo mount -t nfs clancy:/Backup-Repo /mnt/Backup-Repo

Hiermit lege ich zunächst einen Mountpoint an und binde danach die Platte die Platte von clancy ein.

Wenn ich jetzt quimby booten würde, wäre das eingehängte NAS nach dem Neustart wieder weg. Daher füge ich an Ende der Datei /etc/fstab noch folgende Zeile an:

clancy:/Backup-Repo /mnt/Backup-Repo nfs defaults, user, rw, noexec 1000,1000

So wird das NAS auch nach einem Neustart wieder automatisch gemounted. Außerdem verbiete ich so, dass Programme auf der Platte von quimby aus gestartet werden können (noexec).

Im zweiten Teil des Projekts binden wir die Platte noch per Samba an.Falls du nicht mit so vielen Konfigurationsdateien arbeiten möchtest, kannst du mit OpenMediaVault die Einrichtung eines NAS vereinfachen.

Schreibe einen Kommentar

Creative Commons License
Except where otherwise noted, the content on this site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Olli Graf - raspithek.de
WordPress Cookie Hinweis von Real Cookie Banner