磁盘及分区详解(MBR和GPT)
1、磁盘为什么要分区?
实现磁盘分区可以有以下优势:
- 优化I/O性能
- 实现磁盘空间配额限制
- 提高修复速度
- 隔离系统和程序
- 安装多个OS
- 采用不同文件系统
2、Linux设备文件
Linux的哲学思想之一:一切皆文件。
# 设备类型:
# 块(block):随机访问,数据交换单位是“块”
# 字符(character):线性访问,数据交换单位是“字符”
# 设备文件:FHS
# /dev
# 设备文件:关联至设备的驱动程序,进而能够跟与之对应硬件设备进行通信
# 设备号:
# major:主设备号,区分设备类型;用于标明设备所需要的驱动程序
# minor:次设备号,区分同种类型下的不同的设备;是特定设备的访问入口
# mknod命令:
# make block or character special files
# mknod [OPTION]... NAME TYPE [MAJOR MINOR]
# -m MODE:创建后的设备文件的访问权限
# 设备文件名:ICANN
# 磁盘:
# IDE: /dev/hd[a-z]
# 例如:/dev/hda, /dev/hdb
# 不同磁盘表示 (SCSI, SATA, USB, SAS)
# /dev/sd[a-z]
# /dev/sda, /dev/sdb, ...
# 同一设备上的不同分区
# /dev/sda#
# /dev/sda1, /dev/sda2, ...
# 注意:CentOS 6和7统统将硬盘设备文件标识为/dev/sd[a-z]#
# 引用设备的方式:
# 1、设备文件名
# 2、卷标
# 3、UUID
3、磁盘简介
在开始介绍磁盘分区以前,先简单介绍下磁盘。
硬盘(Disks: 持久存储数据)是一种I/O设备。
3.1 硬盘接口类型
# IDE(ata):并口,133MB/s
# SCSI:并口,Ultrascsi320, 320MB/S, UltraSCSI640, 640MB/S
# SATA:串口,6gbps
# SAS:串口,6gbps
# USB:串口,480MB/s
# 并口:同一线缆可以接多块设备
IDE:两个,主,从
SCSI:
宽带:16-1
窄带:8-1
# 串口:同一线缆只可以接一个设备
# iops:io per second
3.2 机械硬盘和固态硬盘
- 机械硬盘(HDD):Hard Disk Drive,即是传统普通硬盘,主要由:盘片,磁头,盘片转轴及控制电机,磁头控制器,数据转换器,接口,缓存等几个部分组成。机械硬盘中所有的盘片都装在一个旋转轴上,每张盘片之间是平行的,在每个盘片的存储面上有一个磁头,磁头与盘片之间的距离比头发丝的直径还小,所有的磁头联在一个磁头控制器上,由磁头控制器负责各个磁头的运动。磁头可沿盘片的半径方向运动,加上盘片每分钟几千转的高速旋转,磁头就可以定位在盘片的指定位置上进行数据的读写操作。数据通过磁头由电磁流来改变极性方式被电磁流写到磁盘上,也可以通过相反方式读取。硬盘为精密设备,进入硬盘的空气必须过滤。
- 固态硬盘(SSD):Solid State Drive,用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元(FLASH芯片、DRAM芯片)组成。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘的完全相同,在产品外形和尺寸上也与普通硬盘一致。
- 相较于HDD,SSD在防震抗摔、传输速率、功耗、重量、噪音上有明显优势,SSD传输速率性能是HDD的2倍。
- 相较于SSD,HDD在价格、容量、使用寿命上占有绝对优势。
- 硬盘有价,数据无价,目前SSD不能完全取代HHD。
3.2.1 磁盘术语
# head:磁头
# track:磁道
# cylinder: 柱面
# sector: 扇区,512bytes
3.2.2 机械硬盘
机械硬盘由坚硬金属材料制成的涂以磁性介质的盘片,盘片两面称为盘面或扇面,都可以记录信息,由磁头对盘面进行操作,一般用磁头号区分。结构特性决定了机械硬盘如果受到剧烈冲击,磁头与盘面可能产生的哪怕是轻微撞击都有可能报废。
假设磁头不动,硬盘旋转,那么磁头就会在磁盘表面画出一个圆形轨迹并将之磁化,数据就保存在这些磁化区中,称之为磁道,将每个磁道分段,一个弧段就是一个扇区。一个硬盘可以包含多个扇面,扇面同轴重叠放置,每个盘面磁道数相同,具有相同周长的磁道所形成的圆柱称之为柱面,柱面数与磁道数相等。
最初的寻址方式称为CHS,在LBA(Logical Block Address)概念诞生之前,由他负责管理磁盘地址。所谓CHS即柱面(cylinder),磁头(header),扇区(sector),通过这三个变量描述磁盘地址,需要明白的是,这里表示的已不是物理地址而是逻辑地址了。这种方法也称作是LARGE寻址方式。该方法下:
硬盘容量=磁头数×柱面数×扇区数×扇区大小(一般为512byte)。
后来,人们通过为每个扇区分配逻辑地址,以扇区为单位进行寻址,也就有了LBA寻址方式。但是为了保持与CHS模式的兼容,通过逻辑变换算法,可以转换为磁头/柱面/扇区三种参数来表示,和 LARGE寻址模式一样,这里的地址也是逻辑地址了。(固态硬盘的存储原理虽然与机械硬盘不同,采用的是flash存储,但仍然使用LBA进行管理。)
4、分区方式
磁盘分区方式一般有两种:MBR和GPT。
在讲之前,先介绍下CHS和LBA。
4.1 CHS和LBA
- CHS:即柱面(cylinder),磁头(header),扇区(sector)。
# 采用24bit位寻址
# 其中前10位表示cylinder,中间8位表示head,后面6位表示sector
# 最大寻址空间8GB
- LBA(logical block addressing)
# LBA是一个整数,通过转换成CHS格式完成磁盘具体寻址
# ATA-1规范中定义了28位寻址模式,以每扇区512位组来计算
# ATA-1所定义的28位LBA上限达到128 GiB
# 2002年ATA-6规范采用48位LBA,同样以每扇区512位组计算容量上限可达128 Petabytes
- 由于CHS寻址方式的寻址空间在大概8GB以内,所以在磁盘容量小于大概8GB时,可以使用CHS寻址方式或是LBA寻址方式;在磁盘容量大于大概8GB时,则只能使用LBA寻址方式。
4.2 第一种分区方式:MBR
4.2.1 MBR简介
# MBR:Master Boot Record
# 使用32位表示扇区数,分区不超过2T
# 分为三部分(512字节):
# 446bytes:bootloader, 程序,引导启动操作系统的程序;
# 64bytes:分区表,每16bytes标识一个分区,一共只能有4个分区;
4主分区
3主1扩展
n逻辑分区
# 2bytes:MBR区域的有效性标识;55AA为有效
# 主分区和扩展分区的标识:1-4
# 逻辑分区:5+
4.2.2 MBR分区结构
# 硬盘主引导记录MBR由4个部分组成
# 主引导程序(偏移地址0000H--0088H),它负责从活动分区中装载,并运行系统引导程序
# 出错信息数据区,偏移地址0089H--00E1H为出错信息,00E2H--01BDH全为0字节
# 分区表(DPT,Disk Partition Table)含4个分区项,偏移地址01BEH--01FDH
# 每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4
# 结束标志字,偏移地址01FE--01FF的2个字节值为结束标志55AA
4.2.3 MBR中的DPT结构
4.2.4 MBR实例
80 01 01 00, 0B FE BF FC, 3F 00 00 00, 7E 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。
可以看到,在只分配64字节给DPT的情况下,每个分区项分别占用16个字节,因此只能记录四个分区信息,尽管后来为了支持更多的分区,引入了扩展分区及逻辑分区的概念。但每个分区项仍然用16个字节存储。能表示的最大扇区数为FF FF,FF FFH,因此可管理的最大空间=总扇区数*扇区大小(512byte)