当前位置: 首页 > 图文教程 > 操作系统 > Unix/Linux > Large Disk mini-HOWTO 大硬盘

Unix/Linux
如何在linux下面运行招商银行专业版
Windows和Linux系统共存 完美解决方案
Linux 和对称多处理应用程序介绍
Red Hat Linux 附加引导和内核引导选项
Linux 2.6.11内核文件IO系统调用详解
走向高手之路 Linux系统内核技术解读
菜鸟乐园 Linux系统内核代码特色一览
Linux内核和传统Unix内核的比较
内核中的物理内存分配函数kernel api
使用 Linux 系统调用的内核命令
详细解析 Linux内核的主要配置选项
内核操作 Linux2.6内核驱动移植参考
Linux内存中Swap和Buffer Cache机制
高手进阶 更换Fedora Core 6的内核
高手风范 Linux操作系统内核编码风格
Linux操作系统内核中工作队列的操作
揭开Linux系统内核调试器的神秘面纱
系统“大挪移” Linux服务器迁移大法
高手进阶 重新编译Linux操作系统的内核
Ubuntu系统关于驱动模块命令的一些使用

Unix/Linux 中的 Large Disk mini-HOWTO 大硬盘


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 174 ::
收藏到网摘: n/a

  作者: Andries Brouwer, [email protected]
译者: Asd L. Chen, [email protected]
v1.0, 26 June 1996 翻译日期: 10-13 November 1997 


--------------------------------------------------------------------------------
所有有关 disk geometry 及 1024 cylinder 的限制. 
--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

1. 问题所在
假如你的磁碟超过 1024 个磁簇(cylinders). 还有, 假如你的作业系统使用基本输出入系统(BIOS).那麽你会遇到一个问题, 因为一般磁碟输出入/输入所使用的 INT13 BIOS 介面以一个 10 位元(bit) 的栏位来操作磁簇, 所以无法存取第 1024 及之後的磁簇. 

幸运的是, Linux 不使用 BIOS, 所以没有问题. 

话是这麽说, 但有两件事例外: 

(1) 当你在启动系统时, Linux 还没开始执行所以无法让你避免这个问题.这对 LILO 以及类似的启动载入程式(boot loaders)有些影响. 

(2) 使用磁碟的所有作业系统必须同意分割区的位置.换句话说, 如果你在一颗磁碟上使用 Linux 以及, 例如 DOS, 那麽两者必须以相同的方式解读分割表的资料.这对 Linux 核心以及 fdisk 有些影响. 

底下是对所有相关细节更详细的描述.注意, 我使用 2.0.8 版核心原始程式做为参考.其它的版本可能有一点点出入. 




--------------------------------------------------------------------------------
--------------------------------------------------------------------------------

2. 启动
当系统启动时, BIOS 从第一个磁碟(或从软碟)读取磁区 0 (一般通称的 MBR - Master Boot Record, 主启动磁区)并跳至在该处的程式码 - 通常是一些启动载入程式(bootstrap loader).这些小小的启动程式一般不会有自己的磁碟驱动程式而会使用 BIOS 所提供的服务.这意谓著只有整个 Linux 核心都位於开头的 1024 个磁簇内时才能够被启动. 

这个问题很容易解决: 确定核心(也许还包括其它启动时用到的档案, 像是 LILO map 档) 是放在一个 BIOS 可以存取的到, 全都在开头的 1024 个磁簇内的分割区里 - 这可以(可能)是第一个或第二个磁碟. 

另一点是启动载入程式与 BIOS 必须同意彼此对磁碟逻辑(geometry)上的看法.给 LILO `linear' 这个选项参数可能会有些帮助.细节後述. 




--------------------------------------------------------------------------------

--------------------------------------------------------------------------------

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 个磁区