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.
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.
Ein Anfangsverdacht für überhöhte Load-Cycle-Counts findet sich in häufigen Klickgeräuschen durch die Notebook-Festplatte.
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.
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.
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.
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.
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.
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 ...
Mittlerweile hat Debian einen Patch für Debian Testing bereitgestellt, der in das Paket acpi-support
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
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).
Da der Patch aus den Debian-Repositories es noch nicht in Ubuntu 8.04 "Hardy Heron" geschafft hat, muss er manuell hinzugefügt werden.
Untersucht man [3] das betreffende Debian-Paket acpi-support
, 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
fiDas 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.
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
Ergänzung zur pm-utils-Methode bezüglich Standby und Ruhezustand 
Blogeintrag eines Ubuntu-Entwicklers
- nicht mehr auf dem neuesten Stand
Ikhaya-Beitrag zum Thema
- nicht mehr auf dem neuesten Stand
Diese Revision wurde am 18. Dezember 2009 um 09:41 Uhr
von pippovic erstellt.
Dieser Seite wurden folgende Begriffe zugeordnet:
Hardware
2004 – 2010 ubuntuusers.de • Einige Rechte vorbehalten