All three of the file systems (FAT16, FAT32 and NTFS) work like this. So what is the difference between FAT16 and 32? The major difference lies in how much space each file system can handle and how efficiently the file system does it. The problem with file efficiency arises because each cluster on a hard disk can only store one file! That means each group can only be made to handle one item. To illustrate my point, consider the following situation:
The file system decides to divide all the people into groups of 8 (we'll get into how this number of chosen later). Each of these 8 people has a bag that can store stuff.
Now the file system hands the first group a huge box of pencils and says "store this." The eight people start to put the pencils in their bags, and after one fills up, they move on to the next. The box of pencils fills 7 bags.
The file system tries to hand the group another small thing to put into the last 8th bag which is empty. But the group says "sorry, we can only handle one thing. You gave us one already." The file system says "fine, but you are wasting 12% of your space (1/8 = 0.125)" The group tells the file system "sorry, we can't help it." The file system moves on.
Now the file system gives the next group of 8, only a single pencil to store. The group stores it and refuses to take anything else. The file system informs the group that they are wasting almost 100% of their storage space. But there is nothing they can do.
These stories may seem silly, but they do get the point across, which is that as the size of the clusters increase, the amount of space you waste will increase. It is true that if you can make all your files precisely the same size as your cluster, then you'd have 0% waste. But that is not possible. Most typical files are not very big, and if the cluster size gets huge, then the waste can be quite alarming.
So now the question becomes how does my computer figure out the size of each cluster? The answer is simple, take the size of your hard drive, and divide that by the number of clusters involved. So what I am saying is this:
Cluster Size = Disk Space / Number of Clusters Possible
And since Cluster Size is directly proportional to wasted space (in other words, as the cluster size increases, the waste space also increases), we can see that what we want is a file system that can handle a large number of clusters. And this is where FAT16 and FAT32 differ. FAT32 can handle a lot more groups then FAT16 can.
But why is that? The simple explanation is that FAT32 can count a lot higher than FAT16. As I said above, each cluster is numbered by the file system. FAT16 uses 16 bit numbers to count the clusters. That means FAT16 uses binary numbers of 16 digits. The consequence is that the highest FAT16 can count to is 2^16 - 1 (yes, it is in fact 2^16 - 1, because there are 2^16 digits between 0 and 2^16 - 1. Zero also has to count), or 65535. So there can only be 65535 clusters to each FAT 16 disk. What that means for you, is that as your hard drive gets huge, your cluster count remains the same, so your cluster size increases.
But don't think for a minute that you can just indefinitely increase the size of each cluster. That can't happen. The reason is that every sector inside a group also has to be numbered. Each sector has an index number that is written inside a byte. A byte is 8 bits. What that means is that the number has to be less than 2^8 (255 to be exact). And since the way you decrement in computers is to go by powers of 2, that means you can only store a number as big as 2^7, or 128 sectors. So now let's do a little bit of math:
You have a max of 65535 clusters,
You have a max of 128 sectors per cluster
You have 512 bytes per sector.
That means your max FAT16 size is = 65535 * 128 * 512 = 4 GB
Wait a second? That's not right! I thought the limit was 2GB? And I thought each cluster in FAT16 can be only 32K, not 64K! And you would be right. The problem is that 128 sectors * 512 bytes per sector is 65536, which is one more than a 16 bit number can handle. So again, we decrement to 64 sectors per cluster, which yields us 32K per cluster. And 32K per cluster * 65535 is roughly 2GB.
- Xin Li -
Page 1: This page
Page 2: More About FAT (FAT
Page 3: New Technology File
Page 4: File Auditing / DAta
Recovery / Conclusion