hdparm

Mit dem Programm hdparm lassen sich Festplattenparameter auslesen und verändern.

Die Syntax zu diesem Befehl lautet:


hdparm - get/set hard disk parameters - version v5.2

Usage:  hdparm  [options] [device] ..

Options:
 -a   get/set fs readahead
 -A   set drive read-lookahead flag (0/1)
 -b   get/set bus state (0 == off, 1 == on, 2 == tristate)
 -B   set Advanced Power Management setting (1-255)
 -c   get/set IDE 32-bit IO setting
 -C   check IDE power mode status
 -d   get/set using_dma flag
 -D   enable/disable drive defect-mgmt
 -E   set cd-rom drive speed
 -f   flush buffer cache for device on exit
 -g   display drive geometry
 -h   display terse usage information
 -i   display drive identification
 -I   detailed/current information directly from drive
 -Istdin  similar to -I, but wants /proc/ide/*/hd?/identify as input
 -k   get/set keep_settings_over_reset flag (0/1)
 -K   set drive keep_features_over_reset flag (0/1)
 -L   set drive doorlock (0/1) (removable harddisks only)
 -M   get/set acoustic management (0-254, 128: quiet, 254: fast) (EXPERIMENTAL)
 -m   get/set multiple sector count
 -n   get/set ignore-write-errors flag (0/1)
 -p   set PIO mode on IDE interface chipset (0,1,2,3,4,...)
 -P   set drive prefetch count
 -q   change next setting quietly
 -Q   get/set DMA tagged-queuing depth (if supported)
 -r   get/set readonly flag (DANGEROUS to set)
 -R   register an IDE interface (DANGEROUS)
 -S   set standby (spindown) timeout
 -t   perform device read timings
 -T   perform cache read timings
 -u   get/set unmaskirq flag (0/1)
 -U   un-register an IDE interface (DANGEROUS)
 -v   defaults; same as -mcudkrag for IDE drives
 -V   display program version and exit immediately
 -w   perform device reset (DANGEROUS)
 -W   set drive write-caching flag (0/1) (DANGEROUS)
 -x   tristate device for hotswap (0/1) (DANGEROUS)
 -X   set IDE xfer mode (DANGEROUS)
 -y   put IDE drive in standby mode
 -Y   put IDE drive to sleep
 -Z   disable Seagate auto-powersaving mode
 -z   re-read partition table

hdparm ist ein Kommandozeilenprogramm um verschiedene Festplattenparameter im Linux Kernel zu verändern. Dieses Programm benötigt mindestens einen Kernel der Version 1.2.13, dies sollte aber auf einem aktuellen Debian System kein Problem sein.

Optionen

Wenn keine weiteren Optionen angegeben werden so wird bei einem IDE Device automatisch die Optionen -acdgkmnru und bei einem SCSI Device die Optionen -gr benutzt.

Im einzelnen bewirken die Optionen folgendes:

Einbinden von hdparm

Um nun nicht nach jedem Systemstart (als Superuser) das Programm hdparm neu aufrufen zu müssen, ist es sinnvoll den Aufruf in die Init-Scripte mit aufzunehmen. Im einfachsten Fall reicht es den entsprechenden Eintrag in der Datei /etc/init.d/bootmisc.sh aufzunehmen.

Eleganter ist es wenn ein eigenes Startscript erstellt wird. Dies kann beispielsweise wie folgt aussehen:


#!/bin/sh

HDPARM=`which hdparm`

if [ $UID != 0 ] ; then
	exit 0
else

  if [ -f `which hdparm` ] ; then
     if [ -f "/etc/hdparm.conf" ] ; then
     	{ while read dummy
		do IN="$dummy"
		   $HDPARM `echo $IN | cut -d : -f 2` /dev/`echo $IN | cut -d : -f 1`
		done
	} < /etc/hdparm.conf
     else
        # no config file: guess params
	for i in `ls -1 /proc/ide/|grep hd[a-d]` ; do
	   if [ `cat /proc/ide/$i/media` = "disk" ] ; then  
		$HDPARM -d1 -c1 -S12 /dev/$i
           else
	        echo; echo "/dev/$i: no disk! media is: `cat /proc/ide/$i/media`"
	   fi

	done
     fi
  fi

fi

Ohne an dem Script Veränderungen vorzunehmen, wird hdparm mit den Parametern -c1 -d1 -S12 aufgerufen. Dies kann entweder direkt im Script, oder aber besser mittels der Konfigurationsdatei /etc/hdparm.conf beeinflusst werden:
hda:-c1d1
hdc:-c1d1
Wie hier gezeigt, können die Parameter für jedes Gerät einzeln angegeben werden.