MBR - PartitionTable



MBR - PartitionTable

 

整颗磁盘的第一个扇区特别的重要,因为他记录了整颗磁盘的重要信息! 磁盘的第一个扇区主要记录了两个重要的信息,分别是:

  • 主要启动记录区(Master Boot Record, MBR):可以安装开机管理程序的地方,有446 bytes
  • 分割表(partition table):记录整颗硬盘分割的状态,有64 bytes

MBR是很重要的,因为当系统在开机的时候会主动去读取这个区块的内容,这样系统才会知道你的程序放在哪里且该如何进行开机。如果你要安装多重引导的系统,MBR这个区块的管理就非常非常的重要了! ^_^

那么分割表又是啥?其实妳刚刚拿到的整颗硬盘就像一根原木,你必须要在这根原木上面切割出你想要的区段,这个区段才能够再制作成为你想要的家具!如果没有进行切割,那么原木就不能被有效的使用。同样的道理,你必须要针对你的硬盘进行分割,这样硬盘才可以被你使用的!

磁盘分区表(partition table)

但是硬盘总不能真的拿锯子来切切割割吧?那硬盘还真的是会坏掉去!那怎办?在前一小节的图示中,我们有看到『开始与结束磁柱』吧?那是文件系统的最小单位,也就是分割槽的最小单位啦!没有错, 我们就是利用参考对照磁柱号码的方式来处理啦! 在分割表所在的64 bytes容量中,总共分为四组记录区,每组记录区记录了该区段的启始与结束的磁柱号码。若将硬盘以长条形来看,然后将磁柱以柱形图来看,那么那64 bytes的记录区段有点像底下的图示:
MBR <wbr>- <wbr>PartitionTable


磁盘分区表的作用示意图

假设上面的硬盘装置文件名为/dev/hda时,那么这四个分割槽在Linux系统中的装置文件名如下所示,重点在于档名后面会再接一个数字,这个数字与该分割槽所在的位置有关喔!

  • P1:/dev/hda1
  • P2:/dev/hda2
  • P3:/dev/hda3
  • P4:/dev/hda4

上图中我们假设硬盘只有400个磁柱,共分割成为四个分割槽,第四个分割槽所在为第301400号磁柱的范围。 当你的操作系统为Windows时,那么第一到第四个分割槽的代号应该就是C, D, E, F。当你有资料要写入F槽时, 你的数据会被写入这颗磁盘的301~400号磁柱之间的意思。

由于分割表就只有64 bytes而已,最多只能容纳四笔分割的记录, 这四个分割的记录被称为主要(Primary)或延伸(Extended)分割槽。 根据上面的图示与说明,我们可以得到几个重点信息:

  • 其实所谓的『分割』只是针对那个64 bytes的分割表进行设定而已!
  • 硬盘默认的分割表仅能写入四组分割信息
  • 这四组分割信息我们称为主要(Primary)或延伸(Extended)分割槽
  • 分割槽的最小单位为磁柱(cylinder)
  • 当系统要写入磁盘时,一定会参考磁盘分区表,才能针对某个分割槽进行数据的处理

咦!你会不会突然想到,为啥要分割啊?基本上你可以这样思考分割的角度:

  1. 数据的安全性:
    因为每个分割槽的数据是分开的!所以,当你需要将某个分割槽的数据重整时,例如你要将计算机中WindowsC槽重新安装一次系统时, 可以将其他重要数据移动到其他分割槽,例如将邮件、桌面数据移动到D槽去,那么C槽重灌系统并不会影响到D槽! 所以善用分割槽,可以让妳的数据更安全。
  2. 系统的效能考虑:
    由于分割槽将数据集中在某个磁柱的区段,例如上图当中第一个分割槽位于磁柱号码1~100号,如此一来当有数据要读取自该分割槽时, 磁盘只会搜寻前面1~100的磁柱范围,由于数据集中了,将有助于数据读取的速度与效能!所以说,分割是很重要的!

既然分割表只有记录四组数据的空间,那么是否代表我一颗硬盘最多只能分割出四个分割槽?当然不是啦!有经验的朋友都知道,你可以将一颗硬盘分割成十个以上的分割槽的!那又是如何达到的呢?在Windows/Linux系统中, 我们是透过刚刚谈到的延伸分割(Extended)的方式来处理的啦!延伸分割的想法是: 既然第一个扇区所在的分割表只能记录四笔数据,那我可否利用额外的扇区来记录更多的分割信息?实际上图示有点像底下这样:
MBR <wbr>- <wbr>PartitionTable

磁盘分区表的作用示意图

在上图当中,我们知道硬盘的四个分割记录区仅使用到两个,P1为主要分割,而P2则为延伸分割。请注意, 延伸分割的目的是使用额外的扇区来记录分割信息,延伸分割本身并不能被拿来格式化。然后我们可以透过延伸分割所指向的那个区块继续作分割的记录。

如上图右下方那个区块有继续分割出五个分割槽, 这五个由延伸分割继续切出来的分割槽,就被称为逻辑分割槽(logical partition)。同时注意一下,由于逻辑分割槽是由延伸分割继续分割出来的,所以他可以使用的磁柱范围就是延伸分割所设定的范围喔!也就是图中的101~400啦!

同样的,上述的分割槽在Linux系统中的装置文件名分别如下:

  • P1:/dev/hda1
  • P2:/dev/hda2
  • L1:/dev/hda5
  • L2:/dev/hda6
  • L3:/dev/hda7
  • L4:/dev/hda8
  • L5:/dev/hda9

仔细看看,怎么装置文件名没有/dev/hda3/dev/hda4呢?因为前面四个号码都是保留给PrimaryExtended用的嘛! 所以逻辑分割槽的装置名称号码就由5号开始了!这是个很重要的特性,不能忘记喔!

主要分割、延伸分割与逻辑分割的特性我们作个简单的定义啰:

  • 主要分割与延伸分割最多可以有四笔(硬盘的限制)
  • 延伸分割最多只能有一个(操作系统的限制)
  • 逻辑分割是由延伸分割持续切割出来的分割槽;
  • 能够被格式化后,作为数据存取的分割槽为主要分割与逻辑分割。延伸分割无法格式化;
  • 逻辑分割的数量依操作系统而不同,在Linux系统中,IDE硬盘最多有59个逻辑分割(5号到63) SATA硬盘则有11个逻辑分割(5号到15)

事实上,分割是个很麻烦的东西,因为他是以磁柱为单位的『连续』磁盘空间,且延伸分割又是个类似独立的磁盘空间,所以在分割的时候得要特别注意。我们举底下的例子来解释一下好了:

例题:

Windows操作系统当中,如果你想要将DE槽整合成为一个新的分割槽,而如果有两种分割的情况如下图所示, 图中的特殊颜色区块为DE槽的示意,请问这两种方式是否均可将DE整合成为一个新的分割槽?

MBR <wbr>- <wbr>PartitionTable

磁盘空间整合示意图

答:

  • 上图可以整合:因为上图的DE同属于延伸分割内的逻辑分割,因此只要将两个分割槽删除,然后再重新建立一个新的分割槽, 就能够在不影响其他分割槽的情况下,将两个分割槽的容量整合成为一个。
  • 下图不可整合:因为DE分属主分割与逻辑分割,两者不能够整合在一起。除非将延伸分割破坏掉后再重新分割。 但如此一来会影响到所有的逻辑分割槽,要注意的是:如果延伸分割被破坏,所有逻辑分割将会被删除。 因为逻辑分割的信息都记录在延伸分割里面嘛!

 

由于第一个扇区所记录的分割表与MBR是这么的重要,几乎只要读取硬盘都会先由这个扇区先读起。因此,如果整颗硬盘的第一个扇区(就是MBRpartition table所在的扇区)物理实体坏掉了,那这个硬盘大概就没有用了!因为系统如果找不到分割表,怎么知道如何读取磁柱区间呢?您说是吧!底下还有一些例题您可以思考看看:

例题:

如果我想将一颗大硬盘『暂时』分割成为四个partitions,同时还有其他的剩余容量可以让我在未来的时候进行规划, 我能不能分割出四个Primary?若不行,那么你建议该如何分割?

答:

  • 由于Primary+Extended最多只能有四个,其中Extended最多只能有一个,这个例题想要分割出四个分割槽且还要预留剩余容量, 因此P+P+P+P的分割方式是不适合的。因为如果使用到四个P,则即使硬盘还有剩余容量, 因为无法再继续分割,所以剩余容量就被浪费掉了
  • 假设你想要将所有的四笔记录都花光,那么P+P+P+E是比较适合的。所以可以用的四个partitions3个主要及一个逻辑分割, 剩余的容量在延伸分割中。
  • 如果你要分割超过4槽以上时,一定要有Extended分割槽,而且必须将所有剩下的空间都分配给Extended 然后再以logical的分割来规划Extended的空间。 另外,考虑到磁盘的连续性,一般建议将Extended的磁柱号码分配在最后面的磁柱内

 

例题:

我能不能仅分割出一个Primary与一个Extended即可?

答:

当然可以,这也是早期Windows操作系统惯用的手法!此外,逻辑分割槽的号码在IDE可达63号,SATA则可达15号, 因此仅一个主要与一个延伸分割即可,因为延伸分割可继续被分割出逻辑分割槽嘛!

 

例题:

假如我的PC有两颗SATA硬盘,我想在第二颗硬盘分割出6个可用的分割槽(可以被格式化来存取数据之用) 那每个分割槽在Linux系统下的装置文件名为何?且分割类型各为何?至少写出两种不同的分割方式。

答:

由于P(primary)+E(extended)最多只能有四个,其中E最多只能有一个。现在题目要求6个可用的分割槽,因此不可能分出四个P 底下我们假设两种环境,一种是将前四号全部用完,一种是仅花费一个P及一个E的情况:

  • P+P+P+E的环境:

MBR <wbr>- <wbr>PartitionTable

分割示意图

实际可用的是/dev/sdb1, /dev/sdb2, /dev/sdb3, /dev/sdb5, /dev/sdb6, /dev/sdb7这六个,至于/dev/sdb4这个延伸分割本身仅是提供来给逻辑分割槽建立之用。

  • P+E的环境:

MBR <wbr>- <wbr>PartitionTable

分割示意图

注意到了吗?因为1~4号是保留给主要/延伸分割槽的,因此第一个逻辑分割槽一定是由5号开始的!再次强调啊! 所以/dev/sdb3, /dev/sdb4就会被保留下来没有用到了!

猜你喜欢

转载自blog.csdn.net/qq_36038987/article/details/79040471