柔中带刚,刚中带柔,淫荡中富含柔和,刚猛中荡漾风骚,无坚不摧,无孔不入!
全部博文(1669)
分类: LINUX
2012-07-18 09:10:15
2011-11-03 08:36:15| 分类: 默认分类 | 标签: |字号大中小
前言
这是作者致鸣写给我的一段话:“想写这篇文章很久了,之所以一直没有动笔,是因为碍于个人的责任感,担心自己所掌握的知识面不够,不能全面、客观地判断事实。现在,经过几个月的查找资料和反复测试,拆掉、弄坏了几十个,觉得自己有足够的事实根据去作出判断了,因此写出了这篇文章。由于这是一篇普及性质的文章,针对的是所有的用户和消费者,所以不打算谈论具体的技术和复杂的理论,只讲基本的原理和实际的效果。希望借着这篇文章,能帮助广大的er认清一些事实,对于种种的广告和貌似专业的宣传能够独立作出清晰的判断。”
说实话,这段文字里面的“的”字实在太多了,如果被校对组的老师看到,又非痛骂我一顿不可。不过总觉得这些“的”字无不包含了作者的某些情绪在里面,所以毅然决然地保留了下来,这样你们才能被同样的情绪所感染,而不会担心被编辑笨拙的手笔改到面目全非,失去原有的味道。
话说回来,读者看我们杂志,首要还是了解知识,而非学习语法。正是基于此点,才在杂志制作的关键时期,把原本正在准备中的一个专题撤掉,临时改换此文——就是说,我们以为此文能给读者带来更多的收获和震撼。没错,震撼!本文不是一篇简单的普及知识性文章,而是对广大用户所普遍关心的硬盘问题进行了一些披露。硬盘为什么容易损坏?厂商对返修硬盘如何处理?硬盘维修公司如何修理坏硬盘?真的能修复坏硬盘吗?看下去,你会寻找到问题的实质。
纷争的起点
一直以来,硬盘都是计算机系统中最主要的设备,同时也是计算机系统中最容易出故障的部件。十几年来,计算机的运行速度已经翻了不知道多少番,从几十MHz提高到现在的3GHz以上,计算和处理功能已经过了几代飞跃。其他零部件,诸如、和光驱也已经换了很多代,只有硬盘这个最主要的存储设备,虽然容量和速度有了很大提高,但基本结构和工作原理仍然没有多大的变化,而且由于硬盘转速和磁盘密度的提高,硬盘比以前更加容易损坏。一般的用户在使用过程中,如果硬盘出现故障,还在质保期内的话当然是尽快找到销售商要求保修或者更换;但是现在绝大部分IDE硬盘的质保期只有一年,在这个时期过后硬盘出了故障,就只能考虑花钱修理或者购买新的硬盘了。
刚用了一年多或者两年的硬盘就这样扔掉,当然非常可惜,大部分用户也都希望能花最少的钱使自己的计算机各零部件能够最大限度地发挥用途。出于对这种节省心理的迎合,这两年二手硬盘市场发展很快,也陆续出现了一些以维修硬盘作为卖点的硬盘维修公司,更出现了很多据说能修理硬盘坏道的硬盘维修软件,譬如HDD Regenerator、D、PC-0和效率源等等,其中有一些更是宣传自己是专业软件,可以修复硬盘的物理坏道而且不影响硬盘容量从而卖到了一万多元的天价。尤其是当俄罗斯的进入中国后,这方面的信息就更加受到瞩目。
[编注:是由俄罗斯著名硬盘实验室 Laboratory研究开发的商用专业修复硬盘综合工具,它能破解各种型号的硬盘专用CPU的指令集,解读各种硬盘的Firmware(固件),从而控制硬盘的内部工作,实现硬盘内部参数模块读写和硬盘程序模块的调用,最终达到以软件修复多种硬盘缺陷的目的。另外,它在数据恢复方面也有其特别的功效,大部分OEM硬盘厂商也很难全部掌握这些功能。ACE Laboratory经过十多年的不断研究,PC-0 (最新版本)已能支持大部分新旧型号的IDE接口硬盘,容量从40MB至200GB。其强劲的修复硬盘功能已得到世界各国的专业硬盘维修公司所认可,目前在世界各地已有数千个专业级用户,据说每天用PC-0修复好数千到上万个缺陷硬盘。]
对于普户来说,如果真的能把有物理坏道的硬盘修好,那么就可以省下买新硬盘的钱了;对于二手硬盘销售商来说,一个有坏道的硬盘和一个没有坏道的价格差很多,如果能把有坏道的摇身一变成为没有坏道的,可以多挣很多利润;对于专门修理硬盘人的来说,有了这些软件就可以用一台计算机一张桌子开店了,平均每修理好一个硬盘收40元那也是非常好的生意;而对于销售这些软件的代理来说,每销售一套就是7000~元人民币的利润,更加是肥得漏油的生意。因此,在种种力量的促使下,各种不同的群体怀着不同的目的开始了一系列的宣传,使这些软件变得更加瞩目。由此,在很多以硬盘维修、二手硬盘和硬盘技术为主题的论坛上引发了很大规模的讨论甚至骂战。有兴趣的读者可以到“存储在线”()的论坛转转。
[编注:“存储在线”前身是原国内知名的垂直硬件资讯网站“硬盘地带”(),在拓展了光存储、移动存储、和高端存储等领域的资讯服务面后,硬盘地带网站于年1月16日更名为“存储在线”]
那么,软件能够修复硬盘吗?要弄清楚这个问题,必须先从硬盘内部的结构谈起,先搞清楚硬盘损坏的原因和机理。
硬盘的结构
关于硬盘结构的文章已经非常多了,不过真正要说清楚的话,就算专门出一本书也说不完,因此这里就不再从头细细讲述了。只是要讲明白一点,到目前为止,在很多文章、技术资料甚至教科书里面讲述的硬盘结构模式,已经是非常老式的硬盘结构了。对于现在的新硬盘来说,都已经全部不采用这样的结构,而是采用了更为复杂、也更加科学的结构方式。
在老式硬盘中,采用的都是比较古老的CHS(Cylinder/Head/Sector)结构体系。因为很久以前,在硬盘的容量还非常小的时候,人们采用与软盘类似的结构生产硬盘。也就是硬盘的每一条磁道都具有相同的扇区数,由此产生了所谓的3D参数(Disk Geometry),即是磁头数(Heads)、柱面数(Cylinders)、扇区数(Sectors)以及相应的3D寻址方式。
其中:磁头数表示硬盘总共有几个磁头,也就是有几面盘片,最大为255(用8个二进制位存储);柱面数表示硬盘每一面盘片上有几条磁道,最大为1023(用10个二进制位存储);扇区数表示每一条磁道上有几个扇区,最大为63(用6个二进制位存储);每个扇区一般是512个字节,理论上讲你可以取任何一个你喜欢的数值,但好像至今还没有发现取别的值的。
所以磁盘最大容量为:
255×1023×63×512/1048576=4MB(1M=1048576Bytes)
或硬盘厂商常用的单位:
255×1023×63×512/0000=8414MB(1M=0000Bytes)
由于在老式硬盘的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的-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元以上,那我干脆就买一个新的算了——就算修好了硬盘或者买了一个二手硬盘,也是绝对不放心用这个盘去储存重要的数据的。
不过我也并不是完全排斥二手硬盘,毕竟它们比较便宜,对一些不需要很大容量,只需要基本功能和用途的用户来说也是一个不错的选择。目前国内二手市场最发达的莫过于广州(只限于讨论正常渠道,有一些地方的非正常渠道非常发达,不过不在此次讨论的范围),番禺是二手计算机零配件和外设的最大集散地,内地很多二手硬盘的销售商都是通过广州的渠道进货然后发往内地的。对于单独一个零售的商户来说,每天二手硬盘的交易量也就是几个、十几个。但是对于那些二手硬盘的批发商来说,每天的交易进出量和单位价格不是用个来算,而是用吨计算的。在番禺,一个普通的批发店,平均每天的交易额就可能有几百甚至上千个硬盘。按照这个交易量,他们应该是不大可能会有这个时间用软件去扫描和修复硬盘的。同时,大家也许不知道他们是怎样把国外的二手电脑零配件或者整机运过来的,我这里可以简单说一说。在发达国家,是不允许把淘汰的电脑随便扔到垃圾箱里的,让路人或者邻居看到了报警的话会被罚很多钱。因此,在国外收二手电脑或者零配件,收购的人并不需要付任何费用,相反,那些需要淘汰电脑的公司和个人必须支付相当一笔费用给收电脑的人,让他们把电脑拉走。正因为这样,在国外收旧电脑可以说是无本生意,加上每个集装箱的运费也就1000美元左右(现在国家不允许进口洋垃圾,但很多二手的电脑零配件还是可以进来,加上商人们总有很多办法,而且可以通过各种填报海关单据的方式来把进口税也逃掉),所以国内的进货价格之低是你们绝对不可以想像的。国内的硬盘批发商都是用自卸车一车一车拉回来,哗啦哗啦一下整车倒在地上。因为他们的批发价格已经非常低,根本不在乎破损率,不需要理会硬盘会因此而产生坏道和盘体变形,只需要快点出货,然后又快点进货。因此,这里我可以很负责任地告诉大家,通过这种渠道进来的硬盘,几乎100%都是有这样或者那样的缺陷的,如果是从本地公司或个人淘汰机器里面收购来的另当别论。各地的中间商都会把批发过来的硬盘先简单修理一下才发给零售店,由此,我们可以知道,需要这种软件的多半是中间商和零售的商户,他们用比较低的价格进来了一批二手硬盘,但是每天出货的量不多,如果能够把硬盘的坏道全部屏蔽起来,恢复到好像没有坏道的样子,那么同样一个硬盘的零售价可以提高50到100元。这样的盘当然也是可以用的,但大家就需要根据自己的实际用途和数据的重要程度,来决定是否购买和使用这些硬盘了。不过,我相信大家应该可以从自己的实际需要出发,决定怎么花自己的钱。
顺便说几句多余的话,有人可能会因为自己现在使用的电脑型号比较老,不能辨认大硬盘而对购买新硬盘有所犹豫。那么我可以说请放心,连什么硬盘厂商的大硬盘支持程序都不需要的。如果你的BIOS是Award的,那么你只要下载一个叫BP的小程序(全称BIOS Patcher,可修改主板BIOS程序错误,打开被屏蔽的功能;目前只支持Award BIOS。下载地址:),假设你的主板BIOS文件名是1.bin,那么你在纯DOS模式下输入命令:bp 1.bin,然后把这个文件刷回主板,一切就搞定了。现在,不管你的主板有多老(甚至是老奔、VX主板),它都可以支持到137GB的大硬盘啦。
一般硬盘正面贴有产品标签,主要包括厂家信息和产品信息,如商标、型号、序列号、生产日期、容量、参数和主从设置方法等。这些信息是正确使用硬盘的基本依据,下面将逐步介绍它们的含义。
硬盘主要由盘体、控制电路板和接口部件等组成,如图1-1所示。盘体是一个密封的腔体。硬盘的内部结构通常是指盘体的内部结构;控制电路板上主要有硬盘BIOS、硬盘缓存(即CACHE)和主控制芯片等单元,如图1-2所示;硬盘接口包括电源插座、数据接口和主、从跳线,如图1-3所示。
图1-1 硬盘的外观
图1-2 控制电路板
图1-3 硬盘接口
电源插座连接电源,为硬盘工作提供电力保证。数据接口是硬盘与主板、内存之间进行数据交换的通道,使用一根40针40线(早期)或40针80线(当前)的IDE接口电缆进行连接。新增加的40线是信号屏蔽线,用于屏蔽高速高频数据传输过程中的串扰。中间的主、从盘跳线插座,用以设置主、从硬盘,即设置硬盘驱动器的访问顺序。其设置方法一般标注在盘体外的标签上,也有一些标注在接口处,早期的硬盘还可能印在电路板上。
此外,在硬盘表面有一个透气孔(见图1-1),它的作用是使硬盘内部气压与外部大气压保持一致。由于盘体是密封的,所以,这个透气孔不直接和内部相通,而是经由一个高效过滤器和盘体相通,用以保证盘体内部的洁净无尘,使用中注意不要将它盖住。
1.2 硬盘的内部结构
硬盘的内部结构通常专指盘体的内部结构。盘体是一个密封的腔体,里面密封着磁头、盘片(磁片、碟片)等部件,如图1-4所示。
图1-4 硬盘内部结构
硬盘的盘片是硬质磁性合金盘片,片厚一般在0.5mm左右,直径主要有1.8in(1in=25.4mm)、2.5in、3.5in和5.25in 4种,其中2.5in和3.5in盘片应用最广。盘片的转速与盘片大小有关,考虑到惯性及盘片的稳定性,盘片越大转速越低。一般来讲,2.5in硬盘的转速在5 400 r/min~7 200 r/ min之间;3.5in硬盘的转速在4 500 r/min~5 400 r/min之间;而5.25in硬盘转速则在3 600 r/min~4 500 r/min之间。随着技术的进步,现在2.5in硬盘的转速最高已达15 000 r/min,3.5in硬盘的转速最高已达12 000 r/min。
有的硬盘只装一张盘片,有的硬盘则有多张盘片。这些盘片安装在主轴电机的转轴上,在主轴电机的带动下高速旋转。每张盘片的容量称为单碟容量,而硬盘的容量就是所有盘片容量的总和。早期硬盘由于单碟容量低,所以,盘片较多,有的甚至多达10余片,现代硬盘的盘片一般只有少数几片。一块硬盘内的所有盘片都是完全一样的,不然控制部分就太复杂了。一个牌子的一个系列一般都用同一种盘片,使用不同数量的盘片,就出现了一个系列不同容量的硬盘产品。
盘体的完整构造如图1-5所示。
图1-5 盘体的完整结构
硬盘驱动器采用高精度、轻型磁头驱动/定位系统。这种系统能使磁头在盘面上快速移动,可在极短的时间内精确地定位在由计算机指令指定的磁道上。目前,磁道密度已高达5 400Tpi(每英寸磁道数)或更高;人们还在研究各种新方法,如在盘上挤压(或刻蚀)图形、凹槽和斑点等作为定位和跟踪标记,以提高到和光盘相等的道密度,从而在保持磁盘机高速度、高位密度和高可靠性的优势下,大幅度提高存储容量。
硬盘驱动器内的电机都是无刷电机,在高速轴承支持下机械磨损很小,可以长时间连续工作。高速旋转的盘体产生明显的陀螺效应,所以,在硬盘工作时不宜搬动,否则,将增加轴承的工作负荷。为了高速存储和读取信息,硬盘驱动器的磁头质量小,惯性也小,所以,硬盘驱动器的寻道速度明显快于软驱和光驱。
硬盘驱动器磁头与磁头臂及伺服定位系统是一个整体。伺服定位系统由磁头臂后的线圈和固定在底板上的电磁控制系统组成。由于定位系统限制,磁头臂只能在盘片的内外磁道之间移动。因此,不管开机还是关机,磁头总在盘片上;所不同的是,关机时磁头停留在盘片启停区,开机时磁头“飞行”在磁盘片上方。
硬盘上的数据是如何组织与管理的呢?硬盘首先在逻辑上被划分为磁道、柱面以及扇区,其结构关系如图1-6所示。
图1-6 磁头、柱面和扇区
每个盘片的每个面都有一个读写磁头,磁盘盘面区域的划分如图1-7所示。磁头靠近主轴接触的表面,即线速度最小的地方,是一个特殊的区域,它不存放任何数据,称为启停区或着陆区(Landing Zone),启停区外就是数据区。在最外圈,离主轴最远的地方是“0”磁道,硬盘数据的存放就是从最外圈开始的。那么,磁头是如何找到“0”磁道的位置的呢?从图1-5中可以看到,有一个“0”磁道检测器,由它来完成硬盘的初始定位。“0”磁道是如此的重要,以致很多硬盘仅仅因为“0”磁道损坏就报废,这是非常可惜的。这种故障的修复技术在后面的章节中有详细的介绍。
图1-7 硬盘盘片的启停区和数据区
早期的硬盘在每次关机之前需要运行一个被称为Parking的程序,其作用是让磁头回到启停区。现代硬盘在设计上已摒弃了这个虽不复杂却很让人不愉快的小缺陷。硬盘不工作时,磁头停留在启停区,当需要从硬盘读写数据时,磁盘开始旋转。旋转速度达到额定的高速时,磁头就会因盘片旋转产生的气流而抬起,这时磁头才向盘片存放数据的区域移动。盘片旋转产生的气流相当强,足以使磁头托起,并与盘面保持一个微小的距离。这个距离越小,磁头读写数据的灵敏度就越高,当然对硬盘各部件的要求也越高。早期设计的磁盘驱动器使磁头保持在盘面上方几微米处飞行。稍后一些设计使磁头在盘面上的飞行高度降到约0.1μm~0.5μm,现在的水平已经达到0.005μm~0.01μm,这只是人类头发直径的千分之一。气流既能使磁头脱离开盘面,又能使它保持在离盘面足够近的地方,非常紧密地跟随着磁盘表面呈起伏运动,使磁头飞行处于严格受控状态。磁头必须飞行在盘面上方,而不是接触盘面,这种位置可避免擦伤磁性涂层,而更重要的是不让磁性涂层损伤磁头。但是,磁头也不能离盘面太远,否则,就不能使盘面达到足够强的磁化,难以读出盘上的磁化翻转(磁极转换形式,是磁盘上实际记录数据的方式)。
硬盘驱动器磁头的飞行悬浮高度低、速度快,一旦有小的尘埃进入硬盘密封腔内,或者一旦磁头与盘体发生碰撞,就可能造成数据丢失,形成坏块,甚至造成磁头和盘体的损坏。所以,硬盘系统的密封一定要可靠,在非专业条件下绝对不能开启硬盘密封腔,否则,灰尘进入后会加速硬盘的损坏。另外,硬盘驱动器磁头的寻道伺服电机多采用音圈式旋转或直线运动步进电机,在伺服跟踪的调节下精确地跟踪盘片的磁道,所以,硬盘工作时不要有冲击碰撞,搬动时要小心轻放。
这种硬盘就是采用温彻斯特(Winchester)技术制造的硬盘,所以也被称为温盘。其结构特点如下。
①磁头、盘片及运动机构密封在盘体内。
②磁头在启动、停止时与盘片接触,在工作时因盘片高速旋转,带动磁头“悬浮”在盘片上面呈飞行状态(空气动力学原理),“悬浮”的高度约为0.1μm~0.3μm,这个高度非常小,图1-8标出了这个高度与头发、烟尘和手指印的大小比较关系,从这里可以直观地“看”出这个高度有多“高”。
图1-8 盘片结构及磁头高度示意图
③磁头工作时与盘片不直接接触,所以,磁头的加载较小,磁头可以做得很精致,检测磁道的能力很强,可大大提高位密度。
④磁盘表面非常平整光滑,可以做镜面使用。
下面对“盘面”、“磁道”、“柱面”和“扇区”的含义逐一进行介绍。
1. 盘面号
硬盘的盘片一般用铝合金材料做基片,高速硬盘也可能用玻璃做基片。玻璃基片更容易达到所需的平面度和光洁度,且有很高的硬度。磁头传动装置是使磁头部件作径向移动的部件,通常有两种类型的传动装置。一种是齿条传动的步进电机传动装置;另一种是音圈电机传动装置。前者是固定推算的传动定位器,而后者则采用伺服反馈返回到正确的位置上。磁头传动装置以很小的等距离使磁头部件做径向移动,用以变换磁道。
硬盘的每一个盘片都有两个盘面(Side),即上、下盘面,一般每个盘面都会利用,都可以存储数据,成为有效盘片,也有极个别的硬盘盘面数为单数。每一个这样的有效盘面都有一个盘面号,按顺序从上至下从“0”开始依次编号。在硬盘系统中,盘面号又叫磁头号,因为每一个有效盘面都有一个对应的读写磁头。硬盘的盘片组在2~14片不等,通常有2~3个盘片,故盘面号(磁头号)为0~3或0~5。
2. 磁道
磁盘在格式化时被划分成许多同心圆,这些同心圆轨迹叫做磁道(Track)。磁道从外向内从0开始顺序编号。硬盘的每一个盘面有300~1 024个磁道,新式大容量硬盘每面的磁道数更多。信息以脉冲串的形式记录在这些轨迹中,这些同心圆不是连续记录数据,而是被划分成一段段的圆弧,这些圆弧的角速度一样。由于径向长度不一样,所以,线速度也不一样,外圈的线速度较内圈的线速度大,即同样的转速下,外圈在同样时间段里,划过的圆弧长度要比内圈划过的圆弧长度大。每段圆弧叫做一个扇区,扇区从“1”开始编号,每个扇区中的数据作为一个单元同时读出或写入。一个标准的3.5in硬盘盘面通常有几百到几千条磁道。磁道是“看”不见的,只是盘面上以特殊形式磁化了的一些磁化区,在磁盘格式化时就已规划完毕。
3. 柱面
所有盘面上的同一磁道构成一个圆柱,通常称做柱面(Cylinder),每个圆柱上的磁头由上而下从“0”开始编号。数据的读/写按柱面进行,即磁头读/写数据时首先在同一柱面内从“0”磁头开始进行操作,依次向下在同一柱面的不同盘面即磁头上进行操作,只在同一柱面所有的磁头全部读/写完毕后磁头才转移到下一柱面,因为选取磁头只需通过电子切换即可,而选取柱面则必须通过机械切换。电子切换相当快,比在机械上磁头向邻近磁道移动快得多,所以,数据的读/写按柱面进行,而不按盘面进行。也就是说,一个磁道写满数据后,就在同一柱面的下一个盘面来写,一个柱面写满后,才移到下一个扇区开始写数据。读数据也按照这种方式进行,这样就提高了硬盘的读/写效率。
一块硬盘驱动器的圆柱数(或每个盘面的磁道数)既取决于每条磁道的宽窄(同样,也与磁头的大小有关),也取决于定位机构所决定的磁道间步距的大小。更深层的内容请参考其他书籍,限于篇幅,这里不再深入介绍。
4. 扇区
操作系统以扇区(Sector)形式将信息存储在硬盘上,每个扇区包括512个字节的数据和一些其他信息。一个扇区有两个主要部分:存储数据地点的标识符和存储数据的数据段,如图1-9所示。
图1-9 硬盘扇区的构成
标识符就是扇区头标,包括组成扇区三维地址的三个数字:扇区所在的磁头(或盘面)、磁道(或柱面号)以及扇区在磁道上的位置即扇区号。头标中还包括一个字段,其中有显示扇区是否能可靠存储数据,或者是否已发现某个故障因而不宜使用的标记。有些硬盘控制器在扇区头标中还记录有指示字,可在原扇区出错时指引磁盘转到替换扇区或磁道。最后,扇区头标以循环冗余校验(CRC)值作为结束,以供控制器检验扇区头标的读出情况,确保准确无误。
扇区的第二个主要部分是存储数据的数据段,可分为数据和保护数据的纠错码(ECC)。在初始准备期间,计算机用512个虚拟信息字节(实际数据的存放地)和与这些虚拟信息字节相应的ECC数字填入这个部分。
扇区头标包含一个可识别磁道上该扇区的扇区号。有趣的是,这些扇区号物理上并不连续编号,它们不必用任何特定的顺序指定。扇区头标的设计允许扇区号可以从1到某个最大值,某些情况下可达255。磁盘控制器并不关心上述范围中什么编号安排在哪一个扇区头标中。在很特殊的情况下,扇区还可以共用相同的编号。磁盘控制器甚至根本就不管数据区有多大,只管读出它所找到的数据,或者写入要求它写的数据。
给扇区编号的最简单方法是l,2,3,4,5,6等顺序编号。如果扇区按顺序绕着磁道依次编号,那么,控制器在处理一个扇区的数据期间,磁盘旋转太远,超过扇区间的间隔(这个间隔很小),控制器要读出或写入的下一扇区已经通过磁头,也许是相当大的一段距离。在这种情况下,磁盘控制器就只能等待磁盘再次旋转几乎一周,才能使得需要的扇区到达磁头下面。
显然,要解决这个问题,靠加大扇区间的间隔是不现实的,那会浪费许多磁盘空间。许多年前,IBM的一位杰出工程师想出了一个绝妙的办法,即对扇区不使用顺序编号,而是使用一个交叉因子(interleave)进行编号。交叉因子用比值的方法来表示,如3﹕1表示磁道上的第1个扇区为1号扇区,跳过两个扇区即第4个扇区为2号扇区,这个过程持续下去直到给每个物理扇区编上逻辑号为止。例如,每磁道有17个扇区的磁盘按2﹕1的交叉因子编号就是:l,10,2,11,3,12,4,13,5,14,6,15,7,16,8,17,9,而按3﹕1的交叉因子编号就是:l,7,13,2,8,14,3,9,15,4,10,16,5,11,17,6,12。当设置1﹕l的交叉因子时,如果硬盘控制器处理信息足够快,那么,读出磁道上的全部扇区只需要旋转一周;但如果硬盘控制器的后处理动作没有这么快,磁盘所转的圈数就等于一个磁道上的扇区数,才能读出每个磁道上的全部数据。将交叉因子设定为2﹕1时,磁头要读出磁道上的全部数据,磁盘只需转两周。如果2﹕1的交叉因子仍不够慢,磁盘旋转的周数约为磁道的扇区数,这时,可将交叉因子调整为3﹕1,如图1-10所示。
图1-10 不同交叉因子的效果示例
图1-10所示的是典型的MFM(Modified Frequency Modulation,改进型调频制编码)硬盘,每磁道有17个扇区,画出了用三种不同的扇区交叉因子编号的情况。最外圈的磁道(0号柱面)上的扇区用简单的顺序连续编号,相当于扇区交叉因子是1﹕1。1号磁道(柱面)的扇区按2﹕1的交叉因子编号,而2号磁道按3﹕1的扇区交叉因子编号。
早期的硬盘管理工作中,设置交叉因子需要用户自己完成。用BIOS中的低级格式化程序对硬盘进行低级格式化时,就需要指定交叉因子,有时还需要设置几种不同的值来比较其性能,而后确定一个比较好的值,以期硬盘的性能较好。现在的硬盘BIOS已经自己解决这个问题,所以,一般低级格式化程序不再提供这一选项设置。
系统将文件存储到磁盘上时,按柱面、磁头、扇区的方式进行,即最先是第1磁道的第一磁头下(也就是第1盘面的第一磁道)的所有扇区,然后,是同一柱面的下一磁头,……,一个柱面存储满后就推进到下一个柱面,直到把文件内容全部写入磁盘。系统也以相同的顺序读出数据。读出数据时通过告诉磁盘控制器要读出扇区所在的柱面号、磁头号和扇区号(物理地址的三个组成部分)进行。磁盘控制器则直接使磁头部件步进到相应的柱面,选通相应的磁头,等待要求的扇区移动到磁头下。在扇区到来时,磁盘控制器读出每个扇区的头标,把这些头标中的地址信息与期待检出的磁头和柱面号做比较(即寻道),然后,寻找要求的扇区号。待磁盘控制器找到该扇区头标时,根据其任务是写扇区还是读扇区,来决定是转换写电路,还是读出数据和尾部记录。找到扇区后,磁盘控制器必须在继续寻找下一个扇区之前对该扇区的信息进行后处理。如果是读数据,控制器计算此数据的ECC码,然后,把ECC码与已记录的ECC码相比较。如果是写数据,控制器计算出此数据的ECC码,与数据一起存储。在控制器对此扇区中的数据进行必要处理期间,磁盘继续旋转。由于对信息的后处理需要耗费一定的时间,在这段时间内,磁盘已转了相当的角度。
交叉因子的确定是一个系统级的问题。一个特定硬盘驱动器的交叉因子取决于:磁盘控制器的速度、主板的时钟速度、与控制器相连的输出总线的操作速度等。如果磁盘的交叉因子值太高,就需多花一些时间等待数据在磁盘上存入和读出。如果交叉因子值太低,就会大大降低磁盘性能。
前面已经述及,系统在磁盘上写入信息时,写满一个磁道后转到同一柱面的下一个磁头,当柱面写满时,再转向下一柱面。从同一柱面的一个磁道到另一个磁道,从一个柱面转到下一个柱面,每一个转换都需要时间,在此期间磁盘始终保持旋转,这就会带来一个问题:假定系统刚刚结束对一个磁道前一个扇区的写入,并且已经设置了最佳交叉因子比值,现在准备在下一磁道的第一扇区写入,这时,必须等到磁头转换好,让磁头部件重新准备定位在下一道上。如果这种操作占用的时间超过了一点,尽管是交叉存取,磁头仍会延迟到达。这个问题的解决办法是以原先磁道所在位置为基准,把新的磁道上全部扇区号移动约一个或几个扇区位置,这就是磁头扭斜。磁头扭斜可以理解为柱面与柱面之间的交叉因子,已由生产厂设置好,用户一般不用去改变它。磁头扭斜的更改比较困难,但是,它们只在文件很长、超过磁道结尾进行读出和写入时才发挥作用,所以,扭斜设置不正确所带来的时间损失比采用不正确的扇区交叉因子值带来的损失要小得多。交叉因子和磁头扭斜可用专用工具软件来测试和更改。更具体的内容这里就不再详述,毕竟现在很多用户都没有见过这些参数。
扇区号存储在扇区头标中,扇区交叉因子和磁头扭斜的信息也存放在这里。最初,硬盘低级格式化程序只是行使有关磁盘控制器的专门职能来完成设置任务。由于这个过程可能破坏低级格式化的磁道上的全部数据,也极少采用。
扇区交叉因子由写入到扇区头标中的数字设定,所以,每个磁道可以有自己的交叉因子。在大多数驱动器中,所有磁道都有相同的交叉因子。但有时因为操作上的原因,也可能导致各磁道有不同的扇区交叉因子。如在交叉因子重置程序工作时,由于断电或人为中断,就会造成一些磁道的交叉因子发生了改变,而另一些磁道的交叉因子没有改变。这种不一致性对计算机不会产生不利影响,只是有最佳交叉因子的磁道要比其他磁道的工作速度更快。
先看下硬盘物理结构
1
硬盘物理结构
硬盘物理上主要是盘片、机械手臂、磁头、和主轴等组成。在盘片逻辑划分上又分为磁道、扇区,例如下图:
2
盘片磁道、扇区磁道:
当硬盘盘片旋转时,磁头若保持在一个位置上,则磁头会在盘片表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道。以盘片中心为圆心,由此可以划分出很多磁道来, 这些磁道用肉眼是根本看不到的,因为它们仅 是盘面上以特殊方式磁化了的一些磁化区,硬盘上的信息便是沿着这样的轨道存放的,盘片上的磁道由外向内依次从“0”开始进行编号。
柱面:
由于硬盘可以由很多盘片组成,不同盘片的相同磁道就组成了柱面(cylinder),如图1所示。
磁头:假设有N个盘片组成的硬盘,那么有2N个盘面(一个盘片有2面),那么磁头也就有2N个,即每个盘面有一个磁头。
扇区 :早期的硬盘盘片的盘面以圆心开始向外放射状将磁道分割成等分的弧段,这些弧段便是硬盘的扇区(如图2)。每个扇区一般规定大小为512byte,这里大家应该比较疑惑,外圈周长很明显比内圈要长,怎么可能每个扇区都是512byte?其实答案早期硬盘外圈存储比内圈存储密度低一些,所以外圈很长但是仍然只能存储512byte,因此如果我们知道了柱面数(磁道数) Cylinders、磁头数Heads、扇区数Sectors,基本上硬盘的容量我们能够计算出来 硬盘总容量=Cylinders * Heads * Sectors * 512byte。 但是由于早期硬盘外圈密度低,导致盘片利用率不高,现在的硬盘盘片则采用内外存储密度一致的方式,每个磁道都划分成以512byte大小的弧段,这样也造成了内外磁道上扇区数量会不一样,外圈上的扇区数要多于内圈扇区数。
硬盘寻址方式硬盘存取、读取数据,首先要做的就是寻址,即定位到数据所在的物理地址,在硬盘上就要找到对应的柱面、磁头以及对应的扇区,那么怎么寻址呢? 有两种方式:CHS和LBA
CHS模式:CHS(Cylinder/Head/Sector)寻址模式也称为3D模式,是硬盘最早采用的寻址模式,它是在硬盘容量较小的前提下产生的。
硬盘的C/H/S 3D参数既可以计算出硬盘的容量,也可以确定数据所在的具体位置。这是因为扇区的三维物理地址与硬盘上的物理扇区一一对应,即三维物理地址可完全确定硬盘上的物理扇区。三维物理地址通常以C/H/S的次序来书写,如C/H/S为0/1/1,则第一个数字0指0柱面,第二个数字1指1磁头(盘面),第三个数字1指1扇区,表示该数据位于硬盘1盘面上的0磁道1扇区。现在定位已完成,硬盘内部的参数和主板BIOS之间进行协议,正确发出寻址信号,从而正确定位数据位置。
早期硬盘一个磁道上分63个扇区,物理磁头最多16个(8个盘片,盘片多了硬盘那就真要加厚了)。采用8位寻址方式,8位二进制位的最大值是256(0-255),可以表示磁头数,而扇区只有63个(1-63),只需要其中6个二进制位即可表示,剩下2位拿去表示柱面,柱面数用10(8+2)位来表达,达到1024个柱面(0-1023),因此总扇区数(1024×16×63)。前面说一个扇区大小为512byte,这也就是说,如果以C/H/S寻址模式寻址,则IDE硬盘的最大容量只能为1024×16×63×512B= 500MB左右。
可以思考下,在8位寻址模式下,其实可以寻址的硬盘最大容量为1024×256×63×512B =8G,那为啥CHS模式硬盘只支持到500MB呢?原因很简单,我们的硬盘盘片不可能让128片盘片重叠起来吧,那会是多厚??如果采用28位寻址方式,那么可以寻址137G,盘片也不可能一直堆叠下去。
LBA(Logical Block Addressing)经常去买硬盘的人都知道,目前硬盘经常都说单碟、双碟,其实意思就是说硬盘盘片只有1个或者2个,而且都只是用一面,单碟一个磁头而已,但是硬盘容量确是几百G,而且硬盘柱面往往都大于1024个柱面,CHS是无法寻址利用完这些硬盘容量的。
另外由于老硬盘的扇区划分方式对硬盘利用率不高,因此出现了现在的等密度盘,外圈的扇区数要比内圈多,原来的3D寻址方式也就不能适应这种方式,因此也就出现了新的寻址方式LBA,这是以扇区为单位进行的线性寻址方式,即从最外圈柱面0开始,依次将扇区号编为0、1….等等,举个例子,假设硬盘有1024个柱面,由于是等密度硬盘,柱面0(最外圈)假设有128个扇区,依次编号为0-127,柱面1有120个扇区,则依次编号为127-246,…..依次最内圈柱面127只有扇区64个,则编号到最后。因此要定位到硬盘某个位置,只需要给出LBA数即可,这个就是逻辑数。
在 LBA 模式下,为了保留原来CHS时的概念,也可以设置柱面、磁头、扇区等参数,但是他们并不是实际硬盘的物理参数,只是为了计算方便而出的一个概念,1023之前的柱面号都一一物理对应,而1023以后的所有柱面号都记录成1023磁头最大数可以设置为255,而扇区数一般是每磁道63个,硬盘控制器会把由柱面、磁头、扇区等参数确定的地址转换为LBA数。这里我们再此明确两个概念:
物理扇区号:一般我们称CHS模式下的扇区号为物理扇区号,扇区编号开始位置是1
逻辑扇区号:LBA下的编号,扇区编号是从0开始。
CHS模式转换到逻辑扇区号LBA
计算公式LBA(逻辑扇区号)=磁头数 × 每磁道扇区数 × 当前所在柱面号 + 每磁道扇区数 × 当前所在磁头号 + 当前所在扇区号 – 1
例如:CHS=0/0/1,则根据公式LBA=255 × 63 × 0 + 63 × 0 + 1 – 1= 0
也就是说物理0柱面0磁头1扇区,是逻辑0扇区。
硬盘分区我们知道,一般使用硬盘,我们首先会对硬盘进行分区,然后对分区使用某个文件系统格式(NTFS、FAT、ext2/ext3)进行分区格式化,然后才能正常使用。那么分区是怎么回事呢?我们常见的windows中说到的c、d、e盘是怎么划分出来的呢?其实,在装windows系统过程中,一般我们只需要填写每个分区的大小,看不出来分区过程的实际工作情况,我们可以从linux系统分区过程反而能反应底层实际分区情况。
柱面是分区的最小单位,即分区是以某个某个柱面号开始到某个柱面号结束的。
如图,柱面
1~200我们可以分为一个区,柱面201~500再划分为一个区,501~1000再划分为一个区,以此类推。大家可以看到,柱面0没有在任何分区里面,为何?这里说说,前面说到硬盘从外圈(柱面0)到内圈扇区是依次编号,看似各个扇区没有什么区别,但是这里硬盘的柱面0的第一个扇区(逻辑扇区0,CHS表示应该是0/0/1)却是最重要的,因为硬盘的第一个扇区记录了整个硬盘的重要信息,第一个扇区(512个字节)主要记录了两部分:① MBR(Master Boot Record):主引导程序就放在这里,主引导程序是引导操作系统的一个程序,但是这部分只占446字节。
② DPT(Disk Partition table):硬盘分区表也在这里,分区表就是用来记录硬盘的分区情况的,例如c盘是1~200柱面,d盘是201~500柱面,分区表总共只占64字节,可以看出,分区其实很简单,就是在这个表里面修改一下记录就重新分区了,但是由于只有64字节,而一条记录就要占用16字节,这个分区表最多只能记录4个分区信息,为了继续分出更多分区来,引入了扩展分区的概念,也就是说,在这4个分区中,可以使用其中一条记录来记录扩展分区的信息,然后在扩展分区中再继续划分逻辑分区,而逻辑分区的分区记录则记录在扩展分区的第一个扇区中,如此则可以像链表一样划分出很多分区来。但是请注意,一个分区表中可以有1~4条主分区,但是最多只能有1个扩展分区。
举例,主分区可以是P1:1~200,扩展分区P2: 2~1400,扩展分区开始的第一个扇区可以用来记录扩展分区中划分出来的逻辑分区。
分区表链
分区表之间是如何关联的,详细讲一下,分区表是一个单向链表,第一个分区表,也就是位于硬盘第一个扇区中的DPT,可以有一项记录扩展分区的起始位置柱面,类似于指针的概念,指向扩展分区(图3),根据这项记录我们可以找到扩展分区的某柱面0磁头1扇区(CHS),而这个扇区中又存放了第二个分区表,第二个分区表第一项记录一般表述了当前所在的逻辑分区的起始/终止柱面,第二项记录表述了下一个逻辑分区所在的0磁头1扇区(CHS),第三、第四项记录不存任何信息(图4)。
请看下图,主引导记录/分区表所在的是硬盘第一个分区,基本分区1、基本分2、基本分区3都是主分区、扩展分区内有2个逻辑分区,每个逻辑分区的第一个扇区都是分区表,至于引导扇区(DBR),在系统启动一节中会提及。
系统启动:
之前提到MBR中安装的引导加载程序,他的作用是什么?
① 提供开机菜单选项:可以供用户选择启动哪个操作系统,这是多重引导功能。
② 加载操作系统内核:每个操作系统都有自己的内核,需要引导程序来加载
③ 转交给其他引导程序:可以将工作移交给其他引导程序来进行上述操作。
其实引导加载程序除了可以安装在MBR中,还可以直接安装在每个分区的引导扇区(DBR)中,注意下,每个分区(主分区、逻辑分区)都有一个自己的启动扇区,专门用来安装引导加载程序,如上图标3结构图。
系统启动过程:
① 首先,BIOS启动后,读取硬盘第一个扇区MBR中的引导加载程序(可能是windows或者linux的grub)
② MBR中的引导程序提供开机菜单,你可以选择1)直接加载windows 内核 2)将工作转交给windows 分区内的引导扇区中的加载程序,让他自己去加载内核 3)转交给linux分区内引导扇区,让他去加载linux.
③ 根据用户选择的选项和引导加载程序中记录的分区,到分区表找对应的分区柱面号等分区信息,启动内核或者分区加载程序。
Window安装时默认会自动将MBR和windows所在分区的引导扇区都装上引导程序,而不会提供任何选项给用户选择,因此如果之前装过其他操作系统,然后再另外装一个windows时,会把公用的MBR覆盖掉,如此,原来的操作系统就无法启动了。如果先装windows,然后装linux,linux 会覆盖MBR,然后让用户选择是否将windows等其他操作系统的启动项添加进来,如果你选择了添加进来,那么你在开机时就会有两个选项让用户进行选择了。
后记l 这里讨论的全部是硬盘相关的东西,光盘不在此列,而且光盘的磁道并不是从外圈到内圈编号,而是从内圈开始编号,这点注意。
l 硬盘第一个扇区是由MBR和分区表占据,因此0柱面0磁头上剩下的62个扇区一般会空出来保留(这部分保留称为隐藏扇区,因为操作系统读取不到这部分扇区,这部分扇区是提供给BIOS读取的),而系统分区则从0柱面1磁头1扇区开始,折算成LBA=255 × 63 × 0 + 63 × 1 + 1 – 1= 63,即从LBA 63号扇区开始分区。不过查阅有的资料提及到另外一种说法,那就是有的硬盘可能0柱面全部空下来,如果真是这样,那浪费可就真的大了。
l 对于扩展分区的分区表我们知道也是由扩展分区的第一个扇区开始写,而且是写到每个逻辑驱动器的第一个扇区,同样,扩展分区内的第一个扇区所在的磁道剩余的扇区也会全部空余出来,这些保留的扇区操作系统也是无法读取的,注意在扩展分区的第一个扇区里面是没有引导加载记录的。引导加载记录都是放在隐藏扇区后面的。可以看图3,图4