Geht es um das Tuning der Festplatten-Performance, führt kein Weg an Hdparm vorbei. Daneben kann das Tool aber noch viel mehr.
Der Kanadier Mark Lord entwickelte 2005 das kleine Werkzeug Hdparm [1], um die Linux-Treiber für IDE-Festplatten zu testen. Im Lauf der Zeit entwickelte sich das Tool zu einem wertvollen Werkzeug für die Diagnose und das Einstellen von Laufwerken. So testet es unter anderem die Geschwindigkeit von Festplatten und Solid State Disks (SSDs), versetzt diese Geräte auf Wunsch in den Schlafmodus oder schaltet die Energiesparmodi ein- und aus. Bei modernen Festplatten aktiviert es den sogenannten Akustikmodus, zudem räumt es auf SSDs auf. Vor den ersten Experimenten mit Hdparm lesen Sie einige Sicherheitshinweise zum Programm im Kasten “Warnung!”.
Warnung!
Hdparm greift direkt auf das Laufwerk zu, weswegen sein Einsatz leicht zu Datenverlust und in extremen Fällen sogar zu einem defekten Datenträger führen kann. Zudem weist die Dokumentation viele Funktionen als experimentell oder gefährlich aus. Bevor Sie mit dem Programm arbeiten, sollten Sie also immer ein Backup des kompletten Laufwerks anlegen. Setzen Sie zudem nur solche Funktionen ein, deren Bedeutung Sie genau verstehen. Verlag und Autor übernehmen keine Haftung für Schäden oder Datenverluste.
Mitteilungsbedürfnis
Alle halbwegs aktuellen Distributionen bringen Hdparm bereits in der Grundinstallation mit. Sie müssen lediglich ein Terminalfenster öffnen und als Administrator hdparm -I /dev/sda | more aufrufen (Abbildung 1). Damit liefert Ihnen das Tool sämtliche greifbaren Daten über das gewählte Laufwerk, hier die erste Festplatte sda. Das angehängte | more sorgt dafür, dass die durchaus zahlreichen Informationen nicht einfach ungesehen durch das Terminal rauschen.

Abbildung 1: Hier listet Hdparm die Hardwareeigenschaften einer sechs Jahre alten Festplatte mit einer Kapazität von 320 GByte auf.
Als Gerät akzeptiert Hdparm jeden Massenspeicher, der an einer (E)IDE-, SATA- oder SAS-Schnittstelle hängt, also auch DVD-Laufwerke und SSDs. USB-auf-IDE-Adapter bereiten häufiger Probleme, weil diese die ATA- beziehungsweise ATAPI-Befehle nicht oder nur unvollständig an das Laufwerk weiterreichen.
Die von Hdparm zurückgelieferten Informationen hängen vom Gerät ab. Stets vorhanden sind ganz am Anfang die Bezeichnung und Versionsnummer der Firmware (hinter Model Number und Firmware Revision). Vor allem Besitzer einer SSD können so schnell in Erfahrung bringen, ob sie die aktuelle Firmware-Version besitzen.
Bei neueren Festplatten sollten Sie nachsehen, ob sich in der Rubrik Commands/features das Native Command Queueing (NCQ) findet. Dieser Technik ermöglicht es der Festplatte, die Anfragen des Systems so umzusortieren, dass der Schreibkopf möglichst kurze Wege zurücklegen muss. SSDs wiederum verteilen damit die Schreibzugriffe effizienter auf die Speicherblöcke. Im Idealfall führt dies zu einer Geschwindigkeitssteigerung. Sollte NCQ deaktiviert sein, prüfen Sie, ob im BIOS das Laufwerk im AHCI-Modus läuft. Dieser ist übrigens auch eine Voraussetzung für viele andere Funktionen, etwa das Energiemanagement.
Tacho
Wie schnell ein Laufwerk Daten liefert, verrät der Befehl hdparm -t /dev/sda. Nach ein paar Sekunden erscheint die Datentransferrate in MByte/s. Das kleine Programm liest dazu ohne Rücksicht auf das Dateisystem eine Weile Daten direkt vom Laufwerk. Die ermittelte Geschwindigkeit fällt folglich etwas höher aus als in der Praxis. Um ein unverfälschtes Ergebnis zu erhalten, sollten während der Messung keine anderen Programme laufen und genügend freier Hauptspeicher zur Verfügung stehen. Wiederholen Sie zudem die Messung mindestens drei Mal und ermitteln Sie dann den Durchschnittswert der Ergebnisse. Bei einem aktuellen Laufwerk sollten das Resultat mindestens 80 MByte/s erreichen (Abbildung 2).
Der Linux-Kernel legt die von der Festplatte geholten Daten in einem Pufferspeicher ab. Um die “nackte” Laufwerksgeschwindigkeit zu ermitteln, nutzen Sie den Befehl hdparm -t --direct /dev/sda. Hdparm liest die Daten dann ohne Umwege von der Platte. Die Messewerte fallen dabei um einiges geringer aus als ohne --direct, dafür sehen Sie die reine Übertragungsleistung der Platte (Abbildung 3).

Abbildung 3: Ohne Pufferspeicher bricht die Übertragungsrate drastisch ein. In der Mitte der 320 GByte großen Festplatte sind weitere Einbußen zu verzeichnen.
Hdparm liest die Daten immer vom Anfang des Datenträgers. Festplatten tendieren jedoch dazu, die Daten von den äußeren Bereichen der Magnetscheiben etwas langsamer zu liefern. Hdparm erlaubt es deshalb ab Version 9.29 noch einen Offset anzugeben:
# hdparm -t --direct --offset 500 /dev/sda
Die Zahl steht für die Anzahl der zu überspringenden GByte. Bei einer 1 TByte großen Festplatte würde der obige Befehl folglich Daten von der Mitte der Festplatte liefern. Wie Abbildung 3 zeigt, bricht die Leserate in den äußeren Bereichen einer Festplatte normalerweise recht deutlich ein.
Alle vorgestellten Geschwindigkeitstests geben nur erste Hinweise auf Probleme und Flaschenhälse. Für einen vollständigen Benchmark fehlt aber beispielsweise die Ermittlung der Schreibgeschwindigkeit.
Tempo, tempo
Einige Laufwerkseigenschaften lassen sich während des Betriebs verändern. So erlauben es die meisten Platten, das Powermanagement ein- und auszuschalten. Welche Funktionen Hdparm bei einer Festplatte ändern und aktivieren kann, zeigt die Ausgabe von hdparm -I /dev/sda im Bereich Commands/features. Alle dort mit einem Sternchen versehenen Funktionen sind gerade aktiv, die übrigen kann Hdparm nutzen oder zumindest einschalten.
Um die Datenübertragung zu beschleunigen, liest eine Festplatte in der Regel mehrere Sektoren gleichzeitig aus. Wie viele sie auf einmal anliefern kann, verrät hdparm -I /dev/sda hinter R/W multiple sector transfer: Max =. Dieser Wert sollte auch in der gleichen Zeile hinter Current = stehen. Sofern dies nicht der Fall ist, setzen Sie die Anzahl mit dem Befehl hdparm -m16 /dev/sda hoch. Das weist die Festplatte an, immer 16 Sektoren auf einmal zu liefern.
Kurioserweise laufen einige Festplatten mit höheren Werten langsamer: Die Manpage von Hdparm nennt diesbezüglich vor allem ältere Caviar-Festplatten von Western Digital. In solch einem Fall sollten Sie die Anzahl der Sektoren wieder reduzieren oder sogar ganz abschalten, letzteres geschieht per hdparm -m0 /dev/sda.
Moderne Laufwerke können überdies ein paar Sektoren im Voraus von der Platte holen (“read ahead”). Wie viele es sein sollen, bestimmen Sie mit dem Schalter -a, beispielsweise hdparm -a256 /dev/sda. In diesem Beispiel liest das Laufwerk diejenigen 256 Sektoren im Voraus, die wahrscheinlich als Nächstes angefordert werden. Höhere Werte beschleunigen vor allem das Lesen von größeren Dateien – allerdings zu dem Preis, dass das Lesen kleinerer dafür länger dauert. Die derzeit aktuelle Einstellung verrät der Befehl hdparm -a /dev/sda. Viele Laufwerke besitzen darüber hinaus noch einmal eine fest eingebaute, zusätzliche Read-Ahead-Funktion. Sie können daher in der Regel den bereits vorgegebenen Wert belassen.
Wie schnell die Anfragen des Betriebssystems zum Festplatten-Controller gelangen, zeigt der Befehl hdparm -c /dev/sda. Der Wert sollte auf 32-bit stehen. Sie erzwingen das optional mit dem Schalter -c3.
Volle Pulle
Viele moderne Festplatten erlauben es, die Bewegungen des Schreibkopfes zu verlangsamen. Dadurch sinken zwar die Zugriffszeiten, im Gegenzug sinkt jedoch auch die Lautstärke. Ob die eigene Festplatte diesen “Akustikmodus” anbietet, verrät hdparm -M /dev/sda. Folgt hinter dem Gleichheitszeichen eine Zahl wie in Abbildung 4, lässt sich das Laufwerk mit dem Befehl hdparm -M 128 /dev/sda in einen leisen Modus schalten.

Abbildung 4: Hier steht das Read-Ahead auf 256, das Akustikmanagement ist entsprechend derzeit noch deaktiviert.
Die Höchstgeschwindigkeit erreichen Sie mit hdparm -M 254 /dev/sda. Erlaubt sind auch Werte zwischen 128 und 254, die dann einen Kompromiss zwischen Lautstärke und Geschwindigkeit ergeben. Neben dem Laufwerk muss übrigens auch der Linux-Kernel das Akustikmanagement unterstützen – das sollte jedoch bei allen aktuellen großen Distributionen der Fall sein.
Manche CD- und DVD-Laufwerke erweisen sich als wahre Turbinen: Ihre hohen Drehzahlen stören vor allem beim Audio- und Video-Genuss. Für Ruhe sorgt der Befehl hdparm -E 4 /dev/sr0. Der Parameter 4 gibt die Geschwindigkeit vor, /dev/sr0 das DVD-Laufwerk. Das Beispiel bremst das Laufwerk auf die neunfache Lesegeschwindigkeit.
Write-Back-Caching
Beim sogenannten Write-Back-Caching merkt sich die Festplatte zu schreibende Daten zunächst in einem Zwischenspeicher. Auf diese Weise nimmt sie die Daten wesentlich schneller an, was letztendlich die Schreibrate verbessert. Ob Write-Back-Caching aktiviert ist, verrät der Befehl hdparm -W /dev/sda. Hinter dem Gleichheitszeichen sollte eine Eins stehen. Andernfalls aktivieren Sie die Funktion mit dem Schalter -W1.
Sperrt sich Hdparm gegen diese Änderung, dann prüfen Sie, ob im BIOS das Write-Back-Caching aktiviert ist. Allerdings empfiehlt sich diese Funktion nicht in allen Lebenslagen: Bei einem Stromausfall gehen die Daten im Zwischenspeicher unwiederbringlich verloren. Läuft auf dem System ein Programm, bei dem es auf Datensicherheit ankommt, wie etwa eine Datenbank, sollten Sie deshalb den Write-Back-Cache mit dem Schalter -W0 abschalten. Die Dokumentation der Datenbank PostgreSQL empfiehlt das sogar ausdrücklich.
Unter Strom
Hat eine Festplatte oder SSD eine Weile nichts zu tun, versetzt sie sich automatisch in den Schlafmodus. Diese Stromsparfunktion beeinflussen Sie mit dem Parameter -B. So bewirkt ein hdparm -B255 /dev/sda ein Deaktivieren des Energiemanagements, was allerdings nicht alle Laufwerke gestatten.
Anstelle von 255 sind auch Werte von 1 bis 254 erlaubt. Ein höherer Wert kostet mehr Strom, verspricht aber auch eine höhere Leistungsbereitschaft beziehungsweise Geschwindigkeit. Werte zwischen 1 und 128 erlauben das Abschalten des Laufwerks, solche von 129 bis 254 verbieten es. Am meisten Strom sparen Sie mit dem Wert 1, den höchsten Datendurchsatz (I/O-Performance) erhalten Sie mit 254. Den derzeit aktuellen Wert ermitteln Sie per hdparm -B /dev/sda.
Die genauen Auswirkungen der jeweiligen Werte hängen vom Laufwerk ab. Sie sollten jedoch im Hinterkopf behalten, dass Desktop-Festplatten nicht beliebig viele Ein- und Ausschaltvorgänge verkraften: Die Festplatte muss dabei den Schreibkopf immer wieder in die Parkposition bringen, was wiederum den Verschleiß erhöht. Folglich sollten Sie die Festplatte nicht alle zwei Sekunden wieder aufwecken – was zudem auch immer etwas dauert.
Nach wie vielen Sekunden der Untätigkeit sich die Festplatte in den Ruhezustand begeben soll, legen Sie mit dem Schalter hdparm -S 128 /dev/sda fest. Hier handelt es sich nicht etwa um eine Angabe in Sekunden, sondern um einen Wert zwischen 1 und 253. Diesen Wert multipliziert die Festplatte mit einem weiteren. Die im Beispiel gewählte 128 liegt zwischen 1 und 240, wofür die Platte den Multiplikationsfaktor 5 verwendet. Folglich würde sie sich nach 640 Sekunden Untätigkeit in den Schlafmodus begeben. Ab 241 erhöht sich der Multiplikator stetig. Bei 251 hat sich die Wartezeit so auf 5,5 Stunden erhöht. Bei 253 gibt sie der Festplattenhersteller vor, in der Regel mit zwischen 8 und 12 Stunden. Der Wert 254 bleibt reserviert, bei der 255 wartet die Festplatte 21 Minuten und 15 Sekunden. Ein Wert von Null deaktiviert den Schlafmodus komplett.
Um die Festplatte sofort in den Ruhezustand zu versetzen, tippen Sie hdparm -y /dev/sda. Mit großem Y schläft die Platte noch etwas tiefer ein. Je nach Laufwerk kommt es vor, dass das Laufwerk aus dem letztgenannten Zustand erst nach einem Reset des kompletten Systems wieder aufwacht.
Aufräumarbeiten
Unabhängig vom Betriebssystem führen SSDs selbst Buch über die Speicherorte der angelieferten Daten. Das führt mitunter zu der kuriosen Situation, dass eine Datei zwar eigentlich gelöscht ist, die SSD den von ihr belegten Speicher aber weiterhin als belegt auffasst. Um solche Konflikte aufzuheben, liegt neueren Versionen von Hdparm das Skript wiper.sh bei. Es ermittelt alle nicht mehr benutzten beziehungsweise belegten Blöcke und teilt diese der SSD mit. Der Aufruf lautet wiper.sh /dev/sda.
Allerdings gilt es das Skript mit Vorsicht zu genießen: Die Dokumentation warnt ausdrücklich vor möglichen Datenverlusten, vom Einsatz mit dem Dateisystem Btrfs rät sie sogar komplett ab. Laufwerke mit Ext2/3/4, Reiser3 und XFS gilt es zuvor nur lesend einzuhängen. Am besten hängen Sie das Laufwerk komplett aus oder starten wiper.sh von einem Live-System aus. Zudem sollten Sie unbedingt vorher ein Backup der SSD anfertigen und das Skript nur im Notfall einsetzen. Aufgrund der Gefährlichkeit liegt es übrigens in einigen Distributionen gar nicht erst bei.
Sicher löschen
Um höhere Transferraten zu erzielen und die Speicherchips gleichmäßig auszulasten, nutzen SSDs zusätzliche, reservierte Speicherbereiche (“Wear-Leveling”). Dies hat zur Folge, dass ein einfaches Formatieren nur selten die komplette SSD löscht. Die meisten SSDs bieten deshalb eine Secure Erase genannte Funktion, bei der das Laufwerk selbst sämtliche Speicherzellen leert. Das erweist sich unter anderem dann als nützlich, wenn Sie die SSD einmal verkaufen möchten.
Allerdings gibt es zwei Stolperfallen: Hdparm kann Secure Erase nur dann auslösen, wenn das BIOS dies auch erlaubt. Darüber hinaus gilt das Verfahren (noch) als experimentell – die Dokumentation des Tools warnt ausdrücklich vor dem Einsatz, Secure Erase im schlimmsten Fall die komplette SSD unbrauchbar macht.
Möchten Sie die Löschfunktion dennoch nutzen, rufen Sie vorab hdparm -I /dev/sdb auf. Im Bereich Security muss jetzt die Zeile supported: enhanced erase auftauchen, andernfalls unterstützt die SSD kein Secure Erase. Als nächstes schalten Sie die Sicherheitsfunktionen des Laufwerks ein, indem Sie (vorübergehend) ein Passwort wie etwa 123456 setzen:
# hdparm --user-master u --security-set-pass 123456 /dev/sdb
Rufen Sie nun erneut hdparm -I /dev/sdb auf, erscheint im Bereich Security die Zeile enabled. Jetzt löschen Sie die SSD mittels
# hdparm --user-master u --security-erase 123456 /dev/sdb
Dabei entfernt Hdparm gleichzeitig auch wieder das Passwort. Der gesamte Vorgang dauert je nach SSD-Größe einige Minuten, in denen keine Rückmeldungen erfolgen. Rufen Sie anschließend hdparm -I /dev/sda auf, sollte der Bereich Security wieder wie vor dem Setzen des Passworts aussehen.
Altlasten
Bei älteren Festplatten mit IDE-Anschluss (auch als PATA bezeichnet) sollten Sie in der Ausgabe von hdparm /dev/hda einen Blick auf die Zeile using_dma werfen. Das DMA steht für Direct Memory Access: Mithilfe dieser Technik befördert die Festplatte die Daten eigenständig und direkt in den Hauptspeicher. Steht das entsprechende Flag auf 0 (off), bremst das die Datenübertragung. Im Laufe der Jahre wurden immer schnellere DMA-Standards eingeführt, den jeweils schnellstmöglichen aktiviert der Befehl hdparm -d1 /dev/hda.
Auf einigen sehr alten Systemen bereitet der DMA-Modus allerdings Probleme. Sie sollten daher nach dem Aktivieren testweise ein paar größere Daten von und auf das Laufwerk kopieren. Bei Problemen oder Abstürzen deaktivieren Sie den DMA-Modus per hdparm -d0 /dev/hda wieder. Moderne SATA-Platten nutzen übrigens immer DMA.
Bis die Festplatte die angeforderten Daten übertragen hat, kann das restliche System weiteren Arbeiten nachgehen – allerdings nur dann, wenn in der Ausgabe von hdparm /dev/sda hinter unmaskirq ein on steht. Sie erzwingen diesen Modus mit dem Schalter -u1.
Bleibende Werte
Nach einem Neustart des Systems gehen alle mit Hdparm vorgenommenen Einstellungen verloren. Um diese dauerhaft zu aktivieren, tragen Sie den entsprechenden Hdparm-Befehl in die Startskripte ein. Das genaue Vorgehen hängt von der verwendeten Distribution ab, meist ist aber ein Eintrag in der /etc/rc.local notwendig.
Debian-basierte Systeme werten hingegen beim Systemstart die Konfigurationsdatei /etc/hdparm.conf aus. Dort steht für jede Festplatte ein eigener Abschnitt der Form:
/dev/sda {
...
}
Moderne Linux-Systeme vergeben die Gerätenamen (sda, sdb) zufällig. Wenn die Hdparm-Einstellungen fest einem Laufwerk zuordnen möchten, müssen Sie die eindeutige UUID verwenden, wie etwa:
/dev/disk/by-id/ata-SAMSUNG_HD103SJ_S246J1RZB00034 {
...
}
In jedem Fall gehören zwischen die geschweiften Klammern die Einstellungen. Jeder Kommandozeilenparameter des Programms besitzt dabei einen eigenen Namen. Das Akustikmanagement setzt beispielsweise acoustic_management = auf den Wert 128. Welcher Name zu welchem Hdparm-Parameter gehört, verraten die Kommentare am Anfang der Datei.
Fazit
Hdparm kennt noch viele weitere Parameter, die allerdings häufig recht gefährlich sind. So lassen sich etwa viele SSDs mit einem Passwort schützen, was aber unter Umständen zu Datenverlust führt. Die Manpage (man hdparm) warnt daher nicht umsonst vor den Gefahren.
Hdparm ist übrigens nur ein nützliches Werkzeug unter vielen: So ermitteln beispielsweise die Smartmontools den Gesundheitszustand einer Festplatte [2]. Besitzer einer SSD finden unter [3] weitere Tipps, um die Leistung des Laufwerks zu optimieren.
Infos
[1] Hdparm: http://hdparm.sourceforge.net
[2] Integrität gespeicherter Daten sicherstellen: Thomas Leichtenstern, “Schau genau!”, LU 08/2010, S. 74, https://www.linux-community.de/21374
[3] SSDs optimal einstellen: Ferdinand Thommes, “Alte Mythen”, LU 07/2011, S. 72, https://www.linux-community.de/23617






