Home Fileserver

Wie im letzten Blogpost angedeutet, möchte ich diesmal über meinen Home Fileserver schreiben. Ursprünglich wollte ich keinen dedizierten Server aufsetzen und meine Daten auf dem Mac Mini speichern. Die beiden externen USB Platten mit dem OS X Software Mirror hatten sich als nicht sehr zuverlässig herausgestellt. Ob das nun am USB, an der Mirror Software oder am Plattencontroller lag kann ich nicht sagen. Deshalb die Entscheidung für meine Daten und Filme ein zuverlässiges System aufzusetzen. Und was liegt für einen Solaris Admin näher als das Ganze mit OpenSolaris und ZFS zu machen. Bei der Hardware habe ich mich an Constantin Gonzalez‘ Blogpost A Small and Energy-Efficient OpenSolaris Home Server orientiert. Die Idee anstatt eines Intel Atoms einen energiesparenden AMD Athlon II X2 240e zu verwenden der ECC Speicher unterstützt ist bestechend. Wenn die Daten auf Platte Checksummen-überprüft werden – wieso nicht auch im Speicher, wo es durchaus auch mal vorkommen kann, dass ein Bit im Speicher kippt? Letztendlich habe ich den Server mit fast den gleichen Komponenten wie Constantin zusammengestellt:

– Prozessor: AMD Athlon II X2 240e – Motherboard: ASUS M3A78-CM SocketAM2+ mATX (6 SATA Anschlüsse) – Speicher: 2 x KINGSTON 2GB DDR2 PC2-6400 800MHZ CL6

Als Gehäuse habe ich ein altes PC-Gehäuse mit neuem Netzteil verwendet. Mein Server steht im Dachboden, da habe ich keine Platz- oder Lärm Probleme. Die beiden am Mac Mini ausprobierten 1TB USB Platten sind zum Glück „normale“ SATA Platten und tun mittlerweile ihren Dienst als ZFS Datenmirror. Zwei weitere 1,5TB Platten werden den Mirror erweitern, sobald die bestellung eingetroffen ist. Als root Platte dient eine nicht mehr verwendete Notebook Platte mit 110GB. Demnächst wird eine weitere 2,5″ Platte frei womit dann der ZFS Spiegel angelegt wird. Zugegeben – hier ist der aktuelle Zustand mit einer ungespiegelte Root Partition nicht das, was man von einem vorsichtigen Sysadmin erwartet. Aber wie gesagt – Abhilfe ist in Sicht. Zum Glück hatte ich noch einen alten Röhrenmonitor mit dem ich die Grundinstallation von OpenSolaris 2009.06 machen konnte. Aktuell läuft der Server ohne Bildschirm und ich bin guter Dinge, dass ich in nächster Zeit keine Konsole brauchen werde. In einer Mac Umgebung ist AppleTalk als Fileserver Protokoll praktisch. Für Unix Systeme gibt es das freie Netatalk, welches AFP für die Macs zur Verfügung stellt. Die Aktuelle Version 2.0.5 compiliert unter OpenSolaris 2009.08 problemlos – man brauch sich nur den gcc und die BerkeleyDB über das Contrib-Repository (http://pkg.opensolaris.org/contrib/) zu installieren. Eine generelle Anleitung wie man Netatalk auf OpenSolaris zum Laufen bekommt habe ich hier gefunden. Auch ich habe nur eine Handvoll Benutzer und so reicht es, die Benutzergenehmigungen von Hand einzutragen und über die passwd zu verwalten. Der Hauptgrund wieso ich Netatalk installiert habe ist, dass seit Version 2.0.5 TimeMachine Backups unterstützt werden. Es ist einfach beruhigend zu wissen, dass man ein Backup seines Notebooks hat und dieses auf einem zuverlässigen Dateisystem wie ZFS liegt 😉 OpenSolaris verwendet als Bonjour Service „dns-sd“ (Multicast DNS (mDNS) & DNS Service Discovery (DNS-SD) Test Tool). Eine Anleitung wie man dieses konfiguriert findet man hier. Damit findet der Mac Mini sein AFP Share für TimeMachine und macht – wenn er nicht grad „schläft“ – brav seine regelmäßigen Backups auf den Server. Als Alternative zu dns-sd gibt es auch avahi für OpenSolaris – ich habe mich aber für die von Haus aus installierte Variante entschieden. Aktuell kämpfe ich noch etwas mit IPv6: Gateway zum IPv6 Provider (in meinem Fall SixXS) dient mein OpenWrt Router. Über AICCU (Automatic IPv6 Connectivity Client Utility) den SixXS verwendet wird der Tunnel aufgebaut, der radvd (Router Advertisement Daemon) sorgt dann dafür, dass das entsprechende Advertising ins lokale Netz für das IPv6 AutoConfig gemacht wird. Theoretisch sollte das auch funktionieren. Mit den Macs klappt das auch wunderbar, OpenSolaris ist da etwas heikler. Ich habe das Problem noch nicht bis zum Schluss analysiert – Fakt ist aber, dass OpenSolaris nur dann eine IPv6 Autokonfiguration macht wenn der radvd in seiner config auf „UnicastOnly“ gesetzt wird. Solaris/OpenSolaris verwendet zur IPv6 Konfiguration den ndp (Neighbor Discovery Protocol) Daemon. Dieser kann sowohl Client als auch advertiser (bei einen Router) sein. Offensichtlich verstehen sich der radvd und der ndp nicht so gut. Vielleicht liegt das Problem aber auch ganz wo anders: der ndp bekommt erst dann eine config wenn OpenSolaris vorher die (lokale) IPv6 Adresse des Routers angepingt hat. Wie gesagt – ich bin noch am analysieren. Für mich ist IPv6 deshalb spannend, weil ich ein eigenes Subnetz habe und mich so vom Arbeitsplatz direkt mit die einzelnen Hosts zuhause verbinden kann. Mal schnell eben etwas umkonfigurieren, nachschauen, hinkopieren, … ohne NAT-Problematik ist genial. An weiteren Diensten ist der OpenSolaris mein lokaler NTP, DNS und DHCP Server. Weiteres wird u.U. noch folgen, wobei ich die Dienste des OpenWRT Routers vollständig übernehmen werde (FTP Server für die WebCams, IPv6 Gateway (wenn ich AICCU unter OpenSolaris zum compilieren bringen würde), dyndns cronjob und NFS Server für die (jetzt im Schlafzimmer stehende) dbox. Alles in allem kann ich sagen, dass ich – bis auf die ipv6 Problematik – mit meinem Setup zufrieden bin. Was Andere mit ihrem Linux-Home Server machen tut bei mir OpenSolaris mit dem Vorteil von ZFS für meine Daten, Fotos, Filme und Dokumente. Ein Enterprise-Grade NAS Server für Zuhause. Zumindest was File Services betrifft.

An dieser Stelle herzlichen Dank an Constantin für die Vorarbeit in Sachen Analyse für passende Hardware.