将大文件复制到USB时系统冻结/无响应/无法使用


49

昨天,我将一个8 GB的文件复制到USB,写入速度为7 MB / s,而我的RAM为3 GB。复制系统冻结时,我什至无法移动光标。

我设法登录到文本控制台,然后运行iotop,它显示名为的进程kswapd0占用了99.99%的IO。

是否有解决方法,所以复制大文件不会使我的系统无法使用?


11
这个错误太荒谬了……
king_julien 2014年

Answers:


32

根据此错误报告,我添加了以下几行来解决它

vm.dirty_background_ratio = 5
vm.dirty_ratio = 10

进入/etc/sysctl.conf

并运行

sudo sysctl -p

12
小心解释以上几行是做什么的?
nsane 2015年

3
@ nisargshah95对不起,但没有任何线索,寻找自己;-)
Philippe Gachoud

4
@ nisargshah95问题的详细信息在unix.stackexchange.com/a/107722/52205
Rmano

1
谢谢,我刚刚发现我的Ubuntu 16.04如果没有这两行就无法将两个1.4 GB的文件写入USB,我被冻结了几个小时,这个问题已经解决了,谁在乎它做什么,有时您只想复制文件并移动上。
迈克,

1
我的值分别为5和60。这些值控制用于操作的内存百分比,而dirty_background_bytesdirty_bytes使用绝对字节值。我已经固定第二种回答这个问题,而是使之持续将其添加到sysctl.conf,看到这个答案。因此,当使用百分比值时,请在升级内存时对其进行调整。
PeterM

19

我遇到了类似的问题。我的是64位Ubuntu 14.04。因此,经过长时间的奋斗,我找到解决我问题的答案。为了便于使用,我在上面提到的答案中添加了以下命令。检查答案以获取详细说明。

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

使用上述命令后,系统开始在复制文件上正常工作。

感谢@Rmano


2
比率设置在NAS共享缓慢的12.04系统上无济于事。但是,按照此处的建议直接设置字节后,我的系统在复制到NAS时可以再次使用。
mivk

6
这个问题已有3年历史了,仍然需要这样做,以避免在复制到pendrive时导致系统无法使用。一些信息:如果pendrive是使用ext4之类的Linux fs格式化的,则不会发生。当我说“无法使用的系统”时,我的意思是真的,鼠标指针变得无响应,您必须坚持将其在屏幕上移动,您需要查看系统监视器,并且没有任何异常的资源使用情况。内核人都在使用第六代Intel CPU和SSD驱动器吗?他们为什么在测试时没有注意到这一点。
Hatoru Hansou

3
@HatoruHansou我的感觉也一样,我刚刚安装了新鲜的Debian Stretch,并且此错误也出现在这里。我知道这不取决于发行版,而是取决于内核源代码,但是,伙计们,为什么这还没有解决?
Marecky '17

1
@Marecky经过一番阅读之后,似乎dirty_bytes并不是一个usb本身。它们会影响所有I / O,因此在执行回显操作后,您将全局更改它们,而不是仅针对Pendrive。我认为,仅在本届会议上。似乎内核的当前值已在较新的存储设备中进行了调整。慢速笔驱动器会产生副作用。抱歉,没有链接,但是必须通过谷歌搜索才能轻松找到。
Hatoru Hansou

3
看到这个答案,使之持久化
-PeterM


4

是的,您可以调整内核设置,以指定在实际将数据写入磁盘之前必须将多少数据标记为已写入。在这里查找有关它们的相当全面的描述。特别是,您将需要找到一个对您来说效果很好的dirty_ratio值(默认情况下,对于台式机/笔记本电脑来说,该值通常过高,但是没有一个神奇的数字适用于所有人)。


2
嘿,您能建议我根据笔记本电脑的规格设置哪些数字?参考 askubuntu.com/questions/713723/...

1

将文件复制到exfat驱动器时,我遇到了类似的问题。使用ext4USB硬盘驱动器上的文件系统时,我的麻烦较少。


1
在ext4上也有这个问题
PeterM

Fedora 27(内核4.17.5-100)从USB连接的旋转铁锈复制到USB连接的闪光棒。这似乎可以使屏幕锁定程序在渐隐过程中冻结。:-( ~~~
David Tonhofer,

1

我在ubuntu 19.10上遇到了完全相同的问题(在2019年),同时将大量文件从USB磁盘复制到SATA磁盘。这两个文件系统都是ext4。当我关闭交换时,问题消失了。似乎在为磁盘缓冲区分配内存时出现了一些错误-显然,在这种情况下,内核会尝试为磁盘缓冲区分配尽可能多的内存,这没有任何意义(在交换中创建磁盘缓冲区...),或者它只是错误地计算出内存大小,无法用于缓存...

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.