众所周知,现代硬盘在其固件内部进行内部坏扇区pipe理,即当硬盘检测到物理扇区或不可靠物理扇区时,用预留的扇区存储replace坏扇区。 这个机制消除了操作系统本身做坏扇区pipe理的需要。 用户可以从称为“重新分配扇区计数”的SMART项目知道扇区重置计数的发展。
具有太多重新分配扇区的样本HDD驱动器(索引133下降到阈值140以下):
现在我的问题是:什么时候硬盘固件确定一个部门应该被replace。 我想像这样的理想情况:
当硬盘写入扇区时,它会立即读取validation(validationCRC校验和并使用ECC恢复软错误位)。 如果validation失败或扇区被固件认为是不可靠的,则固件可以立即replace扇区,从而不会丢失用户数据(至less在写入磁盘表面时不会丢失)。 这是进行扇区replace的好时机,因为待写入的数据现在肯定会保留在硬盘的内部caching中。 驾驶员可以尝试尽可能多的“热备份”部门,直到他find一个好的部门。
如果我的想法不是这个事实,那么硬盘只能在下一次用户读取时validation写入扇区; 但是如果下一次读取失败CRC和ECC,并且相应的高速caching已经被丢弃,我们什么也不能做,只能知道以前写入的数据已经永久丢失了。
哪个行为是事实? 有没有networking文章澄清这一点?
SSD磁盘应该面临同样的情况,那SSD呢? SSD的情况似乎更容易理解,因为我很容易想象SSD可以在写入后快速读取validation, 然而,这种scheme是否适用于主轴硬盘? 看来HHD磁头可以在一个给定的时间进行读或写,所以为了validation写入,它必须等待另一个旋转,直到写入的扇区再次位于磁头之下 – 这将显着减慢数据吞吐量。 – 我很困惑
驱动器执行一个写validation的forms,并已经这样做了相当一段时间。 早在过去的那些响亮的驱动器,你可以听到驱动器在什么时候从坏的声音中磨坏了。 我不能解释确切的机制,而且我相当确定,在我们通过各种磁性技术之后 ,确切的方式已经发生了一些转变。 但是在写入时可以检测到失败,并且该扇区将被从重新分配池中取出。
它也可以被读取,与您已经确定的失败情况。 一些较高端的RAIDarrays(当然还有ZFS)具有后台扫描例程,用于在空闲时间读取存储,专门用于查找这些错误。 在奇偶校验或镜像RAID中,理论上在其他地方有一个很好的副本,使恢复变得容易。
无法编程的SSD单元将返回类似的故障状态,并且新的块将从重新分配池中取出。 破损的SSD单元倾向于只读,所以数据是可恢复的。 实际上破碎的细胞是另一个故事,就像一个硬盘上的沙粒落地一样。