Market Bulletin
Windows Product Team, May 1996
The FAT32 File System
This market bulletin is
intended to help customers understand Microsoft's FAT32 file system
for Windows 95, which is due to start shipping with new PC's equipped
with Windows 95 in the fall of 1996.
The existing File Allocation Table (FAT) file system was invented in 1977 as a way to store data on floppy disks for Microsoft Stand-alone Disk Basic. Although originally intended for floppy disks, FAT has since been modified to be a fast, and flexible system for managing data on both removable and fixed media.
A new generation of very large
hard disks will soon be shipping, and the existing FAT data
structures have finally reached the limit of their ability to support
ever larger media. FAT currently can support a single disk volume up
to 2 Gigabytes in size. FAT32 is an enhancement of the FAT file
system that supports larger hard drives with improved disk space
efficiency.
FEATURES
FAT32 provides the following enhancements over previous implementations of the FAT file system:
Supports drives up to 2 Terabytes in size.
Uses space more efficiently. FAT 32 uses smaller clusters (e.g. 4kb clusters for drives up to 8GB in size), resulting in 10 to 15% more efficient use of disk space relative to large FAT drives.
More robust. FAT32 has the ability to relocate the root directory and use the backup copy of the FAT instead of the default copy. In addition, the boot record on FAT32 drives has been expanded to include a backup of critical data structures. This means that FAT32 drives are less susceptible to a single point of failure than existing FAT volumes.
More flexible. The root directory on a FAT32 drive is now an ordinary cluster chain, so it can be arbitrarily large and located anywhere on the drive. In addition, FAT mirroring can be disabled, allowing a copy of the FAT other than the first one to be active. These features allow for dynamic resizing of FAT32 partitions. Note, however, that while the FAT32 design allows for this capability, it will not be implemented by Microsoft in the initial release.
COMPATIBILITY
CONSIDERATIONS
In order to maintain the greatest compatibility possible with existing applications, networks and device drivers, FAT32 was implemented with as little change as possible to Windows 95's existing architecture, internal data structures, Application Programming Interfaces (APIs) and on-disk format. However, because 4 bytes are now required to store cluster values, many internal and on-disk data structures and published APIs have been revised and/or expanded. In some cases, existing APIs will fail on FAT32 drives. Most applications will be unaffected by these changes. Existing utilities and drivers should continue to work on FAT32 drives. However, MS-DOS block device drivers (e.g. ASPIDISK.SYS) and disk utilities for these will need to be revised to support FAT32 drives.
All of Microsoft's bundled disk
utilities (Format, FDISK, Defrag, MS-DOS and Windows ScanDisk, and
DriveSpace) have been revised to work with FAT32. In addition,
Microsoft is working with leading device driver and disk utility
vendors to support them in revising their products to support
FAT32.
PERFORMANCE
For most users, FAT32 will have a
negligible performance impact. Some applications may see a slight
performance gain from FAT32. In other applications, particularly
those heavily dependent on large sequential write operations, FAT32
may result in a modest performance degradation. The overall effect on
raw disk performance is less than 5% however, and the overall impact
on application performance as measured by WinStone is typically less
than 1%.
DUAL-BOOT PERSONAL COMPUTERS
At this time, Windows 95 OEM Service Release 2 is the only operating system capable of accessing FAT32 volumes. Windows 3.1, MS-DOS and the original version of Windows 95 will not recognize FAT32 partitions, and thus they are unable to boot from a FAT32 volume. Microsoft's plans for supporting FAT32 in Windows NT are still being determined, but at this time, Windows NT is unable to access, or dual boot from, FAT32 volumes. At minimum, Microsoft will provide a utility to convert a FAT32 volume to an NTFS volume.
Customers who run Windows 95 in
real mode (for example, to run a game) will be able to use FAT32
volumes, however.
CREATING FAT32 DRIVES
In OEM Service Release 2, if you
run the FDISK utility on a system with a drive over 512MB, it will
ask whether to enable large disk support. If you answer yes, any
partition you create that's greater than 512MB will be marked as a
FAT32 partition.
WHY NOT JUST ADD NTFS TO WINDOWS 95?
NTFS is an advanced file system,
with support for many features not present in FAT32, including
per-file compression, security and transactioning. It is not feasible
to implement NTFS within the memory and compatibility constraints of
the Windows 95 platform. Windows 95 still supports real-mode MS-DOS
for booting and running some MS-DOS based games. Adding NTFS support
to the MS-DOS kernel would have required a significant amount of
MS-DOS memory, and thus would have precluded the use of many MS-DOS
mode games and applications. Protect-mode only support for NTFS would
not have allowed Windows to boot from an NTFS volume.
TECHNICAL
IMPLEMENTATION
Because of the compatibility considerations described above, the implementation of FAT32 involved very little change to Windows 95. The major differences between FAT32 and earlier implementations of FAT are as follows:
Two new partition types are defined: 0xB and 0xC. Both indicate FAT32 volumes; type 0xC indicates a FAT32 partition that requires Extended Int13h support (LBA).
The boot record on FAT32 drives requires 2 sectors (due to expansion and addition of fields within the BPB). As a result, the number of reserved sectors on FAT32 drives is higher than on FAT16, typically 32. This expanded reserved area allows two complete copies of the boot record to be stored there, as well as a sector in which the free space count and other file system information is stored.
The FAT is now larger, because each entry now takes up 4 bytes and there are typically many more clusters than on FAT16 drives.
The root directory is no longer stored in a fixed location. A pointer to the starting cluster of the root directory is stored in the extended BPB.
The on-disk format for directory entries is unchanged, except that the two bytes previously reserved for Extended Attributes now contain the high order word of the starting cluster number.
MS-DOS APIs that rely on intimate knowledge of the file system layout generally fail on FAT32 drives. For instance, GetDPB (Int 21h, function 32h), Int 25/26h Absolute Disk Read/Write, and most of the Int 21h, function 440Dh IOCTLs will fail on FAT32 drives. New forms of these APIs are provided in OEM Service Release 2 which work on all FAT drives.
Win32 APIs are not affected by FAT32, with the exception of one additional API called GetFreeSpaceEx() for determining the true free space on a FAT32 volume.
© 1996 Microsoft Corporation
Microsoft, MS-DOS, Windows and Win32 are registered trademarks
and Windows NT is a trademark of Microsoft Corporation.