← makershack.dev
2024-08-19 #raspberry-pi #heimnetz

Raspberry Pi NAS mit ZFS

Status
● abgeschlossen
Hardware
Raspberry Pi 5 (4GB), 2× 2TB USB-3-HDD
OS
Raspberry Pi OS Lite (64-bit, Debian Bookworm)
Dienste
ZFS, Samba, Tailscale
Uptime
seit August 2024 ohne ungeplanten Neustart

Warum kein fertiges NAS

Fertige NAS-Systeme (Synology, QNAP) kosten ab 200 Euro aufwärts, plus Festplatten. Ein Pi 5 + zwei gebrauchte 2TB-Platten aus dem Recyclinghof kostet etwa 120 Euro insgesamt. Dafür bekommt man ein System das man komplett versteht und das keinen proprietären DSM-Unterbau hat.

ZFS auf dem Pi

ZFS gilt als speicherhungrig — auf dem Pi 5 mit 4GB RAM ist das kein Problem. Der Mirror-Pool braucht im Leerlauf etwa 300MB. ZFS gibt einem kostenlos: automatische Checksummen, Snapshots, und eine vernünftige Fehlerkorrektur. Für ein Heimnetz-NAS ist das mehr als genug.

# Pool erstellen (beide Platten im Mirror)
zpool create tank mirror /dev/sda /dev/sdb

# Kompression einschalten (lohnt sich fast immer)
zfs set compression=lz4 tank

# Automatische Scrubs (wöchentlich via cron)
echo "0 2 * * 0 root /sbin/zpool scrub tank" > /etc/cron.d/zfs-scrub
    

Samba

Standard-Samba-Konfiguration mit einem Share pro Benutzer und einem gemeinsamen media-Share. Funktioniert unter Windows, macOS und Linux ohne Zusatzsoftware. Für Zeitmaschinensicherungen unter macOS braucht man vfs objects = fruit streams_xattr in der Samba-Konfiguration — ohne das werden Time-Machine-Backups korrumpiert.

Tailscale statt VPN-Gehampel

Für externen Zugriff läuft Tailscale auf dem Pi. Kein Port-Forwarding, kein DynDNS, kein selbst gehosteter VPN-Server. Tailscale verbindet alle eigenen Geräte in einem privaten Mesh-Netz — der Pi ist von unterwegs erreichbar als wäre er im lokalen Netz. Kostenlos für Privatnutzer bis 100 Geräte.

Was ich anders machen würde

Die USB-3-Platten hängen direkt am Pi ohne zusätzliche Stromversorgung. Das funktioniert, ist aber knapp — beim Hochfahren beider Platten gleichzeitig gab es kurzzeitig Unterspannungswarnungen. Ein aktiver USB-Hub mit eigenem Netzteil wäre sauberer.

Außerdem fehlen noch automatische ZFS-Snapshot-Rotationen. Im Moment mache ich das manuell, was bedeutet: ich mache es selten. zfs-auto-snapshot steht auf der Todo-Liste.

Fazit

Läuft seit Monaten ohne Probleme. Samba-Shares werden von allen Geräten im Haus genutzt, Tailscale funktioniert reibungslos. Der Pi zieht unter Last etwa 8W — das macht im Jahr knapp 3 Euro Stromkosten.