Update NAS

von

in

Vor einigen Jahren hatte ich FreeNAS als NAS auf einer alten PC Hardware aufgesetzt. 2020 ging das FreeNAS Projekt in TrueNAS auf und wurde mit der Version 12.0 in TrueNAS Core umbenannt. Die weitere Entwicklung habe ich erstmal nicht beobachtet, sondern nur TrueNAS Core immer wieder aktualisiert, Stand heute auf TrueNAS-13.0-U6.1. Seit Dezember hatte ich einige Probleme mit TrueNAS, zum einen mit VMs, die die Maus nicht mehr erkannt haben, zum anderen mit dem Plex Plugin. Also habe ich etwas genauer bei TrueNAS nachgeschaut. Tatsächlich gibt es seit 2022 eine weitere Version, nämlich TrueNAS Scale, die auf Debian und nicht mehr FreeBSD basiert. Für diese Variante gibt es auch eine viel größere Zahl von aktuellen Apps, die die Plugins und den Katalog von TrueNAS Core ersetzen.

Es gibt einen Migrationsweg (Einbahnstrasse!), der laut Dokumentation bis auf meine Jails alles übernimmt. So könnte ich die VM mit Roon/Grafana/InfluxDB weiternutzen, was einigen Installationsaufwand ersparen würde. Als Jail müsste ich Calibre und Plex neu installieren, was aber nicht kritisch ist (Plex hatte ich gerade von Plugin auf Jail neu installiert).

Um die aktuelle Version TrueNAS-SCALE-23.10.1 zu testen, habe ich sie erstmal auf dem PC als virtuelle Maschine installiert. An sich ist das sowieso für so ein kritisches System als Test- und Entwicklungsumgebung sinnvoll. Wichtig als erster Test ist die Nutzung der Disks ohne Redundanz wie bisher. Neben der Boot Disk habe ich zwei weitere Disks mit 10GB bzw. 20GB für die VM angelegt, die dann auch in TrueNAS zu sehen sind.

Als Stripe kann ich einen Pool mit einer Disk trotz Warnung anlegen. Auf einer zweiten Disk könnte ich ein optionales Log zur Beschleunigung von synchronen Schreibvorgängen (sinnlos für SMB) anlegen, auf einer dritten Disk ein Spare bei Ausfall und auf einer vierten Disk einen Lese-Cache (macht nur Sinn, wenn der RAM Cache voll ist und die Disk schneller ist als die zu lesende Disk) einrichten. Das fällt in meinem Fall flach. Metadata und Dedup sind ebenso optional. Bei Metadata müsste ich erstmal verstehen, was Fusion Pools sind. Dedup kann Speicherplatz sparen, bei meinen Daten wird das aber nicht viel sein und nur unnötig Zeit kosten. Die eingebaute Komprimierung reicht. Nach einer weiteren Bestätigung der ungünstigen Konfiguration wird der Pool angelegt.

Mit dem Pool habe ich ein virtuelles Laufwerk, das sich prinzipiell über mehrere physische Laufwerke erstrecken und Redundanzen haben kann. Jetzt kann ich im Pool Vol1 Datasets und Zvols anlegen.

Ein Dataset enthält ein Dateisystem, das Rechteverwaltung und Freigabemöglichkeiten bietet. Es wird unterhalb von /mnt/Vol1 angelegt und kann Unterverzeichnisse haben (also z.B. /Vol1/Dataset1/Dataset1-1) anlegen und das dann als Share z.B. über SMB freigeben. Den Namen des Dataset kann man nicht mehr ändern.

Praktisch ist auch, dass man den Platzbedarf je Dataset sieht. Als ich mit FreeNAS angefangen habe, habe ich dieses Konzept nicht verstanden, sondern einfach auf der Shell (wird gewarnt vor) Unterverzeichnisse angelegt und diese freigegeben habe.

Ein Zvol ist ein virtuelles block device (Laufwerk) mit einer vordefinierten Größe. Sie werden für iSCSI und VMs benötigt.

Für die Nutzung von Apps wird ein Pool benötigt, auf dem dann Kubernetes installiert wird. Dann läuft der Apps Service. Im TrueNAS catalog sind 99 Apps enthalten, davon könnte ich gleich Plex und Pi-hole nutzen. Grafana könnte ich auch als App installieren, leider gibts die InfluxDB nicht dazu. WordPress wäre schick für das Intranet, aber da habe ich mich eben erst in RocketCake eingearbeitet. Noch mehr Apps gibt es im Truecharts catalog, der eine ganze Weile zum Einlesen braucht. Dann sind es 805 verfügbare Apps, aber immer noch keine InfluxDB. Also wird es dafür bei der VM bleiben, die ich ebenfalls für Roon brauche. Dafür gibt es in Truecharts Calibre und JDownloader.

In der TrueNAS VM kann ich keine VMs anlegen, aber eine virtualisierte Virtualisierung wäre auch zuviel verlangt.
Die Bedienung ist schon etwas anders als in Core. Jetzt schaue ich mir noch ein paar Youtube Videos über TrueNAS Scale an, damit ich in der migrierten Umgebung nicht die gleichen Fehler wie im FreeNAS/Core mache und dann gehe ich an die Migration des Produktionssystems. Notfalls kann ich alles komplett neu aufsetzen, aber das Kopieren der Daten würde Tage dauern.

Ich habe mich für eine saubere Neuinstallation entschieden. Das war eine dumme Entscheidung, weil es mich sehr viel Zeit gekostet hat, die Funktionalität wieder herzustellen und am Ende alle Daten kopiert werden müssten. Mit Rufus habe ich aus dem neuesten ISO-Image einen bootbaren USB Stick gemacht und damit den Server gebootet (kein EFI Boot, hier gab es einen Fehler). Bei der Installation hingegen ist EFI zu wählen, beim Kompatibilitätsmodus für alte Hardware gab es einen Installationsabbruch, der nur durch Reboot zu beheben war. Bei der Wahl der OS Disk musste ich aufpassen, um die kleine SSD zu wählen, die ich natürlich formatiert habe. Installation ging schnell, nach einem Reboot kam das Kommandozeilenmenü. Erfreulicherweise wurde gleich der 10Gb Ethernetadapter gewählt, der hat erstmal eine DHCP Adresse bekommen. Dann konnte ich auf WebGUI wechseln und mich mit admin anmelden. Um die IP Adresse von DHCP auf statisch zu ändern, muss in Netzwerk DHCP deaktiviert und ein Alias addiert werden. Im Punkt Storage habe ich Import Pool gewählt und eine Liste mit den 6 alten Pools (Laufwerke) erhalten. Der erste Pool wurde anstandslos importiert, Daten waren alle da. Das Update der ZFS Version hat auch funktioniert. Soweit sah es erstmal gut aus, der Schein hat aber leider getrogen.

Datasets hatte ich früher nicht angelegt, also habe ich jetzt damit angefangen. Leider kann ich keinen Dataset mit dem vorhandenen Verzeichnis anlegen. Also erstmal einen neuen Namen angelegt. Dann habe ich die Services SMB und NFS gestartet und auf Autostart gestellt. Danach habe ich das neue Verzeichnis freigegeben. Mit admin darf ich mich nicht verbinden (aktuelle Sicherheitsvorgaben, der User root wird auch nicht mehr genutzt), also gleich den ersten User angelegt und erfolgreich die Freigabe getestet. Schließlich habe ich in der shell die Daten verschoben und konnte auf alle über den PC voll zugreifen. Dabei hat sich gezeigt, daß ein migriertes Unterverzeichnis und ein Dataset etwas ganz anderes sind. Der Kopiervorgang dauert deutlich länger als ein mv im selben Unterverzeichnis und sogar länger als über LAN. Das bedeutet also eine echte zeitaufwändige Kopie, wenn ich alle Daten in Datasets unterbringen will. Da ich die importieren Verzeichnisse nicht umbenannt habe, habe ich im ersten Pool nun Datasets mit einer 1 am Ende (also z.B. Bilder1) und darf sie nicht umbenennen. Immerhin kann ich weiterhin Verzeichnisse freigeben, d.h. für die restlichen Pools habe ich erstmal keine Datasets erstellt. Das wird bei Hardwaretausch/-erweiterung nach und nach passieren. Eine App, mit der ich auf dem NAS die Daten kopieren kann, ist File Browser aus Truecharts (Replication geht leider nur mit Datasets, das wäre etwas für die Zukunft). Immerhin konnte ich gleich ein paar Berechtigungsprobleme geradeziehen und habe jetzt eine richtige Userverwaltung.

Die nächsten Schwierigkeiten tauchten bei den Apps auf. Was auf dem Testsystem einwandfrei lief, hat in der Produktionsumgebung vielfach gezickt.

Zuerst kam Pi-hole dran. Die App lief gleich nach der Installation. Allerdings sind nicht alle Parameter gesichert worden, in den Upstream DNS Servers musste ich wieder die Adressen der Fritzbox eintragen. Ausserdem hat Pi-hole auf dem interface eth0 nichts gehört, das muss ich nochmal im Container anpassen (pihole Environment: INTERFACE enp2s0). Pi-hole hat jetzt dieselbe Adresse wie TrueNAS, also mehr Dokumentationsarbeit, dafür eine reservierte Adresse weniger.

Nun wollte ich die virtuelle Maschine für Roon/InfluxDB/Grafana wieder ans Laufen bringen. Nach dem Anlegen einer entsprechenden VM und Verweis auf die bestehende Maschine bootet die VM zwar, bekommt aber keine IP-Adresse bzw. kann die fest vergebene nicht nutzen. Ausserdem kamen ständig Fehlermeldungen, weil nicht auf den Musikshare zugegriffen werden konnte. Also Plan B und Neuinstallation. Kleiner Stolperstein war fehlende Berechtigung des Virtualisierungsuser auf das ISO-Image, hab ich aber hingekriegt. Während der Ubuntu LTS Server Installation hat die Installationsroutine sind ein nicht-existierendes Netzwerkinterface ausgedacht und keinen Zugriff auf Updates gehabt, was den Abschluss verlangsamt hat. Nach der Installation musste netplan angepasst werden. Zum Glück konnte ich die Datei auf dem PC anlegen und mit FileZilla in die shell übertragen (im minimalen Ubuntu ist kein nano installiert). Nach dem Update und Reboot konnte ich mit InfluxDB weitermachen.
Die Installation von InfluxDB war wieder mit kryptischen Kommandos (für das Repository braucht man den Key), aber diesmal konnte ich gleich einen Restore machen und sofort hat Home Assistant wieder angefangen, Daten in die Buckets zu schieben.
Von Grafana gibt es wenigstens die Installationsanleitung auf deren Webseite. Daher ging die Installation schneller und nach dem Restore waren sofort meine Dashboards wieder da.
Roon Server wurde wieder mit dem Skript von roonlabs installiert. Nach der Installation musste ich feststellen, daß es TrueNAS Scale nicht erlaubt, VMs lokale Verzeichnisse zuzuweisen. Damit ist die Installation von Roon in einer VM erstmal gescheitert. Roon auf TrueNAS Scale wird ein eigenes Kapitel.

Die App Plex musste ich auch mehrfach installieren, bis es endlich funktioniert hat. Das Paket aus Truecharts hat schliesslich zum Ziel geführt.

Die App Calibre startete auch erst nach mehreren Versuchen. Leider lief der Inhalteserver auf einem privaten Subnetz, das ich mit meinem Reader nicht erreichen konnte. Also habe ich Calibre wieder gelöscht und stattdessen Calibre-Web installiert, was perfekt für Browsing und Download ist. Es hat bei der Installation nur eine Weile gedauert, bis ich ganz runter gescrollt habe, um die Datenbank auszuwählen.

Die App JDownloader2 ermöglicht spontanes Download von allen Endgeräten mit VNC, also sehr praktisch. Das spart mir auch wieder eine VM.

Mit der App File Browser kann ich Dateien auch zwischen Verzeichnissen und Datasets kopieren. Das spart also den Umweg über LAN und ist bequemer als über die shell.

Mit dem Upgrade auf TrueNAS Scale habe ich über einen Tag gebraucht. Jetzt habe ich zwar wieder eine Maus in meinen virtuellen Maschinen, Roon ist aber verlorengegangen und wird nochmal Zeit kosten, das zum Laufen zu bringen. Dafür bin ich auf einer modernen Software, habe ein paar Fehler der Vergangenheit bereinigt und kann vielleicht noch ein paar nette Features zusätzlich installieren. Backup und Restore hat funktioniert. Am Ende war es richtig, zu migrieren, hat aber zu viel Zeit gekostet, um Spaß zu machen.