USB-Festplatte unter Raspian formatieren und einbinden

Last Updated on: 4th Mai 2020, 01:55 pm

Daten auf einem Raspberry PI vorzuhalten ist in der Grundkonfiguration nur auf der eingesteckten SD-Karte möglich. Damit das nicht so bleibt und man ggf auch größere Datenmengen speichern kann, bietet es sich an, eine externe Festplatte an den Raspberry anzuschließen. Wer dafür einen bestimmten Mountpunkt nutzen möchte, muss entsprechend die Festplatte mit dem System vertraut machen und die Platte schon beim Booten mounten lassen. Diese Artikel beschreibt wie das zuverlässig gelingen kann. Hardware ist hier ein Raspberry Pi 3 b+ mit einer 3,5″ USB3 Festplatte.

Stromversorgung

Ganz wichtig sei an dieser Stelle noch der Hinweis: Der Raspberry PI kann für die meisten 2,5″ USB-Festplatten ohne eigene Stromversorgung nicht genügend Strom am USB-Ausgang zur Verfügung stellen, damit diese zuverlässig betrieben werden können. Der Grund dafür ist recht simpel: Beim Anlaufen benötigen die Festplatten ein Vielfaches des Stroms, den sie beim normalen Lesen oder Schreiben benötigen. 1A Anlaufstrom ist dabei keine Seltenheit. Wenn der Pi nun selbst noch Aufgaben mit Rechenleistung zu erbringen hat, zieht er impulshaft ebenfalls mehr Strom. Der Gesamtstrombedarf des Systems ist in diesem Lastmoment dann so hoch, dass ein stabiles Laufen kaum zuverlässig möglich ist. Noch schwieriger wird es, wenn für den Betrieb des Raspberrys ein Ladenetzteil für Mobiltelefone eingesetzt wird. Die Netzteile können zwar einen konstanten Strom liefern, sind aber nicht für Impulslasten hinreichend ausgelegt. Dazu reichen die Kapazitäten der Glättungskondensatoren wie auch die Spannungsregler in den Netzteilen meist nicht aus. Dh. hier kann gleich zum zweiten Mal ein Problem beim Betrieb des Raspberrys mit einer Festplatte entstehen, weil die Versorgungsspannung am Pi zusammenbricht und dieser dann im sog. „verbotenen Bereich“ der Logikpegel arbeitet.

Wenn der Raspberry nicht genug Strom im Anlaufmoment der Festplatte hat oder die Festplatte beim Schreiben schlicht zu viel Strom zieht, kann diese ggf nicht erfolgreich gemountet werden. Entsprechend kann es zu schwer nachvollziehbaren Fehlern kommen oder die Platte sogar einen Datenverlust erleiden. Es sollten also ausschließlich USB-festplatten mit eigener Stromversorgung am Pi betrieben werden. Das Netzteil des PI sollte einen Strom von 2,5 A liefern können.

Festplatte identifizieren und mounten

Meine Annahme in dem folgenden Artikel ist, dass der Raspberry mit Raspian aufgesetzt wurde und die Festplatte schon eingestöpselt worden ist.

Um zu prüfen, ob die Festplatte überhaupt schon erkannt wurde, einfach mal lsblk aufrufen:

 $ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931,5G 0 disk
└─sda1 8:1 0 931,5G 0 part
mmcblk0 179:0 0 14,9G 0 disk
├─mmcblk0p1 179:1 0 256M 0 part /boot
└─mmcblk0p2 179:2 0 14,7G 0 part /

Wie man sieht, hat mein Raspberry hier bereits zwei Laufwerke (devices) erkannt (sda und mmcblk0) und insgesamt drei Partitionen gemountet (sda1, mmcblk0p1, mmcblk0p2). mmcblk0 ist dabei die SD-Karte, auf der sich das Betriebssystem befindet. sda ist die externe Festplatte, die ich per USB angeschlossen habe, mit der Partition sda1 . Die Partition ist so groß wie die gesamte Festplatte, weshalb keine weiteren Partitionen angelegt werden können, ohne die Platte neu partitionieren zu müssen. Das ist in diesem Fall auch so gewünscht.

Wer seine Festplatte nicht findet, sollte die Stromzufuhr prüfen (siehe oben) oder tiefer in die Analyse einsteigen und mal schauen, ob die Hardware grundsätzlich erkannt wurde. Manchmal kommen externe Festplatten mit Chipsätzen in der USB-Schnittstelle, die ggf Probleme bereiten. Weitere Methoden zum „Auffinden“ der Festplatte und ggf auch zum neu Partitionieren derselben, werden beispielsweise bei znil.net beschrieben. Es kann auch sein, dass die externe Festplatte schlicht zu viel Strom zieht und das Netzteil bzw der Raspberry diesen nicht bereitstellen kann. Wenn beim Raspberry die Lichter ausgehen, wenn die Platte angeschlossen wird, dann ist ganz sicher de Strombedarf der Platte zu groß. Es empfiehlt sich dann eine Platte mit weniger Strombedarf zu verwenden oder eine Festplatte mit eigenem Netzteil. Auch sollte man das Netzteil vom Raspberry mal prüfen, denn 2,5 A sollte es bereitstellen können…

Um die Festplatte nun beim booten direkt am gewünschten Mountpoint einzuhängen, muss man zunächst den Mountpoint anlegen und dann einen entsprechenden Eintrag in der Datei /etc/fstab vornehmen. Der Mountpoint ist ein einfaches Verzeichnis, bei mir /var/mail (die Festplatte soll meine Emails speichern). Für den Eintrag in die fstab benötige ich aber noch die eindeutige LaufwerksID mit der die Festplatte eindeutig erkannt werden kann. Diese wie folgt ermitteln:

blkid
/dev/mmcblk0p1: LABEL_FATBOOT="boot" LABEL="boot" UUID="B6BB-0F0E" TYPE="vfat" PARTUUID="1772f033-01"
/dev/mmcblk0p2: LABEL="rootfs" UUID="638417fb-7220-47b1-883c-e6fee02f51ac" TYPE="ext4" PARTUUID="1772f033-02"
/dev/sda1: LABEL="Backup" UUID="F00CC33B0CC2FC1A" TYPE="ntfs" PTTYPE="atari" PARTUUID="758be1e0-01"

Mit blkid lässt sich nicht nur die UUID ermitteln, sondern auch wie die Partition formatiert ist. Hier ist das Windows Filesystem ntfs benutzt worden, was unter Linux nicht besonders gut zu handhaben ist und auch nicht die erforderlichen Userberechtigungen sauber darstellen kann. Ich habe mich aus verschiedenen Gründen für den Einsatz von ext4 als Dateisystem entschieden und werde die Festplatte nun entsprechend umformatieren.

Als Superuser dazu den Befehl zum Formatieren geben und nach der Passworteingabe sollte etwa ein solches Ergebnis stehen:

sudo mkfs.ext4 /dev/sda1

mke2fs 1.44.5 (15-Dec-2018)
/dev/sda1 contains a ntfs file system labelled 'Backup'
Proceed anyway? (y,N) y
Creating filesystem with 244189952 4k blocks and 61054976 inodes
Filesystem UUID: 7bee7549-7efc-4c67-b1bb-69ffb900f3e4
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
        102400000, 214990848

Allocating group tables: done
Writing inode tables: done
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done

Wer gut aufgepasst hat stellt fest, dass sich die UUID nun geändert hat (siehe oben). Die neue UUID wird nun entsprechend in die /etc/fstab eingetragen:

sudo nano /etc/fstab

#mount disk for mail storage
UUID="7bee7549-7efc-4c67-b1bb-69ffb900f3e4"     /var/mail       ext4    defaults,noatime        0       2

Jetzt die fstab neu einlesen oder den Raspberry neu starten und schauen, ob die Festplatte korrekt eingebunden wurde:

sudo mount -a

oder direkt ein Systemneustart:

sudo reboot

und nach dem Neustart:

df -h
Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf
/dev/root 15G 1,2G 13G 9% /
devtmpfs 213M 0 213M 0% /dev
tmpfs 217M 0 217M 0% /dev/shm
tmpfs 217M 3,1M 214M 2% /run
tmpfs 5,0M 4,0K 5,0M 1% /run/lock
tmpfs 217M 0 217M 0% /sys/fs/cgroup
/dev/mmcblk0p1 253M 40M 214M 16% /boot
/dev/sda1 916G 77M 870G 1% /var/mail
tmpfs 44M 0 44M 0% /run/user/1001

Wie man sieht, wurde /dev/sda1 wie erwartet auf /var/mail gemountet. Nun können etwaige Mailboxen der User dort angelegt werden und haben reichlich Platz für Emails. Wer die Emails noch mittels Backup sichern möchte, kann beispielsweise noch einen zweiten Mountpoint anlegen und mittels zweiter Festplatte die daten regelmäßig von einer Platte auf die andere sichern. Das beide Festplatten gleichzeitig kaputt gehen, ist eher unwahrscheinlich und eine solche „Backuplösung“ ist zumindest besser, als gar keine….

Exkurs: Syntax der /etc/fstab mit weiterführenden Links

Jede Partition (nicht das ganze device!) wird in einer eigenen Zeile eingetragen. Eine Zeile besteht aus sechs Spalten, mit folgender Bedeutung:

/etc/fstab
Spalte Beschreibung
<file system> Enthält die Beschreibung des eingehängten Geräts, also z.B. Festplatten-Partitionen wie /dev/sda1, ein CD-Lesegerät /dev/cdrom.
<mount point> Hier wird der Einhängepunkt („Mountpunkt“) festgelegt, d.h. der Ordner, in den die Partition eingehängt werden soll. Die Angabe „none“ wird verwendet, wenn die Partition keinen Einhängpunkt unter / besitzt. Beispiel: Swap
<type> Enthält die Art des Dateisystems, gemäß dem mount-Parameter -t.
<option> Enthält alle verwendeten Optionen, gemäß dem mount-Parameter -o. Unter Linux verbreitet ist die Option „defaults„, die den Optionen „rw,suid,dev,exec,auto,nouser,async“ entspricht.
<dump> Wenn man das Backup-Programm dump einsetzt, wird hier festgelegt ob die Partition gesichert wird. Voreinstellung ist „0“ = keine Sicherung.
<pass> Gibt an, ob und in welcher Reihenfolge die Partition beim Systemstart in die regelmäßigen Dateisystemprüfungen einbezogen wird. Meist ist hier für die Root-Partition (die Wurzel des Dateisystems, /) „1“ eingetragen, für alle anderen Partitionen „2“ (danach prüfen) oder „0“ (keine Überprüfung) z.B. für Windows-Dateisysteme.

Quelle: https://wiki.ubuntuusers.de/fstab/