Vorschaubild des Artikels über Freenas auf einem HP Microserver

FreeNAS / TrueNAS für PLEX im HP Microserver Gen8 + Steuerung durch FHEM

FreeNAS / TrueNAS für PLEX im HP Microserver Gen8 + Steuerung durch FHEM

Nachdem ich schon länger mit der Anschaffung eines Network Attached Storage (NAS) geliebäugelt habe, mich aber immer gegen die hohen Kosten eines stärkeren Modells geweigert habe, entschied ich mich letztendlich die Sache selbst in die Hand zu nehmen und mir ein DIY Selbstbau-NAS zu basteln. Hierfür wird oft der sehr bekannte HP Microserver genommen. Im folgendem Artikel beschreibe ich, warum ich mich für genau diese Komponenten entschieden habe, wofür ich den Server verwende und was rein theoretisch mit dem NAS noch so alles möglich ist. Denn ein NAS ist heutzutage für weitaus mehr fähig als nur zum Daten speichern. So kann man echte Serveranwendungen ausführen, einen Mediaserver bauen (bei mir mit Plex) oder sogar FHEM oder andere Smarthomeapplikationen darauf ausführen. Doch hierzu später mehr

Inhalt

Geplanter Einsatzzweck

Wofür der ganze Aufwand? Mein primärer Einsatzzweck ist die Speicherung von derzeit ca. 800 Blu-Rays, gerippt als mkv Datei mit Dateigrößen zwischen 5 und 50gb. Dazu sollen die Filmdaten in Plex sortiert werden und auf dem NAS ein Plex Server ausgeführt werden. Sollte man als Abspielgeräte Clienten einsetzten, die direct Play für alle Formate unterstützen, so reicht ein relativ schwacher NAS Server aus (z.B. Einstiegsmodelle von QNAP). Sollte man aber an und zu an Player streamen, die nicht alle Formate unterstützen (z.B. iPad, iPhone etc.) so ist man zwangsläufig auf eine serverseitige Transkodierung angewiesen. Die meisten modernen NAS-Modelle werben zwar mit Live-Transkodierung von mehreren Streams, dies gilt aber nicht für den Einsatz bei Plex. So schaffte mein Testgerät (TS-451+) zwar ein Transkodierung, aber bei Filegrößen >15gb hatte ich ständig Aussetzer. Sobald im Haushalt aber mehr als ein Stream / Transkodieraufgabe geplant ist, ist hier der Einsatz eines Leistungsstärkeren NAS nötig. Ich habe mich daher für einen HP Microserver Gen8 entschieden, bei dem man den Prozessor upgraden/austauschen kann. Insgesamt fährt man so um einiges günstiger, als wenn man zu fertigen NAS Lösungen greift.

Vorteile und Nachteile gegenüber Fertiglösungen

Als ich damals mein erstes NAS (QNAP TS-451) eingerichtet habe, war ich erstmal von der Funktionsvielfalt und den für mich damals neuen Begriffen überfordert. Aber dennoch schafft man als Anfänger in Netzwerktechnik mithilfe des Internets und des einfachen Setups recht schnell den Einstieg in die NAS-Welt. Der etwas höheres Preis ist also durchaus gerechtfertig, denn man bekommt eine fertige, voll funktionierenden Lösung, teilweise mit Funktionen die man bei Selbstbaulösungen vermisst. QNAP liefert z.B. Apps fürs Handy und Tablet womit sehr einfach Musik und Filme abgespielt werden können oder die Dateien des NAS durchsucht werden können. Für Selbstbaulösungen mit freeNAS stehen hier nur Universalapps zur verfügung die etwas aufwendiger einzurichten sind. Außerdem gibt es bei kommerziellen NAS Systemen i.d.R. ein schöneres und funktionelleres Webinterface incl. integrierten Dateibrowser. Den Dateibrowser im Webinterface vermisse ich unter freeNAS. 

Des weiteren habe ich es bisher nicht geschafft, an das NAS angeschlossene USB-Speicher im Dateibrowser anzuzeigen, ohne diesen Speicher vorher im Webinterface einzurichten. Bei QNAP wird ein USB Stick oder eine USB Festplatte einfach als Wechseldatenträger angezeigt, den ich bequem vom Webinterface oder von der Freigabe aus verwalten kann. 

Als größter Vorteil von Selbstbausystemen ist der Preis zu nennen, denn sobald man mehr Power benötigt werden die kommerziellen NAS Systeme sehr schnell sehr teuer. Vielleicht nicht für jeden ein Vorteil, aber ganz klar als Unterschied ist zu kommerziellen Systemen ist das Dateisystem zu nennen. Auch wenn es mittlerweile NAS Systeme von QNAP mit ZFS gibt, so sind es primär Selbstbau-NAS die mit ZFS arbeiten. Weiter unten habe ich eine ausführliche Erklärung der Unterschiede von ZFS verfasst.

Vorteile von Selbstbau Lösungen

  • Spaß am Basteln
  • ZFS
  • große Vielfalt an verschiedenen NAS-Betriebssystemen (freeNAS, unRaid, NAS4free ...)
  • geringerer Preis
  • besser individualisierbar

Nachteile von Selbstbau Lösungen

  • Bastelei / zeitaufwendig
  • weniger / keine Apps für Mobiltelefone und Tablets 
  • USB Speicher etwas umständlicher einzubinden
  • kein Dateibrowser im Webinterface

Dateisystem ZFS

ZFS steht für Zettabyte File System. Dabei gibt es eigentlich nur Vorteile, die du weiter unten lesen kannst. Neben einem theoretischen Performance-Boost ist vor allem die maximale Datenintegrität zu nennen. Die Wahrscheinlichkeit von Datenverfall und -verlust sind bei ZFS sehr gering wenn man einen RAID-Z1 einsetzt. Das ist sozusagen ein RAID5 mit ZFS.

Vorteile von RAID-Z1 

  • Datenintegrität: durch die gleichzeitige Speicherung der Prüfsumme mit der Datei kann bei erneutem Lesen der Datei sofort festgestellt werden, ob die Datei beschädigt ist oder nicht. Sollte einer Fehler festgestellt werden wird sofort versucht die Datei mit Redundanzdaten zu reparieren
  • Copy On Write: Legt man eine identische Kopie einer Datei an, so wird auch nur eine Art Verknüpfung angelegt. Das heißt, dass die Kopie erst dann "real" angefertigt wird, wenn sich die ursprüngliche Datei ändert. Das hat den Vorteil dass Snapshots schnell und speichereffizient erstellt werden können.
  • Deduplikation: Blöcke mit dem selben Speicherinhalt belegen nur einmal Speicherplatz: Die ist vor allem dann nützlich, wenn man mehrere virtuelle Maschinen mit dem selben Betriebssystem speichert, da die Daten des Betriebssystems dann nur einmal gespeichert werden müssen.
  • Datenverlust bei Systemcrash wird verhindert, indem ZFS die Datei erst dann verändert, wenn der Schreibvorgang abgeschlossen als erfolgreich geprüft wurde. Kein Datenverlust mehr bei Systemabsturz, ebenso muss der Raid nicht überprüft werden sollte es zu einem Stromausfall kommen.
  • Hohe Skalierbarbeit: ein bestehender ZFS-Pool kann jederzeit erweitert werden (zusätzliche oder größere Platten)
  • kein Raid-Controller notwendig (ZFS = Software Raid)

Was man beachten sollte: Googelt man zum Thema ZFS so wird immer wieder der Nachteil erwähnt ZFS würde Unmengen an RAM benötigen (das typische Statement ist 8GB + 1GB für jedes TB Speicher). Bei ZFS ist vor allem Deduplikation ziemlich RAM hungrig. Solange man ZFS für ein Heimnetzwerk einsetzt und somit eine begrenzte Anzahl an Benutzer gleichzeitig auf das NAS zugreifen, so reichen 8gb RAM für die meisten Anwendungen. Mein Tipp: mit einem Riegel 8GB beginnen und zur Not einen zweiten Riegel installieren (16gb ist Maximum beim HP Microserver Gen8)

HP Microserver Gen8

Der kleine "Zauberwürfel" von HP wird sehr oft als Heimserver oder als Selbstbau-NAS-Lösung verwendet. Die Generation 8 ist hierbei nicht das aktuellste Modell,vor kurzem kam Gen10. Die wichtigen Unterschied habe ich in folgender Tabelle zusammengefasst:

   Prozessor  iLO  RAM  PCI-e Slots Anschlüsse
 HP Microserver Gen8 austauschbar  vorhanden  max. 16gb DDR3  1x  1x VGA
HP Microserver Gen10  fest  nicht vorhanden   max. 32gb DDR4 2x  1x VGA + 2x Display-Port

Außerdem hat der Gen10 eine neuere und stärkere Grafikkarte, was für uns im Serverbetrieb allerdings völlig egal ist. Zudem wurde ein neues Gehäuse spendiert. Ich habe mich deshalb für den Gen8 entschieden, da man diesen mittlerweile ziemlich günstig bekommt und man zudem den Prozessor wechseln kann. Falls ihr zum Gen10 greifen wollt so empfehle ich mal auf den Gen 10 X3421 zu schauen (2,1ghz 4-core mit 16gb RAM für unter 600 Euro). Dieser ist zwar schwächer, aber gleichzeitig auch stromsparender. Ich bin mit meiner Entscheidung mit dem Gen8 sehr zufrieden da mir der Stromverbrauch relativ egal ist, da ich das NAS bei Nichtbenutzung ausschalte (brauche es nur ca 6h pro Woche). Den Code für FHEM findest du weiter unten.

Meine Ausstattung sieht wie folgt aus

  • HP Microserver Gen8
  • Intel Xeon CPU E3-1230 V2 @ 3.30GHz
  • 64GB SSD
  • 4x 6TB WD Red
  • aktivierte iLo Advanced Lizenz
  • Noctua NH-L9i aktive Kühlung
  • 16GB RAM von Crucial (CT102472BD160B)

Betriebssystem: freeNAS 11.1

Hier werden sich die Geister scheiden: es gibt eine Unzahl an NAS Betriebssystemen und genauso hat jeder seine eigenen Vorlieben. Ich habe mich für freeNAS entschieden da es

  • auf freeBSD basiert und somit ZFS unterstützt
  • eine große Community hat
  • fleißig daran weiterentwickelt wird

Die Installation war ziemlich einfach, hier einfach der offiziellen Anleitung folgen (Link). Empfohlen wird die Installation auf einen USB-Stick. Ich habe hier gleich zwei identische Sticks einsetzt, das Betriebssystem wird so zwischen den beiden Sticks gespiegelt und auch bei Ausfall kann ich weiterhin problemlos booten. Die Dokumentation ist perfekt, großes Lob hierfür!

Noch arbeitet FreeNAS 11.1 mit dem alten Userinterface, allerdings kann man sich jetzt schon von einer Beta Version des neuen UI überzeugen. Mir gefällt das neue System sehr gut - aktuell nutze ich allerdings noch das alte, da im neuen noch zu viele Fehler sind.

FreeNAS altes GUI

FreeNAS altes GUI

FreeNAS neues GUI

FreeNAS neues GUI

FreeNAS neues GUI

FreeNAS neues GUI

freeNAS über SNMP in FHEM auslesen

Wie in meinem Artikel über die Steuerung eines QNAP-NAS über SNMP kann man auch freeNAS über SNMP (Simple Network Management Protocol) auslesen und auf Events triggern. Besonders praktisch ist es eben bei freeNAS, da es hier keine eigene App gibt die einem bei Überhitzung oder bei schlechtem S.M.A.R.T Status benachrichtigt. Man kann sich zwar per E-Mail benachrichtigen lassen, allerdings bevorzuge ich hier Pushmeldungen. Außerdem kann man sich so die Daten bequem ins TabletUI oder mit Node-RED ins Dashboard holen.

Zuerst müssen wir in den SNMP Service in freeNAS aktivieren. Services -> Control Services -> SNMP: "Start Now" und Häkchen bei "Start on boot". Danach geht ihr links auf den SNMP Service und gebt analog zu meinem Bild die Einstellungen ein. Bei "Community" kannst du einen eigenen Namen vergeben.

freeNAS SNMP Aktivieren

freeNAS SNMP Aktivieren

freeNAS SNMP Aktivieren

freeNAS SNMP Aktivieren

Damit FHEM das Modul für SNMP nutzen kannst musst du auf dem Rechner/Server auf dem FHEM läuft noch ein paar Pakete installieren. Logge dich über SSH auf dem Server ein und führe folgende Befehle aus:

sudo apt install -y snmpd snmp snmp-mibs-downloader
sudo cpan install use Net::SNMP
sudo reboot

Jetzt können wir das freeNAS Gerät anlegen

define nas_freenas SYSSTAT 60 600 192.168.xxx.xx
attr nas_freenas snmp 1
attr nas_freenas snmpCommunity moppy
attr nas_freenas snmpVersion 2
attr nas_freenas uptime 1
attr nas_freenas alias freeNAS
attr nas_freenas icon it_nas

Zuletzt müssen wir noch die MIB / OID eintragen. Sollten die folgenden Werte bei dir nicht funktionieren so habe ich weiter unter beschrieben wie man die OIDs selbst auslesen kann

attr nas_freenas mibs 1.3.6.1.4.1.50536.1.1.1.1.4.1:zpool_size ,1.3.6.1.4.1.50536.1.1.1.1.5.1:zpool_free

Die beiden Werte müssen wir allerdings mithilfe eines userReadings noch "umrechnen":

attr nas_freenas userReadings zpool_size_calculated { ReadingsVal("nas_freenas","zpool_size",0)*0.000000016384;; }, zpool_free_calculated { ReadingsVal("nas_freenas","zpool_free",0)*0.000000016384;; }

Jetzt wird der Speicherplatz in TB angezeigt.

OID von freeNAS auslesen

Die Dokumentation über die einzelnen OIDs die ich gefunden habe war falsch bzw. veraltet. Scheinbar wurden mit freeNAS 11 neue OIDs eingeführt. Kein Problem, denn auf dem freeNAS Betriebssystem existieren MIB-Files (Management Information Base). Diese Files kann man über die Console auslesen und in OIDs übersetzen lassen. Hierfür logge dich über SSH auf deinem freeNAS System ein:

ssh admin@192.168.xxx.xx

Jetzt wechsle in das Verzeichnis das die MIB-Files beinhaltet:

cd /usr/local/share/snmp/mibs

mit "ls" kannst du dir den Ordnerinhalt anzeigen lassen.

Mit folgendem Befehl lesen wir die Datei nach den OIDs aus:

snmptranslate -Tz -m ./FREENAS-MIB.txt

oder

snmptranslate -Tz -m ./HOST-RESOURCES-MIB.txt

Suche dir hier die OIDs für dich heraus, führe einen snmpwalk auf die Adresse aus und trage die benötigten OIDs als mibs Attribut in FHEM ein.

HP Microserver mit iLO über SNMP in FHEM auslesen

Natürlich kann man den Server selbst auch über SNMP auslesen. Vorher musst du dich ins iLO einloggen und SNMP unter Administartor -> Access Settings aktivieren. Dann noch unter Management deine Community eintragen. Hier kannst du die OIDs auslesen.

So hat es bei mir in FHEM geklappt:

define nas_microserver SYSSTAT 60 600 192.168.xxx.xx
attr nas_microserver icon it_nas
attr nas_microserver alias HP Microserver Gen8 iLO
attr nas_freenas snmp 1
attr nas_freenas snmpCommunity moppy
attr nas_freenas snmpVersion 2
attr nas_freenas uptime 1
attr nas_freenas mibs 1.3.6.1.4.1.232.6.2.6.8.1.4.0.1:temp_inlet_ambient
,1.3.6.1.4.1.232.6.2.6.8.1.4.0.2:temp_cpu
1.3.6.1.4.1.232.6.2.6.8.1.4.0.3:temp_ram
,1.3.6.1.4.1.232.6.2.6.8.1.4.0.5:temp_chipset
,1.3.6.1.4.1.232.6.2.6.8.1.4.0.6:temp_chipset_zone
,1.3.6.1.4.1.232.6.2.6.8.1.4.0.7:temp_vr_p1_zone
,1.3.6.1.4.1.232.6.2.6.8.1.4.0.9:temp_ilo_zone
,1.3.6.1.4.1.232.6.2.6.8.1.4.0.11:temp_pci1_zone
,1.3.6.1.4.1.232.6.2.6.8.1.4.0.12:temp_sys_exhaust

freeNAS über FHEM Ein- und Ausschalten

Das ganze wird ein wenig komplizierter aber dennoch machbar.

Zuerst erstellen wir in der freeNAS Weboberfläche einen neuen Benutzer namens "fhem". Hierfür gehe auf Account -> Users -> Add User (siehe Bild) und trage wie im 2. Bild zu sehen die Benutzerinformationen ein

freeNAS neuen Nutzer anlegen

freeNAS neuen Nutzer anlegen

freeNAS Credentials eintragen

freeNAS Credentials eintragen

Das Feld "Home Directory" kannst du erst mal so lassen wie es ist, da wir hier erst noch die Berechtigungen ergänzen müssen. Jetzt ist es Zeit sich über SSH mit dem FreeNAS zu verbinden. Logge dich mit einem Benutzer ein der "sudo" ausführen darf. Bei mir ist das "admin".

ssh admin@192.168.xxx.xx

Jetzt erstellst du dir einen Ordner für den Benutzer "fhem". Bei mir ist das der Name des Speicherpools "Volume" also ist der Pfad /mnt/Volume/fhem

sudo mkdir /mnt/Volume/fhem
sudo chown fhem /mnt/Volume/fhem
udo chmod 700 /mnt/Volume/fhem

Zusätzlich erstellen wir gleich ein Verzeichnis für den SSH-Key den wir später am dem NAS ablegen:

sudo mkdir .ssh

Jetzt gehst du nochmals ins Web-GUI von FreeNAS und editierst das "Home Directory" des Users "FHEM" wie auf dem nachfolgenden Bild zu sehen

freeNAS Home Directory anlegen

freeNAS Home Directory anlegen

Zurück in der Console (SSH von FreeNAS) wechseln wir zum Benutzer "fhem" mit:

su fhem

und modifizieren die Berechtigungen von dem SSH-Verzeichnis:

chmod -R 700 ~/.ssh

Weiter gehts auf dem Raspberry auf dem FHEM läuft. Du musst dich mit dem User FHEM am Raspberry anmelden. Da dieser standardmäßig aber keinen root Zugriff hat musst du das temporär für diese Anleitung aktivieren.

sudo nano /etc/passwd

und den Eintrag

fhem:x:999:20::/opt/fhem:/bin/false

ändern in

fhem:x:999:20::/opt/fhem:/bin/bash

speichern und schließen.

Jetzt vergeben wir ein Passwort für den User fhem und wechseln dann zu diesem Benutzer:

sudo passwd fhem
su - fhem

Jetzt erstellst du dir einen SSH-Key auf dem Raspberry. Dieser Key (das File heißt id_rsa.pub) wird anschließend auf den FreeNAS Server kopiert und dient als Authentifizierung, sodass sich fhem auf dem Raspberry später ohne Passwort am FreeNAS über SSH anmelden darf. Das wiederum ist Voraussetzung für die An/Aus Befehle, die wir in FHEM absetzen wollen.

ssh-keygen

Bestätige 3x mit Enter, wichtig ist kein Passwort zu vergeben.

Folgender Befehl kopiert das Key-File auf den freeNAS Server. Passe die IP entsprechend an

cat id_rsa.pub | ssh -p 22 fhem@192.168.xxx.xx 'cat >> .ssh/authorized_keys'

Soweit sollte alles ohne Fehler abgelaufen sein.

Jetzt kann sich der Raspberry mit dem User "fhem" ohne Passwort auf dem FreeNAS Server per SSH verbinden. Dennoch ist es dem User "fhem" noch nicht erlaubt den Server mit "sudo shutdown" oder "sudo poweroff" auszuschalten. Hierfür würde man dem User "fhem" sudo Befehle erlauben müssen, dennoch würde nach einem Passwort gefragt werden. Die Lösung ist ganz einfach. Wir erlauben dem User "fhem" auf dem FreeNAS Server das absetzen des "poweroff" und "shutdown" Befehls im "sudoers" File. Bearbeite diese Datei auf dem FreeNAS Server als User admin bzw. als Nutzer der sudo ausführen darf

sudo nano /conf/base/etc/local/sudoers

hier fügst du folgende Zeile am Ende ein

fhem ALL=(ALL) NOPASSWD: /sbin/poweroff, /sbin/reboot, /sbin/shutdown

Achtung: Es kann sein dass dieser Schritt nach einem FreeNAS Update wiederholt werden muss

speichere und schließe die Datei. Die Änderungen werden nach einem Reboot wirksam

Jetzt kannst du mal versuchen ob du als user "fhem" auf dem Raspi ohne Passwort auf den FreeNAS kommst und folgenden Befehl absetzen kannst

sudo poweroff

Zum Abschluss kannst du die Änderungen am Benutzer fhem am Raspberry noch rückgängig machen:

sudo passwd -d fhem
sudo nano /etc/passwd

und den Eintrag

fhem:x:999:20::/opt/fhem:/bin/bash

ändern in

fhem:x:999:20::/opt/fhem:/bin/false

FreeNAS WOL Device in FHEM anlegen

Um den An/Aus-Status zu überprüfen habe ich mir in FHME ein Wake-On-Lan Device angelegt. Damit kann man FreeNAS auch anschalten. Zuvor benötigst du auf dem Rechner auf dem FHEM Installiert ist ein zusätzliches Paket:

sudo apt install wakeonlan

Dann können wir das WOL-Device anlegen. Hierfür brauchst du die MAC Adresse und die IP Adresse (herauszufinden über die Fritz.Box z.B.)

define freenas_wol WOL XX:XX:XX:XX:XX:XX 192.168.xxx.xx BOTH
attr freenas_wol alias FreeNAS
attr freenas_wol event-on-change-reading state
attr freenas_wol interval 60
attr freenas_wol shutdownCmd {system("ssh fhem\@192.168.xxx.xx sudo poweroff &")}

Alternative die ich derzeit verwende: Ein Steckdose mit Leistungsmessung (Z-Wave Fibaro Wall Plug). Ich habe im HP Microserver eingestellt dass dieser sofort von selbst hochfährt sobald er Strom bekommt. Der der Server immer über 10W braucht sieht mein DOIF zum automatischen Abschalten der Steckdose so aus:

define freenas_power_doif DOIF ([emanuel_zwave_steckdose:power:d]<10) (set emanuel_zwave_steckdose off)
attr freenas_power_doif wait 30

Das "wait 30" Attribut sagt dass der Befehl erst nach 30 Sekunden <10 Watt ausgeführt werden soll. Das :d schneidet die Einheit (Watt) im Reading 'power' ab. Der Microserver hat im ausgeschalteten Zustand ca 5,3 Watt Standy-Verbrauch. Somit fahre ich mit dieser Lösung ein wenig günstiger.

Fazit

Insgesamt bin ich mit dieser Lösung sehr zufrieden, auch wenn ich ziemlich viel Zeit investieren musste. Dafür habe ich allerdings ein NAS mit genügend Leistungsreserven und massig Speicherplatz. Die Möglichkeit Software in sog. "Jails" zu installieren finde ich auch sehr interessant. Eigentlich könnte man das NAS auch als zentralen Dreh- und Angelpunkt im Smarthome verwenden. Dafür müsste es allerdings dauerhaft laufen was mir im Stromverbrauch einfach zu teuer ist. Wie habt ihr das ganze umgesetzt? Läuft bei euch alles zentral auf einem System oder habt ihr die einzelnen Komponenten dezentral aufgebaut?

Über den Author

Emanuel

teilt seine Begeisterung im Bereich Technik, DIY und Hausautomatisierung gerne auf seinem Blog coldcorner.de

Abonnieren
Benachrichtige mich bei
2 Kommentare
Ältester
Neuster Am meisten bewertet
Inline Feedbacks
View all comments
Norbert Niesing
4 Jahre zuvor

Hallo Emanuel tolle Beschreibung.
Ich möchte das NAS auch als zentralen Dreh- und Angelpunkt im Smarthome verwenden.
Es sollen auch Kameras, Türklingel einfach alles über den Server/Nass laufen.
Bin jetzt gerade dabei mir mit FreeNass eines aufzusetzen.
Kennst Du eine Smarthome Lösung die darauf laufen würde?

Gruß

Norbert Niesing