Reply by robe...@yahoo.com●June 18, 20082008-06-18
On Jun 18, 4:53=A0pm, CBFalconer <cbfalco...@yahoo.com> wrote:
> "robertwess...@yahoo.com" wrote:
> > Vladimir Vassilevsky <antispam_bo...@hotmail.com> wrote:
> >> robertwess...@yahoo.com wrote:
>
> >>> My mistake - I was editing and got a FAT16 comment mixed in
> >>> with the FAT32 comment. =A0FAT32 volumes cannot be smaller than
> >>> 32MB, and FAT16 volumes must be smaller than 2GB. =A0FAT32
> >>> volumes can be up to 2TB.
>
> >> Why 2 TB ? 28 bit FAT x 32k cluster =3D 8 TB.
>
> > There's a 32 bit sector count field in the BPB (at +32). =A0If
> > that got patched, I don't know of anything that would prevent an
> > 8TB volume.
>
> The systems using the file system have to keep track of file size.
> They can't measure things larger than 2GB in an int (which they
> need, in order to handle negative offsets in the software).
> Allowing files to grow above 2GB would lead to nasty undetectable
> errors when the file grew past 2GB.
Current FAT32 implementations handle 4GB files just fine (FAT16 can't
support a volume big enough for that size file unless you use large
sectors, FAT12 can't support that big a volume period). I could
certainly believe that some older ones squawked, or that you might
find an unusual one with an issue. Applications are also vulnerable
to bugs at that point (and I'm certain we could find plenty that had
problems at that point), but that's a bit of a different issue.
I remember when file sizes first started bumping past 2GB on
mainframes - we definitely ran into problem both in the file systems
(especially VSAM), and in applications (although since these tended to
all be structured files, it was more often the file system with
issues, since the application typically didn't use that offset
directly).
NTFS (along with many other file systems) support files far in excess
of 4GB. All the native Win32 file APIs use 64 bit values for offsets
(even on FAT =96 you just can=92t create a file big enough to use the high
word there), although in some cases there have been a couple
iterations of those - the original using a pair of 32 bit values, and
a more recent one using a 64 bit value). Again, I'm sure there are
applications with issues at both 2GB and 4GB.
The 4GB file size limitation on FAT is a problem for many
applications, like media ones, which can produce quite large files,
and some actually go to the trouble of segmenting files so that your
video source ends up as multiple 4GB files on your 100+GB volume. Or
just insist on NTFS...
And we are talking volume sizes, not file sizes.
Reply by robe...@yahoo.com●June 18, 20082008-06-18
On Jun 18, 4:55=A0pm, larwe <zwsdot...@gmail.com> wrote:
> On Jun 18, 12:57=A0pm, "robertwess...@yahoo.com"
>
> <robertwess...@yahoo.com> wrote:
> > There's a 32 bit sector count field in the BPB (at +32). =A0If that got
> > patched, I don't know of anything that would prevent an 8TB volume.
>
> Apparently Windows Me (blerk) can be coerced into using these big
> volumes. Of course, WHY is another question.......
While I won't say it doesn't (and I don't have an Me installation
around to test), it does strike me as odd - first there are a number
of places 32 bit sector numbers float around Win9x, and while some of
the interfaces (for example *some* of the DCB structures) have
provisions for longer sector numbers, I'm not sure how much actually
treats those pairs of ULONGs and 64 bit numbers (rather than just
filling in the low part). Then there's the issue of where you'd store
the longer sector count in the BPB (presumably at the end, if both the
16 and 32 bit sector count fields are zero), and then there's the
issue of why this would be worth it for only a four fold increase in
storage.
And IIRC, WinMe never supported 48 bit LBA, so any non-SCSI physical
disks would have to have been limited to 128GB.
Further, we're talking about an OS that only shipped between 2001 and
2003, and even extended support has been gone for a couple of years
now. What would have been to motivation to support volumes that
size? In 2003, you'd have needed to build an array of 17 120GB*
drives to get to the 2TB limit. On a machine running Me?!
Could MS have gone to the trouble? Sure, but why... And if they had
done it, why not allow Win2K, XP or Vista to mount such a volume?
Heck - it would have made it impossible to upgrade such a machine to
Win2K or XP. Of course NT never actually supported FAT32 with MS
drivers (there was at least one third party drive that allowed you to
mount a FAT32 volume on NT, and then FAT32 support was added by MS to
Win2K), so there's precedent.
There is certainly some (OK, minimal now, but expected to grow)
pressure from the embedded world to support a larger volume with a
nice simple FS like FAT32, but then it would make sense to allow
cluster numbers above 2**28 too. You could get to 128TB before
needing major surgery on the format. And it would still leave you
with a 4GB file size limitation. Of course MS is pushing (sort-of)
exFAT instead, and the rational for such a format is considerably
reduced if MS isn=92t going to ship support for it in Windows.
*I *think* you could get 120GB drives at the end of '03...
Reply by larwe●June 18, 20082008-06-18
On Jun 18, 12:57=A0pm, "robertwess...@yahoo.com"
<robertwess...@yahoo.com> wrote:
> There's a 32 bit sector count field in the BPB (at +32). =A0If that got
> patched, I don't know of anything that would prevent an 8TB volume.
Apparently Windows Me (blerk) can be coerced into using these big
volumes. Of course, WHY is another question.......
Reply by CBFalconer●June 18, 20082008-06-18
"robertwessel2@yahoo.com" wrote:
> Vladimir Vassilevsky <antispam_bo...@hotmail.com> wrote:
>> robertwess...@yahoo.com wrote:
>>
>>> My mistake - I was editing and got a FAT16 comment mixed in
>>> with the FAT32 comment. FAT32 volumes cannot be smaller than
>>> 32MB, and FAT16 volumes must be smaller than 2GB. FAT32
>>> volumes can be up to 2TB.
>>
>> Why 2 TB ? 28 bit FAT x 32k cluster = 8 TB.
>
> There's a 32 bit sector count field in the BPB (at +32). If
> that got patched, I don't know of anything that would prevent an
> 8TB volume.
The systems using the file system have to keep track of file size.
They can't measure things larger than 2GB in an int (which they
need, in order to handle negative offsets in the software).
Allowing files to grow above 2GB would lead to nasty undetectable
errors when the file grew past 2GB.
--
[mail]: Chuck F (cbfalconer at maineline dot net)
[page]: <http://cbfalconer.home.att.net>
Try the download section.
** Posted from http://www.teranews.com **
Reply by robe...@yahoo.com●June 18, 20082008-06-18
On Jun 17, 8:34=A0pm, "d...@nadler.com" <d...@nadler.com> wrote:
> On Jun 17, 9:20 pm, "robertwess...@yahoo.com"
> > My mistake - I was editing and got a FAT16 comment mixed in with the
> > FAT32 comment. =A0FAT32 volumes cannot be smaller than 32MB, and FAT16
> > volumes must be smaller than 2GB. =A0FAT32 volumes can be up to 2TB.
>
> Um, can't FAT16 go to 2GB ?
Just under. The maximum number of clusters on a FAT16 volume is 65524
(not 65536). So the total data area is less than 2GB in all cases.
Looking at the total volume size, the typical size of the reserved
areas (boot stuff, FATs, root directory), will be typically be under
300KB (unless you've got a very large root directory - which you
shouldn't, because many systems won't handle a FAT12/16 root directory
with more than the standard 512 entries, or you have more than two
copies of the FAT =96 again, that=92ll cause compatibility problems), and
that, plus 65524*32K, still doesn't quite get you to 2GB.
Also, it's a pretty bad idea to hit the cluster limit exactly, since
there's a ton of bad code out there with off-by-one or off-by-a-few
errors in their FAT-type* detection code, so it's strongly recommended
that you avoid formatting a volume with cluster counts closer than
about +/-16 to the limits. Typically you'd go up or down one cluster
size, and end up with twice or half as many clusters, and go from
there.
*It's the number of clusters (and *only* the number of clusters) which
determines the type of volume: Less than 4085 clusters (IOW 1-4084),
it's FAT12, 4085-65524 it's FAT16, and 65525 or more it's FAT32. So
the correct way to detect the volume type is to take the sector count,
knock off the reserved, FAT and directory areas, divide by the number
of sectors per cluster (all those values come from the BPB in the
first sector of the volume), to get the cluster count, and compare it
to those limits.
Reply by robe...@yahoo.com●June 18, 20082008-06-18
On Jun 17, 8:50=A0pm, Vladimir Vassilevsky <antispam_bo...@hotmail.com>
wrote:
> robertwess...@yahoo.com wrote:
> > My mistake - I was editing and got a FAT16 comment mixed in with the
> > FAT32 comment. =A0FAT32 volumes cannot be smaller than 32MB, and FAT16
> > volumes must be smaller than 2GB. =A0FAT32 volumes can be up to 2TB.
>
> Why 2 TB ? 28 bit FAT x 32k cluster =3D 8 TB.
>
> Vladimir Vassilevsky
> DSP and Mixed Signal Design Consultanthttp://www.abvolt.com
There's a 32 bit sector count field in the BPB (at +32). If that got
patched, I don't know of anything that would prevent an 8TB volume.
Reply by Vladimir Vassilevsky●June 18, 20082008-06-18
larwe wrote:
> On Jun 17, 9:50 pm, Vladimir Vassilevsky <antispam_bo...@hotmail.com>
> wrote:
>
>>>volumes must be smaller than 2GB. FAT32 volumes can be up to 2TB.
>>
>>Why 2 TB ? 28 bit FAT x 32k cluster = 8 TB.
>
>
> I agree that the on-disk format spec implies that larger volumes can
> be created, but Microsoft specifies that the limits on FAT32 are "32GB
> for all OS, 2TB for some OS".
Probably because 2TB = 512B sector x 32 bit sector count.
> Look at KB154997 on
> support.microsoft.com. It is probably not a limitation of FAT32 per
> se, but a set of stacked limitations that would (say) make it
> impossible to boot Win98SE on a disk larger than 2TB.
It seems like FAT32 is the most compatible filesystem despite of all
imperfections.
BTW, I was surprised to find out how big is a file system overhead
compared to the raw disk speed.
Vladimir Vassilevsky
DSP and Mixed Signal Design Consultant
http://www.abvolt.com
Reply by larwe●June 18, 20082008-06-18
On Jun 17, 9:50 pm, Vladimir Vassilevsky <antispam_bo...@hotmail.com>
wrote:
> > volumes must be smaller than 2GB. FAT32 volumes can be up to 2TB.
>
> Why 2 TB ? 28 bit FAT x 32k cluster = 8 TB.
I agree that the on-disk format spec implies that larger volumes can
be created, but Microsoft specifies that the limits on FAT32 are "32GB
for all OS, 2TB for some OS". Look at KB154997 on
support.microsoft.com. It is probably not a limitation of FAT32 per
se, but a set of stacked limitations that would (say) make it
impossible to boot Win98SE on a disk larger than 2TB.
Reply by Vladimir Vassilevsky●June 17, 20082008-06-17
robertwessel2@yahoo.com wrote:
> My mistake - I was editing and got a FAT16 comment mixed in with the
> FAT32 comment. FAT32 volumes cannot be smaller than 32MB, and FAT16
> volumes must be smaller than 2GB. FAT32 volumes can be up to 2TB.
Why 2 TB ? 28 bit FAT x 32k cluster = 8 TB.
Vladimir Vassilevsky
DSP and Mixed Signal Design Consultant
http://www.abvolt.com
Reply by drn...@nadler.com●June 17, 20082008-06-17
On Jun 17, 9:20 pm, "robertwess...@yahoo.com"
<robertwess...@yahoo.com> wrote:
> On Jun 17, 8:41 am, "d...@nadler.com" <d...@nadler.com> wrote:
>
> > On Jun 16, 9:37 pm, "robertwess...@yahoo.com"
> > > Just format a USB thumb drive with the "/FS:FAT32" option from the
> > > command line. No problem so long as it's over 32MB in size and less
> > > than 2GB.
>
> > > Or do the same for a hard disk partition. Note that you cannot format
> > > a floppy FAT32, since it's not possible to put enough clusters on a
> > > floppy to get past the 65536 cluster threshold so that it will be
> > > detected as a FAT32 volume.
>
> > Um, sorry if I'm missing something, but why "less than 2GB" ?
> > Isn't FAT32 good for many orders more than 2GB ?
>
> My mistake - I was editing and got a FAT16 comment mixed in with the
> FAT32 comment. FAT32 volumes cannot be smaller than 32MB, and FAT16
> volumes must be smaller than 2GB. FAT32 volumes can be up to 2TB.