Linux磁盘分区易混淆的概念
Linux磁盘分区易混淆概念
1. 磁盘连接方式与设备文件名的关系
现在我们的个人PC或者服务器多数采用SATA或SAS接口的硬盘, 一般的主机都有多个硬盘位和USB接口(USB 2.0 和 USB 3.0蓝色标注),很多人认为的磁盘的命名方式,是与硬盘的槽位有关系,实际上并非如此,博主单位里有好几台华为RH2288H v5的服务器,有25个前置硬盘插槽位,5个USB接口,通过实验发现,当把SAS硬盘插在0槽位和3槽位时,检测到的硬盘设备名如下:
0槽位: /dev/sda
3槽位: /dev/sdb
USB磁盘(系统启动后方可识别):/dev/sdc
2. MBR与GPT分区格式
2.1 概念
(1)MBR
MBR(Master Boot Record),中文学名“主引导记录”。我们知道早期的Linux系统为了兼容Windows中比如NTFS文件系统格式的磁盘,采用MBR的方式来处理启动引导顺序和分区表。而启动引导程序记录区与分区表则都放在磁盘的第一个扇区。这个扇区一般是512B,当然现在也有4KB的扇区大小。一般来说,这个512字节组成如下:
446字节:主引导记录。存放可以安装启动引导程序的地方。
64字节:分区表。记录整块磁盘分区的状态。
2字节:结束标志。存放分区结束标志。
上述三部分之和就是一个扇区512B的大小。
(2)GPT
GPT(GUID partition table),中文全称“磁盘分区表”,它的出现主要是因为,目前多数的服务器的磁盘容量越来越大,多数大容量磁盘已经超过了2TB,而MBR分区先天性的限制,它是为32位系统设计的,其寻址范围是232,该值换算成十进制就是4294967296,而目前标准扇区的容量为512字节,所以MBR能管理的磁盘空间为4294967296 * 512 = 2199023255552 Bytes,这是硬盘厂商宣传的2.19TB,如果采用1024换算,就只有2TB了,这也是GPT出现的一个原因。
为了兼容所有磁盘,在扇区的定义上,大多会使用所谓的逻辑区块地址(Logical Block Address),与MBR仅使用第一个512B区块来记录不同,GPT使用了34个LBA区块来记录分区信息,以下对每个LBA做详细介绍:
LBA0:(MBR兼容区块)
这个兼容区块和之前的MBR一样,分为446字节的启动引导程序,另外加入了一个特殊标志符,用来表示磁盘为GPT格式之意。
LBA1:(GPT表头记录)
记录分区表本身的位置和大小;记录备份用的GPT分区(后34个LBA区块);放置CRC32分区表校验码等。
LBA2~LBA33: (实际分区记录信息处)
从LBA2区块开始,每个LBA都可以记录4组分区记录,在默认情况下,总共有4×32=128组分区记录,由于每个LBA有512字节,因此每组记录用到128字节的空间,除了每组记录所需要的标识符与相关的记录之外,GPT在每组记录中分别提供了64位来记载开始/结束的扇区号码,因此,GPT分区表对于单一分区来说,它最大容量限制为:
264× 512字节 = 8 ZB,注意:1ZB = 1024 EB = 1024×1024 PB = 230 TB。
3. 主分区/扩展分区/逻辑分区
MBR分区示意图
首先需要声明的是,只有在MBR分区格式下,才有“主分区、扩展分区和逻辑分区”的概念,在GPT分区格式下,由于每组记录都可以单独存在,所有都可以视为主分区,并且都可以拿来格式化使用。
主分区:一个硬盘的主分区是包含操作系统启动所必须的文件和数据的硬盘分区,所以至少得有一个主分区。
扩展分区:所谓扩展分区,是指除主分区以外的分区,但是它不能直接使用,必须再将它划分为若干个逻辑分区才行。
逻辑分区:逻辑分区是硬盘上一块连续的区域,它是可以若干个。
注意以下几点:
(1)主分区最多能有四个,而且一旦划分了四个主分区(一般不建议这样做),即使有再多的容量,也不能在加进现有的分区了。
(2)能够被格式化的磁盘只有“主分区”和“逻辑分区”,扩展分区是不能格式化的,而且,扩展分区最多只能有一个,且主分区+扩展分区总数不能超过4(这是因为,MBR分区表大小为64B,每16B才能描述一个分区,所以最多只能有4组记录),逻辑分区理论上说可以是多个。
(3)硬盘容量=主分区容量+扩展分区容量;扩展分区容量=各个逻辑分区容量之和。
(4)硬盘分区设备名称,/dev/sda1~/dev/sda4是留给主分区或者扩展分区,第一个逻辑分区的设备名称号码一定是从5开始,即/dev/sda5,即使扩展分区+主分区数没有达到4,也是这么个命名方式,举例,比如:
一块硬盘,分了1个主分区,1个扩展分区,5个逻辑分区,则设备名称应该对应如下:
主分区:/dev/sda1;
扩展分区:/dev/sda2;
第1个逻辑分区:/dev/sda5;
第2个逻辑分区:/dev/sda6;
第3个逻辑分区:/dev/sda7;
第4个逻辑分区:/dev/sda8;
第5个逻辑分区:/dev/sda9;
/dev/sda3和/dev/sda4仍然保留给主分区和扩展分区,即使没有使用。
博客会及时更新,第一次写,还请大佬批评指正。