Hard Disk Partition

edited from vbird                                                                   All picture © vbird


在windows中我们可以很容易的发现磁盘盘符C,D,E等,这些盘符到底是什么呢,从磁盘管理器中又可以知道有主分区,逻辑分区,扩展分区等分区,这些东东也就是Partition了,那么他们又是一些什么东西呢,记得以前装windows用时,发现给C盘分配的盘符太小了,想要扩大一些C盘,试了好长时间,才发现要从临近的盘符,也就是D盘划分一部分给C盘,其他盘符都不行,而D盘就是所谓的逻辑分区,这个逻辑分区要先变成扩展分区,然后再又扩展分区转化为主分区,接下来这两个主分区也就是C盘和分割下来的一部分空间也就可以合并了。那么又是为什么这么麻烦呢?这就是接下来要说的了。

在磁盘的第一分区中,装载有MBR(Master Boot Record),这是可以安装启动管理程序的地方,有446 bytes;还有分割表(partition table):记录整颗硬盘分割的状态,有64 bytes。MBR是系统在启动的时候会主动去读取的内容,多系统就是靠这块来选择的;分割表就是系统用来确定分区的,也就是分区地址的索引,它将硬盘进行逻辑上的切割,然后用分割表来记录所包含的逻辑地址。

假设上面的硬盘装置档名为/dev/hda时,那么这四个分割槽在Linux系统中的装置档名如下所示:

  • P1:/dev/hda1
  • P1:/dev/hda2
  • P1:/dev/hda3
  • P1:/dev/hda4

由于分割表就只有64 bytes而已,最多只能容纳四笔分割的记录, 这四个分割的记录被称为主要(Primary)或延伸(Extended)分割槽。你的系统程序也就存储在Primary Partition中,那么为什么要进行分割呢?我想是有以下两点好处的:

    • 数据的安全性
    • 系统的效能考量

而实际上我们所看到的却往往不止是4个分区,那么这又是为什么呢?这就要透过刚刚谈到的扩展分配(Extended)的方式来处理。扩展分配的想法是: 既然第一个磁区所在的分割表只能记录四笔数据, 那就利用额外的磁区来记录更多的分割。具体的做法如下:

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

如上图右下方那个区块有继续分割出五个分区, 这五个由扩展分配继续切出来的分割槽,就被称为逻辑分区(logical partition)。 同时注意一下,由於逻辑分区是由扩展分配继续分割出来的,所以他可以使用的磁柱范围就是扩展分配所配置的范围, 也就是图中的101~400。同样文档名应为

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

的装置名称由于前面四个号码都是保留给Primary或Extended,所以逻辑分区号码就由5号开始

下面要提到系统的启动,整个启动流程到操作系统之前的动作应该是

  1. BIOS:启动主动运行的韧体,会认识第一个可启动的装置;
  2. MBR:第一个可启动装置的第一个磁区内的主要启动记录区块,内含启动管理程序;
  3. 启动管理程序(boot loader):一支可读取核心文件来运行的软件;
  4. 核心文件:开始操作系统的功能...

BIOS与MBR都是硬件本身会支持的功能,至于Boot loader则是操作系统安装在MBR上面的一套软件。由于MBR仅有446 bytes而已,因此这个启动管理程序非常小而美。 这个boot loader的主要任务有底下这些项目:

  • 提供菜单:使用者可以选择不同的启动项目,这也是多重启动的重要功能!
  • 加载核心文件:直接指向可启动的程序区段来开始操作系统;
  • 转交其他loader:将启动管理功能转交给其他loader负责。

这也告诉我们,如果安装linux时有/boot独立分区时, 务必让该分区在整颗硬盘的最前面部分,以便加载启动项。以上是单系统的启动模式,那么多系统呢,原来启动管理程序除了可以安装在MBR之外, 还可以安装在每个分割槽的启动磁区(boot sector)。

我们举一个例子来说,假设你的个人计算机只有一个硬盘,里面切成四个分割槽,其中第一、二分割槽分别安装了Windows及Linux, 你要如何在启动的时候选择用Windows还是Linux启动呢?假设MBR内安装的是可同时认识Windows/Linux操作系统的启动管理程序, 那么整个流程可以图示如下:

但是如果要安装多重启动, 最好先安装Windows再安装Linux。

这是由于Linux在安装的时候,你可以选择将启动管理程序安装在MBR或各别分区的启动磁区, 而且Linux的loader可以手动配置菜单(就是上图的M1, M2...),所以你可以在Linux的boot loader里面加入Windows启动的选项;Windows在安装的时候,他的安装程序会主动的覆盖掉MBR以及自己所在分区的启动磁区,你没有选择的机会, 而且他没有让我们自己选择菜单的功能。

posted @ 2012-08-03 12:59  billowkiller  阅读(237)  评论(0编辑  收藏  举报
Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.