dd 正在使用 bs 参数,但给出 IO 错误,但没有

dd 正在使用 bs 参数,但给出 IO 错误,但没有

我有一个 HDD 4TB WD 40EFRX(红色系列)并尝试检查该光盘的运行状况。实际上,我通过 gparted 删除了所有分区和表,并构建了一个新的表 + ex4 分区。随后,我想用零覆盖所有数据以删除旧数据。但是,我发现使用

dd if=/dev/zero of=/dev/sdb status=progress

导致一开始就出现 I/O 错误:

sudo dd if=/dev/zero of=/dev/sdb status=progress
474558976 bytes (475 MB, 453 MiB) copied, 38.0445 s, 12.5 MB/s
dd: writing to '/dev/sdb': Input/output error
927977+0 records in
927976+0 records out
475123712 bytes (475 MB, 453 MiB) copied, 46.6914 s, 10.2 MB/s

当添加选项 bs=64MB(该 HDD 的缓存为 64 MB)时,该命令运行得非常好。但是,根据 IO 错误,我猜测 HDD 不知何故已损坏,或者我也可以采取其他解决方法吗?顺便说一句,我的硬盘通过 SATA/USB 连接到我的笔记本电脑。

答案1

我承认我没有遇到过也没有听说过以下问题,但另一方面,我并不是硬盘故障专家......:-)

纯粹的 I/O 操作量可能会以某种方式导致问题。两种dd调用之间的读写操作次数相差 128,000 倍。我不知道 Linux 块层是否以某种方式重新排序对块设备的直接访问。如果是这样,那么这个因素就会更低。

您可以尝试较小的块大小。bs=512KB将会减少 1024 倍。也许您会发现,即使块大小远小于缓存大小,问题也会消失。

相关内容