我正在尝试使用以下命令将 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
您可以在这里找到这些参数的官方文档: