使用 dd 将 Ubuntu ISO 闪存到 U 盘:推荐的块大小

Kev*_*son 8 usb-drive dd

bs运行dd刷新 Ubuntu 映像时使用什么是合理的?我在用:

dd if=ubuntu-17.04-server-amd64.iso of=/dev/sda bs=1M
Run Code Online (Sandbox Code Playgroud)

ubuntu-17.04-server-amd64.iso文件是685 M.

我在一个强大的服务器上运行这个 dd 操作,使用bs=1M. 大约需要 3 分钟(154 秒):

718274560 bytes (718 MB) copied, 154.192 s, 4.7 MB/s
Run Code Online (Sandbox Code Playgroud)

我假设如果我使用更高的bs, like bs=500M,它会更快(虽然我没有检查它)。

bs=对于此类 dd 命令,推荐和可靠的是什么?

sud*_*dus 14

我的标准dd块大小是bs=4096

几年前,我测试了不同的块大小,发现bs=4096在大多数情况下这是一个很好的值。将块大小增加到更高的值没有太大区别。如果我理解正确的话,它也是多个程序(cat、cp 等)使用的值。这是用于mkusbdd引擎盖下的块大小。

自从我测试了不同的块大小后,情况可能发生了变化,但我认为您的情况下的速度受到闪存硬件的限制。即使通过 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 版本,以及不同类型和年龄的计算机硬件,如下表和图表中所述。

测试详情

  • 该测试使用 shell 脚本运行,对于每个块大小,擦除并同步目标 USB 闪存盘的第一个 Gibibyte(用零覆盖),然后从 Lubuntu iso 文件(略小于 1 Gibibyte,所以在笔式驱动器的擦拭部分内)。
  • 在所有情况下dd都使用了纯命令行(没有通过管道pv或类似命令)。
  • 大多数测试是从安装在 SSD 中的 Lubuntu 16.04.2 LTS amd64 系统(带有 yakkety 内核)运行的,但在 HP xw8400 工作站中运行的测试是在内部安装了 Lubuntu 16.04 LTS i386 系统(带有 xenial 内核)硬盘。

  • “Extreme”和“Cruzer_blade”是 Sandisk USB 闪存盘型号

  • “驱动器端口”是连接目标 USB 随身碟的地方
  • 'os port' 是 SSD 或 HDD 与操作系统的连接位置

  • 下表列出了更多详细信息,由于log (block size)块大小值范围的特性,下图中沿 x 轴说明了由于块大小而导致的变化,

    • 512(默认)
    • 4096 (4K)
    • 65536 (64K)
    • 1048576 (1M)
    • 4194304 (4M)

dd-blocksize-test-table

dd-blocksize-test-graphs

结论

  • 默认块大小bs=512(字节)使dd速度变慢。

  • bs=4096 to 4M以“全速”运行的块大小进行克隆。测试用例之间只有细微的差别(除了bs=512)。