前提: 理解磁盘的组成, 扇区, 磁道和柱面
将一块磁盘分成若干个区域, 不同的区域独立,如Windows中的C盘,D盘一样.
分区的作用:
- 数据隔离保障的安全性
- 数据集中读写的速度加快
MBR(MS-DOS)
由于MBR分区大小的限制, 分区的最小单位一般为柱面.
MBR分区的第一个512字节扇区存在:
- 主引导记录(Master Boot Record) : 安装启动引导程序, 446字节
- 分区表(partition table) : 记录磁盘分区情况, 64字节
对于64位机器,每个分区需要记录开始和结束号码共16字节, 所以最多有四组记录区 分区命名如下: P1:/dev/sda1 P2:/dev/sda2 P3:/dev/sda3 P4:/dev/sda4
这四个分区称为主要(Primary)或扩展(Extended)分区
总结
- 分区其实对64字节的分区表设置
- 硬盘默认分区表仅能写入四组分区
- 四组划分信息称为主要(Primary)或扩展(Extended)分区
- 分区的最小单位通常为柱面
限制:
- 2.2TB以上磁盘无法使用
- 区块破坏难以恢复
- MBR中引导分区存放的程序代码较少
扩展分区与逻辑分区
因为分区表大小的限制主要分区只能为4个, 于是使用扩展分区的几个扇区记录分区信息. 扩展分区可以分割成逻辑分区用于格式化数据.
注:
扩展分区的目的是使用额外的扇区来记录分区信息, 扩展分区本身并不能格式化.
重点:
- 逻辑分区的设备名称由5号开始
- 主要分区与扩展分区最多
- 扩展分区最多只能有一个
- 逻辑分区是扩展分区持续划分出来的分区
- 扩展分区无法格式化
GPT分区
GPT分区表的结构兼容MBR, 考虑扇区的大小差异, 采用逻辑区块地址LBA处理.
GPT具有64个逻辑区块地址:
LBA0(MBR兼容区块)
分为两部分, 446字节存储第一阶段的启动引导程序; 第二部分存储特殊标志符表示该磁盘采用GPT分区
LBA1(GPT表头记录)
- 记录分区表本身的位置与大小, 记录了备用的GPT分区位置和分区表校验码(CRC32)
- LBA2-33(分区信息)
- 一个LBA中记录4组分区记录, 每个LBA512字节,
注:操作系统是否能采用GPT分区与启动的检测程序有关!
系统启动流程
BIOS搭配MBR/GPT的启动流程
BIOS 写入到主板上的固件, 程序
CMOS 记录硬件参数且嵌入在主板上的存储器
启动流程:
- BIOS 认识第一个可启动的设备
- MBR: 第一个可启动设备第一个扇区内的主引导记录块,内含启动引导代码
- 启动引导程序(boot loader) : 可读取内核文件执行的软件(由操作系统提供)
- 内核文件: 启动操作系统
boot loader 可以设置多重引导
- 提供选项, 选择不同的启动项
- 加载内核文件
- 转交其他启动引导程序
每一个分区中存在一个启动扇区
多重引导
- 每个分区都有自己的启动扇区
- 实际可启动的内核文件存在于各分区中
- 启动引导程序只认识自己系统分区的内核文件和其它启动引导程序
分区流程
- 查看Linux系统的物理磁盘设备:
- 老式IDE驱动的/dev/hdx
- SATA和SCSI驱动的/dev/sdx
- 查看Linux系统的分区表类型
- parted /dev/sda print
- gpt采用gdisk分区
- MBR采用fdisk分区
- 以gdisk为例,进行分区
- 使用cat /proc/partitions 查看分区表
- partprobe命令更新分区表
