Zusätzliche Festplatte und Spindown

Aus MySlug
Wechseln zu: Navigation, Suche

Ziel ist es, eine große Datenplatte an die Pi zu hängen, die dann im Netz als Datenspeicher/Lieferant dienen soll. Dabei möchte ich natürlich nicht, dass die Platte ständig läuft, sondern sich nach einer gewissen Zeit an Inaktivität abschaltet. Dies macht allerdings auch nur dann Sinn, wenn in dem Bereich nicht ständig auf die Platte zugegriffen werden muss. Deswegen überlegt, ob Ihr den Spindown wirklich benötigt. Manche Festplatten unterstützen diese Funktion auch nicht. Meine Platte soll dann als /home gemountet werden.

Mehr Power auf den USB Ports unter Raspbian

Der Raspi 2 kommt ja jetzt nun mit 4 USB Ports. Wer allerdings eine externe Festplatte daran anschließt wird schnell eines besseren belehrt: Die Platte läuft nicht an. Jetzt kann man natürlich mittels eines stromgestützten USB Hub die Sache in den Griff bekommen, aber wir wollen ja nicht unbedingt noch ein Gerät an den Heimserver stöpseln.
Der Grund dafür ist, dass die Ports mit maximal 600mA belegt sind. Wer mag, kann die Stärke auf 1,2A über einen kleinen Parameter erhöhen. Editiert unter Raspbian deshalb die /boot/config.txt . Ergänzt diese durch den Parameter

max_usb_current=1

Startet danach den Raspi 2 neu. Jetzt sollte die externe Festplatte laufen.

Denkt daran, dass Euer Netzteil entsprechend Leistungsstark sein muss. Ein 5V 1A Gerät genügt hier nicht. Das Netzteil muss zumindest 2A liefern. Ob mehr notwendig ist hängt davon ab, ob Ihr noch mehr am USB betreiben wollt.

Daten sichern und Platte vorbereiten

Bitte auf Eurem Server als root via ssh einloggen und anmelden.

Jetzt lege ich ein neues Backupverzeichnis an:

cd /
mkdir home_save

Dorthin kopiere ich alle meine Heimatverzeichnisse:

cp -ar /home/* /home_save/

Kontrolle, hierbei insbesondere dann auf die Zeitstempel und User / Gruppen achten:

cd /home_save
ls -la

Jetzt kille ich einfach die Dateien in Home:

rm -R /home/*

Auf das leere Verzeichnis mounte ich dann später meine Platte und kopiere meine gesicherten Daten zurück.

Jetzt bereiten wir unsere neue Platte vor. Hierzu wird diese angesteckt und via fdisk-l gecheckt, als was diese erkannt wird. Vermutlich /dev/sda1 . Wenn die Platte neu gekauft ist, dann wird diese bereits mit vfat formatiert sein. Das machen wir natürlich als erstes weg.

fdisk /dev/sda

Danach drücken wir die Taste d um die vorhandene Partition zu löschen. Nun drücken wir n um eine neue Partition anzulegen. Dazu dann p , damit das eine primäre Partition wird. Den Beginn und das Ende der Sektoren übernehmen wir einfach, da wir eine Platte vollständig nutzen wollen. Danach stellen wir das Dateisystem ein. Dazu drückt die Taste t und gebt 83 für Linux ein. Jetzt noch auf w drücken, damit die Änderungen auf die Platte geschrieben werden. Alle alten Dateien auf der Platte sind damit erstmal "weg" (stimmt nicht ganz, aber zumindest so nicht mehr ansprechbar).

Als nächstes legen wir ein ext4 Dateisystem an. Dazu geben wir dann folgenden Befehl ein:

mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0 /dev/sda1

Die Parameter in diesem Befehl bewirken, dass die inode Tabelle bereits beim Erstellen des Dateisystem geschrieben (ausgenullt) wird. Deswegen dauert in unserem Fall das Erstellen der ext4 Partition einwenig länger, dafür muss dies dann nicht später beim ersten Mount im Hintergrund erledigt werden. Das dauert wesentlich länger und verhindert, dass wir in der Zeit mit dem Thema "Spindown" gleich weiter machen können .

Wenn die Platte dann fertig vorbereitet ist, müssen wir noch unsere fstab anpassen und als /home einbinden. Zuerst ermitteln wir die UUID der Festplatte:

blkid /dev/sda1

Ihr bekommt dann einen Zeichenstring geliefert:

/dev/sda1: UUID="XXXX-12345..."

Kopiert den String zwischen den " " in die Zwischenablage und editiert die fstab:

nano /etc/fstab

Dort füge ich dann folgende Zeile gemäß Euren echten Zeichenstring ein:

UUID=XXXX-12345...       /home           ext4    defaults,noatime,commit=60     0      2

Das mountet mir dann meine Platte als /home. Speichern und neu starten.

Daten zurückkopieren und Spindown mit hdparm

Wenn die Pi durchgestartet ist, solltet Ihr nun auf das Verzeichnis /home zugreifen können. Kopiert nun Eure Sicherung zurück:

cp -ar /home_save/* /home

Zuerst sehen wir uns mal den APM Level an, der voreingestellt ist:

root@meinepi:/# hdparm -B /dev/sda
/dev/sda:
 APM_level      = 1

Das sieht gut aus. Solltet Ihr einen Wert gleich oder größer 128 haben, dann stellt Ihn entsprechend herunter:

hdparm -B1 /dev/sda

Danach legen wir noch fest, nach welcher Zeit sich die Platte schlafen legen soll. Soll das nach 5 Sekunden bereits passieren, dann gebt folgenden Befehl ein:

hdparm -S1 /dev/sda

Der Wert 1 steht für 5 Sekunden. D.h. bei 1 Minute (60 Sekunden) wäre es

hdparm -S12 /dev/sda

Bitte beachtet, dass es nicht unbedingt bei allen Platten möglich ist, diese schlafen zu legen. Ich denke mal, dass es bei den meisten neuen externen Platten schon möglich ist, aber meine Hand ins Feuer möchte ich da nicht unbedingt legen.

Das Datei Journaling

Was unter ext4 einem in die Suppe spucken kann ist das Datei Journaling. Dieses ist natürlich wichtig was die Datensicherheit betrifft, denn deswegen wird in kurzen regelmäßigen Abschnitten auf die Platte zugegriffen und das langfristige Einschlafen verhindert. Wem das Herunterfahren der Platte wichtiger ist, muss dann den Tod sterben und das Journaling abstellen.

Um das zu erledigen muss die Platte erstmal ausgehängt werden:

umount /dev/sdax

(für das x bitte Eure korrekte Partitionsnummer eingeben)

Danach stellen wir das Journaling ab:

tune2fs -O ^has_journal /dev/sdax

Prüft die Platte dann nochmal auf Fehler:

fsck /dev/sdax

Danach startet die Kiste einfach neu oder mountet die Platte per Hand wieder. Diese Einstellung ist permanent! Wenn Ihr das Journaling wieder einschalten wollt, dann geht das über ein

tune2fs -O has_journal /dev/sdax