目前流行的硬盘储存器都具有非常完善而先进的内置式程序保障系统,它包括硬盘微处理器执行码和大量硬盘运行所需的各种各样的数据表。
硬盘内置式程序总的容量大小可以达到几个Mbit。
一旦硬盘的这种程序出现被损坏情况,那么,即使硬盘的整个机械装置和电子器件完好无损,硬盘还是会出现部分或完全的工作故障。
本篇文章描述了硬盘程序保障的基本原理,硬盘的结构和地址分配。
硬盘的空间结构对一个硬盘来说,不是所有的空间都用来储存用户的数据信息。
有相当一部分空间对用户来说是看不见的,它包括服务区(Service Area)和备用区(Reserve Area)(详见图1)。
图1服务区是用来储存服务信息,即硬盘的内部程序和一些辅助表格。
备用区是用来替换用户工作区内的故障扇区和磁道。
这两个区域在硬盘正常工作状态下是访问不到的。
用户只能访问到工作区的数据(通常情况下,这个区域被称为硬盘的逻辑空间),而硬盘的容量标签中标注的正是这一部分空间的容量,如HDD160G LBA:320173056。
一个LBA(逻辑块地址)就等于一个扇区,即512bit。
这样一来,知道了一个硬盘的LBA总体数量,也就知道了硬盘容量的大小。
硬盘在正常工作(用户)状态下,对工作区(连续不断的逻辑扇区)的访问是通过LBA进行,即在0到最大LBA之间进行。
要想接触到服务区,只有在一种专门的工作状态下,即技术工作状态下才可能实现。
而要想进入这一工作状态,则需要一把“钥匙”指令,给出了“钥匙”指令之后,就可以打开一组补充的技术指令。
借助这些技术指令就可以进行诸如读/写服务区的扇区信息、获取服务区模块和表格配置图、获取扇区分配表、进行LBA与PCHS (Physical Cylinder Head Sector)(物理磁柱-磁头-扇区)互换、进行低级格式化,以及读/写硬盘的闪存器等操作。
服务信息服务信息对硬盘运行来说是必须要有的,它可以分为以下几类:——微程序的管理模块(overlay);——配置和设置表;——缺陷表;——工作记录表(SelfScan, Calibrator程序的工作结果)。
硬盘微处理器的工作程序属于硬盘工作所必需的一组程序。
它包括初始诊断程序、伺服电机旋转控制程序、磁头定位程序、与硬盘控制器及缓冲存储器的信息交换程序等。
所有这些合起来称作硬盘程序。
在有些型号的硬盘中,工作程序被配置在微控制器的内部存储器或外部闪存器中(如2.5"的“TOSHIBA”硬盘)。
但是,对大部分型号的硬盘来说,它的部分工作程序存储在磁盘的服务区上,而在电路板的缓冲存储器中,存储的是初始化程序、定位程序,以及从磁盘服务区向内存储器读与复制的工作程序初始加载器。
由于程序是从服务区向微处理器的缓冲存储器中重新加载,而这里也是微处理器的工作地点,所以,它们的名字叫做“管理程序或overlay程序”(详见图2)。
图2在服务区内,“overlay”是以模块的形式,即程序的终端进行配置的,它包括模块标题、模块主体,以及用于检测该模块完整性的检测综合区。
当“overlay”加载到缓冲存储器时,硬盘微处理器对每个被加载的模块检测总数进行计算,然后将其与模块的检测总数比特进行比较。
如果比较检测总数的结果不一致,那么,这个模块就会被认为已经损坏,而且不能被加载到缓冲储存器中。
这正是大多数具有“overlay”程序硬盘出现工作故障的常见原因。
通常,在出现这种故障时,硬盘是不能够完整地运行的,也就是说,不是所有的“overlay”程序都能够被加载到缓冲存储器之中,并参与硬盘的工作。
不同的“overlay”程序出现损坏,故障会表现出不同的形式来。
例如,硬盘一直会处在“忙碌”状态,不能够准备就绪,或者在硬盘的辨认过程中,“BIOS”会确认硬盘的出厂名称(Mammoth, N40P, Calypso 等),或者型号在“BIOS”中会被确定出来,但此时的容量大小只有0G等。
硬盘的配置和设置表包含有关于磁盘空间的逻辑和物理信息。
这些表格对于电路板(一个家族的所有硬盘的电路板都是统一的)来说是必需的,是为了让电路板独立地设置到这一家族的这一类型号上,也就是说使电路板正确地选择型号名称、最大LBA值,正确地确定物理磁头的数量和Zone分配表。
在设计某一型号的硬盘时,如容量为160G的双磁盘硬盘时,自然而然一个磁盘上的容量为80G,而一个磁盘的一个表面容量,即四分之一硬盘的容量为40G。
所以说,生产商在不需要投入很大研发费用的同时,可以向市场推出很多型号和容量都不同的硬盘。
如在一些容量小的型号硬盘中,可以使用一些由于某些参数原因而不能够被所有型号硬盘所使用的零件。
举例说明,在容量最小的一些硬盘中,生产商可以使用某一表面具有缺陷的磁盘,因为在这个硬盘中,该表面是不使用的。
配置表与工作程序一样,是以模块的形式被配置在硬盘的服务区内,也包括标题、模块主体(表格)和检测总数区。
在鉴别硬盘时,配置表以同样的方式加载到微处理器的缓冲存储器之中,并计算和检查检测总数。
配置表和工作程序一样,对硬盘的工作是至关重要的。
通常情况下,一旦配置表发生损坏,那么硬盘在计算机的BIOS中便无法得到鉴别和确认,或者在鉴别过程中,所显示的硬盘容量、型号、名称及批号会出现错误等。
缺陷表。
目前的生产技术还不能够确保所生产的每一个磁盘没有任何缺陷。
由于载体材料的非单一性、抛光打磨上的缺陷,以及在制作磁层时介入杂质等因素,都有可能使硬盘的某些区域在读写过程中产生错误。
带ST506/412接口的老式硬盘,其缺陷磁道标示贴在密封硬盘的外壳上,而且每一个硬盘都有一个备用容量,如20mbit的ST225型硬盘实际上有21.5mbit 的容量,也就是说1.5mbit的容量是用来供坏扇区和坏道使用的。
现在市场上流行的硬盘也有一个富余容量,用来将工作区中的坏扇区和坏道与备用区的正常扇区和磁道进行替换。
在使用了这样一种替换机制以后,即使在磁盘工作区的磁表面上出现大块区域的缺陷,硬盘的总体容量也不会减少。
为了进行这样的替换,硬盘中有一个专门的缺陷隐藏程序,叫做“Defect Management”(缺陷管理)程序。
该程序运行的主要目的是发现硬盘中所有磁盘上的缺陷区域,然后再将其放置在一种名曰“缺陷表”的专门表格之中。
之后,再对逻辑空间向物理空间进行转换的系统进行重新计算,这样一来也就隐藏了缺陷。
缺陷表是在生产厂家的厂内试验过程中填写的。
厂家发现的所有“坏”扇区序号均被填写在该表之中。
这种操作被称为“更新(隐藏)缺陷”(UPDATE DEFECT)。
这样,当硬盘工作时,如需访问被隐藏的缺陷扇区,那么,硬盘会变更访问的地址,将访问指向备用区。
所以,目前由生产厂家推出的最新型硬盘,在用户数据区内是没有缺陷扇区的。
大部分型号的硬盘都有两个缺陷表,即初始缺陷表(Primary或P-List)和生长缺陷表(Grown 或G-List)。
初始缺陷表由生产厂家在进行工厂内部检测——SELFSCAN (intelligent burn-in)过程中填写。
生长缺陷表不由厂家填写,是用来填写在硬盘使用过程中所发现的缺陷。
因此,几乎所有硬盘的用户指令表中有一个叫“Assign”的指令,通过该指令就可以将对坏扇区的访问转向备用区。
这一指令被许多检测程序所使用,其中包括厂家所推荐的修复硬盘坏扇区程序。
在“Western Digital”(西数)硬盘中,有一种“Data Lifeguard”(数据救生)系统,可以在硬盘没有访问时重新指定坏扇区。
为此,硬盘要对磁盘的表面进行自我检测,并将用户数据挪到备用区内,有缺陷的扇区被打上“BAD”(坏)标志。
从隐藏缺陷的类型上讲,这种方法与给出“Assign”指令一致。
“富士”、“昆腾”、“迈拓”和“IBM”硬盘可以在“写”的过程中自动隐藏缺陷,也就是说,数据是写入缺陷扇区,但硬盘本身可以将访问重新指向备用区,这时,缺陷扇区被打上“BAD”标志,其编号被填写到G-List表中。
工作记录表包含硬盘生产和运行过程中的一些辅助信息(如检测结果、检测程序运行记录等)。
通常情况下,这些表格内容并不重要,而且在一般用户工作状态下,它们的损坏并不会影响到硬盘的工作。
但是,这些模块在用户准备对硬盘进行二次使用(刷新),以及执行“SelfScan”和“Calibrator”等操作时会需要。
两种隐藏缺陷的方法当使用“重新指定”(Assign)方法时,硬盘在“BAD”扇区的辨别区内会打上被位移扇面的标记,然后再在该扇区的数据区内打上备用扇区的序号,即需要访问,进行读写操作的扇区序号。
通常,这个扇区就是用户存储数据的工作区之后的第一个扇区(详见图3)。
图 3. 重新指定扇区法在进行读写操作和访问坏扇区时,控制器会发现上面所说的那个标志和重新指定的地址,这样就会将磁头定位在备用区,以便读写正常扇区上的数据。
缺陷扇区在此情况下似乎已经消失,但是,硬盘在每次工作时都会遇到坏扇区,并对磁头进行重新定位,使其在备用区进行读写操作。
每次遇到这种情况,我们就会听见硬盘磁头发出“吱吱”的声音,而且硬盘的运行速度也会有所降低。
“Assign”操作只能隐藏数据区内的缺陷。
如果错误与鉴别区和伺服标记破坏有关,那么,“Assign”操作是不能隐藏这种缺陷的。
生产厂家隐藏缺陷扇区的方法被称为“忽略缺陷扇区法”。
使用这种方法时,缺陷扇区被忽略,而下一个扇区被冠以缺陷扇区的序号(以此类推),这样,最后一个扇区就被移到了磁盘的备用区(见图4)。
图4.使用这种隐藏方法会破坏低级格式化的连续性和完整性。
LBA 向 PCHS转换系统应该考虑到坏扇区,并在数据访问时将其忽略。
逻辑磁盘空间与物理格式之间的关系借助一种专用的程序-译码器实现,这种专用程序考虑到了磁盘的物理格式、区域划分,以及坏扇区与坏磁道已不再工作等因素。
所以,忽略缺陷扇区法要求必须对译码器表进行重新统计计算,而且还会破坏用户事先写入数据的完整性。
正因如此,这种隐藏方法只有在硬盘处在一种专门的技术工作状态下才能使用。
硬盘服务区的检测.为了检查硬盘服务区信息的完整性,需要使用一套专门的程序,以便能够将硬盘转入技术状态,一个模块接着一个模块来访问到硬盘的服务区,检查硬盘服务信息的所有结构。
例如,为了对硬盘进行检测,可以在“Windows”系统软件中使用PC-3000软件-硬件综合系统。
在检测和恢复硬盘服务区信息方面,该系统具有相当发达的专用菜单。
当运行服务区(Service Area)结构检测(structure test)程序时,服务区的每一个模块都会依次得到检查。
检查的项目包括模块标示符、标示符的长度、检测总和及其它参数(见表1)表 1----------------------------------------------------------------------Id:磁柱 :磁头: 扇区: 大小:读 : Hdr :CS : 日期: Vers.: 说明------------------------------------------------------------------------------------19: -1: 0: 2: 19:Yes : Ok : Ok :24-10-03:0100W :Overlay of microprogram1B: -1: 0: 22: 2:Yes : Ok : Ok :24-10-03:0100W :Overlay of microprogram1A: -1: 0: 25: 4:Yes : Ok :Ok :24-10-03:0200? :42: -2: 0: 0: 2:Yes : Ok :Ok :03-01-04:0202? :Configuration (HDD ID)43: -2: 0: 3: 360:Yes : Ok : Ok :24-10-03:0200? :P-List (Primary defect)44: -2: 0: 364: 8:Yes : Ok : Ok :05-01-04:0200? :G-List (Grown defect)59: -2: 0: 373: 4:Yes : Ok : Ok :24-10-03:0100? :T-List (Track defect)5A: -2: 0: 378: 1:Yes : Ok :Ok :24-10-03:0100? :20: -2: 0: 380: 144:Yes : Ok : Ok :01-01-04:0701? :Translator (PD List)25: -2: 0: 525: 15:No : : : : : Transla tor (RBB List)23: -2: 0: 541: 6:Yes : Ok : Ok :24-10-03:C807? :Translator (Sect MAP)4C: -2: 0: 548: 2:Yes : Ok : Ok :24-10-03:0200? :Adaptive data从表1中可以看出,该硬盘的一个译码器ID=25h RBB List(坏扇区重新指定表)模块损坏。