Linux磁盘分区

磁盘分区主要有两种分区格式,MBR和GPT。由于近年来磁盘容量的不断扩大,造成了读写上的一些困扰,甚至有些2TB以上的磁盘分区已经让某些操作系统无法存取,因此又多了一种新的磁盘分区格式GPT。

MBR(Master Boot Record)

早期磁盘中第一个扇区里面含有的重要信息我们称之为MBR。

早期为了兼容Windows的磁盘,使用的是主引导记录的方式来处理启动引导程序与分区表。这两个东西一起存放在第一个扇区。

第一个扇区通常为515字节(原本扇区都设计为512字节)。其中包含:

主引导记录(MBR):可以安装引导程序的地方,通常为446字节。

分区表(partition table):记录整个硬盘分区的状态,64字节。

分区表只有64字节,只能存在四组记录区,一组记录区16个字节

假设硬盘的设备文件名为/dev/sda时,那么这四个分区的文件名如下:

/dev/sda1

/dev/sda2

/dev/sda3

/dev/sda4

这四组划分信息称为主要分区或扩展分区(Primary 和Extended),分区的最小单位为柱面(所有磁片上的同一个磁道组成一个柱面)。

如何划分多个分区

就是利用扩展分区,如下图

P1为主分区,P2为扩展分区。

扩展分区的目的就是为了使用额外的扇区来记录分区信息,扩展分区本身并不能拿来进行格式化。

若进行格式化,只能对扩展分区内部的分区进行格式化。

这五个切出来的扩展分区,称为逻辑分区。

(这里就联想到了对Ubuntu进行安装的时候,会设置的主分区和逻辑分区,原来逻辑分区都是扩展分区,如/usr,/home,./var等)

其设备文件名如下:

P1:/dev/sda1

P2:/dev/sda2

L1:/dev/sda5

L2:/dev/sda6

​​​​​​​L3:/dev/sda7

​​​​​​​L4:/dev/sda8

L5:/dev/sda9

这里是因为前四个号码是保留给主分区或扩展分区使用的,逻辑分区只能从5开始,在这里4是没有使用的,sda3就是指整个扩展分区。

例:

这里是一个主分区,一个扩展分区,sdb3和sdb4都是保留下来未使用的。

(再次联想,我之前的Ubuntu安装分区方案就是这样P+E,一个主分区,还有一个交换分区,其他都是扩展分区)

MBR分区表的限制

1)操作系统无法使用2.2TB以上的磁盘容量

2)MBR仅有一个区块,若被破坏,经常无法或很难修复

3)MBR内存放引导程序的区块仅为446字节,无法存储较多的程序代码

GPT(GUID partion table)

之前的磁盘一个扇区为512字节,现在都有了4K扇区的磁盘。为了兼容所有的磁盘,在扇区的定义上,不使用扇区,而使用逻辑区块地址(Logical Block Address,LBA)来处理。GPT就是将所有的磁盘区块以LBA(512字节)来规划,第一个为LBA0。

MBR仅包含一个512字节的扇区,而GPT使用前34个LBA区块来记录分区信息,其中磁盘的最后34个LBA拿来作为备份。

LBA0(MBR兼容区块)

与MBR一样,分为两部分,第一部分为启动引导程序,第二部分原本为分区表的记录,在GPT中仅仅放入了一个特殊标识符,用来表示该磁盘为GPT格式。

LBA1(GPT表头记录)

用来记录分区表本身的位置与大小,还有备份的GPT分区的位置以及分区表的校验码(CRC32),操作系统可以根据这个校验码来判断GPT是否正确,若有错误使用记录区来获取备份的GPT用来恢复GPT的正确运行。

LBA2-34(实际记录分区信息)

从每个LBA2区块开始,每个LBA记录4组分区记录,因此默认可以记录4*32=128组的分区记录。

注:GPT分区没有所谓的主分区,扩展分区以及逻辑分区的概念,因为每组记录都是单独存在的,所以每个都可以视为主要分区,每一个分区都可以用来格式化使用。

BIOS

CMOS记录各项硬件参数且嵌入到主板上的存储器

BIOS是一个写入到主板的一个固件(固件就是一个写入到硬件的一个软件程序)

BIOS是启动计算机时候,启动的第一个程序。

启动流程

i)BIOS启动,认识第一个可启动的设备,在其中找到起到一个扇区的主引导记录块MBR;

ii)MBR是第一个可启动设备的第一个扇区的主引导记录块,内含启动引导程序;

iii)启动引导程序加载内核文件;

iv)内核文件开启操作系统。

启动引导程序(Boot loader)

i)提供不同的启动选项,也就是多重引导的功能;

ii)直接加载内核文件,启动操作系统;

iii)或者将启动管理功能转交给其他引导程序。

启动引导程序除了可以安装在MBR之外,还可以安装在每个分区的启动扇区

如图,MBR会提供两个选项,第一个用来加载windows,第二个用来将启动管理功能交给第二个扇区的启动扇区的引导程序。

为什么最好先安装windows再安装Linux?

Linux安装的时候,可以选择将启动 引导程序安装在MBR或者各别分区的启动扇区,而且Linux的启动引导程序可以选择选项(M1或M2)

而Windows安装的时候,不提供选择选项的功能,会直接覆盖掉MBR以及自己所在分区的启动扇区,没有选择的机会。

UEFI

BIOS其实不懂GPT,需要GPT提供兼容模式,才能读写这个磁盘,为了解决这个问题,使用UEFI(Unified extensible Fimware Interface)统一可扩展固件接口。

由于黑客会借由BIOS启动阶段来破坏系统,并取得系统的控制权,因此UEFI加入了一个安全启动的功能——Secure boot功能,表明即将启动的操作系统必须被UEFI验证,否则无法启动。因此有时候需要将Secure boot关闭才能顺利进入到Linux。

 


参考:鸟哥的Linux私房菜(第四版)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值