Wszystkie strony, które odwiedzam, szukam informacji na temat FAT16, po prostu deklaratywnie stwierdzają, że nie można przeznaczyć więcej niż 2 GB. DOBRZE. Świetny. Wierzę ci. Ale jak dojść do tego wniosku (poza testowaniem go)?
Czy istnieje jakiś wzór, który można wykorzystać do ustalenia, ile system FAT16 może pomieścić?
file-storage
allocation
SangoProductions
źródło
źródło
Odpowiedzi:
FAT16 używa 16 bitów do identyfikacji klastrów. Dlatego przed wyczerpaniem identyfikatorów istnieje maksymalnie 65536 klastrów, a niektóre identyfikatory są zarezerwowane do zastosowań innych niż pliki. Każdy plik zajmuje co najmniej jeden klaster. Większe klastry zwiększają minimalną alokację na plik, zwiększając obciążenie małych plików.
Rozmiar klastra określa następnie maksymalną możliwą do zidentyfikowania objętość. Dla klastrów 32 kB to 32 * 1024 * 65536 B = 2 GiB.
Państwo mogłoby zwiększyć rozmiar klastra w nieskończoność, zwiększając rozmiar swoich sektorów na dysku, ale pozostają ograniczone do maksymalnej liczby plików. Wystąpiłyby również problemy z oprogramowaniem, które przyjęło domyślny rozmiar sektora (512B)
W momencie, gdy dostępne były fizyczne woluminy ~ 2GiB, procesory i systemy operacyjne były 32-bitowe, więc przejście na FAT32 było rozsądnym wyborem, pozwalając na znacznie więcej plików w małych klastrach
źródło
Przez lata istniało kilka wariantów „FAT16” z różnymi limitami, ale rozważmy wersję, która przetrwała od „compaq DOS 3.31” do Windows 95.
Woluminy FAT są podzielone na klastry. Każdy klaster składa się z potęgi dwóch liczb sektorów. Liczba sektorów na klaster w systemie FAT16 jest przechowywana jako 8-bitowa liczba ze znakiem. Zatem maksymalna możliwa liczba sektorów na klaster wynosi 64.
Numery klastrów były przechowywane jako 16-bitowa wartość bez znaku. Ograniczając całkowitą liczbę klastrów do 65536. Pomnóż ją przez maksymalną liczbę sektorów przypadającą na klastry, a otrzymasz limit 4194304 sektorów.
Rozmiar (logiczny) sektora dysków twardych wynosi 512 bajtów. Pomnóż to przez limit liczby sektorów wspomniany powyżej, a otrzymasz limit 2GiB. Zakładając, że średnie z większymi sektorami mogą obsługiwać większy wolumen FAT16, ale nie sądzę, aby miało to miejsce w praktyce.
Windows NT zmienił interpretację pola „sektorów na klaster” na 8-bitowy bez znaku. Pozwoliło to na partycję FAT16 4GiB z 512-bajtowymi sektorami (i teoretycznie większą na dyskach z większymi sektorami). AIUI Windows 98 dodał obsługę odczytu i zapisu takich partycji, ale nie mógł ich utworzyć, a narzędzia dyskowe nie mogły ich naprawić.
Z pewnością można by wprowadzić stosunkowo niewielkie poprawki w formacie systemu plików, aby obsługiwały większe klastry, a tym samym większe woluminy. Jednak MS zdecydowało się na bardziej radykalną opcję przejścia do 32-bitowego indeksu klastrów z systemem Windows 95 OSR2 produkującym FAT32.
Wierzę, że powodem wyboru bardziej radykalnej opcji była efektywność przestrzeni. Biorąc pod uwagę typowe rozmiary plików w tym czasie, klastry 32kiB były już dość marnotrawione, a większe byłyby nawet takie ruchy.
źródło