Conhecendo os sistemas de arquivos


Um sistema de arquivos é um conjunto de estruturas lógicas e de rotinas, que permitem ao sistema operacional controlar o acesso ao disco rígido. Diferentes sistemas operacionais usam diferentes sistemas de arquivos. Conforme cresce a capacidade dos discos e aumenta o volume de arquivos e acessos, esta tarefa torna-se mais e mais complicada, exigindo o uso de sistemas de arquivos cada vez mais complexos e robustos.

Existem diversos sistemas de arquivos diferentes, que vão desde sistemas simples como o FAT16, que utilizamos em cartões de memória, até sistemas como o NTFS, EXT3 e ReiserFS, que incorporam recursos muito mais avançados.
No mundo Windows, temos apenas três sistemas de arquivos: FAT16, FAT32 e NTFS. O FAT16 é o mais antigo, usado desde os tempos do MS-DOS, enquanto o NTFS é o mais complexo e atual. Apesar disso, temos uma variedade muito grande de sistemas de arquivos diferentes no Linux (e outros sistemas Unix), que incluem o EXT2, EXT3, ReiserFS, XFS, JFS e muitos outros. Para quem usa apenas o Windows, estes sistemas podem parecer exóticos, mas eles são velhos conhecidos de quem trabalha com servidores, já que neles o Linux é que é o sistema mais popular.

Sistema de Arquivos Utilizados no Windows:

FAT16
O sistema de arquivos FAT16 foi introduzido com o MS–DOS em 1981, e agora mostra a sua “idade”. Ele foi criado primeiramente para lidar com arquivos em uma unidade de disquete e passou por poucas alterações no decorrer dos anos para que possa também lidar com discos rígidos e até mesmo nomes de arquivos maiores do que o limite de 8,3 caracteres, mais ainda é o menor denominador comum. A maior vantagem do FAT16 é o fato de ele ser compatível com vários sistemas operacionais, incluindo o Windows 95/98/Me, OS/2, Linux e algumas versões do UNIX. O maior problema do FAT16 é o fato de ele ter um número máximo fixo de clusters por partição; sendo assim, conforme os discos rígidos ficam cada vez maiores, o tamanho de cada cluster aumenta também. Em uma partição de 2 GB, cada cluster tem 32 kilobytes, mostrando que mesmo o menor arquivo na partição irá ocupar um espaço de 32 KB. O FAT16 também não suporta compactação, criptografia ou segurança avançada usando as listas de controle de acesso.

FAT32
O sistema de arquivos FAT32, introduzido no Windows 95 Service Release 2, é apenas uma extensão do sistema de arquivos original FAT16 que oferece um número muito maior de clusters por partição. Sendo assim, ele melhora muito a utilização geral do disco quando comparado a um sistema de arquivos FAT16. No entanto, o FAT32 compartilha todas as demais limitações do FAT16, e inclui uma outra limitação importante (muitos sistemas operacionais que reconhecem o FAT16 não irão funcionar com o FAT32), o que é mais nítido no Windows NT, mas também no Linux e UNIX. Não será um problema se você estiver executando um FAT32 em um computador do Windows XP e compartilhar a sua unidade com outros computadores na rede (eles não precisam saber, e geralmente não se importam com isso, qual é o seu sistema de arquivos).

NTFS
NTFS é a sigla para New Technology File System. Desde a época do DOS, a Microsoft vinha utilizando o sistema de arquivos FAT, que foi sofrendo variações ao longo do tempo, de acordo com o lançamento de seus sistemas operacionais. No entanto, o FAT apresenta algumas limitações, principalmente no quesito segurança. Por causa disso, a Microsoft lançou o sistema de arquivos NTFS, usado inicialmente em versões do Windows para servidores.
O NTFS trabalha de uma forma eficiente no gerenciamento do espaço de disco. Isso porque as informações são armazenadas em uma base por setor do disco, em vez de utilizar clusters de múltiplos setores (veja mais sobre isso lendo o artigo sobre FAT). Essa forma de trabalho, traz várias vantagens, como menor necessidade de desfragmentação de disco e maior consistência de dados. Isso porque essa arquitetura de dados por base em setor permite manter os dados próximos, ou seja, não espalhados pelo disco. Até o gerenciamento de grandes quantidades de dados é beneficiado por esta característica, já que como acontecia com o FAT, trabalhar com clusters por setor, fazia do sistema de arquivos dependente de um número pré-determinado de setores.

Sistema de Arquivos Utilizados no Linux/Unix:

EXT2
O EXT2 é um sistema similar ao FAT32 do Windows. Os arquivos são organizados de uma forma simples, com o HD dividido em vários clusters (que no EXT2 chamamos de blocos), onde cada cluster armazena um arquivo ou um fragmento de arquivo. Um índice no início do HD guarda uma tabela com os endereços de cada arquivo no HD.
Muita gente gosta desta simplicidade e por isso continua usando o EXT2 até hoje. O problema é que, assim como o FAT32 do Windows, o EXT2 tem uma grande tendência a perder dados quando o micro é desligado incorretamente (o que em um desktop é muito comum). Nestes casos entra em ação o fsck, que vasculha todos os arquivos da partição, de forma a detectar e corrigir erros, da mesma forma que o scandisk do Windows. Os dois problemas fundamentais com o fsck são que:

1- O teste demora muito.

2- Ele só corrige erros simples. Sempre que um problema mais grave é detectado, o carregamento do sistema é abortado e você cai em um prompt de recuperação (herança da época em que o Linux era feio, estranho e complicado), onde você precisa conhecer e saber usar os comandos necessários para reparar os erros manualmente.

Ou seja, a menos que você tenha um no-break e seu micro nunca seja desligado no botão, não use o EXT2. Ele é um sistema obsoleto, assim com o FAT32 no Windows.

EXT3
O EXT3, uma evolução do EXT2, que inclui um sistema de journaling. O journal (diário) consiste em uma espécie de log, que armazena todas as alterações que são feitas nos arquivos e quando elas foram concluídas. Quando o micro é desligado incorretamente, o fsck consulta este “diário” para corrigir os erros, sem precisar executar o teste completo.
Embora as versões iniciais do EXT3 tivessem muitos problemas, ele evoluiu bastante nos últimos anos e é atualmente um sistema de arquivos bastante seguro, utilizado por padrão na maioria das distribuições. As principais vantagens de usar o EXT3 são o boot mais rápido (em média 10 segundos menos do que ao instalar em uma partição ReiserFS e a grande oferta de programas de manutenção e recuperação de dados).

ReiserFS
O sistema de arquivos ReiserFS teve sua primeira aparição no ano de 2001 pelas mãos de Hans Reiser (daí o nome do padrão), que também montou uma equipe de nome NAMESYS para gerenciar os trabalhos do projeto. Desde então, o ReiserFS vem sendo cada vez mais utilizado, principalmente por estar disponível como padrão em muitas das distribuições Linux, fazendo frente ao sistema de arquivos ext3.
A boa aceitação do ReiserFS é devida ao seu conjunto de características, que o tornam um sistema de arquivos seguro, eficiente, rápido e confiável. Entre seus principais recursos, tem-se:

– Journaling, um recurso que ajuda a manter a integridade dos dados em caso de erros no sistema causados por desligamento incorreto ou determinadas falhas de hardware, por exemplo. O journaling é uma das características mais importantes do ReiserFS, motivo pelo qual é explicado com mais detalhes adiante;

– Suporte a arquivos com mais de 2 GB (limitação existente em alguns filesystems);

– Organização dos objetos do sistema de arquivos em uma estrutura de dados chamada B+Trees (árvores B+). Nesse esquema, os dados são fixados em posições organizadas por divisões denominadas folhas. Por sua vez, as folhas são organizadas por nós ou ponteiros chamados de sub-árvores, que estão ligados a um nó raiz (ver ilustração abaixo para entender melhor). Esse processo organizacional exige algoritmos mais complexos, porém apresenta performance superior na gravação e no acesso aos dados, se comparado a outros sistemas de arquivos;

– Alocação dinâmica de inodes (em poucas palavras, inodes são estruturas que contém informações sobre os arquivos), diminuindo o desperdício de espaço. Outros sistemas de arquivos têm blocos de tamanho fixo para alocação, assim, se não for necessário usar um bloco inteiro, o espaço restante fica em desuso. No ReiserFS, a alocação é feita com base no tamanho do arquivo.

JFS (Journaling File System)
Criado pela IBM para uso em servidores corporativos, teve seu código liberado. O sistema de arquivos JFS também usa a estrutura I-node para armazenar a localização dos blocos de cada arquivo nas estruturas físicas do disco, a versão JFS2 armazena esses I-nodes em uma árvore binária para acelerar o acesso a essas informações, esses blocos podem variar de 512 a 4096 bytes, a alocação dos I-nodes é feita conforme vai sendo necessário.

XFS
O sistema de arquivos XFS também possui suporte a journaling.
Foi desenvolvido originalmente pela Silicon Graphics e posteriormente disponibilizado o código fonte. O XFS é considerado um dos melhores sistemas de arquivos para banco de dados, pois é muito rápido na gravação.
XFS utiliza muitos recursos de cache com memória RAM, e para utilizar XFS é recomendado utilizar sistemas que possuem redundância de energia.

VFAT
O sistema de arquivos VFAT é também conhecido como FAT32 ( Windows ).
O sistema de arquivos VFAT não possui suporte a journaling.
E é utilizado normalmente para transferir dados entre sistemas Windows e o Linux instalados no mesmo disco, pois pode ser lido e escrito por ambos os sistemas operacionais.
O sistema de arquivos VFAT está longe de ser um sistema de arquivos utilizado para Sistemas Linux, exeto para compartinhamento/compatibilidade entre o Windows e Linux.
Se você utilizar VFAT no Linux, esteja certo de perder alguns atributos, tal como: Permissão de execução, links simbólicos entre outras coisas.

Journaling
O fsck consegue prover resultados satisfatórios, mas a correção de erros pode levar muito tempo, algo inaceitável em aplicações críticas. Além disso, se o desligamento incorreto do computador ocorreu quando dados estavam sendo gravados no disco, o fsck não conseguirá completar esses processos, ocasionando a perda das informações que estavam sendo gravadas.
Diante desses problemas, foi apresentada uma solução viável: a utilização de sistemas de arquivos com a tecnologia “Journaling”, que possuem a capacidade de acompanhar as mudanças que serão feitas no sistema de arquivos (por exemplo, gravações/atualizações de dados) antes que realmente sejam feitas. Essas informações que o Journaling captura são então armazenadas em uma parte separada do sistema de arquivos, denominada “Journal” (mas também conhecida por “registros de log”). Quando as informações são armazenadas no Journal, o sistema de arquivos aplica as mudanças registradas nele e então, remove as informações do Journal.
Agora, entenda o porquê do Journaling ser uma solução eficiente para os problemas de erro. Os registros de log são escritos antes que as mudanças efetivamente ocorram no sistema de arquivos e esses registros somente são eliminados quando as mudanças são feitas. Assim, se o computador é indevidamente desligado, o processo de montagem no próximo startup verificará se há mudanças gravadas no Journal “marcadas” como não feitas. Se houver, tais mudanças são então aplicadas ao sistema de arquivos. Isso faz com que os riscos de perda de dados sejam reduzidos drasticamente.

Tipos de Journaling no ext3
O ext3 suporta três diferentes modos de trabalho do Journaling. São eles:

Journal: grava todas as mudanças em sistema de arquivos. É o mais lento dos três modos, mas é o que possui maior capacidade de evitar perda de dados;

Ordered: grava somente mudanças em arquivos metadata (arquivos que guardam informações sobre outros arquivos), mas guarda as atualizações no arquivo de dados antes de fazer as mudanças associadas ao sistema de arquivos. Este Journaling é o padrão nos sistemas de arquivos ext3;

Writeback: também só grava mudanças para o sistema de arquivo em metadata, mas utiliza o processo de escrita do sistema de arquivos em uso para gravação. É o mais rápido Journaling ext3, mas o menos confiável.

O modo Ordered é o padrão no ext3, mas é possível especificar qual o modo que você deseja usar, através da atualização do arquivo fstab. Por exemplo, pode ser que a linha /dev/hda1/opt tenha sua opção data com o valor ordered. Você pode mudar este valor para writeback ou journal.

Aqui foi um breve resumo de sistemas de arquivos, agora é pesquisar sobre o sistema que mais te agrada e partir para o abraço. Para obter mais detalhes acesse os links fontes.

Abraços e até a próxima.

Fontes:
http://www.infowester.com/linext3.php
http://www.guiadohardware.net/termos/sistema-de-arquivos
http://www.gdhpress.com.br/kurumin7/leia/index.php?p=cap2-12
http://www.infowester.com/reiserfs.php
http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=1293&pagina=2
http://robertors.blogspot.com/2006/09/linux-sistema-de-arquivos.html
http://www.microsoft.com/brasil/windowsxp/using/setup/expert/russel_october01.mspx

[ad]

Últimos 5 artigos de Bruno Neves

Sobre Bruno Neves

De Campinas-SP, bacharel em Sistemas de Informação e pós graduando em Redes e Telecomunicações. Trabalha atualmente como Especialista Unix na IBM em Hortolândia-SP. Teve contato com Linux pela primeira vez em Novembro de 2004 através de um curso de Extensão que a Faculdade oferecia. Se tornou membro da comunidade Viva o Linux e desde então foi aprendendo e conhecendo este sistema operacional flexível, robusto e estável. Atualmente tem conhecimento nos Sistemas Operacionais Solaris 9 e 10, AIX 5.3 e 6.1, HP-UX, Red-Hat Enterprise 4 e 5. Utiliza a distribuição Slackware 11, mas sua jornada começou com Red-hat 9, Fedora Core 1, 2, 3, Slackware 10.1, 10.2 e 11.

Deixe uma resposta