1、什么是“坏道”

坏道是一个被误用的术语。现在我们在HD Tunes,DiskDirector等各种软件中检测到的更多时候是坏扇区,也是物理上硬盘存储数据的最小连续单位。

对于不了解硬盘的人来说,可以想像硬盘是一个盒子,盒子外面是接口电路板,里面是一组盘片和读取盘片的磁头等机构。(没有直观概念的请谷歌“硬盘”选择图片搜索)。盘片看起来像一片镜子,但实际上上面存在非常密集细小的同心圆,也就是俗称的磁道。磁道看起来就像更微小的扇区串起来的一串珠子。我们说的坏道,也就是说一个坏掉的磁道,相应的坏扇区就是坏掉的扇区了。

为什么以前说坏道现在说坏扇区,是因为以前软盘上无法读取数据的最小单位是磁道(软盘的数据放置和硬盘差不多,只是比较软和不那么密集)。现在硬盘上最小的无法读取数据的单位是扇区了,但是这个用语被沿袭了下来。

2、数据损坏如何产生

那么数据为何会损坏?基本而言,可以分为逻辑损坏和物理损坏两种。不过这样的分类方法其实根本没什么意义,因为需要注意的是,在计算机系统中“逻辑”和“物理”是一组相对概念,“物理”指的是更底层的、不可控的系统,而“逻辑”则是指应用层或者更高层面上的、可控的系统。这也是在数据恢复当中有很多令人混淆不清的概念的原因(比如逻辑坏道和物理坏道,利用这样的混淆也是挣钱的好方法啊哈哈)。所以我觉得这样分更好:

2a)文件层面
文件层面的数据损坏一般就是文件本身坏了,比方说打开压缩文件的时候说文件损坏,打开照片发现只有半张图有内容另外半张变成了灰色,或者整体扭曲了之类的。这些损坏往往由于病毒或者有bug的软件导致,但是也有可能由于以下几种原因导致。

2b)文件系统层面
文件系统是用来存放文件的系统。文件系统除了管理文件之外,还要和它的“物理层”打交道,也就是硬盘的逻辑层。文件系统是存在我们所说的“坏道”的可能的,当现代文件系统发现一个扇区访问失败,文件系统会试图去记录其位置,认为其下物理层出现损坏,并避免以后访问以放置损坏扩大。
但是,某些特定情况下文件系统认为是坏扇区的部分其实没有损坏。这种时候文件系统会记录一个坏扇区,往往这个扇区对应的文件也会被损坏。这种坏扇区是可能导致数据丢失的,但是可以修复的,而且一般HD Tunes等软件扫描的坏扇区不是这个层面的损坏。
不过,损坏也有可能由其下几个层面的原因导致。

2c)磁盘逻辑层面
磁盘本身的逻辑除了基本的控制数据存取,最大的一部分就是处理数据完整性。我们大多数时候讨论的数据恢复都发生在这个层面上,也是听起来很专业的所谓“P表”和“G表”所在的层面。这个层面的损坏原因其实和文件系统层面差不多,硬盘控制器发现一个扇区存在难以访问的情况,就会将这个扇区标记为坏扇区。这样的坏扇区是会被HD Tunes一类的软件扫描出来的。

同样类似于文件系统的坏扇区记录,硬盘逻辑记录的坏扇区也可能是可以修复的。注意这里说的修复是真的修复,而不是利用替换表去替换。当然,这样的损坏也可能导致数据丢失。

2d)磁盘物理层面(机械层面)
硬盘物理层面的损坏则比较复杂,不过涉及到坏扇区的种类比较少。

最常见的就是磁头损坏。磁头是非常高精度的机械结构,机械+精度高基本等于说不稳定。硬盘硬件上最脆弱的就是磁头,运行中的强震可能导致它:1、刮伤磁盘表面,导致永远不可恢复的损坏扇区(当然你硬要说可以修复,拿去NASA的实验室可以之类的,我也没话说)2、偏位,垂直偏位可能导致大面积的永久损坏磁盘表面,水平偏位可能导致现象上所有数据难以读写,但是存在修复的可能性。3、断开,如果有技术换磁头可能可以恢复数据。

其次是盘片本身损坏。这种损坏除了环境腐蚀(我见过工矿用的电脑没有保护措施,含盐空气将硬盘内部变成一整块金属灰屑),就是异物。因为硬盘本身磁道和扇区都非常微小,一点点灰尘都会导致数据无法读取,甚至损坏其他部件。不过这种损坏往往只要在净室清理后就能恢复数据(硬盘本身就别想了,就算是净室,一旦打开也就不可能能正常用)。

3、如何修复

谈到修复,一个很重要的概念就是其实大部分的修复只能恢复扇区可用,不能恢复数据。除非你的硬盘系统存在冗余性,不然数据基本上随着各种原因的坏扇区的产生就消失了。

第二个重要的概念是,只要不是文件系统及之上的数据损坏,几乎一定会影响硬盘将来的性能和可靠性。某种程度上说,硬盘的性能和可靠性是一体的,硬盘的性能会随着使用下降,而降到一定程度就会开始不可避免地发生越来越多的数据损坏。

如何修复文件和文件系统?这两者可以用对应软件工具,比如各种file recovery工具还有chkdsk命令。只要故障发生的层面以下的层面没有故障,就可以修复。比较简单,略过不谈。

如何修复扇区?原理说起来很简单,也是一个听起来很高端的名词:Low Level Format低级格式化。低级格式化俗称低格(听起来像逼格的反义词呢),是硬盘逻辑层面的格式化,与文件系统的格式化相似但不同。话说说到这里应该已经很容易看出来了,硬盘逻辑基本就是个文件系统。所谓的低级格式化的低就低在这个格式化格式的是硬盘逻辑层面。

那么低级格式化都做些啥?很简单,写0。这里涉及到一些细节的硬盘数据存储知识,硬盘上每个扇区除了存储这个扇区的数据本身,还会存储一些额外的数据以便硬盘逻辑去知道自己读的数据对不对。文件系统对硬盘写0,这些额外数据是不会被写0的。而低级格式化就是对这些数据写0。有时候,实际硬盘没有损坏,但是因为这些数据损坏,可能会导致一些坏扇区的产生。对这些数据写0的话,扇区就可以正常使用了。这样的修复方法可以让任何物理上没有损坏的硬盘起死回生。

有一些专业工具,比如PC3000,可以做到定点低格。为什么普通软件做不到?因为硬盘逻辑需要通过硬盘固件,也就是硬盘的软件接口,来调用,而硬盘固件一般不开放这样的功能,因为很危险,可能导致硬盘物理损坏。专业软件往往与几大硬盘厂商有合作,可以拿到这些特殊的接口。

需要注意的是,定点低格有伤及无辜的可能性。所以有时候会发展成需要全磁道甚至全盘低格的情况。

(这里吐个槽,现在全世界的硬盘厂已经只有3家了,再过过恐怕更少,那时候硬盘的价格嘛…以及现在这些厂越来越大,资料也越来越不好弄,以后硬盘修复的价格嘛…)(再吐个槽,前面说到硬盘的寿命随时间下降,我见过最夸张的是某个名字和古文物有点儿相似的厂的硬盘6个月性能跌到70%,一年开始疯长坏扇区的。)

再下层的硬件有修复的可能吗?有,但是基本上都需要净室,而且往往就是修复到可以读数据,别想再装起来回家接着用了。

4、如何“修复”

上面说到唯一的真正修复就是低格,那么其他那么些修复都是怎么回事?那些个HDD Regenerate,效率源,DiskDirector,都是怎么修复硬盘的?

一句话,都是“修复”,是拆东墙补西墙的法子。

(直接跳来看答案的从这里开始)

终于可以聊到最常见的修复软件的工作原理了,也就是所谓的P-list和G-list。其实每次和人谈到硬盘修复都想吐槽这个名词,国内的一起跟着念P表和G表,听得懂是啥么都?这俩分别是Permanent List和Growth List。前者是“永久损坏扇区表”,后者是“新增损坏扇区表”。

每个硬盘的实际容量都大于标称容量,因为很容易想象,出厂的时候就可能有些扇区因为各种原因不能用。所以出厂的时候每块硬盘都需要经过一次完整扫描,然后将所有发现的不可用扇区记录在永久损坏扇区表中。硬盘逻辑会将这个列表里的扇区当作不存在,遇到了就跳过去。所以说这样的坏扇区是几乎不影响性能的。

光有这个列表是无法应付使用中出现的坏扇区的,所以有这么个新增损坏扇区表。这个表相对复杂一点,它的意义是在遇到某个损坏扇区的时候,硬盘逻辑会去出厂时划分的一块备用区去找用来替代这一个扇区的扇区。很好理解,这样的跳转会大大降低连续读取的速度,更何况备用扇区往往放在硬盘最慢的中心位置。

那么修复软件都是怎么工作的?说白了就是往这两个列表里添加扇区。对于大多数硬盘来说,永久列表除非在全盘数据清空的情况下是不能添加的(因为会导致周围数据不一致),所以一般坏扇区修复软件的方法就是一旦发现坏扇区,就添加到新增表中。

当然,也有一些软件采取更高级的策略,也就是小范围清空然后添加到永久表。在相对新的硬盘中,永久表也有备用区,而且不同于新增表,是每个磁道有备用区。那么这些硬盘修复就简单许多,直接将磁道中的数据备份出来,添加坏扇区到永久表,然后重写整个磁道即可。

5、有关的一些其他知识点

-硬盘是如何检测坏扇区的?
前面说到,每个扇区都有一份用来检测读取的数据对不对的数据。每个扇区被读到的时候,硬盘逻辑就会利用这些数据检查读取的对不对。如果不对,就——再读一次。还不对,再读一次。读了十几遍几十遍还不对,就报告错误。

-软件是如何检测坏扇区的?
除了遇到硬盘逻辑报告的错误,就是看读取速度。有一个假设,相邻的扇区的读取速度应该是一致的,因为硬盘转速稳定。一旦出现快慢变化,几乎一定是因为硬盘重读了,那么这个扇区很可能有一定程度的损坏。

-如何修复这些“一定程度的损坏”?
和彻底无法读写的扇区不一样,这些一定程度的损坏往往只要重新写入数据即可。大多数数据修复软件就是这样做的。如果写入之后还是不能用,那么就轮到两张表出场了。

-那么为什么有时候修复时间需要很久?
两个原因。一是因为扇区的额外数据损坏,硬盘很难寻道——硬盘也需要确定自己读到是不是这个扇区的内容,而扇区的“名片”也存在扇区里。如果硬盘读到的数据不符,硬盘逻辑就会重新读取,直到确定读到,或者放弃。
另一种是因为有些数据修复软件采用了比较高级的手段——统计学方法来修复数据。这些软件需要获得底层的硬盘访问权限,然后对故障区域进行重复多次读取,当获得一定数量的数据样本之后就可以根据统计上最可能的值来建立一个统计上的扇区数据,然后试图采用常规的方法来判断数据是否可用。这样的方法往往需要读盘上千次,但是对于某些损坏有很好的效果(实践中,磁头偏位可以这样恢复数据)。

-哪些软件具有这些高级功能?
我个人不推荐各种软件。老实说,数据修复是个复杂且没有一定之规的事情,就算是专业设备用不同的流程做结果也是完全不一样的。一般来说,数据修复有个“自下而上、先排除再恢复”的指导思想。自下而上就是先从底层开始修复,这样可以确实地防止底层故障破坏上层数据;先排除再恢复则是先排除导致故障的问题再恢复数据,防止恢复过程带来更大的损坏。至于软件本身,可以说目前看来任何不需要自行引导系统的高级修复软件都是耍流氓。而自行引导往往依赖各种BIOS设置,有时需要特殊接线,所以不建议普通用户尝试自行修复。