hdparm ist ein Kommando, um diverse EIDE-/ATAPI-Parameter abzufragen und einzustellen.

Neben einigen eher harmlosen Verwendungsmöglichkeiten unterstützt es auch Einstellungen und Anwendungen, in denen unter Umständen Systemcrashes, Datenverlust und sogar Schäden an der Hardware auftreten können - also Vorsicht!

Download: http://www.ibiblio.org/pub/Linux/system/hardware/

DMA-Modus abfragen/einschalten

Abfragen: hdparm -d /dev/hda

Einschalten: hdparm -d1 /dev/hda

Am Besten probiert man das zunächst auf einem nur lesbargemounteten Laufwerk. Einige, v.a. ältere Controller-Chips in Notebooks unterstützen kein DMA, so dass das System abstürzt. Wenn die Platte dann nur lesbar gemountet war, können wenigstens keine Dateisysteme beschädigt werden.

weitergehendes Tuning

Ein an die Hardware angepasstes Tuning lohnt sich oft, weil man enorme Geschwindigkeitsvorteile haben kann. Weil dabei jedoch auch Daten verloren gehen können, ist äußerste Vorsicht geboten (siehe Man-Page zu hdparm). Immer erstmal mit einer Testpartion und einem getrenntem Notlinux-System (z.B. Knoppix) testen.

Messen der Geschwindigkeit:

hdparm -Tt /dev/hda

Beispiel1: dma=on, 32 Bit Data mit sync, DMA-66, halte-features-nach-reset, 16 Multisektor, hda

hdparm -d1 -c3 -X66 -k1 -m16 /dev/hda

Danach dann nochmal messen.

EIDE-Hotswap

EIDE ist nicht für Hotswap entworfen worden, daher ist es gefährlich, besonders ohne geeignete Hotswap-Rahmen, dies zu tun.

Im schlimmsten Fall kann Hardware beschädigt werden (Platten-Interface und/oder EIDE-Controller).

/!\ SIE TUN DIES AUF EIGENE GEFAHR!

Voraussetzungen:

# alle hdc-Partitionen im Kernel deregistrieren
hdparm -U /dev/hdc
# Platte hdc raus, neue Platte hdc rein
hdparm -R /dev/hdc
# alle hdc-Partitionen im Kernel registieren

Mit den kommenden Kernels (ab 2.4.20ac) kann man auch die IDE-Module entladen, das dürfte die Sache noch sicherer machen.

Andere Methode siehe http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=113693

:Funktioniert bei mir nicht. Mit hdparm 5.5 und kernel 2.4.33. Erstens mal rotzt hdparm mir bei "hdparm -U /dev/hdc" die Hilfeseite entgegen, es muss "hdparm -U nummer /dev/hdc" heissen, wobei mir nicht klar ist, wofür nummer steht. (Bzw. -R) Es könnte sich um die Nummer des IDE-Interfaces (1) handeln, oder um sonstwas. Dann gibt es kryptische Meldungen, aber es scheint keinen Effekt zu geben. Beim Einstecken einer anderen Harddisk (NICHT MACHEN! vorher mit -Y stillegen) kann man mit hdparm -I und ide-smart drauf zugreifen, aber die Geometrie ist die alte. So WIRD DAS NICHTS. Empfehle Funktionen nicht zu verwenden, zu hohes Risiko.

Spindown, notfalls mit Gewalt

Vorwort und Beispiel

Vorweg nicht alle Harddisk reagieren gleich. Normal sollte hdparm -S <value> /dev/sd(x) die Harddisk nach einer gewissen Zeit parkieren. Es gibt aber auch Harddisk die man nur mit hdparm -B <value> /dev/sd(x) zum schlafen bewegen kann. Dabei ist mir aufgefallen das es nach ca. 30sek bei meiner SAMSUNG HD103SI passiert (hdparm -B 127). Das ist mir etwas zuviel Pakiererei, da gehen die Leseköpfe auch mal kaputt. Und hdparm -S hatte gar keinen Einfluss mehr. Einige sind erst fähig wenn man hdparm -B127 (vermutlich nützt dann -S nichts mehr) oder -B255 (apm = 255, setzt apm off) zuvor setzt. Orginal war der Wet -B 254 drin, was mir ein hdparm -y direktes spindown gar nicht ermöglichte.

Diese SAMSUNG HD103SI musste dann so eingestellt werden in /etc/hdparm.conf

/dev/sdc {
        apm = 255
        spindown_time = 240
}

Zuerst apm =255, damit spindown_time benutzbar wird. Dann spindown_time = 240 (20min). Würde man ein apm = 127 setzen würde diese Harddisk ca. alle 30 Sekunden schlafen gehen und spindown_time wäre überflüssig.

Info: Normal sind die -B und -S flüchtige Werte, die nach einem Reboot erloschen sind. Dauerhaft müsste man Sie in die hpdarm.conf schreiben.

hdparm -B <value> /dev/sd(x)

hdparm -B 127 , bis zu diesem Wert wird APM eingeschaltet mit Spindown, bis -B 254 APM ohne Spindown, -B 255 schaltet APM aus. Die Manpage gibt noch mehr Auskünfte über die Werte. Es kann sein, das gewisse Harddisk zuerst ein -B 255 (apm = 255, setzt apm off) brauchen, damit -S erst Sinn ergibt. Das ist in der hdparm.conf als apm = Wert Funktion. Und -B 1 bis 127 sind inklusive spindown, also kein -S nötig mehr, so habe ich das verstanden. Aber die Firmware der Harddisks variieren da sehr.

hdparm -S <value> /dev/sd(x)

Ein Wert 0 schaltet die Funktion aus. Ein Wert von 1-240 werdem mal 5 Sekunden gerechnet. Werte von 241-251 mal 30 Minuten. Die Manpage gibt noch mehr Auskünfte über die Werte. Das ist in der hdparm.conf als spindown_time = Wert Funktion.

Austesten

Man sollte zuerst etwas von Hand die Harddisk austesten. Als root oder mit sudo zuvorgestellt. Ist jetzt sicher die allerwelts Checkliste!! Bitte verbessern ;)

1. hdparm -B /dev/sd(x) kann sie APM und wenn welcher Wert steht drin? (vielleicht sich kurz notieren)

Falls Sie hier eine Rückmeldung haben wie APM_level = not supported , kann es sein, das ein spindown_time (-S) gar nichts bewirken wird. Es wird vermutlich gar nicht einstellbar sein über spindown_time. Aber kuntschaften Sie die Harddisk weiter aus.

2. hdparm -y /dev/sd(x) geht Sie mit direktem Befehl schlafen?

3. hdparm -C /dev/sd(x) steht da standby? Dann ist es ok.

3.1 Wenn Sie manuelle parkiert hat, könnten Sie diese Harddisk schon mit dem unteren disk_spindown.sh benützen. Aber es wäre wünschenwerter nur die /etc/hdparm.conf zu benützen ohne den Script. Sie können ja um sicher zu gehen, die Harddisk nochmals wecken mit einem DateiExplorer nochmals irgendeine Datei berühren die auf dieser Harddisk liegt, (hdparm -C /dev/sd(x) steht da active/idle?) und nochmals bei Punkt 2 durchgehen. Um Sicherheit zu erhalten.

4. Wecken Sie die Harddisk nochmals wie in Punkt 3.1 beschrieben.

5. hdparm -C /dev/sd(x) steht da active/idle? Sehr gut

6. hdparm -S 36 /dev/sd(x) geht Sie nach 3 bis 4 Minuten parkieren?

7. hdparm -C /dev/sd(x) steht da jetzt standby?

7.1 Wenn ja, dann kann die Harddisk ohne weiteres mit nur spindown_time konfiguriert werden. Falls Sie von Punkt 8 her gekommen sind, benötigen zuvor ein apm off befehl.

8. Wenn nicht, probieren Sie mal das APM auszuschalten. hdparm -B 255 /dev/sd(x) , steht da jetzt APM_level = off ? Sehr gut. Versuchen Sie nochmals Punkt 5 bis 7.1

9. Wenn trotz Punkt 8 kein Ergebniss, versuchen Sie nur mit dem zuvor hdparm -B 255 /dev/sd(x) Punkt 2 bis 3 nochmals. Dann könnte Ihnen der disk_spindown.sh eventuelle weiterhelfen. Wenn jetzt erst Punkt 2 bis 3 funktioniert, aber 5 bis 7 nicht. Wäre es nötig apm =255 in die hdparm.conf zu setzen für die Harddisk, und den disk_spindown.sh zu benützen miteinander. Aber testen Sie noch Punkt 10 aus bitte.

10. hdparm -B 127 /dev/sd(x) funktioniert hier ein spindown? Geht Sie nach einer Weile parkieren? hdparm -C /dev/sd(x) standby?

11. Wenn ja, dann könnten Sie nur mit dieser -B 127 (apm = 127) arbeiten in der hdparm.conf.

Western Digital Green

hdparm -B 255 /dev/sd(x) , bekommt man dann so eine Fehlermeldung

/dev/sdb:

setting Advanced Power Management level to disabled

HDIO_DRIVE_CMD failed: Input/output error

APM_level = not supported

Ist vermutlich die Firmware der Harddisk nicht dazu fähig. Auch Western Digital Green sind da leider in der Regel miteingeschlossen. Erschwerend kommt bei diesen Modellen dazu, dass sie stromspahren in dem sie den Lesekopf alle 8 oder 12 Sekunden oder ähnlich in die Parkposition bringen, und so den Luftstromwiderstand verringern auf der Platte. Jedoch ist dieser Parkvorgang begrenzt, und killt eher die Platte als ganzes mit der Zeit. Unhübsche Load/Unload Cycle Count in den Smartwerten sind die folge schon nach 3 Monaten. Mit den idle3-tools kann man dieses Verhalten aber deaktivieren.

disk_spindown.sh

Für alle die es mit hdparm -S oder -B nicht schaffen die Harddisk nach 20minuten zum schlafen zu bewegen, habe ich dieses Script gebaut. Da der direkte Befehl hdparm -y normalerweise jede Platte beherscht. (In diesem Beispiel in Ubuntu14.04 getestet).

Variablen im Script sind ramdrive, spindwontime (in Sekunden) und diskvolumes, also welche Harddisks sollen angesprochen werden, sdb sde ... nur die Endbuchstaben werden benötigt. Das ramdrive findet man in seinem System über die Befehle df -h oder mount in einem Terminal sicherlich heraus.

Die Rekationszeit ist im Bereich von $spindowntime bis 2 mal $spindowntime, das ist weil ich einfach diese Zeit warte im Script bis zum nächsten vergleich. Also maximal nach 2x$spindowntime wird sie schlafen gelegt.

/!\ Die erste Zeile darf kein Leerzeichen haben am Anfang!!

 #!/bin/bash
# Check for idle disks and spin them down
# Some Harddrives not working to spindwon with hdparm -B oder -S commands.
# But hdparm -y direct work. So that a script for that Harddrives.
# http://linuxwiki.de/hdparm

# Installation:
# ------------------------------------
# For this script hdparm must be installed, but not configured!
# Only a apm=255 is maybe needed in the hdparm.conf for the Drive.
# Installation:
# Put it to /usr/local/bin/disk_spindown.sh
# Set the Permissons sudo chmod 744 /usr/local/bin/disk_spindown.sh
# Startup: we put a new line in /etc/rc.local for systemwide start.
# /usr/local/bin/disk_spindown.sh & >/dev/null
# exit 0
# Now you can reboot the pc, for activate or to activate a change. 

# Western Digital Green Harddrives (mostly not suitable with hdparm -S or -B)
# -----------------------------------------------------------------------------
# Modern Western Digital "Green" Drives include the Intellipark feature that stops the disk when not in use.
# Unfortunately, the default timer setting is not perfect on linux/unix systems, including many NAS,
# and leads to a dramatic increase of the Load Cycle Count value (SMART attribute #193).
# Please deactivat it with http://idle3-tools.sourceforge.net/ (normally in the Distro)
#
# get the Info: idle3ctl -g /dev/sd(x)
# disabling :   idle3ctl -d /dev/sd(x)
# The idle3 timer seems to be a power on only setting. That means that the drive needs to be powered OFF and then ON to use the new setting.
# I turn off the Computer, plug the power off and push the start button, for a short while the fan go's on. All power it out.
# Or turn off for few minutes to take the effect.



# Where is your Ramdrive?
# Check it out with  df -h or mount command.
# Possible Values Examples: /dev/shm , /run/shm
ramdrive=/run/shm

# The Spindwon Time in Seconds
# The Raktion done in $spindowntime maximum of 2 times. Depending build by the script. Protects for the cpu load.
spindowntime=1200

# Wich disk are handled
diskvolumes="b c d e f g h i j k"

# Build onece the tempfiles
if [ ! -f $ramdrive/diskstate1 ]; then touch $ramdrive/diskstate1;fi
if [ ! -f $ramdrive/diskstate2 ]; then touch $ramdrive/diskstate2;fi


# Here we go...
while [ true ] ; do

# cycle it to test for activity
mv $ramdrive/diskstate1 $ramdrive/diskstate2
cat /proc/diskstats > $ramdrive/diskstate1

# Loop through all array disks and spin down idle disks.
for disk in $diskvolumes
do
 if [ "$(diff $ramdrive/diskstate1 $ramdrive/diskstate2 | grep sd$disk )" =  "" ] ; then hdparm -y /dev/sd$disk >/dev/null 2>&1; fi
done
# Wait 
sleep $spindowntime
done
exit 0

Power Management

Vor allem für Notebooks interessant: per hdparm -B <value> /dev/hda lässt sich bei vielen Notebookplatten der "Advanced Power Management level" einstellen; 1 <= <value> <= 255. Ein paar mehr Infos darüber findet man unter http://www.hgst.com/hdd/library/able.htm.

Per hdparm -I /dev/hda kann man nachsehen, ob dieses Feature überhaupt unterstützt wird und wie es gerade eingestellt ist: Advanced power management level: <value> (<hex>) unter Capabilities.

Mögliche Werte: 1: maximal, 254: minimal, 255: aus -- was die anderen möglichen Werte genau bewirken wird leider nicht verraten und muss wohl leider experimentell ermittelt werden...

Bei meinen Tests ist mir übrigens aufgefallen, dass bei meiner Platte (Fujitsu MHN2200AT) ab Level 192 wesentlich ruhiger wird, weil der Kopf nicht ständig geparkt und entparkt wird, was in ruhigeren Umgebung sehr nervend sein kann. Wahrscheinlich hält die Platte nun aber nicht mehr so viel aus!? Zudem wird sie bei normalem Betrieb um ein paar °C wärmer. -- MichaelReinsch 2003-04-13 21:35:20

Akustik Management

Das Akustik-Managment neuerer Festplatten nimmt Einfluss auf die Positioniergeschwindigkeit der Schreib-/Leseköpfe - wodurch sich das nervige "Klackern" reduzieren lässt. Die Zugriffszeiten werden dadurch natürlich etwas höher, aber die Transferrate bleibt davon unbeeinflusst.

hdparm -M 128 /dev/hda

leiseste (langsamste) Einstellung

hdparm -M 254 /dev/hda

lauteste (schnellste) Einstellung

viel langsamer wirds aber auch nicht, aber dafür wesentlich leiser!

Tipps