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 sinnvoll, wenn Daten nur verteilt, aber nicht verändert werden sollen.
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. Dieser stellt Speicherplatz per NFS bereit. - CLIENT: Rechner, der das exportierte Verzeichnis vom Server einbindet.
Diese Lösung sorgt dafür, dass alle Zugriffe serverseitig einheitlich als UID/GID 2000 gespeichert werden – unabhängig vom Benutzer auf dem Client.
NFS SERVER
sudo apt update sudo apt install -y nfs-kernel-server # Service-User (einheitliche Server-Ownership) 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 # ================================ # /etc/exports # ================================ # alle Clients im IP/24 Netz # alle Zugriffe -> UID/GID 2000 # root wird gesquasht /srv/nfs/data IP/24(rw,sync,no_subtree_check,all_squash,root_squash,anonuid=2000,anongid=2000) # nach dem Speichern anwenden: sudo exportfs -ra sudo systemctl restart nfs-kernel-server sudo systemctl enable nfs-kernel-server # aktive Exports prüfen (lokal am Server) sudo exportfs -v
NFS CLIENT
Verfügbare Exports anzeigen
Um zu sehen, welche Verzeichnisse der Server bereitstellt:
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 # nach dem Speichern anwenden: sudo systemctl daemon-reload sudo mount -a
Ergebnis
- Client bootet auch wenn Server offline ist
- Mount erfolgt erst bei Zugriff (automount)
- Kein Boot-Blockieren
- Timeouts verhindern Deadlock
- Exportierte Verzeichnisse prüfbar mit
exportfs -vodershowmount -e IP - Alle Dateien liegen serverseitig als UID/GID 2000
- Keine UID-Anpassung auf Clients erforderlich
