[[Vorlage(Archiviert, )]] {{{#!vorlage Wissen [:Datenträger: Wie heißen die "Geräte"?] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] }}} {{{#!vorlage Warnung Im Gegensatz zu älteren [wikipedia:ATAPI:PATA-Laufwerken] mit [wikipedia:Integrated_Drive_Electronics:IDE-Schnittstelle] besitzen moderne [wikipedia:Serial_ATA:SATA-Laufwerke] keinen DMA-Modus. Die Festplatte sollte vor dem Setzen eines anderen DMA-Modus unbedingt aus dem Dateisystem ausgehängt werden, da ansonsten Datenverlust droht. Außerdem sollte man vorher in Erfahrung bringen, für welchen DMA-Modus eine Festplatte überhaupt geeignet ist. Einige Festplatten scheinen nicht über einen Schutzmechanismus verfügen, die das Benutzen eines ungeeigneten (zu schnellen) Übertragungsmodus (DMA-Modus) verhindert; auch in diesem Fall können Daten verloren gehen! }}} [[Inhaltsverzeichnis()]] Diese Anleitung beschreibt, wie man den [wikipedia:Direct_Memory_Access:DMA-Modus] für IDE-Laufwerke aktiviert. Unter aktuellen Ubuntu-Versionen ist dies normalerweise nicht notwendig, da DMA bereits standardmäßig aktiviert ist. = Allgemeines = Es kann vorkommen, dass beim Anschauen einer DVD das Bild stark ruckelt oder dass der Durchsatz der Festplatte sehr langsam ist. Das liegt möglicherweise am abgeschalteten DMA-Modus des Laufwerks. Der deaktivierte DMA-Modus kann auch dazu führen, dass ein Brennvorgang extrem langsam wird und im Schnitt nur mit einem Bruchteil der eigentlichen Höchstgeschwindigkeit gebrannt wird. Auf der Hardwareebene muss man sich vergewissern, dass das IDE-Breitbandkabel 80-polig ist. Die alten 40-poligen sehen gleich aus, können aber die neueren DMA-Modi nicht umsetzen. Alle nachfolgenden Einstellungen werden nicht funktionieren. == Besonderheiten seit Feisty Fawn == Seit der Ubuntu-Version Feisty Fawn 7.04 werden die Laufwerke als virtuelle SCSI-Laufwerke behandelt. Kennzeichen ist, dass die Laufwerke statt '''/dev/hd*x''' als '''/dev/sd*x''' bezeichnet werden. Das führt dazu, dass '''hdparm''' den DMA-Modus weder setzen noch abfragen kann. Allerdings sollte DMA auch standardmäßig aktiviert sein. Wird der Treiber ausgewechselt, z.B. durch ein Neukompilieren des Kernels, funktioniert '''hdparm''' wieder vollständig wie im Folgenden beschrieben. Das ist höchstens bei auftretenden schweren Problemen nötig! = DMA temporär aktivieren = Mit dem Kommandozeilen-Tool hdparm kann man DMA aktivieren. In diesem Beispiel wird davon ausgegangen, dass '''/dev/hdc''' das Laufwerk ist (ggf. also anpassen). [1] Zur Kontrolle ob der DMA-Modus aktiv ist, öffnet man ein Terminal [2] und gibt dort folgenden Befehl ein: {{{#!vorlage Befehl sudo hdparm /dev/hdc }}} Die Anzeige sieht dann in etwa so aus: {{{ /dev/hdc: multcount = 0 (off) IO_support = 0 (default 16-bit) unmaskirq = 0 (off) using_dma = 0 (off) keepsettings = 0 (off) (...) }}} Man erfährt so also, dass der DMA-Modus abgeschaltet ist: {{{ using_dma = 0 (off) IO_support = 0 (default 16-bit) }}} Um den DMA-Modus vorübergehend einzuschalten, tippt man: {{{#!vorlage Befehl sudo hdparm -c1 -d1 /dev/hdc }}} Zum Überprüfen sollten in der Ausgabe von '''sudo hdparm /dev/hdc''' nun folgende Zeilen enthalten sein: {{{ /dev/hdc: (...) IO_support = 1 (32-bit) using_dma = 1 (on) (...) }}} = DMA dauerhaft aktivieren = == Anpassen der Konfiguration == Damit der DMA-Modus auch nach dem nächsten Neustart noch aktiv ist (sofern der Versuch erfolgreich war), wird das Ganze in die Datei '''/etc/hdparm.conf''' eingetragen. Dazu öffnet man die Datei in einem Editor mit Rootrechten [3] und fügt ans Ende folgenden Text an: {{{ /dev/hdc { io32_support = 1 dma = on keep_settings_over_reset = 1 } }}} Auch ist es möglich, diese Parameter in einer anderen Syntax einzutragen. Diese Syntax entspricht den hdparm-Optionen aus der Kommandozeile und ist leicht übertragbar. Dazu ist stattdessen Folgendes am Ende der '''/etc/hdparm.conf''' einzutragen: {{{ command_line { hdparm -c1 -d1 -k1 /dev/hdc } }}} Alternativ kann als Pfadangabe '''/dev/disk/by-uuid/''' genutzt werden (siehe [:UUID:]). Natürlich können viele weitere Befehle für das Device (Gerät) mitgegeben werden, siehe hdparm-Doku ('''man hdparm'''), oder die Beispieleinträge in der Datei '''hdparm.conf'''. Hat man z. B. an '''/dev/hdd''' noch einen Brenner, kann man gleich auch dafür einen entsprechenden Eintrag machen. [[Anker(hdparm_verzoegern)]] == Start von hdparm verzögern == Nun muss evtl. mit dem Befehl {{{#!vorlage Befehl sudo mv /etc/rcS.d/S07hdparm /etc/rcS.d/S21hdparm }}} den Start von hdparm (beim Hochfahren des Systems) zeitlich etwas weiter nach hinten gesetzt werden. So funktioniert hdparm auch nach dem nächsten Neustart richtig. Sollten Probleme auftreten ist es einen Versuch wert, den hdparm-Eintrag im '''/etc/rcS.d'''-Verzeichnis noch weiter in der Reihenfolge nach hinten zu versetzen. Beispielsweise auf S48hdparm, oder konsequent ganz an den Schluss auf S99hdparm (längere Bootzeiten durch die spätere Aktivierung von DMA treten nicht auf): {{{#!vorlage Befehl sudo mv /etc/rcS.d/S07hdparm /etc/rcS.d/S99hdparm }}} {{{#!vorlage Hinweis Falls zum Setzen des DMA-Modus erst noch Treiber geladen werden müssen, funktioniert es erst ab Position 21. Die Treiber (Module) werden aber an Stelle 20 geladen. Hat man die IDE-Unterstützung fest in den Kernel kompiliert (kein Modul), dann kann man diesen Schritt überspringen. }}} Sollte der Eintrag ''/etc/rcS.d/S07hdparm'' nicht vorhanden sein, bitte vorher den Abschnitt [#rcS.d "hdparm-Eintrag ist in /etc/rcS.d/ nicht auffindbar"] in den Problembehebungen befolgen. {{{#!vorlage Hinweis Für schnelle und zuverlässige DMA-Übertragungen müssen alle Laufwerke eines Computers den DMA-Modus aktiviert haben! So ist sichergestellt, dass alle Geräte mit den hohen Datenraten arbeiten können. Ansonsten kann es vorkommen, dass der DMA-Flag nach einigen Zugriffen von der Hardware zurückgesetzt wird. }}} [[Anker(Geschwindigkeitsmessung)]] = Geschwindigkeitsmessung = Das Kommandozeilentool hdparm bietet zudem so etwas wie eine Geschwindigkeitsmessung ("Benchmark") an, um den DMA-Modus rudimentär zu testen. In diesem Beispiel wird eine IDE-Festplatte an z.B. /dev/hdc verwendet. Die Ausführung des folgenden Befehls dauert circa 10 Sekunden: {{{#!vorlage Befehl sudo hdparm -Tt /dev/hdc }}} Für IDE-Festplatten sollte der zweite Wert ''Timing buffered disk reads'' zwischen 35 MB/s und 55 MB/s bei funktionierendem DMA-Modus liegen. Ist dieser nicht aktiviert liegt dieser Wert zwischen 2 MB/s und 3 MB/s. = Problemlösungen = == DMA lässt sich nicht aktivieren == Bei einigen Systemen lässt sich der DMA-Modus nicht aktivieren. Dafür gibt es folgenden Workaround: In '''/etc/modules''' muss an erster Stelle das Modul stehen, das den DMA-Modus erst ermöglicht. Dies ist abhängig vom verwendeten Mainboardchipsatz, z.B. bei einem nforce4 Ultra: {{{ amd74xx }}} Sollte es Probleme bei der Aktivierung des DMA-Modus in Verbindung mit einem VIA-Mainboard geben, so wird folgendes Modul an erster Stelle in der '''/etc/modules''' eingetragen: {{{ via82cxxx }}} Die Datei muss zur Bearbeitung in einem Texteditor mit Root-Rechten [3] geöffnet werden. {{{#!vorlage Hinweis Bei manchen Systemen funktioniert es nur, wenn ''amd74xx'' am Anfang der Datei steht, ''ide-disk'' kann man dann auskommentieren. Gleiches Prinzip gilt ebenso für das Modul ''via82cxxx'' . }}} == System bleibt beim Booten hängen == Bei einigen Benutzern tritt das Problem auf, dass nach der Installation von hdparm das System nicht mehr richtig hochfährt. Der Startvorgang bleibt bei der Meldung "Setting disc parameters" einfach stehen und geht nicht weiter. Um trotzdem starten zu können, geht man einfach kurz ins BIOS (in der Regel durch [[Vorlage(Tasten, Entf)]] auf Desktop-Systemen oder [[Vorlage(Tasten, F2)]] auf Notebooks zu erreichen) und verlässt es wieder ohne zu speichern. Danach müsste das System wieder starten. Tritt dieses Problem häufiger auf, gibt es die Möglichkeit hdparm nicht über die '''/etc/hdparm.conf''' zu starten, sondern über den [:Archiv/Skripte/Autostart-Patch:]. Dieser muss einfach heruntergeladen und installiert werden. Danach erstellt man in einem Texteditor mit Root-Rechten [3] die Datei '''/etc/autostart/hdparmstart''' mit folgendem Inhalt: {{{ hdparm -c1 -d1 -k1 /dev/hdc }}} Die Datei muss nun gespeichert und ausführbar gemacht werden. Z.B. im Terminal [2] mit {{{#!vorlage Befehl sudo chmod a+x hdparmstart }}} Nun entfernt man alle nicht auskommentierten Einträge aus der '''/etc/hdparm.conf'''. Bei nächsten Neustart sollte DMA aktiviert sein und der Rechner nicht mehr hängen bleiben. Außerdem sollten gegebenenfalls alle Einstellungen der Geräte im BIOS auf "auto" gesetzt sein. Hilft dies nicht, kann man versuchen den PIO-Mode herabzusetzen, z.B. von "5" auf "4". Ohne den Autostart-Patch kann man alternativ versuchen den Start des hdparm-Skriptes beim Booten noch weiter hinaus zu verzögern, indem man es um einige Sekunden verspätet starten lässt. Hierzu öffnet man die '''/etc/init.d/hdparm''' in einem Terminal mit Root-Rechten [2] und fügt ganz am Anfang folgende erste Zeile hinzu: {{{ sleep 2 }}} Hilft dies immer noch nicht, kann man den '''udev'''-Eintrag in der Startreihenfolge in '''/etc/rcS.d/''' nach hinten verschieben per Terminal mit Root-Rechten [2]: {{{#!vorlage Befehl sudo rm /etc/rcS.d/S*udev }}} {{{#!vorlage Befehl sudo ln -s /etc/init.d/udev /etc/rcS.d/S23udev }}} Das udev-Startskript kann man zudem auch noch verzögert starten lassen, indem man in die '''/etc/init.d/udev''' am Anfang folgende erste Zeile hinzufügt {{{ sleep 2 }}} Bitte beachten: Der hdparm-Eintrag sollte im '''/etc/rcS.d'''-Verzeichnis NACH dem udev-Eintrag folgen. Funktioniert dies alles nicht, könnte ein leicht defektes Mainboard bzw. defekter IDE-Controller auf dem Board vorliegen. Ist ein zweiter unbenutzter vorhanden, sollte man diesen ausprobieren. Allgemein empfiehlt es sich auch, z.B. die Festplatte sowie das CD/DVD-Laufwerk ''jeweils'' an ein eigenes Flachbandkabel und Controller anzuschließen. Andererseits können die Probleme, dass der Bootprozess bei aktiviertem DMA-Modus bei "Setting disc parameters..." hängen bleibt, in Einzelfällen mit dem '''Dateisystem XFS''' zusammenhängen. Diese sollten aber i.d.R. nach den Lösungsansätzen in diesem Abschnitt aufzuheben sein. == DMA ist gesetzt, funktioniert aber nicht == Sollte direkt nach einer Installation, bzw. ohne vom Benutzer vorgenommene Veränderungen, der DMA Modus für ein CD- bzw. DVD-Laufwerk scheinbar schon gesetzt sein, aber nicht funktionieren (z.B. bemerkbar durch ruckelige Filmwiedergabe), kann das Problem behoben werden, indem man den DMA-Modus für das Laufwerk deaktiviert und gleich wieder aktiviert. Danach kann der DMA-Modus dauerhaft aktiviert werden (siehe oben). Dieses Problem trat z.B. bei einem Notebook Samsung X20 II auf, bei dem das DVD-Laufwerk als '''/dev/hdb''' eingebunden ist. Der Versuch den DMA-Modus einzuschalten, obwohl er scheinbar schon aktiv ist, jedoch nicht funktioniert, führt zu einem kompletten Einfrieren des Systems. Die oben aufgezeigte Lösung beseitigt das Problem und aktiviert den DMA Modus korrekt. [[Anker(rcS.d)]] == hdparm-Eintrag ist in /etc/rcS.d/ nicht auffindbar == Damit die vorgenommenen Optionen auch regelmäßig beim Booten geladen werden, ist es notwendig, dass hdparm mit einem Eintrag im entsprechenden Runlevel vorhanden ist. In diesem Fall handelt es sich um den '''/etc/rcS.d/'''. Sollte dort kein Eintrag vorhanden sein, ist folgendermaßen vorzugehen, um ihn manuell wieder hinzuzufügen: Gegebenenfalls muss das Paket hdparm nochmals neuinstalliert werden. Die entsprechende fehlende symbolische Verknüpfung wird mit dem Befehl {{{#!vorlage Befehl sudo ln -s /etc/init.d/hdparm /etc/rcS.d/S21hdparm }}} erstellt. Nun lässt sich ab Abschnitt "DMA-Modus dauerhaft aktivieren" in diesem Wikiartikel weiter vorgehen. == /etc/init.d/hdparm existiert nicht == Ggf. muss die Datei '''/etc/init.d/hdparm''' mit folgendem Inhalt erstellt werden: {{{#!code bash #!/bin/sh case "$1" in start) /usr/local/bin/colecho "Starting hdparm..." ;; stop) /usr/local/bin/colecho "nix zu stoppen..." ;; *) echo "Usage: $0 {start|stop}" exit 1 ;; esac }}} == DMA nach kurzer Zeit bzw. Zugriff auf CD/DVD wieder deaktiviert == Dies kann in erster Linie daran liegen, dass DMA z.B. nur für das CD/DVD-Laufwerk deaktiviert wurde. Am sinnvollsten ist es also, DMA sowie den io32_support für alle am Computer befindlichen Laufwerke zu aktivieren. Im letzten Abschnitt ist ein Beispiel einer hdparm.conf-Konfigurationsdatei zu finden. == Simplex DMA is claimed by other device == Ab Ubuntu 8.04 kann es vorkommen, dass das Behandeln des ATA-Laufwerks als SCSI-Gerät Probleme verursacht. Kennzeichnend wäre die Logmeldung: {{{ ata2.00: simplex DMA is claimed by other device, disabling DMA }}} Als Lösung fügt man in die '''/etc/modprobe.d/aliases''' am Ende diese Zeilen an: {{{ alias ata_generic off alias pata_atiixp on }}} = Links = * [:Tuning: Weitere hdparm-Tuningmöglichkeiten] * [http://linuxwiki.de/hdparm hdparm im LinuxWiki] {de} * [http://www.linux-fuer-alle.de/doc_show.php?docid=124&catid=10 IDE-Tuning auf "Linux für alle"] {de} * [http://www.linux-user.de/ausgabe/2006/01/054-hdparm/index.html Festplatten und Laufwerke beschleunigen] - Artikel aus LinuxUser 01/06 {de} # tag: Hardware, System