2012-03-06 11:17:23
来 源
中存储网
硬盘恢复
硬盘驱动器结构上是由硬件和软件组成的系统,HDA包括由主轴马达(Spindle motor)驱动的磁碟、带有定位系统和前置放大器/转接器的磁头。磁碟是一种铝制的圆盘。

 

《现代硬盘驱动器》
【俄】Vadim Morozov,Sergey Yatsenko 著
于国栋 译

    硬盘驱动器是由硬件和软件组成的系统,硬件上包括机械部分—磁头-磁碟组件(HDA)和电子部分—印刷电路板(PCB)两部分;软件上包括处理器微代码(Microcode)和驱动器运转所需的数据。HDA是硬盘驱动器中唯一的机械部件,它还包含有一片执行前置放大器/转接器功能的芯片。PCB是由一些控制芯片、数据编解码芯片和与外部交换数据的接口芯片组成。PCB位于HDA的外部,一般是在下方。某些硬盘驱动器,像著名的Seagate酷鱼系列,它们有一块额外的金属板覆盖在电路板上面以保护电子元件免遭损坏。硬盘驱动器的软件一般称为固件(firmware),现代硬盘驱动器的固件一般分为两部分,一部分存储在处理器芯片内部的ROM和外部的扩展Flash ROM中,另一部分存储在磁盘上专门的保留区。

机械部分

    驱动器的整个结构是基于保护其灵敏的机械部件不受环境因素的影响而设计的。驱动器里面的空气是不能有灰尘的,因此机械部分的组件是在每立方米少于100个微尘粒子的工作间(也就是所谓的“100级清洁空间”)完成装配的。

    硬盘的盘体有一个填充有紧密的空气过滤材料的开口,用于平衡HDD内外的空气压力。不过如果驱动器落入水中,水就会沿着此开口进入驱动器内部。盘片的旋转引起的空气环流经常会撕碎不知如何进入的灰尘。

    HDA包括由主轴马达(Spindle motor)驱动的磁碟、带有定位系统和前置放大器/转接器的磁头。磁碟是一种铝制的圆盘(少量是陶瓷或特殊玻璃的),它拥有最高精度等级的光滑表面(除了停泊区),由于分子吸引力的缘故,如此光滑的表面会将磁碟和磁头粘合在一起。为了防止磁碟与磁头粘连在一起,生产商在磁头和磁盘接触的区域(停泊区)使用了特殊的防滑齿。使用真空沉积工艺生成的氧化铬覆盖(磁性物质)或钴层,使磁碟具有特殊的磁性质。氧化铬覆盖层具有更高的硬度和抗磨损性,而以前使用氧化铁做磁性物质然后在其上覆盖一层软涂层的磁碟非常容易损坏。磁碟由特殊的3相电机驱动。磁碟的固定部分包括三个“星形”连接的线圈、位于中央的轴承、和由稀土金属制造的永久磁体。为了减少变形和获得很高的转速,生产商必须在主轴马达上使用特殊的轴承——如滚珠轴承或改良的液态轴承(使用专门的润滑油以增强马达耐久力)。液态轴承具有低噪音和热量少的特点。现代IDE驱动器的每分钟转速为5400RPM或7200RPM;现代SCSI驱动器的转速为10000RPM或15000RPM。

    磁头(Head)也是一种非常精密的部件。磁头与芯片一样使用光刻技术生产。磁头的陶瓷表面与磁碟一样光滑。磁头的驱动臂是由铜线制成的平直的电磁线圈,悬浮在永久磁铁的磁极间。驱动臂一端固定在轴承的转动杆上,另一端连接到磁头支架。磁头支架是有弹性的,允许磁头以一定的高度“飞行”在磁碟表面;飞行的高度通常为零点几微米。

    推动磁头组运动的传动系统与扩音喇叭的线圈类似,叫做音圈。音圈的工作原理与普通电动式扬声器的工作原理相似(也就是说,在磁心上缠绕铜线)。音圈被永久磁体制成的定子围绕,当一定电压的电流流过时线圈就会产生极性,从而以一定加速度推动磁头转向一定位置;这样磁头就可以定位于磁碟表面的任意位置。磁头在驱动器停止运转时使用特殊的臂锁(latch)固定在停泊区。两种最常用的臂锁是磁性臂锁和气动臂锁。磁性臂锁利用固定在硬盘内部的一块小磁体,吸引音圈使磁头固定在停泊区。气动臂锁(或空气锁)也将磁头固定在停泊区防止移动;当磁碟开始旋转时产生的气流使气动臂锁解开从而解除固定状态。

    在HDA内的电子部件只有从磁头接收信号的前置放大器/转接器。前置放大器/转接器位于靠近磁头的地方,以最大限度的减少外部干扰。前置放大器/转接器通过弹性电缆与磁头和驱动器的其他电子部件相连。音圈,有时主轴电缆也使用同一电缆相连。不过主轴通常是由单独的电缆供电。

    HDA 通常使用两个接头与PCB连接。其中一个是为主轴马达供电的三相中心抽头电缆接头,另一个是与前置放大器/转接器及音圈电缆传递信号的电缆接头。#p#副标题#e#

硬盘驱动器的电路设计

    现代驱动器的电路设计的特点是使用高集成度的芯片;它们的结构如图1:


图1. 现代驱动器的电路设计


    如图1中所示,整个电路设计基于四种芯片:

      ·系统控制芯片,包括:读/写信道,磁盘控制器和RISC(精简指令计算机)控制处理器(微处理器);
      ·Flash ROM芯片(内含驱动器固件);
      ·主轴马达和音圈控制芯片;
      ·ROM 芯片(用作缓存)。

    由于以上各部分的功能存在根本的差别,所以更进一步的集成不太可能实现。

    当前最先进的系统控制器是由Cirrus Logic公司生产的芯片。它的明显的突破是将读/写信道、处理器和磁盘控制器集成在一个芯片上;不过由于设计方法不成熟,使用此芯片的Fujitsu MPF3xxxAT和MPG系列驱动器频繁出现故障。

    微处理器采用RISC结构。当加电后驱动器的reset电路向微处理器发出“RESET”信号,使微处理器执行ROM中的自检程序,清空存储器和磁盘控制器以及其他连接到内部数据总线的可编程芯片的工作数据区。然后微处理器检查驱动器运转时使用的内部信号,如果没有发现紧急警告,就启动主轴马达。接下来一步是HDD内部测试:检查数据缓冲RAM、磁盘控制器和输入微处理器的信号的状态。之后微处理器开始分析脉冲信号直到主轴马达达到规定的转速。当马达达到规定的转速后,微处理器就开始操作定位电路和磁盘控制器,将磁头移动到固件数据区,并将固件数据载入到RAM中以供进一步操作。最后微处理器切换到准备就绪状态,并等待计算机主机命令。在等待模式下,从计算机主机CPU发来的命令会引起HDD的所有电子部件的一连串动作以完成指定操作。

    HDD读/写信道由前置放大器/转接器(位于HDA内)、读电路、写电路和同步时钟等组成。驱动器的前置放大器具有多个通道,每个通道连接到一个磁头。各通道的切换由驱动器微处理器的信号控制。前置放大器中含有写入电流开关和写入出错传感器,当磁头短路或断路时就会发出出错信号。当集成的读/写信道处于写入模式时,它从磁盘控制器接收数据,同时接收写时钟信号,对数据进行编码、预补偿后将数据传送到前置放大器写入磁盘。当读/写信道处于读取模式时,从前置放大器/转接器来的信号传送到自动控制电路,然后通过可编程的滤波器、校正补偿电路和脉冲检测电路将信号转换为数据脉冲,再发送到磁盘控制器进行解码,最后传送到外部接口。#p#副标题#e#

    磁盘控制器是驱动器中最复杂的部件,它决定了HDD和主机之间的数据交换速度。

    磁盘控制器拥有四个端口分别连接到主机、微处理器、缓冲RAM和数据交换信道。磁盘控制器是由微处理器驱动的自动部件,在主机中只有标准的任务文件可以访问磁盘控制器的寄存器。磁盘控制器初始化阶段由微处理器控制:设置数据编码方法、选择纠正错误的方法、定义可变的或固定的扇区划分等等。

    缓冲管理器是磁盘控制器功能的一部分,用于管理缓冲RAM。现代HDD的缓冲RAM的容量为512Kb到8Mb。缓冲管理器将缓冲RAM分割成独立的缓冲片断,微处理器使用专门的寄存器保存这些缓冲片断的地址以供存取操作。当主机使用其中一个缓冲片度交换数据时,读/写信道可以使用另外的缓冲片断交换数据。这样系统可以实现多通道处理从/向磁盘读/写数据或与主机之间的数据交换。

    主轴马达控制器控制3相电机的运转。它由驱动器微处理器控制。主轴马达的运转有三种模式:启动模式,加速模式和稳定模式。让我们先分析一下启动模式。加电后一个reset信号被发送到微处理器,对主轴马达控制器初始化内部寄存器。驱动器微处理器产生相位切换信号;主轴马达低速旋转产生自感应电动势(EMF)。驱动器微处理器器检测到自感应电动势(EMF)并根据此信号控制转速。在加速模式下微处理器加快相位切换并测量主轴马达的转速,直到主轴马达达到额定转速。当达到额定转速后主轴马达进入稳定模式。在此模式下微处理器根据相位信号计算主轴马达的旋转周期并据此调整转速。在磁头从停泊区移走后,驱动器电路使用伺服标记跟踪旋转稳定性。

    音圈控制器产生控制电流以移动位置调节器并使磁头定位于指定的磁道上。电流值由微处理器根据磁头位置与相关磁道的数字误差信号(位置误差信号或PES)来计算。电流值以数字形式传送给微处理器,计算后发回的模拟信号被放大后提供给音圈。


固件数据 (服务信息)

固件数据是HDD内部电路发挥功能所必须的,通常对用户来说是隐藏的。固件数据可以划分为如下:

      ·伺服信息或伺服字段;
      ·低级格式化;
      ·驻留固件微代码(操作程序);
      ·配置表和设置;
      ·缺陷表。

    伺服字段是HDD中用于磁头驱动的伺服系统所必须的;他们用作磁头定位,保证磁头准确的定位于指定的磁道。伺服信息在生产过程中通过专门的伺服窗写到已经装配的HDA中。伺服窗随后被用标签封闭,标签上写有:警告!禁止打开。伺服写入过程实际上是在一个特殊的工具中——伺服写入器使用驱动器自身的磁头写入的。磁头位置调节器的重置是通过伺服写入器的专门推进装置使用比磁道间隔更小的稳定步进完成的。

    微处理器的固件(微代码)是HDD部件运转所必须的一些程序。这些程序包括用于初始化诊断的,控制主轴马达旋转的,控制磁盘控制器、缓冲RAM之间交换数据的程序,等等。大多数型号的HDD的固件微代码存储在处理器器的内部ROM中;某些型号使用了外部Flash ROM。还有些型号的HDD的部分固件程序存储在磁盘上专门的固件区,而用来初始化、将固件数据从磁盘载入RAM的基本引导程序则存储在ROM中。由于实际的固件模块在运行之前需要首先被载入到RAM中,所以他们被称为驻留模块。生产商将部分固件存储在磁盘上不仅仅是为了节省ROM空间,也是为了在发现微代码有错误时可以容易的修改。大部分生产商的互联网网页上含有为此目的而发布的升级升序。重写磁盘上的固件要比使用编程器对微处理器编程容易的多。我们还记得几年前Western Digital 不得不招回大量的驱动器……

    低级格式化。磁道的起始位置由标志信息确定。每个磁道被分为扇区和伺服字段。每个扇区的格式包括ID字段,数据字段,同步zone和空白空间。每个扇区的起始位置包括用于定相的同步zone和数据闸门同步。ID字段包括位置记号、物理扇区地址、标记字节和CRC字节。省略标志符的格式化最近变的流行起来,生产商使用此种方法在没有ID字段的磁道上组织数据(这样做可以增加驱动器可用空间)。他们现在使用伺服字段直接指向磁道上的物理扇区的方法来代替ID字段的功能。这样做需要同时读(写)磁道上所有扇区到(从)RAM中的映象。 因此为了读一个扇区,驱动器需要拷贝整个磁道到RAM中,读取扇区不再是从磁盘上而是从RAM中。写入操作也是同样的过程。在写扇区时驱动器首先读取整个磁道,在RAM中修改后再将整个磁道写回磁盘。

    配置表和设置包括磁盘空间的逻辑结构和物理结构。这些表使PCB(同一系列的驱动器的PCB是相同的)可以按照某一特定的驱动器型号自行配置。事实上,在设计某一特定型号的驱动器时——如使用2个碟片的80Gb驱动器,可以同时自动的产生使用1个碟片的40Gb的“二分之一容量”型号,和只使用碟片的一面的20Gb的“四分之一容量”型号。这样生产商可以向市场提供不同容量的多种型号的驱动器而不用考虑R&D费用。除此之外,低级型号的驱动器可以使用由于某种原因不能用于完全容量型号的碟片,如“二分之一容量”型号可以使用某面有缺陷的磁碟。
    缺陷表。现代磁碟的生产技术不能实现无缺陷的生产。不同成分的介质材料、抛光缺陷、磁层的杂质等,都会导致读/写数据时出错。早期的驱动器将缺陷磁道表写在HDA外面的标签上,并且每个驱动器都有一些保留空间,例如HDD ST225(20 Mb)实际容量为21,5 Mb,也就是说,有1,5 Mb的额外空间分配给缺陷扇区和磁道。现代HDD也有额外的空间,不过对于用户来说是隐藏的,只有驱动器微处理器才可以访问。额外空间的一部分分配给HDD 固件、配置表、 S.M.A.R.T. 计数器、工厂信息、缺陷表等等。其他部分被保留用于以后代替缺陷扇区。

    缺陷表在工厂测试时由生产商填充。发现的所有的坏扇区都被添加到缺陷表。这一过程被称为缺陷更新(调整)(也叫做更新缺陷)。之后若在HDD使用过程中发现新的缺陷扇区,驱动器就会自主重定向到保留扇区。因此,所有的现代驱动器出厂时都没有(可见的)缺陷扇区。

    大部分型号的 HDD 有两个缺陷表:基本的或P-表和增长的或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程序,等等。#p#副标题#e#

缺陷调整的两种机制

    当使用替代(指派)机制时驱动器将重定向的扇区标记写入坏扇区的ID字段,并将保留扇区的编号写入坏扇区的数据字段,也就是说,用替代扇区来读写数据。通常,替代扇区为用户数据区之后的第一个可用扇区。(见图 2.)


图 2. 扇区重定向的方法


    当对缺陷扇区进行访问操作时,驱动器微处理器读出扇区标记和指派地址,然后将磁头重定位到保留区,从保留区的好扇区中读/写数据。缺陷扇区对驱动器来说是不可见的,不过在每次重定位到保留区之前仍然要先寻址到缺陷扇区。这一过程会伴随咔哒声和轻微的减速。“指派”过程只允许对数据字段有缺陷的扇区重定向,若ID字段损坏或伺服字段损坏时就不能使用“指派”的方法调整扇区。

    在工厂中隐藏缺陷扇区的另一种机制是跳过缺陷扇区。当使用此方法时,缺陷扇区被忽略,它的编号被分配给其后的扇区(等等),而最后一个扇区被顺序移位到保留区。(见图 3)

 


图 3. 丢弃扇区的方法

 

    这种隐藏扇区的方法破坏了低级格式化的连续完整性;LBA转换为PCHS的系统也应该考虑跳过的坏扇区。因此使用此方法隐藏缺陷扇区后需要重建译码表并低级格式化以保护用户数据。这种方法只有在工厂模式下才能进行。在FUJFMT.EXE程序中使用了此种方法对FUJITSU 驱动器调整坏扇区。#p#副标题#e#


磁盘空间的逻辑结构

    现代驱动器中有相当一部分磁盘空间对于用户是隐藏的;隐藏部分包括服务区(固件区)和用于替代缺陷扇区的保留区。在普通操作模式下,隐藏部分只有驱动器微处理器才可以访问。用户可访问的工作区通常称为逻辑磁盘空间,它的大小和磁盘所标注的容量是一致的。对用户区的访问是通过LBA符号(从0到N)所表示的连续的逻辑扇区进行的。逻辑磁盘空间与物理磁盘的对应关系由一个特殊的程序:译码表确定。译码表中包含磁盘的物理格式、zone的分配和隐藏的缺陷扇区与磁道等内容。

    对固件区的访问只有在驱动器的特殊模式:工厂模式下才能进行。驱动器进入安全模式后就可以使用附加的工厂命令集。工厂命令可以用来读/写固件扇区、获得模块和表在固件区的位置映象、访问zone分配表、将LBA转换为PCHS或将PCHS转换为LBA、低级格式化、读/写FLASH ROM和其他操作。

    在HDD的设计过程中开发者规定了驱动器运转所需的固件数据和固件所占据的柱面数;因此逻辑0柱面是固件区之后的第一个柱面(见图4)。 不同型号的HDD可能由不同的磁盘空间结构。


图 4. 磁盘空间的逻辑结构

 

声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。