FAT16 e FAT32

O sistema FAT16 é uma espécie de “pau pra toda obra”, já que é compatível com praticamente todos os sistemas operacionais e também dispositivos como câmeras, palmtops, celulares e mp3players. Ele é o sistema de arquivos usado por padrão nos cartões SD e também nos pendrives de até 2 GB. Só recentemente os cartões passaram a utilizar FAT32, com a introdução do padrão SDHC.

No sistema FAT, o HD é dividido em clusters, que são a menor parcela do HD vista pelo sistema operacional. Cada cluster possui um endereço único, que permite ao sistema localizar os arquivos armazenados. Um grande arquivo pode ser dividido em vários clusters, mas não é possível que dois arquivos pequenos sejam gravados dentro do mesmo cluster. Cada cluster pode ser composto por de 1 a 64 setores (ou seja, de 512 bytes a 32 KB), de acordo com o tamanho da partição.

A principal limitação é que, como o nome sugere, o FAT16 usa endereços de 16 bits para endereçar os clusters dentro da partição, permitindo um máximo de 65536 clusters, que não podem ser maiores que 32 KB. Isso resulta num limite de 2 GB para as partições criadas.

No caso de HDs (e também pendrives ou cartões) maiores que 2 GB, é possível criar várias partições de 2 GB cada uma, até utilizar todo o espaço disponível. Esta pode ser uma solução no caso de dispositivos com 4 ou 5 GB, por exemplo, mas, naturalmente, não é uma opção realística no caso de um HD de 60 GB, por exemplo, onde seria necessário criar 30 partições!

Numa partição de 2 GB, cada cluster possui 32 KB, o que acaba resultando num grande desperdício de espaço ao gravar uma grande quantidade de arquivos pequenos. Imagine que gravássemos 10.000 arquivos de texto, cada um com apenas 300 bytes. Como um cluster não pode conter mais do que um arquivo, cada arquivo iria ocupar um cluster inteiro, ou seja, 32 kbytes. No total, os 10.000 arquivos ocupariam um total de 10.000 clusters, ou seja, um total de 320 MB!

O tamanho dos clusters em partições FAT16 varia de acordo com o tamanho da partição. Quanto maior o tamanho da partição, maior o tamanho dos clusters:

Tamanho da Partição

Tamanho dos Clusters usando FAT16

Entre 1 e 2 GB

32 KB

Menor que 1 GB

16 KB

Menor que 512 Mb

8 KB

Menor que 256 Mb

4 KB

Como em toda regra, existe uma exceção. O Windows NT permitia criar partições FAT de até 4 GB usando clusters de 64 KB, mas este foi um recurso pouco usado, devido ao desperdício de espaço.

A versão original do Windows 95 suportava apenas o FAT16, obrigando quem possuía HDs maiores que 2 GB a dividi-los em duas ou mais partições e lidar com o desperdício de espaço causado pelos clusters de 32 KB. A solução foi a criação do sistema FAT32, que foi incorporado no Windows 95 OSR/2 e continuou sendo usado nas versões seguintes.

A principal evolução foi o uso de endereços de 32 bits para o endereçamento dos clusters, o que possibilita a criação de partições muito maiores, de até 2 terabytes. Isso foi possível por que o Windows 95 era um sistema de 32 bits, ao contrário do MS-DOS e do Windows 3.1, que eram sistemas de 16 bits.

A princípio, o uso de endereços de 32 bits permitiu o uso de clusters de 4 KB mesmo em partições muito grandes mas, por questões de desempenho, ficou estabelecido que por default os clusters de 4 KB seriam usados apenas em partições de até 8 GB. Acima disto, o tamanho dos clusters varia de acordo com o tamanho da partição:

Tamanho da partição

Tamanho do cluster

Menor do que 8 GB

4 KB

De 8 GB a 16 GB

8 KB

De 16 GB a 32 GB

16 KB

Maior do que 32 GB

32 KB

Usando clusters de 4 KB, os 10.000 arquivos do exemplo anterior ocupariam apenas 40 MB, uma economia considerável. De fato, ao converter uma partição FAT16 para FAT32 é normal conseguir de 10 a 20% de redução no espaço ocupado, devido à redução do espaço desperdiçado.

A grande limitação do sistema FAT32 está relacionada ao tamanho máximo dos arquivos. Mesmo usando uma grande partição, não é possível armazenar arquivos com mais de 4 GB, o que é um grande problema para quem trabalha com arquivos grandes, como vídeos em formato RAW (sem compressão). Não é possível sequer armazenar um ISO de DVD, já que a cópia ou transferência será sempre abortada depois de transferidos os primeiros 4 GB.

Não existe qualquer sinal de que futuras versões do sistema de arquivos derrubarão esta limitação, já que a Microsoft vem recomendando o uso do NTFS desde a primeira versão do Windows XP, de forma que a melhor opção, para quem usa Windows, é seguir a recomendação e migrar para ele.

Outra limitação é que o particionador usado durante a instalação do Windows XP se recusa a formatar partições FAT32 maiores do que 32 GB. Este é um limite do software e não do sistema de arquivos em si. A solução para criar partições FAT maiores é utilizar o PartitionMagic, Gparted ou outro particionador para criar a partição e em seguida apenas instalar o sistema na partição criada.

Uma curiosidade é que, antes do FAT16, existiu o FAT12, um sistema ainda mais primitivo, utilizado em disquetes e também nas primeiras versões do MS-DOS. Nele, são usados endereços de apenas 12 bits para endereçar os clusters, permitindo um total de 4096 clusters de até 4 KB, o que permitia partições de até 16 MB.

Em 1981, quando o IBM PC foi lançado, 16 MB parecia ser uma capacidade satisfatória, já que naquela época os discos rígidos tinham apenas 5 ou 10 MB. Claro que, em se tratando de informática, por maior que seja um limite, ele jamais será suficiente por muito tempo. Um excelente exemplo é a célebre frase “Por que alguém iria precisar de mais de 640 KB de memória RAM?” dita por Bill Gates em uma entrevista, no início da década de 80. Logo começaram a ser usados discos de 40, 80 ou 120 MB, obrigando a Microsoft a criar a FAT 16, e incluí-la na versão 4.0 do MS-DOS.

Apesar de obsoleto, o FAT12 ainda continua vivo até os dias de hoje, fazendo compania para outro fantasma da informática: os disquetes. Por ser mais simples, o FAT12 é o sistema padrão para a formatação dos disquetes de 1.44″, onde são usados clusters de apenas 512 bytes.

Estruturas Lógicas: Todos os vários sistemas de arquivos são constituídos de um conjunto de estruturas lógicas, que permitem ao sistema operacional organizar os dados gravados e acessá-los com a maior velocidade e confiabilidade possíveis.

Tudo começa com o setor de boot, que é lido pelo BIOS da placa-mãe no início do boot, logo após a contagem de memória e outros procedimentos executados durante o POST.

O setor de boot, também chamado de MBR ou trilha zero, contém dois componentes essenciais. O primeiro é um bootstrap, o software responsável por iniciar o carregamento do sistema operacional. Tipicamente, é utilizado um gerenciador de boot, como o NTLDR (usado pelo Windows XP) ou o Grub (usado pela maior parte das distribuições Linux). A função do gerenciador de boot é mostrar uma lista com os sistemas operacionais instalados no início do boot e carregar o sistema escolhido.

O bootstrap ocupa os primeiros 446 bytes do MBR. Os 66 bytes restantes são usados para armazenar a tabela de partições, que guarda informações sobre onde cada partição começa e termina. Alguns vírus, além de acidentes em geral, podem danificar os dados armazenados na tabela de partição, fazendo com que pareça que o HD foi formatado. Mas, na maioria dos casos, os dados continuam lá, intactos, e podem ser recuperados.

Depois que o disco rígido foi formatado e dividido em clusters, mais alguns setores são reservados para guardar a FAT (“file allocation table” ou “tabela de alocação de arquivos”). A função da FAT é servir como um índice, armazenando informações sobre cada cluster do disco. Através da FAT, o sistema sabe se uma determinada área do disco está ocupada ou livre e pode localizar qualquer arquivo armazenado.

Cada vez que um novo arquivo é gravado ou apagado, o sistema operacional altera a FAT, mantendo-a sempre atualizada. A FAT é tão importante que, além da tabela principal, é armazenada também uma cópia de segurança, que é usada sempre que a tabela principal é danificada de alguma maneira.

Todos os demais sistemas de arquivos utilizam algum tipo de índice, similar à FAT. Quando o HD é reformatado, este índice é apagado e substituído por uma tabela em branco. Apesar disso, os arquivos continuam gravados nas mesmas posições, embora inacessíveis. Enquanto eles não forem realmente sobrescritos por outros, é possível recuperá-los usando um programa de recuperação de dados, como veremos em detalhes mais adiante.

Em seguida, temos o diretório raiz. Se fôssemos comparar um disco rígido, formatado em FAT16 ou FAT32, com um livro, as páginas seriam os clusters, a FAT serviria como as legendas e numeração das páginas, enquanto o diretório raiz seria o índice, com o nome de cada capítulo e a página onde ele começa.

O diretório raiz ocupa mais alguns setores no disco, logo após os setores ocupados pela FAT. Cada arquivo ou diretório do disco rígido possui uma entrada no diretório raiz, com o nome do arquivo, a extensão, a data de quando foi criado ou quando foi feita a última modificação, o tamanho em bytes e o número do cluster onde o arquivo começa.

Um arquivo pequeno pode ser armazenado em um único cluster, enquanto um arquivo grande é “quebrado” e armazenado ocupando vários clusters. Nesse caso, haverá no final de cada cluster uma marcação, indicando o próximo cluster ocupado pelo arquivo. No último cluster ocupado, temos um código que marca o fim do arquivo.

No último cluster ocupado, temos um código que marca o fim do arquivo.

Quando um arquivo é deletado, simplesmente é removida sua entrada no diretório raiz, fazendo com que os clusters ocupados por ele pareçam vagos para o sistema operacional. Ao gravar um novo arquivo no disco, o sistema simplesmente procura o primeiro setor livre, continuando a gravá-lo nos setores livres seguintes, mesmo que estejam muito distantes uns dos outros. Surge então o problema da fragmentação, que reduz consideravelmente a velocidade de acesso, já que dados espalhados significam mais movimentos da cabeça de leitura.

Ao contrário de outros sistemas de arquivos mais modernos, o sistema FAT (tanto o FAT16 quanto o FAT32) não possui nenhum mecanismo que impeça (ou pelo menos diminua) a fragmentação, daí a necessidade de rodar o defrag ou outro programa desfragmentador periodicamente. A função deles é mover os arquivos, de forma que eles fiquem gravados em clusters sequenciais.

Desfragmentação do HD (no Windows), usando o Diskeeper

Desfragmentação do HD (no Windows), usando o Diskeeper

Uma curiosidade é que a fragmentação é um problema apenas nos HDs, já que eles trabalham com tempos de acesso muito altos. Nos cartões de memória, o tempo de acesso é comparativamente muito baixo, de forma que a fragmentação possui um impacto muito pequeno sobre a performance.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X