FreeNAS: SMB/CIFS Auflistung beschleunigen

Wer mit FreeNAS eine Windows-Freigabe eingerichtet hat, kann die Zeit, die das Auflisten der Dateien in einem Ordner benötigt, deutlich verkürzen. Dafür müssen einige Parameter an Samba übergeben werden.

Dies lässt sich einfach über die Oberfläche realisieren, indem „Auxiliary Parameter“ für den SMB-Service hinterlegt werden.

ea support = no
store dos attributes = no
map archive = no
map hidden = no
use sendfile= no
aio read size = 1
aio write size = 1
map readonly = no
map system = no

Das Auflisten von Verzeichnissen und Dateien ist nach den Änderungen sehr viel schneller – bisher habe ich es auf die Verbindung mittels WLAN zwischen Client und Server geschoben. Diese funktioniert jedoch reibungslos mit ca. 55 Megabyte pro Sekunde netto Datenrate.

FreeNAS 11.2: neues Webinterface & neue Funktionen

Nachdem FreeNAS 10 „Corral“ ein erster – schnell scheiternder – Versuch war, eine neue Benutzeroberfläche einzuführen, gibt es jetzt mit FreeNAS 11.2 ein neues, AngularJS basiertes UI. Dieses ist auch mobil optimiert.

FreeNAS 11.2 Dashboard auf einem HP Microserver Gen8

Abgesehen vom Webinterface, gibt es für FreeNAS 11.2 eine Reihe von Neuerungen, die die bisherige Entwicklung logisch fortführen und erweitern. Die wichtigsten Änderungen:

  • FreeBSD boot-loader anstatt von GRUB
  • Plugins und Jails werden statt von „warden“ von „iocage“ verwaltet, das bisherige System „warden“ wird nicht mehr gepflegt. 
  • Man kann mit verschiedenen Cloud-Diensten synchronisieren, darunter Amazon Cloud Drive, Box, Dropbox, FTP, Google Drive, HTTP, Hubic, Mega, Microsoft OneDrive, pCloud, SFTP, WebDAV, und Yandex. Verschlüsselt werden auch die Daten inklusive Dateinamen vor der Übertragung lokal, sodass kein Risiko für die Daten in der Cloud besteht.
  • Self-Encrypting Drives (SEDs) werden unterstützt, die entsprechenden Daten werden über die Oberfläche gepflegt.
  • ZFS ist auf dem aktuellen Stand – einmal durchgeführt, führt ein Upgrade eines Pools dazu, dass nur aktuelle FreeNAS bzw. FreeBSD-Versionen damit arbeiten können, ein Downgrade ist dann nicht mehr möglich

Das Update ist für bestehende Installation einfach über die Oberfläche möglich, in dem man den Update-„Train“ auf 11.2-stable stellt und nach Updates sucht. Für Neuinstallationen kann man die aktuelle Version auf der FreeNAS-Webseite herunterladen.

Freenas 11.1: integrierten OpenVPN-Client nutzen

Seit einiger Zeit benutze ich zwei FreeNAS-Boxen an zwei Standorten, um meine Daten mittels ZFS-Snapshots und Replication zu sichern. Diese Verbindung soll zusätzlich mittels OpenVPN abgesichert werden.

Die Idee: an beiden Standorten jeweils ein Raspberry Pi, die miteinander über OpenVPN verbunden sind, dazu entsprechenden statische Routen, damit sich die beiden FreeNAS-Boxen erreichen können. Grundlage dafür ist der Ansatz, ein OpenVPN-Gateway aufzubauen. 

Aber: es geht auch einfacher. FreeNAS 11.1 verfügt über OpenVPN 2.4.3 und kann damit selbst Verbindungen zu OpenVPN-Servern aufbauen. Der Vorteil:  man benötigt kein komplexes Gateway-Setup, welches mit einem zweiten Raspberry Pi eine weitere Fehlerquelle mit sich bringt.

Die Einrichtung ist einfach: sobald man einen funktionierenden VPN-Server hat, kann man mittels der gängigen Befehle eine Verbindung aufbauen:

/usr/sbin/local/openvpn --config config.ovpn --daemon

Danach erreicht man den Server „am anderen Ende“ unter seiner gewohnten IP-Adresse, z.B. 192.168.178.45. Damit kann man die Replication-Tasks in FreeNAS konfigurieren, als wäre das Ziel im eigenen Netzwerk. Weiterer Vorteil: man benötigt beim Ziel nur einen offenen Port für das VPN und keinen weiteren für SSH. 

OpenVPN auf FreeNAS 11.1

Die Einrichtung des VPN-Servers auf dem Raspberry-Pi kann einfach mittels PiVPN erfolgen. Ich verwende die Raspi im Zielnetzwerk auch dafür, um den FreeNAS-Server zeitgesteuert einzuschalten – das spart Strom in der Zeit, in der eh keine Änderungen an Dateien vorgenommen werden. 

Nginx: IP-Adresse nicht in Log-Files speichern

Wer aus Datenschutzgründen – DSGVO ist das Stichwort – möglichst wenige Daten speichern will, kann ein entsprechendes Logfile-Format definieren. Damit werden sowohl IPv4- als auch IPv6-Adressen anonymisiert.

Für die Error-Logs lässt sich leider kein neues Format definieren – hier kann man jedoch auch bei ausreichend kurzer Speicherfrist ein berechtigtes Interesse zum reibungslosen Betrieb annehmen. Die Einrichtung der anonymisierten Logfiles ist einfach: folgender Code wird in die zentrale nginx.conf eingefügt, dadurch werden bei IPv4-Adressen die letzten drei Ziffern durch „0“ ersetzt, bei IPv6-Adressen werden ebenfalls die letzten beiden Blöcke gelöscht.

map $remote_addr $ip_anonym1 {
default 0.0.0;
"~(?P<ip>(\d+)\.(\d+)\.(\d+))\.\d+" $ip;
"~(?P<ip>[^:]+:[^:]+):" $ip;
}

map $remote_addr $ip_anonym2 {
default .0;
"~(?P<ip>(\d+)\.(\d+)\.(\d+))\.\d+" .0;
"~(?P<ip>[^:]+:[^:]+):" ::;
}

map $ip_anonym1$ip_anonym2 $ip_anonymized {
default 0.0.0.0;
"~(?P<ip>.*)" $ip;
}

log_format anonymized '$ip_anonymized - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';

access_log /var/log/nginx/access.log anonymized;

Für die einzelnen Virtualhosts wird nun jeweils in der Access-Log-Zeile der Eintrag „anonymized“ hinzugefügt. Danach müssen einmal alle alten Logfiles gelöscht werden. Ab dem nächsten Server-Neustart werden dann die reduzierten Logfiles gespeichert, ansonsten funktioniert alles wie gewohnt. In Sachen Datenschutz ist man damit etwas näher an einer „sauberen Lösung“, die ganz im Sinne der EU-DSGVO-Datensparsamkeit ist. Diese Lösung wird auch auf diesem Server angewendet.

Raspberry Pi 3B+: Gigabit-LAN und 200 MHz mehr Takt

Die Raspberry Foundation hat eine Überarbeitung des Raspberry 3 vorgestellt: das Modell 3B+. Mehr Takt und bessere Netzwerk-Anbindung sind die wesentlichen Merkmale.

RASPBERRY PI 3 MODEL B+ (Bild: Raspberry Foundation)
RASPBERRY PI 3 MODEL B+ (Bild: Raspberry Foundation)
Das Format ist das selbe geblieben, bestehende Projekte mit einem Raspberry Pi können einfach auf das neue Modell geupgraded werden – sofern der Takt, der beim neuen Modell auch unter Dauerlast höher ausfallen soll, der limitierende Faktor ist.

Die Daten im Überblick:

  • 1.4 GHz 64-bit quad-core ARM Cortex-A53 CPU (BCM2837B0)
  • Dual-band 802.11ac wireless LAN and Bluetooth 4.2 (BCM43455)
  • Faster Ethernet (Gigabit Ethernet over USB 2.0, LAN7515)
  • Power-over-Ethernet support (with separate PoE HAT)
  • Improved PXE network and USB mass-storage booting
  • Improved thermal management

Nach wie vor ist der Ethernet-Anschluss über USB-2.0 angebunden (LAN7515), was vor allem für Media-Player-Projekte ein limitierender Faktor sein kann. Zumindest wird eine höherer Bandbreite erreicht als bisher. Verbesserungen gibt es ebenfalls beim WLAN: der Funkchip BCM43455 unterstützt 2,4- und neu 5-GHz-Netzwerke, dazu Bluetooth 4.2.

Das neue Modell ist ab sofort verfügbar zum Preis des bisherigen Raspberry Pi 3B. Ein aktualisiertes Raspbian-Image steht ebenfalls bereits zum Download bereit. Wann eine wirkliche Weiterentwicklung in Form eines Raspberry Pi 4 auf den Markt kommt ist offen – vor 2019 wird dies wohl kaum passieren.

FreeNAS 11.1 erschienen

Das auf FreeBSD basierende NAS-System FreeNAS ist in der neuen Version 11.1 erschienen, die etliche Neuerungen mit sich bringt.

Die Änderungen im Changelog betreffen OpenZFS, welches vor allem beim verarbeiten von Snapshots und großen Dateien schneller geworden sein soll. Außerdem wurde der Hardware-Support verbessert sowie Funktionen zum Cloud-Sync mit Amazon S3, Microsoft Azure Blob Storage, Backblaze B2 und Google Cloud Storage hinzugefügt. Dateien können ohne weiteres mit den genannten Diensten abgeglichen werden, was für Offsite-Backups sinnvoll ist. Viele Änderungen betreffen auch die Möglichkeiten für virtuelle Maschinen, angefangen bei Support für Nicht-US-Tastatur-Layouts bis hin zu RancherOS Docker-Instanzen.

Nach dem Corral-Experiment scheint FreeNAS noch einmal die Kurve gekriegt zu haben und ist wie gewohnt leicht zu installieren gewesen. Natürlich sollte beim bei OS-Updates auf einem NAS immer ein Backup zur Verfügung haben, in meinem Fall habe ich das zweite FreeNAS, welches die Daten spiegelt, noch nicht aktualisiert. FreeNAS 11.1 gibt es auf der Projekt-Seite zum Download, es werden 8 Gigabyte RAM empfohlen und ein 64-Bit-Prozessor ist pflicht.


FreeNAS: Pi-Hole & PiVPN in Ubuntu-VM

Wer FreeNAS 11 als NAS- bzw. Homeserver-Software verwendet, kann pi-hole sowie pi-vpn verwenden und sowohl auf das eigene Netzwerk zugreifen als auch Werbung zuverlässig blockieren.

PiVPN (http://www.pivpn.io/) ist ein Installations- und Verwaltungsscript für OpenVPN. Eigentlich gedacht für die Verwendung auf einem Raspberry Pi, funktioniert die Installation auch ohne Probleme auf einem Ubuntu 17.04, welches in einer bhyve-VM läuft. Der Ablauf ist der selbe wie beim „Bastelrechner“:

curl -L https://install.pivpn.io | bash

Das Installationsscript beschwert sich zwar, dass die verwendete Linux-Version gegebenenfalls nicht kompatibel ist und verweigert das automatische konfigurieren von einigen Dingen, am Ende läuft aber alles soweit problemlos durch. Wichtig: damit das deutleiten der VPN-Verbindung klappt, muss unter Ubuntu die Firewall „ufw“ (uncomplicated firewall – ein Commandozeilen-Tool für das einfache Einstellen von iptables-Regeln) installiert sein und der entsprechende Port freigegeben sein.

FreeNAS: 9p Volume/Dataset in VM mounten

Wer FreeNAS mit virtuellen Maschinen nutzt (ich habe z.B. die Entwicklungsumgebung für das Blog-Theme in einer Ubuntu-VM) wird früher oder später Daten des NAS nutzen wollen. FreeNAS bietet hier VT9P als Möglichkeit an.

Das Plan9-Filesystem benötigt ein paar mount-Optionen, die nicht dem Standard entsprechen. Zwar lässt es sich in der Console ohne weiteres mounten, sobald man es in die fstab einträgt, verlangt es einen etwas ausführlicheren Eintrag. Bei meinem Setup funktioniert:

data /mnt/data 9p rw,sync,dirsync,relatime,trans=virtio,version=9p2000.L 0 0

Damit wird das Volume „data“, welches in FreeNAS konfiguriert ist, am Mount „/mnt/data“ beim booten bereitgestellt.

FreeNAS: .AppleDouble / .DS_Store löschen

Wenn man eine FreeNAS-Freigabe mit macOS benutzt, legt dieses verschiedene Finder-Metadaten-Verzeichnisse für jedes reguläre Verzeichnis an. Um ein Backup auf ein externes Medium möglichst schlank zu halten, können diese Daten gelöscht werden, was am leichtesten mittels eines Kommandos auf der Linux-Eingabeaufforderung geht:

find . -name ".Apple*" -type d -prune -exec rm -r {} +

Damit werden alle Verzeichnisse gelöscht, die mit „.Apple“ beginnen. Bei „.DS_Store“ handelt es sich um Dateien, sodass wir den obigen Befehl etwas abwandeln müssen:

find . -name ".DS_Store" -type f -prune -exec rm -r {} +

Auf gar keinen Fall mit Daten vor dem Backup ausprobieren.

Mein Setup ist so aufgebaut, dass die Daten erst mittel rsync auf ein Synology-NAS kopiert werden und von dort aus auf ein Amazon Drive. Auf dem Synology wird dann auch diese Bereinigung durchgeführt, um möglichst wenig Dateien übertragen zu müssen.

FreeNAS 10: „Corral“ erschienen

Nach mehrjähriger Entwicklung ist nun die Version 10 von FreeNAS erschienen, Name: „Corral“.

iXsystems hat mit FreeNAS 10 „Corral“ eine neue Version des beliebten Betriebssystem für Selbstbau-NAS-Systeme veröffentlicht. Die Oberfläche wurde komplett überarbeitet und kommt jetzt deutlich moderner daher, der Unterbau ist ebenfalls modernisiert worden.

Linux Mint als virtuelle Maschine in FreeNAS Corral
Linux Mint als virtuelle Maschine in FreeNAS Corral
Statt wie bisher auf Erweiterungen durch Plugins zu setzen, gibt es nun Support für virtuelle Maschinen (worüber auch Windows als Gast ausgeführt werden kann) und Docker-Container, womit die Auswahl an Software-Erweiterungen deutlich vergrößert wurde. Damit sind auch die Systemanforderungen etwas gestiegen, wobei gegenüber FreeNAS 9.10.x der Sprung nicht so groß ist. Wer z.B. auf einen HP Microserver Gen8 setzt, sollte zumindest mit dem Maximalausbau von 16 GB RAM und einer schnelleren CPU (der CPU-Tausch ist sehr einfach) arbeiten.