Next Previous Contents

3. 磁碟 geometry 以及分割区

如果你的磁碟上有好几种作业系统, 每一种使用一个或多个分割区.那麽对於分割区位於何处不同的看法可能导致灾难性的後果.

MBR 中包含一个分割表描述分割区(主分割区: primary) 在那里.有四个表格给四个主要分割区使用, 它们看起来像

struct partition {
        char active;    /* 0x80: bootable, 0: not bootable */
        char begin[3];  /* CHS for first sector */
        char type;
        char end[3];    /* CHS for last sector */
        int start;      /* 32 bit sector number (counting from 0) */
        int length;     /* 32 bit number of sectors */
};
(其中 CHS 是磁簇/磁头/磁区: Cylinder/Head/Sector 的缩写)

因此, 有项资讯是重覆的: 分割区的位置可以由 24 位元的 begin 以及 end 栏位, 和 32 位元的 start 以及 length 栏位给定.

Linux 只使用 start 以及 length 栏位, 故最多可以处理包含 2^32 个磁区的分割区, 也就是, 最大 2 TB 的分割区.这是现今磁碟机的两百倍, 所以也许足够往後十年的需求.

不幸的是, BIOS INT13 呼叫使用三个位元组的 CHS 编码, 10 个位元作为磁簇号码, 8 个位元作为磁头号码, 及 6 个位元作为磁轨上的磁区号码. 可能的磁簇号码是 0-1023, 可能的磁头号码是 0-255, 而磁轨上可能的磁区号码为 1-63(是的, 磁轨上的磁区是由 1 起算, 不是 0). 以这 24 位元最多可以定址 8455716864 个位元组(7.875 GB), 这是 1983 年磁碟机的两百倍.

更不幸的是, 标准的 IDE 介面容许 256 个磁区/磁轨, 65536 个磁簇以及 16 个磁头.它自己本身可以存取 2^37 = 137438953472 个位元组(128 GB), 但是加上 BIOS 方面 63 个磁区与 1024 个磁簇的限制後只剩 528482304 个位元组(504 MB)可以定址的到.

这不足以应付现今的磁碟, 人们使用各种硬体或软体上的方法来克服.


Next Previous Contents