# ExFAT

exFAT (Extended File Allocation Table, em português "Tabela de Alocação de Arquivos (ficheiros) Estendida, também conhecido como FAT64) é um formato de sistema de arquivos (ficheiros) utilizado principalmente em discos de memória flash, introduzido pela Microsoft em 2006 com o Windows Embedded CE 6.0. O exFAT foi proprietário até 28 de agosto de 2019, quando a Microsoft publicou a especificação dele. A Microsoft possui patentes em vários elementos do seu design.
O exFAT pode ser usado quando o sistema de arquivos NTFS não for uma solução viável (devido à sobrecarga de estrutura de dados), e o limite de tamanho do arquivo do sistema de arquivos FAT32 padrão (isto é, 4 GiB) ser inaceitável.
O exFAT foi adotado pela SD Card Association como o sistema de arquivos padrão para cartões SDXC maiores que 32 GiB.
Em 2013, a Samsung Electronics publicou sob a GPL um driver do Linux para o exFAT. Em 28 de Agosto de 2019, a Microsoft publicou pela primeira vez a especificação do exFAT, e um novo driver foi incluído no núcleo Linux na versão 5.4.

## Visão geral

O exFAT foi introduzido pela primeira vez no final de 2006 como parte do Windows Embedded CE 6.0, um sistema operacional da família Windows para dispositivos embarcados. A maioria dos fabricantes que adquirem as licenças do exFAT são fabricantes de sistemas embarcados ou fabricantes de dispositivos que produzem mídia que será pré-formatada com o exFAT. A família inteira da File Allocation Table (FAT), incluído nesta o exFAT, é usada para sistemas embarcados porque é leve e é mais adequado para soluções com baixa memória e baixos requisitos de energia, e pode ser implementado no firmware.
exFAT permite arquivos individuais maiores que 4 GiB, facilitando a gravação contínua de vídeos em HD longos que pode exceder o limite de 4 GiB em menos de uma hora. As câmeras digitais atuais usando o FAT32 quebrarão os arquivos de vídeo em múltiplos segmentos de aproximadamente 2 ou 4 GiB. Com o aumento da capacidade e o aumento dos dados transferidos, a operação de escrita precisa ser feita de forma mais eficiente. Os cartões SDXC, rodando no padrão UHS-I têm uma velocidade de gravação mínima garantida de 10 MBps e o exFAT desempenha um fator na obtenção dessa velocidade através da redução da sobrecarga do sistema de arquivos na alocação de cluster. Isso é conseguido através da introdução de um bitmap de cluster e eliminação (ou redução) de gravações para a FAT. Um único bit no registro do diretório indica que o arquivo é contíguo, informando o driver exFAT para ignorar a FAT. Essa otimização é análoga a um extent em outros sistemas de arquivos, exceto que ele se aplica apenas a arquivos inteiros, em oposição a partes contíguas de arquivos.
O exFAT também é suportado em vários dispositivos de mídia, como televisores de tela plana modernos, centros de mídia e players de mídia portáteis.
Alguns fabricantes de mídias em memória flash, incluindo pen drives USB, Compact Flash (CF) e unidades de estado sólido (SSD) fabricam algumas de suas mídias de alta capacidade já sendo pré-formatadas com o sistema de arquivos exFAT. Por exemplo, a Sandisk envia seus cartões CF de 256 GB como exFAT.

## Recursos

As especificações, recursos, e requisitos do sistema de arquivos exFAT incluem:
* Limite de tamanho de arquivo de 16 EiB - 1 byte (de outra forma limitado pelo tamanho máximo do volume de 128 PiB - 1 byte), aumentado de 4 GiB - 1 byte em um sistema de arquivos FAT32 padrão. Portanto, para o usuário típico, interoperabilidade perfeita entre as plataformas Windows e OS X para arquivos com mais de 4 GiB.
* Escalabilidade para grandes tamanhos de disco: ca. 128 PiB máximo, 512 TiB máximo recomendado, aumentado do limite de 32 bits (2 TiB para um tamanho de setor de 512 bytes) de partições FAT32 padrão.
* Suporte para até 2.796.202 arquivos por diretório. A Microsoft documenta um limite de 65,534 arquivos por subdiretório para sua implementação FAT32, mas outros sistemas operacionais não têm limite especial para o número de arquivos em um diretório FAT32. As implementações FAT32 em outros sistemas operacionais permitem um número ilimitado de arquivos até o número de clusters disponíveis (ou seja, até 268,304,373 arquivos em volumes sem nomes de arquivos longos).
* Número máximo de arquivos no volume: ca. 2$^{32}$ - 11 (aumentado de 2$^{28}$ - 11 no FAT32 padrão)
* Desempenho de alocação de espaço livre e de exclusão de arquivos melhorado devido à introdução de um mapa de bits de espaço livre.
* Granularidade de rótulos de tempo de 10 ms para tempos de criação e modificação (reduzido de 2 s do FAT, mas não tão finas como 0,1 ms do NTFS).
* Granularidade de rótulo de tempo para o último tempo de acesso para segundos duplos (no FAT era apenas a data)
* Suporte opcional para rótulos de tempo UTC (a partir do Vista SP2).
* Suporte opcional para listas de controle de acesso (atualmente não suportado nas versões do Windows Desktop/Server).
* Suporte opcional para TexFAT, um padrão de sistema de arquivos transacional (função opcionalmente ativada no Windows CE, não suportada nas versões Windows Desktop/Server).
* Provisão para parâmetros definíveis pelo OEM para personalizar o sistema de arquivos para características específicas do dispositivo.
* Armazenamento em disco do comprimento de dados válido do arquivo (VDL) através do uso de dois campos de comprimentos distintos que podem ser usados para pré-alocar um arquivo.
* Tamanho do cluster de até 32 MiB.
* Integridade de metadados com soma de verificação
* Estruturas de metadados baseadas em modelos
* Remoção das entradas de diretórios físicas "." e ".." que aparecem nos subdiretórios
* exFAT não é limitado por nomes de arquivos curtos (formato 8.3)
* No Windows XP, a atualização KB955704 deve ser instalada; e no Windows Vista, o SP2 deve estar instalado.
* O Windows Vista não é capaz de usar dispositivos exFAT para o ReadyBoost. Windows 7 remove essa limitação, habilitando caches ReadyBoost maiores que 4 GiB.
* A implementação padrão do exFAT não tem journaling e usa apenas uma única tabela de alocação de arquivos e um mapa de espaço livre. Os sistemas de arquivos FAT usavam tabelas alternadas, pois isso permitia a recuperação do sistema de arquivos se a mídia fosse ejetada durante uma gravação (o que ocorre com freqüência na prática com mídia removível). O componente opcional TexFAT adiciona suporte para tabelas e mapas de backup adicionais, mas pode não ser suportado.

## Adoção

O exFAT é suportado no Windows XP e no Windows Server 2003 com a atualização KB955704, Windows Embedded CE 6.0, Windows Vista com Service Pack 1, Windows Server 2008, Windows 7, Windows 8, Windows Server 2008 R2 (exceto Windows Server 2008 Server Core), Windows 10, Mac OS X a partir de 10.6.5, Linux a partir da versão 5.4 e iPadOS.
As empresas podem integrar o exFAT em um grupo específico de dispositivos de consumo, incluindo câmeras, filmadoras e molduras digitais para uma taxa fixa . Os telefones celulares, PCs e redes possuem um modelo de preço de volume diferente.
A Microsoft entrou em acordos de licenciamento com BlackBerry, Panasonic, Sanyo, Sony, Canon, Aspen Avionics, Audiovox, Continental, Harman, LG Automotive e BMW.
Uma implementação baseada em FUSE chamada fuse-exfat ou exfat-fuse, com suporte à leitura/gravação está disponível para o FreeBSD e múltiplas distribuições Linux. A implementação no kernel também foi lançada, escrita pela Samsung. Foi inicialmente lançado no GitHub sem intenção, e mais tarde lançado oficialmente pela Samsung em conformidade com a GPLv2 em 2013. (Este lançamento não torna o exFAT isento de royalties, pois o licenciamento da Samsung não remove os direitos de patente da Microsoft.) Uma implementação chamada exFATFileSystem, com base no fuse-exfat, está disponível para o AmigaOS 4.1.
Soluções proprietárias de leitura/gravação licenciadas e derivadas da implementação do Microsoft exFAT criadas pela Paragon Software Group e pela Tuxera estão disponíveis para Android, Linux e outros sistemas operacionais.
XCFiles (criada pela Datalight) é uma implementação proprietária e completa, destinada a ser portável para sistemas de 32 bits. O Rtfs (criada pela EBS Embedded Software) é uma implementação completa para dispositivos incorporados.
Duas soluções experimentais, não oficiais estão disponíveis para o DOS. O driver carregável USBEXFAT requer a pilha USB da Panasonic para o DOS e só funciona com dispositivos de armazenamento USB; O executável de código aberto EXFAT é um leitor de sistema de arquivos exFAT e requer o extensor DOS HX para funcionar. Não existem drivers de DOS em modo real exFAT nativos, o que permitiria o uso ou a inicialização de volumes exFAT.
O Mac OS X Snow Leopard 10.6.5 e posterior podem criar, ler, escrever, verificar e reparar sistemas de arquivos exFAT.
O Linux oferece suporte para exFAT via FUSE desde 2009. Em 2013, a Samsung Electronics publicou um driver Linux para exFAT sob GPL. Em 2019 a Microsoft anunciou que tornaria pública a especificação do exFAT para que a comunidade de desenvolvedores do Linux possa desenvolver implementações interoperáveis. Em 28 de agosto de 2019, a Microsoft publicou a especificação do exFAT e lançou a patente para os membros do OIN. O núcleo Linux introduziu suporte nativo ao exFAT com a versão 5.4.