Freigabe NFS

Änderungsstand: 2023-03-20

Getestet unter RaspiOS Lite (Bullseye). Andere Linux-Versionen können andere Befehle verwenden.

Die externe Platte wurde von mir auf /srv/ssd an einem Raspi eingehängt.

Einfache NFS-Freigabe einrichten:

Folgendes am Raspi mit einer ext. Platte verwenden.

sudo apt install nfs-kernel-server nfs-common -y
sudo mkdir -p /srv/ssd

Hier setze ich dem Benutzer pi die Zugriffsrechte ein:

sudo chmod 777 /srv/ssd
sudo nano /etc/exports

Folgendes trage ich nun am Ende ein:

/srv/ssd  *(rw,sync,no_subtree_check,all_squash,anonuid=1000,anongid=1000)
# weiteres Beispiel
#/srv/ssd 192.168.1.80(rw,async,no_subtree_check,crossmnt)

Strg-x, y, Enter

sudo exportfs -ra
sudo service nfs-kernel-server restart

Die NFS-Freigabe wurde erstellt und ist nun auch für alle Nodes verfügbar.

NFS-Freigabe an allen Linux-Rechnern einbinden:

sudo apt install nfs-common -y
sudo mkdir -p /mnt/appdata
sudo chmod 777 /mnt/appdata

Ich verwende hierfür ein Script, welches an ALLEN Nodes ausgeführt wird:

sudo su
cd && mkdir -p scriptfiles
cd && cd scriptfiles && nano nfsmountscript.sh

Folgendes eintragen und ggnf. Server-IP und Pfade anpassen:

#!/bin/bash
sudo mount -t nfs 192.168.1.250:/srv/ssd /mnt/appdata
#

Strg-x, y, Enter

sudo chmod 700 nfsmountscript.sh

Zum Aufruf des Scriptes folgenden Befehl eingeben:

sudo ./nfsmountscript.sh

Das Laufwerk wurde eingehängt. Um das Script nach einem Serverneustart zu verwenden, gehe ich wie folgt vor.

Eintrag in Crontab:

sudo crontab -e

Folgendes gebe ich am Ende ein:

# Mount NFS-Freigabe
@reboot sleep 20 && ~/scriptfiles/nfsmountscript.sh >/dev/null 2>&1
#

Strg-x, y, Enter

sudo reboot

20 Sekunden nach Restart wird die NFS-Freigabe eingehängt und ist verfügbar.

Tipp: Müssen, warum auch immer, alle Nodes gestartet werden, starte ich immer den Node mit der ext. Platte zuerst.

Jetzt noch ein Test, ob das auch funktioniert. Ich erstelle unter /mnt/appdata eine fake-Datei und schaue, ob diese auch an den anderen Nodes verfügbar ist:

sudo touch /srv/ssd/testdatei.txt

sudo touch /mnt/appdata/testdatei.txt

Nun gebe ich folgenden Befehl auf allen anderen Nodes ein:

cd /mnt/appdata && ls

Die Datei testdatei.txt sollte nun auf allen Nodes sichtbar sein.

.

.

2. Beispiel) NFS-Freigabe eines Unraid-Servers verwenden:

Bsp.: Ich erstelle eine Freigabe auf meinem Unraid-Server Namens nfspath und gebe bei den „NFS Sicherheitseinstellungen“ – „Exportieren: Ja“ ein.

Die Befehle in den einzelnen Cluster-Nodes würden dann so aussehen:

sudo apt install -y nfs-common mc
sudo mkdir -p /mnt/data
sudo chmod 777 /mnt/data/
sudo mount -t nfs 192.168.1.151:/mnt/user/nfspath /mnt/data
echo 192.168.1.151:/mnt/user/nfspath /mnt/data nfs defaults 0 0  |  sudo tee -a /etc/fstab
sudo reboot

Der Cluster ist komplett eingerichtet, betriebsbereit und eine externe Freigabe, als NFS-Freigabe, verfügbar.

Jetzt unbedingt ein Test, ob auch alle Nodes auf die Freigabe zugreifen können. Ich erstelle auf einem Node in der Freigabe eine Datei und schaue, ob diese Datei auch auf allen anderen Nodes angezeigt wird:

Node 1:

sudo touch /mnt/data/testdatei.txt

Nun gebe ich folgenden Befehl auf allen Nodes ein:

cd /mnt/data && ls

Die Datei testdatei.txt sollte nun auf allen Nodes sichtbar sein.

Optional Start:

Dieses Beispiel ist für node1. Es kann für alle Nodes verwendet werden, wenn man in den Befehlen das node1 zu node2 und node3 ändert.

Backup der SD-Card (eigene Werte beachten, NFS-Freigabe am Zielserver setzen, diese am Raspi mounten und dd-Backup starten [alles ohne fstab-Eintrag]):

Mein Backupordner am Unraid-Server, inkl. NFS-Freigabe: /mnt/user/backups/node1

sudo mkdir -p /mnt/backup
sudo mount 192.168.1.153:/mnt/user/backups/node1 /mnt/backup
sudo dd if=/dev/mmcblk0 of=/mnt/backup/node1.img bs=4MB status=progress
sudo reboot

Und eine etwas andere Art, ein Backup einer SD-Card anzufertigen. Dieses angefertigte Image kann anschließend auch um ein Vielfaches verkleinert werden. Hier sind die Guides dazu:

SD-Card Image erstellen

ISO-Image verkleinern

Optional Ende.

Quelle(n):

Erstelle eine Website wie diese mit WordPress.com
Jetzt starten