Manjaro - akkurate USB-Statusanzeige beim Kopieren

plain.text

Cadet 3rd Year
Registriert
März 2023
Beiträge
54
In der Vergangenheit habe ich mich immer wieder gefragt, warum diverse Linux-Distros es nicht hinbekommen, anzuzeigen, wie lange Kopier- oder Verschiebevorgänge von oder auf USB-Sticks oder -Platten wirklich dauern.
So manches Mal habe ich früher dann den Stick vor Abschluss des Schreibvorgangs gezogen, weil mir der Dateimanager angezeigt hat, dass der Vorgang bereits abgeschlossen ist. Insbesondere bei großen Dateien, wie Linux-ISOs, war das ein Problem. Natürlich sollte man den Stick vor dem Entfernen auswerfen. Wenn man den Stick jedoch per Klick auswirft und längere Zeit keine Nachricht kommt, dass der Stick sicher entfernt werden kann (weil der Schreibvorgang im Hintergrund noch gar nicht abgeschlossen ist), halte ich das für einen Misstand, der insbesondere für Umsteiger von Windows schwer zu verstehen und keinesfalls intuitiv ist.

Langer Rede kurzer Sinn: Für Manjaro gibt es jetzt im AUR von einem Manjaro-Entwickler (linux-aarhus) ein Paket mit UDEV-Regeln, dass dieses Problem behebt: udev-usb-sync
Das ist zwar derzeit noch work-in-progress, funktioniert mMn aber schon sehr gut und wird wahrscheinlich in Kürze auch offiziell Eingang in Manjaro finden.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: midnightblue
Schlauer wäre es wenn der Filemanager wartet bis der umount fertig ist, dann muss man nicht auf die Vorteile von write-back verzichten.

Man muss ja nicht jeden Unsinn von Windows übernehmen, ich rieche ja auch nicht an jeder Mülltonne.
 
  • Gefällt mir
Reaktionen: dasBaum_CH und andy_0
Der Filemanager zeigt den Unmount schon an. Nur - das kann dauern und der Laie versteht nicht, warum.
Oder missverstehe ich dich da?

Warum sollte man in Linux-Systemen auf - in meinen Augen kaputte - Statusanzeigen bestehen, die vollkommen Banane sind? Nur, damit man sich in seiner Nerdigkeit bestätigt sieht? Come on...
 
Ich kann das Problem ehrlich gesagt nicht nachvollziehen.

Wenn ich etwas auf meinen USB Stick kopiere dann gibt mir dolphin genauso eine Fortschrittsanzeige wie Windows.

Das ist wenn dann ja kein Problem von Distributionen sondern vom File Manager.
 
  • Gefällt mir
Reaktionen: Alexander2 und SpartanerTom
Möglicherweise ist das ein Distributions-/Archproblem? Oder die Dateien, die du kopierst sind zu klein, als das es auffällt.
Ich nutze auch Dolphin. Das Problem hatte ich aber auch mit Thunar.
 
Ich benutze endeavourOS.
Kann nachher wenn ich Zeit habe es nochmal explizit mit einer paar gigabyte großen ISO testen.

Bis jetzt ist es mir beim Hantieren mit isos aber zumindest nicht im Gedächtnis geblieben.
 
Würde mich interessieren!
"Versuchsaufbau" wäre: Große ISO auf Stick kopieren und nach Verschwinden der Dolphin-Kopieren-Statusanzeige den Stick direkt auswerfen. Dann abwarten, wie lange es bis zur Auswurfbestätigung dauert.

Ist aber vermutlich auch noch abhängig von jeweils genutztem USB-Standard und Geschwindigkeit des Sticks.
 
Linux verwendet für Schreibvorgänge standardmäßig einen Zwischenspeicher (Cache) im RAM. Die Daten aus dem Cache werden dann in den eigentlichen Speicher geschrieben bzw. "synchronisiert". Wann und wie schnell die Synchronisierung vollendet ist, das hängt von verschiedenen Faktoren wie die Kernel-Einstellungen und der Geschwindigkeit des Datenbusses und des Speichermediums ab.

Gerade bei USB-Speichermedien kann sich dies bei größeren Dateien dann schon mal etwas in die Länge ziehen. Die Statusanzeige zeigt zwar an, dass die Aktion angeblich schon fertig sei, man jedoch aber spätestens beim Auswerfen des USB-Speichermediums noch einige Zeit warten muss.

USB-Speichermedien wie Sticks und Festplatten (auch SSDs) haben zudem auch einen eigenen Zwischenspeicher. Der Controller speichert die empfangenen Daten zuerst auf dem deutlich schnelleren Zwischenspeicher (RAM) und der eingebaute Controller schiebt die Daten aus dem Zwischenspeicher dann auf das eigentliche Speichermedium. Das ist auch der Grund, warum beim Kopieren von größeren Dateien auf ältere (langsamere) USB-Speichermedien die Geschwindigkeit nach 1-2 Minuten deutlich abnimmt. Denn dann ist der schnelle Zwischenspeicher des USB-Speichermediums voll geschrieben und der Controller meldet dem Computer "mach mal bitte etwas langsamer" mit dem Senden der Daten.

Bei Linux kann man die Synchronisierung in der Konsole mit dem Befehl "sync" anstoßen bzw. eine Rückinfo geben, wann der Sync vollendet ist. Allerdings wird hier keine Zeitangabe angegeben (ich wüsste jedenfalls nicht, dass das möglich ist). Allerdings ist die Synchronisierung fertig, sobald die Ausführung von "sync" auch beendet wurde.

Hier auch mehr Informationen dazu...
https://profi-tutorials.de/linux/administration/befehl-sync/
https://www.computerhope.com/unix/sync.htm

Die von plain.text erwähnten udev-regeln machen wohl nichts anderes, als beim hinzufügen eines USB-Speichermediums den Kernel anzuweisen, keinen Schreib-Cache für das gerade angeschlossene Gerät zu verwenden.

https://codeberg.org/wonky/udev-usb-sync
When copying large amount of files to an USB storage this often results in some wait time until the device can be safely removed.
How long you have to wait depends on your system and the quality of the USB storage device.
Numerous issues regarding this has resulted in various suggestions involving sysctl tweaks and trim.

udev rule to disable write-cache

Windows nutzt übrigens auch einen Schreib-Cache. Auch hier muss man manchmal etwas länger warten, bis man ein USB-Speichermedium nach dem "Auswerfen" wirklich entfernen kann.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Wolfenmond, midnightblue, andy_0 und 3 andere
Ich hab das , wie vom TE beschrieben, auch mit Xubuntu / Thunar......das kann für den unaufmerksamen PC Laien unangenehm werden.....
 
  • Gefällt mir
Reaktionen: plain.text
@undefined
Danke für die technische Aufdröselung!

Ich persönlich finde das Abwarten bis zum Auswerfen gar nicht so problematisch.
Mich stört eher, dass es im Dateimanager so scheint, als ob alle Vorgänge abgeschlossen sind, obwohl die Cache-Speicher noch geleert werden. Für mich ist das pain-in-the-ass.
For others the mileage may vary...
 
Zuletzt bearbeitet:
plain.text schrieb:
Ich persönlich finde das Abwarten bis zum Auswerfen gar nicht so problematisch.
Mich stört eher, dass es im Dateimanager so scheint, als ob alle Vorgänge abgeschlossen sind, obwohl die Cache-Speicher noch geleert werden. Für mich ist das pain-in-the-ass.
For others the mileage may vary...
Man soll Probleme dort fixen wo die entstehen, und das müffelt hier ganz stark nach dem Filemanager.
 
Ich kenne das Problem von früher, aber bei Fedora/Gnome/Nautilus gibts das schon seit ca 2-3 Jahren nicht mehr. Alles exakt hier, und ich kopiere kleine, viele und/oder große Dateien.
 
plain.text schrieb:
In der Vergangenheit habe ich mich immer wieder gefragt, warum diverse Linux-Distros es nicht hinbekommen, anzuzeigen, wie lange Kopier- oder Verschiebevorgänge von oder auf USB-Sticks oder -Platten wirklich dauern.
Ich hab gerade mal bei mir geschaut. Thunar zeigt die Restzeit an.

IMG_2394.png

Nemo hängt den Stick unmittelbar aus, anders als Thunar.
 
  • Gefällt mir
Reaktionen: plain.text
@sedot Die Restzeit wird auch bei Dolphin angezeigt, nur dass der nach Schließen der Anzeige der Kopiervorgang bei großen Dateien und/oder langsamen Medien noch nicht wirklich beendet ist, da - wie oben erwähnt - noch Cache-Speicher geleert werden und bei Entfernen des Mediums in dieser Phase Fehler auftreten können.

Wenn man @foofoobar 's Argumentation folgt, ist die Frage also: Gibt es Dateimanager, die das Leeren der Schreib-Caches in der Anzeige berücksichtigen!? Bzw. ist das technisch seitens des Dateimanagers möglich?

Und ist es nicht vielleicht doch sinnvoller, die Lösung Distro-weit zu verankern, als auf den Dateimanager zu pochen?

CCC-Content 👍
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Nowareeng
Thunar hat einen 'Auswerfen' (eject) Knopf, der Einen bis zum sicheren Abziehen unmissverständlich begleitet. Der Rest ist nur Kosmetik und irrelevant. Hauptsache es wird nicht geblockt und die IOPs bleiben frei.

Mounte mit direct sync und dein "Problem" ist verschwunden.
 
Zuletzt bearbeitet:
plain.text schrieb:
@sedot Die Restzeit wird auch bei Dolphin angezeigt, nur dass der nach Schließen der Anzeige der Kopiervorgang bei großen Dateien und/oder langsamen Medien noch nicht wirklich beendet ist, da - wie oben erwähnt - noch Cache-Speicher geleert werden und bei Entfernen des Mediums in dieser Phase Fehler auftreten können.

Wenn man @foofoobar 's Argumentation folgt, ist die Frage also: Gibt es Dateimanager, die das Leeren der Schreib-Caches in der Anzeige berücksichtigen!? Bzw. ist das technisch seitens des Dateimanagers möglich?
Nochmal: Der Filemanager soll einfach darauf warten bis umount(2) fertig ist.
 
Uridium schrieb:
Der Rest ist nur Kosmetik und irrelevant.
Sehe ich definitiv anders.

Wenn die Status- bzw. Restzeitanzeige den Vorgang aber nicht von Anfang bis Ende plausibel darstellt, kann man sich das Gedöns allerdings gleich ganz sparen - da magst du Recht haben.
 
  • Gefällt mir
Reaktionen: sedot und Nowareeng
@plain.text
Nachdem ich jetzt nochmal geschaut habe, sowohl Nautilus, Nemo und Thunar haben bei mir das von dir beschriebene Verhalten.
Erzwingen kann ich den Auswurf mit Nemo und Nautilus.
Meine Installation kann ich als Fehlerursache gerade nicht ausschließen, jetzt aktuelles Tumbleweed.
 
Aus ergonomischer und technischer Sicht ist das aber korrekt. Die Daten sind ordnungsgemäß (aus dem Userspace) übergeben worden.

Die Standardcommitrate liegt bei 5 Sekunden. Viele setzen das hoch auf 30 oder mehr oder schalten fsync sogar komplett ab. Auch so manches Dateisystem hält sich bewusst mit writebacks lange zurück. Was soll dann passieren? Das Kopierfenster ewig offen halten? Für sämtliche Anwendungsfälle eine eigene Logik bereitstellen?

Microsoft hatte auch irgendwann die Reißleine gezogen und USB Sticks nur noch ohne Schreibcache gemountet, weil es bei Heimusern zu Irritationen kam.

Diese Lösung ist auch nicht verkehrt für mobile Datenträger (simple/einzelne Datentransfers). Das kann in Linux via udev Regel definiert werden.
 
Zuletzt bearbeitet:
Zurück
Oben