Tabellen för filtilldelning

Från Wikipedia, den fria encyklopedin
Hoppa till navigation Hoppa till sökning

Filtilldelningstabell ( FAT för kort [ fæt ], engelska för filallokeringstabell ) hänvisar till en utbredd familj av filsystem som ursprungligen utvecklades av Microsoft 1977, som höjdes till branschstandarden och fortfarande används idag som ett nästan universellt utbytesformat över operativsystemets gränser. Stora förbättringar har också gjorts av Seattle Computer Products , Compaq , Digital Research och Novell . Som en egen efterträdare utvecklade Microsoft NTFS och exFAT .

bakgrund

FAT-filsystemet utvecklades ursprungligen 1977 i en 8-bitars variant av Marc McDonald för Microsofts fristående disk BASIC-80 för 8080-processorer, och 1978 överfördes det till en DEC PDP-10 med hjälp av en 8086-simulator för fristående disk BASIC-86 och 1979 anpassad för Microsofts operativsystem MDOS / MIDAS.

Även 1979 anpassades Standalone Disk BASIC-86 av Bob O'Rear till en S-100-buss hårdvaruplattform utvecklad av Seattle Computer Products (SCP). Vid detta tillfälle blev Tim Paterson medveten om det filsystem som han valde 1980 som den konceptuella grunden för hans 12-bitars filsystem för SCP: s QDOS-operativsystem, som, bytt namn till 86-DOS , ursprungligen licensierades och köptes av Microsoft och sedan utgångspunkten för MS 1981 -DOS och PC DOS 1.0 gjordes.

FAT -filsystemfamiljen inkluderar:

  • Idag används FAT12 för varje DOS -diskett (även under Windows ). Atari ST använder ett nästan identiskt filsystem och kan läsa och skriva FAT12 -disketter.
  • Idag används FAT16 mestadels på alla typer av mobila databärare (förutom disketter) med en storlek på upp till 2, sällan upp till 4 GiB .
  • FAT32 är z. B. används i alla typer av mobil lagring med en kapacitet på mer än 2 GiB och stöds av alla Windows -versioner från Windows 95b och nyare DOS -system.
  • FAT + ( FAT32 + / FAT16 + ) är en bakåtkompatibel förlängning av FAT32 (och - teoretiskt - FAT16B ), vilket ökar den maximala storleken på en fil från 4 GiB till 256 GiB (stöds för närvarande av bland annat Enhanced DR -DOS och skrivbord ) [1]
  • exFAT är ett egenutvecklat filsystem speciellt utvecklat för flashminne med en teoretisk maximal filstorlek på 16 EiB, som är konceptuellt på distans baserad på FAT.

Typer

FAT12

Med den första versionen av QDOS eller 86-DOS , som visades 1980, introducerades FAT12 som filsystem för 8,0 "och 5,25" disketter. Det var inte förrän 86-DOS 0.42 från februari 1981 som de interna orderstrukturerna hade ett format som liknade det senare FAT12-formatet i MS-DOS och PC DOS på alla väsentliga punkter. På grund av olika logiska geometrier och det faktum att BIOS Parameter Block (BPB) endast introducerades med DOS 2 kan varken MS-DOS eller PC DOS komma åt media formaterat under 86-DOS (med undantag för SCP MS-DOS 1.25).

Inledningsvis hanterades inga underkataloger. Det ändrades med MS-DOS version 2.0.

FAT12 används endast på databärare eller partitioner upp till en storlek på 16 MiB ; den används fortfarande på alla FAT-formaterade 3,5-tumsdisketter.

Funktioner:

  • 12-bitars klusternummer med vilka 2 12 = 4096 kluster kan adresseras. Numreringen av klustren börjar med nummer 2 på disketter.
  • Endast filnamn i schema 8.3 (åtta tecken för filnamnet och tre tecken för filnamnstillägget) stöds.
  • Klusterstorleken är 512 byte till 4096 byte.
  • Partitionens huvudkatalog (rotkatalog) är begränsad till en storlek på 14 kluster, vilket resulterar i ett maximalt antal 224 poster (kataloger och / eller filer). Vanligtvis upptar den första posten namnet på databäraren.
  • Filattributen "skrivskyddade", "dolda", "system" och "arkiv" stöds.
  • Stöd för lösenord och fil- eller mapptillstånd är inte implementerat i Microsofts operativsystem, men är valfritt tillgängligt på alla operativsystem som stöder lämpliga FAT -tillägg från Digital Research och Novell.

FAT16

FAT16
tillverkare Microsoft
Fullständiga namn Tabellen för filtilldelning
Initial release 1984 ( MS-DOS 3.0)
Maximala värden
Storlek på en fil 2 GiB (NT: 4 GiB)
Filsystemets storlek 2 GiB (NT: 4 GiB)
egenskaper
Datum för en fil modifiering
Datumintervall 1 januari 1980 till 31 december 2107
Filattribut skrivskyddad , dold, systemfil, arkiv
Stöder operativsystem implementeras på många system

FAT16 är ett filsystem som lades till FAT12 1983. Den ökade storleken på hårddiskarna som användes gjorde det nödvändigt att utöka adressutrymmet. Nu, även med 512-byte-kluster, kunde totalt 32 MiB-skivor hanteras, åtminstone i teorin.

Den ursprungliga FAT16 -implementeringen används som regel på partitionerade medier (beroende på respektive DOS OEM ) partitionstypen 04h och ett relativt kort BIOS -parameterblock (BPB) i startsektorn. Dess exakta struktur och innehåll, särskilt med DOS 2.x, berodde fortfarande starkt på DOS-versionen som användes, men i alla fall innehöll den bara en 16-bitars bred post för antalet sektorer, vilket innebär att storleken på FAT16-enheter upp till 32 MiB 512 MiB begränsat (beroende på operativsystemets version). Med OS / 2 Release 1 introducerades ett förbättrat BIOS-parameterblock (EBPB), som känns igen av signaturbyten 28h (för DOS-BPB version 4.0) vid offset + 26h. Med introduktionen av DOS 3.31 ersattes detta av det utökade BIOS-parameterblocket (XBPB) med signaturen 29h (för DOS-BPB version 4.1) vid offset + 26h, som nu vanligtvis används för FAT12 och FAT16. EBPB och XBPB kännetecknas bland annat av att posten för antalet sektorer växte till 32-bitars bredd, vilket gör FAT16-enheter med upp till 2 GiB, senare 4 GiB, möjliga för första gången, även om operativsystem på den tiden ännu inte hade någon Kan använda den. Denna större variant av FAT16 kallades "BigDOS" i utvecklingskretsar, därav dess officiella namn FAT16B. Eftersom äldre operativsystem inte kunde fungera med denna nya typ definierades också en ny partitionstyp (06h) för användning på partitionerade medier. Den gamla FAT16 -varianten stöds fortfarande, men används inte längre i praktiken (bortsett från tvångsskapande av mycket små FAT16 -partitioner med partitionstyp 04h), eftersom senast sedan DOS 5 när du skapar FAT12- och FAT16 -partitioner bara behöver skrivas att starta sektorer med XBPB för att optimalt stödja några nya operativsystemfunktioner. Det faktum att det faktiskt finns två FAT16 -typer finns inte längre i allmänheten, ännu mer, eftersom FAT12 nästan bara används för disketter, idag används FAT ofta felaktigt bara med FAT16 (och endast i FAT16B som beskrivits ovan Variant) , även om detta faktiskt skulle innebära flera FAT12- och FAT16 -typer. Serveroperativsystemet Novell- NetWare upp till version 4.0 kräver dock fortfarande en "DOS" -partition på upp till 16 MiB, som (automatiskt) skapades med FAT12.

Om åtkomst sker via logisk blockadressering (LBA), kallas en FAT16 -partition också som FAT16X .

FAT16 har följande funktioner:

  • Högst cirka 65 000 filposter är möjliga, [2] varav vanligtvis 512 finns i rotkatalogen (även om detta är variabelt är 512 de facto det enda värdet som kan påträffas). [3]
  • Högst 512 poster per underkatalog, motsvarande färre när du använder LFN.
  • 2 16 - 12 = 65 524 kluster kan adresseras (12 kluster reserverade FAT16, därför inte 65 536).
  • 8.3 filnamnsformat ; LFN möjligt.
  • Partitionsstorleken är begränsad till 2 GiB under MS-DOS och Windows 9x (som är baserade på DOS) när du skapar ett nytt system under FDISK; när du skapar ett system med tredjepartsprogram kan du hantera knappt 4 GiB. Windows NT, FreeDOS och Enhanced DR-DOS kan skapa och hantera FAT16-partitioner med maximal storlek (klusterstorlek 64 KiB).
  • Beroende på partitionsstorleken är klustren mellan 512 byte och högst 32 KiB (Windows NT och Enhanced DR-DOS maximalt 64 KiB).
  • Filer kan vara upp till 2 GiB i storlek under Windows NT och Enhanced DR-DOS 4 GiB.
  • Huvudkatalogen ( rot ) måste vara i en viss position på databäraren. Dess storlek bestäms när filsystemet skapas, det vill säga det kan inte växa.

En vidareutveckling skedde med FAT32 .

FAT32

FAT32
tillverkare Microsoft
Fullständiga namn Tabellen för filtilldelning
Initial release 1996 ( Windows 95B )
Maximala värden
Storlek på en fil 4 GiB minus 1 byte
Antal filer 268 435 456 (2 28 )
Filsystemets storlek 2 TiB (med typisk 512 bytes sektorsstorlek),

16 TiB vid 4 KiB sektorsstorlek

egenskaper
Datumintervall 1 januari 1980 till 31 december 2107
Tidsstämpelupplösning 2 s [4]
Filattribut skrivskyddad , dold, systemfil, arkiv
Stöder operativsystem förutom Windows 9x även Windows NT från 2000 ; implementeras på många system

FAT32 är ett filsystem utvecklat av Microsoft som introducerades med Windows 95B sommaren 1996 och kompletterar den tidigare versionen FAT16 .

Partitioner mindre än 512 MiB skapas fortfarande med FAT16, från 512 MiB till 2 GiB har du valet, från 2 GiB FAT32 används. Adresseringen fungerar med 32 bitar , varav 4 bitar är reserverade, så att 2 28 = 268 435 456 kluster kan adresseras.

FAT32 kan också användas med alla Windows -versioner sedan Windows 95B och - till skillnad från NTFS - med FreeDOS och Enhanced DR -DOS . Eftersom Windows bara stöder några få filsystem ur lådan, beroende på version, används FAT32, trots sina begränsningar, för datautbyte med andra Windows-system samt med andra system än Windows (t.ex. macOS , Linux ), t.ex. B. på USB -minnen och mobila hårddiskar.

Spelkonsoler som PlayStation 3 eller digitala satellitmottagare kräver ofta FAT32 som filsystem för externt anslutna hårddiskar.

En nackdel med ett standardkompatibelt FAT32-filsystem är att endast filer som är mindre än 4 GiB kan skapas. [5] Med det bakåtkompatibla tillägget FAT32 + -filer upp till 256 GiB [1] är möjliga, men denna förlängning stöds bara av några få system.

Eftersom ett kluster bara är 4 KiB i storlek upp till en partitionsstorlek på 8 GiB (med standardformatering) används dessa "små och gamla" diskar relativt bättre än med FAT16, där ett kluster upptar upp till 32 KiB (under Windows NT t.ex. Windows 2000 FAT16 -klusterstorlek maximalt 64 KiB).

Om åtkomst sker via Logical Block Addressing (LBA), kallas en FAT32 -partition också som FAT32X .

FAT32 har följande funktioner:

  • Upp till 2 28 = 268 435 456 kluster används.
  • Den maximala filsystemstorleken beror på sektorns storlek på det använda mediet. För hårddiskar, som vanligtvis har en sektorsstorlek på 512 byte, är den maximala storleken 2 tebibytes ; för databärare som använder en sektorstorlek på 4 KiB är den maximala storleken 16 Tebibytes . Storleken begränsas främst av det totala antalet sektorer på fyra byte (offset 20h) i startsektorn.
  • Klusterna är mellan 512 byte och högst 32 KiB i storlek, beroende på partitionens storlek.
  • Filerna kan vara upp till 4 GiB - 1 byte (= 4 294 967 295 byte) i storlek. Denna gräns är en följd av det enda 4-byte breda fältet för filstorleken i katalogtabellen.
  • Högst 2 28 filer kan lagras; eftersom varje fil upptar minst ett kluster, begränsar det maximala antalet kluster det maximala antalet filer.
  • Huvudkatalogen ( rot ) behöver inte vara i en specifik position på databäraren och har framför allt ingen fast storlek; Med de andra FAT -varianterna anges det maximala antalet poster i huvudkatalogen under formateringen (och kan inte ändras senare).

Övningsbegränsningar:

  • Gamla DOS / Windows-versioner (till och med Windows 95A, Windows NT upp till version 4.0, MS-DOS upp till 6.22, PC DOS upp till 2000, DR-DOS upp till 7.03) kan inte komma åt dem. En fullständig drivrutin är nu tillgänglig gratis för Windows NT 4.0 . Den dynamiskt laddbara DRFAT32-drivrutinen som utvecklats av Matthias Paul för DR-DOS kan användas för alla DOS-system från 3.3.
  • Under Windows 2000 och dess efterföljare kan användaren använda den inbyggda "Format" -funktionen för att skapa ett nytt FAT32-filsystem med en maximal storlek på 32 GiB. Kommandoradsprogrammet format.com har också denna begränsning. Men tillgång till större FAT32 -filsystem som skapades med alternativa verktyg är alltid möjlig. Med ytterligare program kan du skapa och formatera partitioner större än 32 GiB med FAT32 under Windows 2000 eller högre. [6]
  • I Windows 10 är formatering med FAT32 möjlig via kommandotolken. [7]
  • Diskverktyget för Mac OS X Tiger 10.4 och senare samt Linux -programmet mkdosfs (i anslutning till fdisk ) kan skapa en eller flera FAT32 -partitioner med en kapacitet på mer än 32 GiB på hårddiskar som är större än 32 GiB.
  • Det finns flera moderna DOS-system som inbyggt stöder FAT32: MS-DOS 7.10 / 8.00, Enhanced DR-DOS, FreeDOS 1.0, OEM PC DOS 7.10 (efterföljaren till PC DOS 2000) och Datalight ROM-DOS .
  • Det är inte längre möjligt att spara metainformation för filer i Utökade attribut .
  • Av hastighets- och kompatibilitetsskäl förbjuder Microsofts specifikation filmappar över 2 MB långa, vilket begränsar en mapp till 65 534 8,3 filnamnposter (32 byte vardera) (två poster är redan reserverade av . Och .. ). Användningen av långa filnamn (LFN, som innehåller filnamn i gemener) minskar antalet. [Åttonde]

Eftersom FAT32 och NTFS också kan samexistera i nuvarande Windows -installationer, bör det noteras att när filer överförs från NTFS till FAT32 förloras både NTFS -strömmar och behörigheter, vilket kan vara användbart eller störande beroende på applikationen.

Tillägg

VFAT

VFAT ( Virtual File Allocation Table ) är en förlängning av FAT -formatet för användning av långa filnamn, som kan tillämpas på FAT12, FAT16 och (sedan introduktionen 1996) också på FAT32. Ibland likställs VFAT felaktigt med FAT32 .

Konstruktörerna för Windows 95 hade som mål att möjliggöra användning av långa filnamn, även om versionerna baserade på MS-DOS inte stöder det efterföljande filsystemet NTFS avsett för detta under NT-serien. Detta uppnås genom ett trick i layouten av filsystemet. Som tidigare sparas filen som ett 8,3 -filnamn, men för längre namn används ett alias i formen xxxxxx~1.xxx , varigenom antalet ökas. Det långa namnet distribueras sedan över flera katalogposter som har en kombination av filattribut som äldre system anser vara ogiltiga och därför ignorerar.

Användningen av attributet "Volym" kan emellertid resultera i att äldre MS-DOS (före 7.1) felaktigt tolkar sådana poster som volymnamn i kommandot dir, särskilt om det faktiska volymnamnet inte är i den första positionen i katalogen eller helt frånvarande.

Det slutliga formatet tillåter filnamn upp till 255 tecken (namnet inklusive lagringsvägen kan innehålla upp till 260 tecken) och använder Unicode som teckenuppsättning med UCS-2- kodningen.

I områden i posten med filnamnet 8.3 som inte tidigare användes av Microsoft -system sparas nu också skapelsedatum och datum för den senaste åtkomsten.

Support i operativsystem

Windows for Workgroups 3.11 stöder valfritt VFAT , men bara för hårddiskar och utan möjlighet till långa filnamn.

VFAT stöds i Windows 95 och senare och i Windows NT 3.5 och senare.

Tillägget VFAT stöds fullt ut på Linux .

UMSDOS

I början av 1990 -talet använde många Linux -distributioner UMSDOS -tillägget för FAT16 för att installera Linux utan att behöva ompartitionera och formatera hårddisken . UMSDOS lägger till ett överliggande Unix- kompatibelt lager till ett FAT- filsystem. Detta hanterar filer med namnet --linux-.--- . Användarrättigheter och långa filnamn sparas i den.

I Linux 2.6.11 togs UMSDOS bort från kärnan eftersom den inte längre utvecklas. Ett POSIX -överlagringsfilsystem är tillgängligt som ersättning, som FUSE använder och som kan "läggas" över ett normalt FAT -filsystem.

UVFAT

UVFAT existerade bara en kort tid och använde tillägget VFAT för att lagra långa filnamn, medan UMSDOS -mekanismen användes för de användarrättigheter som saknas under alla FAT -versioner. Långa filnamn skapade under Linux kan också läsas under moderna Windows -versioner och vice versa. Utvecklingen stoppades igen innan UMSDOS -tillägget .

Derivat

Det finns följande derivat :

exFAT

Översikt
karakteristisk FAT12 FAT16 FAT32 exFAT
Bitar per kluster i tilldelningstabellen 12: e 16 32 32
Maximal filstorlek 4 GiB (2 32 byte) -1 B * 4 GiB-1 B 4 GiB-1 B 16 EiB (2 64 byte) -1 B
Antal kluster Max 4084 (2 12 -12) 4085 till 65 524 (2 16 -12) 65 525 till 268 435 444 (2 28 -12) Maximalt 4 294 967 296 (2 32 )
* Begränsad av volymstorlek

exFAT ( Extended File Allocation Table ) är ett filsystem speciellt utvecklat för flashminne . Det introducerades 2006 med Windows CE 6.0. exFAT bör användas där NTFS är svårt eller omöjligt att implementera och samtidigt bör begränsningarna för FAT32 - särskilt maximal filstorlek på 4 GiB - undvikas. Windows 7 , Windows 8 och Windows 10 stöder exFAT, Windows Vista endast från Service Pack 1. [9] Microsoft har ett uppdateringspaket för Windows XP från SP2. [10] På Apple -datorer stöds exFAT fullt ut från Mac OS X Snow Leopard , version 10.6.5. [11] Den 27 augusti 2019 publicerade Microsoft specifikationerna för exFAT och förklarade att det skulle stödja en implementering av exFAT i Linux -kärnan och släppa patenten på den via Open Invention Network. [12] exFAT stöds direkt av Linux -kärnan från version 5.4, [13] i kärnan 5.7 har drivrutinen ersatts av en bättre. [14] Tidigare fanns det redan en egen Linux -drivrutin från Tuxera [15] och en drivrutin för FUSE licensierad av Samsung under GPLv3 . [16] [17] [18]

Specifikationerna för Memory Stick XC- och SDXC -minneskortstyper kräver användning av exFAT; Minneskorten kan i princip också formateras med ett annat filsystem, men då överensstämmer de inte med standarderna och kan därför inte användas i alla enheter (t.ex. digitalkamera).

Fördelarna jämfört med tidigare versioner är:

  • Teoretisk maximal filstorlek på 64 ZiB , [19] rekommenderad maximal filstorlek 512 TB (maximal partitionsstorlek).
  • Ett kluster kan ha en maximal storlek på 32 MiB (teoretiskt sett dock upp till 2 255 byte).
  • En separat tabell ("bitkarta") infördes, som indexerar de fria klustren mer effektivt. En bit tilldelas varje kluster. För FAT32, FAT16 och FAT12 togs detta från den mycket större fragmenttabellen (eller "fragmentkartan"), med 32, 16 och 12 bitar per kluster; därav namnen. Med exFAT registreras endast kluster av fragmenterade filer i fragmenttabellen. [20]
  • Filsystemet stöder utökade åtkomsträttigheter (ACL) .
  • Transaktioner stöds också (endast med TexFAT ).

Nackdel:

  • Under lång tid kunde exFAT endast användas med en licens från Microsoft. Specifikationen har nu avslöjats. [13]
  • För filsystem på 32 GB eller mer är standardklusterstorleken 128 KB. Detta innebär att även små filer alltid tar upp minst 128KB utrymme på filsystemet. Men de lägre kan väljas i formateringsmenyn. [21]

TFAT

TFAT ( Transaction-safe File Allocation Table ) erbjuder skydd mot skador på filsystemet, särskilt för mobila enheter med inbyggt flashminne, till exempel om enhetens strömförsörjning misslyckas under en skrivoperation.

För detta hanteras FAT två gånger: en gång som FAT1 med de aktuella filtilldelningarna och en gång som FAT0 med den senaste kända konsekventa statusen för filsystemet. FAT0 uppdateras först efter att en transaktion har slutförts genom att kopiera FAT1 till FAT0. En transaktion är till exempel skapandet av en ny fil.

Under en transaktion sparas ändringar i filsystemet i nyskapade kluster och FAT1 justeras därefter. I händelse av ett fel kan en ofullständigt utförd transaktion reverseras genom att kopiera från FAT0 till FAT1 och filsystemet kan återställas till den status det var innan transaktionen började.

Den aritmetiska gränsen för TFAT -partitioner är 2 TiB med en sektorstorlek på 512 byte.

Även om TFAT uttryckligen är avsett för icke-flyttbar lagring, kan den också användas med flyttbara lagringsmedier. Problem kan dock uppstå om ett TFAT -medium används i en annan enhet som inte stöder TFAT. I princip är det då möjligt att komma åt mediet, men eftersom det behandlas som ett normalt FAT-medium är skrivoperationer inte transaktionssäkra. På grund av skillnader i datastrukturer kan kataloger som skapats med TFAT inte heller raderas från FAT -system.

TFAT stöds vanligtvis inte av stationära system. Det stöds av Microsoft för mobila enheter sedan Windows Mobile 6.5 och Windows CE från version 6.0. [22]

konstruktion

Ett FAT -filsystem är uppdelat i fem områden:

Översikt över strukturen i en FAT -partition
innehåll Boot -sektorn FS informationsområde

(endast FAT32)

Vid behov andra reserverade områden Filtilldelningstabell (FAT) nummer 1 Filtilldelningstabell nummer 2 (och eventuellt andra) Root directory (endast FAT12 / FAT16) Dataområde (för filer och mappstrukturer) ... (upp till slutet av partitionen)
Storlek i sektorer (Antal reserverade sektorer) (Antal FAT) * (sektorer per FAT) (Antal rotkataloger * 32) / ( byte per sektor) (Antal kluster) * (sektorer per kluster)

Alla multi-byte-värden (16/32 bitar) lagras i lite endian , dvs minst signifikanta byte först.

Boot -sektorn

Startsektorn kan innehålla x86 -maskinkod ( boot loader ) som ska ladda operativsystemet. På andra håll innehåller den information om FAT -filsystemet.

Offset
(hex)
längd
(dec)
innehåll
00 3 x86 maskinkod. Vanligtvis en hoppinstruktion till startkoden för att hoppa över databyte i startsektorn.
Exempel: EB 3C 90 ; För x86 -processorer har denna kod följande uttalanden: JMP SHORT 003C; NOP .
03 8: e OEM -namn (vadderat med mellanslag). MS-DOS använder detta för att bestämma strukturen för återstående data i startsektorn [23] [24] . Vanliga värden är IBM 3.3 (med två mellanslag mellan "IBM" och "3.3") och MSDOS5.0 . I princip kan namnet definieras fritt, formateringsprogram använder ofta sina egna namn.
0B 2 Byte per sektor (giltiga värden är: 512, 1024, 2048 och 4096. Värdet är vanligtvis 512.)
0D 1 Sektorer per kluster (effekt av två mellan 1 och 64, möjligen också 128)
0E 2 Antal reserverade sektorer (inklusive startsektor, så alltid minst 1)
10 1 Antal FAT -kopior (vanligtvis: 2)
11 2 Maximalt antal katalogposter i rotkatalogen (används inte med FAT32 och alltid 0000 hex )
13 2 Totalt antal sektorer i mediet max. 65535, för större media är detta värde 0, och det verkliga värdet är ett 4-byte-värde vid förskjutning 20 hex . Alltid oanvänd med FAT32.
15: e 1 Media Descriptor Byte [25] . Betraktas som föråldrat och beaktas inte längre från och med Windows Server 2003.
0xF0 Dubbelsidig, 80 spår, 18/36 sektorer per spår (1440 KiB och 2880 KiB 3½ ″ diskett)
0xF8 hårddisk
0xF9 Dubbelsidig, 80 spår, 9/15 sektorer per spår (720 KiB-3½ "eller 1200 KiB-5¼" diskett)
0xFA Ensidig, 80 spår, 8 sektorer per spår (320 KiB 3½ "eller -5¼" diskett).
Används även för ramskivor
0xFB Dubbelsidig, 80 spår, 8 sektorer per spår (640 KiB 3½ "eller -5¼" diskett)
0xFC Ensidig, 40 spår, 9 sektorer per spår (180 KiB 5¼ ″ disk)
0xFD Dubbelsidig, 40 spår, 9 sektorer per spår (360 KiB 5¼ ″ disk)
Dubbelsidig, 77 spår, 26 sektorer per spår (500 KiB 8 ″ diskar)
0xFE Ensidig, 40 spår, 8 sektorer per spår (160 KiB 5¼ ″ disk)
Ensidig, 77 spår, 26 sektorer per spår (250 KiB 8 ″ diskar)
Dubbelsidig, 77 spår, 8 sektorer per spår (1200 KiB 8 ″ diskar)
Man skilde mellan de två 8 ″ diskettformaten om huruvida läsåtkomst till sida 2 var framgångsrik.
0xFF Dubbelsidig, 40 spår, 8 sektorer per spår (320 KiB 5¼ ″ disk)
16 2 Antal sektorer per FAT. (Används inte med FAT32 och alltid 0000 hex , se offset 24 hex .)
18: e 2 Sektorer per spår
1A 2 Antal sidor eller läs- / skrivhuvuden
1C 4: e Antal "dolda" sektorer framför startsektorn. För hårddiskar är detta antalet sektorer mellan huvudstartposten och partitions boot -sektorn. Alltid 0 för icke-partitionerade media (utan MBR ).
20: e 4: e Totalt antal sektorer om det är större än 65535

Data varierar sedan beroende på FAT -varianten. Med FAT12 och FAT16 följer denna datastruktur:

Offset
(hex)
längd
(dec)
innehåll
24 1 Fysiskt BIOS -enhetsnummer (00 hex för disketter, 80 hex , 81 hex , ... för hårddiskar). Är bara relevant för startdiskar, eftersom detta nummer används för BIOS -samtal under uppstart för att komma åt mediet.
25: e 1 Reserverad. Denna byte används ofta för att markera ett eventuellt skadat filsystem.
26: e 1 Utökad båtsignatur
27 4: e Filsystem -ID (serienummer). Genereras när filsystemet skapas och används för att skilja mellan olika media (t.ex. för flyttbara medier)
2 B 11 Filsystemnamn (vadderat med mellanslag). Föråldrad. Har ersatts av en särskild katalogpost i rotkatalogen
36 8: e FAT -variant, vadderad med mellanslag, t.ex. B. FAT12 , FAT16 .
3E 448 x86 maskinkod för startlastaren
1FE 2 BIOS -startsektorsignatur. Innehåller de två värdena 55 hex AA hex som BIOS känner igen en giltig startsektor vid uppstart.

FAT32 använder en annan struktur än offset 24 hex :

Offset
(hex)
längd
(dec)
innehåll
24 4: e Antal sektorer per FAT
28 2 FAT -flaggor
2A 2 FAT-32 version. Hos Microsoft alltid 0000 hex . (tillval 0001 hex för FATplus)
2C 4: e Klusternummer där rotkatalogen börjar. Mestadels 2
30: e 2 Sektornummer för "FS -informationssektorn" (vanligtvis 1)
32 2 Sektornummer för startsektorkopian (vanligtvis: 6; Microsoft rekommenderar att du inte använder något annat värde.)
34 12: e reserverad för senare tillägg, för närvarande alltid 0
40 1 BIOS fysiska enhetsnummer
41 1 Reserverad. Denna byte används ofta för att markera ett eventuellt skadat filsystem.
42 1 Utökad båtsignatur
43 4: e Filsystem -ID (serienummer)
47 11 Filsystemnamn (oanvänd)
52 8: e FAT version. Alltid FAT32
5A 420 x86 maskinkod för startlastaren
1FE 2 BIOS -startsektorsignatur. Innehåller de två värdena 55 hex AA hex som BIOS känner igen en giltig startsektor vid uppstart.

Reserverade sektorer

Sektorer som inte används av filsystemet kan reserveras mellan startsektorn och den första FAT. Dieser Bereich kann von einem Bootmanager oder für betriebssystemspezifische Erweiterungen genutzt werden. Auf den meisten FAT12- oder FAT16-Dateisystemen existieren – außer dem Bootsektor – keine weiteren reservierten Sektoren. Die FAT folgt somit direkt im Anschluss an den Bootsektor. FAT32-Dateisysteme enthalten in der Regel noch einige Erweiterungen zum Bootsektor sowie eine komplette Sicherungskopie des Bootsektors und der Erweiterungen.

FAT

Die FAT ist eine Art Tabelle fester Größe, in der über die belegten und freien Cluster eines FAT-Dateisystems Buch geführt wird. Ein Cluster ist die aus einem oder mehreren Sektoren bestehende Zuordnungseinheit, die von einer Datei belegt werden kann. Der Datenbereich ist in eine feste Anzahl von Clustern eingeteilt. Zu jedem dieser Cluster existiert ein Eintrag in der FAT, der Folgendes angeben kann:

  • Der Cluster ist nicht belegt, also frei.
  • Das Medium ist an der Position dieses Clusters beschädigt.
  • Der Cluster ist von einer Datei belegt:
    • Der FAT-Eintrag zum nächsten Cluster der Datei hat die Nummer x , das heißt: der nächste Cluster der Datei ist der Cluster mit der Nummer x − 2 .
    • Das ist der letzte Cluster der Datei.

Die Größe (in Bit) und der Wertebereich der Tabelleneinträge unterscheiden sich zw. FAT12, FAT16 und FAT32 wie folgt:

Bedeutung Wert (hex)
FAT12 FAT16 FAT32
freier Cluster 000 0000 00000000
defekter Cluster FF7 FFF7 0FFFFFF7
letzter Cluster einer Clusterkette FF8…FFF FFF8…FFFF 0FFFFFF8…0FFFFFFF
sonstiger Cluster einer Clusterkette 002…FF6 0002…FFF6 00000002…0FFFFFF6

Die Lage der belegten Cluster einer Datei können aus den Adressen der zugehörigen FAT-Einträge berechnet werden. Die FAT-Einträge bilden eine einfach verkettete Liste .

Wegen ihrer grundlegenden Bedeutung für das Dateisystem existieren in der Regel zwei Kopien der FAT, um bei Datenverlust noch immer eine funktionsfähige zweite FAT zu haben. Mit diversen Programmen ist so eine Datenwiederherstellung in vielen Fällen möglich.

Auf Installationsdisketten oder mit Spezialprogrammen formatierten Medien findet man manchmal keine zweite FAT, wodurch der verfügbare Speicherplatz etwas größer wird. Theoretisch ist es auch möglich, ein Dateisystem mit mehr als zwei FAT-Kopien zu formatieren. Diese Dateisysteme können zwar in der Regel von jedem Betriebssystem gelesen werden, jedoch wird die dritte (und jede weitere FAT-Kopie) bei Schreibzugriffen meist nicht aktualisiert, so dass bei Beschädigung der ersten beiden FATs oft keine Reparatur unter Zuhilfenahme der weiteren Kopien möglich ist.

Stammverzeichnis und Unterverzeichnisse

Das Stammverzeichnis (englisch root directory ), auch Wurzelverzeichnis oder Hauptverzeichnis genannt, ist eine Tabelle von Verzeichniseinträgen. Jede Datei oder Unterverzeichnis wird in der Regel durch je einen Verzeichniseintrag repräsentiert. Die bei Windows 95 eingeführte Erweiterung um „lange Dateinamen“ benutzt jedoch ggf. mehrere Verzeichniseinträge pro Datei bzw. Verzeichnis, um die langen Dateinamen unterzubringen.

Das Stammverzeichnis folgt bei FAT12 und FAT16 direkt der FAT und hat eine feste Größe und damit eine Maximalanzahl an Verzeichniseinträgen. Diese wird beim Formatieren des Dateisystems festgelegt und kann später – außer mit Spezialsoftware – nicht mehr geändert werden.

Bei FAT32 hat das Stammverzeichnis eine variable Größe und kann an einer beliebigen Position des Datenbereichs beginnen.

Je nach Medientyp gibt es unterschiedliche Vorgabegrößen für das Stammverzeichnis. Mit speziellen Formatierungsprogrammen lässt sich jedoch die Größe des Stammverzeichnisses frei wählen. So besitzen beispielsweise Installationsdisketten, die nur sehr wenige Archivdateien enthalten, oft ein minimales Stammverzeichnis, das nur einen Sektor groß ist und somit nur Platz für 16 Verzeichniseinträge bietet.

Medientyp Speicher-
kapazität
Anzahl der
Verzeichniseinträge
Sektoren für
Stammverzeichnis
8″ SD einseitig 250 KiB 68
8″ SD beidseitig 500 KiB 68
8″ DD beidseitig 1200 KiB 192
5¼″ DD einseitig 160 KiB 64 4
5¼″ DD einseitig 180 KiB 64 4
5¼″ DD beidseitig 320 KiB 112 7
5¼″ DD beidseitig 360 KiB 112 7
5¼″ HD beidseitig 1200 KiB 224 14
3½″ DD beidseitig 720 KiB 112 7
3½″ HD beidseitig 1440 KiB 224 14
3½″ ED beidseitig 2880 KiB 240 15
Festplatten variabel 512 32

Ein Verzeichniseintrag besteht aus 32 Bytes.

Offset (hex) Länge (in Byte) Inhalt
00 8 Dateiname ohne Erweiterung
Die nicht genutzten Bytes werden mit Leerzeichen aufgefüllt.
08 3 Erweiterung
Die nicht genutzten Bytes werden mit Leerzeichen aufgefüllt.
0B 1 Dateiattribute.
Bit 0: Schreibgeschützt; Bit 1: Versteckt; Bit 2: Systemdatei; Bit 3: Volume-Label; Bit 4: Unterverzeichnis; Bit 5: Archiv; Bit 6–7: ungenutzt
Die zusätzlichen Pseudo-Verzeichniseinträge für VFAT (siehe weiter unten) haben das Attribut 0x0F (Schreibgeschützt, Versteckt, Systemdatei, Volume-Label)
0C 1 reserviert
0D 1 Erstellzeitpunkt in 10ms. Von 0 bis 199
0E 2 Erstellzeitpunkt (Format wie Zeit der letzten Änderung bei Offset 0x16)
10 2 Erstelldatum (Format wie Datum der letzten Änderung bei Offset 0x18)
12 2 Datum des letzten Zugriffs (Format wie Datum der letzten Änderung bei Offset 0x18)
14 2 Bei FAT32 die oberen beiden Bytes des Clusters
16 2 Zeit der letzten Änderung
(5 / 6 / 5 Bits für Stunde / Minute / Sekunden)
Die Auflösung der Sekunden beträgt 2 s (0..29)
18 2 Datum der letzten Änderung
(7 / 4 / 5 Bits für Jahr / Monat / Tag)
Jahr: Jahr seit 1980; z. B. für 2007 = 27
1A 2 (Offset des Start-Clusters) + 2
1C 4 Dateigröße in Byte

Zusammenspiel: Soll nun eine Datei gelesen werden, wird der zugehörige Verzeichniseintrag herausgesucht. Neben den Attributen kann hier nun der Startcluster selektiert werden. Die weiteren Cluster werden dann über die FAT herausgesucht. Am Ende terminiert die Weitersuche jener FAT-Tabelleneintrag, welcher den Wert FFFFFFh enthält.

Ein Unterverzeichnis wird als normale Datei angelegt, außer dass der Eintrag im übergeordneten Verzeichnis mit dem entsprechenden Bit markiert ist. Der Aufbau der Einträge ist mit jenen des Hauptverzeichnisses identisch. Da die Cluster der Unterverzeichnisse über die FAT verknüpft werden, können sie beliebig wachsen und haben keine Begrenzung in der Zahl der verwaltbaren Dateien.

Abweichungen

Dateisystem des Atari ST

Der Atari ST benutzt für Disketten eine Variante des FAT12-Dateisystems und kann daher unter MS-DOS formatierte und beschriebene Disketten lesen und schreiben. Ursprünglich konnten auf dem Atari formatierte Disketten nicht unter MS-DOS benutzt werden, wohl aber unter MS-DOS formatierte und danach auf dem Atari beschriebene Disketten. Diese Inkompatibilitäten wurden in späteren GEMDOS -Versionen behoben. Die Unterschiede der Atari-Implementierung im einzelnen: [26]

  • Ursprünglich standen in den ersten Bytes des ersten Sektors einer bootfähige Atari-Diskette die Opcodes eines Assemblerbefehls für den Motorola-68000-Prozessor, nämlich eine Sprunganweisung („bra“ für „branch always“), um den BPB zu überspringen. Da diese Opcodes jedoch in vielen Betriebssystemen als Kennung verwendet werden, um ein gültiges BPB-Format zu erkennen, wurde dort ab TOS 1.04 der relevante Teil eines x86 -CPU-Opcodes geschrieben.
  • Das OEM-Label beginnt bei Atari-Disketten an Offset 2 statt 3 im Bootsektor, und es ist nur sechs statt wie sonst acht Bytes lang. In den drei hinzugewonnenen Bytes speichern Ataris eine Seriennummer, die den Wechsel von Disketten auch ohne Disketten-Wechsel-Signal sicherstellen sollen. Da das OEM-Label in vielen Microsoft-Betriebssystemen aber tatsächlich zur Erkennung des vorliegenden BPB-Formats herangezogen wird, kann ein „unübliches“ OEM-Label diverse Wechselwirkungen hervorrufen, die ein Medium unter diesen Systemen nicht mehr lesbar erscheinen lassen oder bei Schreibversuchen die Datenstrukturen im Dateisystem zerstören. Solange die BPB-Einträge nicht vom Microsoft-Standard abweichen, stellt das jedoch kein Problem dar.
  • Das Media-ID-Byte wurde ursprünglich bei der Formatierung nicht korrekt gesetzt, was dazu führen konnte, dass Medien unter anderen Betriebssystemen nicht erkannt wurden, insbesondere da auch das BPB-Format nicht exakt identisch ist.
  • Der Atari-Bootsektor ist, wenn die Diskette bootfähig ist, mit einer Prüfsumme gegen Bitfehler gesichert. Die Summe aller 16-Bit-Big-Endian-Worte des Bootsektors muss 1234 16 ergeben, sonst wird der Bootsektor von Ataris als ungültig betrachtet. Um auf die richtige Prüfsumme zu kommen, wurde der Wert an Offset +1FE 16 passend verändert. Da dieser jedoch normalerweise die Signatur 55 16 , AA 16 enthält (die einen IBM-kompatiblen Bootsektor anzeigen soll) und diese von einigen Systemen ausgewertet wird, sollte stattdessen ein unbenutztes Byte im Codebereich zum Ausgleich verändert werden.
  • Atari GEMDOS unterstützt, wie auch viele Versionen von MS-DOS bis 3.x, nur Clustergrößen bis 4 KB.

Beispiele

DOS- bzw. Windows-Diskette mit FAT12

Offset Wert Bedeutung
000 h –1FF h Bootsektor
0B h –0C h 00 h 02 h =512 512 (=200 h ) Bytes pro Sektor, das höherwertige Byte steht hinten, also 0+2×256
0D h 01 h =1 1 Sektor pro Cluster (ein Eintrag im FAT bezieht sich jeweils auf einen Cluster)
0E h –0F h 01 h 00 h =1 1 reservierter Sektor, also hier nur der Bootsektor (Lage 000 h bis 1FF h )
10 h 02 h =2 2 File Allocation Tables sind vorhanden (normal)
11 h –12 h E0 h 00 h =224 maximal 224 (=00E0 h ) Verzeichniseinträge im Stammverzeichnis, das Stammverzeichnis belegt 14 Sektoren
13 h –14 h 40 h 0B h =2880 2880 (=0B40 h ) Sektoren (zu je 512 Bytes, so), also 1440 KiB = 1440 · 2 10 = 1474560 Byte
15 h F0 h 3,5-Zoll-Diskette, doppelseitig, 18 bzw. 36 Sektoren (in diesem Fall 18 Sektoren, siehe Wert unter 18 h )
16 h –17 h 09 h 00 h =9 9 Sektoren pro FAT. Die beiden FATs liegen direkt nach dem Bootsektor (Sektor 0, dem einzigen reservierten Sektor) folglich auf den Sektoren 1–9 (200 h bis 13FF h ) und 10–18 (1400 h bis 25FF h )
18 h –19 h 12 h 00 h =18 18 Sektoren pro Spur (die Anzahl der Spuren ergibt sich aus der Gesamtsektorenanzahl 2880, verteilt auf zwei Seiten (su), dividiert durch 18 Sektoren pro Spur hier also zu 80 Spuren)
1A h –1B h 02 h 00 h =2 zwei Seiten bzw. Schreib-Lese-Köpfe: Die Geometrie ergibt sich damit also zu: 2 Seiten (heads) × 80 Spuren (tracks) pro Seite × 18 Sektoren (sectors) pro Spur × 512 Bytes pro Sektor.
1C h –1F h 00 h 00 h 00 h 00 h =0 kein versteckter Sektor vor dem Bootsektor
24 h 00 h =0 Physische Laufwerksnummer (0 h bei Disketten)
36 h –3D h 46 h 41 h 46 h 41 h 54 h 31 h 32 h =„FAT12“ (kann, muss aber nicht dort eingetragen sein)
1FE h –1FF h 55 h AA h Signatur des Bootsektors, muss dort stehen, damit er als gültig anerkannt wird
200 h –13FF h F0 h FF h Erste FAT . Als Beispiel sind hier die ersten Bytes aufgeführt:
F0 FF FF 03 40 00 05 60 00 FF 8F 00 09 A0 00 0B
Jeweils 3 Bytes beziehen sich auf 2 Cluster. Die Halbbytes ab cd ef stehen für die 12-Bit Zahlen dab efc. Die ersten beiden Einträge sind Pseudoeinträge, die eigentliche Nummerierung beginnt mit 2. Die Bytefolge im Beispiel entspricht also der Liste FF0 FFF 003 004 005 006 FFF 008 009 00A 00B. Cluster 2 wird über 3, 4, 5, 6 fortgesetzt und endet in Cluster 6 (Eintrag FFF = −1) Cluster 7 wird in 8, 9, A, B fortgesetzt.
1400 h –25FF h F0 h FF h Zweite FAT . Sie enthält dasselbe:
F0 FF FF 03 40 00 05 60 00 FF 8F 00 09 A0 00 0B
2600 h –41FF h […] Stammverzeichnis (root directory): Es belegt 14 Sektoren (so) und enthält Einträge, die auch im Hexdump lesbar sind (in kurzem 8.3 und evtl. langem Format).
4200 h –45FF h […] Datenbereich : Datencluster Nr. 2 und 3 der Diskette. (Jeder Datencluster ist hier einen Sektor groß, wie unter 0D h festgelegt.)
4600 h –49FF h […] Datencluster 4 und 5 der Diskette.

Siehe auch

Weblinks

Einzelnachweise

  1. a b Udo Kuhnt, Luchezar Georgiev, Jeremy Davis: FAT+ Draft release, Rev. 2 . Abgerufen am 24. März 2007 .
  2. Je nach Quelle sind es entweder maximal 65.536 oder 65.460 Dateien, die mit FAT16 maximal möglich sind:
    • Resource Kit – Working with File Systems. In: Windows XP Documentation. Microsoft, 11. September 2009, abgerufen am 23. März 2021 (englisch): „Table 13-7 FAT16 Size Limits … Files per volume: Approximately 65,536 (216 files)“
    • Jarret W. Buse: File Allocation Table (FAT). (Forum-Posting) linux.org, 21. August 2013, abgerufen am 23. März 2021 (englisch): „TYPE [–] Max File Size [–] Max Number of Files … [TYPE:] FAT16 [Max File Size:] 2 GB [Max Number of Files:] 65,460“
  3. Peter Gallagher: Things I've learnt...: The FAT16 File System (with SD cards). ( Blog ) 14. März 2011, abgerufen am 23. März 2021 (englisch): „…for SD Cards using FAT16, the maximum Root Directory Entries and Bytes Per Sector are invariably 512.“
  4. Jürgen Rathlev: Personal Backup Version 6, Abschnitt: Einstellungen für den Dateivergleich / Zeitstempelvergleich , personal-backup.rathlev-home.de, abgerufen am 29. Januar 2021.
  5. Beschränkungen des FAT32-Dateisystems in Windows XP. In: Hilfe und Support. Microsoft Deutschland GmbH, 24. Mai 2011, abgerufen am 18. Oktober 2011 : „Auf einer FAT32-Partition können keine Dateien erstellt werden, die größer als (2^32)-1 Byte sind (dh ein Byte weniger als 4 GB)“
  6. PCFreunde.de Tutorial: „Festplatten unter Windows mit FAT32 partitionieren“ 4. Februar 2010, im Webarchiv vom 12. April 2018 , abgerufen am 28. Oktober 2020.
  7. Computerbild Tipp-Center: „Festplatte auf FAT32 formatieren: So funktioniert es“ 19. August 2018 , abgerufen am 28. Oktober 2020.
  8. Microsoft Extensible Firmware Initiative – FAT32 File System Specification (2000) - Seite 34
  9. Brandon LeBlanc: Vista SP1 Whitepaper . Microsoft , 28. August 2007, archiviert vom Original am 12. September 2008 ; abgerufen am 22. Februar 2012 .
  10. Update für Windows XP (KB955704) . (Nicht mehr online verfügbar.) Microsoft , 26. Januar 2009, archiviert vom Original am 7. Januar 2011 ; abgerufen am 22. Februar 2012 .
  11. Apple macht viele Macs für Microsofts Dateisystem exFAT fit. Abgerufen am 11. November 2010 .
  12. exFAT in the Linux kernel? Yes! In: microsoft.com. Open Source Blog, 2019, abgerufen am 29. August 2019 (amerikanisches Englisch).
  13. a b Linux 5.4 freigegeben: exFAT-Support und Einschränkungen für Root. In: heise.de. 26. November 2019, abgerufen am 28. April 2020 .
  14. Jonathan Corbet: 5.7 Merge window part 2. In: LWN.net. 13. April 2020, abgerufen am 17. August 2020 .
  15. Tuxera, the NTFS-3G File System Provider, Signs Intellectual Property Agreement with Microsoft. 26. August 2009, archiviert vom Original am 18. Februar 2011 ; abgerufen am 22. November 2015 (englisch).
  16. exFAT fs and Linux. 29. Januar 2009, abgerufen am 30. August 2009 (englisch).
  17. exFAT für Linux veröffentlicht stabiles Release. 20. Januar 2013, abgerufen am 20. Januar 2013 .
  18. Samsung veröffentlicht exFAT-Treiber unter GPL , heise open, 16. August 2013
  19. Beschreibung des ExFAT-Dateisystemtreiber. Microsoft, 29. September 2009, abgerufen am 22. Februar 2012 .
  20. https://events.static.linuxfound.org/images/stories/pdf/lceu11_munegowda_s.pdf
  21. Standard-Clustergröße für NFTS, FAT und exFAT. In: support.microsoft.com. 30. November 2018, abgerufen am 28. April 2020 .
  22. TFAT Overview auf MSDN (3. April 2014)
  23. Matthias Paul: Need DOS 6.22 (Not OEM) . In: alt.msdos.programmer. 20. Februar 2002, abgerufen am 14. Oktober 2006 .
  24. Wally Bass : Cluster Size . In: comp.os.msdos.programmer. 14. Februar 1994, abgerufen am 14. Oktober 2006 .
  25. Floppy Disk is Not Accessible, Not Formatted, or Not Recognized by Windows. In: support.microsoft.com. Abgerufen am 22. Februar 2015 (englisch).
  26. Christoph Pfisterer: disktype Documentation, Kapitel 3.3.: ATARI ST