Wiki

Notebook-Festplatten-Bug

Notebook-Festplatten-Bug

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Wiki/Icons/hd.png Wie kurz nach der Veröffentlichung von Ubuntu 7.10 - Gutsy Gibbon bekannt geworden ist, lassen Ubuntu und andere Linux-Distributionen die Schreibköpfe von Notebookfestplatten ungewöhnlich oft in eine Parkposition wechseln, wodurch der Verschleiß der Festplatte erhöht wird und somit die Lebensdauer sinkt. Je nach Festplattenmodell können aber auch Windows-Benutzer davon betroffen sein.

Hintergrund

Wie schon erwähnt, parken aktuelle Notebooks die Schreibköpfe ihrer Festplatten, wenn kein Lese-/Schreib-Zugriff stattfindet und sparen somit Strom für den Batteriebetrieb ein. Die Anzahl dieser Parkvorgänge ist allerdings verschleißbehaftet und somit in ihrer Anzahl begrenzt. Diese maximale Anzahl ist von Hersteller zu Hersteller verschieden und pendelt sich im Regelfall bei 300.000 bis 600.000 Parkvorgängen ein.

Nun obliegt es unter anderem dem Notebookhersteller in den ACPI-Einstellungen des Notebooks entsprechend passende Werte zu verwenden, um die sogenannten Load-Cycle-Counts nicht ins Unermessliche steigen lassen. Wie festgestellt wurde, sind selbige Einstellungen von den Herstellern meist sehr radikal gewählt und die Load-Cycle-Counts entsprechend hoch. Es bietet sich jedoch die Möglichkeit, die ACPI-Einstellungen mit Hilfe des Betriebssystems zu korrigieren, was jedoch wohl im Vertrauen auf die Hersteller nicht automatisch geschieht. Zusätzlich sieht man sich vor dem Problem, Werte zu finden, die für jedes Notebook passend sind.

Rechnet man also vor diesem Hintergrund mit einer Anzahl von 30 Parkvorgängen in der Stunde und einer Laufzeit von 10 Stunden pro Tag, könnte die Festplatte theoretisch bereits nach zweieinhalb Jahren Defekte aufweisen.

Hinweis:

Ein Anfangsverdacht für überhöhte Load-Cycle-Counts findet sich in häufigen Klickgeräuschen durch die Notebook-Festplatte.

Überprüfung

Wenn nicht schon geschehen, muss zunächst das Programm smartctl, welches Statusmeldungen von S.M.A.R.T. auslesen kann, installiert werden.

Folgendes Paket muss installiert [1] werden:

  • smartmontools

Nach der Installation öffnet man ein Terminal [2] und führt folgenden Befehl mit Root-Rechten im Netzbetrieb in Abständen von etwa einer Minute mehrmals hintereinander aus:

sudo smartctl -A /dev/sdX | grep -E "(Load_Cycle_Count|ID)" 

Dieser Befehl produziert bei richtig angegebenem Laufwerk (Buchstabe X) und aktivierter SMART-Funktion eine Ausgabe folgender Form:

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
225 Load_Cycle_Count        0x0032   95    95    000    Old_age   Always       -       32578

Den besten Überblick über die Anzahl der "verbrauchten" Parkvorgänge gibt hier die Spalte VALUE. Der Wert darunter ist bei einer neuen Festplatte meistens gleich 100 und nähert sich dann im Laufe der Lebenszeit dem kritischen Wert 0 (THRESH). Im vorliegenden Beispiel hat die Festplatte also schon 5% ihrer maximal vorgesehenen Parkvorgänge durchgeführt.

In der Spalte RAW_VAUE steht die tatsächliche Anzahl der Parkvorgänge. Im Netzbetrieb darf sich der hier ausgegebene Wert nur sehr langsam erhöhen. So schränken 100 Load-Cycles pro Tag die Lebensdauer einer Festplatte sicher nicht ein. Ist aber eine wesentlich schnellere Änderung feststellbar, die auch mit fallendem VALUE-Wert einhergeht, sollte man entsprechende Maßnahmen ergreifen.

Hinweis:

Es wurde hin und wieder berichtet, dass manche Hersteller eine abweichende Zählweise bei den RAW_VALUEs haben. In diesem Fall sollte man sich an dem "übersetzten" VALUE-Wert orientieren.

Befindet sich der VALUE-Wert bereits nahe dem Grenzbereich, sollte man den Gesundheitszustand der Festplatte mit Hilfe des Schnelltests von smartctl überprüfen.

provisorische Lösungen

Achtung!

Die unten aufgeführten Methoden sind im Grunde nur behelfsmäßig und führen unter Umständen zu einer erhöhten Temperatur der Festplatte. Um eine Überhitzung zu vermeiden, sollte man die Temperatur mittels hddtemp kontrollieren. Man sollte aber auch bedenken, dass Intrepid/Jaunty diese Konfiguration im Netzbetrieb ohnehin aktivieren.

Generell bedient sich derzeit jede bekannte Lösung des Problems dem Kommandozeilenprogramm hdparm, welches diverse Einstellungen von Festplattenparametern ermöglicht. Mit den unten vorgestellten Skripten wird im Netzbetrieb das Parken des Schreibkopfes verhindert. Im Batteriebetrieb wird jedoch weiterhin die stromsparende Standard-Einstellung verwendet. Nach der Anwendung eines der vorgestellten Workarounds sollten sich also die Load-Cycles im Netz- und Batteriebetrieb nicht mehr erhöhen.

Temporäre Einstellung mittels hdparm

So kann man mit Hilfe des folgenden Befehls prüfen, ob ein weniger aggressives Powermanagement Wirkung zeigt, und die Temperatur der Festplatte trotzdem nicht zu stark ansteigt:

sudo hdparm -B 254 /dev/sdX 

Die neue Einstellung ist allerdings nur temporär und nach einem Neustart, werden wieder die ursprünglichen Parameter geladen.

Experten-Info:

Anstelle des Parameters 254 (keine Stromsparfunktionen) kann bei manchen Festplatten auch ein anderer Wert als Kompromiss zu niedrigem Stromverbrauch und hohem Verschleiß (128) gefunden werden. Mehr dazu unter man hdparm.

Dauerhafte Methode ab Karmic Koala

Seit Karmic wird die Funktionalität des Paketes acpi-support durch die Pakete hal, hal-info, und pm-utils nachgebildet.

Die gewünschten Einstellungen für hdparm müssen nur noch in der Datei /etc/hdparm.conf eingestellt werden:

...
# apm setting when on battery
apm_battery = WERT
# -S standby (spindown) timeout for the drive
spindown_time = 0
...

Dauerhafte Methode bis Jaunty Jackalope

Mittlerweile hat Debian einen Patch für Debian Testing bereitgestellt, der in das Paket acpi-support {en} eingepflegt worden ist. Dabei handelt es sich um das gleiche Script, das auch weiter unten für Hardy Heron vorgestellt wird. Allerdings zeigen Berichte, dass dessen Wirkung nach einem Standby oder Ruhezustand aus bleibt. Grund für dieses Verhalten ist, dass seit Hardy Heron das Paket pm-utils {en} für die Schlafmodi verantwortlich ist.

Um dieses Problem zu umgehen, genügt es, die Datei 90-hdparm.sh aus der ACPI-Konfiguration in den entsprechenden Ordner von pm-utils zu übertragen:

sudo install /etc/acpi/resume.d/90-hdparm.sh /etc/pm/sleep.d/ 

Ein weiteres bekanntes Problem ist, dass das Skript nur überprüft, ob der Laptop-Modus unterstützt wird und dieser für das Power-Management der Festplatten verantwortlich sind. Es überprüft nicht, ob er auch aktiviert ist. Standardmäßig ist der Laptop-Modus nur im Batteriebetrieb aktiv und übernimmt daher auch nur da die Energie-Einstellungen. Das Skript wird also nie ausgeführt. Da das Skript zur Umgehung der zu stark steigenden Load-Cycle-Counts ebenfalls Einstellungen im Batteriemodus vornehmen kann, sollte sinnigerweise die Kontrolle des Power-Managements in der Datei /etc/laptop-mode/laptop-mode.conf deaktiviert werden.

Um dies zu bewerkstelligen, öffnet man die Datei /etc/laptop-mode/laptop-mode.conf in einem Editor [3] mit Root-Rechten und setzt den Wert des Parameters CONTROL_HD_POWERMGMT auf 0.

Um die neue Konfiguration des Power-Managements der Festplatten zu übernehmen und einen Neustart zu vermeiden, genügt es das Script mittels Root-Rechten manuell auszuführen:

sudo sh /etc/acpi/ac.d/90-hdparm.sh 

Eventuell muss hier auch der Wert 128 in folgender Zeile geändert werden, da auch dieser bei einigen Laufwerken zu vielen Parkvorgängen (mehreren pro Minute) führt. Bei einigen Laufwerken hat sich der Wert 192 bewährt, bei dem es zu keinen Parkvorgängen mehr kommt: Wählt man den Wert niedriger, so führt dies zum gleichen Verhalten wie mit 128.

...
if [ $STATE = "BATTERY" ] ; then
  hdparm -B 128 $dev
else
...

Dabei muss das Skript in einigen /etc/acpi/ Unterverzeichnissen angepasst werden (ac.d,battery.d,resume.d,start.d).

Dauerhafte Methode bis Hardy Heron

Da der Patch aus den Debian-Repositories es noch nicht in Ubuntu 8.04 "Hardy Heron" geschafft hat, muss er manuell hinzugefügt werden.

Schritt 1: Das Script

Untersucht man [3] das betreffende Debian-Paket acpi-support {en} , entpuppt sich die Datei 90-hdparm.sh als entsprechende Änderung der ACPI-Einstellungen:

#! /bin/sh
#
# This script adjusts hard drive APM settings using hdparm. The hardware
# defaults (usually hdparm -B 128) cause excessive head load/unload cycles
# on many modern hard drives. We therefore set hdparm -B 254 while on AC
# power. On battery we set hdparm -B 128, because the head parking is
# very useful for shock protection.
#

. /usr/share/acpi-support/power-funcs

DO_HDPARM=y
if [ -e /usr/sbin/laptop_mode ] ; then
  LMT_CONTROL_HD_POWERMGMT=$(. /etc/laptop-mode/laptop-mode.conf && echo "$CONTROL_HD_POWERMGMT")
  if [ "$LMT_CONTROL_HD_POWERMGMT" != 0 ] ; then
    # Laptop mode controls hdparm -B settings, we don't.
    DO_HDPARM=n
  fi
fi

if [ $DO_HDPARM = y ] ; then
  # Get the power state into STATE
  getState;

  for dev in /dev/sd? /dev/hd? ; do
    if [ -b $dev ] ; then
      # Check for APM support; discard errors since not all drives
      # support HDIO_GET_IDENTITY (-i).    
      if hdparm -i $dev 2> /dev/null | grep -q 'AdvancedPM=yes' ; then
	if [ $STATE = "BATTERY" ] ; then
	  hdparm -B 128 $dev
	else
	  hdparm -B 254 $dev
	fi
      fi
    fi
  done
fi

Das obige Script prüft, ob sich das Notebook im Batterie- oder Netzbetrieb befindet und ändert die ACPI-Einstellungen entsprechend, falls die laptop-mode-tools nicht schon die Konfiguration übernehmen.

Schritt 2: Das Script einbinden

Um das Script einzubinden, sollte man zunächst den obigen Code-Block unverändert über einen Editor [3] in die Datei ~/90-hdparm.sh abspeichern und folgende Befehle in einem Terminal [2] mit Root-Rechten ausführen:

sudo install ~/90-hdparm.sh /etc/acpi/suspend.d/
sudo install ~/90-hdparm.sh /etc/acpi/resume.d/
sudo install ~/90-hdparm.sh /etc/acpi/start.d/
sudo install ~/90-hdparm.sh /etc/acpi/ac.d/
sudo install ~/90-hdparm.sh /etc/acpi/battery.d/
sudo install ~/90-hdparm.sh /etc/pm/sleep.d/ 

Zu Beachten ist, dass das Skript auch der Konfiguration von pm-utils hinzugefügt wird, damit die Einstellungen beim Aufwachen aus den Schlafmodi nicht wieder zurückgesetzt werden.
Ein weiteres bekanntes Problem ist, dass das Skript nur überprüft, ob der Laptop-Modus unterstützt wird und dieser für das Power-Management der Festplatten verantwortlich sind. Es überprüft nicht, ob er auch aktiviert ist. Standardmäßig ist der Laptop-Modus nur im Batteriebetrieb aktiv und übernimmt daher auch nur da die Energie-Einstellungen. Das Skript wird also nie ausgeführt. Da das Skript zur Umgehung der zu stark steigenden Load-Cycle-Counts ebenfalls Einstellungen im Batteriemodus vornehmen kann, sollte sinnigerweise die Kontrolle des Power-Managements in der Datei /etc/laptop-mode/laptop-mode.conf deaktiviert werden.

Um dies zu bewerkstelligen, öffnet man die Datei /etc/laptop-mode/laptop-mode.conf in einem Editor [3] mit Root-Rechten und setzt den Wert des Parameters CONTROL_HD_POWERMGMT auf 0.

Um die neue Konfiguration des Power-Managements der Festplatten zu übernehmen und einen Neustart zu vermeiden, genügt es das Script mittels Root-Rechten manuell auszuführen:

sudo sh /etc/acpi/ac.d/90-hdparm.sh 

Diese Revision wurde am 18. Dezember 2009 um 09:41 Uhr von pippovic erstellt.
Dieser Seite wurden folgende Begriffe zugeordnet: Hardware

Passwort vergessen?