Microsoft KB Archive/114841

From BetaArchive Wiki

Article ID: 114841

Article Last Modified on 5/6/2003



APPLIES TO

  • 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 Developer Edition
  • Microsoft Windows NT Advanced Server 3.1



This article was previously published under Q114841


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 KB114841