侏儒,鹦鹉螺复制文件到USB停止100%或接近


29

我之前也遇到过类似的问题,但我不记得我是如何解决的。

当我尝试使用FAT复制某些东西到USB记忆棒时,它几乎快停了下来,有时会达到100%。当然,当我将记忆棒转移到其他地方时,它不包含完整的文件。(文件是电影!)

我试图用-o flush挂载设备,但是我遇到了同样的问题。

另外,我确实用新的FAT分区格式化USB记忆棒...

知道我会感冒吗?

ps:我认为这与Debian操作系统无关,并且我相信从SSD驱动器应对不会使它卡住。


3
我在某个地方遇到了以下问题说明。如果通过操作内存进行复制,则标识符显示从驱动器读取数据的过程。但是,尤其是对于USB记忆棒而言,写入过程要长得多(它的速度可能会慢100倍:例如2Mb / sec的读取过程会产生200Mb / sec的读取速度),如果您在Linux下使用非本地文件系统(例如FAT或NTFS),则该过程会更长。因此,即使在100%停止但未关闭时也应尝试等待最终交易(这应表示完成)。
Costas

只是想知道是否有可能检查这种情况下的进度???

尝试格式化带选项的Pendrive覆盖零的退出数据它适用于我的trancend 8GB
Pendrive

对于遇到此问题的任何人,只需将驱动器格式化为NTFS。
Ricky Boyce

Answers:


37

发生这种情况的原因是程序说“写此数据”,并且Linux内核将其复制到排队进入磁盘的内存缓冲区中,然后说“确定,完成”。因此程序认为它已经复制了所有内容。然后程序关闭文件,但是突然之间,内核将其等待,直到将该缓冲区推出磁盘。

因此,不幸的是,该程序无法告知您刷新缓冲区所需的时间,因为它不知道。

如果您想尝试一些高级用户技巧,可以通过将内核参数设置为(15 MB)之vm.dirty_bytes类的东西来减小Linux使用的缓冲区的大小15000000。这意味着应用程序不能比实际进度多出15MB。(您可以随时更改内核参数,sudo sysctl vm.dirty_bytes=15000000但要使它们在重新引导期间保持不变,则需要更改配置文件,例如/etc/sysctl.conf可能特定于您的发行版的文件。)

副作用是,使用此设置可能会使计算机的数据写入吞吐量降低,但是总的来说,我发现程序在写入大量数据时运行了很长时间会有所帮助,而这与使用程序似乎已完成其工作,但由于内核执行实际工作,系统严重滞后。设置dirty_bytes为适当的较小值还可以帮助防止系统在空闲内存不足时运行无响应,并运行程序突然写入大量数据。

但是,请不要将其设置得太小!我使用15MB作为粗略估计,即内核可以在1/4秒或更短的时间内将缓冲区刷新到普通硬盘。它使我的系统不再感到“松弛”。


我一直在寻找解决此问题的方法长达一年或更长时间,我认为这只是linux中的错误。非常感谢。
Sidahmed

1
Linux noob在这里,有人可以发布如何更改<dirty_bytes>值吗?
Brofessor

@Brofessor哦,很抱歉,我应该用正式名称而不是/ proc详细信息来描述它。答案已更新。
无数据的

1
这类似于unix.stackexchange.com/questions/107703/…---应该已经修复,但请相信我,不是。我不得不将其添加到Ubuntu 18.04中,以停止表现有趣的行为
Rmano

同样适用于Fedora 30。即使在现代Linux发行版中也看到如此愚蠢的行为,我感到很惊讶。
sziraqui

0

旧问题,但似乎问题仍然存在。设置缓冲区,以15MB的建议在这里在Ubuntu 19.04没有工作,并把我的系统嘎然而止。

我试图将一个1.5GB的文件复制到一个空的(新格式化的)FAT32 16GB驱动器上。我让它运行了大约10分钟,只是看它是否会完成,没有运气。

重新格式化为NTFS可使操作在不到10秒的时间内完成。我不知道为什么这很重要,因为FAT32应该允许2GB以下的任何内容,但它似乎工作得很好。对于要与MacOS一起使用的驱动器而言,这不是理想的解决方案,但是对于所有其他用例而言,这是一个简单的解决方法。我以为exFAT可以起到类似的作用,但是我没有对其进行测试。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.