Instabiler Schreibzugriff auf USB-stick

  • Ich hab einen USB-Stick (cfdisk /dev/sda1 gibt mir FAT16) und möcht ihn mit meinem Gentoo verwenden.

    Ich glaub alle relevanten Kernel-module mitkompiliert zu haben, und der Zugriff funktioniert ganz einwandfrei: der Lesezugriff. Keine Probleme, funktioniert.
    Will ich jetzt drauf schreiben, funktionierts auch. Wenn ich den Stick unmounte und dann wieder mounte, ist alles was ich geschrieben hab noch dort.
    ABER: sobald ich den Stick rauszieh und wieder reinsteck, sind die neuen Daten fort. Bzw. der Großteil, manchmal schreibts einen Teil der Dateien tatsächlich auf den Stick, manchmal nicht.

    Meine Vermutung ist, dass der Schreibzugriff gebuffert ist und der Buffer beim Unmounten nicht (vollständig) auf den Stick geschrieben wird. Dafür spricht auch die Tatsache, dass das Display des Sticks beim Schreiben viel zu kurz den Zugriff anzeigt, und beim Unmount dann nochmal ein bisserl länger einen Zugriff.
    Was kann ich tun? Woran liegts?

    <edit>im gegensatz zum schreiben ist löschen dauerhaft</edit>

    -----BEGIN GEEK CODE BLOCK-----
    Version: 3.12
    GAT d-(+) s++: a- C++$>+$ U++>+++ P++>+++ L+++ !E W++>$ !N K? w(--)@ !O !M V? PS+ PE++(-)> Y+ PGP(+) t---(-) !5 X R- tv-(--) b++>$ DI+ D+(++) G(+) e>++++* h-- r++ y++
    ------END GEEK CODE BLOCK------ .

  • hast du den usbstick selbst auf fat formatiert oder verwendest du ihn vorformatiert, so wie du ihn gekauft hast?

    meiner hat zuerst auch nicht richtig unter linux funktioniert (war glaub ich ntfs formatiert), bis ich ihn selbst zu fat32 formatiert hab.

    sg chri

  • Zitat von steve


    Meine Vermutung ist, dass der Schreibzugriff gebuffert ist und der Buffer beim Unmounten nicht (vollständig) auf den Stick geschrieben wird.


    das schreiben (nach dem unmount) braucht natürlich noch zeit, so ein usb-stick ist halt nicht so schnell. ich warte einfach immer, bis die led von meinem stick nicht mehr blinkt, dann weiß ich, dass alle daten auch wirklich geschrieben wurden und erst dann ziehe ich den stick ab.

    Willfähriges Mitglied des Fefe-Zeitbinder-Botnets und der Open Source Tea Party.

  • a) ich wart (natürlich), bis die leds nicht mehr blinken. die sache ist nur die, dass sie beim kopieren selbst nur sehr kurz blinken (selbst bei größeren datenmengen), und bei umount dann ziemlich lang bzw. länger jedenfalls.

    b) der stick ist fat16 formatiert (glaub ich jedenfalls, bzw. behauptet das cfdisk das)

    c) neu formatieren: da bin ich eher vorsichtig, weil der stick auch gleichzeitig mp3-player ist... ich will dem da nichts ruinieren (kann man mit w2k noch fat16 formatieren??) hat wer damit erfahrung (usbstick-mp3player formatieren)?
    [ist sowas: http://www.geizhals.at/a51628.html , nur schaut anders aus und ist von http://www.hama.de ]

    -----BEGIN GEEK CODE BLOCK-----
    Version: 3.12
    GAT d-(+) s++: a- C++$>+$ U++>+++ P++>+++ L+++ !E W++>$ !N K? w(--)@ !O !M V? PS+ PE++(-)> Y+ PGP(+) t---(-) !5 X R- tv-(--) b++>$ DI+ D+(++) G(+) e>++++* h-- r++ y++
    ------END GEEK CODE BLOCK------ .

  • ich hab "sync" bei den parametern in meiner fstab eingetragen; jetzt schreibt er sofort, alles schaut richtig aus (statusanzeige, file taucht auch auf), einen reinen unmount übersteht die datei, wenn ich außerdem den stick abziehe ist die file weg.

    mein eiintrag in der /etc/fstab:

    Code
    /dev/sda1               /mnt/stick      vfat            noauto,sync,users,umask=0000            0 0

    fdisk liefert mir, wenn ich den partition table ausgeben lasse, interessanterweise folgendes:

    Code
    Disk /dev/sda: 258 MB, 258998272 bytes
    16 heads, 32 sectors/track, 988 cylinders
    Units = cylinders of 512 * 512 = 262144 bytes
     
       Device Boot    Start       End    Blocks   Id  System
    /dev/sda1   *         1       988    252903+   6  FAT16
    Partition 1 has different physical/logical endings:
         phys=(999, 15, 32) logical=(987, 15, 32)

    kanns was mit diesen unterschiedlichen endings zu tun haben?

    ratlos...

    -----BEGIN GEEK CODE BLOCK-----
    Version: 3.12
    GAT d-(+) s++: a- C++$>+$ U++>+++ P++>+++ L+++ !E W++>$ !N K? w(--)@ !O !M V? PS+ PE++(-)> Y+ PGP(+) t---(-) !5 X R- tv-(--) b++>$ DI+ D+(++) G(+) e>++++* h-- r++ y++
    ------END GEEK CODE BLOCK------ .

  • ein Kernel-Update von 2.4.20 auf 2.6.1 hats gelöst.

    -----BEGIN GEEK CODE BLOCK-----
    Version: 3.12
    GAT d-(+) s++: a- C++$>+$ U++>+++ P++>+++ L+++ !E W++>$ !N K? w(--)@ !O !M V? PS+ PE++(-)> Y+ PGP(+) t---(-) !5 X R- tv-(--) b++>$ DI+ D+(++) G(+) e>++++* h-- r++ y++
    ------END GEEK CODE BLOCK------ .

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!