Langsames USB unter SuSE 10.0

Ein USB Massenspeichergerät (usb mass storage) unter SuSE 10.0 zu beschreiben kann buchstäblich zum Geduldspiel werden. Transferraten von 8kB/s versetzten den Nutzer ins ISDN Zeitalter zurück. Von USB 2.0 keine Spur. Dagegen wird beim Lesen die volle Geschwindigkeit ausgenutzt. Das Problem wird von der Mountoption sync hervorgerufen. Diese sorgt dafür, daß selbst beim unbedachten Abziehen des USB Speichers alle Daten geschrieben worden sind. In der Vergangenheit wurde erst beim umount gesynct. Komischerweise tritt dieses Verhalten vermehrt bei USB Flashspeichern, aber nicht bei USB Festplatten auf. Unter SuSE 9.x soll das Kopieren trotz sync fix von statten gegangen sein.

Release Notes lesen!
Manchmal ist es eben doch ratsam mal einen Blick in die Release Notes zu werfen:
/usr/share/doc/release-notes/RELEASE-NOTES.de.html
Denn da steht:

Wenn Schreibvorgänge auf USB-Speichergeräten, wie beispielsweise USB-Sticks oder USB-Festplatten, langsam durchgeführt werden oder wenn Sie keine synchronisierten Schreibvorgänge auf diesen Geräten vornehmen möchten, deaktivieren Sie die sync mount-Option.

Und die Anleitung ist auch gleich dabei:

  1. USB Gerät anschließen und ein lshal ausführen. Ein Umleiten in eine Textdatei kann hier hilfreich sein:
    lshal > halliste.txt
    Darin sollte so ziemlich am Anfang der Name des Speichergerätes auftauchen:
    volume.label = 'USB128' (string)
    Direkt darunter steht die benötigte volume.uuid:
    volume.uuid = '17FA-282B‘ (string)
  2. Anlegen einer policy für den HAL daemon im Verzeichnis
    /usr/share/hal/fdi/policy/20thirdparty
    indem man z.B. eine Datei USB128.fdi anlegt. Die Endung fdi ist wichtig.
  3. Die Datei bekommt folgenden Inhalt:
    < ?xml version="1.0" encoding="ISO-8859-1"?>
    <deviceinfo version="0.2">
    <device>
    <!-- disable sync for mount -->
    <match key="block.is_volume" bool="true">
    <match key="volume.fsusage" string="filesystem">
    <match key="volume.uuid" string="17FA-282B“>
    <merge key=”volume.policy.mount_option.sync” type=”bool”>false</merge>
    </match>
    </match>
    </match>
    </device>
    </deviceinfo>
  4. Dann muß das Gerät entferntwerden und ein
    rchal restart
    ausgeführt werden.

Bei erneutem Anschließen sollte das Kopieren zum Datenträger wesentlich schneller gehen. Dabei darf man sich aber nicht davon beirren lassen, daß auf den ersten Blick alles sofort kopiert ist. Die Daten werden mit dieser Einstellung jetzt im Hintergrund kopiert. Also nicht einfach den Speicher abziehen. Wer sicher gehen will führt ein sync aus. Damit werden alle Schreibpuffer geleert.

Leave a Reply