Di
Jun
22

2010

FreeNAS #6 - iSCSI

iSCSI erlaubt die Nutzung des SCSI-Protokolls via TCP. FreeNAS bietet eine eingebaute Unterstützung hierfür, jedoch gibt es ein paar prinzipielle Einschränkungen.

Als Target bezeichnet man die Serverseite, der Initiator ist der Client.
iSCSI stellt im Netz entweder ein Device (also eine Festplatte) oder eine Datei bereit, die vom Client als Laufwerk betrachtet werden. Die Partition einer Platte kann nicht als iSCSI Target verwendet werden. Die gleichzeitige Verwendung eines iSCSI Targets durch mehrere Clients ist nicht vorgesehen, bzw. wird durch Dateisysteme wie NTFS oder HFS gar nicht unterstützt.

Zur Nutzung einer kompletten Platte muss lediglich die entsprechende Platte (z.B. ad2) ausgewählt werden. Allerdings kann dann die Platte auch nicht teilweise für andere Zwecke genutzt werden.

Trotz etwas schlechterer Performance empfiehlt sich in diesem Fall die Verwendung einer Datei als iSCSI-Container. Eine 200GB große Datei lässt sich mit dem Befehl dd einfach und schnell erzeugen:

# dd if=/dev/zero of=templun3 count=0 obs=1 seek=200G

dd if=/dev/zero of=templun3 count=0 obs=1 seek=200G

Zunächst wird ein neuer Extent angelegt:

iSCSI Target add an Extent

Dann folgt das sogenannte Portal:

iSCSI Target add Portals

Der Initiator gibt an, aus welchem Netzwerk heraus das Target genutzt werden kann:

iSCSI Target add Initiators

Zur Authentifizierung wird ein einfacher Benutzer angelegt.

iSCSI Target add User

Als letztes folgt das eigentliche Target:

iSCSI Target add Target

In den Settings ist vor allem der Base Name relevant, alles andere kann bei den Standardeinstellungen belassen werden.

iSCSI Base Name

Extent und Target sollen bei richtiger Konfiguration in etwa so aussehen:

iSCSI Targets Overview

Um iSCIS unter Mac OS X nutzen zu können, reichen die Bordmittel leider nicht aus. Dafür gibt es ein kostenloses Hilfsprogramm namens globalSAN. Die Systemerweiterung funktioniert auch unter Mac OS X 10.6.4 einwandfrei:

globalSAN iSCSI als Systemerweiterung

Beim Hinzufügen eines Portals wird das Target automatisch angezeigt. Es kann ausgewählt und die Verbindung hergestellt werden:

iSCSI - globalSAN mit dem Portal verbinden und iSCSI kann genutzt werden

Da die Datei auf dem FreeNAS, welche die Grundlage des iSCSI-Laufwerks bildet, noch kein Dateisystem enthält, muss dieses nun zunächst initialisiert werden:

Medium kann nicht gelesen werden - Möchten Sie es initialisieren?

Im Festplattendienstprogramm wird das iSCSI-Target als eigenes Laufwerk dargestellt und kann beispielsweise mit HFS+ (Journaled) initialisiert werden:

Anzeige des iSCSI-Targets im Festplattendienstprogramm

Sobald die Formatierung erfolgt ist, fügt sich das Laufwerk in die Liste der verfügbaren angeschlossenen Geräte am Mac ein.

Das iSCSI-Target auf dem Desktop

Die Performance von iSCSI war überraschend gut, auch über WLAN, wo Werte bis zu 8,8 Megabyte pro Sekunde erzielt wurden:

iSCSI Netzwerkdurchsatz

Sa
Jun
19

2010

FreeNAS #5 - Performance

Das von mir eingesetzte System ist vergleichsweise leistungsschwach. Da die Festplatten via USB angeschlossen sind, darf man keine außergewöhnliche Leistung erwarten. Dennoch ist die Performance insgesamt deutlich schlechter, als bei einem direkten Anschluss der Platte an den USB-Port des Rechners.

Typischerweise kann man in etwa 20-25 MB/s bei Festplatten, die via USB 2.0 angeschlossen sind erwarten. Unabhängig ob AFP oder FTP (oder auf SFTP) als Protokoll verwendet werden, das Thinkpad X40 kommt mit der Western Digital 1TB Platte auf durchschnittliche 11,5 MB/s (und bleibt damit deutlich unter der theoretischen Übertragungsgrenze von Gigabit-Ethernet von 47-60 MB/s).

Throughput/Performance of FreeNAS using AFP/FTP

Es handelt sich bei der Installation um eine Standardkonfiguration ohne jegliche Anpassungen zur Performanceverbesserung. Das Forum bietet eine gute Anlaufstelle, um noch mehr Leistung aus FreeNAS herauszukitzeln.

Fr
Jun
18

2010

FreeNAS #4 - Backups

Sobald Dateien durch FreeNAS gespeichert werden, sollte auch über das Thema Backup nachgedacht werden. Viele Anwender greifen beim Thema Datensicherung gerne auf implizite Lösungen wie RAID-1 oder gar ZFS zurück. Doch ein echtes vollwertiges Backup ist durch solche Strategien nicht zu ersetzen.

RAID-Lösungen sorgen dafür, dass Daten ausfallsicher gespeichert werden. Selbst wenn eine von mehreren Festplatten ausfällt, stehen die Daten weiterhin bereit. Gegen Datenverlust, der durch den “DAU”:http://de.wikipedia.org/wiki/Dümmster_anzunehmender_User hervorgerufen wurde, helfen sie gar nicht. Aufgrund des Netzwerkspeichers existiert kein Papierkorb, aus dem versehentlich gelöschte Dateien wiederhergestellt werden könnten.

Mein FreeNAS nutzt Rsync für die redundante Datenhaltung. Nachdem ich gute Erfahrungen mit rsnapshot für inkrementelle Backups und mehrere vollständige Datenbestände gemacht habe, wollte ich eine ähnliche Lösung implementieren.

rsnapshot synchronisiert mehrere komplette Backups, benötigt aber nicht für jedes Backup den tatsächlich belegten Speicher, sondern nutzt die unter Unix als Link bekannten Verknnüpfungen um Speicherplatz zu sparen. Im Ergebnis kann man so für jeden Tag der Woche ein komplettes Backup haben, wobei jeden Tag nur die Unterschiede zum Vortag gesichert werden. Eine ähnliche Lösung stellt übrigens Apples TimeMachine dar.

Gut versteckt im Forum von FreeNAS fand ich einen Beitrag über ein Shell-Skript mit ähnlicher Funktion wie rsnapshot. Da ich ein embedded FreeNAS nutze, habe ich das Programm unter /mnt/wdrive/system/rsnapshot.sh gespeichert.

FreeNAS Con for rsnapshot.sh

Die Syntax von rsnapshot.sh ist vergleichsweise einfach:

rsnapshot.sh <quellverzeichnis> <zielverzeichnis> <anzahl backups>

Will man die letzten 30 Tage als Backup vorhalten, dann kann dies anhand eines täglich ausgeführten Cron-Jobs erledigt werden:

FreeNAS Con for rsnapshot.sh

Es ist übrigens nicht notwendig, Rsync unter den Services zu aktivieren.

Code:
rsnapshot.sh

Do
Jun
17

2010

FreeNAS #3 - Gemeinsamer Datenspeicher mit AFP

In meinem Netzwerk sollen mehrere Anwender Daten gemeinsam auf einer USB-Platte am FreeNAS-Server ablegen. Hierzu werden zunächst die Nutzer angelegt.

Unter Access/_Users and Groups_ wird ein neuer Anwender angelegt, der als Administrator dienen soll. Seine primäre Gruppe ist wheel. Sekundäre Gruppen sind bei mir unter anderem admin, ftp und transmission.

FreeNAS User Setup

Unter System|Advanced ist Zeroconf/Bonjour aktiviert. AFP ist aktiviert, und ein Share namens freeshare ist eingerichtet. Lokale Benutzerauthentifizierung ist möglich, Gastzugriffe hingegen nicht.

freeshare with path and comment

Damit nicht jeder der Anwender auf den Share zugreifen kann, ist das Verzeichnis der neu angelegten Gruppe homegroup zugewiesen.

Groups in FreeNAS

Via ssh logge ich mich auf dem FreeNAS ein und richte als “Besitzer” des Shares mich und die Gruppe an, danach setze ich die Berechtigungen für Gruppenmitglieder mittels

# chown -R stephan:homegroup /mnt/wdrive/share
# chmod -R 770 /mnt/wdrive/share

Jetzt kann der AFP-Share unter Mac OS X einfach unter den Freigaben geöffnet werden.

Mi
Jun
16

2010

FreeNAS #2 - Beispielkonfiguration

Als Anregung hier meine aktuelle Konfiguration des FreeNAS (Vorabversion 0.7.2 Build 5226):

FreeNAS System Information

Hardware

Als Basissystem kommt ein defektes (Akkus können nicht mehr geladen werden) IBM Thinkpad X40 zum Einsatz. Das ohnehin schon relativ stromsparende System wurde auf seine neue Aufgabe vorbereitet, indem die interne Festplatte durch eine Compact-Flash-Karte ausgetauscht wurde.

Als Speichermedien dienen diverse externe Festplatten. Dauerhaft im Einsatz sind eine Western Digital USB-Platte mit einem Terabyte Kapazität (primäres Laufwerk) und eine 1,5 Terabyte große USB-Platte von Toshiba (als Backup).

Die Anbindung an das Netzwerk erfolgt über Gigabit-Ethernet an einen Gigabit-Switch, der wiederum mit dem Internet (kein Gigabit) verbunden ist.

Services

Da in meinem Netzwerk ausschließlich Rechner mit Mac OS X zum Einsatz kommen, ist CIFS/Samba nicht aktiviert, sondern AFP. Passend dazu natürlich auch Bonjour/Zeroconf, wodurch sich der Server automatisch bei allen Clients bereit meldet. Weiterhin ist Transmission (BitTorrent) aktiv, FTP eingerichtet und SSH-Zugriffe sind möglich. Meine IP wird bei Dyndns mindestens alle 9 Tage aktualisiert.

Obwohl rsync nicht aktiviert ist, nutze ich rsync für regelmäßige Backups von der einen auf die andere Festplatte.

Der iTunes/DAAP-Server ist bei mir nicht (mehr) im Einsatz, da es für mich keine geeignete Lösung zum Verwenden gemeinsamer Songs zwischen mehreren iTunes-Libraries bzw. iPods war. Stattdessen liegen nun die Musikdateien auf dem Share und die iTunes-Bibliothek verweist auf den Share.

Sicherheit

Auch wenn FreeNAS rund um die Uhr läuft und am Netz hängt, ist es kein Router und auch keine Firewall, auch wenn die Möglichkeit für Firewall-Regeln, statische Routen oder auch der Begrenzung von Hostzugriffen besteht.
Da mein System sowohl im internen Netz (LAN) wie auch im Internet hängt, reicht allein eine ausgreifte Nutzerverwaltung zur Grundsicherung nicht aus. Ein dedizierter Router mit Firewall und NAT erlaubt nur bestimmten (Nicht-Standard-)Ports den Durchgang, so dass weder Default-User noch Default-Ports für etwaige Angriffe ein leichtes Einfallstor bieten würden.

Verbundenheit

Auf Client-Seite hat sich mein Laptop den Zugriff auf den Server (AFP) anhand des Schlüsselbunds gemerkt, so dass quasi immer bei Netzverfügbarkeit auch gleichzeitig eine Verbindung mit dem NAS besteht.
In einer Windows-Umgebung könnte alternativ eine Authentifizierung mittels ActiveDirectory ermöglicht werden, was für mich jedoch nicht in Frage kommt.

Di
Jun
15

2010

FreeNAS #1 - Installation

FreeNAS gibt es aktuell1 in zwei Geschmacksrichtungen:

  • Full
  • Embedded

Beide Varianten umfassen sämtliche Funktionen von FreeNAS, der Unterschied besteht in der eigentlichen Resourcennutzung. Full wird in der Regel auf einer dedizierten Festplatte installiert und kann sehr einfach und bequem erweitert werden – in etwa so wie FreeBSD selbst. Embedded ist konzeptioniert, um von einem USB-Stick oder einer CF-Karte gestartet ausschließlich im RAM zu laufen und lässt sich auch nur mit erheblichem Aufwand erweitern.

Sämtliche Installationsmedien gibt es auf der Projektseite bei Sourceforge. Während die ISO-Datei dazu dient, eine komplett neue Installation durchzuführen oder als Live-CD gebootet zu werden, ist die IMG-Datei für das Update einer Embedded-Installation über das Webinterface gedacht.

Steht einmal nur das Live-ISO-Image zur Verfügung, kann hieraus auch die IMG-Datei ohne viel Aufwand extrahiert werden:
Von der ISO-Partition kann die Datei FreeNAS-i386-embedded.gz bzw. FreeNAS-amd64-embedded.gz kopiert und entsprechend in FreeNAS-i386-embedded-0.7.2.5226.img (oder eben amd64) umbenannt werden.

Die Erstinstallation ist einfach und schnell erledigt und kann in der offiziellen Dokumentation nachgelesen werden.

Wichtig zu wissen ist, dass bei der Embedded-Variante sämtliche Konfigurationseinstellungen in einer einzigen Textdatei zusammengefasst sind. Da sämtliche Daten auf einer RAM-Disk gespeichert sind, gehen etwaige Änderungen auf Dateisystem-Ebene beim Neustart verloren.

1 Aktuell steht FreeNAS 0.7.2 kurz vor der Freigabe. Parallel dazu ist die Firma iX Systems – die sich für die weitere Pflege des Projekts freiwillig gemeldet haben – dabei, freenas 0.8 produktionsreif zu machen.

Mo
Jun
14

2010

FreeNAS #0 - Basics

Da ich in letzter Zeit viel mit FreeNAS spiele, habe ich mir überlegt, die gewonnenen Erkenntnisse im Rahmen einer How-To-Reihe hier zu veröffentlichen.

Der erste Teil beschäftigt sich mit dem Thema, was FreeNAS eigentlich ist, wozu man es einsetzen kann und wie es sich von All-in-One-Lösungen wie Drobo oder Synology unterscheidet.

Was ist FreeNAS?

FreeNAS ist eine Variante von FreeBSD, die speziell für den Betrieb von NAS-Systemen (Network Attached Storage) konzipiert ist. Mit Unterstützung für alle gängigen Protokolle (Samba, FTP, NFS, AFP, rsync, ssh, etc.) bietet es auch einige der im NAS-Bereich inzwischen üblichen Nettigkeiten (wie Unterstützung für Bittorrent, iTunes-Media-Server, einfaches Webinterface).

Doch damit nicht genug, auch sämtliche RAID-Varianten, iSCSI und sogar ZFS werden unterstützt. Die richtige Hardware vorausgesetzt, lässt sich so relativ einfach ein extrem leistungsfähiges System aufbauen.

Wieso nicht Drobo/Qnap/Synology/xyz?

FreeNAS ist eine OpenSource-Software, die sich auf so ziemlich jeder i386- bzw. AMD-Plattform betreiben lässt. Bezüglich des Funktionsumfangs muss es sich nicht hinter gängigen Marktgrößen verstecken. Ganz im Gegenteil: Für vergleichbare Features muss man bei kommerziellen Anbietern bisweilen tief in die Tasche greifen.

Auf der Suche nach maximaler Performance steigen die Preise für All-in-One-Lösungen signifikant und auch nicht jede Anforderung kann mit SoHo-Hardware erfüllt werden. Häufig ist auch die Nutzerverwaltung mehr schlecht als recht implementiert, so dass sich komplexere Szenarien nicht oder nur ungenügend umsetzen lassen.
Enterprise-Lösungen hingegen sind oftmals unangenehm teuer, wenn die gewünschte Flexibilität gepaart mit hoher Performance zum Tragen kommen sollen (nicht zu vergessen etwaige Wartungskosten).

Wer bereits über entsprechende Hardware verfügt, einen alten Rechner mit neuen Aufgaben betrauen möchte oder einfach nur Spaß am Basteln hat, kann sehr kostengünstig mit FreeNAS ein eigenes Speichersystem aufbauen und in die Welt des NAS einsteigen.

Wie muss ich mir freenas im Einsatz vorstellen?

Ein alter Laptop und zwei USB-Platten, so einfach kann ein relativ stromsparendes und flexibles System mit bestehender Hardware aufgesetzt werden. In einem Heimnetzwerk lassen sich so Dateien gemeinsam auf einem zentralen Laufwerk speichern (1. USB-Platte). Ein regelmäßiges Backup sorgt dafür, dass das Risiko des Datenverlusts minimiert wird (2. USB-Platte).

Das Laufwerk kann auch als TimeMachine für Apple-Rechner verwendet werden, alle Platten oder einzelne Partitionen können verschlüsselt oder via via (S)FTP über das Internet freigegeben werden. Darüberhinaus können auch eigene Webseiten (mit oder ohne SQL-Datenbank) betrieben werden.

Wie kann ich FreeNAS ausprobieren?

In den folgenden Tagen veröffentliche ich hier ein paar Artikel, die die Konfiguration und Benutzung etwas detaillierter beschreiben. Als nächstes geht es um das Thema, wie und woher man FreeNAS erhält.

Hilfreiche Links:

Mi
Mai
12

2010

Tomcat unter Debian automatisch starten

Als Notiz für mich selbst gedacht:

Um auf einem Debian einen manuell installierten Tomcat (nicht via apt-get) via init.d script starten zu können, folgende Datei unter /etc/init.d/tomcat anlegen:

#/etc/init.d/tomcat
export JAVA_HOME=/path/to/jre
case $1 in
start)
/bin/su – tomcatuser /path/to/tomcat6/bin/startup.sh
;;
stop)
/bin/su – tomcatuser /path/to/tomcat6/bin/shutdown.sh
;;
restart)
/bin/su – tomcatuser /path/to/tomcat6/bin/shutdown.sh
/bin/su – tomcatuser /path/to/tomcat6/bin/startup.sh
;;
esac
exit 0

Durch das Script wird Tomcat unter einem bestimmten Benutzeraccount (tomcatuser) gestartet.

Nicht vergessen:

# chmod 755 /etc/init.d/tomcat

Für einen automatische Start während des Bootvorgangs:

# ln -s /etc/init.d/tomcat /etc/rc1.d/K99tomcat
# ln -s /etc/init.d/tomcat /etc/rc2.d/S99tomcat

So
Feb
28

2010

FreeNAS 0.7.1 build 5038 und BitTorrent

UPDATE: Inzwischen ist auch Build 5053 verfügbar (siehe Forum)

FreeNAS bietet natürlich auch einen BitTorrent-Client. Der auch unter Mac OS X beliebte Client Transmission bietet eine Vielzahl an Einstellungen. Ein Webinterface ermöglicht einen einfachen Zugriff, doch bisweilen ist die Konfiguration etwas kompliziert, besonders für *nix-Anfänger.

Um eine aktuellere Version von Transmission (1.8.3 – aktuell ist 1.9.1, in dem offiziellen Release von FreeNAS 0.7.1 hingegen nur 1.7.2) nutzen zu können, empfiehlt es sich, einen nightly build von FreeNAS zu installieren. Daisuke Aoyama hat auf seiner Webseite freenas 0.7.1 Build 5038 bereitgestellt (die Seite ist in Japanisch, der passende Forumseintrag in Englisch). Build 5038 läuft inzwischen auch bei mir.

Voraussetzungen und Disclaimer

Mein FreeNAS hat momentan nur eine Festplatte, die via USB angebunden ist. Sie ist unter /mnt/elements verfügbar. Ein AFP-Share dient den Macs zum Datenaustausch. Der Share läuft auf dem Server freenas und hat den Namen freeshare. Da auch noch andere Dienste laufen sollen, soll der Share jedoch nicht gleich dem Root der Festplatte sein, sondern in einem Unterverzeichnis laufen. Das Wurzelverzeichnis des Shares ist

/mnt/elements/share/

Das wird noch wichtig, wenn es um die Berechtigung von transmission geht. Der Share “gehört” dem Benutzer stephan und der Gruppe homeusers:

drwxr-xr-x 3 stephan homeusers 512 Feb 27 22:49 share

Aufgrund meines Setups benötigen nur zwei Anwender Zugriff auf die Daten des NAS. Dies ermöglicht vergleichsweise einfache, aber nicht für jeden Einsatz sinnvolle Berechtigungsvergaben, besonders in komplexen Mehrbenutzerumgebungen!

BitTorrent Service einrichten

Der Peer port sollte vom Router via NAT vom Netz durchgereicht werden. Da ich den Standard-Port bereits an einem anderen Rechner nutzen möchte, ist dieser auf 51412 eingestellt.
Als Download directory trage ich /mnt/elements/share/torrent ein. Die restlichen Einstellungen lassen sich nach Belieben vornehmen (Watch directory ist ebenfalls /mnt/elements/share/torrent, User mask und Extra options sind leer).

Permission denied

In einer solchen Konfiguration kommt es zu unschönen Fehlermeldungen vom Typ Permission denied oder file or folder not found. Wechselt man via SSH auf das freenas und schaut sich die Berechtigungen per ls -la an, scheint zunächst alles korrekt. Der Ordner /mnt/elements/share/torrent kann noch so oft mit

chown -R transmission:transmission /mnt/elements/share/torrent
oder
chmod -R 777 /mnt/elements/share/torrent

bearbeitet werden, ein Puzzle-Teil fehlt noch, wie ein Identitätswechsel zum User transmission zeigt.

su transmission

Problem gelöst, “andere” dürfen auch

Auf /mnt/elements/ darf transmission zwar zugreifen, aber eben nicht auf den darin enthaltenen Ordner share. Eine Anpassung der Berechtigung mittels

chmod -R o+rwx /mnt/elements/share

reicht aus, um sowohl der Gruppe homeusers, als auch anderen (eben auch der Gruppe transmission) Zugriff zu gewähren.

Download von Torrents

Jetzt können Torrents problemlos mittels Webinterface hinzugefügt und heruntergeladen werden.

Screenshot Webinterface Transmission

Werden jetzt Dateien mit der Endung .torrent in das Verzeichnis gelegt, so startet der Download automatisch. Da Transmission 1.8x in der Lage ist, unfertige Torrents in einem gesonderten Verzeichnis abzulegen, können bei Bedarf die Extra options genutzt werden:

-c /mnt/elements/share/torrent/incomplete