dd 函数完成后似乎冻结了

dd 函数完成后似乎冻结了

我正在尝试使用以下命令将 iso 复制到 USB 记忆棒上:

sudo dd bs=4M if=lubuntu-17.04-desktop-amd64.iso of=/dev/sdc status=progress 

很简单。iso 的大小为 912M。为什么输出文本在这里冻结而不是结束程序?

956301312 bytes (956 MB, 912 MiB) copied, 11.216 s, 85.3 MB/s

我甚至无法停止程序的运行ctr-c

答案1

您看到的行为只是dd在操作后同步磁盘上的数据。为了优化 IO 操作,Linux 通常会以比请求更大的块读取数据(预读)并延迟写入以便将它们合并(脏缓存)。在操作结束时,要么dd同步磁盘上的文件,要么内核隐式执行此操作,并且该过程保持活动状态,直到所有写入完成。

如果机器上没有其他大量 IO 操作,您应该能够通过查看“Dirty:”值来估计还剩下多少数据需要写入/proc/meminfo- 这是等待写入磁盘的总数据量。

可以使用以下 sysctl 调整旋钮控制系统一次可以保留在内存中的未写入数据量。默认情况下,仅使用比率。您可以以百分比(比率)或字节为单位定义该值。

vm.dirty_background_ratio
vm.dirty_ratio
vm.dirty_background_bytes
vm.dirty_bytes

您可以在这里找到这些参数的官方文档:

https://www.kernel.org/doc/Documentation/sysctl/vm.txt

相关内容