我想用随机字节覆盖一个非常大的硬盘(18TB),然后检查智能数据是否存在重新分配的扇区或其他错误。
由于 badblocks 对一次运行中可处理的块数量有一些限制,我尝试了 archlinux wiki 上描述的“cryptsetup 方法”:
https://wiki.archlinux.org/title/Badblocks#Finding_bad_sectors
我在整个驱动器上设置了一个加密的逻辑设备域,然后使用命令“shred”将零写入打开的域设备:
cryptsetup open /dev/device eld --type plain --cipher aes-xts-plain64
shred -v -n 0 -z /dev/mapper/eld
它继续打印如下行:
shred: /dev/mapper/eld: pass 1/1 (000000)...870MiB/17TiB 0%
shred: /dev/mapper/eld: pass 1/1 (000000)...1.7GiB/17TiB 0%
...
shred: /dev/mapper/eld: pass 1/1 (000000)...4.1TiB/17TiB 24%
但随后它在写入 4.1TiB/17TiB 时停止了。我已使用 hexdump 验证了这一点,在字节地址 0x428249b0000(4570459340800 ~ 4.156 TiB)以外没有写入零:
hexdump -C --skip 0x428249a0000 /dev/mapper/eld | head
428249a0000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
428249b0000 b3 cd d0 34 72 15 f2 2c f6 32 90 fb 69 24 1f ec |...4r..,.2..i$..|
428249b0010 a0 f4 88 a5 56 e7 13 82 94 e5 e0 f5 37 da c3 59 |....V.......7..Y|
428249b0020 9b 55 9f d8 39 a1 41 dc 52 ca 7b 3a 95 f5 59 e2 |.U..9.A.R.{:..Y.|
许多标准命令似乎在处理大容量磁盘时存在问题,因为所涉及的数字对于 32 位数据类型来说太大。Linux 上的哪些读/写工具能够可靠地读取/写入超出这些 2TiB、4TiB 假想边界的值?
答案1
编辑:根据评论更新
我只需使用
dd if=/dev/urandom of=/dev/sdX bs=1M status=progress iflag=fullblock oflag=fullblock
这/dev/sdX
是硬盘的设备。
答案2
我没有使用 cryptsetup + shred,而是使用了 cryptsetup + pv(cat 也可以代替 pv,但是它不会提供任何进度信息),并将 stdin 指向 /dev/zero:
cryptsetup open /dev/device eld --type plain --cipher aes-xts-plain64
</dev/zero pv >/dev/mapper/eld
这样做的好处是(与 dd 相比),不需要指定模糊的参数,并且 SATA 3.3 6Gb/s 链路上的性能良好(>200MiB/s)。
当到达终点时,pv 仍然失败,但我已经检查过,它确实用零覆盖了整个逻辑设备。这意味着 dm-crypt 用伪随机字节覆盖了整个硬盘。
现在至少可以通过两种方式检查硬盘错误:
1.在输出中查找降级的 SMART 数据(如重新分配的扇区)
smartctl -a /dev/device
2.从 /dev/mapper/eld 读取数据并检查所有读取的字节是否都为零。从 diffutils 运行 cmp 命令进行以下比较:
cmp -l -b /dev/zero /dev/mapper/eld
它要么打印第一个不匹配的字节地址并因错误退出,要么它找不到任何不匹配然后它将打印“cmp EOF on /dev/mapper/eld ...”(并且仍然因错误退出)。
不匹配意味着硬盘在该位置的记录存在永久性故障,或者可能是不会在同一位置精确重复的随机错误。
第一次运行 cmp 时,8 秒后我确实收到错误,这让我非常惊讶。SMART 数据未显示任何性能下降,系统日志未显示任何有关硬盘的错误消息。
然后我尝试再次运行 cmp 命令来检查记录错误是否真实,但该位置的不匹配没有再次发生。这是整个读取+评估过程中的一些随机错误。因此,不要依赖单次运行 cmp 命令;如果发现不匹配,请再次运行它。如果错误消失,则忽略第一个不匹配或再试一次。如果错误仍然存在,则将硬盘退还给卖家,因为它很可能有缺陷,并且与健康的硬盘相比,其性能随时间下降的速度可能更快。
。