Why Can't I Use All of My Drive?

Archived content. No warranty is made as to technical accuracy. Content may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.

By John Sheesley

flaglogo

Published in TechRepublic's Windows NT Administrator Report

You've just purchased a shiny new server with acres of hard drive space. While installing Windows NT Server on it, you discover that the operating system won't let you use all of your hard drive in one giant partition. Why not? In this article, we'll explore the reasons why you can't always use all of your drive and what you can do about it.

False Advertising?

If you read any of the technical information about Windows NT, you quickly discover that Microsoft designed NTFS to support partition sizes up to 16 exabytes in size. This far exceeds the sizes of drives currently available for network servers. Then why won't Windows NT install and boot from a drive partition larger than 8 GB? And why must you go through all sorts of contortions to make it boot from drives larger than 4 GB?

There are two reasons why you can't install or boot Windows NT from partitions larger than 8 GB. Both reasons have nothing to do with technical problems within Windows NT. The first reason is due to limitations within the FAT file system. The second has to do with BIOS limitations in Intel-based computers.

Too Much FAT

The first reason you can't use all of your hard drive has to do with Windows NT's use of FAT during the installation process. When you install Windows NT on your server, it must first create and format a FAT partition. During the installation process, you can choose to convert the partition to NTFS. Unfortunately, because you must first use FAT, you must deal with all of FAT's limitations.

Microsoft designed FAT when it designed the original version of MS-DOS. Microsoft designed FAT to contain 64 KB of information about file locations. At the time, PCs almost never shipped with hard drives. Hard drives that did come with PCs usually didn't exceed 10 MB in size; 64 KB was more than enough space to hold the necessary file information.

The first version of FAT was limited to partitions of 32 MB because MS-DOS described file locations in 512-byte sectors. When Microsoft introduced MS-DOS 4.0, PCs commonly shipped with hard drive sizes that exceeded the 32-MB limit. Microsoft solved this limitation by changing FAT to address clusters rather than physical sectors. Cluster sizes depended on the size of the drive, but the 64-KB limit still existed for FAT entries. Because of programming limits, cluster sizes also couldn't exceed 64 KB. This change removed barriers in existence at the time, but created a new one: the 4-GB limit. By doing a little math, you discover the 32-MB FAT limit: 512 * 64 KB = 32 MB. You can see FAT's current partition limit by multiplying the maximum size of FAT by the maximum cluster size allowed by MS-DOS: 64 KB * 64 KB = 4.096 GB.

In the mid-1980s, when MS-DOS 4.0 was designed, 4 GB wasn't viewed as a limit that would soon be reached. Likewise, when Microsoft designed Windows NT in the mid-1990s, 4 GB didn't seem like a limit that was going to be a big problem. Drive sizes were getting larger, but Microsoft included the NTFS file system to deal with large drives. Hard drive manufacturers built bigger drives cheaper and faster than Microsoft anticipated.

For backward compatibility, Microsoft designed Windows NT's installation program to format a new hard drive with FAT. Because of this, Windows NT inherits a limitation that appeared almost 15 years ago.

By jumping through a few hoops, you can configure Windows NT's Setup program to initially format your new hard drive with NTFS rather than FAT. Although the details of doing so are beyond the scope of this article, it requires you to run Setup across a network using Setup's UNATTEND.TXT file and ExtendOemPartition switch. While this may get you past FAT's limitations, you'll bump into the limitation discussed below if you try to create an NTFS partition larger than 8.4 GB.

BIOS Baggage

The second reason you can't use all of your drive at boot time is due to limitations in your computer's BIOS. More specifically, it deals with how Windows NT deals with the Interrupt 13 function in the BIOS.

When your computer boots, it has no idea what operating system resides in its hard drive. The computer's BIOS initiates low-level processes on the hard drive to activate the operating system. As the operating system begins, it can't communicate with the computer's drive system using its own device drivers until the drivers load. Until the drivers load, the operating system uses low-level BIOS commands to communicate with the hard drives.

Windows NT makes a system call to the BIOS through Interrupt 13. Interrupt 13 allows the operating system to address specific sectors on your computer's hard drive.

Like FAT, the BIOS interrupts were defined in the early 80s at the dawn of the PC era. Also like FAT, the BIOS interrupts haven't changed much to maintain backward compatibility. Interrupt 13 is one of those interrupts that has pretty much been the same since its inception.

Interrupt 13 was designed to use 24 bits to describe sector locations on a hard drive. The sector locations are defined by a combination of heads, cylinders, and sectors per track. The maximum number of heads definable is 256, the maximum number of cylinders is 1,024, and the maximum number of sectors per track is 63. By doing a little math, you quickly reach Interrupt 13's maximum number of addressable sectors of 16,515,072. Because drives are addressed at 512 bytes per sector, a little more math reveals Interrupt 13's maximum addressable partition size of 8.4 GB. Because Interrupt 13 can't see a partition larger than 8.4 GB, Windows NT can't use Interrupt 13 to talk to the drive if you have partitions larger than this limit.

Why don't Windows 98 and Windows 2000 have this problem? Computer manufacturers have recently extended Interrupt 13 to overcome its 8.4-GB limit. Unfortunately, because Windows NT was designed before the extensions were created, it doesn't know about the extensions and can't use them.

So What Do You Do?

Unfortunately, you're stuck. While you can overcome the 4-GB FAT limit with some work, there's nothing you can do about the 8.4-GB limit imposed by BIOS. Even a Service Pack won't help in this case, because naturally you must install Windows NT before you can apply a Service Pack.

If you have large drives on your server, your only choice is to create multiple partitions on your drives. The first partition you create must be under the 8.4-GB limit. To make life easier, you may as well limit this partition to 4 GB. This partition will be your boot partition where you'll install all of Windows NT's system files.

Now you can create additional data partitions of any size on your hard drive. Windows will be able to see these data partitions because it can use its own drivers to address the drives rather than low-level BIOS routines.

Your final solution is to wait for Windows 2000. Microsoft designed Windows 2000's Setup program to format with NTFS first, bypassing FAT limits. Windows 2000 also supports Interrupt 13 extensions, bypassing Windows NT's old BIOS limits.

Conclusion

Microsoft designed Windows NT and NTFS to access very large drives on your server. Unfortunately, Windows NT can't boot from partitions larger than 4 GB without a lot of work and not from partitions larger than 8.4 GB at all. This inability comes from limitations inherent in FAT and the way Windows NT talks to your computer's BIOS. Until you upgrade to Windows 2000, you must create separate boot and data partitions on your server if you have very large drives.

We at Microsoft Corporation hope that the information in this work is valuable to you. Your use of the information contained in this work, however, is at your sole risk. All information in this work is provided "as-is", without any warranty, whether express or implied, of its accuracy, completeness, fitness for a particular purpose, title or non-infringement, and none of the third-party products or information mentioned in the work are authored, recommended, supported or guaranteed by Microsoft Corporation. Microsoft Corporation shall not be liable for any damages you may sustain by using this information, whether direct, indirect, special, incidental or consequential, even if it has been advised of the possibility of such damages.