运行时刷写 Ubuntu 镜像bs
时,使用什么比较合理?我正在使用:dd
dd if=ubuntu-17.04-server-amd64.iso of=/dev/sda bs=1M
该ubuntu-17.04-server-amd64.iso
文件大小为685M。
我在一台强大的服务器上运行这个 dd 操作,使用bs=1M
。它花了将近 3 分钟(154 秒):
718274560 bytes (718 MB) copied, 154.192 s, 4.7 MB/s
我认为如果我使用更高的速度bs
,比如bs=500M
,它会更快(虽然我没有检查过)。
bs=
对于这样的 dd 命令,推荐使用什么可靠的命令?
答案1
我的标准dd
块大小是bs=4096
几年前,我测试了不同的块大小,发现bs=4096
在大多数情况下都是一个不错的值。将块大小增加到更高的值也没什么大区别。如果我理解正确的话,这也是几个程序(cat、cp 等)使用的值。这是dd
在后台使用的块大小韓國。
自从我测试了不同的块大小后,情况可能有所改变,但我认为你的情况的速度受到闪存硬件的限制。即使通过 USB 2 连接,快速的 USB 3 闪存盘或快速存储卡的速度也会快 5 倍(~25 MB/s)。请参阅此链接及其中的链接,
help.ubuntu.com/community/Installation/FromUSBStick#Notes_about_speed
因此您可以继续bs=1M
或使用bs=4096
。
如果您愿意,可以尝试一些不同的块大小,但不要期望有任何大的改进。请回来报告结果,特别是如果您发现有重大改进。在这种情况下,指定硬件和操作系统(Ubuntu 版本)也很重要。
编辑:新测试
我再次进行了测试,使用当前的 Lubuntu 16.04 LTS 版本以及不同类型和年份的计算机硬件,如下表和图表所述。
测试详细信息Test details
- 测试使用 shell 脚本运行,针对每个块大小清除并同步目标 USB 闪存盘的第一个 Gibibyte(用零覆盖),然后克隆并同步来自 Lubuntu iso 文件(它比一 Gibibyte 略小,因此位于 pendrive 的擦除部分内)。
dd
在所有情况下都使用纯命令行(没有通过管道pv
或类似命令)。大多数测试都是在安装在 SSD 上的 Lubuntu 16.04.2 LTS amd64 系统(带有 yakkety 内核)上运行的,但 HP xw8400 工作站中的测试是在内部 HDD 上安装的 Lubuntu 16.04 LTS i386 系统(带有 xenial 内核)上运行的。
“Extreme” 和 “Cruzer_blade” 是 Sandisk USB 闪存盘型号
- “驱动器端口”是目标 USB 闪存盘连接的位置
“os 端口”是安装有操作系统的 SSD 或 HDD 的连接位置
log (block size)
下表列出了更多详细信息,由于块大小值范围的特征,下图中沿 x 轴显示了由于块大小导致的变化,- 512(默认)
- 4096(4K)
- 65536(64千)
- 1048576(1百万)
- 4194304(4米)
结论
默认块大小
bs=512
(字节)很dd
慢。使用块大小进行克隆,
bs=4096 to 4M
以“全速”运行。测试用例之间只有细微的差别(除了bs=512
)。
答案2
使用兼容 USB 3.x 的 USB 记忆棒,我可以获得 65MB/s 的 ISO 刻录速度。
sudo dd if=xubuntu-20.04.1-desktop-amd64.iso of=/dev/sdb bs=4M
405+1 records in
405+1 records out
1699577856 bytes (1.7 GB, 1.6 GiB) copied, 26.4146 s, 64.3 MB/s