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

Unix/Linux
Linux 备份 恢复方法
Linux玩CS反恐精英的方法
在一个ISO镜像中集成多个不同的linux发行版,可刻盘,可引导
Linux 快捷键使用
Linux DHCP 服务器配置方法介绍
Linux 22端口的修改方法
Linux 记录会话过程的命令
Linux 后台执行程序如何操作?
linux Wget命令来浏览网页的方法
Linux tail命令的巧妙应用
Wine 中文存在很多的乱码怎么解决方法
linux 新手教程之创建锁文件的方法
配置Linux 保证其系统的安全
Linux DHCP协议实现过程
Linux系统下破解SAM密码
linux/unix vi 编辑器用法详解
Linux 误删文件的解决方法
Linux系统下的历史记录删除方法
Red Hat Linux 安全设置指南
Linux基本命令-注销、关机、重启

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 30 ::
收藏到网摘: 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 个磁区