linux – Gnome,nautilus将文件复制到USB停止在100%或接近

我以前遇到过类似的问题,但我不记得我是怎么解决的.

当我尝试将某些东西复制到USB记忆棒时,使用FAT,它会在接近结束时停止,有时会在100%时停止.当然,当我将记忆棒转移到其他地方时,它不包含完整的文件. (档案是电影!)

我尝试使用mount -o flush挂载设备,但我遇到同样的问题.

另外,我用新的FAT分区格式化了USB记忆棒……

知道我做什么冷吗?

附:
我认为它与操作系统无关,这是Debian,我相信从SSD驱动器应对并不会让它卡住.

最佳答案
这种情况发生的原因是程序说“写这个数据”并且linux内核将它复制到一个排队进入磁盘的内存缓冲区,然后说“好,完成”.所以程序认为它已经复制了一切.然后程序关闭文件,但突然内核使它等待,同时缓冲区被推送到磁盘.

所以,不幸的是程序无法告诉你刷新缓冲区需要多长时间,因为它不知道.

如果您想尝试一些高级用户技巧,可以通过将内核参数vm.dirty_bytes设置为15000000(15 MB)来减小Linux使用的缓冲区的大小.这意味着应用程序在实际进度之前不能超过15MB. (您可以使用sudo sysctl vm.dirty_bytes = 15000000动态更改内核参数,但要使它们在重新启动时保持不变,需要更改/etc/sysctl.conf之类的配置文件,这可能是您的发行版特有的.)

副作用是您的计算机可能具有较低的数据写入吞吐量与此设置,但总的来说,我发现一个程序运行很长时间,而它写入大量数据与混淆程序似乎完成了它的工作,但系统在内核完成实际工作时严重滞后.将dirty_bytes设置为相当小的值也可以帮助防止系统在可用内存不足并运行突然写入大量数据的程序时无响应.

但是,不要把它设得太小!我使用15MB粗略估计内核可以在1/4秒或更短的时间内将缓冲区刷新到普通硬盘.它让我的系统感觉“迟钝”.

转载注明原文:linux – Gnome,nautilus将文件复制到USB停止在100%或接近 - 代码日志