坏道让人伤心 硬盘缺陷探秘
硬盘是目前PC系统中最主要的存储设备,同时硬盘是PC系统中出故障率最高的部件。用户在使用硬盘过程中,硬盘出现故障怎么办呢?如果还在质保期内,当然是尽量找到销售商要求保修。但现在大多数IDE硬盘质保期只有一年,而大多数用户都希望一个硬盘能使用三年以上。如果质保期过后硬盘出了故障,就得考虑更换或对它进行修理。
笔者这几年来一直从事硬盘维修工作,经常与国内外的同行交流,查阅过大量的外文专业资料,研究使用过多种专业的硬盘修复工具,成功修复了近万个硬盘。在这里,笔者与读者探讨一些硬盘缺陷及其修复原理,同时介绍并解释一些专业修复硬盘软件中常用到的概念。但笔者暂不探讨在各种操作系统下硬盘中的数据结构问题及数据恢复问题,而是直接探讨硬盘本身的缺陷问题。
一、缺陷的分类
如果经检测发现某个硬盘不能完全正常工作,则称这个硬盘是“有缺陷的硬盘”(Defect Hard Disk)。
根据维修经验,笔者将硬盘的缺陷分为六大类
①坏扇区(Bad sector),也称缺陷扇区(Defect sector)
②磁道伺服缺陷(Track Servo defect)
③磁头组件缺陷(Heads assembly defect)
④系统信息错乱(Service information destruction)
⑤电子线路缺陷(The board of electronics defect)
⑥综合性能缺陷(Complex reliability defect)
1.坏扇区(也称缺陷扇区)
指不能被正常访问或不能被正确读写的扇区。一般表现为:高级格式化后发现有“坏簇(Bad Clusters);用SCANDISK等工具检查发现有“B”标记;或用某些检测工具发现有“扇区错误提示”等。
一般每个扇区可以记录512字节的数据,如果其中任何一个字节不正常,该扇区就属于缺陷扇区。每个扇区除了记录512字节的数据外,另外还记录有一些信息:标志信息、校验码、地址信息等,其中任何一部分信息不正常都导致该扇区出现缺陷。
多数专业检测软件在检测过程中发现缺陷时,都有类似的错误信息提示,常见的扇区缺陷主要有几种情况:
①校验错误(ECC uncorrectable errors,又称ECC错误)。系统每次在往扇区中写数据的同时,都根据这些数据经过一定的算法运算生成一个校验码(ECC=Error Correction Code),并将这个校验码记录在该扇区的信息区内。以后从这个扇区读取数据时,都会同时读取其校检码,并对数据重新运算以检查结果是否与校检码一致。如果一致,则认为这个扇区正常,存放的数据正确有效;如果不一致,则认为该扇区出错,这就是校验错误。这是硬盘最主要的缺陷类型。导致这种缺陷的原因主要有:磁盘表面磁介质损伤、硬盘写功能不正常、校验码的算法差异。
②IDNF错误(sector ID not found),即扇区标志出错,造成系统在需要读写时找不到相应的扇区。造成这个错误的原因可能是系统参数错乱,导致内部地址转换错乱,系统找不到指定扇区;也有可能是某个扇区记录的标志信息出错导致系统无法正确辨别扇区。
③AMNF错误(Address Mark Not Found),即地址信息出错。一般是由于某个扇区记录的地址信息出错,系统在对它访问时发现其地址信息与系统编排的信息不一致。
④坏块标记错误(Bad block mark)。某些软件或病毒程序可以在部分扇区强行写上坏块标记,让系统不使用这些扇区。这种情况严格来说不一定是硬盘本身的缺陷,但想清除这些坏块标记却不容易。
2.磁道伺服缺陷
现在的硬盘大多采用嵌入式伺服,硬盘中每个正常的物理磁道都嵌入有一段或几段信息作为伺服信息,以便磁头在寻道时能准确定位及辨别正确编号的物理磁道。如果某个物理磁道的伺服信息受损,该物理磁道就可能无法被访问。这就是“磁道伺服缺陷”。一般表现为,分区过程非正常中断;格式化过程无法完成;用检测工具检测时,中途退出或死机,等等。
3.磁头组件缺陷
指硬盘中磁头组件的某部分不正常,造成部分或全部物理磁头无法正常读写的情况。包括磁头磨损、磁头接触面脏、磁头摆臂变形、音圈受损、磁铁移位等。一般表现为通电后,磁头动作发出的声音明显不正常,硬盘无法被系统BIOS检测到;无法分区格式化;格式化后发现从前到后都分布有大量的坏簇,等等。
4.系统信息错乱
每个硬盘内部都有一个系统保留区(service area),里面分成若干模块保存有许多参数和程序。硬盘在通电自检时,要调用其中大部分程序和参数。如果能读出那些程序和参数模块,而且校验正常的话,硬盘就进入准备状态。如果某些模块读不出或校验不正常,则该硬盘就无法进入准备状态。一般表现为,PC系统的BIOS无法检测到该硬盘或检测到该硬盘却无法对它进行读写操作。如某些系列硬盘的常见问题:美钻二代系列硬盘通电后,磁头响一声,马达停转;Fujitsu MPG系列在通电后,磁头正常寻道,但BIOS却检测不到;火球系列,系统能正常认出型号,却不能分区格式化;Western Digital的EB、BB系列,能被系统检测到,却不能分区格式化,等等。
5.电子线路缺陷
指硬盘的电子线路板中部分线路断路或短路,某些电气元件或IC芯片损坏等。有部分可以通过观察线路板发现缺陷所在,有些则要通过仪器测量后才能确认缺陷部位。一般表现为硬盘在通电后不能正常起转,或者起转后磁头寻道不正常,等等。
6.综合性能缺陷
有些硬盘在使用过程中部分芯片特性改变;或者有些硬盘受震动后物理结构产生微小变化(如马达主轴受损);或者有些硬盘在设计上存在缺陷……最终导致硬盘稳定性差,或部分性能达不到标准要求。一般表现为,工作时噪音明显增大;读写速度明显太慢;同一系列的硬盘大量出现类似故障;某种故障时有时无等等。
二、厂家处理缺陷的方式
用户在购买硬盘时,一般都通过各种工具检测硬盘没有缺陷后才会购买。而且,在质保期内可以找销售商将硬盘退回厂家修理。那么,厂家如何保证新硬盘不会被检测到缺陷呢?返修的硬盘又如何处理缺陷呢?首先,让我们来认识硬盘工厂的一些基本处理流程:
1.在生产线上装配硬盘的硬件部分,用特别设备往盘片写入伺服信号(Servo write)。
2.将硬盘的系统保留区(service area)格式化,并向系统保留区写入程序模块和参数模块。系统保留区一般位于硬盘0物理面的最前面几十个物理磁道。写入的程序模块一般用于硬盘内部管理,如低级格式化程序、加密解密程序、自监控程序、自动修复程序等等。写入的参数多达近百项:如型号、系列号、容量、口令、生产厂家与生产日期、配件类型、区域分配表、缺陷表、出错记录、使用时间记录、S.M.A.R.T表等等,数据量从几百KB到几MB不等。有时参数一经写入就不再改变,如型号、系列号、生产时间等;而有些参数则可以在使用过程中由内部管理程序自动修改,如出错记录、使用时间记录、S.M.A.R.T记录等。也有些专业的维修人员可以借助专业的工具软件,随意读取、修改写入硬盘中的程序模块和参数模块。
3.将所使用的盘片表面按物理地址全面扫描,检查出所有的缺陷磁道和缺陷扇区,并将这些缺陷磁道和缺陷扇区按实际物理地址记录在永久缺陷列表(P-list:Permanent defect list)中。这个扫描过程非常严格,能把不稳定不可*的磁道和扇区也检查出来,视同缺陷一并处理。现在的硬盘密度极高,盘片生产过程再精密也很难完全避免缺陷磁道或缺陷扇区。一般新硬盘的P-list中都有少则数十,多则上万个缺陷记录。P-list是保留在系统保留区中,一般用户是无法查看或修改的。有些专业的维修人员借助专业的工具软件,可以查看或修改大部分硬盘中的P-list。
4.系统调用内部低级格式化程序,根据相应的内部参数进行内部低级格式化。在内部低级格式化过程中,对所有的磁道和扇区进行编号、信息重写、清零等工作。在编号时,采用跳过(skipped)的方法忽略掉记录在P-list中的缺陷磁道和缺陷扇区,保证以后用户不会也不能使用到那些缺陷磁道和缺陷扇区。因此,新硬盘在出售时是无法被检测到缺陷的。如果是返修的硬盘,一般就在厂家特定的维修部门进行检测维修。
小知识:什么是硬盘的磁道和扇区?磁道是磁盘一个面上的单个数据存储圆圈。如果将磁道作为一个存储单元,从数据管理效率来看实在是太低了,因此,磁道被分成若干编上号的区域,称之为扇区。这些扇区代表了磁道的分段(如图)。在PC系统中,通过标准格式化的程序产生的扇区容量都为512字节。这里大家需注意的是“扇区”与“簇”的关系,“簇”是操作系统在读或写一个文件时能处理的最小磁盘单元,一个簇等于一个或多个扇区。
三、硬盘缺陷的处理
如果不在硬盘工厂中,对普通用户或维修人员来说,又如何处理硬盘的缺陷呢?前面我们把硬盘的缺陷分为六大类,不同类型的缺陷用不同的处理方法。
1.对于综合性能缺陷,一般涉及到稳定性问题,用户随时有丢失数据的危险,可以说是“用之担惊,弃之可惜”。维修人员很难从根本上解决问题,建议用户还是趁早更换硬盘。
2.对于磁头组件缺陷,解决办法是更换磁头组件,这对设备及环境要求较高,维修成本也很高。除非是要求恢复其中的数据,否则不值得进行修复。有条件的维修公司可以在百级净化室中更换硬盘的磁头组件,对数据进行拯救。
3.对于线路缺陷,一般要求维修人员有电子线路基础,要有测试线路的经验和焊接芯片的设备,当然还要有必需的配件以备更换。目前许多专业维修硬盘的公司都有条件解决这类缺陷。对普通用户而言,最简单的判别和解决办法是找一个相同的正常线路板换上试试。
4.对于系统信息错乱,需要有专业的工具软件才能解决。首先要找个与待修硬盘参数完全相同的正常硬盘,读出其内部所有模块并保存下来;检查待修硬盘的系统结构,查到出错的模块,并将正常模块的参数重新写入。笔者用这个方法成功地修复了数以千计有这种缺陷类型的硬盘,而且一般不会破坏原有数据。要想写某系列硬盘的系统信息,相应的工具软件必须有严格针对性;该硬盘的CPU专用指令集;该硬盘的Firmware结构;内部管理程序和参数模块结构。一般只有硬盘厂家才能编写这样的专业工具软件,而且视为绝密技术,不向外界提供。但也有一些专业的硬盘研究所研究开发类似的专业工具软件,一般要价很高而且很难买到。
5.对于伺服缺陷,也要借助于专业工具。相应的专业工具可以通过重写来纠正伺服信息,解决部分磁道伺服缺陷。如果有部分无法纠正,则要对盘片进行物理磁道扫描找出有伺服缺陷的磁道,添加到P-list(或另外的专门磁道缺陷列表)中。然后,运行硬盘内部的低级格式化程序。这段程序能自动根据需要调用相关的参数模块,自动完成硬盘的低格过程,不需要PC系统的干预。
坏扇区是最常见的缺陷类型,下面笔者着重论述。
四、坏扇区的修复原理
按“三包”规定,如果硬盘在质保期内出现缺陷,商家应该为用户更换或修理。现在大容量的硬盘出现一个坏扇区的概率实在很大,如果全部送修的话,硬盘商家就要为售后服务忙碌不已了。很多硬盘商家都说,硬盘出现少量坏扇区往往是病毒作怪或某些软件造成的,不是真正的坏扇区,只要运行硬盘厂家提供的某些软件,就可以纠正了。到底是怎么回事呢?从前面对坏扇区的说明来看,坏扇区有多种可能的原因,修复的方法也有几种:
1.通过重写校验码、标志信息等可以纠正一部分坏扇区。现在硬盘厂家都公开提供有一些基本的硬盘维护工具,如各种版本的DM、POWERMAX、DLGDIAG等,其中都包括有这样的功能项:Zero fill(零填充)或Lowlevel format(低级格式化)。进行这两项功能都会对硬盘的数据进行清零,并重写每个扇区的校验码和标志信息。如果不是磁盘表面介质损伤的话,大部分的坏扇区可以纠正为正常状态。这就是常听说的:“逻辑坏扇区可以修复”的道理。
2.调用自动修复机制替换坏扇区。为了减少硬盘返修的概率,硬盘厂商在硬盘内部设计了一个自动修复机制Automatic Reallcation或Automatic Reassign。现在生产的硬盘都有这样的功能:在对硬盘的读写过程中,如果发现一个坏扇区,则由内部管理程序自动分配一个备用扇区来替换该扇区,并将该扇区物理位置及其替换情况记录在G-list(增长缺陷表,Grown defects list中。这样一来,少量的坏扇区有可能在使用过程中被自动替换掉了,对用户的使用没有太大的影响。也有一些硬盘自动修复机制的激发条件要严格一些,需要运行某些软件来检测判断坏扇区,并发出相应指令激发自动修复功能。比如常用的Lformat(低格)DM中的Zero fill,Norton中的Wipeinfo和校正工具,西数工具包中的wddiag,IBM的DFT中的Erase,还有一些半专业工具如:HDDspeed、MHDD、HDDL、HDDutility等(大家可以上网搜索下载)。这些工具之所以能在运行过后消除了一些坏扇区,很重要的原因就是这些工具可以在检测到坏扇区时激发自动修复机制。如果读者能查看G-list就知道,这些“修复工具”运行前后,G-list记录有可能增加一定数量。如:用HDDspeed可以查看所有Quantum Fireball系列的P-list和G-list;MHDD可以查看IBM和FUJITSU的P-list和G-list。
当然,G-list的记录不会无限制,所有硬盘的G-list都会限定在一定数量范围内。如火球系列限度是500条,美钻二代的限度是636条,西数BB的限度是508条,等等。超过限度,自动修复机制就不能再起作用。这就是为何少量的坏扇区可以通过上述工具修复,而坏扇区多了不能通过这些工具修复。
3.用专业软件将缺陷扇区记录在P-list中,并进行内部低级格式化。用户在使用硬盘时,是不能按物理地址模式来访问硬盘的。而是按逻辑地址模式来访问。硬盘在通电自检时,系统会从系统保留区读取一些特定参数(与内部低级格式化时调用的参数有密切关系)存在缓冲区里,用作物理地址与逻辑地址之间转换的依据。有些专业软件可以将检测到的坏扇区的逻辑地址转换为对应的物理地址,直接记录在P-list中,然后调用内部低级格式化程序进行低级格式化。这样可以不受G-list的限制,能修复大量的坏扇区,达到厂家修复的效果。
五、关于“坏道”的一点补充
“坏道(Bad track)”这个概念源于十多年前小容量硬盘(如ST506接口、100MB以下)。当时的硬盘内部没有什么系统保留区,也就没有P-list或G-list。出厂前,厂家就扫描硬盘中存在坏扇区的磁道,并将其位置记录在一张小表格中,贴在硬盘外壳上,注明“Bad track list”,即常说的“坏道表”。而“坏道表”上就列出某磁头某柱面的磁道是坏磁道,这就是我们常听人说的“坏道”。当时所有的硬盘在第一次使用前都要求做低级格式化(Low level format,简称“低格”),在使用过程中也可以根据需要做低级格式化。在对这个硬盘进行低级格式化前(如用ADM、低版本DM、早期主板中自带的低格工具等),要将坏道表中记录都填入,或用工具自动扫描所有坏道,然后才进行低级格式化过程。低格过程中,低格程序对所有磁道按一定的规律进行编号,同时将前面记录或扫描到的坏道排除在外,即“跳过(Skipped)”那些位置,对用户来说可以算是“修好”了“坏道”。而如果哪个用户轻易对硬盘进行低格,却没有登记坏道,那么低格会令以前曾“跳过”的坏道一个个又重新显现出来,这就是为什么当时人们常说低格会令硬盘增加坏道的原因。
那么,现在笔者为什么不用“坏道”概念而用“缺陷”概念呢?以前的老硬盘,通过低格来修复,只要某磁道中出现一个坏扇区,该磁道就算“坏磁道(Bad Track)”,修复时就整个磁道所有扇区一起“跳过(skipped)”。所以,坏磁道和坏扇区没有区别开来,一起被称为“坏道”也还算贴切。而现在的硬盘,每个磁道划分为数百上千个扇区,不能因为有一个坏扇区就丢掉整个磁道。而且有些硬盘出厂前P-list就记录数千个坏扇区,如果丢掉数千个磁道(意味道要丢掉数GB的空间)就太浪费了。而现在的硬盘不同的缺陷有不同的表现,不同的原因,修复方法也各不相同。如果继续用“坏磁道”或“坏道”来概括多种缺陷,很明显词不达意。