Minix Z100-0dB als neuer Homeserver für Backups und Medienstreaming
2018 habe ich ein kleines ARM-NAS auf Basis des damals relativ neuen Rock64 Boards von Pine aufgebaut. Das NAS sollte nur leichte Aufgaben wie z.B. das Speichern von Laptop-Backups und Bereitstellen von DNS-Diensten übernehmen. Die Aufgabe hat es seither prima gemeistert. In den letzten Jahren ist allerdings eine neue Aufgabe dazugekommen, die etwas mehr Leistung benötigt: Das Verwalten meiner Medienbibliothek.
Das Rock64 NAS stößt an seine Grenzen
Mittels Jellyfin-Medienserver sollte meine Musik Zuhause und unterwegs immer verfügbar sein. Auch einige von DVD gerippte Konzertfilme sollten via DLNA auf dem Fernseher verfügbar gemacht werden. Mit Musik klappte das Streaming leistungsmäßig, aber beim Thema Video ist das Rock64 Board mit seiner relativ betagten Rockchip CPU schnell an seine Grenzen gekommen. Da der LG Fernseher nur ganz bestimmte Videocodecs versteht, fordert er beim DLNA Server häufig Videotranscoding an. Dieses Transcoding ist relativ leistungshungrig, wenn nicht spezielle CPU-Hardwareeinheiten vorhanden sind. Zudem muss sichergestellt werden, dass das HW-basierte Transcoding durch die Software genutzt werden kann. Entsprechende Libraries und Treiber müssen auf dem System also installiert sein.
Wie im ARM Umfeld (leider) schon fast üblich, ist die Softwaresituation etwas unübersichtlich. Es gibt in der Regel eine schlecht gewartete Linux-Variante vom Boardhersteller und einige Community-Distributionen, die versuchen, es besser zu machen. Jede hat allerdings andere Baustellen und es ist nicht einfach, die eine Distribution zu finden, die auf dem neuesten Stand ist, stabil funktioniert und dabei alle Features unterstützt, die auf dem Board bereitstehen. Ich bin lange Zeit mit Armbian gut gefahren, allerdings konnte nie eine HW-Beschleunigung für die Videotranscodierung zum Laufen bringen.
Das Thema habe ich ehrlicherweise aber auch nicht sehr intensiv verfolgt, denn auch an anderer Stelle schwächelte mein Rock64 System. Alleine schon der Aufbau derJellyfin-Website dauerte einige Sekunden - gefolgt von weiterem Warten, bis Alben-Thumbnails meiner Musikeinkäufe geladen waren. Spaß hat das nicht gemacht und ein Durchsuchen war relativ mühselig.
Alles neu macht der Mai / Juni
Nun - ca 6 Jahre später, ist es Zeit, meinen Rock64 in die Rente zu schicken und ein neues, leistungsstärkeres NAS aufzubauen. Ich habe mich etwas in der Selfhosting Community umgesehen und bin relativ schnell auf die Intel N100 CPU gestoßen. Dabei handelt es sich gewissermaßen um ein x86-basiertes Konkurrenzprodukt, das Intel in das Rennen gegen die üblichen Raspberry Pi ARM Chips und Rockchip-Alternativen schickt. Die CPU kommt mit ca 6 Watt Verlustleistung aus und ist gleichzeitig relativ flott. Das macht sie perfekt für den Einsatz in einem Homeserver NAS, das die meiste Zeit nichts tut und nur sporadisch die Höchstleistung abruft.
Einen weiteren Vorteil bringt die CPU mit sich: Es mag in Zeiten von ARM Single Board Computern etwas uncool erscheinen, aber sie ist x86 basiert und verhält sich somit genauso wie jeder andere handelsübliche PC. Ich kann einfach ein eine normale Linuxdistribution darauf installieren, bin nicht abhängig von schlecht gewarteten und veralteten Linux-Kerneln, die für das jeweilige Board angepasst werden mussten und habe die volle Softwarepalette zur freien Auswahl. Zugegeben - die Situation mit Linux auf ARM ist in den letzten Jahren schon viel besser geworden. Dennoch: Es gibt immer wieder kleine Stopper, die einem die Freude nehmen.
Ein Beispiel: ZFS für Linux beherrscht Verschlüsselung. Allerdings kann diese unter ARM noch nicht auf eine Hardwareunterstützung zurückgreifen. ARM Prozessoren haben zwar eine Einheit zur Crypto-Beschleunigung, aber diese ist unter ARM noch nicht für ZFS implementiert. Auf der x86 Seite sieht es schon ganz anders aus: Hier ist die HW-unterstützte Verschlüsselung für ZFS verfügbar und lange erprobt. Auf meinem Rock64 habe ich dann schließlich auf die SW-basierte Verschlüsselung zurückgegriffen - unter Akzeptanz gewaltiger Performance-Einbußen.
Um ein weiteres Beispiel zu nennen: Auch die Acustic Analysis Funktion des Plex Media Servers ist unter ARM nicht verfügbar.
Es sollte also ein NAS mit Intel N100 werden. Da die CPU auch für Mini PCs sehr beliebt zu sein scheint, habe ich mich zuerst bei den Mini PCs nach einem passenden Modell umgesehen. Die Auswahl an asiatischen Produkten ist überwältigend. Nur wenige haben einen soliden Eindruck auf mich gemacht. Darunter auch die Produkte von Minisforum. Speziell habe ich mir den Minisforum UN100L herausgepickt. Leider scheint es kaum Mini PCs mit Anschlussmöglichkeiten für zwei SATA SSDs zu geben (geschweige denn zwei M.2 SSDs). Schnell habe ich mich damit abgefunden, weiterhin mein externes USB RAID Gehäuse verwenden zu müssen.
Während meiner weiteren Recherche habe ich außerdem bei CNX Software vom UP 7000 Edge Series gelesen. Das Gerät hat ungefähr Raspi-Formfaktor und kommt mit einem großen Kühlkörper. Der dazugehörige CNX Software Review fällt gut aus. Ich war bereits im Bestellprozess und hatte meine Kreditkarte gezückt, als ich doch noch einen Rückzieher gemacht habe. Der Preis auf der Website geht für mich zwar noch in Ordnung, allerdings ist folgendes nicht im Preis enthalten:
- Steuern
- Zollgebühren
- Versand
- Ein passendes Netzteil
All diese Punkte treiben den Preis dann schließlich auf ca 380 €. Für meinen Geschmack zu viel für das gebotene. Vor allem in Anbetracht dessen, dass Mini PCs mit SSD, min 8 GB RAM und Intel N100 schon für knapp über 200 € angeboten werden. Das Up 7000 hat mich vor allem durch seine Kompaktheit überzeugt und das “Industrial PC”-mäßige, von dem ich mir eine hohe Zuverlässigkeit erhofft habe.
Schließlich bin ich irgendwo in der Mitte zwischen Mini PC und Industrial PC hängen geblieben - nämlich bei dem Minix Z100 0dB PC. Dieser ist ebenfalls durch große Kühlrippen auf der Oberseite passiv gekühlt, überzeugt durch sein Alu-Chassis und die angebotenen Schnittstellen. Für das Betriebssystem und Anwendungen kann ich die mitgelieferte M.2 SSD nutzen. Die Nutzdaten kommen wie gehabt auf die beiden SSDs in meinem externen RAID-Gehäuse.
Erste Eindrücke vom Minix Z100 0dB PC
Wenige Tage nach meiner Bestellung war der Minix Computer auch schon da. Selbstverständlich wollte ich das vorinstallierte Windows 11 möglichst schnell loswerden und habe - wie auf fast allen meinen Server - ein klassisches Debian in der aktuellen Version Bookworm installiert. Allerdings durfte Windows dann doch einige Male starten, denn es war gar nicht so einfach, Debian vom USB Stick zu starten. Vielleicht habe ich mich auch nur ungeschickt angestellt…
So hat es dann geklappt:
- Außen liegenden HDMI verwenden (nicht sicher, ob es eine Rolle spielt)
- Auf Tastatur F11 gedrückt halten
- Einschalten
Der Boot Manager sollte sich dann öffnen. Vor der Debian Installation bin ich noch ein paar BIOS-Einstellungen durchgegangen (Menüpunkt “Enter Setup” wählen). Robtech erwähnt in seinem Video über den Minix Z100-0db, dass C states per default nicht aktiv seien und das Gerät deshalb nicht so viel Leistung hätte, wie es eigentlich könnte. Bei mir war die C-States Einstellung allerdings schon auf “enabled” gesetzt. Das deckt sich mit einem späteren Update in den YouTube Kommentaren.
Ansonsten habe ich noch eine Timeout-Einstellung auf 2 Sekunden gestellt und die Einstellung “Reset if no Monitor detected” deaktiviert, denn schließlich soll mein Minix Z100 immer ohne Monitor betrieben werden können.
Nach einem Neustart (und Abstecken des PCs) habe ich den Bootmanager noch ein zweites Mal gestartet und schließlich Debian ohne Zwischenfälle installiert.
Das Gerät macht einen sehr hochwertigen Eindruck. Wahrscheinlich trägt vor allem das massiv wirkende Metallgehäuse mit Kühlrippen auf der Oberseite dazu bei. Aber auch was die Stabilität und Funktion angeht, gibt es bisher nichts auszusetzen - ganz im Gegenteil: Ich bin begeistert von der deutlich höheren Prozessorleistung. Beeindruckend, was man einer 6-Watt CPU entlocken kann!
Wenn ich auf hohem Niveau meckern darf: Nur die Position der USB 3.2-Anschlüsse ist für meinen Einsatzzweck ziemlich ungünstig. Im Einsatz als normaler Mini PC mag es sinnvoll sein, die beiden USB 3.2 Anschlüsse an die Vorderseite zu packen. Für mich ist das eher nachteilig, weil Stromversorgung und Ethernet auf der Rückseite sowieso gebraucht werden und ich hier auch gerne mein USB 3.2 Kabel für mein SSD-RAID angesteckt hätte. So bleibt die Vorderseite aufgeräumt und ich muss das USB-Kabel nicht am Gehäuse entlang nach vorne ziehen. Auch auf die seitlich abstehenden WLAN-Antennenbuchsen könnte ich verzichten. Das ist aber nicht weiter schlimm und wohl dem geschuldet, dass das Gerät typischerweise anders verwendet werden dürfte.
Benchmarks
Ich habe mich eine ganze Weile damit beschäftigt, wie ich die Leistung meines neuen NAS bzw. Medienservers hier am aussagekräftigsten messen und beschreiben kann. Bisher bin ich noch nicht auf einen grünen Zweig gekommen spare diesen Bereich explizit aus, bis ich mit meiner Testmethodik zufrieden bin.
Lasst mich nur so viel sagen: Die Leistung ist für meine Zwecke mehr als ausreichend und es macht - anders als beim Rock64-basierten Vorgänger - Spaß, das Gerät einzurichten. Wartezeiten sind kurz und Installationsroutinen zügig. Die SSD-Controller sind nun auch mit USB 3.1 Gen 2 statt USB 3.1. Gen 1 angebunden. Damit also brutto mit 10 GBit/s statt 5 GBit/s. Und die integrierte NVMe SSD (statt einer Micro SD-Karte) für das OS bringt selbstverständlich auch nochmal einen gewaltigen Performancevorteil gegenüber dem alten Setup.
CPU
$ sysbench cpu --cpu-max-prime=20000 --threads=4 run
sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3)
Running the test with following options:
Number of threads: 4
Initializing random number generator from current time
Prime numbers limit: 20000
Initializing worker threads...
Threads started!
CPU speed:
events per second: 4411.68
General statistics:
total time: 10.0008s
total number of events: 44125
Latency (ms):
min: 0.86
avg: 0.91
max: 3.71
95th percentile: 0.90
sum: 39993.50
Threads fairness:
events (avg/stddev): 11031.2500/7.12
execution time (avg/stddev): 9.9984/0.00
SSD IO
Die Performance von interner SSD und meinem externen SATA SSD Raid habe ich über fio gemessen:
test.fio:
[global]
ramp_time=3 # Do not count first 3 seconds
runtime=10 # Let tests run for 60 seconds
time_based # Repeat tests until time is up
group_reporting=1 # Report all results at the end of all jobs
per_job_logs=0 # Do not create a log per job
size=5g # Create a 1 GB job file
filename=/mnt/raid2tb/testfile
numjobs=4 # We have 4 CPU cores => run 4 threads
zero_buffers
end_fsync=1 # ... but make sure that data after write is synced
buffered=1
[randwrite 4k]
rw=randwrite
bs=4k
stonewall
[randwrite 1M]
rw=randwrite
bs=1M
stonewall
[randread 4k]
rw=randread
bs=4k
stonewall
[randread 1M]
rw=randread
bs=1M
stonewall
[seqwrite 4k]
rw=write
bs=4k
stonewall
[seqwrite 1M]
rw=write
bs=1M
stonewall
[seqread 4k]
rw=read
bs=4k
stonewall
[seqread 1M]
rw=read
bs=1M
stonewall
Zusammenfassung
Rand write 4k | Rand write 1M | Rand read 4k | Rand Read 1M | Seq write 4k | Seq write 1M | Seq read 4k | Seq read 1 M | |
---|---|---|---|---|---|---|---|---|
Interne NVMe SSD | 42.4 MB/s | 97.5 MB/s | 62.0 MB/s | 683 MB/s | 72.6 MB/s | 463 MB/s | 299 MB/s | 260 MB/s |
SATA RAID | 52.5 MB/s | 3048 kB/s | 69.2 MB/s | 355 MB/s | 198 MB/s | 4871 kB/s | 285 MB/s | 262 MB/s |
Sonstiges
Temperatur
Der Minix Z100 wird an der Oberseite relativ warm; deutlich über Handwarm. Aber nicht heiß. Zumindest habe ich ihn bisher noch nicht so gequält. Dass die Kühlrippen warm werden ist aber zu erwarten und beweist letztendlich ja auch nur, dass der Kühlkörper wie vorgesehen funktioniert. Die CPU-Temperatur ist bei 25 °C Raumtemperatur mit 40 °C im Leerlauf völlig unbedenklich. Bei Volllast steigt die Temperatur der CPU nach 10 Minuten auf etwa 60 °C. Nach 30 Minuten Dauerlast stabilisiert sich die Temperatur bei ca 66 °C - nach meinem Empfinden zu heiß, als dass man das Gehäuse auch nur für ein paar Sekunden schmerzlos anfassen könnte.
Umstieg auf BTRFS
Meinen NAS-Umzug habe ich auch gleich als Gelegenheit genutzt, meine Daten umzuorganisieren. Wie in diesem Beitrag erwähnt, habe ich erst vor ca 1 1/2 Jahren von einem ext4 Dateisystem auf ZFS mit Verschlüsselung umgestellt. Nun wollte ich einmal BRTFS im RAID-1 ausprobieren. Da BTRFS noch (?) keine native Verschlüsselung unterstützt, nutze ich darunter einen LUKS-Layer, um meine Daten nicht im Klartext auf die SSDs zu schreiben. Das Setup läuft bisher gut und trotz der Verschlüsselung schnell. Ich habe nichts auszusetzen. Zu BTRFS gibt es ja immer wieder einmal sehr kritische Stimmen und auch solche, die wohl schon herbe Datenverluste erlitten haben. RAID-1 scheint allerdings zu den sehr stabilen Features von BTRFS zu gehören, sodass ich mir keine Sorgen darum mache. Wir werden sehen, ob ich das Experiment bereuen werde … ;-)
Plex statt Jellyfin
Auch an der Software habe ich eine Änderung vorgenommen: Da das Musikplayback mit Jellyfin unter Android in letzter Zeit häufig Probleme bereitet hat, habe ich mir den Plex Mediaserver installiert und versuche es nun einmal damit. Erste Versuche damit sind sehr gut verlaufen und ich kann mit dem neuen NAS sogar problemlos FullHD Filme live transcodieren. Sogar 4k Material sollte möglich sein, da der Prozessor Intel QuickSync in einer modernen Version unterstützt und damit zahlreiche Videocodecs sehr effizient in HW transcodieren kann.