1.1 磁存储介质的存储原理
磁存储,主要指磁表面存储器MSM(Magnetic Surface Memory)。磁表面存储器是用非磁性金属或塑料做基体,在其表面涂敷、电镀、沉积或溅射一层很薄的高导磁率、硬矩磁材料的磁面,用磁层的两种剩磁状态记录信息“0”和“1”。基体和磁层合称为磁记录介质。
计算机中目前广泛使用的磁存储介质主要有硬盘、软盘、磁带三种形式。
1.1.1 硬盘
硬盘是使用最为普及的一种存储介质,它的发展已经有50多年的历史了。1956年IBM公司推出了世界上第一个硬盘驱动器RAMAC(Random Access Method for Accounting and Control)。其体积相当于两个并排放置的200升的大冰箱,容量为5MB,价格超过5万美元,也就是说,每1GB容量的价格为1000万美元。现在,一个3.5英寸的硬盘的容量能达到750GB,而平均每1GB容量的价格不足1美元。硬盘的改进速度大大超过了半导体存储器和电信数据的传输速率。
1.1.1.1 硬盘的基本结构
我们从物理和逻辑两个方面来讲解硬盘的结构。
1.硬盘的物理结构
硬盘是包含可移动部件的复杂的机电一体装置。虽然它通常能安全可靠的运行,但任何人造设备都是有寿命的。硬盘要完成其盘片数据的读/写操作,通常由几大部件组成,如图1-1所示,而其中任何一个部件发生故障,都可能导致数据丢失。
图1-1 硬盘的基本结构
一块硬盘可能包含一片或多片磁盘片,磁盘片是通过在铝或玻璃基片上再涂上一层微小的磁铁氧化物颗粒而制成的。对于硬盘,磁盘片常简称盘片。盘片连续转动,磁头沿着半径方向来回移动,这样就可以使磁头快速地达到盘片上的任何位置。一般台式计算机使用3.5英寸硬盘,每块硬盘安装有1~6片盘片,可以存放大量的数据信息。每个盘片都被分隔成数万个同心圆,这些同心圆就是常说的磁道。因为每一个磁道上都要存储大量的信息,为便于管理,进一步把磁道分隔成一个个同样大小的小区域,叫做扇区,每个扇区通常为512B(字节)大小。盘片按一定的规则安装在一个电动机(spindle motor)上。电动机带着盘片高速旋转。盘片高速转动,与之相配合的磁头能够进行扇区定位操作。一般每个盘片都有一个磁头,并且所有磁头的移动必须完全同步,如图1-2所示。
图1-2 盘片
硬盘的磁头由上、下多个读/写头固定在一个磁头臂上,整体随磁头臂移动而移动,如图1-3所示。磁头的移动及一般的读/写原理是,第1个磁头先写一个磁道,第2个磁头再写一个磁道,依次类推,呈垂直读/写,所以数据被分很多段存在各盘面上,读取时也是同理,这样,多磁头同时读/写可以大大提高磁盘工作效率。
图1-3 磁头
磁头臂因需高速来回移动,不可抖动,并精确地移至原地址,各磁头垂直度不可以超出允许误差,所以磁头和盘片都不可松动或偏移,否则将无法定位。目前技术水平还无法将误差的磁头或盘片调整回原位。
硬盘的电动机是恒定速度旋转的。为保持其旋转时的平衡,一般使用滚珠或液态高精度轴承,能承受24小时连续不断地运转,而不磨损,也不生成高温和噪声。
2.硬盘的逻辑结构
要想深入了解数据恢复的理论知识,除了需要掌握硬盘的物理结构,还必须十分了解磁盘的逻辑结构。
当我们通过操作系统访问文件时,操作系统需要读取磁盘相应的位置来调用我们需要的文件,那么这些文件是如何在盘片上分布的呢?这就是由盘片上相关的一些逻辑参数所决定的。
硬盘的盘片具有类似的格式,被划分为几个区域,这些区域称为磁道、扇区、柱面,硬盘就是利用这几个参数对数据进行寻址的。
(1)磁道
磁盘在出厂前,厂家会对盘片进行格式化,盘片被划分成许多同心圆,这些同心圆就叫做磁道(Track),如图1-4所示。
图1-4 磁道
现在的大硬盘每一个盘面上都有上万个磁道,为便于管理,这些磁道都有一个编号,磁道从外向内自0开始顺序编号。
另外需要注意的是,盘片上的这些磁道是看不见的,它们只是盘面上以特殊形式磁化了的一些区域。
(2)扇区
盘面上的每个磁道都被划分成一段段的圆弧,每段圆弧叫做一个扇区,如图1-5所示。扇区从“1”开始编号,它是磁盘存储的最小单位,扇区中的数据是作为一个单元同时读出或写入的,每个扇区包括512B的数据和一些其他信息。
图1-5 扇区
(3)柱面
柱面是指各个盘面上编号相同的磁道构成的整体,如图1-6所示。柱面的编号是和磁道的编号相统一的,都是从外向内自0开始顺序编号。
图1-6 柱面
(4)盘面和磁头
硬盘中都会有一个或多个盘片,每一个盘片又有两个盘面,即上盘面和下盘面,每一个盘面都有一个盘面号,按顺序从上而下自“0”开始依次编号。
盘片是用来存储数据的,那么数据是如何写到盘片上去的呢?这个工作是由磁头来完成的,硬盘的每个盘面都会对应一个磁头,所以在硬盘系统中,盘面号也可称为磁头号,就是因为每一个有效盘面都有一个对应的读/写磁头。
硬盘中数据的读和写都是按柱面进行的,也就是说,磁头在读/写数据时首先在同一柱面上从“0”号磁头开始进行操作,依次向下在同一柱面的不同盘面即磁头上进行操作,当同一柱面上所有的磁头全部读/写完毕后才移动磁头转移到下一柱面。
从这里可以看出,数据存储到盘片上并不是写满一个盘面,再接下来写下一个盘面的,而是一个柱面一个柱面地进行。这样做是因为选取磁头只需通过电子切换即可,而选取柱面则必须通过机械切换。电子切换的速度是相当快的,比在机械上磁头向邻近磁道移动快得多,所以数据的读/写按柱面进行,而不是按盘面进行,这样就能够有效地提高硬盘的读/写效率。
(5)逻辑参数的取值
硬盘是通过磁头、柱面和扇区进行寻址的,BIOS中断13H的入口参数中,磁头寄存器占8位,其值为0H~FEH,所以磁头号为0~254。柱面地址是10位,所以柱面号为0~1023,其低8位单独占用一个寄存器,高两位与扇区地址共用一个寄存器,占用共用寄存器中的高两位。扇区地址占用共用寄存器中的低6位,其值为1H~3FH,所以扇区编号为1~63。
(6)硬盘寻址模式
硬盘有两种寻址模式,一种就是前面提到的C/H/S(Cylinder/Head/Sector)寻址模式,也可以称为三维地址模式,这是硬盘最早采用的寻址模式。当时硬盘的容量还非常小,人们采用与软盘类似的结构生产硬盘,也就是硬盘盘片的每一条磁道都具有相同的扇区数,由此产生了所谓的3D参数(Disk Geometry),既磁头数(Heads)、柱面数(Cylinders)、 扇区数(Sectors),以及相应的寻址方式。
在老式硬盘中,由于每个磁道的扇区数相等(与软盘一样),所以外磁道的记录密度要远低于内磁道,因此会浪费很多磁盘空间。为了解决这一问题,进一步提高硬盘容量(C/H/S寻址的容量是有限制的,后面会提到),人们改用等密度结构生产硬盘,也就是说,外圈磁道的扇区比内圈磁道多。采用这种结构后,硬盘不再具有实际的3D参数,寻址方式也改为线性寻址,即以扇区为单位进行寻址,这种寻址模式叫做LBA,全称为Logic Block Address(即扇区的逻辑块地址)。
扇区的三维物理地址与硬盘上的物理扇区一一对应,即三维物理地址可完全确定硬盘上的物理扇区。而在LBA方式下,系统把所有的物理扇区都按照某种方式或规则看做是一个线性编号的扇区,即从0到某个最大值方式排列,并连成一条线,把LBA作为一个整体来对待,而不再是具体的实际的C/H/S值,这样只用一个序数就确定了一个唯一的物理扇区,显然线性地址是物理扇区的逻辑地址。
为了与使用C/H/S寻址的老软件兼容(如使用BIOS Int13H接口的软件),在硬盘控制器内部安装了一个地址翻译器,由它负责将C/H/S参数翻译成LBA地址。
那么LBA地址到底如何与实际的C/H/S值相对应呢?如何把C/H/S地址转换为LBA地址,把LBA地址转换成C/H/S值呢?
首先,我们来了解一下从C/H/S到LBA线性地址的转换规则。由于系统在写入数据时是按照从柱面到柱面的方式,在上一个柱面写满数据后才移动磁头到下一个柱面,并从柱面的第一个磁头的第一个扇区开始写入,从而使磁盘性能最优,所以,在对物理扇区进行线性编址时,也按照这种方式进行。即把第一柱面(0柱)第一磁头(0面)的第一扇区(1扇区)编为逻辑“0”扇区,把第一柱面(0柱)第一磁头(0面)的第二扇区(2扇区)编为逻辑“1”扇区,直至第一柱面(0柱)第一磁头(0面)的第63扇区(63扇区)编为逻辑“62”扇区,然后转到第一柱面(0柱)第二磁头(1面)的第一扇区(1扇区),接着上面编为逻辑“63”扇区, 0柱面所有扇区编号完毕后转到1柱面的0磁头1扇区,依次往下进行,直至把所有的扇区都编上号。
另外,还要注意C/H/S中的扇区编号从“1”~“63”,而LBA方式下扇区从“0”开始编号,所有扇区顺序进行编号。
掌握了这个关系,我们就可以列出公式来对两种寻址模式进行相互转换。
从C/H/S到LBA的转换公式:
这里规定用C表示当前柱面号,H表示当前磁头号,S表示当前扇区号,CS表示起始柱面号,HS表示起始磁头号,SS表示起始扇区号,PS表示每磁道扇区数,PH表示每柱面磁道数,所以公式为
LBA=(C-CS)×PH×PS+(H-HS)×PS+(S-SS)
一般情况下,CS=0,HS=0,SS=1,PS=63,PH=255。
下面带入几个值验证一下:
● 当C/H/S=0/0/1时,代入公式得LBA=0
● 当C/H/S=0/0/63时,代入公式得LBA=62
● 当C/H/S=0/1/1时,代入公式得LBA=63
这里不再过多验证,请读者自己进行更多值的验证,下面来看从LBA到C/H/S的转换关系。
首先介绍两种运算DIV和MOD(这里指对正整数的操作)。DIV为整除运算,即被除数除以除数所得商的整数部分。例如,3 DIV 2=1,10 DIV 3=3。MOD运算则是取商的余数。例如, 5 MOD 2=1,10 MOD 3=1。DIV和MOD是一对搭档,一个取整数部分,另一个取余数部分。
各参数仍然按上述假设进行,则从LBA到C/H/S的转换公式为:
C=LBA DIV (PH×PS)+CS
H=(LBA DIV PS)MOD PH+HS
S=LBA MOD PS+SS
同样可以带入几个值进行验证:
● 当LBA=0时,代入公式得C/H/S=0/0/1
● 当LBA=62时,代入公式得C/H/S=0/0/63
● 当LBA=63时,代入公式得C/H/S=0/1/1
1.1.1.2 现代硬盘的结构及其固件
1.现代硬盘结构剖析
前面介绍了硬盘的基本结构,为了让读者更好地理解硬盘的原理和运行机制,下面再对硬盘的结构进行详细剖析。
硬盘驱动器由两部分组成:机械部分和印制电路板(PCB),机械部分又称为磁头-磁盘组件(HDA)。HDA是硬盘驱动器中唯一的机械部件,它还包含有一片执行前置放大器/转接器功能的芯片。PCB由若干芯片组成,它们包括控制机械部件的芯片、对磁盘表面的数据进行编/解码的芯片和与外部接口交换数据的芯片等。PCB位于HAD的外部,一般是在下方。
(1)硬盘的机械部分
硬盘的整个结构是基于保护其灵敏的机械部件不受环境因素的影响而设计的。硬盘盘腔中的空气是不能有灰尘的,因此机械部分的组件是在每立方米少于100个微尘粒子的工作间(也就是所谓的“100级清洁空间”)装配完成的。
HDA盘体有一个填充有紧密的空气过滤材料的开口,用于平衡HDD内外的空气压力。不过如果硬盘落入水中,水就会沿着此开口进入硬盘内部。盘片的旋转引起的空气流经常会撕碎不知如何进入的灰尘。
硬盘的盘体包括由主轴电动机驱动的盘片,带有定位系统和放大信号的前置放大器/转接器的磁头。盘片是一种铝制的圆盘(少量是陶瓷或特殊玻璃制成的),它拥有最高精度等级的光滑表面(除了停泊区),由于分子吸引力的缘故,如此光滑的表面会将磁盘和磁头黏合在一起。为了防止磁盘与磁头粘连在一起,生产商在磁头和磁盘接触的区域使用了特殊的激光防滑齿。由于使用了真空沉积工艺生成的氧化铬覆盖层(磁性物质)或钴层,磁盘具有特殊的磁性质。氧化铬覆盖层具有更高的硬度和抗磨损性,而以前使用氧化铁做磁性物质然后在其上覆盖一层软涂层的磁盘非常容易损坏。
磁盘由专门的三相电动机驱动。磁盘的固定部分包括三个“星形”连接的线圈、位于中央的轴承和由稀土金属制造的永久磁体。为了减少变形和获得很高的转速,生产商必须在主轴电动机上使用特殊的轴承,如滚珠轴承或改良的液态轴承(使用专门的润滑油以增强电动机耐久力)。液态轴承具有低噪声和热量少的特点。IDE硬盘的转速一般为5400rpm或7200rpm;SCSI硬盘的转速一般为10000rpm或15000rpm。
磁头也是一种非常精密的部件。磁头与芯片一样使用光刻技术生产。磁头的陶瓷表面与盘片一样光滑。磁头的驱动臂是由铜线制成的平直的电磁线圈,悬浮在永久磁铁的磁极间。驱动臂一端固定在轴承的转动杆上,另一端连接到磁头支架。磁头支架是有弹性的,允许磁头以一定的高度“飞行”在盘片表面;飞行的高度通常为几十分之一微米。
推动磁头组运动的传动系统与扩音喇叭的线圈类似,叫做音圈。音圈的工作原理与普通电动式扬声器的工作原理相似(也就是说,在磁芯上缠绕铜线)。位置调节线圈被永久磁体制成的定子围绕。当一定电压的电流流过使线圈产生极性,从而以一定加速度推动磁头转向一定位置;这样磁头就可以在音圈的作用下定位于盘片表面的任意位置。磁头在硬盘断电时使用特殊的臂锁固定在停泊区。两种最常用的臂锁是磁性臂锁和气动臂锁。磁性臂锁利用固定在硬盘内部的一块小磁体,吸引音圈的铁磁物质,使磁头固定在停泊区。气动臂锁(或空气锁)也将磁头固定在停泊区防止移动;当盘片开始旋转时产生的气流使气动臂锁解开从而解除固定状态。
在HDA内的电子部件只有从磁头接收信号的前置放大器/转接器。前置放大器/转接器位于靠近磁头的地方,以最大限度地减少外部干扰。前置放大器/转接器通过弹性电缆与磁头和硬盘的其他电子部件相连。音圈,有时主轴电缆也使用同一电缆相连。不过主轴通常是由单独的电缆供电。
HDA通常使用两个接头与PCB连接。其中,一个是为主轴电动机供电的三相中心抽头电缆接头;另一个是与前置放大器/转接器及音圈电缆传递信号的电缆接头。
(2)硬盘的印制电路板
现代硬盘的电路设计的特点是使用高集成度的芯片,它们的结构如图1-7所示。
图1-7 现代硬盘的电路设计
如图1-7所示,整个电路设计基于四种芯片。
① 系统控制芯片,包括读/写信道、磁盘控制器和RISC(精简指令计算机)控制处理器(微处理器);
② Flash ROM芯片(内含硬盘固件);
③ 主轴电动机和音圈控制芯片;
④ ROM芯片(用做缓存)。
由于以上各部分的功能存在根本的差别,所以更进一步的集成不太可能实现。
当前最先进的系统控制器是由Cirrus Logic公司生产的芯片。它明显的突破是将读/写信道、处理器和磁盘控制器集成在一个芯片上;不过由于设计方法不成熟,使用此芯片的Fujitsu MPF3xxxAT和MPG系列硬盘频繁出现故障。
微处理器采用RISCz结构。当加电后硬盘的Reset电路向微处理器发出“Reset”信号,使微处理器执行ROM中的自检程序,清空存储器和磁盘控制器及其他连接到内部数据总线的可编程芯片的工作数据区。然后微处理器检查硬盘运转时使用的内部信号,如果没有发现紧急警告,就启动主轴电动机。
接下来一步是HDD内部测试:检查数据缓冲RAM、磁盘控制器和输入微处理器的信号的状态。之后微处理器开始分析脉冲信号直到主轴电动机达到规定的转速。当电动机达到规定的转速后,微处理器就开始操作定位电路和磁盘控制器,将磁头移动到固件数据区,并将固件数据载入到RAM中以供进一步操作。最后微处理器切换到准备就绪状态,并等待计算机主机命令。在等待模式下,从计算机主机CPU发来的命令会引起HDD的所有电子部件的一连串动作以完成指定操作。
HDD读/写信道由前置放大器/转接器(位于HDA内)、读电路、写电路和同步时钟等组成。硬盘的前置放大器具有多个通道,每个通道连接到一个磁头。各通道的切换由硬盘微处理器的信号控制。前置放大器中含有写入电流开关和写入出错传感器,当磁头短路或断路时就会发出出错信号。当集成的读/写信道处于写入模式时,它从磁盘控制器接收数据,同时接收写时钟信号,对数据进行编码、预补偿后将数据传送到前置放大器写入磁盘。当读/写信道处于读取模式时,从前置放大器/转接器来的信号传送到自动控制电路,然后通过可编程的滤波器、校正补偿电路和脉冲检测电路将信号转换为数据脉冲,再发送到磁盘控制器进行解码,最后传送到外部接口。
磁盘控制器是硬盘中最复杂的部件,它决定了HDD和主机之间的数据交换速度。
磁盘控制器拥有四个端口分别连接到主机、微处理器、缓冲RAM和数据交换信道。磁盘控制器是由微处理器驱动的自动部件,在主机中只有标准的任务文件可以访问磁盘控制器的寄存器。磁盘控制器初始化阶段由微处理器控制:设置数据编码方法,选择纠正错误的方法,定义可变的或固定的扇区划分,等等。
缓冲管理器是磁盘控制器功能的一部分,用于管理缓冲RAM。现代HDD的缓冲RAM的容量为512KB~8MB。缓冲管理器将缓冲RAM分割成独立的缓冲片断,微处理器使用专门的寄存器保存这些缓冲片断的地址以供存取操作。当主机使用其中一个缓冲片断交换数据时,读/写信道可以使用另外的缓冲片断交换数据。这样系统可以实现多通道处理从/向磁盘读/写数据或与主机之间的数据交换。
主轴电动机控制器控制三相电动机的运转,它由硬盘微处理器控制。主轴电动机的运转有三种模式:启动模式、加速模式和稳定模式。让我们先分析一下启动模式。加电后一个Reset信号被发送到微处理器,对主轴电动机控制器初始化内部寄存器。硬盘微处理器产生相位切换信号;主轴电动机低速旋转产生自感应电动势(EMF)。硬盘微处理器检测到自感应电动势(EMF)并根据此信号控制转速。在加速模式下微处理器加快相位切换并测量主轴电动机的转速,直到主轴电动机达到额定转速。当达到额定转速后主轴电动机进入稳定模式。在此模式下,微处理器根据相位信号计算主轴电动机的旋转周期并据此调整转速。在磁头从停泊区移走后,硬盘电路使用伺服标记跟踪旋转稳定性。
音圈控制器产生控制电流以移动位置调节器并使磁头定位于指定的磁道上。电流值由微处理器根据磁头位置与相关磁道的数字误差信号(位置误差信号或PES)来计算。电流值以数字形式传送给微处理器,计算后发回的模拟信号被放大后提供给音圈。
2.现代硬盘的固件
(1)什么是硬盘的固件
Firmware(固件)是固化在硬件中的软件,存储着计算机系统中硬件设备最基本的参数,为系统提供最底层、最直接的硬件控制。在开机过程中,首先执行固件来完成对硬件设备的初始化,使操作系统能够正确识别硬件并为其他软件的运行提供最基本的依据。
(2)硬盘固件的组成及作用
固件数据是HDD内部电路发挥功能所必需的,通常对用户来说是隐藏的。固件数据可以划分为如下几部分:
● 伺服信息或伺服字段;
● 低级格式化;
● 驻留固件微程序(操作程序);
● 配置表和设置;
● 缺陷表。
① 伺服信息。
伺服信息是HDD中用于磁头驱动的伺服系统所必需的,它们用做磁头定位,保证磁头准确地定位于指定的磁道。伺服信息在生产过程中通过专门的伺服窗写入已经装配好的HDA中。伺服窗随后被用标签封闭,标签上写有“警告!禁止打开”。伺服写入过程实际上是在一个特殊的工具中——伺服写入器是使用驱动器自身的磁头写入的。磁头位置调节器的重置是通过伺服写入器的专门推进装置使用比磁道间隔更小的稳定步进完成的。
② 低级格式化。
磁道的起始位置由标志信息确定,每个磁道被分为扇区和伺服字段。每个扇区的格式包括ID字段、数据字段、同步zone和空白空间。每个扇区的起始位置包括用于定相的同步zone和数据闸门同步。ID字段包括位置记号、物理扇区地址、标记字节和CRC字节。省略标志符的格式化最近变得流行起来,生产商使用此种方法在没有ID字段的磁道上组织数据(这样做可以增加驱动器可用空间)。他们现在使用伺服字段直接指向磁道上的物理扇区的方法来代替ID字段的功能。这样做需要同时读(写)磁道上所有扇区到(从)RAM中的映像。因此为了读一个扇区,驱动器需要复制整个磁道到RAM中,读取扇区不再是从磁盘上而是从RAM中。写入操作也是同样的过程。在写扇区时驱动器首先读取整个磁道,在RAM中修改后再将整个磁道写回磁盘。
③ 驻留固件微程序。
微处理器的固件(微程序)是HDD部件运转所必需的一些程序。这些程序包括用于初始化诊断、控制主轴电动机旋转、控制磁盘控制器、缓冲RAM之间交换数据的程序,等等。
大多数型号的HDD的固件微程序存储在处理器的内部ROM中,某些型号使用了外部Flash ROM,还有些型号的HDD的部分固件程序存储在磁盘上专门的固件区,而用来初始化、将固件数据从磁盘载入RAM的基本引导程序则存储在ROM中。
由于实际的固件模块在运行之前需要首先被载入到RAM中,所以它们被称为驻留模块。生产商将部分固件存储在磁盘上不仅是为了节省ROM空间,也是为了在发现微程序有错误时可以容易地修改。大部分生产商的互联网网页上含有为此目的而发布的升级程序。重写磁盘上的固件要比使用编程器对微处理器编程容易得多。
④ 配置表和设置。
配置表和设置包括磁盘空间的逻辑结构和物理结构。这些表使PCB(同一系列的驱动器的PCB是相同的)可以按照某一特定的驱动器型号自行配置。事实上,在设计某一特定型号的驱动器时——如使用2个盘片的80GB驱动器,可以同时自动的产生使用1个盘片的40GB的“二分之一容量”型号,和只使用盘片的一面的20GB的“四分之一容量”型号。这样生产商可以向市场提供不同容量的多种型号的驱动器而不用考虑研究和开发费用。除此之外,低级型号的驱动器可以使用由于某种原因不能用于完全容量型号的盘片,如“二分之一容量”型号可以使用某一面有缺陷的盘片。
⑤ 缺陷表。
现代硬盘的生产技术不能实现无缺陷的生产。不同成分的介质材料、抛光缺陷、磁层的杂质等,都会导致读/写数据时出错。早期的驱动器将缺陷磁道表写在HDA外面的标签上,并且每个驱动器都有一些保留空间。例如,HDD ST225(20MB)实际容量为21.5MB,也就是说,有1.5MB的额外空间分配给缺陷扇区和磁道。现代HDD也有额外的空间,不过对于用户来说是隐藏的,只有驱动器微处理器才可以访问。额外空间的一部分分配给HDD固件、配置表、S.M.A.R.T. 、计数器、工厂信息、缺陷表等,其他部分被保留用于以后代替缺陷扇区。
缺陷表在工厂测试时由生产商填充,检测发现的所有坏扇区都被添加到缺陷表,这一过程被称为缺陷调整(也叫做更新缺陷)。之后,若在HDD使用过程中发现新的缺陷扇区,驱动器就会自主重定向到保留扇区。因此,所有的现代驱动器出厂时都没有(可见的)缺陷扇区。
大部分型号的HDD有两个缺陷表:基本缺陷表,也称P表(P-List),以及可增长的缺陷表,也称G表。P表在工厂测试——SELFSCAN(智能的内置程序)时填充。G表不是在工厂中填充,它被设计用来添加驱动器使用过程中出现的缺陷。
为了使用G表的功能,几乎所有的HDD的用户命令中都包含“指派”命令——即用保留扇区替代缺陷扇区。很多程序包括生产商推荐的处理坏扇区的程序中都包含“指派”命令。Western Digital驱动器的Data Lifeguard系统可以自动地在驱动器空闲时使用保留扇区替换缺陷扇区。在这一过程中,驱动器对自身的硬盘表面进行自测,将标记为坏扇区的缺陷扇区的数据转移到保留扇区;缺陷调整的机制与“指派”命令是同一的。Fujitsu、 Quantum、 Maxtor和IBM等驱动器生产商都实现了在驱动器写入过程中自动调整缺陷的机能。因此在数据被写入缺陷扇区时,驱动器会自动地重定向到保留扇区并将缺陷扇区标记为坏区然后将缺陷扇区的编号添加到G表。
专门用于调整坏扇区的程序有用于Fujitsu驱动器的FUJFMT.EXE程序,用于Western Digital驱动器的WDDIAG.EXE程序,Samsung提供的ShDiag.exe程序,等等。
下面详细介绍缺陷调整的两种机制。当使用替代(指派)机制时驱动器将重定向的扇区标记写入坏扇区的ID字段,并将保留扇区的编号写入坏扇区的数据字段,也就是说,用替代扇区来读/写数据。通常,替代扇区为用户数据区之后的第一个可用扇区,如图1-8所示。
图1-8 扇区重定向的方法
当对缺陷扇区进行访问操作时,驱动器微处理器读出扇区标记和指派地址,然后将磁头重定位到保留区,从保留区的好扇区中读/写数据。缺陷扇区对驱动器来说是不可见的,不过在每次重定位到保留区之前仍然要先寻址到缺陷扇区。这一过程会伴随咔嗒声和轻微的减速。“指派”过程只允许对数据字段有缺陷的扇区重定向,若ID字段损坏或伺服字段损坏时就不能使用“指派”的方法调整扇区。
在工厂中隐藏缺陷扇区的另一种机制是跳过(丢弃)缺陷扇区。当使用此方法时,缺陷扇区被忽略,它的编号被分配给其后的扇区,而最后一个扇区被顺序移位到保留区,如图1-9所示。
图1-9 丢弃扇区的方法
这种隐藏扇区的方法破坏了低级格式化的连续完整性,LBA转换为PCHS的系统也应该考虑跳过的坏扇区。因此,使用此方法隐藏缺陷扇区后需要重建译码表并低级格式化以保护用户数据。这种方法只有在工厂模式下才能进行。在FUJFMT.EXE程序中使用了此种方法对Fujitsu驱动器调整坏扇区。
(3)硬盘的保留区
现代硬盘驱动器中有相当一部分磁盘空间对于用户是隐藏的,隐藏部分包括服务区(固件区)和用于替代缺陷扇区的保留区。在普通操作模式下,隐藏部分只有驱动器微处理器才可以访问。用户可访问的工作区通常称为逻辑磁盘空间,它的大小和磁盘所标注的容量是一致的。对用户区的访问是通过LBA地址(从0到N)所表示的连续的逻辑扇区进行的。逻辑磁盘空间与物理磁盘的对应关系由一个特殊的程序——译码表确定。译码表中包含磁盘的物理格式、zone的分配和隐藏的缺陷扇区与磁道等内容。
对固件区的访问只有在驱动器的特殊模式——工厂模式下才能进行。驱动器进入安全模式后就可以使用附加的工厂命令集。工厂命令可以用来读/写固件扇区,获得模块和表在固件区的位置映像,访问zone分配表,将LBA转换为PCHS或将PCHS转换为LBA,低级格式化,读/写Flash ROM和其他操作。
在HDD的设计过程中开发者规定了驱动器运转所需的固件数据和固件所占据的柱面数,因此逻辑0柱面是固件区之后的第一个柱面,如图1-10所示。不同型号的HDD可能有不同的磁盘空间结构。
图1-10 磁盘空间的逻辑结构
(4)生产硬盘的流程
硬盘工厂在生产硬盘时都有一个基本的处理流程:
① 在生产线上装配硬盘的硬件部分,用特别设备往盘片上写入伺服信号(Servo Write)。
② 格式化硬盘的系统保留区(Service Area),并向系统保留区写入程序模块和参数模块。
系统保留区一般位于硬盘0物理面的最前面几十个物理磁道。写入的程序模块一般用于硬盘内部管理,如低级格式化程序、加密解密程序、自监控程序、自动修复程序等。写入的参数多达近百项,如型号、系列号、容量、口令、生产厂家与生产日期、配件类型、区域分配表、缺陷表、出错记录、使用时间记录、S.M.A.R.T.表等,数据量从几百KB到几MB不等。有些参数一经写入就不再改变,如型号、系列号、生产时间等;而有些参数则可以在使用过程中由内部管理程序自动修改,如出错记录、使用时间记录、S.M.A.R.T.记录等。也有些专业的维修人员可以借助专业的工具软件,随意读取、修改写入硬盘中的程序模块和参数模块。
③ 将所使用的盘片表面按物理地址全面扫描,检查出所有的缺陷磁道和缺陷扇区,并将这些缺陷磁道和缺陷扇区按实际物理地址记录在P表中。
这个扫描过程非常严格,能把不稳定不可靠的磁道和扇区也检查出来,视同缺陷一并处理。现在的硬盘密度极高,盘片生产过程再精密也很难完全避免缺陷磁道或缺陷扇区。一般新硬盘的P表中都有少则数百,多则上万个缺陷记录。
P表保留在系统保留区中,一般用户无法查看或修改。如果是SCSI硬盘的话可以用多种通用软件查看到P表,因为各种牌子的SCSI硬盘使用兼容的SCSI指令集。而不同品牌、不同型号的IDE硬盘,使用各自不同的指令集,想查看其P表只能借助有针对性的专业的工具软件来进行。
④ 系统调用内部低级格式化程序,根据相应的内部参数进行内部低级格式化。在内部低级格式化过程中完成对所有的磁道和扇区进行编号、信息重写、清零等工作。在编号时,采用跳过的方法忽略掉记录在P表中的缺陷磁道和缺陷扇区,保证以后用户不会也不能使用到那些缺陷磁道和缺陷扇区。因此,新硬盘在出售时是无法检测到缺陷的。如果是返修的硬盘,一般就在厂家特定的维修部门进行检测维修。
(5)硬盘固件出错的表现
正常情况下,硬盘在接通电源之后,都要进行“初始化”过程,这个过程也可以称为“自检”,这时,硬盘都会发出一阵自检的声音。这些声音长短和规律视不同品牌而各不一样,但同型号的正常硬盘的自检声音是一样的。
这些自检的声音是由于硬盘内部的磁头寻道及归位动作而发出的。为什么硬盘刚通电就需要执行这些动作呢?简单地说,是硬盘在读取记录在盘片中的初始化参数,这些参数就是前面介绍的硬盘的“固件”。
每个硬盘内部都有一个系统保留区,里面分成若干模块,保存有许多参数和程序。硬盘在通电自检时,要调用其中大部分程序和参数。如果能读出那些程序和参数模块,而且校验正常的话,硬盘就进入准备状态。如果某些模块读不出或校验不正常,则该硬盘就无法进入准备状态。一般表现为,BIOS无法检测到硬盘或检测到硬盘却无法对它进行读/写操作。
硬盘有一系列基本参数,包括品牌、型号、容量、柱面数、磁头数、每磁道扇区数、系列号、缓存大小、转速、S.M.A.R.T.值等。其中一部分参数就写在硬盘的标签上,有些则要通过软件才能测出来。这些参数仅仅是初始化参数的一小部分,盘片中记录的初始化参数有数十个甚至数百个,硬盘的CPU在通电后自动寻找BIOS中的启动程序,然后根据启动程序的要求,依次在盘片中指定的位置读取相应的参数。如果能读出那些程序和参数模块,而且校验正常的话,硬盘就进入准备状态。如果某一项重要参数找不到或出错,启动程序无法完成启动过程,硬盘就进入保护模式。在保护模式下,一般表现为,BIOS无法检测到硬盘或检测到硬盘却无法对它进行读/写操作。例如,某些系列硬盘的常见问题:美钻二代系列硬盘通电后,磁头响一声,电动机停转;Fujitsu某系列产品在通电后,磁头正常寻道,但BIOS却检测不到;火球系列,系统能正常认出型号,却不能分区格式化;Western Digital的EB、BB系列,能被系统检测到,却不能分区格式化,等等。
1.1.2 软盘
软盘虽然已经基本淘汰了,但谁也不能否认软磁盘曾经的辉煌。软盘方便、易于携带且价格便宜,曾经在存储市场中占据一定的份额。
由于软盘容量较小且容错性较差,放置较长时间后磁盘容易损坏,所以软盘一般不用做大量的数据备份,更多的是作为数据交换的介质。
曾经广泛使用的是3.5英寸的软盘,容量仅为1.44MB。这种软盘的最大特点是便于携带,随便一个衣服口袋都可以放下,而且它的盘片是密封的,不会在携带中造成软盘损伤。但是它的容量太小,已经不能满足需求,于是大容量的软磁盘便应运而生。最早推向市场的大容量软盘是Imation公司的LS-120和Iomage公司的Zip,它们的容量都超过了100MB。1997年10月Sony公司也推出了它的大容量软盘产品HiFD,其容量达到200MB,规格依然采用3.5英寸,数据传输速率为3.6MB/s,并向下兼容。
大容量软磁盘在市面上见到的有两种:一种是其前身是3M公司的怡敏信(Imation)公司的产品,LS-120;另一种是Iomega公司的Zip。1996年MITSUMI公司发表了UHC高容量软磁盘,但没有推向市场。这三种盘的性能见表1-1。
表1-1 大容量软磁盘比较
注:*指能够读/写90mm(3.5英寸)1.44MB的盘片。
一张软盘格式化后,被逻辑地分为
磁道(Track):磁盘上分成的数个同心圆环;
面(Head):分为0/1两面;
扇区(Sector):磁道上储存资料的区域,有几部分。
3.5英寸软盘的标准格式有720KB(80道、每道9个扇区)和1.44MB(80道、每道18个扇区)两种,而5英寸盘的标准格式有1.2MB(80道、每道15个扇区)和360KB(40道、每道9个扇区)两种。
1.1.3 磁带
磁带存储可以说是最古老的存储方式之一。从1952年第一台13mm(0.5英寸)磁带机在IBM公司问世以来,它已经走过了50多年的历史,积累了大量的使用经验和可靠性数据。
磁带存储是一种安全的、可靠的、易用的、效费高的数据备份方法。因为磁带可以从驱动器上取出,因此可以实现非现场方式的保存或存放过去版本的数据。
磁带存储系统大都易于操作,甚至可以做成无人值守的数据备份和磁带管理。磁带的速度虽然比硬盘和光盘要慢,但它也能在相对短的时间内(如一个晚上)备份需要的数据。由于磁带的可靠性很高(实践证明,一盘磁带上的数据可以保存30年以上),而且容量大(以目前的存储技术,一盘磁带压缩后存储容量可达70GB,磁带库则可扩展到几十TB的水平),所以它是当之无愧的大容量数据备份的首选存储介质。
磁带品种较多,在选择时要考虑多方面的因素。其中包括:
① 磁带的密度和容量。磁带有0.5英寸、8mm、4mm、0.25英寸等规格,每盒容量从几十MB到几GB,要选择适合自己系统的磁带。容量常常是指压缩过的容量,通常采用压缩比为2∶1折算。但如果要存储的文件是已压缩过的,不可能再压缩,就需要选择容量大一些的磁带。
② 数据传输速率。如果备份数据量大,就需选择数据传输速率大一些的,以减少备份所需的时间。
③ 磁带寿命。它包括两个指标;一是通过磁头的次数,由于磁带和磁头在读/写时有摩擦,造成磁带磨损,一般螺旋扫描式磨损较严重;二是保存寿命,可保存多少年,这与磁带材料、保存环境有关。
④ 向下兼容。磁带技术不断更新,要求新的机器能读出旧的、保存的磁带。如果没有这个功能,就需要花费人工和时间来进行磁带转换。
⑤ 记录技术现在磁带记录技术主要有两类。螺旋扫描记录和直线记录。8mm磁带和4mm磁带采用的是螺旋扫描记录技术。记录的轨迹与磁带运动方向有一个夹角。这样有利于提高存储密度,但磁带与磁头间有包角,磨损较严重。磁带机结构复杂,耐用性也差。DAT磁带、IBM3480系列、DLT磁带都是采用直线记录方式。磁带机结构简单,磁带的磨损也小,寿命长。
⑥ 边写边读功能即在写入同时读出检查进行核对,以确保数据的可靠性,如有差错可立即修改。IBM3480/3490、DLT、SLR、MLR磁带机都有这一功能,但有此功能价格就上涨许多,通常采用的是写后读功能,一盒磁带写完后,要倒带再从头读出检查有无错误。这样做要多花许多时间,还增加了磁头和磁带的磨损。
⑦ 磁带机有不同的接口,如IDE接口、并行接口、SCSI接口、软驱接口等。要选择与机器相一致的磁带。
下面介绍常见的几种磁带规格。
1.QIC磁带
QIC磁带采用的带宽是6.25mm(0.25英寸),有带盒,采用直线记录方法。现在常见的是两种规格:DC6000和DC2000。
DC6000采用的磁带机外形尺寸类似于130mm(5.25英寸)软磁盘机。这种磁带一盒的容量大。例如,TandbergData公司的MLR3,一盒容量可达25GB(压缩后),持续传输速率为2MB/s,采用FastwideSCSI-2接口。DC6000由于体积大,单独利用的不多,但组合成磁带库的倒不少。
DC2000采用的磁带机外形尺寸类似于90mm(3.5英寸)软磁盘机。它有时用Traven的名称。DC2000不具备数据压缩功能,也不具备即写即读功能。因此磁带机结构简单,成本低。再加上体积小容量大,适合个人电脑和中小型服务器使用。Seagate公司的Tapestor就是一种Traven3磁带机。它压缩后每盒磁带容量为3.2GB,写入速度为19MB/min。
2.8mm磁带
8mm磁带采用螺旋扫描记录方式。这种磁带1987年由Exabyte公司提出。长期以来也只有Exabyte公司生产。一盒磁带最大容量14GB(压缩后)。最近Exabyte公司发布新的Mammoth磁带机,一盒容量提高到40GB(压缩后),每小时可录入21.6GB数据。1997年Sony公司也推出8mm磁带机,容量为25GB,有3MB/s的传输速率。但它与现有的8mm记录格式不兼容。
8mm磁带机可组成磁带库。如Exabyte公司的210磁带库,它可安装1~2台磁带机,可放置11盒磁带,总容量可达154GB(压缩后),连续传输速率为1MB/s(压缩后)。
3.DOS磁带
DOS磁带采用的带宽是3.81mm(0.15英寸),因此有时也称为4mm磁带。它最早是用于音乐存储,通称DAT磁带。1991年建立统一标准,采用惠普等公司提出的标准,称为DOS磁带。
DOS磁带采用螺旋扫描记录方式,用数据压缩技术来提高存储量,多采用SCSI接口。DOS磁带一盒最大容量可达24GB(压缩后)。DOS磁带机生产厂家有惠普公司、Seagate公司等,其中以惠普公司所占份额最大。生产厂家多,价格较低廉,容量和传输速率都适合网络做备份用。但DOS磁带记录面积小(带宽太小)限制了容量和传输速率的提高。
惠普公司的SaveStoreDAT24就是采用DOS-3格式的磁带机,在一盒磁带上可存储24GB (压缩后),有即写即读功能。每小时可存储7.2GB的数据。持续传输速率为1MB/s(未压缩)。DOS磁带也有磁带库,如惠普公司的SavestoreDAT24×6e,可放置6盒DOS-3磁带。磁带装卸时间平均仅约14s。
4.DLT磁带
DLT磁带由DEC公司开发,现在主要生产厂家有惠普公司、Quantum公司。DLT磁带宽度为13mm(0.5英寸),有带盒,带盒比一般录相带略短些。它采用直线记录方式。由于并行多道记录可以并行传输,传输速率高。一盒容量可达35GB。容量和传输速率都高于8mm和DOS磁带。但价格较贵,适用于高档服务器。DLT磁带记录面积大,在容量上很有潜力,是很有发展前途的技术,市场看好。
5.IBM3480系列
IBM3480系列实际上是一个磁带库。它采用13mm(0.5英寸)带宽盒磁带。一盒磁带容量是630MB。现在的3590系列,每盒容量达10GB。3480/3590性能好,机器结构复杂,价格也高。