RASPBIAN USB-Stick / -Festplatte einbinden (inkl. NTFS & StandBy)

Hier gibt's Anleitungen und Themen dazu.
Antworten

Themenstarter
Outi
Administrator
Administrator
Beiträge: 116
Registriert: Fr 13. Feb 2015, 22:24
RasPis: 10+
Kontaktdaten:

RASPBIAN USB-Stick / -Festplatte einbinden (inkl. NTFS & StandBy)

Beitrag von Outi » So 6. Sep 2015, 16:01

History:
13.10.2015 - V01.03 - Hinweis am Ende wegen möglichem Aufhängen der Festplatte erweitert
12.10.2015 - V01.02 - Info zum Raspbian Jessie Image und hdparm hinzugefügt
29.09.2015 - V01.01 - Hinweis am Schluss hinzugefügt bez. StandBy
06.09.2015 - V01.00 - Erste Fertigstellung


Hinweis:
Diese Anleitung/Information erhebt keinen Anspruch auf Vollständigkeit und kann Fehler enthalten und die Benutzung erfolgt auf eigene Gefahr.
Es wird keinerlei Haftung für Schäden und/oder Datenverluste übernommen.

Info:
Diese Anleitung setzt ein fertig konfiguriertes RASPBIAN voraus.


Inhaltsverzeichnis:
(1) USB Gerät einbinden
(2) StandBy für HDD konfigurieren
(3) Alternative (hd-idle statt hdparm)


(1) USB Gerät einbinden

USB-Sticks und -Festplatten werden unter dem Verzeichnis /media eingebunden. Ein Blick in das Verzeichnis zeigt, dass nach einer frischen Installation nichts darin zu finden ist. Es ist also leer.

Wie immer wird zuerst ein Update der Paketliste und deren Pakete durchgeführt:

Code: Alles auswählen

sudo apt-get update && sudo apt-get upgrade
Zuerst wird ein Treiber installiert, der die Dateisysteme NTFS, HFS+ und ExFat unterstützt und die passenden Tools:

Code: Alles auswählen

sudo apt-get -y install ntfs-3g hfsutils hfsprogs exfat-fuse
Als Nächstes wird ein Verzeichnis in /media angelegt, worin sich später die Daten des Sticks oder der Festplatte befinden werden. Dies nennt sich auch Wikipedia Mountpoint.
Den Namen kann man frei wählen, jedoch sollten Umlaute und Sonderzeichen vermieden werden. In diesem Beispiel wird "usb" verwendet:

Code: Alles auswählen

sudo mkdir /media/usb
Dann wird das entsprechende USB Gerät an den Pi angeschlossen
(WICHTIG bei Festplatten oder anderen stärkeren Stromverbrauchern: extra mit Strom versorgen oder über aktiven USB HUB gehen, da das Netzteil des Pi zu schwach sein könnte !! Probleme sind sonst sehr wahrscheinlich.)
und der folgende Befehl ausgeführt:

Code: Alles auswählen

sudo blkid -o list -w /dev/null
Folgende Ausgabe erscheint, sofern das USB Gerät korrekt angeschlossen wurde:

Bild

Die ersten beiden Einträge bezeichnen die beiden Partitionen des hier verwendeten und frisch installierten Raspberry Pis. Die erste Partition ist im Format FAT (vFat) angelegt und beinhaltet den Bootbereich. Dieser ist von Windows aus bearbeitbar (in einem SD-Card-Reader am PC). Die zweite Partition beinhaltet das RASPBIAN System im Linuxformat (ext4) und kann ohne weitere Treiber nur in Linux betrachtet werden und ist für Windows somit unsichtbar.
Der dritte Eintrag zeigt die hier verwendete und unter Windows mit NTFS formatierte 500 GB Festplatte.
Diese wird vom System als /dev/sda1 erkannt. Diese Bezeichnung kann je nach Konfiguration und Gerät anders heißen.

Das Bild zeigt auch die Formatierung in NTFS an und dass die Platte zwar erkannt aber noch nicht eingebunden wurde.
Wichtig ist auch die dahinter zu sehende UUID, die zum Einbinden benötigt wird.

Um das Gerät nun einzubinden, ist folgender Befehl notwendig:

NTFS:

Code: Alles auswählen

sudo mount -t ntfs-3g -o utf8,uid=pi,gid=pi,noatime /dev/sda1 /media/usb
Sollte das Gerät mit ext4 formatiert/verwendet werden, gilt folgender Befehl:

ext4:

Code: Alles auswählen

sudo mount -t ext4 -o defaults /dev/sda1 /media/usb
Andere Formate wie FAT32, HFS+ und exFAT sind ebenfalls möglich.

Wichtig hierbei: Wird ein anderer Benutzer als "pi" verwendet, muss dieser entsprechend im Befehl geändert werden.
Zudem sollte die Laufwerksbezeichnung an die eigenen Gegebenheiten angepasst werden, hier /dev/sda1.

Gibt man nun den Befehl

Code: Alles auswählen

sudo blkid -o list -w /dev/null
erneut ein, steht nun beim "mount point" im Ergebnis statt "(not mountet)" nun der von uns vergebene Pfad /media/usb.

Sind bereits auf dem Gerät Daten vorhanden, kann nun darauf zugegriffen werden. Da die hier verwendete Platte leer ist, wird auch im Verzeichnis /media/usb noch nichts angezeigt. Der Zugriff ist jetzt aber problemlos möglich.

Um das Gerät wieder abzumelden, ist folgender Befehl einzugeben:

Code: Alles auswählen

sudo umount /media/usb
Um das gewünschte Gerät dauerhaft automatisch einzubinden, also auch nach einem Neustart oder Booten, muss die folgende Datei aufgerufen

Code: Alles auswählen

sudo nano /etc/fstab
und folgende Zeile ans Ende hinzugefügt werden:

NTFS:

Code: Alles auswählen

UUID=XXXXXXXXXXXXXXXX /media/usb/ ntfs-3g utf8,uid=pi,gid=pi,noatime 0
(XXXXXXXXXXXXXXXX bitte durch eigene UUID ersetzen)

Das Ergebnis sieht dann so aus:

Bild

Für ext4 sieht der Eintrag so aus:

ext4:

Code: Alles auswählen

UUID=XXXXXXXXXXXXXXXX /media/usb/ ext4 defaults 0
(XXXXXXXXXXXXXXXX bitte durch eigene UUID ersetzen)

Die Auswahl über UUID ist sicherer, da hier genau das Gerät eingebunden wird, was wir auch haben wollen. Andere Bezeichnungen können u.U. Probleme bereiten, wenn die Geräte untereinander nach einem Wechsel die gleiche Bezeichnung haben. Die UUID ist unverwechselbarer.

Das Ganze testen wir nun per Neustart des RasPis:

Code: Alles auswählen

sudo reboot
Erscheint mit obigem blkid Befehl das USB Gerät wieder eingebunden (siehe Mount Point), dann ist alles ok.


(2) StandBy für HDD konfigurieren

Nun ist läuft die Platte in der Regel dauerhaft. Um sie bei Nichtgebrauch in den StandBy Modus zu versetzen muss das Tool hdparm installiert und konfiguriert werden.

Info:
Unter Raspbian Jessie (org. Image von raspberrypi.org) ist eine Installation von hdparm nicht erforderlich, da dies bereits vorhanden und aktiviert ist. Daher kann in dem Fall der nächste Befehl übersprungen werden.

Code: Alles auswählen

sudo apt-get -y install hdparm
Um zu testen, ob die Platte sich in den StandBy Modus versetzen lässt, wird folgender Befehl eingegeben:

Code: Alles auswählen

sudo hdparm -C /dev/sda
Erscheint der Status "unknown", wird der StandBy Modus nicht unterstützt (bei USB Platten auch vom Gehäuse abhängig).

Der folgende Befehl versetzt die Platte in den StandBy Modus. Sie sollte aufhören sich zu drehen:

Code: Alles auswählen

sudo hdparm -y /dev/sda
Das Aufwecken geschieht automatisch - wie gewünscht - durch Zugriff auf die Platte.

Sollte bei beiden Befehlen oben die folgende Meldung erscheinen

Code: Alles auswählen

/dev/sda:
SG_IO: bad/missing sense data, sb[]:  70 00 05 00 00 00 00 0a 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 drive state is:  standby
dann gibt es scheinbar Probleme mit dem USB Gehäuse. Dieses Phänomen habe ich bei einem alten SATA1/USB2.0 Gehäuse festgestellt, während mit einem SATA2/USB3.0 Gehäuse alles einwandfrei lief.
Hierbei kann man den Befehl hdparm leider nicht verwenden, sondern muss sich nach einer Alternative umschauen.

Läuft hingegen jedoch alles glatt und kommen keine Fehler, wird hdparm mit der gewünschten Ausschaltzeit konfiguriert.
Dazu wird die Datei /etc/hdparm.conf geöffnet:

Code: Alles auswählen

sudo nano /etc/hdparm.conf
Dort wird folgender Inhalt an das Ende der Datei gesetzt:

Code: Alles auswählen

/dev/disk/by-uuid/XXXXXXXXXXXXXXXX {
        spindown_time = 120
}
(XXXXXXXXXXXXXXXX bitte durch eigene UUID ersetzen)

Dabei gelten folgende Werte bei der spindown_time:

Code: Alles auswählen

0 = StandBy deaktiviert
60 = 5 Min. (60 * 5 Sek. = 300 Sek. = 5 Min.)
240 = 20 Min. (240 * 5 Sek. = 1200 Sek. = 20 Min.)

Ab 240 ändert sich die Berechnung folgendermaßen:

241 = 30 Min. (1 * 30 Min.)
242 = 60 Min. (2 * 30 Min.)
Um das Ganze zu aktivieren, wird ein Neustart durchgeführt und ab dann geht die Festplatte in den StandBy, wenn alles korrekt konfiguriert wurde.

Code: Alles auswählen

sudo reboot
Einige Stimmen im Internet berichten, dass bei neueren Versionen von hdparm die StandBy Konfiguration nicht übernommen wird. D.h., dass z.B. nach einem Neustart des RasPis der StandBy nicht mehr funktioniert.
Hier kann man ebenfalls nachfolgende Alternative probieren.


(3) Alternative (hd-idle statt hdparm)

Wer mit der hdparm Methode Probleme hat, kann es mit hd-idle versuchen.

Hierzu laden wir die aktuelle Version von Externer Link hier herunter:
(Version bei Erstellung dieser Anleitung: 1.04)

Code: Alles auswählen

sudo wget http://downloads.sourceforge.net/project/hd-idle/hd-idle-1.04.tgz
Das Ganze wird entpackt:

Code: Alles auswählen

sudo tar xvfz hd-idle*.tgz
Und ein nötiges Paket nachinstalliert:

Code: Alles auswählen

sudo apt-get install debhelper
Nun wird in das entpackte Verzeichnis gewechselt (hier im home Verzeichnis von pi):

Code: Alles auswählen

cd ~/hd-idle
Das Paket erstellen:

Code: Alles auswählen

sudo dpkg-buildpackage -rfakeroot
Ein Verzeichnis zurück springen:

Code: Alles auswählen

cd ..
Und das eben erstellte Paket installieren:

Code: Alles auswählen

sudo dpkg -i hd-idle_*.deb
hd-idle starten:

Code: Alles auswählen

sudo service hd-idle start
Oder stoppen:

Code: Alles auswählen

sudo service hd-idle stop
Um hd-idle automatisch beim Hochfahren zu starten, ist folgender Befehl auszuführen:

Code: Alles auswählen

sudo update-rc.d hd-idle defaults
Nun wird die Konfigurationsdatei bearbeitet:

Code: Alles auswählen

sudo nano /etc/default/hd-idle
Darin fügen wir die folgende Zeile ein, um hd-idle zu aktivieren:

Code: Alles auswählen

START_HD_IDLE=true
Nun werden die Optionen eingetragen. Die vorgegebene Zeile wird als Beispiel stehen gelassen und die neuen Optionen ans Ende der Datei gestellt.

Code: Alles auswählen

HD_IDLE_OPTS="-i 0 -a /dev/disk/by-uuid/XXXXXXXXXXXXXXXX -i 600 -l /var/log/hd-idle.log"
Dabei werden bei "-i 0" das Standby bei allen Platten deaktiviert, um nicht auch Platten in den StandBy zu schicken, die nicht gewünscht sind. Danach folgt mit der Option "-a" die gewünschte Platte. Die XX.. sind wieder mit der passenden UUID zu ersetzen. Nun folgt mit der zweiten "-i" Option ("-i 600") der StandBy bei der gewünschten Platte auf 10 Minuten. Die Option "-l" stellt das Logverzeichnis ein.

Hinweis:
Wenn beide obige Versionen zum Aktivieren des StandBys nicht funktionieren, sollte man sich u.U. ein anderes Gehäuse mit einem anderen Contoller zulegen. Ich habe mir ein billiges USB 3 Gehäuse besorgt, welches einen extra Stromanschluss hat, um den Pi nicht zu überlasten. USB 3 ist zwar nicht nutzbar aber die Chance ist hoch, dass StandBy unter Raspbian & Co. funktioniert (jedoch wie immer ohne Gewähr).

Sollte es vorkommen, dass sich die Platte unter hdparm aufhängen und jeglicher Zugriff darauf das System blockieren, kann das Trennen der Platte vom RasPi u.U. das System evtl. wieder freigeben. Sollte das noch möglich sein und man rebootet das System, kommt es beim Booten vor, dass man sich nicht mehr per SSH einloggen kann. Daher, falls möglich, VOR dem Reboot zuerst den Eintrag in /etc/fstab und in der hdparm Konfiguration wieder entfernen oder falls nicht mehr möglich und bereits neu gebootet wurde, einen Monitor und Tastatur anschließen und nach einer Pause von 1:30 Min. (Jessie) dann den Eintrag herausnehmen. Nun sollte das System nach einem Reboot wieder normal per SSH ansprechbar sein.
Jetzt kann nach der Ursache gesucht oder die Platte oder das Gehäuse zum Test ausgetauscht werden, da hier offensichtlich was nicht passt.
Ein PoR (Power on Reset / Stromverbindung kurzzeitig unterbrechen) sollte vermieden werden, da dies ohne Herunterzufahren zu Beschädigungen führen kann. Daher einen PoR nur durchführen, wenn nichts anderes mehr hilft.



Fortsetzungen, Korrekturen, Änderungen möglich ....

Copyright © 2017 by RasPiFun.de
;) Gruß Outi :D

Antworten