硬盘分区

什么是硬盘分区

       硬盘分区实质上是对硬盘进行一种特殊的格式化(高级格式化),然后在某个特殊的位置(分区表)标记分区类型、大小、起始和结束位置等,系统去这个特殊的位置上读取硬盘数据就知道硬盘是如何分区的。

 

特殊位置——分区表

MBR分区表:

       传统的分区方案(称为MBR分区方案)是将分区信息保存到磁盘的第一个扇区(MBR扇区)中的64个字节中,每个分区项占用16个字节,这16个字节中存有活动状态标志、文件系统标识、起止柱面号、磁头号、扇区号、隐含扇区数目(4个字节)、分区总扇区数目(4个字节)等内容。由于MBR扇区只有64个字节用于分区表,所以只能记录4个分区的信息。这就是硬盘主分区数目不能超过4个的原因。后来为了支持更多的分区,引入了扩展分区及逻辑分区的概念。但每个分区项仍用16个字节存储。

 

       分区表由4项组成,每项16个字节(Byte).共4×16 = 64字节(Byte)。每项描述一个分区的基本信息。每个字节的含义如下:

0活动标志.若为0x80H,则表示该分区为活动分区.若为0x00H,则表示该分区为非活动分区.
1,2,3该分区的起始磁头号,扇区号,柱面号。其中磁头号 -- 1字节,扇区号 -- 2字节的低6位,柱面号 -- 2字节的高2位 + 3字节
4

分区文件系统标志:

分区未用: 0x00H.

扩展分区: 0x05H,0x0FH.

FAT16分区: 0x06H.

FAT32分区: 0x0BH,0x1BH,0x0CH,0x1CH.

NTFS分区: 0x07H.

5,6,7该分区的结束磁头号,扇区号,柱面号,含义同上.
8,9,10,11逻辑起始扇区号。表示分区起点之前已用了的扇区数
12,13,14,15该分区所占用的扇区数.

       MBR分区方案有什么问题?前面已经提到了主分区数目不能超过4个的限制,这是其一,很多时候,4个主分区并不能满足需要。另外最关键的是MBR分区方案无法支持超过2TB容量的磁盘。因为这一方案用4个字节存储分区的总扇区数,最大能表示2的32次方的扇区个数,按每扇区512字节计算,每个分区最大不能超过2TB。磁盘容量超过2TB以后,分区的起始位置也就无法表示了。

 

GPT分区表:

       GUID分区表(简称GPT,使用GUID分区表的磁盘称为GPT磁盘)是源自EFI标准的一种较新的磁盘分区表结构的标准。与目前普遍使用的主引导记录(MBR)分区方案相比,GPT提供了更加灵活的磁盘分区机制。它具有如下优点:

 

1、支持2TB以上的大硬盘。

 

2、每个磁盘的分区个数几乎没有限制(Windows系统最多只允许划分128个分区)。

 

3、分区大小几乎没有限制。因为它用64位的整数表示扇区号,即  = 18,446,744,073,709,551,616。

 

4、分区表自带备份。在磁盘的首尾部分分别保存了一份相同的分区表,其中一份被破坏后,可以通过另一份恢复;

 

5、循环冗余检验值针对关键数据结构而计算,提高了数据崩溃的检测几率;

 

6、 虽然MBR提供1字节分区类型代码,但GPT使用一个16字节的全局唯一标识符(GUID)值来标识分区类型,这使分区类型更不容易冲突;

 

7、每个分区可以有一个名称(不同于卷标)。

 

GPT分区结构:

LBA0:

在GPT分区表的最开头,处于兼容性考虑仍然存储了一份传统的MBR(LBA 0),这个MBR叫做保护性MBR(Protective MBR)。

 

保护性MBR保护GPT磁盘不受以前发布的MBR磁盘工具的危害。这些工具不能感知GPT,也无法正确地访问GPT磁盘。这些工具通过解释保护性MBR,将GPT磁盘看成一个封装的(可能无法识别)分区,而不是错误地当成一个未分区的磁盘,并且拒绝对硬盘进行操作。这就避免了意外删除分区的危险。

 

在支持从GPT启动的操作系统中,这里也用于存储第一阶段的启动代码。在这个MBR中,只有一个标识为0xEE的分区,以此来表示这块硬盘使用GPT分区表。

 

在使用MBR/GPT混合分区表的硬盘中,这部分存储了GPT分区表的一部分分区(通常是前四个分区),可以使不支持从GPT启动的操作系统从这个MBR启动,启动后只能操作MBR分区表中的分区。

 

LBA1:

分区表头(LBA 1)定义了硬盘的可用空间以及组成分区表的项的大小和数量。在使用64位Windows Server 2003的机器上,最多可以创建128个分区,即分区表中保留了128个项,其中每个都是128字节。(EFI标准要求分区表最小要有16,384字节,即128个分区项的大小)

 

分区表头还记录了这块硬盘的GUID,记录了分区表头本身的位置和大小以及备份分区表头和分区表的位置和大小(在硬盘的最后)。它还储存着它本身和分区表的CRC32校验。固件、引导程序和操作系统在启动时可以根据这个校验值来判断分区表是否出错,如果出错了,可以使用软件从硬盘最后的备份GPT中恢复整个分区表,如果备份GPT也校验错误,硬盘将不可使用。一下是分区表头结构的具体信息:

 

 

LBA 2–33:

LBA 2–33的位置存放的是分区表项。GPT分区表使用简单而直接的方式表示分区。一个分区表项的前16字节是分区类型GUID。接下来的16字节是该分区唯一的GUID(这个GUID指的是该分区本身,而之前的GUID指的是该分区的类型)。再接下来是分区起始和末尾的64位LBA编号,以及分区的名字和属性。

 

UUID

       要为一个对象进行命名,并要求这个名字在时间和空间上都是唯一的,这在计算机领域是一个很重要的问题。目前已经存在很多成熟的解决方案,例如IP地址,MAC地址,DNS域名等。但这些方案都存在一个问题,那就是需要一个中央管理机构来批准和统一管理。这样就会带来两个问题:(1)需要一定费用;(2)数量受限。

 

       为了解决这个问题,UUID诞生了。它采用128位长度来表示一个名字,且同时考虑了时间和空间的唯一性,最重要的是它不需要申请注册,任何人都可以使用本地计算机运行程序自动生成。

 

       UUID最早出现在Apollo Network Computing System,后来被用到了OSF的DCE环境,然后被微软拿去使用,并改名GUID。比如在微软注册表里的奇怪长串数字,以及COM组件的名字,都是GUID。

 

       UUID被文件系统设计者采用,使其可以持久唯一标识一个硬盘分区。其实方式很简单,就是在文件系统的超级块中使用128位存放UUID。这个UUID是在使用文件系统格式化分区时计算生成的,例如Linux下的文件系统工具mkfs就在格式化分区的同时,生成UUID并把它记录到超级块的固定区域中。

 

         这样,无论硬盘分区的标识就永远不会重复,而且只要分区没有被重新格式化,那么标识此分区的UUID永远不变。

 

          当然并不是所有的文件系统类型都支持UUID,例如微软的NTFS就不支持,而是采用了一个类似的其他机制。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值