前提: 理解磁盘的组成, 扇区, 磁道和柱面

将一块磁盘分成若干个区域, 不同的区域独立,如Windows中的C盘,D盘一样.
分区的作用:

  • 数据隔离保障的安全性
  • 数据集中读写的速度加快

介绍磁盘的两种分区MBR与GPT

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 记录硬件参数且嵌入在主板上的存储器

启动流程:

  1. BIOS 认识第一个可启动的设备
  2. MBR: 第一个可启动设备第一个扇区内的主引导记录块,内含启动引导代码
  3. 启动引导程序(boot loader) : 可读取内核文件执行的软件(由操作系统提供)
  4. 内核文件: 启动操作系统

boot loader 可以设置多重引导

  • 提供选项, 选择不同的启动项
  • 加载内核文件
  • 转交其他启动引导程序

每一个分区中存在一个启动扇区

多重引导

  • 每个分区都有自己的启动扇区
  • 实际可启动的内核文件存在于各分区中
  • 启动引导程序只认识自己系统分区的内核文件和其它启动引导程序

分区流程


  1. 查看Linux系统的物理磁盘设备:
  • 老式IDE驱动的/dev/hdx
  • SATA和SCSI驱动的/dev/sdx
  1. 查看Linux系统的分区表类型
  • parted /dev/sda print
    • gpt采用gdisk分区
    • MBR采用fdisk分区
  1. 以gdisk为例,进行分区
  2. 使用cat /proc/partitions 查看分区表
  3. partprobe命令更新分区表