使用 dd 将 Ubuntu ISO 刷入 USB 记忆棒:推荐的块大小

使用 dd 将 Ubuntu ISO 刷入 USB 记忆棒:推荐的块大小

运行时刷写 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米)

dd-块大小测试表

dd-块大小测试图

结论

  • 默认块大小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

相关内容