Festplatten-Bug

Da er leider immer noch aktuell ist,
erstelle ich im Wiki mal eine eigene Seite zum Thema:
Festplatten Bug


Der Festplatten Bug ist ein Fehler im Stromspar-Mechanismus
bei Notebook Festplatten. Er sorgt dafür, das die Festplatte
alle paar Sekunden eine Parkposition anfährt und sofort wieder
aufgeweckt wird. Bei einigen Geräten ist das durch ein deutliches
Klacken hörbar.

Die folge ist, das die Festplatte nicht wirklich in den Stromsparmodus
schaltet, da sie sofort wieder aufgeweckt wird. Das führt aber zu
einem nicht zu unterschätzenden Verschleiss der Festplatte weil die
Anzahl dieser Parkzyklen die eine Festplatte durchführen kann begrenzt ist.

Um sich anzusehen, wie hoch der Wert ist benötigt man die smartmontools,
die man ggf. mittels Aptitude nachinstallieren muss.
Anschliessend bekommt man auf dieser weise den aktuellen wert:
smartctl -A /dev/sdX | grep -E "(Load_Cycle_Count|ID)"

Als erste Gegenmassnahme habe ich bei meinen Netbook und Notebook foldengen
Befehl in die rc.local (/etc/) aufgenommen:
hdparm -B 254 /dev/sda

Damit setzte ich den APM Wert auf 254, was bei allen mir bekannten Platten
die minimale Stromsparfunktion bedeutet.
Der Wert 255 wird nicht immer unterstützt.

Wenn man die Funktion "Bereitschaft" unter Debian nutzt kann es passieren,
das beim aufwachen das System wieder einen anderen Wert hat und so die
Platten wieder alle paar Sekunden in den Stromsparmodus gehen.
Um auch hier Abhilfe zu schaffen, habe ich folgende Datei editiert:
/etc/pm/sleep.d/10_unattended-upgrades-hibernate
und habe hier im unteren Bereich auch diese Zeile eingefügt:
hdparm -B 254 /dev/sda
Damit ist die Festplatte nun auch nach dem Aufwachen aus dem Bereitschaftsmodus ruhig.


Debian 7 Wheezy
Bei Debian 7 hilft es nicht die beschriebenen zwei Dateien zu bearbeiten.
Damit nach einem Aufwachen die Einstellungen noch aktiv sind,
habe ich den Inhalt folgender Datei geleert:

/usr/lib/pm-utils/sleep.d/95hdparm-apm

und hier alle Zeilen entfernt. Anschliessend funktioniert auch wieder
das einschalten der Stromsparfunktion mit hdparm.\ß




Ubuntu 14.04, 14.10, Debian Jessie und der Toshiba Laptop
Auf meinem Tohiba Laptop mit Toshiba Festplatte liess sich
das Problem auch mit dem APM Wert 254 nicht in den Griff bekommen.
Er parkte jede Minute die Platte. Der Wert von 255 sorgte sogar für ein
parken alle 10 Sekunden.
Ich habe die Datei /etc/hdparm.conf bearbeitet und hier die apm
Funktion freigeschatlet.

Als Workaround rufe ich jetzt alle 10 Sekunden die APM Werte von der Platte ab.
Das verhindert die Parkfunktion. Das Script habe ich in die rc.local gehängt.

#!/bin/bash
while :
do
sleep 10
/usr/sbin/smartctl -g apm /dev/sda > /dev/null
done

Den Wert habe ich von 30 auf 10 korrigiert, weil er sonst nach dem Aufwachen
wieder das Problem hatte.

Ubuntu 20.04

Auch die aktuelle Version von Ubuntu 20.04 ist noch vom Festplatten-Bug betroffen. Hintergrund: Moderne Notebook Festplatten (SSD sind nicht betroffen) schicken aufgrund eines Fehlers die Festplatte alle paar Sekunden in eine Schlafposition und wecken sie sofort wieder auf. Für die Lebenserwartung einer Festplatte ist es nicht förderlich da dieser Vorgang nicht beliebig oft durchgeführt werden kann. Ich denke das ich das Thema hier ein letztes mal besprechen muss da nachfolgende Notebooks keine normale HDD mehr haben werden. Allerdings habe ich noch ein ein paar Monate altes Gerät im Einsatz das neben einer kleinen SSD noch eine 1TB HDD verbaut hat und hier musste ich mit den Trick noch anwenden.

Mit dem Smartmontools kann man auf der Shell das Verhalten beobachten. Wenn man folgenden Befehl eingibt bekommt man angezeigt wie oft die Festplatte schon in dem Schlafmodus gewechselt ist:
smartctl -A /dev/sdX | grep -E “(Load_Cycle_Count|ID)”

Zur Behebung des Problems nutze ich ein kleines Shell Script das alle paar Sekunden den Festplattenstatus per APM abfragt. Wenn man das durchführt wechselt die Festplatte nicht in den Schlafmodus. Das Script läuft in einer Endlosschleife und erzeugt nicht viel Last. Damit es beim Start automatisch aufgerufen wird habe ich es in der Datei /etc/rc.local eingetragen. Bei Ubuntu 20.04 ist diese nicht vorhanden sondern muss per Hand angelegt werden. ( Ausführbar machen nicht vergessen mit chmod +x /etc/rc.local )

Die Datei /etc/rc.local sowie /bin/myfix sehen wie folgt aus:

#!/bin/sh -e
/bin/myfix &
exit 0

#!/bin/bash
while:
do
sleep 10
smartctl -g apm /dev/sda > /dev/null


done



This page may have a more recent version on pmwiki.org: PmWiki:Festplatten-Bug, and a talk page: PmWiki:Festplatten-Bug-Talk.