Windows NT Boot Process and Hard Disk Constraints
ID: Q114841
|
The information in this article applies to:
-
Microsoft Windows NT operating system version 3.1
-
Microsoft Windows NT Advanced Server version 3.1
-
Microsoft Windows NT Workstation versions 3.5, 3.51, 4.0
-
Microsoft Windows NT Server versions 3.5, 3.51, 4.0
SUMMARY
This article describes hard disk size constraints under Windows NT and
Windows NT Advanced Server. To understand these constraints, it is
necessary to understand both the data structures that define the disk
partitions and the interactions between Windows NT and the system BIOS
interface used during the hardware and operating system's boot process.
MORE INFORMATION
The Partition Table
The data structure that describes the hard disk's partitions is known
as the partition table. It consists of a maximum of four 16-byte entries.
Each entry has 10 fields that describe the following attributes of a
partition:
FIELD SIZE
----------------- --------
Boot Flag 1 byte
Starting Side 1 byte
Starting Cylinder 10 bits
Starting Sector 6 bits
System Indicator 1 byte
Ending Side 1 byte
Ending Cylinder 10 bits
Ending Sector 6 bits
Relative Sectors 4 bytes
Number of sectors 4 bytes
System Indicator
The System Indicator is used to specify the type of file system that is
contained in the partition. Some common values include:
VALUE FILE SYSTEM
----- -----------
0x0B Primary Fat32 Partitions up to 2047 GB
0x0C Same as 0x0B, uses Logical Block Address Int 0x13 extensions
0x0E Same as 0x06, uses Logical Block Address Int 0x13 extensions
0x0F Same as 0x05, uses Logical Block Address Int 0x13 extensions
0x05 Extended partition
0x06 BIGDOS File Allocation Table (FAT) format.
0x07 Installable File System (IFS), eg: HPFS and NTFS
When a partition is a part of a Fault Tolerant (FT) set, Windows NT sets
the high bit of the System Indicator to distinguish it from non-FT
partition of the same type. For example, an FT FAT partition has a System
Indicator value of 0x86 and an FT NTFS partition has a System Indicator
value of 0x87.
When a member of an FT set is disabled, Windows NT sets the two highest
bits. For example, a disabled FAT partition has a System Indicator value
of 0xC6 and a disabled FT NTFS partition has a System Indicator value of
0xC7.
Boot Flag
The Boot Flag indicates which partition is active or bootable. Only one
partition on a disk can be active. The Boot Flag value for the active
partition is set to 0x80. Other partitions on the disk are set to 0x00. The
Master Boot Record (described later in more detail) searches for this flag
to locate the active boot sector.
Starting and Ending Side, Cylinder, and Sector
The Starting and Ending Side, Cylinder and Sector fields are very important
with respect to how Windows NT interacts with the disk.
The maximum number of Sides (read/write heads) that can be represented with
1 byte is 256. The maximum number of Cylinders that can be represented with
10 bits is 1024. The maximum number of Sectors that can be represented with
6 bits is 63 because Sectors start counting with 1 (versus Cylinders and
Sides which start counting with 0).
The Cylinder value, represented by 10 bits, is too large to fit into a
single byte. To store 10 bits, two bits are taken from the byte which
stores the 6 bit Sector value.
With a standard sector size of 512 bytes, the 24 bits used to record the
starting and ending sector addresses translates into a maximum possible
partition size of 7.8GB (8,455,716,864 bytes) which can be described with
these fields. This is particularly important because the same field sizes
are employed by the INT 13 BIOS interface which defines how the system BIOS
interacts with the hard disk.
Relative Sectors
The Relative Sectors represents the offset from the beginning of the
partition table to the beginning of the partition, counting by sectors.
Number of Sectors
The Number of Sectors represents the total number of sectors in the
partition.
NOTE: The Relative Sectors and Number of Sectors fields are each 32 bits in
size. Under most conditions, together they contain the same information as
Starting and End Side, Cylinder, and Sector values that are represented
with a total of 24 bits for Starting and 24 bits for Ending.
Windows NT Boot Process
On Intel-based computers, the system BIOS controls the initial operating
system boot process. After the initial Power On Self Test (POST) when
hardware components are initialized, the system BIOS identifies the boot
device. Typically, this is a floppy disk or a hard disk. In the case of the
hard disk, the BIOS reads the first physical sector on the disk, called the
Master Boot Sector, and loads an image of it into memory. The BIOS then
transfers execution to that image of the Master Boot Sector.
The Master Boot Record contains the partition table and a small amount of
executable code. The executable code examines the partition table and
identifies the active (or bootable) partition. The Master Boot Record then
finds the active partition's starting location on the disk and loads an
image of its first sector, called the Boot Sector, into memory. The Master
Boot Record then transfers execution to that Boot Sector image.
Whereas the Master Boot Record is generally operating system independent,
the Boot Sector of the active partition is dependent on both the operating
system and the file system. In the case of Windows NT and Windows NT
Advanced Server, the Boot Sector is responsible for locating the executable
file, NTLDR, which continues the boot process. The only disk services
available to the Boot Sector code at this stage of system boot up are
provided by the BIOS INT 13 interface. The Boot Sector code must be able to
find NTLDR and file system data structures such as the root directory, the
File Allocation Table (FAT) in the case of an MS-DOS FAT volume or the
Master File Table in the case of an NTFS volume. These must be present
within the area of the disk addressable by the 24-bit side, cylinder,
sector structure used by the BIOS INT 13 interface and the partition table.
This limits the size of the system partition to 7.8 gigabytes regardless of
which file system is used.
NOTE: Other constraints may apply depending on the computer hardware and
file system. Some of these constraints are discussed below.
In order to accommodate partitions larger than 7.8 gigabytes, Windows NT
ignores the values in the Starting and Ending sector address fields of the
partition table in favor of the Relative Offset and Number Of Sectors
fields. This provides eight additional bits to represent sectors. These
additional bits allow partitions to be described with up to 2^32 sectors.
With a standard sector size of 512 bytes, the 32 bits used to represent the
Relative Offset and Number of Sectors translates into a maximum possible
partition size of 2 terabytes or (2,199,023,255,552 bytes).
When partitioning a disk, Windows NT will write the correct values to the
partition table fields whenever possible. When the total number of sectors
in a partition exceeds the number which can be described in Side, Cylinder,
Sector notation, Windows NT writes the maximum permitted values to these
fields in the partition table. This prevents the system BIOS from
attempting to calculate the Starting and Ending addresses based on
erroneous data.
For example, assume you have a 3.5GB SCSI drive attached to an Adaptec 154x
series SCSI controller. If the extended sector translation feature is
disabled on the adapter, it might report the following disk characteristics
to the system BIOS:
Cylinders: 1023, Sides: 64, Sectors: 32
which translates to about 1 gigabyte. With the extended translation
enabled, the device might be reported as having these characteristics:
Cylinders: 435, Sides: 255, Sectors: 63
which translates to about 3.5GB.
Once Windows NT is up and running, it uses its SCSI drivers to directly
interact with the disk without using the BIOS INT 13 interface. So, during
normal operation the BIOS parameters are largely unimportant. However, the
differences are critical if the disk is to be formatted with a single
partition and used as the boot drive.
Without extended translation, Windows NT notices that the disk is larger
than the BIOS parameters indicate. When Windows NT partitions the drive
during initial installation, the starting and ending sector addresses will
be filled in with their maximum possible values. This makes it impossible
for the Master Boot Record code to function correctly despite the fact that
the drive is less than 7.8 gigabytes.
With extended translation, Windows NT will be able to write valid values
for the starting and ending addresses into the partition table, and thus,
the partition remains bootable.
These error messages may appear when extended translation is not enabled
and the Master Boot Record is unable to locate the Boot Sector of the
active partition:
Error loading operating system.
-OR-
Missing operating system.
File Systems
FAT and HPFS both have internal limits of 4 GB due to the fact that they
use 32-bit fields to store file sizes. NTFS uses 64-bit fields for all
sizes, permitting its data structures to handle volumes up to 2^64 bytes
(16 exabytes or 18,446,744,073,709,551,616 bytes).
This value is the theoretical limit for the NTFS file system. Practical
limits having to do with the maximum allowable partition size described
above limit the size of an NTFS partition to approximately 2 terabytes.
Because the 32-bit fields of the partition table refer to the number of
sectors in the partition, disks with larger sector sizes translate into
larger permissible partition sizes. Currently Windows NT supports sector
sizes up to 4 Kilobytes. With 4KB sectors, Windows NT can support a 16
terabyte partition. As new hardware or software schemes become available,
NTFS will be able to handle substantially larger volume sizes.
Drive and Controller Types
IDE drives use a different data structure for representing the number of
cylinders, heads, and sectors per track than the partition table and BIOS
INT 13 interface. According to the IDE specifications, the maximum number
of cylinders is 65536, the maximum number of heads is 16, and the maximum
number of sectors per track is 255. This yields a maximum of 136.9
gigabytes, but because the BIOS/IDE interface has been constrained to use
the lowest common denominator, the result is a limit of about 528MB for an
IDE drive on an Intel-based ISA bus computer. There are new drives and
drivers which use an "Enhanced Drive Parameter Table" to translate between
the logical sector layout internal to the IDE drive and the logical sector
layout addressable by the BIOS INT 13 interface. These drivers and devices
can support larger disks.
The SCSI II command set uses its own form of sector addressing which
currently supports disks as large as approximately 7 gigabytes.
Windows NT Fault Tolerant Volumes
Through the use of volume sets and stripe sets, Windows NT and Windows NT
Advanced Server permit the construction of logical volumes from multiple
physical disk partitions. This technique permits Windows NT to overcome the
physical hardware limitations imposed by various disk controllers and
construct a logical volume larger than a single disk can support by itself.
NOTE: A logical volume is constructed to look just like a physical disk
partition and it still must conform to the partition table layout described
above. This means that a fault tolerant construct, such as a volume set,
must have no more than a total of 2^32 sectors (or 2 terabytes at 512 bytes
per sector).
Additional query words:
prodnt gb eb
Keywords : kbother ntboot ntfault ntfilesys
Version : winnt:3.5,3.51,4.0
Platform : winnt
Issue type :
Last Reviewed: August 11, 1999