Diese Anleitung bezieht sich auf fun_plug’s der Versionen 0.3 und 0.4 Vor einiger Zeit habe ich bereits über die Möglichkeit, über ein so genanntes “fun_plug” das Conceptronic CH3SNAS (Baugleich mit dem D-Link DNS-323) zu erweitern, berichtet. Damals hatte ich einen Webserver über diese Möglichkeit hinzugefügt. Leider muss jedes Mal meine Festplatte anlaufen, wenn eigentlich nur eine Seite angefordert wird und ich nur schnell was ansehen möchte. Resultat ist eine schneller verschleißende Festplatte und eine lange Responsezeit (eben bis die Festplatte angelaufen ist). Ein anderes Problem ist der Lüfter, dessen Script gerne irgendwohin loggen würde. Leider gehen aber die Festplatten nicht aus, wenn der Lüfter läuft (von daher gibts dann wieder nicht viel zu protokollieren :P). Ein Abhilfe für diese Probleme bietet das NAS jedoch von Haus aus. Dank eines USB-Ports auf der Rückseite, der eigentlich für einen Drucker gedacht ist, ist es leicht mit einem USB-Speicher erweiterbar. Natürlich liefert Conceptronic diese Möglichkeit nicht mit, jedoch dank des fun_plug ist auch dieses Problem leicht zu beheben.

Nach der erfolgreichen Installation des fun_plug benötigt man Konsolenzugang zum CH3SNAS um die folgenden Schritte ausführen zu können. Der USB-Stick muss noch nicht eingesteckt werden. Ich rate zu einer Formatierung mit ext2 (dieser Schritt wird später direkt auf dem NAS gemacht), jedoch kann der Stick auch bei FAT(32) betrieben werden. Dabei ist dann jedoch die Rechtevergabe eingeschränkt.

Zunächst wird ein Kernel-Modul für USB-Speicher benötigt. Dieses kann man hier herunterladen. Anschließend wird es in das Hauptverzeichnis der ersten Festplatte gelegt (HD_a2) und nun entsprechend ins lib-Verzeichnis des fun_plug verschoben. Die Variablen werden durch das fun_plug gesetzt. Sollte das unten angegeben fehlschlagen, stimmt etwas mit dem fun_plug nicht:

1
2
mkdir $LIBDIR/usbstorage
mv /mnt/HD_a2/usb-storage.ko $LIBDIR/usbstorage/

Das Modul wird nun mittels

1
$SBINDIR/insmod $LIBDIR/usbstorage/usb-storage.ko

geladen. Für ext2 sollte nun der USB-Stick erstmal formatiert werden. Ich gehe davon aus, dass 2 Festplatten verbaut wurden (daher sdc für den USB-Stick). ACHTUNG: Wird die falsche Festplatte formatiert, werden Ihre Daten verloren sein! Bitte daher doppelt prüfen! Wurde nur eine verbaut oder mehrere USB-Sticks (über einen Hub) angesteckt worden sein, so muss der Laufwerksbuchstabe entsprechend angepasst werden (Eine Festplatte - Erster USB-Stick: /dev/sdb):

1
fdisk /dev/sdc

Mit der Eingabe von “p” kann man sich alle Partitionen auf dem Stick anzeigen lassen. “d” löscht Partitionen und “n” legt neue an (Primary Partition in voller Größe: “n” => “p” => “1” und zweimal dann Enter) Nun muss das Dateisystem erzeugt werden, hier ist der Buchstabe der gleiche wie oben, die Zahl ist die Nummer der Partition:

1
mke2fs /dev/sdc1

Getestet werden kann das ganze nun mit einem Mount-Befehl:

1
2
mkdir /mnt/HD_a2/usbstorage
mount /dev/sdc1 /mnt/HD_a2/usbstorage

Wie prüft man nun, ob das einbinden geklappt hat? Es gibt hier zwei Wege, beide Befehle müssen jedoch in der Kommandozeile ausgeführt werden:

  • cat /proc/partitions
  • mount

Der obenstehende Vorgang kann natürlich automatisiert werden. Der folgende Dateiinhalt (Download) muss als “01usbstorage.sh” ins “start”-Verzeichnis des fun_plugs:

1
2
3
4
#!/bin/sh
$SBINDIR/insmod $LIBDIR/usbstorage/usb-storage.ko
sleep 15
mount /dev/sdc1 /mnt/HD_a2/usbstorage

Da dort keine Schreibrechte bestehen, gilt hier der gleiche Vorgang wie oben: Kopieren über den normalen Filemanagerzugriff (bei mir Samba) in das Hauptverzeichnis, anschließend per:

1
2
mv /mnt/HD_a2/01usbstorage.sh $FUNPLUGDIR/start/
chmod +x $FUNPLUGDIR/start/01usbstorage.sh

verschoben und aktiviert. Zum Test wird das NAS neu gestartet. Nach dem Neustart kann mit den obenstehenden Befehlen geprüft werden, ob der USB-Speicher ordnungsgemäß unter /mnt/HD_a2/usbstorage eingebunden ist. Wenn ja, dann kann man nun den Webserver-Root (Achtung, ich würde PHP mitverlagern) oder das Logverzeichnis der Lüftersteuerung auf den USB-stick auslagern.

Kleiner Hinweis: Wenn es nicht funktioniert, dann folgenden Befehl ausführen: [spoiler]

1
sh $FUNPLUGDIR/start/01usbstorage.sh

Sollte hier die folgende Fehlermeldung erscheinen:

`# sh $FUNPLUGDIR/start/01usbstorage.sh ‘: No such file or directorya2/fun_plug.d/usbstorage/usb-storage.ko BusyBox v1.00-pre1 (2007.05.29-03:34+0000) multi-call binary

Usage: sleep N`

dann wurde die Datei nicht im Unix-Format (also mit Unix-Zeilenumbrüchen) gespeichert. Abhilfe:

1
dos2unix $FUNPLUGDIR/start/01usbstorage.sh

[/spoiler]

Der Erfolg des ganzen ist nun, dass die auf dem USB-Stick abgelegten Daten direkt von einem Flashspeicher gelesen werden und somit ein Einschalten der Festplatten aus deren Ruhemodus unnötig wird. So kann man Beispielsweise einen kleinen Webserver problemlos vom Stick laufen lassen.

Beste Grüße Uli