电脑技术学习

LPI 101 考试准备: 硬件和体系结构

dn001

BIOS 和 IDE 驱动器大小

IDE 驱动器格式化为 扇区(sectors),即 512 字节的数据单元。一个驱动器可能包括多个旋转的盘面,所以扇区被排列中同心圆中,每个圆称为一个 柱面(cylinder)。通过 磁头(head) 来读写特定盘面的数据。要找到特定扇区的数据,磁盘会移动分配给那个柱面的磁头,选择适当的磁头并等待正确的扇区移动到磁头下面。这就引出了 CHS(表示 Cylinder、Head 和 Sector)寻址的概念。您可能也听说这叫做 磁盘几何学(disk geometry)

历史上很不幸,早期的 BIOS 对所允许的 C、H 和 S 值实行了限制,并且,PC 所用的流行操作系统 DOS 也实行了另外的限制。在九十年代,磁盘的迅速超出了 BIOS 和 DOS 所施加的人为的 CHS 限制。人们使用了一些中间策略来将实际的 CHS 值转化为满足那些约束的 “虚拟值,那些约束是 BIOS 本身的约束,或者是 Ontrack 的 Disk Manager 软件等底层软件例程的约束。

就算是没有 BIOS 或者 DOS 的人工限制,CHS 设计也最多只允许 65536 个柱面、16 个磁头,以及 255 扇区/磁轨。这就将容量限制为 267386880 个扇区,即大约 137 GB。注意,磁盘的容量以 10 的幂次来度量,所以 1GB=1,000,000,000 字节,不同于某些其他 PC 值。

解决方案是让系统忽略几何结构,交由驱动器来完成。系统不需要去查询 CHS 值,而只需要查询 逻辑块地址(Logical Block Address,LBA),驱动器电子装置会找出要读或写的实际扇区。这一过程在 1996 年被标准化,并由 ATA-2 标准所采纳(ANSI 标准 X3.279-1996,AT Attachment Interface with Extensions)。

如前所述,BIOS 需要引导系统,所以,要从硬盘驱动器引导,BIOS 对磁盘的布局所了解的程度必须足以定位并加载初始化程序,初始化程序接下来加载整个操作系统。不支持 LBA 磁盘的较老的 BIOS 可能被限制只能从磁盘的前 1024 个柱面进行引导,或者至少前 1024 个柱面,就像是 BIOS 知道磁盘的几何结构一样!现在这种 BIOS 可能已经相当少见了,不过,如果确实需要使用这样一个 BIOS,那么它可能有用于 LBA 支持的设置,而且您可能需要将 /boot 目录置于前 1024 柱面之内的分区中。就算是系统可以顺利地从非常大的硬盘的最末尾处引导,但很多 Linux 分区工具会警告您分区扩展超出了 1024 柱面限制。

图 3 展示了在我的 Intel 母板 BIOS 中可以看到的信息,这是我的一个 Linux 系统中的 250GB IDE 磁盘。


图 3. 一个大的 LBA 磁盘的 BIOS 视图
一个大的 LBA 磁盘的 BIOS 视图
;

清单 9 给出的是在 Linux 系统中(本例中是 Fedora Core 3)针对图 3 中所使用的同一磁盘运行 hdparm -I /dev/hda 命令的输出。注意,CHS 值限制寻址范围为 4,128,705 柱面, LBA 值设置为 268,435,455 柱面(或者说是 137GB)。这些值共同暗示 LBA48 值中才是实际的容量。这个值是 490,234,752 柱面(或者说是 251GB)。


清单 9. hdparm -I /dev/hda 的输出

	/dev/hda:ATA device, with non-removable media        Model Number:       Maxtor 6Y250P0        Serial Number:      Y638VBWE        Firmware Revision:  YAR41BW0Standards:        Supported: 7 6 5 4        Likely used: 7Configuration:        Logical         max     current        cylinders       16383   65535        heads           16      1        sectors/track   63      63        --        CHS current addressable sectors:    4128705        LBA    user addressable sectors:  268435455        LBA48  user addressable sectors:  490234752        device size with M = 1024*1024:      239372 MBytes        device size with M = 1000*1000:      251000 MBytes (251 GB)Capabilities:        LBA, IORDY(can be disabled)        Queue depth: 1        ...

;

当我们讨论引导时,应该注意另一个问题。默认情况下,PC 将从系统中的第一块 IDE 硬盘引导。某些系统的 BIOS 设置允许覆盖这一设置,但大部分情况下将会这样引导。系统首先从 master boot record 加载一小段代码,这段代码会给出从哪个分区进行引导的信息。在稍后的教程中我们将深入讨论 Linux 的引导加载程序。

如果希望了解关于大容量磁盘的更多历史,请参阅 参考资料,其中有指向 Linux Documentation Project 的 Large Disk HOWTO 的链接。

标签: