System friert ein / reagiert nicht / nicht mehr, wenn große Dateien auf USB kopiert werden

50

Gestern habe ich eine einzelne 8-GB-Datei mit einer langsamen Schreibgeschwindigkeit von 7 MB / s auf einen USB-Stick kopiert, während mein RAM 3 GB beträgt. Während des Kopierens blieb das System stehen, bis ich den Cursor nicht mehr bewegen konnte.

Ich habe es geschafft, mich bei der Textkonsole anzumelden, und lief iotop. Es zeigte sich, dass ein Prozess mit dem Namen kswapd099,99% der E / A-Vorgänge beanspruchte.

Gibt es Problemumgehungen, damit das Kopieren einer großen Datei mein System nicht unbrauchbar macht?

Sashoalm
quelle
12
Dieser Fehler ist so lächerlich ...
king_julien
Ja, das passiert nicht nur mit Ubuntu, sondern auch in anderen Debian-Varianten. Ich habe das gleiche Problem auch bei Kali Linux und Parrot OS gesehen. Kali hat das Worst-Case-Szenario, während Papagei es glatt macht, obwohl es für sehr große Größen hängt. Ich denke, es ist das Problem im Linux-Kernel und wie es geschrieben ist. Dies ist und bleibt der schlimmste Albtraum unter Linux aller Zeiten.
Mohith7548

Antworten:

32

Gemäß diesem Fehlerbericht habe ich es gelöst, indem ich folgende Zeilen hinzugefügt habe

vm.dirty_background_ratio = 5
vm.dirty_ratio = 10

in /etc/sysctl.conf

und läuft

sudo sysctl -p
Philippe Gachoud
quelle
12
Möchten Sie erklären, was die obigen Zeilen bewirken?
nsane
3
@ Nisargshah95 Entschuldigung, aber keine Ahnung, suchen Sie selbst ;-)
Philippe Gachoud
4
@ nisargshah95 Die Details des Problems werden in den beiden LWN-Artikeln erläutert, die in unix.stackexchange.com/a/107722/52205
Rmano,
1
Danke, ich habe gerade festgestellt, dass mein Ubuntu 16.04 ohne diese beiden Leitungen keine zwei 1,4 GB-Dateien auf USB schreiben kann, ich wurde stundenlang eingefroren, dieses gelöste Problem, wen interessiert es, was es macht, manchmal will man einfach nur Dateien kopieren und verschieben auf.
Mike
1
Ich hatte Werte von 5 und 60. Diese steuern den Prozentsatz des für Operationen verwendeten Speichers dirty_background_bytesund dirty_bytesverwenden absolute Bytes. Ich habe dieses Problem mit der zweiten Antwort behoben, aber um es dauerhaft hinzuzufügen sysctl.conf, lesen Sie diese Antwort . Wenn Sie also Prozentwerte verwenden, optimieren Sie diese beim Aufrüsten des Speichers.
PeterM
20

Ich bin auf ein ähnliches Problem gestoßen. Meins ist 64 Bit Ubuntu 14.04. Nach einem langen Kampf fand ich eine Antwort, die mein Problem löst. Zur einfachen Verwendung habe ich die folgenden Befehle hinzugefügt, die in der oben genannten Antwort verwendet wurden . Überprüfen Sie die Antwort auf detaillierte Erklärungen.

echo $((16*1024*1024)) > /proc/sys/vm/dirty_background_bytes
echo $((48*1024*1024)) > /proc/sys/vm/dirty_bytes

Nach Verwendung des obigen Befehls begann das System normal mit dem Kopieren von Dateien zu arbeiten.

Vielen Dank an @Rmano .

Mahendran Sakkarai
quelle
2
Die Verhältniseinstellungen haben auf meinem 12.04-System mit einer langsamen NAS-Freigabe nicht geholfen. Nach dem Einstellen der Bytes direkt, wie hier vorgeschlagen, kann mein System beim Kopieren auf den NAS wieder verwendet werden.
Mivk
6
Diese Frage ist 3 Jahre alt und wird immer noch benötigt, um zu verhindern, dass beim Kopieren auf pendrive ein unbrauchbares System entsteht. Einige Infos: Wenn das pendrive mit einer Linux-Datei wie ext4 formatiert ist, passiert dies nicht. Wenn ich sagte "unbrauchbares System", dann meine ich es ernst, der Mauszeiger reagiert nicht mehr und Sie müssen darauf bestehen, ihn über den Bildschirm zu bewegen. Sie schauen auf den Systemmonitor und es gibt keine ungewöhnliche Ressourcennutzung. Verwenden die Kernel-Leute alle Intel-CPUs und SSD-Laufwerke der 6. Generation? Wie kommt es, dass sie dies beim Testen nicht bemerken?
Hatoru Hansou
3
@HatoruHansou Mir geht es genauso, ich habe gerade Debian Stretch installiert und dieser Fehler ist auch hier vorhanden. Ich weiß, es kommt nicht auf die Distribution an, sondern auf die Kernelquellen, aber Männer, wie kommt es, dass dies immer noch nicht behoben ist?
Marecky
1
@Marecky Nach einigem Lesen sieht es so aus, als ob die dirty_bytes keine reine USB-Sache sind. Sie wirken sich auf alle E / A aus. Wenn Sie also das Echo ausgeführt haben, ändern Sie das System global, nicht nur für Pendrives. Ich denke, nur für die aktuelle Sitzung. Es scheint, dass die aktuellen Werte des Kernels in neueren Speichergeräten optimiert sind. Langsame Pendrives leiden unter einer Nebenwirkung. Entschuldigung, kein Link, aber dies muss leicht zu finden sein, indem Sie darauf googeln.
Hatoru Hansou
3
Siehe diese Antwort , um es dauerhaft
PeterM
5

Beim Kopieren auf ein Flash-Laufwerk tritt ein ähnliches Problem mit dem Einfrieren des Systems auf. Ich habe einen Fehlerbericht darüber eingereicht: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1267648

Als Workaround fand ich, dass das Deaktivieren von Swap das Problem vollständig beseitigt.

Vladimir Rutsky
quelle
1
Leider hat das auf Ubuntu 16.04 bei mir nicht geklappt.
Programster
Funktionierte auch nicht mit Ubuntu 16.04.3 LTS - dies auf einem Alienware 17 R2-Laptop.
AnthonyK
4

Ja, es gibt Kernel-Einstellungen, mit denen Sie festlegen können, wie viele Daten als geschrieben markiert werden müssen, bevor sie tatsächlich auf die Festplatte geschrieben werden. Schauen Sie hier für eine ziemlich umfassende Beschreibung von ihnen. Insbesondere möchten Sie einen Wert für dirty_ratio finden, der für Sie gut geeignet ist (in der Regel ist er für Desktop / Laptop standardmäßig zu hoch, aber es gibt keine magische Zahl, die für alle geeignet ist).

Bandrami
quelle
2
Hey, könntest du mir bitte vorschlagen, welche Nummern ich basierend auf meinen Laptop-Spezifikationen einstellen muss? refer askubuntu.com/questions/713723/…
1

Ich hatte ähnliche Probleme beim Kopieren von Dateien auf ein exfatLaufwerk. Ich hatte weniger Probleme mit der Verwendung eines ext4Dateisystems auf meiner USB-Festplatte.

Keule
quelle
1
Hatte dieses Problem auch auf ext4
PeterM
Fedora 27 (Kernel 4.17.5-100) kopiert vom USB-Stick auf den USB-Stick. Dies scheint so weit zu gehen, dass der Screenlocker in der Mitte der Überblendung eingefroren wird. :-( ~~~
David Tonhofer
1

Ich hatte gerade genau das gleiche Problem (im Jahr 2019) unter Ubuntu 19.10, als ich eine große Anzahl von Dateien von der USB-Festplatte auf die SATA-Festplatte kopierte. Beide Dateisysteme sind ext4. Als ich den Swap ausschaltete, verschwand das Problem. Es sieht nach einem Fehler in der Speicherzuordnung für Festplattenpuffer aus - anscheinend versucht der Kernel, in einer solchen Situation so viel Speicher wie möglich für Festplattenpuffer zuzuordnen, was keinen Sinn ergibt (Plattenpuffer in Swap erstellen ...) oder es berechnet nur fälschlicherweise die Speichergröße, die zum Cachen verwendet werden kann ...

Chaker
quelle