无法将零写入坏扇区/硬盘不计算重新分配的扇区

无法将零写入坏扇区/硬盘不计算重新分配的扇区

我有一个驱动器报告当前待处理的扇区为“45”。我已使用坏块识别扇区,我一直试图用

据我了解,当我尝试将数据直接写入坏扇区时,它应该触发重新分配,将当前待处理的扇区减少一个并增加重新分配的扇区数量。

但是,在此磁盘上,Reallocated_Sector_Ct 和 Reallocated_Event_Count 原始值均为 0,并且当我尝试将零写入坏扇区时,出现 I/O 错误。但是,当我写入一个好的扇区时,工作正常。

# dd if=/dev/zero of=/dev/sdb bs=512 count=1 seek=217152
dd: error writing ‘/dev/sdb’: Input/output error

这是否意味着我的驱动器在某种程度上没有可用于重新分配的备用扇区?我的驱动器总体上是不是很糟糕?(这个驱动器实际上不是我的,我只是在帮助朋友。他们可能只是得到了一个便宜的驱动器或类似的东西。)

如果相关的话,这里是输出智能控制-i

Model Family:     Western Digital Caviar Green (AF)
Device Model:     WDC WD15EARS-00Z5B1
Serial Number:    WD-WMAVU3027748
LU WWN Device Id: 5 0014ee 25998d213
Firmware Version: 80.00A80
User Capacity:    1,500,301,910,016 bytes [1.50 TB]
Sector Size:      512 bytes logical/physical
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA8-ACS (minor revision not indicated)
SATA Version is:  SATA 2.6, 3.0 Gb/s
Local Time is:    Fri Oct 18 17:47:29 2013 CDT
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

更新:
我在磁盘上运行了该shred命令,导致 Current_Pending_Sector 变为零。但是,Reallocated_Sector_Ct 和 Reallocated_Event_Count 仍然为零,并且 dd 现在能够将数据写入之前无法写入的扇区。这引出了其他几个问题:

  • 为什么磁盘没有记录重新分配?我假设重新分配已经发生,因为我现在可以直接将数据写入扇区,而之前却不能。

  • 为什么 shred 会导致重新分配而不是 dd?shred 写入随机数据而不是仅仅写入零,这有什么区别吗?

答案1

WD15EARS 驱动器(以及大多数其他最近生产的驱动器)使用高级格式,这意味着此驱动器的实际物理扇区大小为 4 KiB,而传统的 512 字节扇区大小只是模拟的。因此,如果单个 4 KiB 物理扇区出现问题,则所有 8 个相应的模拟 512 字节扇区将立即变得无法读取。

Sector Size: 512 bytes logical/physical的输出smartctl不正确,因为一些 WD15EARS 驱动器报告错误的物理扇区大小 — 显然您的驱动器的固件版本在这方面有损坏。)

此外,在写入单个模拟的 512 字节扇区时,高级格式驱动器实际上需要读取整个 4 KiB 物理扇区,更改相应的 512 字节部分,然后将整个物理扇区写入介质。如果介质良好,与具有真实 512 字节物理扇区的驱动器相比,此读取-修改-写入操作只会导致速度明显减慢。但是,如果 4 KiB 物理扇区是坏的并且无法读取,则任何未完全重写扇区的写入操作都将失败。因此,您无法使用 with 强制在此类驱动器上重新分配扇区dd-bs=512 count=1 您必须至少使用bs=512 count=8并确保seek=选项中的扇区号是 8 的倍数。(这假设未安装“与 Windows XP 兼容”跳线,否则还必须考虑此跳线添加的对齐偏移。)

强制重新分配dd可能会失败的另一个原因是,默认情况下,Linux 使用块层中的缓存来访问块设备,这可能会导致软件中的读取-修改-写入操作,当遇到不可读的扇区时,该操作也会失败。您可以添加选项oflag=direct以绕过由指定的设备的此缓存of=...(还有iflag=direct适用于输入设备的选项)。

答案2

我最近不得不这样做,发现在整个磁盘上运行 Shred 效果很好。虽然 Shred 除了在软盘上以外没有其他用途,但它确实可以对坏块进行自我修复。

相关内容