在 USB 驱动器上写入大文件时传输“冻结”

在 USB 驱动器上写入大文件时传输“冻结”

当我尝试转移大文件(1GB 或更大)保存到 USB 驱动器(2.0、3.0,无论是 HDD 还是“笔式驱动器”)一切正常,文件传输正确(尝试了原始文件和传输文件的 md5 总和并且它们确实匹配)...

然而都在命令行上 (mv *bigfile* /media/*username*/*name_of_the_drive*/) 并使用 GUI(目前在 Ubuntu 15.10 的 MATE 桌面上运行,但在其他版本上也会发生这种情况)在传输结束时对话框中的进度条冻结(使用控制台时它会冻结)。因此,当我“认为”传输已完成时,我必须手动关闭对话框/终端。

另外,当我尝试使用以下方法写入可启动 USB 驱动器时制作启动盘实用程序,应用程序面临同样的问题并冻结,仍然保持“写入会话”打开,即使我关闭它也不允许我卸载 USB。在尝试其他版本的 Ubuntu 15.10(我尝试了几个)时,它实际上显示了一个对话框错误,内容如下:

“文件已正确传输至 USB 驱动器,但程序无法向内核传达写入已完成的信息。”

我很抱歉没有报告确切的警告,但我确实记得我读到的内容的含义。

当前在安装了 GTX960M 和专有 Nvidia 驱动程序的 x64 笔记本电脑上运行 15.10 MATE、内核 4.4.1。

附言:我更新了内核到 4.4.1,看看是否可以解决这个问题,因为在 4.2.0_27 上仍然会出现同样的问题。但显然没有。

提前感谢您的帮助,

F。

答案1

我确实找到了答案这里事实上,问题是由于安装了 16GB RAM 造成的。写入缓冲区实际上太大了。我已通过以 root 身份登录解决了此问题:

su root

然后将脏字节设置为一个固定的数字(我猜默认设置 0 实际上并没有限制写入缓存的大小),通过输入:

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

我选择这个尺寸作为一个很好的折衷方案,现在问题已经解决。

相关内容