硬盘URE的粒度是多少(不可恢复的读取错误)?


8

tl; dr,如果 在硬盘上发生URE,我会丢失1bit,1Byte或扇区大小(512Bytes或4096 Bytes AF)吗?并尽可能解释为什么?

背景: 当硬盘读取数据时出现问题。当然,磁盘可能会完全失败,并丢失所有数据(磁盘失败),但是我在这里询问的情况是,磁盘中只有一小部分丢失了(URE,不可纠正的读取错误)。

尽管我一直在寻找有关URE的信息,但我发现的确很少。这可能是由于驱动器内部发生的事情(即,直接用户交互(如ECCs校正)所隐藏的东西)对我来说很难与我作为用户访问的内容(扇区)相关。

让我们想象一下,硬盘在读取数据时遇到问题。

在那种情况下,这肯定意味着:

  • (a)无法读取该扇区的某些位,或
  • (b)可以读取所有位,但它们未通过校验和测试(当然,预期一个扇区4096字节的麻烦不仅是8 * 4096位,还包括一些用于错误检查/纠正的其他位/字节(即奇偶校验位) ) (C) ????

我不相信,当我们处于(a)和(b)的组合出现而无法可靠地重构4096个扇区的字节的情况下,那么过分地假设必然所有这些都是乱码,实际上,如果我们知道内部hdd纠错逻辑,我们可能会说“看起来有些东西没有检出,并且经过良好的更改,至少1,2,3,n位/字节的块数据是”错误的” ”。如果我们在此扇区中多余地保存了“ hello,hello .....,hello” ASCII字节字符串,那么在出现“ ...”之前,实际上我们可能仍然会继承“ hello,hello ....”。 Uellohello ...”(即“ e”->“ U”)。

那么,URE的粒度是多少?

更新:有评论输入了坏扇区的想法(并暗示这反映了URE事件的粒度。建议它并不荒谬,可以用来回答问题。但是我刚刚读了另一篇相关文章问有关待处理的不可读扇区的问题(在这里/unix/1869/how-do-i-make-my-disk-unmap-pending-unread-sectors),这使我认为在某些情况下在URE的情况下,数据丢失之间确实存在更加模糊的界限。


通常,在头部撞坏的情况下,一次损坏成千上万的块。如果是灰尘等,靠近障碍物可能会造成损坏。因此,它很少像大区域的一部分那么简单就可以重建。
JamesRyan 2015年

@JamesRyan很好的提示,它总是会更糟。也许我只是在询问可能的最坏情况(这只是为了放开一个扇区,或者部分是通过良好答案解决的,一部分是扇区数据,具体取决于其中的类型)。也许需要更多地了解不可读取错误的起因(以及它们的持久性,即随机位腐烂与磁头碰撞的影响)。但是,我们在这里要回答的问题,所以我没有不必要的问题更多的复杂
humanityANDpeace

Answers:


8

硬盘驱动器上的错误纠正代码是与每个硬件扇区关联的额外数据块。在写入过程中,驱动器固件会计算该数据并将其与用户数据一起写入。在读取期间,固件读取ECC和数据并一起检查。

对于传统的硬盘驱动器,硬件扇区为512字节。对于高级格式驱动器,它是4K字节(驱动器在接口上呈现512字节还是4K字节的扇区无关,即512e vs. 4kn)。

读取后的检查结果基本上具有三种可能的结果:

  • 读取扇区没有错误。实际上,这在现代硬盘驱动器上并不完全常见。比特密度取决于ECC的工作方式。

  • 读取了可纠正错误的扇区。如上所述,这并不罕见;这是预期的。驱动器将数据(应用了纠错功能)返回给用户。

  • 读取了扇区,但是有太多“错误位”;错误无法纠正。

在后一种情况下,驱动器通常不会返回任何内容。它只是返回一个指示错误的状态。这是因为不可能知道可疑的位,更不用说它们的值了。因此,整个扇区(ECC位和所有位)都是不可信任的。无法确定坏道的哪一部分坏了,更不用说其内容应该是什么了。ECC是在整个扇区内容中计算的“格式像”,如果不匹配,则是整个扇区都不匹配。

SpinRite的工作原理是使用“维护读取”功能一次又一次地尝试读取坏扇区,即使驱动器显示“不可纠正的错误”,该功能也会返回数据(但不带ECC位)。正如由DavidPostill链接的描述中所说的那样,它可以通过无错误读取(实际上是“可纠正的”可能性更大)来成功完成;或者基本上可以将返回的位平均在一起,就可以得出对扇区内容的合理猜测。与驱动器相比,它没有更多的能力可以使用ECC精确地纠正错误。从数学上讲这是不可能的。


如果4096Byte有效负载中的数据本身是4000Byte有效负载和顶部的另一个96Byte ECC的组合,从数学上还是不可行的吗?(例如,因为我愿意牺牲数据存储布局中的可恢复能力?)。
humanityANDpeace

我的猜测是,在隐含的假设下,即数据内部没有进一步的冗余,这在数学上是唯一不可能的,对吧?-也是很好的答案!
humanityANDpeace

1
当然。那时,它只是另一个不可靠的通道,但是如果其中有足够的冗余。。问题是,如果驱动器认为错误无法纠正,则操作系统的标准磁盘驱动器将根本无法提供扇区内容。RAID-5和类似的奇偶校验方案在“外层”而不是在现有扇区的数据字段内部执行相同的操作。
Jamie Hanrahan 2015年

“渔获”与OS驱动程序给予回复(在要求)所有,未经证实的甚至是数据的问题,作为一个非Windows用户,我问这个专门unix.stackexchange.com/questions/228254/...
humanityANDpeace

3

URE的粒度是多少?

不可恢复的读取错误(URE)是扇区读取失败。如果无法毫无错误地读取扇区,则仅是1个字节还是该扇区的所有字节都无所谓。

粒度是扇区大小

即使只有1个字节失败,如果不使用专家软件,通常也不会从该扇区获得任何数据。


可以恢复故障扇区中的数据吗?

SpinRite说:

SpinRite甚至能够恢复一个永远无法完美读取的扇区中的大多数数据,并且任何其他实用程序软件都将其完全丢弃。

请参见SpinRite如何恢复无法读取的数据


免责声明

我不以任何方式隶属于SpinRite,并且我从未使用过它。


1
我倾向于认为这是一个很好的答案,不是因为我不一定同意在使用URE的情况下有必要完全放开一个扇区(即所有4k数据之后),而是因为hdd甚至可能会丢弃该部分磁盘。 “坏部门”仍然有价值。SpinWrite参数的表示支持了这一思想,因此答案也提供了更多的见解,很棒。
humanityANDpeace

2

除非您遇到一个非常严重的硬件错误,例如磁头无法寻找正确的磁道,或者伺服磁道已损坏并且找不到正确的扇区,否则就没有“无法读懂”之类的东西。显然,无论哪种情况,您至少都将拥有整个不可读的扇区。

否则,您总是会找回位,它们可能只是不正确的位。这是纠错代码的来源。它会在每个扇区中添加一些额外的ECC位,从而使数据位和ECC位的任何正确组合都遵循某种代数规则。如果正确读取了所有位,则代码将验证并且数据可以直接传递回。如果错误地读取了少量位,则可以使用ECC代码确定确切的位并进行修复,从而将所有数据正确地传递回去。如果比特更大数目的读取错误,ECC码可检测存在一个错误,但它不再具有足够的信息来弄清楚位是不正确的; 这是不可纠正的读取错误。如果一个非常大的比特数目是读错,那么代码可能会正确地验证“意外”和驱动器将返回损坏的数据,但有足够的ECC位这种情况发生的概率可以变得非常小,你喜欢。

因此,回答我认为您要解决的问题—如果存在部分读取错误,但是有足够的信息可以找出错误发生的位置,那么也可以对其进行更正,并且计算机根本看不到任何错误。 。这实际上经常发生。当无法确定哪些数据位有效而哪些数据位无效时会发生未纠正的错误,并且由于纠错码是在扇区上计算的,因此发生在扇区粒度上。


1

经过研究并从https://superuser.com/users/337631/davidpostill得到的答案https://superuser.com/a/969917/160771启发

我想回答一个稍微扩展的替代答案。首先,硬盘及其固件确实是URE事件(即无法读取数据的事件)的起源。此外,确实可以将数据以512或4096字节的可用数据扇区和大约50或100字节的额外数据扇区写入磁盘,这应允许进行错误检查和纠正。

因此,在硬盘扇区的上下文中自然会谈到URE。坏扇区这个词肯定有些联系,但与我们拥有URE扇区时的情况并不相同。

有一些问题可以毫无错误地读取的扇区不一定完全没有意义。可能确实是所有4096个数据都已损坏,但也可能仅损坏了1个比可可靠纠正的位数(通过添加到每个扇区的多余的多余ECC数据)。

在某些情况下,其中仅比hdd能够纠正的字节少得多的字节已被破坏,有一些变化表明4096字节stil的一部分具有有意义的数据。

一个示例可能是4096代表2个句子的ASCII字符字节。那么有可能一句话或更多句话完好无损。也有可能每个第二个或第三个字母都被删除了。如果在URE事件中4096的数据丢失,则取决于解释并取决于数据。可以想象数据本身具有另一层ECC外壳,这将允许进一​​步恢复。

因此,大多数固件将URE扇区与坏扇区区别对待是一件好事:

通常,仅在写入扇区时才会自动重新映射扇区。据推测,这背后的逻辑是,即使无法正常读取扇区,也可以使用数据恢复方法读取该扇区。(来自 https://en.wikipedia.org/wiki/Bad_sector

或就此而言,可能是该部门的一部分仍包含可用数据。


请注意,该文章被标记为“需要专家的注意”,“可能包含原始研究”,并且该特定声明被标记为“需要引用”。它的书写方式(“大概” ???)也听起来很像某人在猜测,而不是可以用高质量的原始资料来佐证。
CVn
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.