13.2. Principais sistemas de arquivos no Linux

Diferentemente do que ocorria há dois ou três anos, escolher um sistema de arquivos para um sistema Linux não é mais uma questão de segundos (Ext2 ou ReiserFS?). Kernels a partir do 2.4 oferecem uma variedade de opções de sistemas de arquivos. A seguir será mostrada uma visão geral de como esses sistemas de arquivos basicamente funcionam e quais as vantagens que oferecem.

É muito importante lembrar que pode não haver um sistema de arquivos adequado a todos os tipos de aplicativos. Cada sistema de arquivos tem seus pontos fortes e fracos específicos, o que deve ser considerado. No entanto, nem mesmo o sistema de arquivos mais sofisticado pode ser substituído por uma estratégia de backup razoável.

Os termos integridade de dados e consistência de dados, quando usados neste capítulo, não se referirão à consistência dos dados do espaço do usuário (os dados que seu aplicativo grava nos arquivos). O próprio aplicativo deve controlar se os dados são consistentes ou não.

[Important]Configurando sistemas de arquivos

A menos que declarado em outra seção deste capítulo, todas as etapas necessárias para configurar ou mudar partições e sistemas de arquivos podem ser realizadas com o YaST.

13.2.1. ReiserFS

Oficialmente um dos recursos mais importantes da versão 2.4 do kernel, o ReiserFS tornou-se disponível como um patch para kernels SUSE 2.2 x desde a versão 6.4 do SUSE Linux. O ReiserFS foi criado por Hans Reiser e pela equipe de desenvolvimento da Namesys. Ele provou ser uma alternativa robusta ao Ext2. Seus bens mais importantes são a melhor utilização do espaço em disco, o melhor desempenho do acesso ao disco e uma recuperação de falhas mais rápida.

Os pontos fortes do ReiserFS, em mais detalhes, são:

Melhor utilização do espaço em disco

No ReiserFS, todos os dados são organizados em uma estrutura chamada árvore equilibrada (B*- tree). A estrutura de árvore contribui para uma melhor utilização do espaço em disco, pois arquivos pequenos podem ser armazenados diretamente nos nós da folha da árvore equilibrada B*, em vez de serem armazenados em outro local e simplesmente manterem um indicador no local do disco. Além disso, o armazenamento não é alocado em pacotes de 1 ou 4 kB, mas em porções do tamanho exato necessário. Uma outra vantagem está na alocação dinâmica de inodes. Ela mantém o sistema de arquivos mais flexível do que os sistemas de arquivos tradicionais, como Ext2, em que a densidade do inode deve ser especificada no momento da criação do sistema de arquivos.

Melhor desempenho do acesso ao disco

Para arquivos pequenos, os respectivos dados e as informações (inode) “stat_data” são sempre armazenados lado a lado. Eles podem ser lidos com uma simples operação E/S de disco, o que quer dizer que é necessário somente um acesso ao disco para recuperar todas as informações necessárias.

Rápida recuperação de falhas

A utilização de um diário para controlar as mudanças de metadados recentes faz com que a verificação de um sistema de arquivos leve segundos, mesmo no caso dos muito grandes.

Confiabilidade por meio do registro dos dados em diário

O ReiserFS também suporta o registro de dados em diário e modos de dados ordenados similares aos conceitos realçados na seção Ext3, Seção 13.2.3, “Ext3”. O modo padrão é data=ordered, que garante a integridade dos dados e dos metadados, mas usa o registro de dados em diário somente para metadados.

13.2.2. Ext2

A origem do Ext2 remonta ao início da história do Linux. Seu predecessor, o Extended File System, foi implementado em abril de 1992 e integrado ao Linux 0.96c. O Extended File System passou por uma série de modificações e, como o Ext2, tornou-se o sistema de arquivos Linux mais popular por muitos anos. Com a criação dos sistemas de arquivos com registro em diário e seus surpreendentes e curtos tempos de recuperação, o Ext2 ficou menos importante.

Um breve resumo dos pontos fortes do Ext2 podem ajudar a mostrar por que ele foi, e ainda é em algumas áreas, o sistema de arquivos Linux favorito de muitos usuários.

Solidez

Por ser um “veterano,” o Ext2 passou por várias melhorias e foi bastante testado. Esta pode ser a razão para as pessoas sempre se referirem a ele como "sólido como uma pedra". Depois de uma falha no sistema em que o sistema de arquivos não pode ser desmontado inteiramente, o e2fsck começa a analisar os dados do sistema de arquivos. Os metadados são levados a um estado consistente e os arquivos pendentes ou blocos de dados são gravados em um diretório designado (chamado lost+found). Em contraste com os sistemas de arquivos de registro em diário, o e2fsck analisa todo o sistema de arquivos e não somente os bits de metadados modificados recentemente. Esse procedimento demora muito mais do que a verificação dos dados de registro de um sistema de arquivos com registro em diário. Dependendo do tamanho do sistema de arquivos, ele pode levar meia hora ou mais. Portanto, não é desejável optar pelo Ext2 em servidores que precisem de grande disponibilidade. No entanto, como o Ext2 não mantém um diário e usa muito menos memória, algumas vezes ele é mais rápido do que outros sistemas de arquivos.

Fácil capacidade de upgrade

O código do Ext2 é a base sólida sobre a qual o Ext3 poderia se tornar um sistema de arquivos de última geração amplamente aclamado. Sua confiabilidade e solidez foram combinadas de forma elegante com as vantagens de um sistema de arquivos de registro em diário.

13.2.3. Ext3

O Ext3 foi criado por Stephen Tweedie. Diferentemente de todos os sistemas de arquivos de última geração, o Ext3 não segue totalmente um princípio de design novo. Ele é baseado no Ext2. Esses dois sistemas de arquivos têm uma relação muito próxima. Um sistema de arquivos Ext3 pode ser facilmente criado sobre um sistema de arquivos Ext2. A diferença mais importante entre o Ext2 e o Ext3 é que o Ext3 suporta o registro em diário. Em resumo, o Ext3 tem três grandes vantagens a oferecer:

Upgrades do Ext2 fáceis e altamente confiáveis.

Como o Ext3 é baseado no código do Ext2 e compartilha seu formato em disco, bem como seu formato de metadados, as atualizações do Ext2 para o Ext3 são incrivelmente fáceis. Ao contrário de transições para outros sistemas de arquivos de registro em diário, como o ReiserFS ou XFS, que podem ser bastante tediosas (fazer backup de todo o sistema e recriá-lo de um rascunho), a transição para o Ext3 é uma questão de minutos. Ela também é muito segura, pois a recriação de um sistema de arquivos inteiro de um rascunho pode não ser perfeita. Considerando o número de sistemas Ext2 existentes que aguardam um upgrade para um sistema de arquivos de registro em diário, você pode imaginar facilmente por que o Ext3 pode ter alguma importância para vários administradores de sistema. O downgrade do Ext3 para o Ext2 é tão fácil quanto o upgrade. Simplesmente execute uma desmontagem completa do sistema de arquivos Ext3 e remonte-o como um sistema de arquivos Ext2.

Confiabilidade e desempenho

Alguns outros sistemas de arquivos de registro em diário seguem a abordagem de registro em diário de “Apenas Metadados”. Isso significa que seus metadados são sempre mantidos em um estado consistente, mas o mesmo não pode ser garantido automaticamente para os próprios dados do sistema de arquivos. O Ext 3 foi criado para cuidar dos dados e dos metadados. O grau de “cuidado” pode ser personalizado. Habilitar o Ext3 no modo data=journal oferece segurança máxima (integridade de dados), mas também deixa o sistema mais lento, pois os dados e os metadados são registrados em diário. Uma abordagem relativamente nova é usar o modo data=ordered, que garante a integridade dos dados e metadados, mas usa o registro em diário apenas para metadados. O driver do sistema de arquivos coleta todos os blocos de dados que correspondem a uma atualização de metadados. Esses blocos de dados são gravados em disco antes da atualização dos metadados. Como resultado, obtém-se consistência para dados e metadados sem sacrificar o desempenho. Uma terceira opção é usar o data=writeback, para que os dados sejam gravados no mesmo sistema de arquivos depois que seus metadados forem confirmados no diário. Essa opção é sempre considerada a melhor em desempenho. Contudo, ela pode permitir que dados antigos surjam novamente nos arquivos depois de uma falha e recuperação, enquanto a integridade do sistema do arquivo é mantida. A menos que você especifique de forma diferente, o Ext3 será executado no modo data=ordered por padrão.

13.2.4. Convertendo um sistema de arquivos Ext2 em Ext3

Para converter um sistema de arquivos Ext2 em Ext3, proceda da seguinte maneira:

  1. Crie um diário Ext3 executando tune2fs -j como root. Esse procedimento criará um diário do Ext3 com os parâmetros padrão.

    Para que você decida o tamanho do diário e em que dispositivo ele deverá residir, execute tune2fs -J, juntamente com as opções de diário desejadas size= e device=. Mais informações sobre o programa tune2fs estão disponíveis em sua respectiva página de manual tune2fs.

  2. Para garantir que o sistema de arquivos Ext3 seja reconhecido como tal, edite o arquivo /etc/fstab como root, mudando o tipo de sistema de arquivos especificado pela partição correspondente de ext2 para ext3. A mudança terá efeito na próxima reinicialização.

  3. Para inicializar uma configuração de sistema de arquivos raiz como uma partição Ext3, inclua os módulos ext3 e jbd no initrd. Para fazer isso, edite /etc/sysconfig/kernel como root, adicionando ext3 e jbd à variável INITRD_MODULES. Após salvar as mudanças, execute o comando mkinitrd. Isso cria um novo initrd e o prepara para uso.

13.2.5. Reiser4

Logo depois que o kernel 2.6 foi lançado, a família de sistemas de arquivos com registro em diário recebeu outro membro: o Reiser4. O Reiser4 é fundamentalmente diferente de seu predecessor, o ReiserFS (versão 3.6). Ele apresenta o conceito de plug-ins para ajustar a funcionalidade do sistema de arquivos e um conceito de segurança mais refinado.

Conceito de segurança refinado

Na criação do Reiser4, seus desenvolvedores enfatizaram a implementação de recursos relevantes de segurança. Portanto, o Reiser4 contém um conjunto de plug-ins de segurança dedicados. O mais importante deles apresenta o conceito de “itens” de arquivo. Atualmente, os controles de acesso a arquivos são definidos por arquivo. Se existe um arquivo grande contendo informações relevantes para vários usuários, grupos ou aplicativos, os direitos de acesso devem ser razoavelmente imprecisos para incluir todas as partes envolvidas. No Reiser4, é possível dividir esses arquivos em partes menores (os “itens”). Os direitos de acesso podem então ser definidos para cada item e cada usuário separadamente, permitindo um gerenciamento de segurança de arquivos muito mais preciso. Um exemplo perfeito seria /etc/passwd. Atualmente, somente os usuários root podem ler e editar o arquivo, enquanto os não-root só obtêm acesso de leitura a esse arquivo. Usando o conceito de item do Reiser4, você pode dividir esse arquivo em um conjunto de itens (um item por usuário) e permitir que os usuários ou aplicativos modifiquem seus próprios dados, mas sem acessar os dados de outros usuários. Esse conceito aumenta a segurança e flexibilidade.

Extensibilidade por meio de plug-ins

Muitas funções do sistema de arquivos e funções externas normalmente usadas por um sistema de arquivos são implementadas como plug-ins no Reiser4. Esses plug-ins podem ser facilmente adicionados ao sistema básico. Você não precisa mais compilar o kernel ou reformatar o disco rígido para adicionar novas funcionalidades ao sistema de arquivos.

Melhor layout do sistema de arquivos por meio de alocação atrasada

Assim como o XFS, o Reiser4 suporta a alocação atrasada. Consulte a Seção 13.2.6, “XFS”. A utilização da alocação atrasada, até mesmo para metadados, pode resultar em um melhor layout geral.

13.2.6. XFS

Com intenção original de ser um sistema de arquivos para o sistema operacional IRIX, a SGI iniciou o desenvolvimento do XFS no começo de 1990. A idéia por trás do XFS era criar um sistema de arquivos de registro em diário de 64 bits de alto desempenho para atender aos altos desafios de computação de hoje. O XFS é muito bom na manipulação de arquivos grandes e tem bom desempenho em hardware de ponta. Entretanto, até mesmo o XFS tem uma desvantagem. Assim como o ReiserFS, o XFS cuida bastante da integridade dos metadados, mas nem tanto da integridade dos dados.

Uma rápida análise dos recursos fundamentais do XFS explica por que ele pode ser um forte concorrente para outros sistemas de arquivos de registro em diário em computação de ponta.

Alta escalabilidade por meio do uso de grupos de alocação

No momento de criação de um sistema de arquivos XFS, o dispositivo de bloco subjacente ao sistema de arquivos é dividido em oito ou mais regiões lineares do mesmo tamanho. Elas são denominadas grupos de alocação. Cada grupo de alocação gerencia seus próprios inodes e espaços liberados em disco. Praticamente, os grupos de alocação podem ser vistos como sistemas de arquivos dentro de um sistema de arquivos. Como grupos de alocação são independentes uns dos outros, mais de um pode ser abordado pelo kernel ao mesmo tempo. Esse recurso é a chave da grande escalabilidade do XFS. Naturalmente, o conceito de grupos de alocação independente corresponde às necessidades dos sistemas com multiprocessadores.

Alto desempenho por meio de um eficiente gerenciamento de espaço em disco

O espaço em disco e os inodes são controlados por árvores equilibradas B+ dentro dos grupos de alocação. O uso de árvores equilibradas B+ contribui muito para o desempenho e a escalabilidade do XFS. O XFs usa a alocação atrasada. Ele lida com a alocação dividindo o processo em duas partes. Uma transação pendente é armazenada em RAM e o espaço necessário é reservado. O XFS ainda não decide exatamente onde (tratando-se do bloco do sistema de arquivos) os dados devem ser armazenados. Essa decisão é atrasada até o último momento possível. Alguns dados temporários de vida curta talvez nunca cheguem no disco, pois podem ficar obsoletos devido ao tempo que o XFS leva para decidir onde gravá-los. Portanto, o XFS aumenta o desempenho de gravação e reduz a fragmentação do sistema de arquivos. Como a alocação atrasada resulta em eventos de gravação menos freqüentes do que em outros sistemas de arquivos, é provável que a perda de dados depois de uma falha durante a gravação seja mais severa.

Pré-alocação para evitar a fragmentação do sistema de arquivos

Antes de gravar os dados no sistema de arquivos, o XFS reserva (pré-aloca) o espaço livre necessário para um arquivo. Portanto, a fragmentação do sistema de arquivos é amplamente reduzida. O desempenho aumenta porque o conteúdo dos arquivos não é distribuído em todo o sistema de arquivos.