我之前也遇到过类似的问题,但我不记得我是如何解决的。
当我尝试使用FAT复制某些东西到USB记忆棒时,它几乎快停了下来,有时会达到100%。当然,当我将记忆棒转移到其他地方时,它不包含完整的文件。(文件是电影!)
我试图用-o flush挂载设备,但是我遇到了同样的问题。
另外,我确实用新的FAT分区格式化USB记忆棒...
知道我会感冒吗?
ps:我认为这与Debian操作系统无关,并且我相信从SSD驱动器应对不会使它卡住。
我之前也遇到过类似的问题,但我不记得我是如何解决的。
当我尝试使用FAT复制某些东西到USB记忆棒时,它几乎快停了下来,有时会达到100%。当然,当我将记忆棒转移到其他地方时,它不包含完整的文件。(文件是电影!)
我试图用-o flush挂载设备,但是我遇到了同样的问题。
另外,我确实用新的FAT分区格式化USB记忆棒...
知道我会感冒吗?
ps:我认为这与Debian操作系统无关,并且我相信从SSD驱动器应对不会使它卡住。
Answers:
发生这种情况的原因是程序说“写此数据”,并且Linux内核将其复制到排队进入磁盘的内存缓冲区中,然后说“确定,完成”。因此程序认为它已经复制了所有内容。然后程序关闭文件,但是突然之间,内核将其等待,直到将该缓冲区推出磁盘。
因此,不幸的是,该程序无法告知您刷新缓冲区所需的时间,因为它不知道。
如果您想尝试一些高级用户技巧,可以通过将内核参数设置为(15 MB)之vm.dirty_bytes
类的东西来减小Linux使用的缓冲区的大小15000000
。这意味着应用程序不能比实际进度多出15MB。(您可以随时更改内核参数,sudo sysctl vm.dirty_bytes=15000000
但要使它们在重新引导期间保持不变,则需要更改配置文件,例如/etc/sysctl.conf
可能特定于您的发行版的文件。)
副作用是,使用此设置可能会使计算机的数据写入吞吐量降低,但是总的来说,我发现程序在写入大量数据时运行了很长时间会有所帮助,而这与使用程序似乎已完成其工作,但由于内核执行实际工作,系统严重滞后。设置dirty_bytes
为适当的较小值还可以帮助防止系统在空闲内存不足时运行无响应,并运行程序突然写入大量数据。
但是,请不要将其设置得太小!我使用15MB作为粗略估计,即内核可以在1/4秒或更短的时间内将缓冲区刷新到普通硬盘。它使我的系统不再感到“松弛”。
旧问题,但似乎问题仍然存在。设置缓冲区,以15MB的建议在这里在Ubuntu 19.04没有工作,并把我的系统嘎然而止。
我试图将一个1.5GB的文件复制到一个空的(新格式化的)FAT32 16GB驱动器上。我让它运行了大约10分钟,只是看它是否会完成,没有运气。
重新格式化为NTFS可使操作在不到10秒的时间内完成。我不知道为什么这很重要,因为FAT32应该允许2GB以下的任何内容,但它似乎工作得很好。对于要与MacOS一起使用的驱动器而言,这不是理想的解决方案,但是对于所有其他用例而言,这是一个简单的解决方法。我以为exFAT可以起到类似的作用,但是我没有对其进行测试。