Tabela de alocação de arquivos
File Allocation Table (FAT) é um sistema de arquivos desenvolvido para computadores pessoais e foi o sistema de arquivos padrão para os sistemas operacionais MS-DOS e Windows 9x. Originalmente desenvolvido em 1977 para uso em disquetes, foi adaptado para uso em discos rígidos e outros dispositivos. O aumento na capacidade das unidades de disco exigiu três variantes principais: FAT12, FAT16 e FAT32. O FAT foi substituído pelo NTFS como sistema de arquivos padrão nos sistemas operacionais Microsoft a partir do Windows XP. No entanto, o FAT continua a ser usado em cartões e módulos de memória flash e de estado sólido (incluindo unidades flash USB), em muitos dispositivos portáteis e incorporados devido à sua compatibilidade e facilidade de implementação.
Usos
Histórico
O FAT também foi usado em discos rígidos nas eras DOS e Windows 9x. A Microsoft introduziu o NTFS com a plataforma Windows NT em 1993, mas o FAT permaneceu o padrão para o usuário doméstico até a introdução do Windows XP em 2001. O Windows Me foi a versão final do Windows a usar o FAT como sistema de arquivos padrão.
Para disquetes, o FAT foi padronizado como ECMA-107 e ISO/IEC 9293:1994 (substituindo ISO 9293:1987). Esses padrões cobrem FAT12 e FAT16 com suporte apenas para nomes de arquivos curtos 8.3; nomes de arquivos longos com VFAT foram parcialmente patenteados. Embora o FAT12 seja usado em disquetes, o FAT16 e o FAT32 são normalmente encontrados em mídias maiores.
Moderno
FAT é usado internamente para a partição do sistema EFI no estágio de inicialização de computadores compatíveis com EFI. Sistemas de arquivos FAT ocultos também são usados na partição de inicialização UEFI em PCs modernos.
O FAT ainda é usado em unidades que devem ser usadas por vários sistemas operacionais, como em ambientes Windows, Linux e DOS compartilhados. O Microsoft Windows também vem com uma ferramenta pré-instalada para converter um sistema de arquivos FAT em NTFS diretamente, sem a necessidade de reescrever todos os arquivos, embora isso não possa ser revertido facilmente. O sistema de arquivos FAT é usado em mídias removíveis, como disquetes, superdisquetes, cartões de memória e de memória flash ou unidades flash USB. FAT é compatível com dispositivos portáteis como PDAs, câmeras digitais, filmadoras, reprodutores de mídia e telefones celulares.
O sistema de arquivos DCF adotado por quase todas as câmeras digitais desde 1998 define um sistema de arquivos lógico com 8,3 nomes de arquivos e torna obrigatório o uso de FAT12, FAT16, FAT32 ou exFAT para sua camada física para compatibilidade.
Detalhes técnicos
<span class="anchor" id="Fragmentação"
<span class="anchor" id="Fragmentação"...
O sistema de arquivos usa uma tabela de índice armazenada no dispositivo para identificar cadeias de áreas de armazenamento de dados associadas a um arquivo, a Tabela de alocação de arquivos (FAT). O FAT é alocado estaticamente no momento da formatação. A tabela é uma lista vinculada de entradas para cada cluster, uma área contígua de armazenamento em disco. Cada entrada contém o número do próximo cluster no arquivo ou um marcador indicando o final do arquivo, espaço em disco não utilizado ou áreas reservadas especiais do disco. O diretório raiz do disco contém o número do primeiro cluster de cada arquivo nesse diretório. O sistema operacional pode então percorrer o FAT, procurando o número do cluster de cada parte sucessiva do arquivo do disco como uma cadeia de clusters até que o final do arquivo seja alcançado. Subdiretórios são implementados como arquivos especiais contendo as entradas de diretório de seus respectivos arquivos.
Cada entrada na lista vinculada FAT é um número fixo de bits: 12, 16 ou 32. O tamanho máximo de um arquivo ou unidade de disco que pode ser acessado é o produto do maior número que pode ser armazenado no entradas (menos alguns valores reservados para indicar espaço não alocado ou o final de uma lista) e o tamanho do cluster de disco. Mesmo que apenas um byte de armazenamento seja necessário para estender um arquivo, um cluster inteiro deve ser alocado para ele e qualquer cluster não pode conter mais de um arquivo, portanto clusters grandes desperdiçam muito espaço em disco se houver um grande número de arquivos pequenos.
Originalmente projetado como um sistema de arquivos de 8 bits, o número máximo de clusters deve aumentar à medida que a capacidade da unidade de disco aumenta e, portanto, o número de bits usados para identificar cada cluster aumentou. As sucessivas variantes principais do formato FAT são nomeadas de acordo com o número de bits dos elementos da tabela: 12 (FAT12), 16 (FAT16) e 32 (FAT32).
Variantes
Existem diversas variantes do sistema de arquivos FAT (por exemplo, FAT12, FAT16 e FAT32). FAT16 refere-se ao grupo original de sistemas de arquivos FAT com entradas de cluster de 16 bits e também a variantes posteriores. "VFAT" é uma extensão opcional para nomes de arquivos longos, que pode funcionar em qualquer sistema de arquivos FAT. Volumes que usam nomes de arquivos longos VFAT também podem ser lidos por sistemas operacionais que não suportam a extensão VFAT.
FAT original de 8 bits
O sistema de arquivos FAT original (ou estrutura FAT, como foi chamado inicialmente) foi projetado e implementado por Marc McDonald, com base em uma série de discussões entre McDonald e Bill Gates.
Ele foi introduzido com elementos de tabela de 8 bits (e números de cluster de dados válidos até 0xBF) em um precursor do Standalone Disk BASIC-80 da Microsoft para um 8080. sucessor do terminal de entrada de dados NCR 7200 modelo VI, equipado com disquetes de 8 polegadas (200 mm), em 1977 ou 1978.
Em 1978, o Standalone Disk BASIC-80 foi portado para o 8086 usando um emulador em um DEC PDP-10, já que nenhum sistema 8086 real estava disponível naquela época.
O sistema de arquivos FAT também foi usado no MDOS/MIDAS da Microsoft, um sistema operacional para plataformas 8080/Z80 escrito por McDonald desde 1979.
A versão Standalone Disk BASIC suportava três FATs, enquanto este era um parâmetro para MIDAS. Alegadamente, o MIDAS também foi preparado para suportar variantes FAT de 10, 12 e 16 bits. Embora o tamanho das entradas do diretório fosse de 16 bytes no Standalone Disk BASIC, o MIDAS ocupava 32 bytes por entrada.
Tim Paterson, da Seattle Computer Products (SCP), conheceu a estrutura FAT da Microsoft pela primeira vez quando ajudou Bob O'Rear a adaptar a porta do emulador Standalone Disk BASIC-86 para o SCP& Protótipo de placa de CPU 8086 do barramento S-100 da #39;durante uma semana de visitação na Microsoft em maio de 1979. O produto final foi mostrado na Lifeboat Associates'. estande na National Computer Conference em Nova York de 4 a 7 de junho de 1979, onde Paterson aprendeu sobre a implementação mais sofisticada do FAT no MDOS/MIDAS e McDonald conversou com ele sobre o design do sistema de arquivos.
FAT12
Entre abril e agosto de 1980, enquanto tomava emprestado o conceito FAT para o sistema operacional 8086 QDOS 0.10 do próprio SCP, Tim Paterson estendeu os elementos da tabela para 12 bits, reduziu o número de FATs para segundo, redefiniu a semântica de alguns dos valores reservados do cluster e modificou o layout do disco, de modo que o diretório raiz agora estivesse localizado entre o FAT e a área de dados para sua implementação do FAT12. Paterson também aumentou o limite de comprimento do nome de arquivo de nove caracteres (6,3) para onze caracteres para oferecer suporte a nomes de arquivos 8.3 no estilo CP/M e blocos de controle de arquivos. O formato usado no precursor do sistema de arquivos de 8 bits do Standalone Disk BASIC da Microsoft não era suportado pelo QDOS. Em agosto de 1980, o QDOS foi renomeado para 86-DOS. A partir do 86-DOS 0.42, o tamanho e o layout das entradas de diretório foram alterados de 16 bytes para 32 bytes para adicionar um carimbo de data do arquivo e aumentar o limite teórico de tamanho do arquivo além do limite anterior de 16 MB. O 86-DOS 1.00 tornou-se disponível no início de 1981. Mais tarde, em 1981, o 86-DOS evoluiu para o MS-DOS da Microsoft e o IBM PC DOS. A capacidade de ler volumes formatados anteriormente com entradas de diretório de 16 bytes foi eliminada com o MS-DOS 1.20.
FAT12 usou entradas de 12 bits para os endereços de cluster; alguns valores foram reservados para marcar o fim de uma cadeia de clusters, para marcar áreas inutilizáveis do disco ou para outros fins, portanto o número máximo de clusters foi limitado a 4.078. Para conservar espaço em disco, duas entradas FAT de 12 bits foram usadas. três bytes consecutivos de 8 bits no disco, exigindo manipulação para descompactar os valores de 12 bits. Isso foi suficiente para as unidades de disquete originais e pequenos discos rígidos de até 32 megabytes. A versão FAT16B disponível com DOS 3.31 suportava números de setor de 32 bits e, portanto, aumentava o limite de tamanho do volume.
Todas as estruturas de controle cabem dentro da primeira trilha, para evitar movimento do cabeçote durante as operações de leitura e gravação. Qualquer setor defeituoso na área de estruturas de controle tornaria o disco inutilizável. A ferramenta de formatação DOS rejeitou completamente esses discos. Setores defeituosos eram permitidos apenas na área de dados do arquivo. Clusters contendo setores defeituosos foram marcados como inutilizáveis com o valor reservado 0xFF7 no FAT.
Embora o 86-DOS suportasse três formatos de disco (250,25 KB, 616 KB e 1.232 KB com IDs FAT 0xFF e 0xFE) em unidades de disquete de 8 polegadas (200 mm), o IBM PC DOS 1.0, lançado com o IBM Personal Computer original em 1981, suportava apenas um formato de disquete de 8 setores com capacidade formatada de 160 KB (FAT ID 0xFE) para um único lado de 5,25 polegadas unidades de disquete e PC DOS 1.1 adicionaram suporte para formato frente e verso com 320 KB (FAT ID 0xFF). O PC DOS 2.0 introduziu suporte para formatos de disquete de 9 setores com 180 KB (FAT ID 0xFC) e 360 KB (FAT ID 0xFD).
As entradas de diretório 86-DOS 1.00 e PC DOS 1.0 incluíam apenas uma data, a data da última modificação. PC DOS 1.1 adicionou a hora da última modificação. Os atributos do arquivo PC DOS 1.x incluíam um bit oculto e um bit de sistema, com os seis bits restantes indefinidos. Naquela época, o DOS não suportava subdiretórios, mas normalmente havia apenas algumas dezenas de arquivos em um disquete.
O PC XT foi o primeiro PC com um disco rígido fornecido pela IBM, e o PC DOS 2.0 suportava esse disco rígido com FAT12 (FAT ID 0xF8). A suposição fixa de 8 setores por cluster em discos rígidos praticamente limitou o tamanho máximo da partição a 16 MB para setores de 512 bytes e clusters de 4 KB.
O bloco de parâmetros do BIOS (BPB) também foi introduzido no PC DOS 2.0, e esta versão também adicionou somente leitura, arquivo, rótulo de volume e atributos de diretório bits para subdiretórios hierárquicos.
O MS-DOS 3.0 introduziu suporte para disquetes de alta densidade de 1,2 MB e 5,25 polegadas (descritor de mídia 0xF9), que tinham 15 setores por trilha, portanto, mais espaço para os FATs.
O FAT12 permanece em uso em todos os disquetes comuns, incluindo discos de 1,44 MB e discos posteriores de 2,88 MB (byte do descritor de mídia 0xF0).
FAT16 inicial
Em 1984, a IBM lançou o PC AT, que exigia o PC DOS 3.0 para acessar seu disco rígido de 20 MB. A Microsoft lançou o MS-DOS 3.0 em paralelo. Os endereços de cluster foram aumentados para 16 bits, permitindo até 65.526 clusters por volume. No entanto, o número máximo possível de setores e o tamanho máximo da partição de 32 MB não foram alterados. Embora os endereços de cluster fossem de 16 bits, esse formato não era o que hoje é comumente entendido como FAT16.
Um tipo de partição 0x04 indica esta forma de FAT16 com menos de 65.536 setores (menos de 32 MB para tamanho de setor 512). O benefício do FAT16 foi o uso de clusters menores, tornando o uso do disco mais eficiente, especialmente para grandes números de arquivos com apenas algumas centenas de bytes de tamanho.
Como o MS-DOS 3.0 formatava todas as partições de 16 MB a 32 MB no formato FAT16, um disco rígido de 20 MB formatado no MS-DOS 3.0 não era acessível pelo MS-DOS 2.0. Do MS-DOS 3.0 ao MS-DOS 3.30 ainda era possível acessar partições FAT12 com menos de 15 MB, mas exigia que todas as partições de 16 MB a 32 MB fossem FAT16 e, portanto, não era possível acessar partições do MS-DOS 2.0 nessa faixa de tamanho. MS-DOS 3.31 e superior poderiam acessar partições FAT12 de 16 MB a 32 MB novamente.
FAT setorial lógico
As implementações de FAT12 e FAT16 para MS-DOS e PC DOS não conseguiam acessar partições de disco maiores que 32 megabytes. Vários fabricantes desenvolveram suas próprias variantes FAT em suas versões OEM do MS-DOS.
Alguns fornecedores (AST e NEC) suportavam oito, em vez das quatro padrão, entradas de partição primária em seu Master Boot Record (MBR) estendido personalizado e adaptaram MS-DOS para usar mais de uma única partição primária.
Outros fornecedores contornaram os limites de tamanho de volume impostos pelas entradas do setor de 16 bits, aumentando o tamanho aparente dos setores nos quais o sistema de arquivos operava. Esses setores lógicos eram maiores (até 8.192 bytes) do que o tamanho do setor físico (ainda 512 bytes) no disco. O DOS-BIOS ou BIOS do sistema combinaria então vários setores físicos em setores lógicos para o sistema de arquivos trabalhar.
Essas mudanças foram transparentes para a implementação do sistema de arquivos no kernel do DOS. O DOS-BIOS subjacente traduziu esses setores lógicos em setores físicos de acordo com as informações de particionamento e a geometria física da unidade.
A desvantagem dessa abordagem era o aumento da memória usada para buffer e desbloqueio de setor. Como as versões mais antigas do DOS não podiam usar grandes setores lógicos, os OEMs introduziram novos IDs de partição para suas variantes FAT, a fim de ocultá-las de problemas de prateleira do MS-DOS e PC DOS. Os IDs de partição conhecidos para FATs setorizados lógicos incluem: 0x08 (Commodore MS-DOS 3.x), 0x11 (Leading Edge MS-DOS 3.x), 0x14 (AST MS-DOS 3.x), 0x24 (NEC MS-DOS 3.30), 0x56 (AT&T MS-DOS 3.x), 0xE5 (Tandy MS-DOS), 0xF2 (Sperry IT MS-DOS 3.x, Unisys MS-DOS 3.3 – também usado pela Digital Research DOS Plus 2.1). Versões OEM como Toshiba MS-DOS, Wyse MS-DOS 3.2 e 3.3, bem como Zenith MS-DOS também são conhecidos por utilizarem setorização lógica.
Embora não sejam padronizadas e abaixo do ideal, essas variantes do FAT são perfeitamente válidas de acordo com as especificações do próprio sistema de arquivos. Portanto, mesmo que os problemas padrão do MS-DOS e do PC DOS não fossem capazes de lidar com eles, a maioria dessas variantes FAT12 e FAT16 específicas do fornecedor podem ser montadas por implementações de sistemas de arquivos mais flexíveis em sistemas operacionais como DR-DOS, simplesmente alterando o ID da partição para um dos tipos reconhecidos. Além disso, se não precisarem mais ser reconhecidas pelos seus sistemas operacionais originais, as partições existentes poderão ser "convertidas" em volumes FAT12 e FAT16 mais compatíveis com versões do MS-DOS/PC DOS 4.0–6.3, que não suportam tamanhos de setor diferentes de 512 bytes, mudando para um BPB com entrada de 32 bits para o número de setores, conforme introduzido desde DOS 3.31 (veja FAT16B abaixo), mantendo o tamanho do cluster e reduzindo o tamanho do setor lógico no BPB para 512 bytes, enquanto ao mesmo tempo aumenta as contagens de setores lógicos por cluster, setores lógicos reservados, setores lógicos totais e setores lógicos setores por FAT pelo mesmo fator.
Um desenvolvimento paralelo no MS-DOS/PC DOS que permitiu aumentar o tamanho máximo possível da FAT foi a introdução de múltiplas partições FAT em um disco rígido. Para permitir o uso de mais partições FAT de forma compatível, um novo tipo de partição foi introduzido no PC DOS 3.2 (1986), a partição estendida (EBR), que é um contêiner para uma partição adicional chamada unidade lógica. Desde o PC DOS 3.3 (abril de 1987), existe outra partição estendida opcional contendo a próxima unidade lógica e assim por diante. O MBR de um disco rígido pode definir até quatro partições primárias ou uma partição estendida além de até três partições primárias.
FAT16 final
Em novembro de 1987, o Compaq Personal Computer DOS 3.31 (uma versão OEM modificada do MS-DOS 3.3 lançada pela Compaq com suas máquinas) introduziu o que hoje é conhecido simplesmente como formato FAT16, com a expansão do setor de disco de 16 bits conta para 32 bits no BPB.
Embora as alterações no disco tenham sido pequenas, todo o driver de disco do DOS teve que ser convertido para usar números de setor de 32 bits, uma tarefa complicada pelo fato de ter sido escrito em linguagem assembly de 16 bits.
O resultado foi inicialmente chamado de DOS 3.31 Large File System. A ferramenta DSKPROBE da Microsoft refere-se ao tipo 0x06 como BigFAT, enquanto algumas versões mais antigas do FDISK o descrevem como BIGDOS. Tecnicamente, é conhecido como FAT16B.
Como as versões mais antigas do DOS não foram projetadas para lidar com mais de 65.535 setores, foi necessário introduzir um novo tipo de partição para esse formato, a fim de ocultá-lo dos problemas anteriores à 3.31 do DOS. A forma original do FAT16 (com menos de 65.536 setores) tinha um tipo de partição 0x04. Para lidar com discos maiores que isso, o tipo 0x06 foi introduzido para indicar 65.536 ou mais setores. Além disso, o driver de disco foi expandido para lidar também com mais de 65.535 setores. A única outra diferença entre o formato FAT16 original e o formato FAT16B mais recente é o uso de um formato BPB mais recente com entrada de setor de 32 bits. Portanto, os sistemas operacionais mais recentes que suportam o formato FAT16B também podem lidar com o formato FAT16 original sem quaisquer alterações necessárias.
Se as partições a serem usadas por edições pré-DOS 3.31 do DOS precisarem ser criadas por ferramentas modernas, os únicos critérios teoricamente necessários para atender são uma contagem de setores inferior a 65.536 e o uso do ID de partição antigo (0x04). Na prática, porém, as partições primárias do tipo 0x01 e 0x04 não devem estar fisicamente localizadas fora dos primeiros 32 MB do disco, devido a outras restrições no MS-DOS 2.x, que não poderia lidar com eles de outra forma.
Em 1988, a melhoria do FAT16B tornou-se mais disponível por meio do DR DOS 3.31, PC DOS 4.0, OS/2 1.1 e MS-DOS 4.0. O limite no tamanho da partição foi ditado pela contagem assinada de setores por cluster de 8 bits, que originalmente tinha um valor máximo de potência de dois de 64. Com o tamanho padrão do setor do disco rígido de 512 bytes, isso dá um máximo de 32 bytes. Tamanho do cluster KB, corrigindo assim o valor "definitivo" limite para o tamanho da partição FAT16 em 2 GB para tamanho de setor 512. Em mídia magneto-óptica, que pode ter setores de 1 ou 2 KB em vez de 0,5 KB, esse limite de tamanho é proporcionalmente maior.
Muito mais tarde, o Windows NT aumentou o tamanho máximo do cluster para 64 KB, considerando a contagem de setores por cluster como não assinada. Porém, o formato resultante não era compatível com nenhuma outra implementação FAT da época e gerou maior fragmentação interna. Windows 98, SE e ME também suportavam leitura e gravação desta variante, mas seus utilitários de disco não funcionavam com ela e alguns serviços FCB não estão disponíveis para tais volumes. Isso contribui para uma situação de compatibilidade confusa.
Antes de 1995, as versões do DOS acessavam o disco somente através do endereçamento CHS. Quando o Windows 95 (MS-DOS 7.0) introduziu o acesso ao disco LBA, as partições poderiam começar a ficar fisicamente localizadas fora do primeiro c. 8 GB deste disco e, portanto, fora do alcance do esquema de endereçamento CHS tradicional. As partições parcial ou totalmente localizadas além da barreira CHS, portanto, tiveram que ser ocultadas de sistemas operacionais não habilitados para LBA, usando o novo tipo de partição 0x0E na tabela de partições. As partições FAT16 que usam esse tipo de partição também são denominadas FAT16X. A única diferença, em comparação com as partições FAT16 anteriores, é o facto de algumas entradas geométricas relacionadas com CHS no registo BPB, nomeadamente o número de sectores por faixa e o número de cabeças, poderem conter valores nulos ou enganosos e não devem ser utilizados.
O número de entradas do diretório raiz disponíveis para FAT12 e FAT16 é determinado quando o volume é formatado e é armazenado em um campo de 16 bits. Para um determinado número RDE e tamanho de setor SS, o número RDS dos setores do diretório raiz é RDS = ceil((RDE × 32) / SS), e RDE é normalmente escolhido para preencher esses setores, ou seja, RDE × 32 = RDS × SS. As mídias FAT12 e FAT16 normalmente usam 512 entradas de diretório raiz em mídias não disquetes. Algumas ferramentas de terceiros, como mkdosfs, permitem ao usuário definir este parâmetro.
FAT32
Para superar o limite de tamanho de volume do FAT16 e, ao mesmo tempo, permitir que o código de modo real do DOS manipule o formato, a Microsoft projetou uma nova versão do sistema de arquivos, FAT32, que suportava um número maior de clusters possíveis, mas podia reutilizar a maior parte do código existente, de modo que o consumo de memória convencional aumentasse em menos de 5 KB no DOS. Os valores do cluster são representados por números de 32 bits, dos quais 28 bits são usados para armazenar o número do cluster.
Tamanhos máximos
O setor de inicialização FAT32 usa um campo de 32 bits para a contagem de setores, limitando o tamanho máximo do volume FAT32 a 2 terabytes com um tamanho de setor de 512 bytes. O tamanho máximo do volume FAT32 é 16 TB com um tamanho de setor de 4.096 bytes. A ferramenta integrada de formatação de disco shell do Windows no Windows NT suporta arbitrariamente apenas tamanhos de volume de até 32 GB, mas o Windows suporta leitura e gravação em volumes FAT32 maiores preexistentes, e eles podem ser criados com o prompt de comando, PowerShell ou ferramentas de terceiros ou formatando o volume em um sistema não Windows ou em um sistema Windows 9x com suporte a FAT32 e, em seguida, transferindo-o para o sistema Windows NT.
O tamanho máximo possível para um arquivo em um volume FAT32 é 4 GB menos 1 byte, ou 4.294.967.295 (232 − 1) bytes. Este limite é uma consequência da entrada de comprimento de arquivo de 4 bytes na tabela de diretórios e também afetaria partições FAT16 relativamente grandes, habilitadas por um tamanho de setor suficiente.
Assim como o FAT12 e o FAT16, o FAT32 não inclui suporte integrado direto para nomes de arquivos longos, mas os volumes FAT32 podem opcionalmente conter nomes de arquivos longos VFAT, além de nomes de arquivos curtos, exatamente da mesma maneira que os nomes de arquivos longos VFAT foram implementados opcionalmente para FAT12. e volumes FAT16.
Desenvolvimento
O FAT32 foi introduzido com o Windows 95 OSR2 (MS-DOS 7.1) em 1996, embora fosse necessária reformatação para usá-lo, e o DriveSpace 3 (a versão que acompanha o Windows 95 OSR2 e o Windows 98) nunca o suportou. O Windows 98 introduziu um utilitário para converter discos rígidos existentes de FAT16 para FAT32 sem perda de dados.
Na linha Windows NT, o suporte nativo para FAT32 chegou no Windows 2000. Um driver FAT32 gratuito para Windows NT 4.0 estava disponível na Winternals, uma empresa posteriormente adquirida pela Microsoft. A aquisição do driver de fontes oficiais não é mais possível. Desde 1998, o driver DRFAT32 carregável dinamicamente do Caldera pode ser usado para habilitar o suporte FAT32 no DR-DOS. A primeira versão do DR-DOS com suporte nativo ao acesso FAT32 e LBA foi OEM DR-DOS 7.04 em 1999. Nesse mesmo ano, a IMS introduziu suporte nativo a FAT32 com REAL/32 7.90, e o IBM 4690 OS adicionou suporte a FAT32 com a versão 2. Ahead Software forneceu outro driver FAT32.EXE carregável dinamicamente para DR-DOS 7.03 com Nero Burning ROM em 2004. A IBM introduziu suporte nativo a FAT32 com OEM PC DOS 7.1 em 1999.
Dois tipos de partição foram reservados para partições FAT32, 0x0B e 0x0C. O último tipo também é denominado FAT32X para indicar o uso de acesso ao disco LBA em vez de CHS. Nessas partições, as entradas geométricas relacionadas ao CHS, nomeadamente os endereços do setor CHS no MBR, bem como o número de setores por trilha e o número de cabeças no registro EBPB, podem conter valores nulos ou enganosos e não devem ser usados.
Extensões
Atributos estendidos
OS/2 depende fortemente de atributos estendidos (EAs) e os armazena em um arquivo oculto chamado "EA␠DATA.␠SF" no diretório raiz do volume FAT12 ou FAT16. Este arquivo é indexado por dois bytes previamente reservados na entrada de diretório do arquivo (ou diretório) no deslocamento 0x14. No formato FAT32, esses bytes contêm os 16 bits superiores do número inicial do cluster do arquivo ou diretório, impossibilitando o armazenamento de EAs do OS/2 em FAT32 usando esse método.
No entanto, o driver do sistema de arquivos instalável (IFS) FAT32 de terceiros FAT32.IFS versão 0.70 e superior da Henk Kelder & Netlabs para OS/2, eComStation e ArcaOS armazena atributos estendidos em arquivos extras com nomes de arquivos tendo a string "␠EA.␠SF" anexado ao nome de arquivo normal do arquivo ao qual pertencem. O driver também utiliza o byte no deslocamento 0x0C nas entradas do diretório para armazenar um byte de marca especial que indica a presença de atributos estendidos para ajudar a acelerar as coisas. (Essa extensão é extremamente incompatível com o método FAT32+ para armazenar arquivos maiores que 4 GB menos 1 em volumes FAT32.)
Atributos estendidos são acessíveis por meio da área de trabalho do Workplace Shell, por meio de scripts REXX e de muitas interfaces gráficas do sistema e utilitários de linha de comando (como 4OS2).
Para acomodar seu subsistema OS/2, o Windows NT suporta a manipulação de atributos estendidos em HPFS, NTFS, FAT12 e FAT16. Ele armazena EAs em FAT12, FAT16 e HPFS usando exatamente o mesmo esquema do OS/2, mas não suporta nenhum outro tipo de ADS mantido em volumes NTFS. Tentar copiar um arquivo com qualquer ADS diferente de EAs de um volume NTFS para um volume FAT ou HPFS exibe uma mensagem de aviso com os nomes dos ADSs que serão perdidos. Ele não suporta o método FAT32.IFS para armazenar EAs em volumes FAT32.
O Windows 2000 em diante funciona exatamente como o Windows NT, exceto que ele ignora EAs ao copiar para FAT32 sem qualquer aviso (mas mostra o aviso para outros ADSs, como "Macintosh Finder Info" e "Macintosh Bifurcação de recursos").
Cygwin usa "EA␠DATA.␠SF" arquivos também.
Nomes de arquivos longos
Um dos objetivos de experiência do usuário para os designers do Windows 95 era a capacidade de usar nomes de arquivos longos (LFNs – até 255 unidades de código UTF-16), além dos nomes de arquivos clássicos 8.3 (SFNs). Para compatibilidade com versões anteriores e futuras, os LFNs foram implementados como uma extensão opcional sobre as estruturas existentes do sistema de arquivos FAT, usando uma solução alternativa na forma como as entradas de diretório são dispostas.
Este método transparente para armazenar nomes longos de arquivos nos sistemas de arquivos FAT existentes sem alterar suas estruturas de dados é geralmente conhecido como VFAT (para "Virtual FAT") em homenagem ao Windows 95. driver de dispositivo virtual.
Os sistemas operacionais não habilitados para VFAT ainda podem acessar os arquivos sob seu alias de nome de arquivo curto sem restrições; no entanto, os nomes de arquivo longos associados podem ser perdidos quando arquivos com nomes de arquivo longos são copiados em sistemas operacionais não compatíveis com VFAT.
No Windows NT, o suporte para nomes de arquivos longos VFAT começou na versão 3.5.
O Linux fornece um driver de sistema de arquivos VFAT para trabalhar com volumes FAT com nomes de arquivo longos VFAT. Por algum tempo, um driver UVFAT estava disponível para fornecer suporte combinado para permissões no estilo UMSDOS com nomes de arquivos longos VFAT.
OS/2 adicionou suporte a nomes de arquivos longos ao FAT usando atributos estendidos (EA) antes da introdução do VFAT. Assim, os nomes de arquivos longos VFAT são invisíveis para o OS/2, e os nomes de arquivos longos do EA são invisíveis para o Windows; portanto, usuários experientes de ambos os sistemas operacionais teriam que renomear os arquivos manualmente.
Human68K suportava até 18,3 nomes de arquivos e caracteres Kanji (Shift JIS) em uma variante proprietária do sistema de arquivos FAT.
Para oferecer suporte a aplicativos Java, o sistema operacional IBM 4690 versão 2 baseado em FlexOS introduziu sua própria arquitetura de sistema de arquivos virtual (VFS) para armazenar nomes de arquivos longos no sistema de arquivos FAT de maneira compatível com versões anteriores. Se ativado, os nomes de arquivos virtuais (VFN) estarão disponíveis em letras de unidades lógicas separadas, enquanto os nomes de arquivos reais (RFN) permanecerão disponíveis nas letras de unidades originais.
Bifurcações e fluxos de dados alternativos
O sistema de arquivos FAT em si não foi projetado para suportar fluxos de dados alternativos (ADS), mas alguns sistemas operacionais que dependem fortemente deles desenvolveram vários métodos para lidar com eles em volumes FAT. Esses métodos armazenam as informações adicionais em arquivos e diretórios extras (Mac OS e macOS clássicos) ou fornecem nova semântica para campos não utilizados anteriormente das estruturas de dados em disco FAT (OS/2 e Windows NT).
O Mac OS que usa o PC Exchange armazena várias datas, atributos de arquivos e nomes longos de arquivos em um arquivo oculto chamado "FINDER.DAT" e bifurcações de recursos (um arquivo comum do Mac OS ADS) em um subdiretório denominado "RESOURCE.FRK", em todos os diretórios onde são utilizados. Do PC Exchange 2.1 em diante, eles armazenam os nomes de arquivos longos do Mac OS como nomes de arquivos longos FAT padrão e convertem nomes de arquivos FAT com mais de 31 caracteres em nomes de arquivos exclusivos de 31 caracteres, que podem então ficar visíveis para aplicativos Macintosh.
O macOS armazena bifurcações de recursos e metadados (atributos de arquivo, outros ADS) usando o formato AppleDouble em um arquivo oculto com um nome construído a partir do nome do arquivo do proprietário prefixado com "._", e o Finder armazena alguns metadados de pastas e arquivos em um arquivo oculto chamado ".DS_Store" (mas observe que o Finder usa .DS_Store mesmo no sistema de arquivos nativo do macOS, HFS+).
Permissões e nomes de arquivos UMSDOS
As primeiras distribuições do Linux também suportavam um formato conhecido como UMSDOS, uma variante FAT com atributos de arquivo Unix (como nome de arquivo longo e permissões de acesso) armazenados em um arquivo separado chamado "--linux-.- --". O UMSDOS caiu em desuso após o lançamento do VFAT e não é habilitado por padrão no Linux a partir da versão 2.5.7. Por algum tempo, o Linux também forneceu suporte combinado para permissões no estilo UMSDOS e nomes de arquivos longos VFAT por meio de UVFAT.
GORDURA+
Em 2007, o rascunho aberto de FAT+ propôs como armazenar arquivos maiores de até 256 GB menos 1 byte, ou 274.877.906.943 (238 − 1) bytes, em um formato ligeiramente modificado. e volumes FAT32 compatíveis com versões anteriores, mas impõe o risco de que ferramentas de disco ou implementações FAT32 que não tenham conhecimento desta extensão possam truncar ou excluir arquivos que excedam o limite normal de tamanho de arquivo FAT32. O suporte para FAT32+ e FAT16+ é limitado a algumas versões do DR-DOS e não está disponível nos sistemas operacionais convencionais. (Essa extensão é criticamente incompatível com a opção /EAS do método FAT32.IFS para armazenar atributos estendidos do OS/2 em volumes FAT32.)
Derivados
Turbo FAT
Em seu sistema de arquivos NetWare (NWFS), a Novell implementou uma variante fortemente modificada de um sistema de arquivos FAT para o sistema operacional NetWare. Para arquivos maiores, utilizou um recurso de desempenho chamado Turbo FAT.
FATX
FATX é uma família de sistemas de arquivos projetados para unidades de disco rígido e cartões de memória do console de videogame Xbox da Microsoft, lançada em 2001.
Embora se assemelhem às mesmas ideias básicas de design do FAT16 e FAT32, as estruturas em disco FATX16 e FATX32 são simplificadas, mas fundamentalmente incompatíveis com os sistemas de arquivos FAT16 e FAT32 normais., impossibilitando que drivers normais do sistema de arquivos FAT montem tais volumes.
O setor de superbloco não inicializável tem 4 KB de tamanho e contém uma estrutura semelhante a um BPB de 18 bytes, completamente diferente dos BPBs normais. Os clusters normalmente têm 16 KB e há apenas uma cópia do FAT no Xbox. As entradas do diretório têm 64 bytes em vez dos 32 bytes normais. Os arquivos podem ter nomes de até 42 caracteres usando o conjunto de caracteres OEM e ter até 4 GB menos 1 byte de tamanho. Os carimbos de data/hora no disco contêm datas e horas de criação, modificação e acesso, mas diferem do FAT: no FAT, a época é 1980; na FATX, a época é 2000. No Xbox 360, a época é 1980.
ExFAT
exFAT é um sistema de arquivos introduzido com o Windows Embedded CE 6.0 em novembro de 2006 e trazido para a família Windows NT com o Vista Service Pack 1 e o Windows XP Service Pack 3 (ou instalação separada da atualização KB955704 do Windows XP). É vagamente baseado na arquitetura da Tabela de Alocação de Arquivos, mas é incompatível, proprietário e protegido por patentes.
exFAT destina-se ao uso em unidades flash e cartões de memória como SDXC e Memory Stick XC, onde FAT32 é usado de outra forma. Os fornecedores geralmente pré-formatam cartões SDXC com ele. Seu principal benefício é exceder o limite de tamanho de arquivo de 4 GB, já que as referências de tamanho de arquivo são armazenadas com oito em vez de quatro bytes, aumentando o limite para 264 − 1 bytes.
A GUI da Microsoft e os utilitários de formato de linha de comando oferecem-no como uma alternativa ao NTFS (e, para partições menores, ao FAT16B e FAT32). O tipo de partição MBR é 0x07 (o mesmo usado para IFS, HPFS e NTFS). As informações de geometria lógica localizadas no VBR são armazenadas em um formato que não se assemelha a nenhum tipo de BPB.
No início de 2010, o sistema de arquivos passou por engenharia reversa pelo SANS Institute. Em 28 de agosto de 2019, a Microsoft publicou a especificação técnica do exFAT para que ele possa ser usado no kernel Linux e em outros sistemas operacionais.
Patentes
A Microsoft solicitou e obteve uma série de patentes para partes importantes do sistema de arquivos FAT em meados da década de 1990. Todos os quatro pertencem a extensões de nomes de arquivos longos para FAT vistas pela primeira vez no Windows 95: patente dos EUA 5.579.517, patente dos EUA 5.745.902, patente dos EUA 5.758.352, patente dos EUA 6.286.013 (todas expiradas desde 2013).
Em 3 de dezembro de 2003, a Microsoft anunciou que ofereceria licenças para uso de sua especificação FAT e "propriedade intelectual associada", ao custo de um US$ 0,25 de royalties por unidade vendida, com US$ 250.000 de royalties máximos por contrato de licença. Para este fim, a Microsoft citou quatro patentes no sistema de arquivos FAT como base para suas reivindicações de propriedade intelectual.
Na especificação EFI FAT32, a Microsoft concede especificamente uma série de direitos, que muitos leitores interpretaram como permitindo que os fornecedores de sistemas operacionais implementem o FAT. As patentes que não são da Microsoft que afetam o FAT incluem: Patente dos EUA 5.367.671, específica para os atributos de objeto estendido do OS/2 (expirou em 2011).
Desafios e ações judiciais
A Public Patent Foundation (PUBPAT) apresentou evidências ao Escritório de Marcas e Patentes dos EUA (USPTO) em 2004 contestando a validade da patente dos EUA 5579517, incluindo referências da técnica anterior da Xerox e da IBM. O USPTO abriu uma investigação e concluiu rejeitando todas as reivindicações da patente. No ano seguinte, o USPTO anunciou ainda que, após o processo de reexame, afirmou a rejeição de '517 e, adicionalmente, considerou a patente dos EUA 5.758.352 inválida, alegando que a patente tinha cessionários incorretos.
No entanto, em 2006, o USPTO decidiu que as características da implementação do sistema FAT pela Microsoft eram “novas e não óbvias”, revertendo ambas as decisões anteriores e deixando as patentes válidas.
Em fevereiro de 2009, a Microsoft abriu um processo de violação de patente contra a TomTom, alegando que os produtos do fabricante do dispositivo infringiam patentes relacionadas a nomes de arquivos longos VFAT. Como alguns produtos TomTom são baseados em Linux, esta foi a primeira vez que a Microsoft tentou fazer valer as suas patentes contra a plataforma Linux. O processo foi resolvido fora dos tribunais no mês seguinte com um acordo de que a Microsoft teria acesso a quatro patentes da TomTom, que a TomTom retiraria o suporte para nomes de arquivos longos VFAT de seus produtos e que, em troca, a Microsoft não buscaria ação contra a TomTom durante os cinco anos de duração do acordo.
Em outubro de 2010, a Microsoft abriu um processo por violação de patente contra a Motorola, alegando que diversas patentes (incluindo duas das patentes VFAT) não estavam licenciadas para uso no sistema operacional Android. Eles também apresentaram uma reclamação ao ITC. Os desenvolvedores de software de código aberto desenvolveram métodos destinados a contornar as patentes da Microsoft.
Em 2013, a patente EP0618540 "espaço de nomes comuns para nomes de arquivos longos e curtos" (expirado desde 2014) foi invalidado na Alemanha. Após a desistência do recurso, esta decisão tornou-se definitiva em 28 de outubro de 2015.