文章教程

中级通信工程师考试15.1.1硬盘

8/24/2020 11:08:17 PM 人评论 次浏览

15.1.1 硬盘

本节将从硬盘接口类型概述、常见硬盘接口类型及标准,以及磁盘数据存储格式三方面介绍硬盘。

1.硬盘接口类型概述

硬盘接口是硬盘与主机系统间的连接部件,在硬盘缓存和主机内存之间传输数据,它决定了硬盘与计算机之间的连接速度,硬盘接口的优劣直接影响程序运行速度和系统性能。

以前的硬盘接口比较单一,但现在的硬盘接口种类繁多。目前市场可见的硬盘接口主要有:IDE、ATA、UltraATA/33/66/100/133、UltraDMA/33/66/100/133、SCSI、SerialATA系列,以及FibreChannel、IEEE1394、FireWire、iLink及USB等。

从技术上来说,硬盘接口可分为IDE、SCSI、SerialATA、SAS、Fibre Channel、IEEE 1394和USB等。SATA、SCSI、SAS是目前硬盘接口的主要类型。

IDE接口类型的硬盘因实现技术成熟、价格便宜、性能较好,在以前的PC中得到了非常广泛的应用。SCSI因为具有很好的并行处理能力和相对比较高的磁盘性能,常用于服务器,但价格比IDE、SATA要贵。光纤接口类型的硬盘并不常见,因其接口宽带很宽,所以常用于大型的数据存储服务器上,如NAS或者SAN数据存储网络,还经常用于流媒体服务器。串行ATA突破了并行ATA的150MB/s速率的瓶颈,在PC中得到了广泛应用。IEEE1394与USB接口类型主要是用于外置型的硬盘。这两种接口类型硬盘的最大特点就是可以直接与电脑外部的相应接口连接,而不需要打开机箱,所以便于安装;另一方面,其接口带宽较宽,所以数据传输速率较快。下面具体介绍这几类硬盘接口。

2.常见硬盘接口类型及标准

本节将对各种硬盘接口类型做详细介绍。

(1)IDE

电子集成驱动器(Integrated Drive Electronics,IDE)是指“硬盘控制器”与“盘体”集成在一起的硬盘驱动器。加入了新技术的硬盘接口类型不再称为IDE接口,例如,ATA、UltraATA、DMA、UltraDMA等。

(2)ATA

高级技术附加装置(Advanced Technology Attachment,ATA)接口标准最初是1986年由CDC、康柏和西部数据3家公司共同制定的。第一代的ATA标准称为ATA-1。

ATA-1只支持PIO-0、PIO-1和PIO-2模式,其数据传输速率只有3.3MB/s,硬盘大小为5英寸,容量为40MB(根据其技术标准,其硬盘容量限制在504MB之内)。ATA接口是从20世纪80年代末期开始逐渐取代其他老式接口,随着它自身的发展,“ATA”也就成了“IDE”的代名词。ATA133标准中,硬盘数据传输速率可达到133.7MB/s。

ATA-2就是EIDE(Enhanced IDE)或FastATA,它在ATA的基础上增加了2种PIO模式和2种DMA模式,硬盘的最高传输率16.6MB/s,引进了LBA地址转换方式,突破了固有的504MB的限制,可以支持最高达8.4GB的硬盘。在支持ATA-2的计算机的BIOS设置中,一般可以见到LBA(Logical Block Address)和CHS(Cylinder、Head、Sector)的设置。在EIDE接口的主板上一般有2个EIDE插口,它们也可以分别连接一个主设备和一个从设备,这样,一块主板就可以支持4个EIDE设备,这两个EDIE接口一般称为IDE1和IDE2。

ATA-3引入了密码保护机制,对电源管理方案进行了修改,引入了硬盘自监测、自分析和报告技术(Self-Monitoring Analysis and Reporting Technology,S.M.A.R.T)。

ATA-4即UltraATA/33,支持直接内存存取(Direct Memory Access,DMA)技术,又称为UltraDMA/33。DMA是I/O设备与主存储器之间由硬件组成的直接数据通道,用于高速I/O设备与主存储器之间的成组数据传送。硬盘控制器采用总线主控方式进行数据传输,它将PIO下的最大数据传输速率提高了一倍,达到33MB/s,称为PIO-4。微软的Windows98操作系统开始正式支持这一接口技术。

ATA-5即UltraATA/66,也称为Ultra DMA66。ULTRA DMA66将普通的40芯排线改成80芯排线(自此,所有并行ATA标准都采用这一芯线标准),但该线仍然使用40针的接口,但传输线却增加了一倍。

ATA-6即UltraATA/100,这一新标准主要是提高了硬盘数据的传输速率,从原来ATA-5标准中的66MB/s提高到新的100MB/s。

ATA-7即UltraATA/133,它的传输速率达到了133MB/s。

(3)SCSI

小型计算机系统接口(Small Computer System Interface,SCSI)标准是1979年由美国的Shugart公司(Seagate公司的前身)制定的(即SCSI-1),SCSI是一种与IDE(ATA)完全不同、用于小型机的接口技术,它并不是专门为硬盘设计的,随着计算机技术的发展,逐渐被移植到了普通微机上。

SCSI是一种总线型的系统接口。每个SCSI总线上可以连接包括SCSI控制卡在内的8个SCSI设备。SCSI的优势在于它支持多种设备,独立的总线使得它对CPU的占用率很低,传输速率比ATA接口快得多,但价格也很高。

1)SCSI版本

SCSI-1是最原始的版本,异步传输速率为3MB/s,同步传输速率为5MB/s。虽然几乎被淘汰了,但还会使用在一些扫描仪和内部ZIP驱动器中,采用的是25针接口。也就是说,若要将SCSI-1设备连接到你的SCSI卡,必须有一个内部的25针对50针的接口电缆;若用外部设备,就不能采用内部接口中的任何一个(即此时的内部接口均不可以使用)。

早期的SCSI-2,称为FastSCSI,通过提高同步传输的频率使传输速率从原有的5MB/s提高为10MB/s,支持8位并行数据传输,可连7个外设。后来出现的WideSCSI,支持16位并行数据传输,数据传输率也提高到了20MB/s,可连16个外设。此版本的SCSI使用一个50针的接口,主要用于扫描仪、CD-ROM驱动器及老式硬盘。

1995年,诞生了更为高速的SCSI-3,称为UltraSCSI,数据传输速率也达到了20MB/s。它将同步传输速率提高到20MB/s,提高了数据传输率的技术。若使用16位传输的Wide模式,数据传输速率更可以提高至40MB/s。此版本的SCSI使用一个68针的接口,主要应用在硬盘上。SCSI-3的典型特点是将总线频率大大地提高,并降低信号的干扰,以此来增强其稳定性。

SCSI-3有很多型号,Ultra(Fast-20)的传输频率20MHz,数据频宽8位,传输速率20MB/s。

Ultrawide的传输频率20MHz,数据频宽16位,传输速率40MB/s。

Ultra2的传输频率80MHz,数据频宽16位,传输速率80MB/s。

Ultra160的传输频率80MHz,数据频宽16位,传输速率160MB/s。

Ultra320的传输频率80MHz,数据频宽16位,传输速率320MB/s。

Ultra640的传输频率160MHz,数据频宽16位,传输速率640MB/s。

2)SCSI的控制器、设备和电缆

SCSI控制器在SCSI总线上的所有其他设备和计算机之间进行协调。SCSI控制器也称为主机适配器,控制器既可以是插入可用插槽的卡,也可以内置在主板上。SCSIBIOS(Basic Input Output System)也在控制器上。它是一个小型ROM或闪存芯片,包含访问和控制总线上的设备所需的软件。

每个SCSI设备都必须具有唯一的标识符(ID)才能正常工作。例如,如果总线能够支持16个设备,通过硬件或软件设置指定的设备ID的范围为0~15。SCSI控制器本身必须使用其中一个ID,通常是最高的那一个,而将其他ID留给总线上的其他15个设备使用。

内部设备通过带状电缆连接到SCSI控制器。外部SCSI设备使用一条粗的圆形电缆,以菊花链形式连接到控制器。在菊花链中,每个设备都依次连接到下一个设备。因此,外部SCSI设备通常具有两个SCSI连接器,分别连接前、后两个设备。

电缆本身通常由三层构成。内层是保护性最好的层,包含实际发送的数据;介质层是包含向设备发送控制命令的线路;外层是包含传输奇偶校验信息的线路,这些信息可确保数据的正确性。

不同SCSI标准使用不同的连接器,这些连接器通常不兼容,通常使用50针、68针或80针。

3)SCSI域

SCSI设备是在一定的环境中运行的。通常需要有多个SCSI设备才能形成这样的环境。SCSI设备间的运行环境也称为SCSI域。在这个域内,生成和发送SCSI命令和任务管理请求的SCSI端口称为SCSI发起方,接收和处理SCSI命令,根据请求执行任务管理的端口称为SCSI目标方。

SCSI域的组成包括SCSI设备,设备内的SCSI发起方和目标方以及提供数据交接的总线。SCSI总线连接了挂在它上面的所有SCSI设备。可以把一个实际的SCSI应用系统抽象为一个SCSI域,域中有多个SCSI设备,而且带SCSI驱动器的计算机也可以被看成是一个SCSI设备。

尽管允许有多个SCSI设备接在同一条总线上,SCSI协议实际定义的是设备间一对一的数据交换,即同一时刻在SCSI总线上只允许有两个设备互相交换数据。因为,SCSI上的各个设备是以分时共享的方式使用总线的。

在一个实际的SCSI域中,必须至少有一个发起方和一个目标方,考虑到主机对数据存储的需求,配置了SCSI控制器的主机至少有一个SCSI发起方。而磁盘设备主要是提供存储和数据服务,一般都有目标方。

4)SCSI协议模型

为了便于实现和理解SCSI的各个协议,SCSI采取了分层结构。SCSI大致可分为三层,即SCSI应用层、SCSI传输层和SCSI互连层。SCSI中的各个具体协议一般都位于其中的某一层,可以跨越两层。

在应用层,SCSI体系结构把发起方(主机)和目标方(如磁盘)的通信定义为客户/服务器交换。SCSI客户位于主机中,代表上层应用程序,文件系统和操作系统I/O请求。SCSI设备服务器位于目标设备中、对请求作出响应。客户/服务器请求和响应通过某种形式的底层协议进行传输。

在传输协议层,SCSI设备之间通过一系列的命令实现数据的传送,大致分成三个阶段:命令的执行、数据的传送和命令的确认。

SCSI互联层完成SCSI设备对总线的连接以及发送方和目标方的选择等功能。

5)寻址机制

为了对连接在总线上的设备寻址,SCSI协议引入了SCSI设备ID和逻辑单元号LUN。在SCSI总线上的每个设备都必须有一个唯一的ID,其中包括服务器中的主机总线适配器。取决于SCSI标准的版本,每条总线最多允许有8个或者16个设备ID。

诸如RAID磁盘子系统和磁带库这样的存储设备可能包括若干个子设备,如虚拟磁盘、磁带驱动器和介质更换器等。因此SCSI引入了逻辑单元号,以便于对大的设备中的子设备进行寻址。另外一个服务器可能配置了多个SCSI控制器,从而就可能有多条SCSI总线。因此,操作系统用一个三元描述标识一个SCSI目标——总线/目标设备/逻辑单元号。

传统的SCSI适配卡连接单个总线,相应的只具有一个总线号。在引入存储网络之后,每个光纤通道HBA(Host Bus Adapter)或iSCSI(Internet SCSI)网卡也都连接一条总线,分配一个总线号,在它们之间依靠不同的总线号加以区分。

目标设备标识在一条总线菊花链上的单个设备,逻辑单元号则表示一个目标设备中的一个子设备。通常,单个物理磁盘只具有一个逻辑单元号,而RAID磁盘阵列虽然也只有一个目标设备,却有多个逻辑单元号。

在一条总线上的各个设备具有不同的优先级。起初的SCSI协议只允许有8个目标设备ID,规定ID7具有最高权限。后来版本的SCSI协议允许有16个不同的目标设备ID。出于兼容性的考虑,从7到0的目标设备依然具有高优先级,而从15到8的设备ID具有较低优先级。

设备(服务器和存储设备)在可以通过SCSI总线发送数据之前必须预定总线(仲裁)。在总线的仲裁期间,具有最高优先权的目标设备总能获胜。在总线负载重的情况下,这可能导致具有较低优先级的设备总是不被允许发送数据,因此,SCSI的仲裁过程是不平等的。

出于配置和管理的需要,操作系统使用总线号/目标设备ID/逻辑单元号三元组来标识一个SCSI目标,然而,用户和应用程序所看到的只是一个逻辑标识符,如D盘。因此在总线号/目标设备ID/逻辑单元号和逻辑盘符之间存在着一个映射,提供在物理设备和上层文件系统之间不同表示形式的转换。

6)交互方式

SCSI协议把发起方(主机)和目标方(例如磁盘)之间的交互定义为客户/服务器方式。应用客户位于主机中,代表上层应用程序、文件系统和操作系统的I/O请求。设备服务器位于目标设备中,它响应客户的请求。请求和响应通过某种形式的下层分布设施进行传输,该分布设施称做分布子系统,可以是并行电缆,也可以是光纤通道协议或iSCSI。

一个发起方可能会有多个请求同时发给目标方,多个请求产生应用客户的多个实例,从而在设备服务器上产生多个事务。

发起方在其发往一个或多个目标的多个请求正在被相关的设备服务器处理的时候,需要能够执行上下文交换(Context Switching),即具有从一个任务快速切换到另一个任务的能力。例如,作为一个发起方的文件服务器,可以向一个目标方发送一个写请求。当该文件服务器在等待这个目标方准备好缓冲区以接收数据的那段时间内,可以切换到另一个挂起的任务,例如处理已经到达的对先前的另一个请求的响应,从而提高运行效率和最大化吞吐量。如果SCSI任务只能依次串行地执行,那么等待每个写或读请求完成的时间就都被白白地浪费了。一般来说,上下文交换是由主机适配卡完成的,可以是并行SCSI,也可以是光纤通道或iSCSI。

由于SCSI体系结构模型是层次化的,因此它对主机I/O请求的处理可以独立于底层的分发子系统。一个应用客户主机可以处理涉及不同种类的目标设备的I/O操作,例如,一个应用服务器可以有直接附接的SCSI目标方,也可以有通过千兆位速率接口连接的串行SCSI目标方。

在SCSI发起方和目标方之间读写数据是通过SCSI命令、分发请求、分发操作和响应来完成的。SCSI命令和参数在CDB(Command Descriptor Block,命令描述块)中指定。作为交互示例,在执行对磁盘的SCSI写过程时,在发起方(例如主机总线适配器)创建一个应用客户,该客户发送SCSI命令请求给目标方,令其准备缓冲区以接收数据。目标设备服务器在其缓冲区准备好之后,发送一个数据分发操作请求进行响应。接着,发送方就执行分发操作,开始发送数据块。依赖于底层的分发子系统,数据块可能按字节并行传输(例如并行SCSI总线),也可能以分段成帧的形式串行传输(例如光纤通道或iSCSI)。

从应用程序或操作系统的角度看,写操作只是一个事务。但实际上,对应一个写操作,发送方和目标方可能要进行多次的分发请求和分发操作的交互,才能把命令请求的所有数据都发送给目标方。

在一次读操作中,SCSI命令块遵循相反的数据分发请求和确认序列,然而由于是发起方发出读命令,所以命令就假定自己已经准备好了缓冲区以接收第一批数据块。在读写事务的每个阶段所发送的数据块数量,由发起方和目标方根据对方的缓冲区容量协商决定。例如,高性能磁盘阵列一般都能提供较大的缓冲区,可以完成大规模的数据传送,从而提高了产品性能。

(4)SATA

SATA是Intel公司在IDF2000大会上推出的,该技术可以让用户拥有高效能的硬盘,却不必牺牲资料的完整性。SATA最大的优势是传输速率高。SATA的工作原理非常简单,采用连续串行的方式来实现数据传输从而获得较高传输速率。2003年发布的SATA1.0规格提供的传输率就已经达到了150MB/s,不但已经高出普通IDE硬盘所提供的100MB/s,甚至超过了133MB/s的最高传输速率。

SATA在数据可靠性方面也有了大幅度提高。SATA可同时对指令及数据封包进行循环冗余校验(CRC),不仅可检测出所有单比特和双比特的错误,而且根据统计学的原理,这样还能够检测出99.998%可能出现的错误。相比之下,PATA只能对来回传输的数据进行校验,而无法对指令进行校验,加之高频率下干扰甚大,因此数据传输稳定性很差。

除了传输速度、传输数据更可靠外,节省空间是SATA最具吸引力之处,更有利于机箱内部的散热,线缆间的串扰也得到了有效控制。不过,SATA1.0规范存在不少缺点,特别是缺乏对于服务器和网络存储应用所需的一些先进特性的支持。比如在多任务、多请求的典型服务器环境里面,SATA1.0硬盘的确会有性能大幅度下降、可维护性不强、可连接性不好等缺点。这时,SATA2.0在这方面得到了很好的补充。

在SATA2.0扩展规范中,3Gbit/s被提到的频率最高。由于SATA使用8bit/10bit编码,所以3Gbit/s等同于300MB/s的接口速率。不过,从性能角度看,3Gbit/s并不能带来多大的提升,即便是RAID应用的场合,性能提升也没有想象的那么大。因为硬盘内部传输速率还达不到与接口速率等同的程度,而且接口速率的影响也不是很大,在大多数应用中,硬盘是将更多的时间花在寻道上,而不是传输上。接口速率的提高直接影响到的是从缓存进行读写的操作,所以理论上大缓存的产品会从3Gbit/s上得到更大的好处。从现有情况来看,相信3Gbit/s的普及速度会加快,不过市场仍会存在一个1.5Gbit/s和3Gbit/s的共存期。

(5)SAS

SAS(Serial Attached SCSI,即串行连接SCSI)是新一代的SCSI技术,和现在流行的SerialATA(SATA)硬盘相同,都是采用串行技术以获得更高的传输速度,并通过缩短连接线改善内部空间等。SAS是并行SCSI接口之后开发出的全新接口。此接口的设计是为了改善存储系统的效能、可用性和扩充性,并且提供与SATA硬盘的兼容性。

SAS的接口技术可以向下兼容SATA。具体来说,两者的兼容性主要体现在物理层和协议层的兼容。在物理层,SAS接口和SATA接口完全兼容,SATA硬盘可以直接使用在SAS的环境中,从接口标准上而言,SATA是SAS的一个子标准,因此,SAS控制器可以直接操控SATA硬盘,但是SAS却不能直接使用在SATA的环境中,因为SATA控制器并不能对SAS硬盘进行控制;在协议层,SAS由3种类型协议组成,根据连接的不同设备使用相应的协议进行数据传输。其中,串行SCSI协议(SSP)用于传输SCSI命令,SCSI管理协议(SMP)用于对连接设备的维护和管理,SATA通道协议(STP)用于SAS和SATA之间数据的传输。因此在这3种协议的配合下,SAS可以和SATA以及部分 SCSI设备无缝结合。

SAS系统的背板既可以连接具有双端口、高性能的SAS驱动器,也可以连接高容量、低成本的SATA驱动器。所以,SAS驱动器和SATA驱动器可以同时存在于一个存储系统之中。但需要注意的是,SATA系统并不兼容SAS,所以SAS驱动器不能连接到SATA背板上。由于SAS系统的兼容性,用户能够运用不同接口的硬盘来满足各类应用在容量上或效能上的需求,因此在扩充存储系统时拥有更多的弹性,让存储设备发挥最大的投资效益。

在系统中,每一个SAS端口可以最多可以连接16256个外部设备,并且SAS采取直接的点到点的串行传输方式,传输的速率高达3Gbit/s,估计以后会有6Gbit/s乃至12Gbit/s的高速接口出现。SAS的接口也做了较大的改进,它同时提供3.5英寸和2.5英寸的接口,因此能够适合不同服务器环境的需求。SAS依靠SAS扩展器来连接更多的设备,扩展器以12端口居多,不过,根据板卡厂商产品研发计划显示,未来会有28端口、36端口的扩展器引入,来连接SAS设备、主机设备或者其他的SAS扩展器。

和传统并行SCSI接口比较起来,SAS不仅在接口速度上得到显著提升(主流Ultra320SCSI速度为320MB/s,而SAS才刚起步速度就达到300MB/s,未来会达到600MB/s甚至更快),而且由于采用了串行线缆,不仅可以实现更长的连接距离,还能够提高抗干扰能力,并且这种细细的线缆还可以显著改善机箱内部的散热情况。

(6)Fibre Channel

Fibre Channel(光纤通道)是以铜缆或光缆串行通信,为服务器与存储设备之间提供高速连接的一组标准,由美国国家标准研究所(ANSI)开发。光纤通道通常用于连接一个SCSIRAID(或其他一些比较常用的RAID类型),以满足高端工作站或服务器对高数据传输率的要求。

光纤通道能提供1Gbit/s、2Gbit/s、4Gbit/s、甚至8Gbit/s、10Gbit/s的速率和100Mbit/s、200Mbit/s、400Mbit/s、800Mbit/s等实际带宽,理论极限值可达1.06Gbit/s。

光纤光学电缆支持最长的长度超过了10km,SCSI最长接口电缆不得超过12m。但是光纤材料非常贵,限制了它在实际应用中的普及。

(7)IEEE 1394

IEEE 1394的前身称为Fire Wire(火线),Apple公司把这样一项接口技术称为Fire Wire,而Sony公司称之为i.Link,Texas Instruments公司称之为Lynx。

Firewire技术标准于1987年由Apple公司完成,IEEE在1995年确认其为IEEE1394-1995接口标准。

IEEE 1394是为了增强外部多媒体设备与计算机连接性能而设计的高速串行总线,传输速率可以达到400Mbit/s,利用IEEE1394技术可以轻易地把计算机和如摄像机、高速硬盘、音响设备等多种多媒体设备连接。

新版的IEEE1394b标准规定它的单信通带宽为800Mbit/s,是原来的IEEE1394a标准的两倍。IEEE1394接口标准优点:即时数据传输(Real-Time Data Transfer),支持热插拔,驱动程序安装简易,数据传输速度快(1394a标准都可提供400Mbit/s的传输速率),并且具备通用I/O连接头,点对点的通信架构。同时,IEEE1394具有技术使用费贵的致命缺点。IEEE1394支持IEEE1394的硬盘适配器。

(8)USB

通用串行总线(Universal Serial Bus,USB)是1994年年底由Compaq、IBM、Microsoft等多家公司联合提出,广泛地应用于硬盘驱动器、打印机、扫描仪、数码相机等数码设备,现在最新版本为3.0。

—个USB接口理论上可以连接127个USB设备,其连接的方式也十分灵活,既可以使用串行连接,也可以使用Hub把多个设备连接在一起,再同PC的USB接口相接。

另外,USB不需要单独的供电系统,而且支持热插拔,不会涉及IRQ冲突问题,不会争夺其他周边的有限资源。USB2.0标准带宽达到480Mbit/s,USB3.0标准的带宽达到了5~10Gbit/s。

综上所述,USB接口具有价格低廉、连接简单快捷、兼容性强、很好的扩展性、支持即插即用、支持热插拔、高传输速率等诸多明显优点,是目前应用最为普遍的一种接口技术。

3.磁盘数据存储格式

本节将从硬盘的格式化和分区、硬盘分区结构和硬盘数据结构三部分进行介绍。

(1)格式化和分区

刚生产的硬盘无法立刻就用来存储资料,必须进行低级格式化、分区和高级格式化。在硬盘出现物理故障或逻辑损伤时也要进行这些工作。

低级格式化,就是将空白的磁盘划分出柱面和磁道,再将磁道划分为若干个扇区,每个扇区又划分出标识部分 ID、间隔区GAP和数据区DATA等。目前,所有硬盘厂商在产品出厂前,都已经对硬盘进行了低级格式化。低级格式化对硬盘的损耗大,将大大缩短硬盘的使用寿命,因此,一般不要进行低级格式化。

低级格式化有两种方法:一是通过主板BIOS中所支持的功能,但是现在的主板一般都不带有此项功能;二是使用专用的软件进行。

低级格式化以后还需要对硬盘进行分区。分区是把一整块硬盘根据使用需要,分成不同的区域来存放数据,以加块读写数据的时间和方便管理。分区把一个硬盘划分成不同的区域,用来存放不同的文件系统。Partition Magic是一个分区软件,Windows安装程序也具有分区和格式化功能。可以创建多个DOS分区、非DOS主分区以及非DOS分区,通常需要指定一个活动(主)分区,用以存放主引导系统。

每一个分区又可以进一步划分成多个逻辑分区。DOS分区用来安装Windows操作系统,非DOS分区用来安装Linux、UNIX等操作系统。通常指定主DOS分区为活动分区来引导系统,也就是通常的逻辑盘C盘,在Linux下命名是hda1。逻辑分区命名为D、E、F等,在Linux下命名是hda5、hda6、hda7等。

分区以后需要进行高级格式化,或者是逻辑格式化,也就是通常所说的格式化。格式化就是在物理驱动器(硬盘)的所有数据区上写零的操作过程,同时对硬盘介质做一致性检测,并且标记出不可读和坏的扇区。不同的操作系统将格式化成不同的文件系统。一般情况下,一个操作系统不能识别其他操作系统格式化的磁盘。

Windows操作系统可以格式化为FAT16、FAT32、NTFS等文件系统,而Linux操作系统可以格式化为ext2、ext3、reiserfs等文件系统。Windows格式化命令是format,Linux的格式化命令是mkfs。不同的文件系统具有不同的文件存储格式。

(2)硬盘分区结构

硬盘的分区参数存储在一个被称为主引导扇区(MBR)的特殊存储空间中,这就是硬盘的0磁头0柱面1扇区。这个存储空间具有512字节,前446字节用于存放引导程序,后64字节称为硬盘分区表(DiskPartitionTable,DPT),最后2字节是“55AA”为分区结束标志。DPT用16字节描述一个分区,因而,64字节最多描述4个分区数据,显然不能满足需求(多分区需要,每个分区极限容量不足)。因此Windows采用一种称为虚拟MBR的混合分区数据保存结构,虚拟MBR把磁盘分成一个主DOS分区,其余除DOS分区以外的容量都定义为DOS扩展分区,以分区链的方式管理分区。

·主分区数据存储在MBR的DPT中的第一项,第二项是扩展分区表的起始位置,这个起始位置指向硬盘的某一个扇区,后面为非DOS分区参数。

·扩展分区表:DPT第二项指出扩展分区表的位置,扩展分区表的第一项描述第一逻辑分区的信息,如果还有其他分区,则扩展分区表的第二项将指向下一个扩展分区表的位置。类似地,第二扩展分区表的第一项描述第二逻辑分区,第二项指向下一个扩展分区表(如果存在的话)的位置,继续下去,这样形成了一个分区链。

·非DOS分区:系统允许建立2~3个非DOS分区,用于建立其他操作系统的存储和管理区域。

包含4个逻辑磁盘的分区数据存储结构如图15-1所示。

图15-1 有4个逻辑磁盘的分区数据存储结构

由此可见,逻辑磁盘实际上就是一个独立的分区,只不过分区的参数不是存储在主引导扇区中,而是存储在各个分区的第一个扇区中。通过存储在主引导扇区中的扩展分区参数,按单向链表的方式可以逐个访问到逻辑磁盘的分区参数。

主引导扇区的分区表与扩展分区的分区表项数据结构完全相同。

DPT表项结构如下。

第1字节:自举标志,80为活动分区,00为普通分区。

第2字节:起始磁头号。

第3字节:起始扇区号。

第4字节:起始柱面号。

第5字节:分区格式标志。

第6字节:终止磁头号。

第7字节:终止扇区号。

第8字节:终止柱面号。

第9~12字节:本分区之前已用扇区数。

第13~16字节:本分区扇区总数。

常用的分区格式标志如下。

00 空白。

01 DOSFAT12。

04 06:DOSFAT16。

05 扩展。

07 OS/2HPFS。

0b Windows95FAT32。

0c Windows95FAT32(LBA)。

0e Windows95FAT16(LBA)。

Of Windows95扩展(LBA)。

51 Novell。

64 NovellNetware286。

65 NovellNetware386。

81 Linux/MINUX。

82 Linux交换区。

83 LinuxNative。

85 Linux扩展。

如图15-2所示为主分区表的数据实例。

图15-2 主分区表数据实例

每行16字节为一个分区表项。第一个分区(第一行)自举标志80H表示为活动分区,分区格式标志06H表示是DOS系统,即C盘;第二个分区(第二行)分区格式标志为05H,说明该分区是扩展DOS分区。下一个分区表的起始磁头为0头,起始柱面为99H=153D,起始扇区为1扇区。第三、四个分区数据均为00H,没有定义。

了解硬盘分区、逻辑磁盘的构成和分区的数据存储结构,对数据恢复具有关键作用。

(3)硬盘的数据结构

硬盘上的数据按照其不同的特点和作用大致可分为MBR区、DBR区、FAT区、DIR区和DATA区5部分。

1)MBR区

MBR(Main Boot Record,即主引导记录)区位于整个硬盘的0磁道0柱面1扇区。引导扇区共512字节,MBR用了446字节,另外64字节用于DPT,最后2字节“55AA”是分区的结束标志。

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

2)DBR区

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

3)FAT区

在DBR之后的是FAT(File Allocation Table,文件分配表)区。在解释文件分配表的概念之前,先看簇(Cluster)的概念。文件占用磁盘空间时,基本单位不是字节而是簇。簇的大小与磁盘的规格有关,一般情况下,软盘每簇是1个扇区,硬盘每簇的扇区数与硬盘的总容量大小有关,可能是4、8、16、32、64等。

同一个文件的数据不一定完整地存放在磁盘的一个连续的区域内,往往会分成若干段,这样就需要一条指示段连接的链子。这种存储方式称为文件的链式存储。硬盘上的文件常常要进行创建、删除、增长、缩短等操作。这样的操作做得越多,盘上的文件就可能被分得越零碎(每段至少是1簇)。但是,由于硬盘上保存着段与段之间的连接信息,操作系统在读取文件时,总是能够准确地找到各段的位置并正确读出。这种以簇为单位的存储法的一个缺陷是每个文件的最后一簇可能有未被完全利用的空间(称为尾簇空间)。一般来说,当文件个数比较多时,平均每个文件要浪费半个簇的空间。

为了实现文件的链式存储,硬盘上必须准确地记录哪些簇已经被文件占用,还必须为每个已经占用的簇指明存储后继内容的下一个簇的簇号,对一个文件的最后一簇,则要指明本簇无后继簇。这些都是由FAT表来保存的,表中有很多表项,每项记录一个簇的信息。

由于FAT对于文件管理的重要性,所以FAT有一个备份,即在原FAT的后面再建一个同样的FAT。—般情况下,格式化后FAT中所有项都标明为“未占用”,但如果磁盘有局部损坏,那么格式化程序会检测出损坏的簇,在相应的项中标为“坏簇”,以后存文件时就不会再使用这个簇了。FAT的项数与硬盘上的总簇数相当,每一项占用的字节数也要与总簇数相适应,因为其中需要存放簇号。

FAT的格式有多种,Windows操作系统中,最为常见的是FAT16和FAT32,其中FAT16表示使用16位数字描述文件分配表表项。由于16位的分配表最多能管理65536个簇,即FAT16所规定的一个硬盘分区最多有65536个簇。另外,每个簇的存储空间最大为32KB,所以FAT16分区的最大存储容量为65536*32KB=2048MB,即2GB。在使用大硬盘时,必须把它分成最大2GB的逻辑盘。为了使用更大的逻辑分区,微软公司从Windows 95 OSR2版本开始使用FAT32标准,可以计算得知,FAT32每个分区容量最大可达65GB以上。由于具有富裕的表项,所以,在FAT32中可以通过减小簇的长度来减少尾簇空间的浪费。

4)DIR区

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

5)DATA区

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

教程类别