Sistemas de arquivos são as estruturas utilizadas para a leitura e gravação de arquivos e diretórios pelo sistema operacional. Um disco rígido, disquete ou qualquer outro dispositivo de armazenamento de dados não pode ser utilizado se não estiver fazendo uso de um sistema de arquivos.
Existem inúmeros
sistemas de arquivos, cada um com suas características particulares que lhe conferem desempenho e capacidades diferentes, mas todos eles têm em comum o objetivo básico de fornecer a estrutura necessária para o sistema operacional ler e gravar os arquivos e diretórios.
Journaling
O
journaling consiste em reservar um espaço no início do disco para gravar informações sobre as operações que serão realizadas, antes delas serem realmente feitas. Assim, se alguma falha ocorrer durante a operação, seja gravação, movimentação ou exclusão, basta o sistema ler o setor de journaling para facilmente poder desfazer as operações, retornando os arquivos para seu estado anterior, ou então completar as operações interrompidas.
O espaço onde ficam gravadas as informações de operações chama-se journal, daí o nome journaling. Graças ao journal, a verificação de sistemas de arquivos com suporte a journaling é realizada muito rapidamente, pois basta verificar se existe alguma operação pendente registrada no journal. Dependendo do sistema de arquivos utilizado, essa verificação pode durar de 1 a 2 segundos somente, podendo ser executada toda vez que se carrega o sistema operacional, garantindo uma grande segurança quanto à integridade dos dados.
Como no journaling é necessário gravar as informações no journal antes de realizar as operações de fato, o processo de gravação pode se tornar mais lento, sobretudo nos casos de várias operações consecutivas com arquivos pequenos. Entretanto, a velocidade nas operações com dados está mais relacionada a outros aspectos do sistema de arquivos do que com a presença ou não do journaling, de forma que facilmente encontramos sistemas de arquivos como o ReiserFS, com journaling, que possuem um desempenho muito maior que grande parte dos sistemas sem journaling, como o FAT32 e o EXT2.
Tipos de sistemas de arquivos
Os sistemas de arquivos sem journaling são muito inseguros, mas costumam ser mais rápidos, devido ao número menor de informações que são armazenadas sobre os arquivos.
A principal vulnerabilidade dos sistemas de arquivos sem journaling é quanto ao desligamento repentino do computador. Se um computador que utiliza um sistema de arquivos desse tipo estiver ligado e for desligado diretamente através do botão ou devido a falha elétrica, certamente haverá perda de dados, possivelmente até o comprometimento total do sistema de arquivos, tornando os dados gravados no HD inacessíveis. Além disso, em caso de falhas, a verificação de erros em sistemas de arquivos sem journaling é lenta, pois requer a análise de todos os dados do HD.
Sistemas de arquivos com journaling, por sua vez, são muito seguros e confiáveis, muito tolerantes à queda de energia, e a verificação de erros é muito mais rápida. Entretanto, podem ser muito mais lentos que os sistemas de arquivos sem journaling, mas isso é bastante relativo.
- EXT2: o EXT2 é um sistema de arquivos muito rápido pelo fato de não possuir um journal, sendo assim os dados são gravados diretamente. Quando ocorre alguma falha que provoque o desligamento incorreto do sistema, o utilitário fsck é acionado para a verificação do sistema, sendo às vezes um processo lento e nem sempre com bons resultados, ocasionado quase sempre perda de dados.
- FAT32: o FAT32 é o sistema de arquivos padrão do Windows, utilizado nas versões 95, 98 e Me, e disponível também para as versões 2000 e XP. É um sistema de arquivos simples, um pouco lento e bastante vulnerável a falhas, motivos pelos quais ele não pôde ser usado nos sistemas operacionais de rede da Microsoft, como as versões NT, 2000 Server e 2003 Server do Windows.
- EXT3: o sistema de aquivos EXT3 foi desenvolvido pelo doutor Stephen Tweedie e colaboradores na Red Hat. Pode-se dizer que ele é um EXT2 com journaling e passou a ser suportado na versão 2.4 do kernel Linux. No EXT3, o journal usa uma camada chamada JDB (Journaling Block Device), que utiliza um método diferente na recuperação de dados: ao invés de armazenar bytes que devem ser gravados, ele armazena blocos modificados do sistema de arquivos na memória para poder rastrear as operações que ficaram pendentes. A vantagem é que ele não precisa lidar com a complexidade de gravar bytes no journal e a desvantagem é que o journal acaba ficando maior. Em compensação ao considerável aumento na segurança dos dados, o desempenho nas operações em sistemas de arquivos EXT3 é muito inferior à dos sistemas EXT2.
- ReiserFS: o ReiserFS é um sistema desenvolvido especialmente para o Linux, muito confiável e surpreendentemente rápido, em muitos casos mais rápido até mesmo que sistemas sem journaling. O ReiserFS, por não utilizar blocos de tamanho fixo, mas ajustar seu tamanho de acordo com o arquivo, evita os problemas de desperdício de espaço comuns em outros sistemas de arquivos. Possui suporte a arquivos maiores que 2 GB e o acesso a árvore de diretórios é muito mais rápido. Utiliza uma eficiente estrutura de dados chamada balanced tree (árvore equilibrada), que trata toda a partição como se fosse uma única tabela de banco de dados contendo diretórios, arquivos e arquivos de meta-data, o que aumenta muito o desempenho de aplicativos que trabalham com arquivos pequenos, porque estes são lidos de uma só vez, em apenas um ciclo de I/O do HD.
Sua versão 3 não trabalha perfeitamente com o sistema de arquivos de rede NFS (Network File System). Existem alguns patches para resolver o problema, mas eles não o resolvem completamente.
O criador do ReiserFS é Hans Reiser. Atualmente o projeto é patrocinado pela SuSE e mantido pela empresa NameSys. Aguarda-se o lançamento oficial da versão 4 do ReiserFS, o Reiser4, que foi totalmente reescrito e possui um desempenho superior à da versão 3.
- JFS: Sigla de Journaling File System, foi criado pela IBM para uso em servidores corporativos, e teve seu código-fonte 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, e a alocação dos I-nodes é feita conforme vai sendo necessário.
- XFS: desenvolvido originalmente pela Silicon Graphics e posteriormente disponibilizado o código-fonte, o XFS possui vários patches e alguns bugs, mas é um sistema de arquivos muito rápido na gravação e possui um desfragmentador para arquivos.
- NTFS: sigla de New Technology File System, foi desenvolvido pela Microsoft para ser utilizado nas versões de rede do Windows, inicialmente o NT, e posteriormente o 2000 Server e o 2003 Server. Baseado no HPFS (High Performance File System), da IBM, o NTFS possui suporte a gravação de permissões de acesso, Reparse Points, que permite associar ações a arquivos e pastas, quotas de discos, entre outros recursos.
Por ser um sistema proprietário, da Microsoft, não foi possível desenvolver para o GNU/Linux um suporte nativo a sistemas de arquivos NTFS. É possível ler, mas não há suporte eficiente à gravação nesse sistema de arquivos. Em alguns casos, pode-se usar o Captive, um programa disponibilizado sob a licença GNU GPL que se utiliza de arquivos de sistema do Windows para permitir a gravação em sistemas de arquivos NTFS, e por isso requer que o Windows esteja instalado no computador. O desempenho do Captive é pobre, a gravação de arquivos é muito lenta, atingindo míseros 2 MB por segundo. Outra alternativa, porém paga, é o Paragon NTFS, que funciona muito bem e possui um desempenho muito superior ao do Captive.
Qual sistema de arquivos utilizar
Falar qual sistema de arquivos você deve usar é uma missão quase impossível, é como falar de distribuições GNU/Linux: alguém que adora o Slackware com certeza só vai recomendar o Slackware, e alguém que adora o Debian com certeza só vai recomendar o Debian, e assim por diante.
Em se tratando de sistemas de arquivos, a recomendação é que você escolha, entre os que possuem os recursos que você precisa, aquele que apresentar o melhor desempenho.
Nesse caso, a menos que você vá utilizar NFS, o sistema de arquivos mais indicado é o ReiserFS, que possui comprovadamente um desempenho muito superior ao de outros sistemas de arquivos. Se for utilizar NFS, uma vez que existe o problema de compatibilidade do ReiserFS, pode-se utilizar o XFS, ou o EXT3. Entretanto, se você realmente não precisa das vantagens do journaling, o EXT2 pode ser a melhor alternativa para você.