USB Festplatten

Für viele Projekte ist die Entscheidung zu einem Raspberry Pi der sehr geringe Stromverbrauch die Basis. Oftmals braucht man aber Festplatten, um die gewünschten Daten vorzuhalten. Verfolgt man den Stromspargedanken, bieten sich also 2,5″ Festplatten ohne eigenes Netzteil an. Aber wie kommt man zu einem sehr geringen Stromverbrauch bei gleichzeitiger komfortablen Festplattennutzung?

Bei der Installation und Inbetriebnahme meines ersten Pi-Serversystems habe ich mich für den Einsatz von zwei 2,5″ USB-Festplatten als Speichermedium entschieden. Eine Festplattte enthält dabei meine Datenbestände und die zweite dient als Sicherungsmedium, auf das ich jede Nacht einen Datenabgleich per „rsync“ laufen lasse.

Da der Einsatz eines Raspberry Pi als Server natürlich auch durch den geringen Stromverbrauch anbietet diesen rund um die Uhr laufen zu lassen, wollte ich natürlich sicher stellen, dass die USB-Festplatten nach einer gewissen Leerlaufzeit in den Ruhemodus gehen, also aufhören zu drehen. Im Normalfall werden die USB-Festplatten mittels des Befehls „mount“ eingebunden. Allerdings gibt es Festplatten, und dazu gehört z.B. auch meine Toshiba Stor.E Basics 1 TB USB 3.0, die dann nicht mehr in den eigentlich eingebauten Sleepmodus gehen. Das bedeutet, sie laufen endlos weiter und verbrauchen unnütz Strom.

Wichtiger Hinweis: Ich habe nach rund zwei Wochen die Toshiba Stor.E Basics gegen eine zweite WD Elements SE Festplatte ersetzt. Es zeigte sich, dass der USB-Controller der Toshiba Festplatte den USB-Bus nach spätestens fünf Tagen zurücksetzte, und damit nicht nur die Verbindung zu allen USB-Geräten, sondern auch zum Netzwerkinterface verloren ging. Dieses konnte dann nur durch einen Reboot behoben werden. Diesen Fehler konnte ich bei zwei weiteren Raspberry Pi nachstellen! Also ist die Toshiba Festplatte nicht für den Pi geeignet.

Zum einfachen Einbinden von Festplatten nutze ich das Tool „udisks„. Ich habe dann in die Datei /etc/rc.local  (diese Datei wird bei jedem Bootvorgang automatisch ausgeführt) folgende Zeile eingefügt:

udisks --mount /dev/sda1

Mit dieser Zeile wird die erste Partition der ersten angeschlossenen USB-Festplatte automatisch gemountet. Die Festplatte wird dann in das Verzeichnis /media gemountet und besitzt dort dann den Eintrag der so lautet, wie die Partitionsbezeichnung auf der Festplatte. Hat die Partition keinen Namen, lautet der Eintrag so, wie die Laufwerks-ID, die beim Formatieren immer automatisch vergeben wird.

Nun wollen wir aber auch, dass die Festplatten nach einer gewünschten Zeit in den Sleepmodus gehen, also aufhören zu drehen. Das funktioniert einfach und zuverlässig mit dem Tool „hd-idle„. Dieses muss jeodch zunächst installiert werden. Das funktioniert mit den folgenden Befehlen:

sudo apt-get install libc6-dev:armhf dpkg-dev debhelper
cd /tmp
wget http://sourceforge.net/projects/hd-idle/files/latest/download?source=files
mv download hd-idle.tgz
tar -xzvf hd-idle.tgz
cd hd-idle
sudo dpkg-buildpackage -rfakeroot
cd ..
sudo dpkg -i hd_idle_1.04_armhf.deb

Zuerst werden eine Library sowie das Tool zu Erstellen von Installationspaketen (.deb) installiert. Dann gehen wir  in das tmp-Verzeichnis und laden die Quellen des hd-idle-Tools herunter. Die Datei wird von „download“ in „hd-idle.tgz“ umbenannt und mit dem tar-Befehl entpackt. Anschließend erstellen wir mit dem dpkg-buildpackage Befehl das Installationspaket und instellieren dieses im Anschluß dann.

Zum Aktivieren können wir einfach in die Datei /etc/rc.local zusätzlich die folgende Zeile hinzufügen:

hd-idle -i 1200

Mit diesem Befehl wird bei jedem Bootvorgang eingestellt, dass nach 1200 Sekunden, also 20 Minuten jede inaktive Festplatte in den Sleepmodus gesetzt wird. Man könnte mit der Angabe des Device-Namen dieses auch auf bestimmte Festplatten anwenden. Allerdings ist bei USB-Festplatten die Reihenfolge der Anbindung und damit der Device-Name nicht immer der gleiche, sobald mehr als nur eine Festplatte angeschlossen sind. Ein Beispiel für die Festplatte SDA (also die erste erkannte Festplatte am System) würde dann so aussehen:

hd-idle -a sda -i 1200

Soll z.B. SDA nach 1200 Sekunden und SDB nach 900 Sekunden in den Sleepmodus gehen kann das wie folgt in einer Zeile zusammengefasst werden:

hd-idle -a sda -i 1200 -a sdb -i 900

Ich habe meinen Fileserver mit den hier genannten Einstellungen nun schon viele Wochen erfolgreich und ohne Reboots am Laufen.

 

2 Kommentare

  1. Hallo, wollte fragen, ob du die WD Elements SE auch direkt am Raspberry Pi ohne zwischengeschaltenen aktiven USB-Hub betreiben konntest? Oder die Toshiba Stor.E Basics? Ist deiner Meinung nach ein Aktiver USB-Hub unbedingt nötig, wenn der Raspberry Pi mit 1 oder 2 Festplatten als NAS arbeiten soll (headless, also ohne weitere angeschlossene Komponenten außer Ethernet)?

    Danke im Voraus,
    Lukas

    • Hallo Lukas,

      bei mir funktionierte die Festplatte nur sehr unzuverlässig (vor allem beim Spinup), wenn ich sie direkt am Pi angeschlossen habe. Wenn der Pi mehr oder weniger im Leerlauf war, ging das gut. Mit dem aktiven USB-Hub funktionierte alles sofort ohne Probleme. Ich betreibe derzeit auch zwei 2.5″ USB-Festplatten und den Pi selber an einem Hub. Dadurch ist die ausreichende Stromversorgung gesichert!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax