《鸟哥的Linux私房菜:基础学习篇》阅读笔记(二)

读了一下第二章主机规划与磁盘分区,记个笔记,以下:

目录

(一)MSDOS (MBR) 分区表格式与限制

(二)GPT 磁盘分区表

(三)开机流程中的 BIOS


(一)MBR 分区表格式与限制

在Linux系统中,每个设备都被当成一个文件来对待,每个设备都有设备文件名。磁盘设备文件名通常分为两种,实际SATA/USB设备文件名为/dev/sd[a-p],而虚拟机的设备可能为/dev/vd[a-p]。

磁盘的组成主要有盘片、机械手臂、磁头与主轴马达所组成, 而数据的写入其实是在盘片上面。盘片上面又可细分出扇区(Sector)与磁道(Track)两种单位, 其中扇区的物理量设计有两种大小,分别是 512Bytes 与 4KBytes。

磁盘的第一个扇区,主要记录了两个重要的信息,分别是: (1)主要开机记录区(Master Boot Record, MBR):可以安装开机管理程序的地方,有446 Bytes (2)分区表(partition table):记录整颗硬盘分区的状态,有64 Bytes。

由于分区表就只有64 Bytes而已,最多只能容纳四笔分区的记录, 这四个分区的记录被称为主要(Primary)或拓展(Extended)分区。磁盘的 MBR 分区方式中,主要与拓展分区最多可以有四个,逻辑分区的设备文件名号码,一定由5号开始。分区的最小单位“通常”为柱面(cylinder)。

为什么要分区?

  • 因为每个分区的数据是分开的!所以,当你需要将某个分区的数据重整时,可以将其他重要数据移动到其他分区,让你的数据更安全。
  • 由于分区将数据集中在某个柱面的区段,当有数据要读取自该分区时,将有助于数据读取的速度与性能。

拓展分区和逻辑分区

虽然第一个扇区所在的分区表只能记录四笔数据(硬盘的限制), 但可利用额外的扇区来记录更多的分区信息,而延伸分区最多只能有一个(操作系统的限制)。拓展分区本身并不能被拿来格式化,逻辑分区是由延伸分区持续切割出来的分区,逻辑分区的数量依操作系统而不同,在Linux系统中SATA硬盘已经可以突破63个以上的分区限制。

MBR的限制

MBR 分区表除了上述的主分区、拓展分区、逻辑分区需要注意之外,由于每组分区表仅有 16Bytes 而已,因此可纪录的信息相当有限。 所以,在过去 MBR 分区表的限制中经常可以发现如下的问题:

  • 操作系统无法抓取到 2.2T 以上的磁盘容量。
  • MBR 仅有一个区块,若被破坏后,经常无法或很难救援。
  • MBR 内的存放开机管理程序的区块仅 446Bytes,无法容纳较多的程序码。

(二)GPT 磁盘分区表

为了解决上述问题,当磁盘容量大于 2TB 以上时,系统会自动使用 GPT 分区方式来处理磁盘分区。GPT 分区已经没有拓展与逻辑分区的概念,每一个分区都可以格式化使用,可以认为所有的分区都是主分区。在扇区的定义上面, 大多会使用所谓的逻辑区块位址(Logical Block Address, LBA)来处理。GPT 将磁盘所有区块以此 LBA(默认为 512Bytes ) 来规划,而第一个 LBA 称为 LBA0 (从 0 开始编号)。

与 MBR 仅使用第一个 512Bytes 区块来纪录不同, GPT 使用了 34 个 LBA 区块来纪录分区信息! GPT 除了前面 34 个 LBA 之外,整个磁盘的最后 33 个 LBA 也拿来作为另一个备份!详细的结构如下:

《鸟哥的Linux私房菜:基础学习篇》阅读笔记(二)_第1张图片

  • LBA0 (MBR 相容区块)

    与 MBR 模式相似的,这个相容区块也分为两个部份,一个就是跟之前 446 Bytes 相似的区块,储存了第一阶段的开机管理程序! 而在原本的分区表的纪录区内,这个相容模式仅放入一个特殊标志的分区,用来表示此磁盘为 GPT 格式之意。

  • LBA1 (GPT 表头纪录)

    这个部份纪录了分区表本身的位置与大小,同时纪录了备份用的 GPT 分区 (就是前面谈到的在最后 34 个 LBA 区块) 放置的位置, 同时放置了分区表的检验机制码 (CRC32),操作系统可以根据这个检验码来判断 GPT 是否正确。若有错误,还可以通过这个纪录区来取得备份的 GPT(磁盘最后的那个备份区块) 来恢复 GPT 的正常运行!

  • LBA2-33 (实际纪录分区信息处)

    从 LBA2 区块开始,每个 LBA 都可以纪录 4 笔分区纪录,所以在默认的情况下,总共可以有 4*32 = 128 笔分区纪录喔!因为每个 LBA 有 512Bytes,因此每笔纪录用到 128 Bytes 的空间,除了每笔纪录所需要的识别码与相关的纪录之外,GPT 在每笔纪录中分别提供了 64bits 来记载开始/结束的扇区号码,因此,GPT 分区表对于单一分区来说, 他的最大容量限制就会在“ 264 512Bytes = 263 1KBytes = 233TB = 8 ZB ”,要注意 1ZB = 230TB 啦! 你说有没有够大了?

(三)开机流程中的 BIOS

CMOS是记录各项硬件参数且嵌入在主板上面的储存器,BIOS则是一个写入到主板上的一个固件(再次说明, 固件就是写入到硬件上的一个软件程序)。BIOS就是在开机的时候,计算机系统会主动执行的第一个程序。

接下来BIOS会去分析计算机里面有哪些储存设备,我们以硬盘为例,BIOS会依据使用者的设置去取得能够开机的硬盘, 并且到该硬盘里面去读取第一个扇区的MBR位置。 MBR这个仅有446 Bytes的硬盘容量里面会放置最基本的开机管理程序, 此时BIOS就功成圆满,而接下来就是MBR内的开机管理程序的工作了。

这个开机管理程序的目的是在载入(load)核心文件, 由于开机管理程序是操作系统在安装的时候所提供的,所以他会认识硬盘内的文件系统格式,因此就能够读取核心文件, 然后接下来就是核心文件的工作,开机管理程序与 BIOS 也功成圆满,将之后的工作就交给大家所知道的操作系统啦!

简单的说,整个开机流程到操作系统之前的动作应该是这样的:

  1. BIOS:开机主动执行的固件,会认识第一个可开机的设备;
  2. MBR:第一个可开机设备的第一个扇区内的主要开机记录区块,内含开机管理程序;
  3. 开机管理程序(boot loader):一支可读取核心文件来执行的软件,boot loader的功能主要有:提供菜单、载入核心、转交控制权给其他loader;
  4. 核心文件:开始操作系统的功能...

参考链接:

2.2 磁盘分区 | 鸟哥的 Linux 私房菜:基础学习篇 第四版

你可能感兴趣的:(小知识,Linux基础,磁盘分区管理,MBR,GPT)