Os sistemas de arquivos é a parte do SO responsável pelo gerenciamento dos arquivos (estrutura, identificação, acesso, utilização, proteção e implementação). Ou seja, é um conjunto de tipos abstratos de dados que são implementados para o armazenamento, a organização hierarquica, a manipulação, navegação, acesso e recuperação de dados.
Entenda que um arquivo é um recipiente no qual os dados são armazenados, tendo ele um significado para o sistema ou usuário, e estes podem ser programas executáveis, texto, figura, etc. Todos os arquivos possuem um nome o qual o usuário faz referência a ele. Além do nome, cada arquivo possui uma série de outros atributos que são mantidos pelo sistema operacional como tipo de conteúdo, tamanho, data e hora do último acesso, data e hora da última alteração, lista de usuários que podem acessar o arquivo, etc.
A forma como os dados são dispostos dentro de um arquivo determina sua estrutura interna. Cada tipo de arquivo possui uma estrutura interna apropriada para a sua finalidade. Por exemplo, arquivos de texto são organizados em linha ou parágrafos.
Discos Rígidos
Os discos rígidos são compostos por vários discos internos, onde cada um deles é dividido em círculos concêntricos chamados de cilindros ou trilhas, e nestas trilhas temos uma certa quantidade de setores. Cada setor possui, normalmente, 512 bytes de informações. Para descobrir a capacidade total de um HD, basta multiplicar o tamanho do setor pela quantidade total de setores que ele tem.
Vale lembrar que 1 KB é representado por 1024 bytes, e não 1000 bytes como muitos pensam.
FAT16
O significado da palavra FAT é Tabela de Alocação de Arquivos (File Allocation Table) que seria um mapa de utilização do disco. Graças a isto, o SO saberá onde determinado arquivo está.
Normalmente é reconhecido por todos os Sistemas Operacionais, também é utilizado em cartões de memória de estado sólido, e não trabalham com setores, mas sim com unidades de clusters que são conjuntos de setores.
Uma característica marcante é a capacidade de nomear os arquivos somente com 8 caracteres + extensão. Caso seja excedido o valor de caracteres, os caracteres excedidos (do nome do ficheiro) desaparecerão e no lugar deles aparecerá ~1 ou ~2 (se já existir um outro arquivo com os 8 primeiros caracteres iguais).
Existe um inconveniente que quando ficheiros são apagados e novos ficheiros são escritos no suporte, as suas partes tendem a dispersar-se, fragmentando-se por todo o espaço disponível, tornando a leitura e a escrita um processo lento. Para isso, precisamos desfragmentar o disco para um melhor desempenho na sua função de leitura e gravação.
Outro problema é que o FAT16 não reconhece mais que 2GB por ser de 16 bits, utilizando clusters com no máximo 32 KB. Caso haja um disco com mais de 2GB, serão necessário particioná-lo em pedaços máximos de 2GB.
FAT32
Já neste, suporta partições de até 2 TB, tamanho de arquivos de 4 GB e o nome dos arquivos passou de 8 para 256 caracteres e superou o antigo limite de 3 caracteres para a extensão, embora este padrão ainda seja largamente utilizado.
Com o FAT32, o desperdício em disco foi sensivelmente reduzido. O FAT16, seu antecessor, utilizava clusters de até 64 KB enquanto o FAT32 pode utilizar clusters de 4 KB. Se um arquivo ocupa 4 KB de espaço, tanto no FAT16 como no FAT32 a ocupação será de 1 cluster, porém, no caso do FAT16 os 60 KB restantes serão alocados, apesar de ficarem fisicamente vazios.
Tem a desvantagem de ser 6% mais lenta que FAT16 e a incompatibilidade com SO antigos.
Não possui recursos de segurança como o NTFS. Utiliza uma cópia backup da tabela de alocação como sistema de segurança para corrupções de arquivos. Este procedimento é ineficiente, pois uma queda de energia durante uma operação que modifique os metadados pode tornar a partição inacessível ou corromper severamente diversos arquivos.
NTFS
O NTFS (New Technology File System) é um sistema de arquivos que surgiu com o lançamento do Windows NT, e passou a ser bem aceito e utilizado nas outras versões do Windows posteriormente.
Uma dessas vantagens diz respeito ao quesito “recuperação”: em caso de falhas, como o desligamento repentino do computador, o NTFS é capaz de reverter os dados à condição anterior ao incidente. Isso é possível, em parte, porque, durante o processo de boot, o sistema operacional consulta um arquivo de log que registra todas as operações efetuadas e entra em ação ao identificar nele os pontos problemáticos. Ainda neste aspecto, o NTFS também suporta redundância de dados, isto é, replicação, como o que é feito por sistemas RAID, por exemplo.
Algumas características são:
- Neste modelo, temos o tamanho limite do arquivo de acordo com o tamanho do volume;
- Os nomes dos arquivos podem ter 255 caracteres;
- Tem suporte a criptografia, indexação e compactação;
- Seus clusters podem chegar a 512 bytes;
- É mais seguro que o FAT;
- Permite política de segurança e gerenciamento;
- Menos fragmentação;
- Melhor desempenho;
- Recuperação de erros mais fácil;
- Caso seja usado em mídias, podem se corromper mais facilmente;
- É um pouco mais lenta que o FAT32 devido as diretivas de segurança que o FAT32 não tem e precisam ser acessados durante leitura e gravação de dados;
- Utiliza a tabela MFT (Master File Table) para registrar a utilização de cada cluster de um disco;
EXT2
Ext2 foi projetado e implementado para corrigir as deficiências do Ext e prover um sistema que respeitasse a semântica UNIX. A influência do UNIX pode ser vista, por exemplo, na utilização de grupos de blocos, que são análogos aos grupos de cilindros utilizados pelo FFS. O bloco, que consiste num conjunto de setores (cada setor tem 512 bytes), é a menor unidade de alocação para o Ext2. O tamanho pode ser de 1024, 2048 ou 4096 bytes e é definido na formatação.
Quando é realizada uma operação de escrita em um arquivo, o Ext2 tenta, sempre que possível, alocar blocos de dados no mesmo grupo que contém o nó-i. Esse comportamento reduz o movimento da(s) cabeça(s) de leitura-gravação da unidade de disco.
Em um sistema de arquivos ocorrem dois tipos de fragmentação: (i) a fragmentação interna (ou de espaço) é causada pelo fato do tamanho do arquivo geralmente não ser múltiplo do tamanho do bloco (portanto o último bloco terá um espaço não utilizado) — a consequência é a perda de espaço; (ii) a fragmentação externa (ou de arquivo) decorre da impossibilidade do sistema determinar, a priori, qual o tamanho do arquivo (p.ex., arquivos de texto e de logs são muito modificados, e o seu tamanho pode aumentar ou diminuir) — assim um arquivo pode alocar blocos não contíguos, prejudicando o desempenho.
Para diminuir o impacto do primeiro tipo, existem duas estratégias básicas. A primeira, mais simples, é determinar, na formatação, o menor tamanho de bloco possível. O Ext2 permite tamanhos de blocos de 1024, 2048 e 4096 bytes. Um tamanho de bloco pequeno, como 1024 bytes, diminui a fragmentação e perda de espaço, mas em contrapartida gera um impacto negativo no desempenho, pois acarreta o gerenciamento de uma maior quantidade de blocos. O tamanho de bloco padrão para volumes grandes é de 4096 bytes.
A segunda estratégia é alocar a parte final de um arquivo, menor que o tamanho de um bloco, juntamente com pedaços de outros arquivos. O Reiserfs chama esse método de tail packing; o UFS usa fragmentos, que são submúltiplos do tamanho do bloco. Apesar do Ext2 possuir, no superbloco, a previsão para uso de fragmentos, esse método não foi implementado.
Para diminuir o impacto da fragmentação externa, o Ext2 pré-aloca (reserva) até oito blocos quando um arquivo é aberto para gravação. Esses blocos reservados, quando possível, são adjacentes ao último bloco utilizado pelo arquivo. [CARD, TS’O e TWEEDIE, 1994]
EXT3
O Ext3 (Third Extended file system) é um sistema de arquivos desenvolvido por Stephen C. Tweedie para o Linux, que acrescenta alguns recursos ao Ext2, dos quais o mais visível é o journaling, que consiste em um registro (log ou journal) de transações cuja finalidade é recuperar o sistema em caso de desligamento não programado.
Há três níveis de journaling disponíveis na implementação do Ext3:
- Journal: os metadados e os dados (conteúdo) dos arquivos são escritos no journal antes de serem de fato escritos no sistema de arquivos principal. Isso aumenta a confiabilidade do sistema com uma perda de desempenho, devido a necessidade de todos os dados serem escritos no disco duas vezes.
- Writeback: os metadados são escritos no journal mas não o conteúdo dos arquivos. Essa opção permite um melhor desempenho em relação ao modo journal, porém introduz o risco de escrita fora de ordem onde, por exemplo, arquivos que são apensados durante um crash podem ter adicionados a eles trechos de lixo na próxima montagem.
- Ordered: é como o writeback, mas força que a escrita do conteúdo dos arquivos seja feita após a marcação de seus metadados como escritos no journal. Esse é considerado um meio-termo aceitável entre confiabilidade e performance, sendo, portanto, o nível padrão.
Embora o seu desempenho (velocidade) seja menos atrativo que o de outros sistemas de arquivos (como ReiserFS e XFS), ele tem a importante vantagem de permitir que seja feita a atualização direta a partir de um sistema com ext2, sem a necessidade de realizar um backup e restaurar posteriormente os dados, bem como o menor consumo de processamento.
Enquanto em alguns contextos a falta de funções de sistemas de arquivos “modernos”, como alocação dinâmica de inodes e estruturas de dados em árvore, poderia ser considerada uma desvantagem, em termos de “recuperabilidade” isso dá ao ext3 uma significante vantagem sobre sistemas de arquivos que possuem-nas. Os metadados do sistema de arquivos estão todos em locais fixos e bem conhecidos, e há certa redundância inerente à estrutura de dados, que permite que sistemas ext2 e ext3 sejam recuperáveis no caso de uma corrupção de dados significante, em que sistemas de arquivos em árvore não seriam recuperáveis.
Fontes da compilação de textos:
– http://pt.wikipedia.org/wiki/FAT_(sistema_de_ficheiros)
– http://pt.wikipedia.org/wiki/FAT16
– http://pt.wikipedia.org/wiki/FAT32
– http://pt.wikipedia.org/wiki/NTFS
– http://pt.wikipedia.org/wiki/Ext2
– http://pt.wikipedia.org/wiki/Ext3
– HandBook de TI
– http://www.clubedohardware.com.br/artigos/Sistema-de-arquivos/313/1
– http://www.infowester.com/ntfs.php