Das Auswerfen meiner Flash-Laufwerke dauert *sehr* lange

Das Auswerfen meiner Flash-Laufwerke dauert *sehr* lange

Ich führe eine Neuinstallation von Debian 8 aus und muss oft eine lächerliche Zeit warten, bis meine Flash-Laufwerke ausgeworfen werden (zwischen 1 und 10...15 Minuten). Während dieser Zeit kann ich auf nichts zugreifen, was das Laufwerk betrifft, da ich den Fehler erhalteAn operation is already pending.

Es scheint, als hätte es mit dem Format des Flash-Laufwerks nichts zu tun (ich habe es mit FAT, ext4 und NTFS versucht), aber es scheint auch zu starten, wenn ich anfange, Dateien darauf zu speichern (allerdings nichts Großes, ca. 500 MB).

Was könnte die Ursache für dieses Problem sein? Kann ich etwas tun, um den Auswurf zu beschleunigen?

Antwort1

Obwohl ich nicht weiß, ob dies die tatsächliche Erklärung/Lösung für Ihre Frage ist, glaube ich, dass es sich hier um ein allgemeines USB-Problem handelt.

Wenn Sie große oder viele Dateien kopieren, sendet das USB-Gerät eine Meldung an den Host mit dem Inhalt „Ich werde Ihnen diese Dateien senden“. Das Gerät sendet dann alle Dateien asynchron und nimmt sich dafür die nötige Zeit. Das bedeutet, dass cp /my/flash/drive/foo.txt /home/bar/foo.txtdas Gerät dem Betriebssystem bei der Ausführung mitteilt, dass Dateien kopiert werden, und die Dateien dann sendet.

Die einzige mir bekannte Möglichkeit zu prüfen, ob tatsächlich alle Daten übertragen wurden, besteht darin, syncnach einem Befehl einzugeben, der Dateien auf einem Flash-Laufwerk kopiert/verschiebt oder löscht. Der Synchronisierungsbefehl wird dann einfach blockiert, bis das Laufwerk mit der Datenübertragung fertig ist. Danach sollte es sicher sein, ein USB-Flash-Laufwerk zu trennen/auszuwerfen.


[EDIT]: Prüfendieser Beitragum den Fortschritt der syncOperation zu verfolgen: die Nummer, die beim Ausführen ausgegeben wird

watch grep -e Dirty: -e Writeback: /proc/meminfo

sollte bis auf Null sinken, da im Hintergrund Datenübertragungen stattfinden. Wenn dies abgeschlossen ist, syncist Ihr Vorgang abgeschlossen und Ihr Flash-Laufwerk wird ausgeworfen.


Ein weiteres häufiges Problem beim Auswerfen von USB-Speichergeräten ist, dass zumindest Debian dies nicht zulässt, wenn ein Programm, Terminal oder Ähnliches gerade an Dateien/Ordnern auf diesem Flash-Laufwerk arbeitet. Wenn Sie also in einem Terminal das Verzeichnis zu einem Ordner auf diesem Flash-Laufwerk geändert haben und dann versuchen, das Flash-Laufwerk mit einem anderen Terminal auszuwerfen, wird dies nicht zugelassen, bis Sie im ersten Terminal das Verzeichnis an einen anderen Ort als das Flash-Laufwerk geändert haben.

Antwort2

Dies liegt wahrscheinlich an der Ansammlung zwischengespeicherter Schreibvorgänge, die noch nicht auf das Gerät geschrieben wurden, wie in„Das heimtückische USB-Stick-Stall-Problem“.

Als Workaround können SieBegrenzen Sie die Menge an fehlerhaftem Speicheraufgrund ausstehender IO:

echo $((16*1024*1024)) | sudo tee /proc/sys/vm/dirty_background_bytes
echo $((48*1024*1024)) | sudo tee /proc/sys/vm/dirty_bytes

verwandte Informationen