硬盘物理扇区架构和数据读取过程
如果磁盘驱动器突然停止响应或硬盘驱动器直接崩溃,这意味着什么?
当数据写入驱动器时,它会被编码。实际的数据本身从未被直接写入,写入的只是对数据的解释。如果你认为驱动器里存储的是0和1,那你的想法是错误的。数据更像是写入驱动器的波形。在读取时,它必须先被解释,然后才变成0或1。数据在写入前会被随机化。这消除了可能相同的模式,以免ECC(纠错码)产生混淆。对反复出现的模式进行模式检测是很困难的。
如果你在使用任何诊断软件,了解写入扇区的数据结构非常重要。许多软件使用通用术语来讨论错误类型。常见的硬盘错误代码和诊断:
BSY - 驱动器忙
DRDY - 驱动器准备就绪,可接受命令
ERR - 上次操作结果为错误
DREQ - 与主机交换数据
UNCR - 不可纠正的错误
WRFT - 写入故障
IDNF - 扇区ID未找到。如果存储此信息的扇区损坏,硬盘将无法定位该扇区并返回IDNF结果。
AMNF - 地址标记未找到。这与IDNF类似,但涉及数据。如果发生错误且此标记损坏,则无法定位该扇区的数据。此区域的数据是512字节的用户数据。
ABRT - 命令中止。这是一个中止错误,驱动器将停止尝试读取该数据块。
TONF - 未找到0磁道
ECC错误意味着读取ECC时出现问题且不匹配。ECC用于检查读取数据的完整性。读取数据时,驱动器会计算ECC并进行比较。如果出现错误,驱动器将重试直到无法获得正确结果,然后返回UNCR错误。
UNCR - 不可纠正的错误
WRFT - 写入故障
磁头使用伺服信息识别正确的磁道。然后,磁头通过"转换器"读取每个扇区的ID块,以确定是否是目标扇区。如果ID字段损坏,则无法识别数据寻找的目标,将标记IDNF错误。 如果找到正确的扇区ID,磁头接着会读取与该位置对应的512字节数据的地址标记。如果此信息损坏,则磁头无法定位数据的起始位置,并将返回AMNF错误。 AMNF错误意味着找到了ID标记信息,但与该地址对应的地址标记中的数据未找到,同样导致丢失512字节的用户数据。

数据写入后,会写入一个4字节的ECC数据块。读取512字节数据后,驱动器会计算ECC信息,并读取ECC数据块进行比较。如果不相等,则驱动器会重新读取数据直到超时,导致ECC数据错误。如果无法通过重读纠正错误,将使UNC标志位表明错误数据不可纠正。可以尝试忽略ECC进行数据恢复,但将无法验证读取的数据是否正确。这应作为最后阶段的手段,以捕获无法通过其他方式读取的数据。 磁头使用伺服信息识别正确的磁道。然后,磁头通过"转换器"读取每个扇区的ID块,以确定是否是目标扇区。如果ID字段损坏,则无法识别数据寻找的目标,将标记IDNF错误。
驱动器在放弃之前会尝试几种不同的重读数据的方法,其中大多数使用ECC。在某些特定情况下,如果数据以特定顺序出现,ECC可能会错误地纠正数据。ECC读取命令使用至少为3的奇数编号,以避免在选择2时出现50/50的概率。 忽略ECC读取是LBA 28命令"Read Long",在48位寻址中已被禁用,因为在超过137GB的驱动器中被认为已过时。137GB以上的驱动器无法使用忽略ECC读取。通常会进行标准尝试,大多数硬盘驱动器中通常是10次。忽略ECC读取驱动器可能会导致数据可能的损坏,但有时如果PCB(印刷电路板)有问题或ECC无法正确读取数据,这是获取这些扇区数据的唯一方法。

