Waldemar Schneider

IT-Systemintegrator, der sowohl die Produktionshalle als auch den Serverraum versteht.

© 2026 Waldemar Schneider

Portfolio
Zentraler Fileserver (Samba/ZFS)

Zentraler Fileserver (Samba/ZFS)

2026-03-01Linux & VirtualisierungAbgeschlossen
SambaZFSProxmoxLXCDebian

Projektübersicht

Aufbau eines zentralen Dateiservers als LXC-Container auf Proxmox VE, mit ZFS-basierter Dateiablage und SMB-Zugriff für Windows und Linux gleichzeitig.

1. Situation (Ausgangslage)

Dokumente und Arbeitsdaten lagen lokal auf einzelnen Geräten oder Betriebssystemen. Der Arbeitsrechner läuft im Dual-Boot (Windows 11 / Ubuntu 24.04). Beim Wechsel zwischen den Systemen war kein gemeinsamer Zugriff auf dieselben Dateien möglich. Daten mussten manuell kopiert oder auf USB-Sticks verschoben werden.

2. Task (Zielsetzung)

  • Zentrale Ablage: Eine einzige Kopie aller Arbeitsdaten, erreichbar von beiden Betriebssystemen.
  • Kein Sync, keine Duplikate: Beide Systeme mounten denselben Share, keine doppelte Datenhaltung.
  • Sicherheit: Authentifizierter Zugriff, kein anonymes Lesen oder Schreiben. SMB1 deaktiviert.
  • Isolierung: Der Fileserver-Dienst läuft getrennt vom Hypervisor in einem eigenen Container.

3. Action (Umsetzung)

A. Storage-Architektur mit ZFS

Die Dateiablage wurde auf dem ZFS Mirror des Proxmox-Hosts eingerichtet:

  • Eigenes Eltern-Dataset (zpool/shared) mit 100 GB Quota und LZ4-Kompression, getrennt von den VM/LXC-Systemdaten.
  • Drei Kind-Datasets für unterschiedliche Datenbereiche, jeweils unabhängig snapshotbar und mit vererbten Eigenschaften.

B. Samba im LXC-Container

Einen dedizierten Debian 12 LXC-Container aufgesetzt (512 MB RAM, 8 GB Disk, unprivilegiert):

  • ZFS-Datasets per Bind-Mount in den Container eingebunden, der Container selbst hat keinen direkten ZFS-Zugriff.
  • UID-Mapping für unprivilegierte LXCs korrekt konfiguriert (Container UID 1000 → PVE UID 101000). Dabei mehrere falsche Ansätze (chmod 777, usermod -aG root) getestet und dokumentiert, warum sie nicht funktionieren.
  • Samba gehärtet: map to guest = never (kein anonymer Zugriff), server min protocol = SMB2 (SMB1 deaktiviert), valid users pro Share.

C. Client-Anbindung (Windows und Ubuntu)

Beide Betriebssysteme an den Fileserver angebunden:

  • Windows: Persistente Netzlaufwerke per net use /persistent:yes. Session-Management dokumentiert (Windows erlaubt nur eine Identität pro Server).
  • Ubuntu: SMB-Mounts via /etc/fstab mit Credentials-Datei (chmod 600) statt Klartext-Passwort. Mount-Option _netdev gesetzt, damit der Boot-Prozess nicht hängt.

4. Result (Ergebnis & Verifikation)

  • Beide Betriebssysteme greifen auf dieselben Dateien zu, ohne Sync oder Duplikate.
  • Der Fileserver läuft stabil im Dauerbetrieb mit minimalem Ressourcenverbrauch (512 MB RAM, 1 Core).
  • ZFS-Snapshots ermöglichen schnelle Wiederherstellung einzelner Dateien oder Verzeichnisse.
  • Die Lösung ist konsistent mit der restlichen Infrastruktur: jeder Dienst in einem eigenen Container, der Hypervisor bleibt sauber.

Lessons Learned

  • UID-Offset bei unprivilegierten LXCs: Die Formel PVE UID = Container UID + 100000 muss auf dem Host bei jedem Bind-Mount korrekt angewendet werden. chmod 777 ist keine Lösung, sondern ein Sicherheitsproblem.
  • SMB statt NFS für gemischte Umgebungen: Der Windows NFS-Client hat keine echte Authentifizierung, alle Dateien landen als anonymer nobody. SMB ist für gemischte Windows/Linux-Netze der richtige Standard.
  • Windows Session-Management: Windows erlaubt pro Server nur eine Benutzeridentität. Weitere Shares nach dem ersten Login ohne /user: mappen, sonst Fehler 1219.
  • _netdev ist kritisch: Ohne diese Mount-Option versucht Linux den SMB-Share beim Boot einzubinden, bevor das Netzwerk bereit ist. Der gesamte Boot-Prozess hängt.