《硬盘的逻辑构造》由会员分享,可在线阅读,更多相关《硬盘的逻辑构造(13页珍藏版)》请在金锄头文库上搜索。
1、计算机是如何从硬盘引导操作系统计算机是如何从硬盘引导操作系统 WindowsWindows,LinuxLinux 的?的? 硬盘的逻辑结构介绍硬盘的逻辑结构介绍 作者:作者: 概要概要:结合本人实际使用的笔记本电脑情况,对计算机硬盘的分区基本知识,操作系统的引导(计算机的启动)过程,文件系统格式的主要区别等计算机基础知识进行了较详细说明,重要内容配有实际详细截图,即使没有计算机基础知识也可以一目了然,读后茅塞顿开,原来每天使用的计算机是这样启动滴!能给非计算机专业用户普及知识,计算机专业人员些许资料参考,深感安慰。本文所有的分区说明均以 Windows 文件系统为参照,其他文件系统格式请慎重参
2、考。 Key words(Key words(关键字关键字): ): Disk(磁盘), Partition(分区), MBR(Master Boot Record/主引导区), PBR(Partition Boot Record/分区引导区), EPBR(Extension Partition Boot Record) Cylinder(柱面),Sector(扇区),Head(磁头),CHS(Cylinder Head Sector), 主分区(primary partition),扩展分区(extension partition), 逻辑分区(logical partition),活动分区
3、(active partition), 文件系统(File System),文件系统格式(File System Type) 双系统(dual boot) IPL(Initial Program Loader) MFT(Master File Table) 一,一,硬盘保存数据的基本知识硬盘保存数据的基本知识 硬盘(Hard Disc)的名称由来主要是相对于软盘而来,计算机大发展的前期,保存数据用的媒介主要有软盘,硬盘。硬盘是将带有磁性的多枚碟片封存在硬质壳体内,对外 (计算机) 用标准接口 (IDE、SCSI、SATA、SAS,光纤等) 来进行连接,交换数据。为了保存数据,硬盘的物理及逻辑单
4、元划分非常重要,早期的时候,主要的划分参数跟物理构造是密不可分的。发展到现在,硬盘的物理构造(图 1.1)已经发生了结构性的变化,但对硬盘的主要参数(用于保存数据的逻辑,控制等)依然沿用了早期的术语,虽然实际物理硬盘中不一定有对应的事物。下面对几个主要概念进行介绍。 1 1, 简单的物理原理图(图简单的物理原理图(图 1.21.2) 虽然今天的硬盘物理构造千差万别,但存取数据的逻辑构造依然沿用了早期确定下来的标准,主要有三个参数: CylinderCylinder:柱面,:柱面, HeadHead:磁头数,:磁头数, SectorSector:扇区:扇区。 图1.2中的Platter俗称碟片,
5、或者盘片,每一枚盘片上均配有一个磁头用于读取存储在盘片上的数据,想象一下看 VCD 或 DVD 时的盘片,它只有一面保存数据,所以只有一个磁头(Head)。碟片可以高速转动,而磁头固定在沿碟片圆心到外缘边际的任意一处半径上,可以沿半径向内靠近圆心,或向外到达碟片图 1.1 硬盘的内部物理构造 图 1.2 硬盘的逻辑示意图 的最外缘。这样碟片上的一个个同心圆就叫做磁道(Track)。限于磁头的物理大小,磁道之间必须留有间隔(很小)以防止不同磁道之间的错位读取。物理碟片高速旋转时,磁头就沿着磁道读写数据。再说磁头(Head),硬盘中有上百枚盘片通过中间的旋转轴串起来,相邻上下盘片之间留有空隙用以设
6、置磁头来读取盘片上的数据。这样,有多少盘面(双面盘片)就有多少磁头。盘面数等于磁头数。 每个盘片都被磁头划分为数目相等的磁道,并从外缘的“0”开始编号,所有盘片上具有相同编号的磁道在立体空间中可以形成一个圆柱体,称之为磁盘的柱面(Cylinder)。磁盘的柱面数与单片盘面上的磁道数是相等的。 磁盘上的每个磁道被等分为若干个弧段,这些弧段便是磁盘的扇区(Sector),每个扇区可以存放 512 个字节(byte=8 位/bit)的二进制数据,磁盘驱动器以扇区为单位向磁盘读取和写入数据。即使最小的文件,只有几个字节也会占用 512 字节的存贮空间。注意不是每个磁道都拥有相同的扇区,越靠近圆心的磁道
7、划分的扇区数越少。即越靠近圆心的磁道,每道保存的数据越少。顺便说明一下,目前所有 PC 兼容机的块输入输出设备的 sector 大小均为 512Bytes。 所谓硬盘的 CHS,即 Cylinder(柱面)、Head(磁头)、Sector(扇区),只要知道了硬盘的 CHS 的数目,即可确定硬盘的容量,硬盘的容量=柱面数磁头数扇区数512Byte。 那么 CHS 的基本参数是多少呢?以本人使用的计算机为例,各参数的值如下: Cylinder 数= 19457 个。 Head 数= 最大为 255,目前硬盘的磁头一般为 255 个,即有约 128 枚双面盘片。 Sector 数= 63,(?平均值
8、)外缘扇区数应该比此值大,内缘扇区数应该比此值小。 2 2, 硬盘的容量计算硬盘的容量计算 磁盘的容量大小主要取决于柱面数(Cylinder),即磁道的密度。磁头(Head)和扇区(Sector)数基本上是固定的。那么根据图 1.3 的参数来计算一下硬盘的容量吧: 总柱面数:19,457 总扇区数:63 磁头书:255 512Bytes/sector = 160,039,272,960 Bytes 即 160GB。注:Ubuntu Linux 的字节数单位换算采用了 10 进制,例:1GB=1000MB,1MB=1000KB,1KB=1000Bytes,所以上面的磁盘容量显示为 160GB,而
9、不是以前Windows 采用的 1024 进制下的149GB。1024 进制下1GB=1024MB,1MB=1024KB,1KB=1024Bytes。 图1.4为同一硬盘在Windows下看到的磁盘相关参数。也可以看到其他信息如主分区,扩展分区等重要信息,随后详解。 需要注意一下 CHS 的次序,逻辑上是先扇区 (最小存储单位) ,再磁头,后柱面。为了统一编号,将所有的扇区从 0 柱面,0 磁头,1 扇区(注意:Sector 的起始编号为 1)开始一直编号到 19457 柱面,255 磁头,63 扇区即 19,54725563=312,576,705 。Windows 下显示的硬盘分区信息是按
10、照扇区的开始坐标(Start 列)结束坐标(End 列)来定位的。而 Linux 下仅给出了开始柱面(始点)结束柱面(终点)的信息,并不代表整个柱面上的扇区或磁头都给某分区。 图 1.3 Linux 下显示的硬盘参数 3 3, 磁盘的分区(磁盘的分区(PartitionPartition) 硬盘使用前必须创建分区,即在上面定义好文件系统格式用于保存以文件形式组织的数据。整个硬盘可以只有一个分区,也可以分为若干个分区。图 1.3,1.4,1.5 均显示了硬盘的详细分区情况。所谓分区并不是物理上将硬盘划分为几个独立的数据存储区域,而是从理论上将硬盘划分为几个看似互不干扰,各自独立的区域,Windo
11、ws系统中表现为几个逻辑硬盘(C,D,E,F 等),Linux 中表现为加载了几个文件系统(加载目录不同)。磁盘分区的目的或者优点如在于: 以分区为单位管理(访问控制)硬盘后,一个分区的故障损坏并不会影响其他分区的数据访问,这样可以将故障局限于某一范围内,最大限度地保护磁盘上的其他数据。例如,将操作系统,公司数据,客户数据,个人数据等安装或保存到不同的磁盘,可以最大限度地保护数据的安全性。 不同分区可以安装不同操作系统(如 Windows,Linux 包括不同版本),这样一台机器就可以同时适用不同的使用开发环境要求,最大限度地利用硬件资源,避免浪费。对于许多开发者来说,这一点是必备的。 不同分
12、区可以定义读写的最小字节单位,便于容纳大量小型文件(i-node 设高限)节约磁盘空间,也可以根据文件的读写性质来优化物理资源,如有的分区只保存只读的数据,将此分区可以设为只允许读操作。 另外,也利于目前作为数据安全必需的文件或磁盘加密软件的安装运行维护。这一点在当下的计算机使用中显得尤为突出(详细参见本人另外的文章)。 图 1.5 Ubuntu 下显示的硬盘分区情况 图 1.4 windows/Vista 下用 Acronis 工具分析的磁盘容量和分区情况 3.13.1,Partition/Partition/分区的种类及分区的种类及它们之间的区别它们之间的区别 分区的方法可以按照主流操作系
13、统的种类定义为 2 大类,即 Unix(Linux)分区方法和 Windows 分区方法。后面要说的文件系统格式分类也主要是由操作系统的种类产生的。 Unix/Linux 的分区种类: 物理分区 逻辑分区(虚拟分区),有时叫逻辑卷 Windows(PC/AT)的分区种类: 主分区(primary partition) 扩展分区(extended partition): 只用来容纳其他的逻辑分区,实际上不直接用于保存数据。图 1.5 中显示的 sda3 分区即是。它容纳了 33GB 不明空间(Windows 下的 F 盘)+Linux 安装分区(ext3)+Linux swap 交换区。 逻辑分
14、区(Logical Partition) 同一个硬盘既可以挂载到 Windows 下,也可以挂载到 Unix/Linux 下,同样的分区会有不同的叫法,但分区容纳的数据不会有任何不同。对照图 1.4,图 1.5 你就会明白它们之间的一一对应关系。下面来分析分区的区别。 对于Windows/DOS系统来说,一个物理硬盘最多只能分割为4个Partition (可以设想几种最大组合:4个主分区,3 个主分区+1 个扩展分区(含 1 个逻辑分区),3 个主分区+1 个扩展分区(含 n 多个逻辑分区)等)。Windows 下的分区限制主要有: a),一个硬盘最多可以有 4 个分区(主分区+扩展分区的总数
15、 4); b),4 个分区中只能有一个活动分区; c),扩展分区只能用来包含逻辑分区,用户不能直接对扩展分区进行数据的存取操作(不分配逻辑驱动盘符),读写时必须通过逻辑分区来操作; d),一个物理硬盘上只能有一个扩展分区; e),一个扩展分区只能包含一个逻辑分区,但可以在扩展分区中嵌套扩展分区。扩展分区包含多个逻辑分区的典型模式如图 1.6(图中红折线所框的区域表示了扩展分区的嵌套关系)。可以简单归纳出,逻辑分区的个数表明了扩展分区的嵌套层数。有多少个逻辑分区 PBR,就有多少个扩展分区 EPBR。 图 1.6 扩展分区的嵌套关系 而 Linux/Unix 的磁盘分区没有上限限制 (理论上有,
16、但实际根本用不了那么多) ,也没有扩展分区,只有逻辑分区。可以将磁盘根据需要分割n多个逻辑分区,每个分区上安装不同的文件系统来保存数据。但千万记住,Linux/Unix下的分区加载到系统里后不是以逻辑盘符来体现,而是以文件目录的形式出现(df 命令可以显示文件系统挂载情信息)。 仔细观察一下图 1.4 即可明白,Windows 下磁盘的分区为 3 个主分区: C 盘/20.14GB, D 盘/57.25GB, G 盘/12.35GB; 1个扩展分区 (含F盘/30.98GB,linux系统安装盘ext3/27.11GB,linux swap/1.21GB共3个逻辑分区) 。 图1.4中并没有扩展分区的任何信息,是因为 Windows系统下不挂载扩展分区,自然就没有任何逻辑盘符分配给它了。而 3 个逻辑盘 F,ext3,Linux swap 散布在 G