硬盘损坏全分析
程序员文章站
2022-03-17 18:53:35
硬盘损坏全分析这是作者致鸣写给我的一段话:“想写这篇文章很久了,之所以一直没有动笔,是因为碍于个人的责任感,担心自己所掌握的知识面不够,不能全面、客观地判断事实。现在,经过几个月的查找... 09-04-21...
这是作者致鸣写给我的一段话:“想写这篇文章很久了,之所以一直没有动笔,是因为碍于个人的责任感,担心自己所掌握的知识面不够,不能全面、客观地判断事实。现在,经过几个月的查找资料和反复测试,拆掉、弄坏了几十个硬盘,觉得自己有足够的事实根据去作出判断了,因此写出了这篇文章。由于这是一篇普及性质的文章,针对的是所有的用户和消费者,所以不打算谈论具体的技术和复杂的理论,只讲基本的原理和实际的效果。希望借着这篇文章,能帮助广大的diyer认清一些事实,对于种种的广告和貌似专业的宣传能够独立作出清晰的判断。”
说实话,这段文字里面的“的”字实在太多了,如果被校对组的老师看到,又非痛骂我一顿不可。不过总觉得这些“的”字无不包含了作者的某些情绪在里面,所以毅然决然地保留了下来,这样你们才能被同样的情绪所感染,而不会担心被编辑笨拙的手笔改到面目全非,失去原有的味道。
话说回来,读者看我们杂志,首要还是了解知识,而非学习语法。正是基于此点,才在杂志制作的关键时期,把原本正在准备中的一个专题撤掉,临时改换此文——就是说,我们以为此文能给读者带来更多的收获和震撼。没错,震撼!本文不是一篇简单的普及知识性文章,而是对广大用户所普遍关心的硬盘问题进行了一些披露。硬盘为什么容易损坏?厂商对返修硬盘如何处理?硬盘维修公司如何修理坏硬盘?软件真的能修复坏硬盘吗?看下去,你会寻找到问题的实质。
纷争的起点
一直以来,硬盘都是计算机系统中最主要的存储设备,同时也是计算机系统中最容易出故障的部件。十几年来,计算机cpu的运行速度已经翻了不知道多少番,从几十mhz提高到现在的3ghz以上,计算和处理功能已经过了几代飞跃。其他零部件,诸如显卡、声卡和光驱也已经换了很多代,只有硬盘这个最主要的存储设备,虽然容量和速度有了很大提高,但基本结构和工作原理仍然没有多大的变化,而且由于硬盘转速和磁盘密度的提高,硬盘比以前更加容易损坏。一般的用户在使用过程中,如果硬盘出现故障,还在质保期内的话当然是尽快找到销售商要求保修或者更换;但是现在绝大部分ide硬盘的质保期只有一年,在这个时期过后硬盘出了故障,就只能考虑花钱修理或者购买新的硬盘了。(图1:硬件的损坏不可避免)
刚用了一年多或者两年的硬盘就这样扔掉,当然非常可惜,大部分用户也都希望能花最少的钱使自己的计算机各零部件能够最大限度地发挥用途。出于对这种节省心理的迎合,这两年二手硬盘市场发展很快,也陆续出现了一些以维修硬盘作为卖点的硬盘维修公司,更出现了很多据说能修理硬盘坏道的硬盘维修软件,譬如hdd regenerator、mhdd、pc-3000和效率源等等,其中有一些更是宣传自己是专业软件,可以修复硬盘的物理坏道而且不影响硬盘容量从而卖到了一万多元的天价。尤其是当俄罗斯的pc-3000进入中国后,这方面的信息就更加受到瞩目。
[编注:pc-3000是由俄罗斯著名硬盘实验室ace laboratory研究开发的商用专业修复硬盘综合工具,它能破解各种型号的硬盘专用cpu的指令集,解读各种硬盘的firmware(固件),从而控制硬盘的内部工作,实现硬盘内部参数模块读写和硬盘程序模块的调用,最终达到以软件修复多种硬盘缺陷的目的。另外,它在数据恢复方面也有其特别的功效,大部分oem硬盘厂商也很难全部掌握这些功能。ace laboratory经过十多年的不断研究,pc-3000 v12(最新版本)已能支持大部分新旧型号的ide接口硬盘,容量从40mb至200gb。其强劲的修复硬盘功能已得到世界各国的专业硬盘维修公司所认可,目前在世界各地已有数千个专业级用户,据说每天用pc-3000修复好数千到上万个缺陷硬盘。]
对于普通用户来说,如果真的能把有物理坏道的硬盘修好,那么就可以省下买新硬盘的钱了;对于二手硬盘销售商来说,一个有坏道的硬盘和一个没有坏道的价格差很多,如果能把有坏道的摇身一变成为没有坏道的,可以多挣很多利润;对于专门修理硬盘人的来说,有了这些软件就可以用一台计算机一张桌子开店了,平均每修理好一个硬盘收40元那也是非常好的生意;而对于销售这些软件的代理来说,每销售一套就是7000~8000元人民币的利润,更加是肥得漏油的生意。因此,在种种力量的促使下,各种不同的群体怀着不同的目的开始了一系列的宣传,使这些软件变得更加瞩目。由此,在很多以硬盘维修、二手硬盘和硬盘技术为主题的论坛上引发了很大规模的讨论甚至骂战。
那么,软件能够修复硬盘吗?要弄清楚这个问题,必须先从硬盘内部的结构谈起,先搞清楚硬盘损坏的原因和机理。
硬盘的结构
关于硬盘结构的文章已经非常多了,不过真正要说清楚的话,就算专门出一本书也说不完,因此这里就不再从头细细讲述了。只是要讲明白一点,到目前为止,在很多文章、技术资料甚至教科书里面讲述的硬盘结构模式,已经是非常老式的硬盘结构了。对于现在的新硬盘来说,都已经全部不采用这样的结构,而是采用了更为复杂、也更加科学的结构方式。
在老式硬盘中,采用的都是比较古老的chs(cylinder/head/sector)结构体系。因为很久以前,在硬盘的容量还非常小的时候,人们采用与软盘类似的结构生产硬盘。也就是硬盘盘片的每一条磁道都具有相同的扇区数,由此产生了所谓的3d参数(disk geometry),即是磁头数(heads)、柱面数(cylinders)、扇区数(sectors)以及相应的3d寻址方式。
其中:磁头数表示硬盘总共有几个磁头,也就是有几面盘片,最大为255(用8个二进制位存储);柱面数表示硬盘每一面盘片上有几条磁道,最大为1023(用10个二进制位存储);扇区数表示每一条磁道上有几个扇区,最大为63(用6个二进制位存储);每个扇区一般是512个字节,理论上讲你可以取任何一个你喜欢的数值,但好像至今还没有发现取别的值的。
所以磁盘最大容量为:
255×1023×63×512/1048576=8024mb(1m=1048576bytes)
或硬盘厂商常用的单位:
255×1023×63×512/1000000=8414mb(1m=1000000bytes)
由于在老式硬盘的chs结构体系中,每个磁道的扇区数相等,所以外道的记录密度要远低于内道,因此会浪费很多磁盘空间(软盘也是一样)。为了进一步提高硬盘容量,现在硬盘厂商都改用等密度结构生产硬盘。这也就是说,每个扇区的磁道长度相等,外圈磁道的扇区比内圈磁道多。采用这种结构后,硬盘不再具有实际的3d参数,寻址方式也改为线性寻址,即以扇区为单位进行寻址。而为了与使用3d寻址的老软件兼容(如使用biosint13h接口的软件),厂商通常在硬盘控制器内部安装了一个地址翻译器,由它负责将老式3d参数翻译成新的线性参数。这也是为什么现在硬盘的3d参数可以有多种选择的原因(不同的工作模式可以对应不同的3d参数,如lba、large、normal)。而随着磁盘密度的增加、机构的进一步复杂、功能和速度上的提高,如今的硬盘都会在磁盘里面划分出一个容量比较大的,称为“系统保留区”的区域,用来储存硬盘的各种信息、参数和控制程序,有的甚至把硬盘的fireware也做到了系统保留区里面(原来这些信息都是储存在硬盘控制电路板的芯片上的)。这样虽然可以进一步简化生产的流程,加快生产速度和降低生产成本,但是从另一方面,却又大大增加了硬盘出现致命性损坏的几率和缩短了硬盘的使用寿命。我十几年前的200mb硬盘和8年前的1.2gb硬盘到现在还用得非常好,别说是坏道,连运行时的声音都是没有的,但是到后来的4.3gb、6.4gb、10gb、20gb硬盘,都没有能用超过4年的,全部坏掉了。
硬盘损坏的种类
一般来说,硬盘的损坏按大类可以分为硬损坏和软损坏。
硬损坏包括磁头组件损坏、控制电路损坏、综合性损坏和扇区物理性损坏(一般人称之为物理坏道)四种。
●磁头组件损坏:主要指硬盘中磁头组件的某部分被损坏,造成部分或全部磁头无法正常读写的情况。磁头组件损坏的方式和可能性非常多,主要包括磁头脏、磁头磨损、磁头悬臂变形、磁线圈受损、移位等。
●控制电路损坏:是指硬盘的电子线路板中的某一部分线路断路或短路,或者某些电气元件或ic芯片损坏等等,导致硬盘在通电后盘片不能正常起转,或者起转后磁头不能正确寻道等。
●综合性损坏:主要是指因为一些微小的变化使硬盘产生的种种问题。有些是硬盘在使用过程中因为发热或者其他关系导致部分芯片老化;有些是硬盘在受到震动后,外壳或盘面或马达主轴产生了微小的变化或位移;有些是硬盘本身在设计方面就在散热、摩擦或结构上存在缺陷。种种的原因导致硬盘不稳定,经常丢数据或者出现逻辑错误,工作噪音大,读写速度慢,有时能正常工作但有时又不能正常工作等。
●扇区物理性损坏:是指因为碰撞、磁头摩擦或其他原因导致磁盘盘面出现的物理性损坏,譬如划伤、掉磁等。
软损坏包括磁道伺服信息出错、系统信息区出错和扇区逻辑错误(一般又被称为逻辑坏道)。
●磁道伺服信息出错:是指因为某个物理磁道的伺服信息受损或失效,导致该物理磁道无法被访问。
●系统信息区出错:是指硬盘的系统信息区(硬盘内部的一个系统保留区,里面又分成若干模块,保存了许多硬盘出厂的参数、设置信息和内部控制程序)在通电自检时读不出某些模块的信息或者校验不正常,导致硬盘无法进入准备状态。
●扇区逻辑错误:是指因为校验错误(ecc错误和crc错误)、扇区标志错误(idnf错误)、地址信息错误(amnf错误)、坏块标记错误(bbm)等原因导致该扇区失效。
一般来说,修复硬盘的软损坏是可能的,很多硬盘厂商发布的硬盘管理和维护软件(dm)都具备修复硬盘软损坏的能力。像扇区逻辑错误这样的问题,即使是一般的低级格式化软件,也是完全可以胜任的。不过在所有的软损坏当中,系统信息区出错属于比较难以修复的种类,因为即使是同一个厂商同一种型号的硬盘,系统信息区也不一定相同;而且硬盘厂商对于自己产品的系统信息区内容和读取的指令代码,一般是不公开的。但是对于ibm和日立的硬盘用户来说就比较幸运了,日立的dft和ibm的ddd-si软件对系统信息区出错还是有比较高的修复成功率的。这两个软件可是真真正正由硬盘的生产厂商发布的硬盘维修软件啊(dft还是免费的),有非常强大的功能,效率和可靠性比起那些要价过万的第三方编写的软件都要高很多,可惜只对ibm和日立的产品有效。
当然,如果仅仅是为了修复软损坏,一个原厂的dm软件就可以完成90%以上的任务了,根本不需要购买上万元的所谓专业软件,而现在hdd regenerator、mhdd、pc-3000和效率源等等这些软件,在宣传上就说明了他们所针对的不仅仅是软损坏,而且连硬损坏里面的物理坏道甚至是一些ic的损坏都可以修复!
不能说他们这样的宣传很夸张,因为理论上这确实是可能的。我们的硬盘如果在质保期内坏了,交给厂家的话,他们同样要对这个硬盘进行维修。那么,我们现在就很有必要了解一下厂家对硬盘的维修方法和过程,看看厂家是怎么样维修的,跟纯粹的软件维修有没有什么不同。
厂家维修硬盘的方法
这里其实可以向大家先说明一点,即使是从厂家出来的全新硬盘,它们的盘片也不是一点瑕疵也没有的。由于磁盘的盘片比较精密,对于生产环境和移动都有非常高的要求,即使是一粒灰尘、一次很轻微的碰撞,都会产生从几个到数以百计的坏扇区。所以,一般地,按照现在硬盘120gb的容量,全新的盘片即使有几千个坏扇区也不是不可能的。只不过硬盘厂商会使用专门的设备去扫描盘片,把那些坏的扇区和磁介质不稳定的扇区都记录下来,做成一个硬盘缺陷列表,写进系统保留区,通过控制程序把这些扇区封闭起来,而硬盘的控制程序在读取硬盘的时候是不会读取这些区域的。现今的硬盘由于功能和参数复杂,写进系统保留区的信息非常多。这样,由于在底层控制的层面就已经把有问题的扇区封闭掉了,所以用户无论用什么格式化和分区软件都不会看到这部分的信息,看起来就像真的完全没有坏道一样。同时,硬盘里面还有另外一种封闭区域,又称为保留容量,它们其实是完全没有问题的好的盘面,但是因为某种原因被封闭起来了。譬如说一个硬盘是60gb,而磁碟的单碟容量为40gb,那么由两片磁碟构成的硬盘就必须封闭掉20gb的容量(磁碟的生产线都是一定的,厂商为了降低成本,都只会生产一种容量的磁碟,通过封闭不同容量的区域来获得不同的实际硬盘容量)。
弄清楚了硬盘的生产原理,那么厂商如何维修硬盘就很好理解了。对于控制电路、磁头等的损坏,就是应用最简单的替换法,换上新的零件就可以了。对于ic芯片的损坏,可以通过重写ic芯片的信息或者干脆替换ic芯片来修理。对于磁盘盘片的问题,情况就比较复杂。首先,厂商会用专门的仪器设备对硬盘的磁碟表面按照实际的物理地址重新进行全面的扫描,检查出所有坏的、不稳定的扇区,形成一个新的硬盘缺陷列表,然后把它写进硬盘的系统信息区,替换掉原来旧的硬盘缺陷列表。然后调用内部低级格式化程序,对硬盘进行内部格式化。程序会根据新的系统信息区信息,重新对所有的磁道和扇区进行编号、清零,重写磁道伺服信息和扇区信息。经过这样的处理,返修的硬盘就又可以像新的硬盘一样了。
有人可能会有疑问——既然有新的坏扇区加进系统保留区去了,那么硬盘的容量应该减少才对啊。其实这是不必担心的,我们上面提到过有另外一种被封闭区域,它们其实是完全没有问题的好的盘面。厂商的设备既然可以封闭新出现的坏扇区,当然也可以从被封闭的完好盘面上提取出相应的扇区容量来替代被封闭的坏扇区。现今的硬盘一般都有非常可观的保留容量,最少的也有好几个gb,大的可以达到20~30gb甚至更多。
那么,是不是返修过的硬盘跟新的硬盘是完全没有差别的呢?这里牵涉到一个工艺学的问题——损伤的内敛性和发散性的区别,我打算留到后面说,这里先说说那些第三方软件修复硬盘的原理。
[编注:拥有比其他同类软件更强大功能的pc-3000引发了国内论坛的强烈争论,其中一部分人认为:不但普通的电脑用户可以修硬盘,而且业务稍与硬盘相关的公司都可能打出硬盘修理的招牌,从而令硬盘修理行业重新大洗牌,最难过的是那些依靠修理硬盘为生的专业人士,他们数年的经验优势在pc-3000面前所剩无几!有人甚至认为“一款软件不可能支持整个产业,但pc-3000绝对可以”。
第三方软件的修复原理
我们这里说的第三方软件修复硬盘,主要讨论的都是修理硬盘扇区的物理性损坏——逻辑坏道没有什么好讨论的,修复并不难。目前,第三方软件修复硬盘扇区的物理性损坏一般有两个主要方式:反向磁化和修改硬盘缺陷列表。
反向磁化是最先被应用的一种修复硬盘扇区物理性损坏的方式。一般地,硬盘的磁头只能负责读取和写入信号,而读取、写入数据信号所需要的电平信号跟磁盘表面的磁介质本身是不一样的。而反向磁化就是通过用软件指令迫使磁头产生于磁介质本身相应的高低电平信号,通过多次的往复运动对损坏或者失去磁性的扇区进行反复加磁,使这些扇区的磁介质重新获得磁能力。hdd regenerator就是最先采用这种方式的软件,后来有一些软件通过分析它的算法和指令,也掌握了反向磁化的信号,采用跟它相同或者相似的引擎进行反向磁化。要注意的是,现在市面上有不少所谓的专业硬盘维修公司发布了一些自称可以维修硬盘坏道的软件,一般也要300元左右,其实他们只是通过ultra edit、pctools等二进制编辑工具对hdd regenerator的界面信息进行改写;或者对hdd regenerator进行脱壳,换上自己编写的外壳界面摇身一变而成的。说白了就是盗版的hdd regenerator,这请大家务必区分清楚。进行反向磁化最大的缺点是速度慢,对一个磁介质不稳定或者失去磁能力的扇区进行磁化,磁头很可能要往复成百上千次,如果硬盘只有几十个或者几百个坏扇区的话,慢慢熬也是可以的。但是现今硬盘动辄上百gb的容量,有上万个坏扇区也是很平常的事情,这时候如果用这种方法去修,大概还没有修到10%,磁头就会因为疲劳过度变形了,本来通过隐藏分区后还可以用的硬盘就会彻底报废。而且这些扇区的磁介质本身就是不稳定的,即使磁化了,在一段时间内可以使用,但随时有重新失去磁能力的危险,硬盘其实并不稳定。同时,这种方法并不能修复物理划伤这种硬损坏。
修改硬盘缺陷列表的方式就是对反向磁化的改进,这种方法和上面说的硬盘厂商的维修方式非常相似。前面说过了,硬盘厂商对于自己硬盘产品的系统信息区的信息内容和读取的指令代码,一般是不公开的,但是一些技术人员通过分析和逆向工程,破解了厂商的指令代码甚至fireware,使得他们可以编制出程序软件,*地读取、修改和写入硬盘系统信息区的信息。这样,他们同样可以像硬盘厂商一样,编写程序对磁盘盘面按照物理地址进行扫描,重新构造出新的缺陷扇区列表写进系统保留区来替换原有的列表。经过这样的软件维修的硬盘,理论上说是跟硬盘厂商维修的硬盘是没有差别的。这种软件因为有了这个功能,所以价格非常昂贵,pc-3000要上万元,效率源专业版(零售版只能修复ecc错误和crc错误,其实什么也干不了)也要六百多,而且他们是不包括以后的升级技术支持的,因为这些软件有着一个非常致命的弱点——毕竟他们是通过破解获得的数据,在一定程度上说是非法的。不同的硬盘厂商、甚至同一厂商不同型号的硬盘,对于系统保留区的控制代码都是不一样的,fireware也不同,为了让软件有通用性,他们必须通过不断地破解新的硬盘型号才能使软件支持更多的硬盘。而如果因为你购买了一套软件他们就要不断给予升级支持的话他们是绝对不干的,为了要修更多的新的硬盘型号,你就必须不断地支付升级费用。在另一方面,对硬盘的系统信息区信息,如果破解得好还可以,如果破解得不好,把信息修改写进去以后,轻的会让硬盘在读写时频频出现错误,不稳定;重的就会报销掉这个硬盘了。
最后的分析
前面我已经提到过,其实返修盘和全新的硬盘还是有差别的,那么差别在哪里呢?很简单,在全新的硬盘中,扇区的物理损坏是在生产过程中产生的;而需要返修的硬盘,扇区物理损坏是在使用过程中产生的。而不同的物理损坏产生环境,直接影响到这个损坏的破坏力大小。
为了说明这个问题,我举一个电镀的过程做例子,虽然不一定完全是这样的,但这确实是材料学和工艺学的范畴,即使是磁盘盘面的加工也逃不出这个范围。如果电镀过程中因为某些原因,导致一些地方的镀层过薄或者根本没有镀上,那么这一部分就是缺陷部分,它会很容易氧化生锈。这部分的生锈会蔓延和扩展到原来镀得好、没有缺陷的部分,但是这个过程是非常慢的,因为这个缺陷是在生产过程中跟镀层一起同时形成的,镀层的边缘还封闭得非常好,所以这个缺陷是内敛性的,它的蔓延和扩展会比较慢。而如果原来的镀层是完好的,后来你用刀子刮去一部分镀层,那么就出现了一个发散性的缺陷。因为在这个缺陷中,你不但破坏了缺陷表面的镀层,而且连完好部分的镀层的边缘也被破坏掉。在这种缺陷中,氧化生锈的蔓延和扩展非常快,很快就可以在完好的部分中产生出一大片氧化生锈的区域。
硬盘盘片的生产原理也是一样的。大家都知道,坏的扇区是会蔓延的,即使封闭了这部分扇区不进行读写,它们同样会在盘面上蔓延。在生产过程中形成的坏扇区,周围的磁介质晶体仍然是均匀的和致密的,物理性质仍然相当稳定,在这样的环境中,坏扇区的蔓延是一个非常缓慢的过程,恐怕即使硬盘的使用寿命到了它还没有蔓延出多远。而在使用过程中因为碰撞、划伤而产生的坏扇区,周围的磁介质晶体是处于破碎和疏松的状态,这样,这个坏扇区的蔓延就会非常快,很可能你刚刚封闭了它不久,它就又蔓延到没有封闭的完好区域去了。由于有这样的潜在不稳定性,所以在北美,一般返修的硬盘都会打上返修标签,用非常便宜的价格出售(大概只有市价的1/2到1/3),甚至有一些公司就干脆把返修盘全部拿到亚洲或者一些第三世界国家的市场去卖了。
对于已经返修的硬盘,由硬盘厂商返修和给外面的维修人员通过软件修复,虽然在理论上是基于同样的原理,但是实际效果还是不一样的。用软件修复,需要硬盘的磁头不断读写每个扇区,以确定此扇区是否确实失去磁能力,这个读写过程可能要循环上百次甚至更多。这样一个个扇区不断地读写下去,花费的时间非常长,譬如mhdd,在默认参数下,随便对一个3.2gb的硬盘作扫描,很可能就需要48小时甚至5天的时间(根据坏盘情况的不同,时间有很大区别),而且必须连续工作不间断。这样对硬盘磁头和盘片本身的损害是非常大的,本来就已经不是好盘了,再经过这样的折腾,就算是修好了,你敢用来装一些有用的数据吗?
如果在硬盘厂商那里返修,他们会使用专门的机器,那些机器采用的是光学原理来对盘片表面查错(具体细节比较巧妙,就不说了,物理或者电子专业的朋友应该都知道),而不是用磁头真正地读写盘片的表面。在这种机器里面,当不同种类的扇区——完好的和有缺陷的:如盘面划伤、磁介质有杂质、磁介质疏松、磁性能不稳定等,通过检测点的时候,会产生不同的反馈光信号,机器会根据反馈的光信号记录下全部有缺陷的扇区记录和相应的扇区位置,编成硬盘缺陷列表。因为不是通过物理磁头读写,所以不但扫描检查的速度飞快,而且对硬盘的盘片伤害会小很多很多。
结论和一些多余的话
到了这里,我们是不是已经可以得出一些结论了呢?结论我就不说了,各位读者应该可以自己作出判断。我丝毫不怀疑写出这些硬盘维修工具程序的人是天才,甚至破解别人程序引擎的人也是天才,但是一切事物都有自己的客观规律,不会以某些人过头的宣传和意志而转移。软件能实现很多功能,但是同样地,有一些功能是它们不能、也不可能实现的,这个世上本来就没有能治百病的仙丹,软件也一样。
现在硬盘的价格是越来越便宜了,80gb的硬盘只要600元,设计的使用寿命也就大概是3年左右。老实说,如果修理一个20gb的硬盘要100元或者买一个二手的20gb硬盘要150元以上,那我干脆就买一个新的算了——就算修好了硬盘或者买了一个二手硬盘,也是绝对不放心用这个盘去储存重要的数据的。
不过我也并不是完全排斥二手硬盘,毕竟它们比较便宜,对一些不需要很大容量,只需要基本功能和用途的用户来说也是一个不错的选择。目前国内二手市场最发达的莫过于广州(只限于讨论正常渠道,有一些地方的非正常渠道非常发达,不过不在此次讨论的范围),番禺是二手计算机零配件和外设的最大集散地,内地很多二手硬盘的销售商都是
说实话,这段文字里面的“的”字实在太多了,如果被校对组的老师看到,又非痛骂我一顿不可。不过总觉得这些“的”字无不包含了作者的某些情绪在里面,所以毅然决然地保留了下来,这样你们才能被同样的情绪所感染,而不会担心被编辑笨拙的手笔改到面目全非,失去原有的味道。
话说回来,读者看我们杂志,首要还是了解知识,而非学习语法。正是基于此点,才在杂志制作的关键时期,把原本正在准备中的一个专题撤掉,临时改换此文——就是说,我们以为此文能给读者带来更多的收获和震撼。没错,震撼!本文不是一篇简单的普及知识性文章,而是对广大用户所普遍关心的硬盘问题进行了一些披露。硬盘为什么容易损坏?厂商对返修硬盘如何处理?硬盘维修公司如何修理坏硬盘?软件真的能修复坏硬盘吗?看下去,你会寻找到问题的实质。
纷争的起点
一直以来,硬盘都是计算机系统中最主要的存储设备,同时也是计算机系统中最容易出故障的部件。十几年来,计算机cpu的运行速度已经翻了不知道多少番,从几十mhz提高到现在的3ghz以上,计算和处理功能已经过了几代飞跃。其他零部件,诸如显卡、声卡和光驱也已经换了很多代,只有硬盘这个最主要的存储设备,虽然容量和速度有了很大提高,但基本结构和工作原理仍然没有多大的变化,而且由于硬盘转速和磁盘密度的提高,硬盘比以前更加容易损坏。一般的用户在使用过程中,如果硬盘出现故障,还在质保期内的话当然是尽快找到销售商要求保修或者更换;但是现在绝大部分ide硬盘的质保期只有一年,在这个时期过后硬盘出了故障,就只能考虑花钱修理或者购买新的硬盘了。(图1:硬件的损坏不可避免)
刚用了一年多或者两年的硬盘就这样扔掉,当然非常可惜,大部分用户也都希望能花最少的钱使自己的计算机各零部件能够最大限度地发挥用途。出于对这种节省心理的迎合,这两年二手硬盘市场发展很快,也陆续出现了一些以维修硬盘作为卖点的硬盘维修公司,更出现了很多据说能修理硬盘坏道的硬盘维修软件,譬如hdd regenerator、mhdd、pc-3000和效率源等等,其中有一些更是宣传自己是专业软件,可以修复硬盘的物理坏道而且不影响硬盘容量从而卖到了一万多元的天价。尤其是当俄罗斯的pc-3000进入中国后,这方面的信息就更加受到瞩目。
[编注:pc-3000是由俄罗斯著名硬盘实验室ace laboratory研究开发的商用专业修复硬盘综合工具,它能破解各种型号的硬盘专用cpu的指令集,解读各种硬盘的firmware(固件),从而控制硬盘的内部工作,实现硬盘内部参数模块读写和硬盘程序模块的调用,最终达到以软件修复多种硬盘缺陷的目的。另外,它在数据恢复方面也有其特别的功效,大部分oem硬盘厂商也很难全部掌握这些功能。ace laboratory经过十多年的不断研究,pc-3000 v12(最新版本)已能支持大部分新旧型号的ide接口硬盘,容量从40mb至200gb。其强劲的修复硬盘功能已得到世界各国的专业硬盘维修公司所认可,目前在世界各地已有数千个专业级用户,据说每天用pc-3000修复好数千到上万个缺陷硬盘。]
对于普通用户来说,如果真的能把有物理坏道的硬盘修好,那么就可以省下买新硬盘的钱了;对于二手硬盘销售商来说,一个有坏道的硬盘和一个没有坏道的价格差很多,如果能把有坏道的摇身一变成为没有坏道的,可以多挣很多利润;对于专门修理硬盘人的来说,有了这些软件就可以用一台计算机一张桌子开店了,平均每修理好一个硬盘收40元那也是非常好的生意;而对于销售这些软件的代理来说,每销售一套就是7000~8000元人民币的利润,更加是肥得漏油的生意。因此,在种种力量的促使下,各种不同的群体怀着不同的目的开始了一系列的宣传,使这些软件变得更加瞩目。由此,在很多以硬盘维修、二手硬盘和硬盘技术为主题的论坛上引发了很大规模的讨论甚至骂战。
那么,软件能够修复硬盘吗?要弄清楚这个问题,必须先从硬盘内部的结构谈起,先搞清楚硬盘损坏的原因和机理。
硬盘的结构
关于硬盘结构的文章已经非常多了,不过真正要说清楚的话,就算专门出一本书也说不完,因此这里就不再从头细细讲述了。只是要讲明白一点,到目前为止,在很多文章、技术资料甚至教科书里面讲述的硬盘结构模式,已经是非常老式的硬盘结构了。对于现在的新硬盘来说,都已经全部不采用这样的结构,而是采用了更为复杂、也更加科学的结构方式。
在老式硬盘中,采用的都是比较古老的chs(cylinder/head/sector)结构体系。因为很久以前,在硬盘的容量还非常小的时候,人们采用与软盘类似的结构生产硬盘。也就是硬盘盘片的每一条磁道都具有相同的扇区数,由此产生了所谓的3d参数(disk geometry),即是磁头数(heads)、柱面数(cylinders)、扇区数(sectors)以及相应的3d寻址方式。
其中:磁头数表示硬盘总共有几个磁头,也就是有几面盘片,最大为255(用8个二进制位存储);柱面数表示硬盘每一面盘片上有几条磁道,最大为1023(用10个二进制位存储);扇区数表示每一条磁道上有几个扇区,最大为63(用6个二进制位存储);每个扇区一般是512个字节,理论上讲你可以取任何一个你喜欢的数值,但好像至今还没有发现取别的值的。
所以磁盘最大容量为:
255×1023×63×512/1048576=8024mb(1m=1048576bytes)
或硬盘厂商常用的单位:
255×1023×63×512/1000000=8414mb(1m=1000000bytes)
由于在老式硬盘的chs结构体系中,每个磁道的扇区数相等,所以外道的记录密度要远低于内道,因此会浪费很多磁盘空间(软盘也是一样)。为了进一步提高硬盘容量,现在硬盘厂商都改用等密度结构生产硬盘。这也就是说,每个扇区的磁道长度相等,外圈磁道的扇区比内圈磁道多。采用这种结构后,硬盘不再具有实际的3d参数,寻址方式也改为线性寻址,即以扇区为单位进行寻址。而为了与使用3d寻址的老软件兼容(如使用biosint13h接口的软件),厂商通常在硬盘控制器内部安装了一个地址翻译器,由它负责将老式3d参数翻译成新的线性参数。这也是为什么现在硬盘的3d参数可以有多种选择的原因(不同的工作模式可以对应不同的3d参数,如lba、large、normal)。而随着磁盘密度的增加、机构的进一步复杂、功能和速度上的提高,如今的硬盘都会在磁盘里面划分出一个容量比较大的,称为“系统保留区”的区域,用来储存硬盘的各种信息、参数和控制程序,有的甚至把硬盘的fireware也做到了系统保留区里面(原来这些信息都是储存在硬盘控制电路板的芯片上的)。这样虽然可以进一步简化生产的流程,加快生产速度和降低生产成本,但是从另一方面,却又大大增加了硬盘出现致命性损坏的几率和缩短了硬盘的使用寿命。我十几年前的200mb硬盘和8年前的1.2gb硬盘到现在还用得非常好,别说是坏道,连运行时的声音都是没有的,但是到后来的4.3gb、6.4gb、10gb、20gb硬盘,都没有能用超过4年的,全部坏掉了。
硬盘损坏的种类
一般来说,硬盘的损坏按大类可以分为硬损坏和软损坏。
硬损坏包括磁头组件损坏、控制电路损坏、综合性损坏和扇区物理性损坏(一般人称之为物理坏道)四种。
●磁头组件损坏:主要指硬盘中磁头组件的某部分被损坏,造成部分或全部磁头无法正常读写的情况。磁头组件损坏的方式和可能性非常多,主要包括磁头脏、磁头磨损、磁头悬臂变形、磁线圈受损、移位等。
●控制电路损坏:是指硬盘的电子线路板中的某一部分线路断路或短路,或者某些电气元件或ic芯片损坏等等,导致硬盘在通电后盘片不能正常起转,或者起转后磁头不能正确寻道等。
●综合性损坏:主要是指因为一些微小的变化使硬盘产生的种种问题。有些是硬盘在使用过程中因为发热或者其他关系导致部分芯片老化;有些是硬盘在受到震动后,外壳或盘面或马达主轴产生了微小的变化或位移;有些是硬盘本身在设计方面就在散热、摩擦或结构上存在缺陷。种种的原因导致硬盘不稳定,经常丢数据或者出现逻辑错误,工作噪音大,读写速度慢,有时能正常工作但有时又不能正常工作等。
●扇区物理性损坏:是指因为碰撞、磁头摩擦或其他原因导致磁盘盘面出现的物理性损坏,譬如划伤、掉磁等。
软损坏包括磁道伺服信息出错、系统信息区出错和扇区逻辑错误(一般又被称为逻辑坏道)。
●磁道伺服信息出错:是指因为某个物理磁道的伺服信息受损或失效,导致该物理磁道无法被访问。
●系统信息区出错:是指硬盘的系统信息区(硬盘内部的一个系统保留区,里面又分成若干模块,保存了许多硬盘出厂的参数、设置信息和内部控制程序)在通电自检时读不出某些模块的信息或者校验不正常,导致硬盘无法进入准备状态。
●扇区逻辑错误:是指因为校验错误(ecc错误和crc错误)、扇区标志错误(idnf错误)、地址信息错误(amnf错误)、坏块标记错误(bbm)等原因导致该扇区失效。
一般来说,修复硬盘的软损坏是可能的,很多硬盘厂商发布的硬盘管理和维护软件(dm)都具备修复硬盘软损坏的能力。像扇区逻辑错误这样的问题,即使是一般的低级格式化软件,也是完全可以胜任的。不过在所有的软损坏当中,系统信息区出错属于比较难以修复的种类,因为即使是同一个厂商同一种型号的硬盘,系统信息区也不一定相同;而且硬盘厂商对于自己产品的系统信息区内容和读取的指令代码,一般是不公开的。但是对于ibm和日立的硬盘用户来说就比较幸运了,日立的dft和ibm的ddd-si软件对系统信息区出错还是有比较高的修复成功率的。这两个软件可是真真正正由硬盘的生产厂商发布的硬盘维修软件啊(dft还是免费的),有非常强大的功能,效率和可靠性比起那些要价过万的第三方编写的软件都要高很多,可惜只对ibm和日立的产品有效。
当然,如果仅仅是为了修复软损坏,一个原厂的dm软件就可以完成90%以上的任务了,根本不需要购买上万元的所谓专业软件,而现在hdd regenerator、mhdd、pc-3000和效率源等等这些软件,在宣传上就说明了他们所针对的不仅仅是软损坏,而且连硬损坏里面的物理坏道甚至是一些ic的损坏都可以修复!
不能说他们这样的宣传很夸张,因为理论上这确实是可能的。我们的硬盘如果在质保期内坏了,交给厂家的话,他们同样要对这个硬盘进行维修。那么,我们现在就很有必要了解一下厂家对硬盘的维修方法和过程,看看厂家是怎么样维修的,跟纯粹的软件维修有没有什么不同。
厂家维修硬盘的方法
这里其实可以向大家先说明一点,即使是从厂家出来的全新硬盘,它们的盘片也不是一点瑕疵也没有的。由于磁盘的盘片比较精密,对于生产环境和移动都有非常高的要求,即使是一粒灰尘、一次很轻微的碰撞,都会产生从几个到数以百计的坏扇区。所以,一般地,按照现在硬盘120gb的容量,全新的盘片即使有几千个坏扇区也不是不可能的。只不过硬盘厂商会使用专门的设备去扫描盘片,把那些坏的扇区和磁介质不稳定的扇区都记录下来,做成一个硬盘缺陷列表,写进系统保留区,通过控制程序把这些扇区封闭起来,而硬盘的控制程序在读取硬盘的时候是不会读取这些区域的。现今的硬盘由于功能和参数复杂,写进系统保留区的信息非常多。这样,由于在底层控制的层面就已经把有问题的扇区封闭掉了,所以用户无论用什么格式化和分区软件都不会看到这部分的信息,看起来就像真的完全没有坏道一样。同时,硬盘里面还有另外一种封闭区域,又称为保留容量,它们其实是完全没有问题的好的盘面,但是因为某种原因被封闭起来了。譬如说一个硬盘是60gb,而磁碟的单碟容量为40gb,那么由两片磁碟构成的硬盘就必须封闭掉20gb的容量(磁碟的生产线都是一定的,厂商为了降低成本,都只会生产一种容量的磁碟,通过封闭不同容量的区域来获得不同的实际硬盘容量)。
弄清楚了硬盘的生产原理,那么厂商如何维修硬盘就很好理解了。对于控制电路、磁头等的损坏,就是应用最简单的替换法,换上新的零件就可以了。对于ic芯片的损坏,可以通过重写ic芯片的信息或者干脆替换ic芯片来修理。对于磁盘盘片的问题,情况就比较复杂。首先,厂商会用专门的仪器设备对硬盘的磁碟表面按照实际的物理地址重新进行全面的扫描,检查出所有坏的、不稳定的扇区,形成一个新的硬盘缺陷列表,然后把它写进硬盘的系统信息区,替换掉原来旧的硬盘缺陷列表。然后调用内部低级格式化程序,对硬盘进行内部格式化。程序会根据新的系统信息区信息,重新对所有的磁道和扇区进行编号、清零,重写磁道伺服信息和扇区信息。经过这样的处理,返修的硬盘就又可以像新的硬盘一样了。
有人可能会有疑问——既然有新的坏扇区加进系统保留区去了,那么硬盘的容量应该减少才对啊。其实这是不必担心的,我们上面提到过有另外一种被封闭区域,它们其实是完全没有问题的好的盘面。厂商的设备既然可以封闭新出现的坏扇区,当然也可以从被封闭的完好盘面上提取出相应的扇区容量来替代被封闭的坏扇区。现今的硬盘一般都有非常可观的保留容量,最少的也有好几个gb,大的可以达到20~30gb甚至更多。
那么,是不是返修过的硬盘跟新的硬盘是完全没有差别的呢?这里牵涉到一个工艺学的问题——损伤的内敛性和发散性的区别,我打算留到后面说,这里先说说那些第三方软件修复硬盘的原理。
[编注:拥有比其他同类软件更强大功能的pc-3000引发了国内论坛的强烈争论,其中一部分人认为:不但普通的电脑用户可以修硬盘,而且业务稍与硬盘相关的公司都可能打出硬盘修理的招牌,从而令硬盘修理行业重新大洗牌,最难过的是那些依靠修理硬盘为生的专业人士,他们数年的经验优势在pc-3000面前所剩无几!有人甚至认为“一款软件不可能支持整个产业,但pc-3000绝对可以”。
第三方软件的修复原理
我们这里说的第三方软件修复硬盘,主要讨论的都是修理硬盘扇区的物理性损坏——逻辑坏道没有什么好讨论的,修复并不难。目前,第三方软件修复硬盘扇区的物理性损坏一般有两个主要方式:反向磁化和修改硬盘缺陷列表。
反向磁化是最先被应用的一种修复硬盘扇区物理性损坏的方式。一般地,硬盘的磁头只能负责读取和写入信号,而读取、写入数据信号所需要的电平信号跟磁盘表面的磁介质本身是不一样的。而反向磁化就是通过用软件指令迫使磁头产生于磁介质本身相应的高低电平信号,通过多次的往复运动对损坏或者失去磁性的扇区进行反复加磁,使这些扇区的磁介质重新获得磁能力。hdd regenerator就是最先采用这种方式的软件,后来有一些软件通过分析它的算法和指令,也掌握了反向磁化的信号,采用跟它相同或者相似的引擎进行反向磁化。要注意的是,现在市面上有不少所谓的专业硬盘维修公司发布了一些自称可以维修硬盘坏道的软件,一般也要300元左右,其实他们只是通过ultra edit、pctools等二进制编辑工具对hdd regenerator的界面信息进行改写;或者对hdd regenerator进行脱壳,换上自己编写的外壳界面摇身一变而成的。说白了就是盗版的hdd regenerator,这请大家务必区分清楚。进行反向磁化最大的缺点是速度慢,对一个磁介质不稳定或者失去磁能力的扇区进行磁化,磁头很可能要往复成百上千次,如果硬盘只有几十个或者几百个坏扇区的话,慢慢熬也是可以的。但是现今硬盘动辄上百gb的容量,有上万个坏扇区也是很平常的事情,这时候如果用这种方法去修,大概还没有修到10%,磁头就会因为疲劳过度变形了,本来通过隐藏分区后还可以用的硬盘就会彻底报废。而且这些扇区的磁介质本身就是不稳定的,即使磁化了,在一段时间内可以使用,但随时有重新失去磁能力的危险,硬盘其实并不稳定。同时,这种方法并不能修复物理划伤这种硬损坏。
修改硬盘缺陷列表的方式就是对反向磁化的改进,这种方法和上面说的硬盘厂商的维修方式非常相似。前面说过了,硬盘厂商对于自己硬盘产品的系统信息区的信息内容和读取的指令代码,一般是不公开的,但是一些技术人员通过分析和逆向工程,破解了厂商的指令代码甚至fireware,使得他们可以编制出程序软件,*地读取、修改和写入硬盘系统信息区的信息。这样,他们同样可以像硬盘厂商一样,编写程序对磁盘盘面按照物理地址进行扫描,重新构造出新的缺陷扇区列表写进系统保留区来替换原有的列表。经过这样的软件维修的硬盘,理论上说是跟硬盘厂商维修的硬盘是没有差别的。这种软件因为有了这个功能,所以价格非常昂贵,pc-3000要上万元,效率源专业版(零售版只能修复ecc错误和crc错误,其实什么也干不了)也要六百多,而且他们是不包括以后的升级技术支持的,因为这些软件有着一个非常致命的弱点——毕竟他们是通过破解获得的数据,在一定程度上说是非法的。不同的硬盘厂商、甚至同一厂商不同型号的硬盘,对于系统保留区的控制代码都是不一样的,fireware也不同,为了让软件有通用性,他们必须通过不断地破解新的硬盘型号才能使软件支持更多的硬盘。而如果因为你购买了一套软件他们就要不断给予升级支持的话他们是绝对不干的,为了要修更多的新的硬盘型号,你就必须不断地支付升级费用。在另一方面,对硬盘的系统信息区信息,如果破解得好还可以,如果破解得不好,把信息修改写进去以后,轻的会让硬盘在读写时频频出现错误,不稳定;重的就会报销掉这个硬盘了。
最后的分析
前面我已经提到过,其实返修盘和全新的硬盘还是有差别的,那么差别在哪里呢?很简单,在全新的硬盘中,扇区的物理损坏是在生产过程中产生的;而需要返修的硬盘,扇区物理损坏是在使用过程中产生的。而不同的物理损坏产生环境,直接影响到这个损坏的破坏力大小。
为了说明这个问题,我举一个电镀的过程做例子,虽然不一定完全是这样的,但这确实是材料学和工艺学的范畴,即使是磁盘盘面的加工也逃不出这个范围。如果电镀过程中因为某些原因,导致一些地方的镀层过薄或者根本没有镀上,那么这一部分就是缺陷部分,它会很容易氧化生锈。这部分的生锈会蔓延和扩展到原来镀得好、没有缺陷的部分,但是这个过程是非常慢的,因为这个缺陷是在生产过程中跟镀层一起同时形成的,镀层的边缘还封闭得非常好,所以这个缺陷是内敛性的,它的蔓延和扩展会比较慢。而如果原来的镀层是完好的,后来你用刀子刮去一部分镀层,那么就出现了一个发散性的缺陷。因为在这个缺陷中,你不但破坏了缺陷表面的镀层,而且连完好部分的镀层的边缘也被破坏掉。在这种缺陷中,氧化生锈的蔓延和扩展非常快,很快就可以在完好的部分中产生出一大片氧化生锈的区域。
硬盘盘片的生产原理也是一样的。大家都知道,坏的扇区是会蔓延的,即使封闭了这部分扇区不进行读写,它们同样会在盘面上蔓延。在生产过程中形成的坏扇区,周围的磁介质晶体仍然是均匀的和致密的,物理性质仍然相当稳定,在这样的环境中,坏扇区的蔓延是一个非常缓慢的过程,恐怕即使硬盘的使用寿命到了它还没有蔓延出多远。而在使用过程中因为碰撞、划伤而产生的坏扇区,周围的磁介质晶体是处于破碎和疏松的状态,这样,这个坏扇区的蔓延就会非常快,很可能你刚刚封闭了它不久,它就又蔓延到没有封闭的完好区域去了。由于有这样的潜在不稳定性,所以在北美,一般返修的硬盘都会打上返修标签,用非常便宜的价格出售(大概只有市价的1/2到1/3),甚至有一些公司就干脆把返修盘全部拿到亚洲或者一些第三世界国家的市场去卖了。
对于已经返修的硬盘,由硬盘厂商返修和给外面的维修人员通过软件修复,虽然在理论上是基于同样的原理,但是实际效果还是不一样的。用软件修复,需要硬盘的磁头不断读写每个扇区,以确定此扇区是否确实失去磁能力,这个读写过程可能要循环上百次甚至更多。这样一个个扇区不断地读写下去,花费的时间非常长,譬如mhdd,在默认参数下,随便对一个3.2gb的硬盘作扫描,很可能就需要48小时甚至5天的时间(根据坏盘情况的不同,时间有很大区别),而且必须连续工作不间断。这样对硬盘磁头和盘片本身的损害是非常大的,本来就已经不是好盘了,再经过这样的折腾,就算是修好了,你敢用来装一些有用的数据吗?
如果在硬盘厂商那里返修,他们会使用专门的机器,那些机器采用的是光学原理来对盘片表面查错(具体细节比较巧妙,就不说了,物理或者电子专业的朋友应该都知道),而不是用磁头真正地读写盘片的表面。在这种机器里面,当不同种类的扇区——完好的和有缺陷的:如盘面划伤、磁介质有杂质、磁介质疏松、磁性能不稳定等,通过检测点的时候,会产生不同的反馈光信号,机器会根据反馈的光信号记录下全部有缺陷的扇区记录和相应的扇区位置,编成硬盘缺陷列表。因为不是通过物理磁头读写,所以不但扫描检查的速度飞快,而且对硬盘的盘片伤害会小很多很多。
结论和一些多余的话
到了这里,我们是不是已经可以得出一些结论了呢?结论我就不说了,各位读者应该可以自己作出判断。我丝毫不怀疑写出这些硬盘维修工具程序的人是天才,甚至破解别人程序引擎的人也是天才,但是一切事物都有自己的客观规律,不会以某些人过头的宣传和意志而转移。软件能实现很多功能,但是同样地,有一些功能是它们不能、也不可能实现的,这个世上本来就没有能治百病的仙丹,软件也一样。
现在硬盘的价格是越来越便宜了,80gb的硬盘只要600元,设计的使用寿命也就大概是3年左右。老实说,如果修理一个20gb的硬盘要100元或者买一个二手的20gb硬盘要150元以上,那我干脆就买一个新的算了——就算修好了硬盘或者买了一个二手硬盘,也是绝对不放心用这个盘去储存重要的数据的。
不过我也并不是完全排斥二手硬盘,毕竟它们比较便宜,对一些不需要很大容量,只需要基本功能和用途的用户来说也是一个不错的选择。目前国内二手市场最发达的莫过于广州(只限于讨论正常渠道,有一些地方的非正常渠道非常发达,不过不在此次讨论的范围),番禺是二手计算机零配件和外设的最大集散地,内地很多二手硬盘的销售商都是