I recently did some file recovery off of a hosed NTFS partition and ran into some interesting and useful experiences as I moved these files onto a FAT32 drive for sharing between my Windows, Linux, and Mac operating systems. It is in this spirit that I spill my ink today.
(The quotations you see below are all thanks to Wikipedia unless otherwise noted.)
First a little background on the matter. Windows, in general, is capable of recognizing, mounting, and reading and writing FAT32 drives up to 8 TB in size:
“This [cluster scheme] allows for drive sizes of up to 8 terabytes with 32KB clusters, but the boot sector uses a 32-bit field for the sector count, limiting volume size to 2 TB on a hard disk with 512 byte sectors.”
Windows built-in partitioning tool (fdisk) limits formatting of FAT32 volumes to 32 GB:
“Windows 2000 and Windows XP can read and write to FAT32 file systems of any size, but the format program included in Windows 2000 and higher can only create FAT32 file systems of 32 GB or less.”
You will sometimes see claims that this only applies at installation, but that’s not the case. I tried repeatedly to format my 500 GB drives as FAT32 so that I could share them between all of my machines. In classic fashion I received no useful error message. At some point (presumably about 32 GB into the process) the formatting would fail. I tried it using both the quick and slow formatting options, and I tried it running from the command line. Windows has a command (format.exe) which purports to be able to format at larger volume sizes, but I didn’t discover it at the time. Besides, after trying every possible use of the built-in formatting tools and seeing my attempts constantly failing I was keen to try a non-Microsoft solution.
I don’t recall the utility I finally used. That machine isn’t around anymore. But, Google is your friend and so I leave it up to you to find a nice formatting tool. Post your favorite in the comments if you’d like.
[I remembered which utility it was. It’s called SwissKnife and it’s free.]
Now we come to the next stumbling stupidity. FAT32 has a file size limitation:
“The maximum possible size for a file on a FAT32 volume is 4 GB minus 1 “null” byte (232−1 bytes).”
When you are transfering a large folder with a number of files in it where one of those files is larger than 4GB it will fail and you will get an error—of course. However, the error is less obvious than might be useful. You will be informed that you have run out of disk space on the destination drive:
As can be seen in this example, there is plenty of disk space on both the FAT32SWAP drive (7.7 GB) and the 500A drive (255 GB) for the file I tried to move to them (said file being 4.35 GB). Not a very honest error message. The truth is that the file cannot be moved because the file (size) itself is not compatible with the structure of the file system. (As a side note, you can see here that Windows is having no troubles with that 500 GB FAT32 drive.)
Unfortunately, it doesn’t look like there’s a way around this one. However, the problems of FAT32 may not any longer need be suffered for the sake of its universality. There are solutions for Linux and Mac which allow for the writing to NTFS partitions, and there are solutions for Windows for reading and writing to ext2 and HFS+ partitions. I have not yet tested any of these solutions, but they seem to be fairly well received.
So, stop beating yourself up. It’s not your fault. It’s Microsoft’s. They designed the file system, sure, but they also put forward these useless and dishonest error messages. But don’t beat up Bill either. Switch to Ubuntu.