和:
- Kubuntu 22.04
~ 8000 GB ~ 8TB USB 硬盘
~ 8TB 每次 dd 命令耗时 15 小时
dd --version
dd (coreutils) 8.32
Ran dd ... urandom:
time sudo dd if=/dev/urandom of=/dev/sd_ bs=64K status=progress
输出
8001557168128 bytes (8.0 TB, 7.3 TiB) copied, 53987 s, 148 MB/s
dd: error writing '/dev/sda': No space left on device
122094166+0 records in
122094165+0 records out
8001563221504 bytes (8.0 TB, 7.3 TiB) copied, 54057 s, 148 MB/s
Ran dd ...零:
time sudo dd if=/dev/zero of=/dev/sd_ bs=64K status=progress
输出
8001543208960 bytes (8.0 TB, 7.3 TiB) copied, 53986 s, 148 MB/s
dd: error writing '/dev/sda': No space left on device
122094166+0 records in
122094165+0 records out
8001563221504 bytes (8.0 TB, 7.3 TiB) copied, 54057.4 s, 148 MB/s
对于以上2个命令,花费的
时间几乎相同~53986秒~15小时。
注意最后一行是相同的 8001563221504 字节。
但是,第一行字节不同:
+ 8001557168128 ~ 8000 GB, for urandom
- 8001543208960 ~ 8000 GB, for zero
---------------------------------------
+ 13959168 ~ 13.9 MB difference
dd ... urandom 输出超过了 13 MBytes。
为什么 dd 输出的第一行
相差超过 13 MB?
换句话说,
为什么上述两个命令的字节数不同:
dd ... urandom
和dd ... zero
?
答案1
这些“第一行”是不断更新的进度线。它们之所以存在是因为status=progress
。你在最后看到的是最后的dd
在每个相应的打印No space left
错误、打印通常的摘要(独立于status=progress
)并退出之前,进度线的状态。
在你的情况下,这些行仅意味着:
- 在 53987 秒内第一次
dd
复制了 8001557168128 字节, - 在53986秒内第二个
dd
复制了8001543208960字节。
偶然各个进度线的最后更新发生在这些时间和数据量的精确值上。两种情况之间的差异并不重要。轻微的波动可能会导致略有不同的值。
最终,每个人都dd
成功写入了 8001563221504 字节。这才是关键。我猜进度线大约每秒更新一次,但在这两种情况下,摘要都是在各自进度线最后一次更新后 60 多秒打印出来的因为同步。