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