Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Projekt: Raspberry PI als Backupserver
Varianten des NFS-Betriebs
In diesem Projekt werden zwei einfache und praxisnahe Varianten behandelt. Eine dritte, klassische UNIX-Variante existiert ebenfalls, wird hier jedoch nicht umgesetzt.
Variante A – Einheitlicher Service-User (all_squash)
Alle Zugriffe von Clients werden serverseitig auf eine feste UID/GID (hier 2000) abgebildet.
Merkmale:
- keine UID-/GID-Synchronisation zwischen Clients notwendig
- alle Dateien gehören serverseitig dem Service-User
- sehr wartungsarm
- ideal für Backup- oder Sammelverzeichnisse
- geeignet für kleine, vertrauenswürdige Netzwerke
Diese Variante wird in diesem Projekt standardmäßig verwendet.
Variante B – Nur Lesen (read-only Export)
Der Server stellt das Verzeichnis ausschließlich lesend bereit.
Merkmale:
- Clients können keine Daten verändern
- hohe Betriebssicherheit
- geeignet für Software-Repositories, Images oder Referenzdaten
- nicht geeignet als Backup-Ziel
Diese Variante ist optional möglich und wird unten technisch gezeigt.
Variante C – Klassisches UNIX-Modell (nicht Bestandteil dieses Projekts)
Hier arbeiten Server und Clients mit identischen UID/GID-Werten. Der Server speichert echte Benutzer-IDs ohne Mapping.
Merkmale:
- saubere Benutzertrennung
- ACLs und klassische UNIX-Rechte funktionieren vollständig
- erfordert konsistente Benutzerverwaltung auf allen Systemen
- administrativ aufwendiger
Diese Variante wird hier bewusst nicht behandelt, da der Fokus auf einem einfachen, wartungsarmen Backup-Server liegt.
Voraussetzungen
- SERVER: Mit
IPist die IP-Adresse des Servers gemeint. - CLIENT: Rechner, der das exportierte Verzeichnis vom Server einbindet.
NFS SERVER
sudo apt update sudo apt install -y nfs-kernel-server # Service-User (nur für Variante A notwendig) sudo groupadd -g 2000 nfsdata sudo useradd -u 2000 -g 2000 -M -r nfsdata # Export-Verzeichnis sudo mkdir -p /srv/nfs/data sudo chown -R 2000:2000 /srv/nfs/data sudo chmod -R 2775 /srv/nfs/data
Variante A – Schreibend mit Service-User
# /etc/exports /srv/nfs/data IP/24(rw,sync,no_subtree_check,all_squash,root_squash,anonuid=2000,anongid=2000) # anwenden sudo exportfs -ra sudo systemctl restart nfs-kernel-server sudo systemctl enable nfs-kernel-server # prüfen sudo exportfs -v
Variante B – Nur Lesen
# /etc/exports /srv/nfs/data IP/24(ro,sync,no_subtree_check,root_squash) # anwenden sudo exportfs -ra sudo systemctl restart nfs-kernel-server sudo systemctl enable nfs-kernel-server # prüfen sudo exportfs -v
NFS CLIENT
Verfügbare Exports anzeigen
sudo apt install -y nfs-common showmount -e IP
Manuell Mounten
sudo mkdir -p /mnt/nfs sudo mount -t nfs -o rw,soft,timeo=50,retrans=3 IP:/srv/nfs/data /mnt/nfs
Automatisch Mounten
# /etc/fstab IP:/srv/nfs/data /mnt/nfs nfs _netdev,noatime,x-systemd.automount,x-systemd.device-timeout=10s,x-systemd.idle-timeout=600,soft,timeo=50,retrans=3,nofail 0 0 sudo systemctl daemon-reload sudo mount -a
Ergebnis
- Variante A: Schreibzugriff für Clients, serverseitige UID/GID-Vereinheitlichung
- Variante B: Reiner Lesezugriff
- Client bootet auch wenn Server offline ist
- Mount erfolgt erst bei Zugriff (automount)
- Kein Boot-Blockieren
- Exportierte Verzeichnisse prüfbar mit
exportfs -vodershowmount -e IP
