Schreiben auf USB stick, kein Progress?

Hallo zusammen.
Mir ist mehrfach aufgefallen, das wenn ich auf einen Stick schreibe, dieser manchmal noch minuten lang aktiv ist obwohl die dateioperation scheinbar abgeschlossen ist.
Das ist beim einfachen kopieren von Dateien so, als auch beim schreiben eines ISO mit DD z.b.
Ich muss also tatsächlich warten bis die led vom stick aufhört zu flackern bevor ich ihn auswerfen/entfernen kann.

Gibt es eine Möglichkeit den zu “lock,en” bis der auch wirklich fertig ist ?

Das blinken bedeuted, das der Inhalt des Caches auf den Stick geschrieben wird. Das heißt, wenn du z.Bsp. Dateien per Dateimanger auf den Stick schiebst, wird der Cache gefüllt und das Schreiben läuft parrallel los. Der Dateimanger hat erkannt, das die gesamte Datei in den Cache geschoben wurde und signalisiert dir: Ich bin fertig. Dem ist aber in der Realität nicht so, denn der Schreibcache muss sich jetzt noch auf den Stick entleeren (das ist ein Hintergrundprozess des Kernels).
Solange der Cache nicht leer ist, kannst du den Stick nicht auswerfen.
Wenn dich das stört, musst du deine Dateioperationen (Verschieben, Kopieren,…) auf der Kommandozeile ausführen und die “sync” Option verwenden. Dann wird dir genau gezeigt, wann der komplette Schreibvorgang fertig ist.

Siehe auch sync › Wiki › ubuntuusers.de

Danke!, der Kernelprozess hat ja sicher einen namen, du weißt nicht zufällig wie der heißt?
Ich könnte dann statt mit sync ja auch mit wait arbeiten um sicher zu gehen.

Ich verwende immer oflag=direct, zum Beispiel:

dd if=manjaro-kde-22.0-221224-linux61.iso of=/dev/sdb bs=4M oflag=direct status=progress

Wenn dd fertig ist dann ist auch der Stick vollständig geschrieben.

Ein Aushängen des Datenträgers per “Sicheres entfernen” (umount) ist erst möglich, wenn der Schreibpuffer (write cache) leer ist. Vorher wird das Aushängen vom Betriebssystem abgelehnt. Zur generellen Handhabung von Wechselmedien siehe auch:

Der Schreibpuffer kann pro Gerät ausgeschaltet werden. Das händische Ausschalten des Schreibpuffers ist NICHT zu empfehlen!

Zum dd-Parameter “oflag=direct” gibt es hier:

noch ein wenig Lesestoff.

Öfters wird auch der sync-Befehl nach dem dd-Befehl empfohlen. Siehe dazu:

Was der sync-Befehl bewirkt, kann man im bereits verlinkten Ubuntuuser-Wiki nachlesen.

TL;DR:

Der Cache von Linux ist fast immer eine gute Sache. Auf meinem aktuellen Rechner mit AMD Ryzen 5 5600X kriege ich an die dreißig Gigabyte pro Sekunde.

Nur in speziellen Fällen ist er ziemlich unnütz. Dazu gehört das Beschreiben von USB-Sticks mit dd, siehe Schreiben auf USB stick, kein Progress? - #4 by karlmistelberger.

Licht ins Dunkel bringt dd command oflag direct and sync flags - Unix & Linux Stack Exchange.

Hmm, da “dd” nur unter root ausgeführt werden kann, werfe ich den stick natürlich faul wie ich bin anschließend mit “eject” aus. Ich nehme an das system wird deshalb nicht meckern.

Vielen Dank für das Lesematerial und die Tips. Ich denke damit kann ich weitere “Unfälle” mit Sticks vermeiden :slight_smile:

Falsch. Was du machst kann nur von root gemacht werden weil du direct zum Device File (/dev/sd…) schreibst. Nicht weil dd nur für root funktionieren soll.