Windows NT 引导过程和硬盘限制

文章翻译 文章翻译
文章编号: 114841 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

本文介绍 Windows NT 和 Windows NT Advanced Server 下的硬盘大小限制。若要了解这些限制,您需要先了解定义磁盘分区的数据结构,以及 Windows NT 与硬件和操作系统的引导过程中所用的系统 BIOS 接口之间的交互。

更多信息

分区表

描述硬盘分区的数据结构称为分区表。它最多包含四个 16 字节的条目。每个条目有 10 个字段用于描述下列分区属性:
字段                    大小
-----------------   --------
Boot Flag           1  字节
Starting Side       1  字节
Starting Cylinder   10 位
Starting Sector     6  位
System Indicator    1  字节
Ending Side         1  字节
Ending Cylinder     10 位
Ending Sector       6  位
Relative Sectors    4  字节
Number of sectors   4  字节
				

System Indicator(系统指示符)

“系统指示符”用来指定分区中所含文件系统的类型。一些常用值包括:
值        文件系统
-----   -----------
0x0B    主 Fat32 分区(最大可达 2047 GB)
0x0C    与 0x0B 相同,使用逻辑块地址 Int 0x13 扩展
0x0E    与 0x06 相同,使用逻辑块地址 Int 0x13 扩展
0x0F    与 0x05 相同,使用逻辑块地址 Int 0x13 扩展
0x05    扩展分区
0x06    BIGDOS 文件分配表 (FAT) 格式
0x07    可安装文件系统 (IFS),例如:HPFS 和 NTFS
				
当分区是“容错”(FT) 集的一部分时,Windows NT 通过设置“系统指示符”的高位来区分相同类型的 FT 分区与非 FT 分区。例如,FT FAT 分区的“系统指示符”值为 0x86,而 FT NTFS 分区的“系统指示符”值为 0x87。

在禁用 FT 集的成员时,Windows NT 设置两个最高位。例如,被禁用的 FAT 分区的“系统指示符”值为 0xC6,而被禁用的 FT NTFS 分区的“系统指示符”值为 0xC7。

Boot Flag(引导标志)

“引导标志”指明哪个分区是活动的或可引导的。一个磁盘只能有一个活动分区。活动分区的“引导标志”值设为 0x80。磁盘上的其他分区设为 0x00。“主引导记录”(稍后详述)通过搜索此标志来查找活动的引导扇区。

Starting/Ending Side、Starting/Ending Cylinder 和 Starting/Ending Sector(开始/结束面、开始/结束柱面、开始/结束扇区)

开始/结束面、开始/结束柱面、开始/结束扇区等字段对于 Windows NT 与磁盘的交互方式来说是非常重要的。

可以用 1 字节来表示的最大“面”(读/写磁头)数是 256。可以用 10 位来表示的最大“柱面”数是 1024。可以用 6 位来表示的最大“扇区”数是 63,这是因为“扇区”是从 1 开始计数的(而“柱面”和“面”是从 0 开始计数的)。

用 10 位表示的“柱面”值太大,无法放入一个字节。要存储 10 位,则需从存储 6 位“扇区”值的字节中提取两位。

在使用大小为 512 字节的标准扇区时,用于记录开始和结束扇区地址的 24 位将会转换为可以用这些字段来描述的 7.8 GB(8,455,716,864 字节)的最大可能的分区大小。这一点尤其重要,因为 INT 13 BIOS 接口使用的是相同的字段大小,而该接口定义了系统 BIOS 与硬盘的交互方式。

Relative Sectors(相对扇区)

“相对扇区”表示从分区表开头到分区开始处的偏移量,按扇区计数。

Number of Sectors(扇区数)

“扇区数”表示分区中的扇区总数。

注意:“相对扇区”和“扇区数”字段的大小都是 32 位。大多数情况下,这两个字段加在一起包含的信息与开始/结束面、开始/结束柱面、开始/结束扇区等值包含的信息是相同的,表示方式为:24 位用于开始字段,24 位用于结束字段。

Windows NT 引导过程

在基于 Intel 的计算机上,系统 BIOS 控制着初始操作系统引导过程。首先进行“加电自检”(POST) 以初始化硬件组件,之后由系统 BIOS 识别引导设备。通常,引导设备是软盘或硬盘。如果是硬盘,BIOS 将读取硬盘的第一个物理扇区(称为“主引导扇区”),并将它的映像加载到内存中。之后,BIOS 将执行权移交给“主引导扇区”的映像。

“主引导记录”包含分区表和少量可执行代码。可执行代码会检查分区表并识别活动(也叫可引导)分区。接着,“主引导记录”查找活动分区在磁盘上的起始位置,并将其第一个扇区(称为“引导扇区”)的映像加载到内存中。之后,“主引导记录”将执行权移交给“引导扇区”的映像。

尽管“主引导记录”通常不依赖操作系统,但活动分区的“引导扇区”依赖操作系统和文件系统。在 Windows NT 和 Windows NT Advanced Server 中,“引导扇区”负责找到可执行文件 NTLDR,由该文件继续执行引导过程。在系统引导的这一阶段,“引导扇区”代码可用的唯一磁盘服务是由 BIOS INT 13 接口提供的。“引导扇区”代码必须能够找到 NTLDR 和文件系统数据结构,例如,根目录、MS-DOS FAT 卷中的“文件分配表”(FAT) 或 NTFS 卷中的“主文件表”。它们必须位于 BIOS INT 13 接口和分区表使用的 24 位面、柱面、扇区结构可寻址的磁盘区域。这就将系统分区的大小限制为不得超过 7.8 GB,无论使用什么文件系统,都受此限制约束。

注意:根据计算机硬件和文件系统不同,可能还会有其他限制。下面讨论其中的某些限制。

为了能够使用大于 7.8 GB 的分区,Windows NT 会忽略分区表的“开始扇区”和“结束扇区”地址字段的值,而选择“相对偏移量”和“扇区数”字段的值。这样就会另外提供八位来表示扇区。有了这些额外的位,则可用多达 2^32 个扇区来描述分区。

标准扇区大小为 512 字节,用来表示“相对偏移量”和“扇区数”的 32 位最大可转换为 2 TB(2,199,023,255,552 字节)的扇区大小。

对磁盘进行分区时,Windows NT 尽可能将正确的值写入分区表字段。如果分区中的扇区总数超出可用“面,柱面,扇区”的格式描述的数目,Windows NT 则将允许的最大值写入分区表的这些字段。这样可以防止系统 BIOS 尝试根据错误数据计算“起始”和“结束”地址。

例如,假设您有一个 3.5 GB SCSI 驱动器,它连接到了 Adaptec 154x 系列 SCSI 控制器。如果禁用该适配器上的扩展扇区转换功能,它可能会向系统 BIOS 报告以下磁盘特征:
Cylinders:1023, Sides:64, Sectors: 32
				
转换结果约为 1 GB。如果启用扩展扇区转换功能,它可能会向系统 BIOS 报告以下磁盘特征:
Cylinders:435, Sides:255, Sectors: 63
				
转换结果约为 3.5 GB。

在 Windows NT 启动并正常运行后,它将使用自己的 SCSI 驱动程序直接与磁盘交互,而不再使用 BIOS INT 13 接口。因此,在正常运行期间,BIOS 参数基本上不重要。但是,如果将磁盘格式化为一个分区并用作引导驱动器,那么启用扩展扇区转换与禁用扩展扇区转换之间的差异非常重要。

如果没有扩展扇区转换,Windows NT 将注意到磁盘大于 BIOS 参数指定的大小。当 Windows NT 在初始安装期间对驱动器进行分区时,起始和结束扇区地址字段将填入它们允许的最大值。这样,尽管驱动器小于 7.8 GB,“主引导记录”代码也无法正常运行。

如果有扩展扇区转换,Windows NT 可以将起始和结束地址的有效值写入分区表,从而使分区保持可引导状态。

如果未启用扩展扇区转换并且“主引导记录”无法找到活动分区的“引导扇区”,则可能显示以下错误信息:
Error loading operating system.
- 或 -
Missing operating system.

文件系统

FAT 和 HPFS 都有 4 GB 的内部限制,因为它们使用 32 位字段存储文件大小。NTFS 使用 64 位字段存储所有大小,从而允许其数据结构处理最大为 2^64 字节(16 exabyte 或 18,446,744,073,709,551,616 字节)的卷。

该值是 NTFS 文件系统的理论限制。实际限制与前面所述的允许的最大分区大小有关,它将 NTFS 分区大小的限制约为 2 TB。由于分区表的 32 位字段是指分区中的扇区数,因此,磁盘中的扇区越大,允许的分区大小也越大。目前 Windows NT 支持的扇区大小最大为 4 KB。当扇区大小为 4 KB 时,Windows NT 可以支持 16 TB 的分区。随着新硬件或软件方案的推出,NTFS 将能处理更大的卷。

驱动器和控制器类型

IDE 驱动器用来表示柱面数、磁头数及每磁道的扇区数的数据结构与分区表和 BIOS INT 13 接口使用的数据结构不同。根据 IDE 规范,最大柱面数为 65536,最大磁头数为 16,每磁道的最大扇区数为 255。这样最大可产生 136.9 GB,但由于 BIOS/IDE 接口只能使用最小公因数,因此,对于基于 Intel 的 ISA 总线计算机上的 IDE 驱动器,存在 528 MB 的限制。一些新驱动器和驱动程序使用“增强驱动器参数表”在 IDE 驱动器的内部逻辑扇区布局与 BIOS INT 13 接口可寻址的逻辑扇区布局之间进行转换。这些驱动程序和设备可以支持更大的磁盘。 SCSI II 命令集使用它自己的扇区寻址形式,它目前支持最大约为 7 GB 的磁盘。

Windows NT 容错卷

通过使用卷集和带区集,Windows NT 和 Windows NT Advanced Server 允许从多个物理磁盘分区构建逻辑卷。该技术使 Windows NT 可以克服由各种磁盘控制器带来的物理硬件局限性,并构建比单个磁盘自身可以支持的逻辑卷更大的逻辑卷。

注意:构建的逻辑卷看起来就像物理磁盘分区一样,它仍然必须符合前面所述的分区表布局要求。这意味着构建的容错卷(如卷集)包含的扇区总数不得超过 2^32(或 2 TB,每个扇区 512 个字节)。

属性

文章编号: 114841 - 最后修改: 2004年9月17日 - 修订: 2.1
这篇文章中的信息适用于:
  • Microsoft Windows NT Advanced Server 3.1
  • Microsoft Windows NT Server 3.5
  • Microsoft Windows NT Server 3.51
  • Microsoft Windows NT Server 4.0 Standard Edition
  • Microsoft Windows NT Workstation 3.1
  • Microsoft Windows NT Workstation 3.5
  • Microsoft Windows NT Workstation 3.51
  • Microsoft Windows NT Workstation 4.0 开发员版
  • Microsoft Windows NT Advanced Server 3.1
关键字:?
kbhowto kbother KB114841
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com