硬盘详解

硬盘是现在计算机上最常用的存储器之一。我们都知道,计算机之所以神奇,是因为它具有高速分析处理数据的能力。而这些数据都以文件的形式存储在硬盘里。不过,计算机可不像人那么聪明。在读取相应的文件时,你必须要给出相应的规则。这就是分区概念。

    分区从实质上说就是对硬盘的一种格式化。当我们创建分区时,就已经设置好了硬盘的各项物理参数,指定了硬盘主引导记录(即Master Boot Record,一般简称为MBR)和引导记录备份的存放位置。而对于文件系统以及其他操作系统管理硬盘所需要的信息则是通过以后的高级格式化,即Format命令来实现。面、磁道和扇区硬盘分区后,将会被划分为面(Side)、磁道(Track)和扇区(Sector)。需要注意的是,这些只是个虚拟的概念,并不是真正在硬盘上划轨道。

    先从面说起,硬盘一般是由一片或几片圆形薄膜叠加而成。我们所说,每个圆形薄膜都有两个“面”,这两个面都是用来存储数据的。按照面的多少,依次称为0面、1面、2面……由于每个面都专有一个读写磁头,也常用0头(head)、1头……称之。按照硬盘容量和规格的不同,硬盘面数(或头数)也不一定相同,少的只有2面,多的可达数十面。各面上磁道号相同的磁道合起来,称为一个柱面(Cylinder)。

 

    上面我们提到了磁道的概念。那么究竟何为磁道呢?由于磁盘是旋转的,则连续写入的数据是排列在一个圆周上的。我们称这样的圆周为一个磁道。如果读写磁头沿着圆形薄膜的半径方向移动一段距离,以后写入的数据又排列在另外一个磁道上。根据硬盘规格的不同,磁道数可以从几百到数千不等;一个磁道上可以容纳数KB的数据,而主机读写时往往并不需要一次读写那么多,于是,磁道又被划分成若干段,每段称为一个扇区。一个扇区一般存放512字节的数据。扇区也需要编号,同一磁道中的扇区,分别称为1扇区,2扇区……

    计算机对硬盘的读写,处于效率的考虑,是以扇区为基本单位的。即使计算机只需要硬盘上存储的某个字节,也必须一次把这个字节所在的扇区中的512字节全部读入内存,再使用所需的那个字节。不过,在上文中我们也提到,硬盘上面、磁道、扇区的划分表面上是看不到任何痕迹的,虽然磁头可以根据某个磁道的应有半径来对准这个磁道,但怎样才能在首尾相连的一圈扇区中找出所需要的某一扇区呢?原来,每个扇区并不仅仅由512个字节组成的,在这些由计算机存取的数据的前、后两端,都另有一些特定的数据,这些数据构成了扇区的界限标志,标志中含有扇区的编号和其他信息。计算机就凭借着这些标志来识别扇区。硬盘的数据结构 在上文中,我们谈了数据在硬盘中的存储的一般原理。为了能更深入地了解硬盘,我们还必须对硬盘的数据结构有个简单的了解。硬盘上的数据按照其不同的特点和作用大致可分为5部分:MBR区、DBR区、FAT区、DIR区和DATA区。

 

我们来分别介绍一下:

1、MBR区

      MBR(Main Boot Record 主引导记录区)位于整个硬盘的0磁道0柱面1扇区。不过,在总共512字节的主引导扇区中,MBR只占用了其中的446个字节,另外的64个字节交给了DPT(Disk Partition Table硬盘分区表),最后两个字节“55,AA”是分区的结束标志。这个整体构成了硬盘的主引导扇区。

    主引导记录中包含了硬盘的一系列参数和一段引导程序。其中的硬盘引导程序的主要作用是检查分区表是否正确并且在系统硬件完成自检以后引导具有激活标志的分区上的操作系统,并将控制权交给启动程序。MBR是由分区程序(如Fdisk.exe)所产生的,它不依赖任何操作系统,而且硬盘引导程序也是可以改变的,从而实现多系统共存。

    下面,我们以一个实例让大家更直观地来了解主引导记录:

    例:80 01 01 00 0B FE BF FC 3F 00 00 00 7E 86 BB 00 在这里我们可以看到,最前面的“80”是一个分区的激活标志,表示系统可引导;“01 01 00”表示分区开始的磁头号为01,开始的扇区号为01,开始的柱面号为00;“0B”表示分区的系统类型是FAT32,其他比较常用的有04(FAT16)、07(NTFS);“FE BF FC”表示分区结束的磁头号为254,分区结束的扇区号为63、分区结束的柱面号为764;“3F 00 00 00”表示首扇区的相对扇区号为63;“7E 86 BB 00”表示总扇区数为12289622。

2、DBR区

    DBR(Dos Boot Record)是操作系统引导记录区的意思。它通常位于硬盘的0磁道1柱面1扇区,是操作系统可以直接访问的第一个扇区,它包括一个引导程序和一个被称为BPB(Bios Parameter Block)的本分区参数记录表。引导程序的主要任务是当MBR将系统控制权交给它时,判断本分区跟目录前两个文件是不是操作系统的引导文件(以DOS为例,即是Io.sys和Msdos.sys)。如果确定存在,就把它读入内存,并把控制权 交给该文件。BPB参数块记录着本分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT个数,分配单元的大小等重要参数。DBR是由高级格式化程序(即Format.com等程序)所产生的。

3、FAT区

    在DBR之后的是我们比较熟悉的FAT(File Allocation Table文件分配表)区。在解释文件分配表的概念之前,我们先来谈谈簇(Cluster)的概念。文件占用磁盘空间时,基本单位不是字节而是簇。一般情况下,软盘每簇是1个扇区,硬盘每簇的扇区数与硬盘的总容量大小有关,可能是4、8、16、32、64…… 同一个文件的数据并不一定完整地存放在磁盘的一个连续的区域内,而往往会分成若干段,像一条链子一样存放。这种存储方式称为文件的链式存储。由于硬盘上保存着段与段之间的连接信息(即FAT),操作系统在读取文件时,总是能够准确地找到各段的位置并正确读出。 为了实现文件的链式存储,硬盘上必须准确地记录哪些簇已经被文件占用,还必须为每个已经占用的簇指明存储后继内容的下一个簇的簇号。对一个文件的最后一簇,则要指明本簇无后继簇。这些都是由FAT表来保存的,表中有很多表项,每项记录一个簇的信息。由于FAT对于文件管理的重要性,所以FAT有一个备份,即在原FAT的后面再建一个同样的FAT。初形成的FAT中所有项都标明为“未占用”,但如果磁盘有局部损坏,那么格式化程序会检测出损坏的簇,在相应的项中标为“坏簇”,以后存文件时就不会再使用这个簇了。FAT的项数与硬盘上的总簇数相当,每一项占用的字节数也要与总簇数相适应,因为其中需要存放簇号。FAT的格式有多种,最为常见的是FAT16和FAT32。

 

4、DIR区

   DIR(Directory)是根目录区,紧接着第二FAT表(即备份的FAT表)之后,记录着根目录下每个文件(目录)的起始单元,文件的属性等。定位文件位置时,操作系统根据DIR中的起始单元,结合FAT表就可以知道文件在硬盘中的具体位置和大小了。

 

5、数据(DATA)区

    数据区是真正意义上的数据存储的地方,位于DIR区之后,占据硬盘上的大部分数据空间。

 

一、硬盘的物理结构:

     硬盘存储数据是根据电、磁转换原理实现的。硬盘由一个或几个表面镀有磁性物质的金属或玻璃等物质盘片以及盘片两面所安装的磁头和相应的控制电路组成(图1),其中盘片和磁头密封在无尘的金属壳中。

            

 

   硬盘工作时,盘片以设计转速高速旋转,设置在盘片表面的磁头则在电路控制下径向移动到指定位置然后将数据存储或读取出来。当系统向硬盘写入数据时,磁头中“写数据”电流产生磁场使盘片表面磁性物质状态发生改变,并在写电流磁场消失后仍能保持,这样数据就存储下来了;当系统从硬盘中读数据时,磁头经过盘片指定区域,盘片表面磁场使磁头产生感应电流或线圈阻抗产生变化,经相关电路处理后还原成数据。因此只要能将盘片表面处理得更平滑、磁头设计得更精密以及尽量提高盘片旋转速度,就能造出容量更大、读写数据速度更快的硬盘。这是因为盘片表面处理越平、转速越快就能越使磁头离盘片表面越近,提高读、写灵敏度和速度;磁头设计越小越精密就能使磁头在盘片上占用空间越小,使磁头在一张盘片上建立更多的磁道以存储更多的数据。

 

二、硬盘的逻辑结构:

    硬盘由很多盘片(platter)组成,每个盘片的每个面都有一个读写磁头。如果有N个盘片。就有2N个面,对应2N个磁头(Heads),从0、1、2开始编号。每个盘片被划分成若干个同心圆磁道(逻辑上的,是不可见的。)每个盘片的划分规则通常是一样的。这样每个盘片的半径均为固定值R的同心圆再逻辑上形成了一个以电机主轴为轴的柱面(Cylinders),从外至里编号为0、1、2……每个盘片上的每个磁道又被划分为几十个扇区(Sector),通常的容量是512byte,并按照一定规则编号为1、2、3……形成Cylinders×Heads×Sector个扇区。这三个参数即是硬盘的物理参数。我们下面的很多实践需要深刻理解这三个参数的意义。
    硬盘存储数据是根据电、磁转换原理实现的。硬盘由一个或几个表面镀有磁性物质的金属或玻璃等物质盘片以及盘片两面所安装的磁头和相应的控制电路组成(图1),其中盘片和磁头密封在无尘的金属壳中。

 

三、磁盘引导原理:

3.1 MBR(master boot record)扇区:

  计算机在按下power键以后,开始执行主板bios程序。进行完一系列检测和配置以后。开始按bios中设定的系统引导顺序引导系统。假定现在是硬盘。Bios执行完自己的程序后如何把执行权交给硬盘呢。交给硬盘后又执行存储在哪里的程序呢。其实,称为mbr的一段代码起着举足轻重的作用。MBR(master boot record),即主引导记录,有时也称主引导扇区。位于整个硬盘的0柱面0磁头1扇区(可以看作是硬盘的第一个扇区),bios在执行自己固有的程序以后就会jump到mbr中的第一条指令。将系统的控制权交由mbr来执行。在总共512byte的主引导记录中,MBR的引导程序占了其中的前446个字节(偏移0H~偏移1BDH),随后的64个字节(偏移1BEH~偏移1FDH)为DPT(Disk PartitionTable,硬盘分区表),最后的两个字节“55 AA”(偏移1FEH~偏移1FFH)是分区有效结束标志。

  MBR不随操作系统的不同而不同,意即不同的操作系统可能会存在相同的MBR,即使不同,MBR也不会夹带操作系统的性质。具有公共引导的特性。

  我们来分析一段mbr。下面是用winhex查看的一块希捷120GB硬盘的mbr。

MBR扇区代码

 

    你的硬盘的MBR引导代码可能并非这样。不过即使不同,所执行的功能大体是一样的。这里找wowocock关于磁盘mbr的反编译,已加了详细的注释,感兴趣可以细细研究一下。

    我们看DPT部分。操作系统为了便于用户对磁盘的管理。加入了磁盘分区的概念。即将一块磁盘逻辑划分为几块。磁盘分区数目的多少只受限于C~Z的英文字母的数目,在上图DPT共64个字节中如何表示多个分区的属性呢?microsoft通过链接的方法解决了这个问题。在DPT共64个字节中,以16个字节为分区表项单位描述一个分区的属性。也就是说,第一个分区表项描述一个分区的属性,一般为基本分区。第二个分区表项描述除基本分区外的其余空间,一般而言,就是我们所说的扩展分区。这部分的大体说明见表1。

          

  DPT代码分析

  注:上表中的超过1字节的数据都以实际数据显示,就是按高位到地位的方式显示。存储时是按低位到高位存储的。两者表现不同,请仔细看清楚。以后出现的表,图均同。

  也可以在winhex中看到这些参数的意义:
       

    说明: 每个分区表项占用16个字节,假定偏移地址从0开始。如图3的分区表项3。分区表项4同分区表项3。

  1、0H偏移为活动分区是否标志,只能选00H和80H。80H为活动,00H为非活动。其余值对microsoft而言为非法值。

  2、重新说明一下(这个非常重要):大于1个字节的数被以低字节在前的存储格式格式(little endian format)或称反字节顺序保存下来。低字节在前的格式是一种保存数的方法,这样,最低位的字节最先出现在十六进制数符号中。例如,相对扇区数字段的值0x3F000000的低字节在前表示为0x0000003F。这个低字节在前的格式数的十进制数为63。

  3、系统在分区时,各分区都不允许跨柱面,即均以柱面为单位,这就是通常所说的分区粒度。有时候我们分区是输入分区的大小为7000M,分出来却是6997M,就是这个原因。 偏移2H和偏移6H的扇区和柱面参数中,扇区占6位(bit),柱面占10位(bit),以偏移6H为例,其低6位用作扇区数的二进制表示。其高两位做柱面数10位中的高两位,偏移7H组成的8位做柱面数10位中的低8位。由此可知,实际上用这种方式表示的分区容量是有限的,柱面和磁头从0开始编号,扇区从1开始编号,所以最多只能表示1024个柱面×63个扇区×256个磁头×512byte=8455716864byte。即通常的8.4GB(实际上应该是7.8GB左右)限制。实际上磁头数通常只用到255个(由汇编语言的寻址寄存器决定),即使把这3个字节按线性寻址,依然力不从心。 在后来的操作系统中,超过8.4GB的分区其实已经不通过C/H/S的方式寻址了。而是通过偏移CH~偏移FH共4个字节32位线性扇区地址来表示分区所占用的扇区总数。可知通过4个字节可以表示2^32个扇区,即2TB=2048GB,目前对于大多数计算机而言,这已经是个天文数字了。在未超过8.4GB的分区上,C/H/S的表示方法和线性扇区的表示方法所表示的分区大小是一致的。也就是说,两种表示方法是协调的。即使不协调,也以线性寻址为准。(可能在某些系统中会提示出错)。超过8.4GB的分区结束C/H/S一般填充为FEH FFH FFH。即C/H/S所能表示的最大值。有时候也会用柱面对1024的模来填充。不过这几个字节是什么其实都无关紧要了。

  虽然现在的系统均采用线性寻址的方式来处理分区的大小。但不可跨柱面的原则依然没变。本分区的扇区总数加上与前一分区之间的保留扇区数目依然必须是柱面容量的整数倍。(保留扇区中的第一个扇区就是存放分区表的MBR或虚拟MBR的扇区,分区的扇区总数在线性表示方式上是不计入保留扇区的。如果是第一个分区,保留扇区是本分区前的所有扇区。

  附:分区表类型标志如图4

      

 

3.2 扩展分区

  扩展分区中的每个逻辑驱动器都存在一个类似于MBR的扩展引导记录( Extended Boot Record, EBR),也有人称之为虚拟mbr或扩展mbr,意思是一样的。扩展引导记录包括一个扩展分区表和该扇区的标签。扩展引导记录将记录只包含扩展分区中每个逻辑驱动器的第一个柱面的第一面的信息。一个逻辑驱动器中的引导扇区一般位于相对扇区32或63。但是,如果磁盘上没有扩展分区,那么就不会有扩展引导记录和逻辑驱动器。第一个逻辑驱动器的扩展分区表中的第一项指向它自身的引导扇区。第二项指向下一个逻辑驱动器的EBR。如果不存在进一步的逻辑驱动器,第二项就不会使用,而且被记录成一系列零。如果有附加的逻辑驱动器,那么第二个逻辑驱动器的扩展分区表的第一项会指向它本身的引导扇区。第二个逻辑驱动器的扩展分区表的第二项指向下一个逻辑驱动器的EBR。扩展分区表的第三项和第四项永远都不会被使用。

    通过一幅4分区的磁盘结构图可以看到磁盘的大致组织形式。如图5

        

    关于扩展分区,如图6所示,扩展分区中逻辑驱动器的扩展引导记录是一个连接表。该图显示了一个扩展分区上的三个逻辑驱动器,说明了前面的逻辑驱动器和最后一个逻辑驱动器之间在扩展分区表中的差异。

              

   除了扩展分区上最后一个逻辑驱动器外,表2中所描述的扩展分区表的格式在每个逻辑驱动器中都是重复的:第一个项标识了逻辑驱动器本身的引导扇区,第二个项标识了下一个逻辑驱动器的EBR。最后一个逻辑驱动器的扩展分区表只会列出它本身的分区项。最后一个扩展分区表的第二个项到第四个项被使用。

       

 

    扩展分区表项中的相对扇区数字段所显示的是从扩展分区开始到逻辑驱动器中第一个扇区的位移的字节数。总扇区数字段中的数是指组成该逻辑驱动器的扇区数目。总扇区数字段的值等于从扩展分区表项所定义的引导扇区到逻辑驱动器末尾的扇区数。

    有时候在磁盘的末尾会有剩余空间,剩余空间是什么呢?我们前面说到,分区是以1柱面的容量为分区粒度的,那么如果磁盘总空间不是整数个柱面的话,不够一个柱面的剩下的空间就是剩余空间了,这部分空间并不参与分区,所以一般无法利用。照道理说,磁盘的物理模式决定了磁盘的总容量就应该是整数个柱面的容量,为什么会有不够一个柱面的空间呢。在我的理解看来,本来现在的磁盘为了更大的利用空间,一般在物理上并不是按照外围的扇区大于里圈的扇区这种管理方式,只是为了与操作系统兼容而抽象出来CHS。可能其实际空间容量不一定正好为整数个柱面的容量。


一般硬盘正面贴有产品标签,主要包括厂家信息和产品信息,如商标、型号、序列号、生产日期、容量、参数和主从设置方法等。这些信息是正确使用硬盘的基本依据,下面将逐步介绍它们的含义。

硬盘主要由盘体、控制电路板和接口部件等组成,如图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码,与数据一起存储。在控制器对此扇区中的数据进行必要处理期间,磁盘继续旋转。由于对信息的后处理需要耗费一定的时间,在这段时间内,磁盘已转了相当的角度。

交叉因子的确定是一个系统级的问题。一个特定硬盘驱动器的交叉因子取决于:磁盘控制器的速度、主板的时钟速度、与控制器相连的输出总线的操作速度等。如果磁盘的交叉因子值太高,就需多花一些时间等待数据在磁盘上存入和读出。如果交叉因子值太低,就会大大降低磁盘性能。

前面已经述及,系统在磁盘上写入信息时,写满一个磁道后转到同一柱面的下一个磁头,当柱面写满时,再转向下一柱面。从同一柱面的一个磁道到另一个磁道,从一个柱面转到下一个柱面,每一个转换都需要时间,在此期间磁盘始终保持旋转,这就会带来一个问题:假定系统刚刚结束对一个磁道前一个扇区的写入,并且已经设置了最佳交叉因子比值,现在准备在下一磁道的第一扇区写入,这时,必须等到磁头转换好,让磁头部件重新准备定位在下一道上。如果这种操作占用的时间超过了一点,尽管是交叉存取,磁头仍会延迟到达。这个问题的解决办法是以原先磁道所在位置为基准,把新的磁道上全部扇区号移动约一个或几个扇区位置,这就是磁头扭斜。磁头扭斜可以理解为柱面与柱面之间的交叉因子,已由生产厂设置好,用户一般不用去改变它。磁头扭斜的更改比较困难,但是,它们只在文件很长、超过磁道结尾进行读出和写入时才发挥作用,所以,扭斜设置不正确所带来的时间损失比采用不正确的扇区交叉因子值带来的损失要小得多。交叉因子和磁头扭斜可用专用工具软件来测试和更改。更具体的内容这里就不再详述,毕竟现在很多用户都没有见过这些参数。

扇区号存储在扇区头标中,扇区交叉因子和磁头扭斜的信息也存放在这里。最初,硬盘低级格式化程序只是行使有关磁盘控制器的专门职能来完成设置任务。由于这个过程可能破坏低级格式化的磁道上的全部数据,也极少采用。

扇区交叉因子由写入到扇区头标中的数字设定,所以,每个磁道可以有自己的交叉因子。在大多数驱动器中,所有磁道都有相同的交叉因子。但有时因为操作上的原因,也可能导致各磁道有不同的扇区交叉因子。如在交叉因子重置程序工作时,由于断电或人为中断,就会造成一些磁道的交叉因子发生了改变,而另一些磁道的交叉因子没有改变。这种不一致性对计算机不会产生不利影响,只是有最佳交叉因子的磁道要比其他磁道的工作速度更快。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值