h4ckmy© Information Disclosure
h4ckmy©

        HIGHLIGHTS

Information Disclosure

        Windows 95 & FAT32


FAT and SLACK?

DATA IS STORED on hard drives in specially numbered clusters, which the FAT keeps a record of so it knows where to find the data when it is requested. The FAT16 file system can only address 65,518 clusters on a partition, regardless of the size of the disk. This means that the larger the disk partition the larger the cluster size will be.

FAT16
Partition Size (up to)       Cluster Size
    16M                          4,096 bytes (FAT12)
    32M                          2,048 bytes (DOS versions < 4.0)
    128M                        2,048 bytes (DOS versions >= 4.0)
    256M                        4,096 bytes
    512M                        8,192 bytes
    1G                          16,384 bytes
    2G                          32,768 bytes
                                                                           [FAT16 only supports partition up to 2G]
FAT32
Partition Size (up to)       Cluster Size
    260M                           512 bytes
      8G                                  4K
    16G                                  8K
    32G                                16K
    32G to 2T                        32K
                                                                           [FAT32 supports partition up to 2T]

The FAT16 file system is designed in such a way that disk partitions of more than around 256M use unnecessarily large cluster sizes, resulting in significant amounts of "slack" space on the hard drive. "Slack" space is the unused storage space within each cluster - if an 11K file is saved on a drive with a cluster size of 16K, 5K of the space within the cluster it was saved becomes unusable for as long as the ifle resides there.

Each file on the partition is stored in a series of clusters through the same method. Once one cluster is full, the next one is written to and so on, until the file is completely written to disk. It may at first appear inconsequential, but slack space really adds up.

In fact, the optimal partition size for data storage with FAT16 file system is less than 128M, which by today's standard is almost completely unworkable. A 512M FAT partition, for example, uses clusters of 8,192 bytes each and a 2G FAT partition uses a huge 32K of space for each cluster.

Here is where FAT32 might come in very handy because for partitions up to 8G in size, FAT32 will use clusters of only 4K resulting in a significant reduction of slack space. Also, we know that in the future hard disks are going to increase in size to accomodate our storage needs. Thus a file system such as FAT32 that recognises and makes use of drives up to a staggering 2 terabytes (2T) in size, as well as the improvement in available drive space, would seem to be a useful tool for users in years to come.

There is a downside, however. Smaller cluster sizes mean there will be more clusters on a partition and the more clusters there are, the longer it may take for drives to access data. Microsoft makes no argument about this, althought it says that for the average user FAT32 performance degradation will be "negligible". It says that for programs "heavily dependent on large sequential read or write operations, FAT32 may result in a modest performance degradation".

On the other hand, more of the actual space on the disk drive is made available to you through FAT32, but on the other you are asking your hard drive to do more work, which can result in a loss of performance.

COMPATIBILITY

FAT32 isn't currently compatible with other operating systems such as DOS, Linux and OS/2, nor it is completely backward compatible with programs designed for FAT16 systems.

It would be great if every OS used the same file system without problems. However, this is almost impossible because the file system used by each OS is often specific to that OS and usually dislikes other file systems trying to get in the way. The advent of FAT32 does little to change this scenario and it looks as though programs like System Commander and the like will be a useful choice for those that prefer or need to have multiple operating systems on the same computer.

FAT32 is not all that different to FAT16, however and most programs designed for FAt16 will work with FAT32. Notable exceptions are programs that take a hard look at the FAT such as antivirus, disk compression and disk defragmentation tools. While this constitutes a small portion of available software, it happens to be a very useful portion when it comes to system maintenance.

At present, there are a few programs that simply won't work with FAT32, although Microsoft promises it is working closely with vendors to support them and to help in "reviving their products to support FAT32".

Part of the problem with program compatibility is in the different ways the FAT is stored and configured. Whereas FAT16 stores all its information in the MBR (Master Boot Record) on the first table of the first drive, FAT32 does things slightly different.

NEW FEATURES

There are many interesting changes in FAT32 that make it more reliable and flexible.

Firstly, the boot information structure (otherwise known as the BPB) has been extended and a new disk structure called BIGFATBOOTFINFO has been added. This tracks free clusters on your drive which allows FAT32 to compensate for the increased number of clusters and improve write times to the drive.

On top of this, the root directory no longer needs to be on the root, per se and a back-up copy of the FAT is also accessible in case of damage to the default copy. Also, the root directory of a FAT32 drive is just an ordinary cluster chain which means that there is no limitation on the number of root directory entries - a problem that's plagued FAT16 since its inception.

A very interesting ability of FAT32 is that it allows for partitions to be dynamically resized, a function previously only available with third-party utilities such as Partition Magic. This is due to the back-up FAT which no longer needs to be mirrored, allowing it to be active as an original FAT. While information on this feature is scarce, presumably a drive can be resized by saving changes to the non-active FAT and then rebooting using the newly changed FAT.

Dynamic resizing has not been implemented in current release of FAT32 found in OSR2 though it is likely to appear in Windows 98.

UPGRADING TO FAT32

Currently, FAT32 is an option under OSR2 and unless you only run Windows 95 on your machine, there are no compelling reasons to utilise it. This is partly because the only operating system that can currently read FAT32 is OSR2. Moreover, it is possible some of your existing software will run into problems, particularly disk-based utilities.

However, if you have a large hard drive that you'd like to squeeze every last byte out of, using FAT32 is certainly the way to go.

If you are worried about cross-platform compatibility, a number of industrious programers have come up with solutions for other file systems to access files on FAT32 partitions. There is an excellent web page listing the various patches available at http://students.ceid.upatras.gr/~gef/fs/index.html

If you are using OSR2 and do decide to go ahead and implement FAT32, it is a fairly simple procedure and there are even a few tricks and tips to help you customise how it works as well. Firstly, to format a hard drive of over 512M with FAT32, you need to enable "large disk support" inside FDISK (the OSR@ version only). Next you'll need to back up your data and reboot after enabling large disk access, the format the drive. However, note that the OSR2 version of FDISK will not prompt you to reboot after enabling FAT32 support. You have to do this manually before you format the drive.

There are also a few undocumented features of OSR2 relating to the installation of FAT32 that allow you to tinker with your settings if your so choose (at your own risk). With FDISK, if your use the flag /FPRMT it will allow you to format partitions less than 512M, although this is recommended for advanced users only. Secondly, if you are thinking that 4K is too large for a cluster size, there is an undocumented feature of the OSR2 FORMAT command:

FORMAT /z:n

where "n" multiplied by 512 bytes equals your cluster size. This enables you to set the cluster size to your liking irrespective of the settiings shown above. Take note that your cluster size directly limits the maximum size of your partition.

The bottom line is that you probably don't need FAT32 at the moment. Given the ever increasing size of hard drives and the limitations of FAT16, there is no doubt that FAT32 will slowly become the dominant file system for Windows 98 and beyond.