Was ist die maximale Dateigröße von FAT?

1531
VortixDev

Soweit ich weiß, verwendet FAT32 eine 32-Bit-Nummer für jede Datei, um deren Dateigröße zu speichern (und daher ist FAT32 auf ~ 4GiB-Dateien begrenzt). In FAT hat jede Datei einen Wurzelverzeichniseintrag, und diese Einträge speichern den Wert für die Dateigröße. Diese Seite zeigt die Struktur des Verzeichniseintrags für FAT32. Diese Ressource legt nahe, dass FAT12 einen 25-Bit-Wert für die Dateigröße und FAT16 einen 31-Bit-Wert verwendet.

Sind die Informationen in der zweiten verknüpften Ressource korrekt? Wenn nicht, wie hoch ist die maximale Dateigröße für FAT12 und FAT16? Wenn ja, warum wird dann eine unregelmäßige Anzahl von Bits verwendet, um die Dateigröße für diese Dateisysteme zu speichern?

BEARBEITEN: Warum werden sie durch die Volumengröße eingeschränkt, während FAT32 eine festgelegte Größe hat? Liegt das daran, dass die von ihm gespeicherte Dateigröße größer als jede unterstützte Datenträgergröße ist, oder verwenden FAT12 und FAT16 keine Dateigröße als Feld im Verzeichniseintrag?

-3
Haben Sie die Werte in [Wikipedia] (https://en.wikipedia.org/wiki/File_Allocation_Table) überprüft? phuclv vor 6 Jahren 2
Vielen Dank für Ihren Kommentar. Ich habe meiner Frage Informationen hinzugefügt. VortixDev vor 6 Jahren 0
Verstehen Sie, dass FAT12, FAT16 und FAT32 zu unterschiedlichen Zeitpunkten von verschiedenen Personen und mit unterschiedlichen widersprüchlichen Anforderungen entwickelt wurden, die sich im Laufe der Jahre erheblich verändert haben. FAT32 wurde vor mehr als 20 Jahren entwickelt, während FAT12 und FAT16 noch älter sind. Es bestand der Wunsch, die Fähigkeiten der Dateisysteme zu maximieren und gleichzeitig die Effizienz mit der begrenzten Technologie des Tages aufrechtzuerhalten. Es mussten Kompromisse eingegangen werden. Das Ergebnis waren einige offensichtlich ungerade Werte und Inkonsistenzen zwischen Dateisystemen. LMiller7 vor 6 Jahren 0
FAT32 ist auf "4 GB minus 2 Bytes" und nicht auf 4 GB beschränkt. DavidPostill vor 6 Jahren 0
@ DavidPostill Danke für deine Korrektur, ich habe die Frage geändert. Wie kommt es, dass es -2 Byte statt -1 Byte gibt? VortixDev vor 6 Jahren 0
Tolle Einblicke: Danke @ LMiller7 VortixDev vor 6 Jahren 0
@VortixDev Keine Ahnung: / DavidPostill vor 6 Jahren 0
Meine Vermutung wäre, dass das vorzeichenlose Gegenstück zu "-1" irgendwo als Sonderwert verwendet wurde. plugwash vor 6 Jahren 0

2 Antworten auf die Frage

3
plugwash

Die Dateigröße von FAT wird in einem 32-Bit-Feld gespeichert.

Bei FAT32 wird das Feld als unsigniert behandelt, wodurch Dateien mit bis zu 4294967294 Bytes zulässig sind (anscheinend ist 4294967295 aus irgendeinem Grund nicht zulässig, möglicherweise wurde "-1" irgendwo als Flag verwendet).

Bei FAT16 ist das Feld auf den Bereich einer 32-Bit-Zahl mit Vorzeichen beschränkt. Ich denke, der Grund dafür ist älterer Code, der zurückgeschrieben wurde, als 2 GB für eine Datei als verrückt angesehen worden wären. FAT16-Dateisysteme über 2 GB waren sowieso eine Seltsamkeit *.

AIUI bei FAT12 ist die Dateigröße auf 32 MB (nicht 32 KB!) Beschränkt, nicht aufgrund von Beschränkungen, die sich auf die Dateigröße beziehen, sondern weil dies die maximale Größe des Datenträgers ist und Sie keine größere Datei als den Datenträger haben können. Gleiches gilt für frühere Versionen von FAT16.

* Die von DOS 4 bis Windows 95 verwendete Version von FAT16 war auf 64 Sektoren pro Cluster beschränkt, was bei typischen 512-Byte-Sektoren eine Größe von etwa 2 GB betrug. NT verdoppelte die maximalen Sektoren pro Cluster und ermöglichte ~ 4-Gigabit-Volumes mit 512-Byte-Sektoren und 98 zusätzliche Unterstützung für das Lesen / Schreiben, ohne das Erstellen oder Reparieren solcher Voluleme. Theoretisch waren größere Volumina möglich, wenn das zugrunde liegende Gerät größere Sektoren hatte, aber ich habe keine Anzeichen dafür gesehen, dass dies in der Praxis tatsächlich geschah.

0
SeanC

Ein Teil davon hängt von der Größe des Clusters ab.

Während der Datenträger (für die meisten Implementierungen) 512-Byte-Sektoren aufweist, wurden die Sektoren in Clustern angeordnet, um größere Dateien als größere Speicherkapazität zu ermöglichen.

Bei FAT12 betrug die maximale Kapazität und Dateigröße 16 MB (bei 4-KB-Clustern) und 32 MB (bei 8-KB-Clustern).

Bei FAT16 änderte die ursprüngliche Version die Kapazität nicht, aber während der Entwicklung konnte die Dateigröße auf 2 GB, 4 GB erweitert und schließlich vom Volumen begrenzt werden, wobei die Volumenmaxima von 2 GB bis 16 GB (abhängig von der Version von FAT16) reichten das wurde vom Betriebssystem implementiert

Die Volume-Größe wurde erhöht, die maximale Dateigröße blieb jedoch auf 2 GB begrenzt. plugwash vor 6 Jahren 0