硬盘与MBR
一、硬盘的物理结构
机械硬盘(HardDisc Drive简称HDD,又称,温彻斯特式硬盘),是由一个或者多个铝制或者玻璃制的碟片组成。这些碟片外覆盖有铁磁性材料,被永久性地密封固定在硬盘驱动器中。其目前是电脑主要的存储媒介之一。
固态硬盘(SolidState Drive简称SSD),是由控制单元和固态存储单元(DRAM或FLASH芯片)组成的硬盘。
从外部看,硬盘的结构主要包括金属固定面板、控制电路板和接口三部分。
这里外部物理结构就不详细讲了!重点还是其内部结构原理,如下图:
硬盘物理结构主要是盘片、机械手臂、磁头、和主轴等组成。
盘片:存储数据信息的地方。
磁头:对盘片上数据进行读写工作。
主轴:带动盘片高速旋转,磁头就可圆周(一圈圈)相对运动方式访问盘片。
机械臂:驱动磁头径向(如从外到内方向)来回运动方式访问盘片。
信息存储:磁头中“写数据”电流产生磁场使盘片表面磁性物质状态发生改变,并在写电流磁场消失后仍能保持,这样数据信息就存储下来了。
信息读取:磁头经过盘片指定区域,盘片表面磁场使磁头产生感应电流或线圈阻抗产生变化,经相关电路处理后还原成数据信息。
问1:计算机没有人脑这么聪明,磁头又是如何知道到在那个盘片的某个“指定区域”去存储和读取数据信息的呢?
打个比喻:我要约你吃饭,中国这么大地方,得知道你具体地址(xxx省份->xxx城市->xxx路xxx号)后才能赶过来。同样道理:信息数据有具体地址,磁头才能找到它。故人们把物理硬盘在逻辑上去划分成很多个大小相等的块,再由块组织形成各个区域范围,同时标注上地址!这些就是我们接下来要谈的硬盘的逻辑结构(其由硬件厂家通过低级格式化方法实现的)!
二、硬盘的逻辑结构
硬盘通过各种硬件组装起来后,里面盘片上是空白的,可以想象成就是块“带点磁性的铁疙瘩”。
在出厂前,硬盘厂家通过调用存储其ROM中的程序(亦称“低级格式化程序”,也可以被其它程序调用,慎用!)在盘片上依据磁头大小划出很多的同心圆环(命名“磁道”),接着在每条磁道上均匀分割出相等的扇形弧块(命名“扇区”,规范每块大小512字节),并在每个扇区的标识符上记录地址信息。这就是所谓的“低级格式化”即硬盘的初始化。
由于硬盘可以由很多盘片组成,有多少个磁头就有对等的盘片,故不同盘片的相同磁道就组成了一个柱面。即磁道号就成与之对应的柱面号。
硬盘厂家给这些扇区是做了数据结构规范:通过两个主要部分(标识符、数据段)来组合成一个扇区:
标识符:主要存储地址,即是扇区三维地址,包含三个数字:磁道号、磁头号、扇区号(这里又称块号,既确定了该块在盘片的某个磁道上一圈中的所处位置)
数据段:存储数据。
低级格式化后,扇区逻辑结构图如下:
低级格式化后,得出柱面、磁道、扇区的逻辑结构关系图:
到这里我们就可以回答问1了,如下:
盘片高速旋转的扇区到来时,磁头读出每个扇区的标识符,把这些标识符中的地址信息与期待检出的磁头和柱面号做比较(即寻磁道),然后,寻找要求的扇区号。待磁盘控制器找到该扇区标识符时,根据其任务是写扇区还是读扇区,来决定是转换写电路,是写入还是读出数据信息。
依据上面的学习后,我们知道只要提供柱面号(Cylinder),磁头号(Header)、扇区号(Sector),就能唯一确定那个扇区具体位置!,512字节(B)的扇区是硬盘最小的物理存储单元(硬盘厂家出厂前通过低级格式化技术直接固定下来)。这种寻址方式称为CHS寻址方式。当然还有其它方法(LBA)。
科技在发展,硬盘容量也在不断变大,人们突然发现,当硬盘容量大于500MB左右时, CHS寻址方式来定位扇区越来越有缺陷。
举例说明:
比如我们要寻址的硬盘容量为1024×256(磁头)×63×512B =8G,原因很简单,硬盘的盘片不可能让128片盘片重叠起来吧,那会是多厚?
因此出现了新式的硬盘(单碟、双碟),即等密度盘,外圈的扇区数要比内圈多,硬盘柱面往往都大于1024个柱面,硬盘容量几百G以上,也就出现了新的寻址方式LBA。
LBA寻址方式:以扇区为单位进行的线性寻址方式,即从最外圈柱面0开始,依次将扇区号编为0、1….等等。
举例说明:
假设硬盘有1024个柱面,由于是等密度硬盘,柱面0(最外圈)假设有128个扇区,依次编号为0-127,柱面1有120个扇区,则依次编号为127-246,…..依次最内圈柱面127只有扇区64个,则编号到最后。因此要定位到硬盘某个位置,只需要给出LBA数即可。
一个512G的硬盘低格后,在物理上就能划出2的30次方个扇区。
问2:在这个有天文数字的扇区的硬盘中去找某几个扇区上存放的数据信息,不是要人命吗?真幸运,计算机速度很快,能帮上忙!搜索的范围非常大,所以会比较久,它也费了半时辰!
如果将大容量的硬盘划分多个小分区,在搜索的时候相对就会快一些,为了提高效率,更好组织与管理硬盘的使用,前辈们就提出了一个办法:称硬盘分区。
三、硬盘的分区、主引导扇区、主引导记录、分区表
如图,柱面1~400我们可以分为一个区,柱面401~900再划分为一个区,901~1400再划分为一个区,以此类推。
我们知道硬盘从外圈(柱面0)到内圈的扇区是依次编号,看似各个扇区没有什么区别。但是,这里硬盘的柱面0的第一个扇区(逻辑扇区0,CHS表示应该是0/0/1,512个字节)却是非常最重要的,记录了整个硬盘的一些重要信息,主要由以下三部分组成:
①主引导记录(MBR),占446字节,一段小程序。
②分区表(DPT),占64字节,记载各个分区的物理参数。
③硬盘有效标志(MN),占2字节,值为“55,AA”。
MBR: 一段可执行程序,一般在操作系统安装时利用分区软件(如FDISK)写入,该程序扫描所有分区表后,能辨识哪个分区为活动分区;能够加载并启动保存在活动分区中的引导程序。
分区表:
有4个分区表项,。每个占16字节
分区的最小单位是柱面,即分区是以某个某个柱面号开始到某个柱面号结束的。
关于分区表项记录的补充,见下面例子:
例:80 01 01 000BFE BF FC3F 00 00 007E 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。
如下图:
MBR、DPT、基本分区、引导扇区、扩展分区、逻辑分区之间的相互关系
请看下图:
(图来源网络)
在硬盘分区时由分区软件(如FDISK)把MBR内容写入该硬盘的第一个扇区。MBR引导程序不随操作系统的不同而不同,具有公共引导的特性,但安装某些多重引导功能的软件或LINUX的LILO时有可能改写它。
其次,MBR内容先于所有的操作系统被BIOS程序调入内存并发挥作用,BIOS把控制权移交给MBR引导程序,该程序搜索分区表(DPT)、找出活动分区,而后加载活动分区中存储在引导扇区的操作系统引导程序。
依据上面的图表3和图表4,接下来我们将谈论活动分区中的引导扇区OBR(OS BOOT RECORD)。
四、基本分区的引导扇区(DBR)
每个基本分区都有引导扇区DBR(DOS BOOT RECORD,本人认为应该是OS BOOT RECORD,即OBR),但只有被设为活动分区的引导扇区才会被MBR装入内存运行,活动。
分区引导扇区是由FORMAT高级格式化命令写到该扇区的内容;
DBR主要由下列几个部分组成:
1.跳转指令,占用3个字节的跳转指令将跳转至引导代码;
2.厂商标识和系统版本号,该部分总共占用8个字节;
3.BPB(BIOS Parameter Block, BIOS 参数块);
4.操作系统引导程序;
5.结束标志字,结束标志占用2个字节,其值为AA55
DBR中的内容除了第5部分结束标志字固定不变之外,其余4个部分都是不确定的,其内容将随格式化所用的操作系统版本及硬盘的逻辑盘参数的变化而变化。
DBR中的引导加载程序加载并启动安装在其上的操作系统(例如对Win98,定位并执行io.sys;对WinXP,定位并执行ntoskrnl.exe;对于Linux,定位并执行vmlinuz-xxx内核映像)。
MBR作为管理整个磁盘空间的一个特殊空间,它不属于磁盘上的任何分区,因而分区空间内的格式化命令不能清除主引导记录的任何信息。
安装Linux系统过程中,分区格式化程序把grub直接写进mbr硬盘的主引导记录中。
总结:低级格式化---确立硬盘的逻辑结构(柱面、磁道、扇区)
分区程序---生成硬盘的MBR引导程序、分区表、活动分区。
高级格式化---把操作系统特征写入到了活动分区的引导扇区,写入操作系统的引导程序,生成硬盘的各分区的文件系统。
PS:数据库文件需要经常读出与写入,系统安装的分区尽量划小些,让存放数据库文件的分区尽量往柱面0靠,这也是性能调优的选项,而且是物理级别的。