O Linux suporta vários sistemas de arquivos diferentes. Alguns são sistemas de arquivos
de rede especializada ou sistemas de arquivos desenvolvidos para outros sistemas operacionais,
mas um número surpreendente pode ser utilizado como sistemas de arquivos nativos Linux—é possível colocar sua raiz Linux (/) e diretórios do sistema nesses
sistemas de arquivos. Atualmente, sistemas de arquivos nessa categoria incluem ext2, ext3, ReiserFS,
XFS e Journaled File System (JFS). No entanto, o design e desenvolvimento do sistema
são contínuos e novos sistemas de arquivos estão no horizonte.
Talvez o sistema de arquivos mais importante atualmente sob desenvolvimento para Linux é o ext4—a quarta encarnação do sistema de arquivos estendido original (ext ou extfs) desenvolvida exclusivamente para Linux. Dada sua herança, parece que o ext4 se tornará um sistema de arquivos padrão importante (talvez o sistema de arquivos padrão) para Linux no futuro não muito distante.
O quarto sistema de arquivos estendido (ext4 ou ext4fs) existe porque os desenvolvedores estavam pressionando para incorporar recursos novos e avançados no ext3. Essa unidade apresentou vários problemas:
- Alguns dos novos recursos quebrariam a compatibilidade de retrocesso.
- O código do ext3 se tornaria mais complexo e difícil para manter.
- As alterações podem fazer o ext3 altamente confiável tornar-se não confiável.
Por essas razões, os desenvolvedores decidiram bifurcar o desenvolvimento do ext4 a partir do ext3 em junho de 2006. Desde aquela época, o desenvolvimento do ext4 continuou, grandemente despercebido por meros usuários e administradores mortais do Linux. Com o release do kernel 2.6.19 em novembro de 2006, o ext4 fez sua primeira aparição em um kernel de mainstream, embora ele fosse (e ainda é) marcado como experimental; portanto, a maioria da pessoas o ignoraram.
Como o ext4 ainda está sob desenvolvimento, a partir do kernel 2.6.24.4, sua lista de recursos está em constante mudança. Recursos atuais e antecipados incluem os avanços sobre o ext3 listados na Tabela 1.
Tabela 1. Recursos Atuais e Futuros do Ext4 que Fornecem Vantagens sobre o ext3
| Recurso | Vantagem |
|---|---|
| Sistemas de Arquivos Maiores | O ext3 chega ao máximo de sistemas de arquivos de 32 tebibytes (TiB) e de arquivos de 2 TiB, mas limites práticos podem ser inferiores a isso dependendo de sua arquitetura e configurações do sistema—talvez tão baixo quanto sistemas de arquivos de 2 TiB e arquivos de 16 gibibytes (GiB). O ext4, em contrapartida, permite sistemas de arquivos de até 1024 pebibytes (PiB), ou 1 exbibyte (EiB) e arquivos de 16 TiB. Isso pode não ser importante (ainda!) para o computador ou servidor desktop médio, mas é importante aos usuários com grandes matrizes de discos. |
| Extensões | Uma extensão é uma forma para melhorar a eficiência de descritores de arquivos no disco, reduzir os tempos de exclusão para grandes arquivos, entre outras coisas. |
| Pré-alocação Persistente | Se um aplicativo precisa alocar espaço em disco antes de realmente utilizá-lo, a maioria dos sistemas de arquivos fazem isso gravando 0s no espaço em disco ainda não usado. O ext4 permite a pré-alocação sem fazer isso, o que pode melhorar o desempenho de algumas ferramentas do banco de dados e da multimídia. |
| Alocação Atrasada | O ext4 pode atrasar a alocação de espaço em disco até o último momento, o que pode melhorar o desempenho. |
| Mais Subdiretórios | Se você já se sentiu limitado pelo fato de que um diretório pode conter apenas 32.000 subdiretórios no ext3, ficará aliviado em saber que esse limite foi eliminado no ext4. |
| Diário de Somas de Verificação | O ext4 inclui uma soma de verificação nos dados do registro de ações, o que melhora a confiabilidade e o desempenho. |
| Desfragmentação On-line | Apesar do ext3 não ser propenso a fragmentação excessiva, arquivos armazenados nele provavelmente são pelo menos um pouco fragmentados. O ext4 inclui suporte para desfragmentação on-line, o que deve melhorar o desempenho geral. |
| Desfazer a Exclusão | Embora ele ainda não tenha sido implementado, o ext4 pode suportar desfazer a exclusão, o que, naturalmente, é prático sempre que alguém exclui um arquivo acidentalmente. |
| Verificações Mais Rápidas do Sistema de Arquivos | O ext4 inclui estruturas de dados que permitem ao fsck ignorar
peças não utilizadas do disco em suas verificações, assim, aumentando a velocidade
de verificações do sistema de arquivos. |
| Registros de Data e Hora em Nanosegundos | A maioria dos sistemas de arquivos, incluído o ext3, inclui dado de registro de data e hora que é preciso até um segundo. O ext4 estende a exatidão desse dado até um nanosegundo. Algumas origens também indicam que os registros de data e hora do ext4 suportam datas até 25 de abril de 2514, versus 18 de janeiro de 2038, para ext3. |
Como o ext4 é um trabalho atualmente em andamento, essa lista de recursos está sujeita a mudança. Alguns desses recursos, se utilizados, criam incompatibilidade de retrocesso com o ext3—isso é, pode ser que não seja possível montar um sistema de arquivos do ext4 utilizando o código de tipo do sistema de arquivos do ext3. O ext4 mantém compatibilidade para a frente, embora—você deva poder montar um sistema de arquivos do ext3 como se ele fosse um sistema de arquivos do ext4.
O único aperfeiçoamento mais dramático no ext4 está no tamanho do arquivo e do sistema de arquivos. Assim, os usuários que provavelmente precisem do ext4 são aqueles que possuem mais que alguns terabytes de espaço em disco. A lista de recursos na Tabela 1, entretanto, pode apresentar alguns outros aperfeiçoamentos tentadores. Por exemplo, talvez queira experimentar o ext4 se tiver diretórios com imensos números de subdiretórios ou se precisa de registros de data e hora precisos até menos que um segundo.
Como o ext4 é atualmente experimental, para utilizá-lo você quase certamente terá que recompilar o seu kernel. Se você estiver desconfortável com essa tarefa, as chances são que terá problemas com o ext4. De fato, a natureza experimental do ext4 significa que realmente deve-se utilizá-lo somente se estiver interessado em contribuir com seu desenvolvimento ou se estiver desesperado por alguns de seus recursos. Se precisar de suporte de disco grande confiável antes de um release estável do ext4, pode desejar considerar o uso do XFS ou do JFS como alternativa.
Naturalmente, o ext4 não será sempre experimental. No momento apropriado, o ext4 será declarado um sistema de arquivos estável. Quando isso acontecer, o ext4 será uma opção tão boa quanto o ext3 para quase completamente todo mundo, com um par de advertências. Primeiro, é concebível que erros exclusivos do ext4 existirão; portanto, seja cauteloso quando o ext4 for declarado estável pela primeira vez. Segundo, utilizar o ext4 pode tornar impossível para ferramentas mais velhas acessarem seu disco. Isso terá implicações para ferramentas de recuperação de emergência; portanto, talvez queira aguardar suas ferramentas preferidas para suportar o ext4 antes de fazer upgrade. No lado positivo, deve ser possível migrar do ext3 para o ext4 não-destrutivamente, o que possibilitará uma transição fácil se tiver dados existentes que deseja preservar.
Compilando e Ativando o Suporte ao Ext4
Se você leu até aqui, aparentemente está querendo experimentar o ext4. Para fazer isso,
é necessário recompilar seu kernel para incluir o suporte necessário. Recomendo
que inicie com o kernel mais novo disponível (que é 2.6.24.4 no momento em que escrevo). Após
desempacotar a origem do kernel e configurar manualmente todas as opções ou copiar
um arquivo .config mais antigo do kernel e digitar
make oldconfig para copiar suas configurações antigas
digite seu comando de configuração preferido (como
make xconfig) para visualizar as opções do kernel. Será encontrada
a opção do ext4 na área principal de Sistemas de Arquivos como Ext4dev/ext4 extended
fs support development (EXPERIMENTAL). (O nome provavelmente mudará no
futuro, especialmente quando o ext4 for declarado estável.) Observe que deve-se verificar a opção
Prompt para desenvolvimento e/ou código/drivers incompletos na área
Geral para ver mesmo a opção do ext4.
Com o suporte do ext4 selecionado, salve suas alterações do kernel, compile o kernel digitando make e instale os módulos digitando
make modules_install como
root. Será necessário então copiar o kernel compilado (em
arch/i386/boot ou em algum outro diretório) para um
local apropriado (como /boot), editar sua configuração de GRand
Unified Bootloader (GRUB) ou Linux Loader (LILO) e reinicializar seu
computador. Se utilizar um disco virtual de boot, precisa prepará-lo com o utilitário
mkinitrd , também.
Além do módulo do kernel, talvez você queira examinar uma versão de
e2fsprogs que suporta os recursos do sistema de arquivos ext4.
É possível fazer download de um tarball (a seção Recursos aponta
o site apropriado) ou utilizar git, conforme
demonstrado na Lista 1.
Lista 1. Comandos para Recuperar o
e2fsprogs Mais Recente através do git
$ git clone git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
$ cd e2fsprogs
$ git checkout -b pu
Switched to a new branch "pu"
$ git branch
master
* pu
$ git pull git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git pu
|
Observe que pode ser necessário instalar git utilizando seu
gerente do pacote de distribuição. Essas ferramentas ainda não foram muito testadas;
portanto, não são recomendadas para uso em sistemas de produção e, no momento,
não parecem incluir muito do que é realmente necessário para uso do ext4. Assim, é possível preferir
manter-se fiel ao pacote e2fsprogs de ações entregue
com sua distribuição.
O processo de compilação para e2fsprogs é razoavelmente
padrão: Descompacte o pacote, cd no diretório
resultante, digite ./configure, digite
make, e (como root) digite
make install. Esse processo sobrescreverá seu
pacote normal e2fsprogs de distribuição; portanto,
só faça isso se estiver certo de que deseja utilizar a versão mais recente (e possivelmente
instável) dessas ferramentas.
Com seu sistema inicializado em um kernel com suporte do ext4, você está pronto para iniciar o uso do novo sistema de arquivos. Para fazer isso, é necessário preparar uma partição, um dispositivo Redundant Array of Independent Disks (RAID) ou outro espaço de armazenamento. Então é possível começar a utilizá-la como um sistema de arquivos ext4 e opções do sistema de arquivos tweak.
Se você deseja fazer um início limpo, é possível formatar uma partição ou outro dispositivo
utilizando as ferramentas fornecidas com o pacote e2fsprogs
novo ou antigo, a saber mkfs.ext3 ou mkfs.ext4. Por exemplo,
mkfs.ext4 -j /dev/sda6 prepara a partição
/dev/sda6 para uso. Utilizar
mkfs.ext4 pode produzir um sistema de arquivos com mais
recursos específicos do ext4 ativados.
Atualmente, os programas e2fsprogs não são completamente
atualizados com as alterações do sistema de arquivos de kernel. Felizmente, a maioria dos
recursos do driver do kernel não requer preparação especial a partir do
mkfs.ext4 ou outros utilitários. Os recursos do ext4 são
ativados quando o sistema de arquivos é montado. Se você deseja utilizar o ext4 em mídia grande,
estará indo ousadamente onde poucos estiveram antes; portanto, esteja certo de documentar e
relatar qualquer problema que encontrar!
Se você deseja utilizar um sistema de arquivos ext2 ou ext3 como um sistema de arquivos ext4, pode fazer isso. Simplesmente monte o dispositivo conforme descrito brevemente. Entretanto, se você utilizar determinados recursos novos, como extensões, não poderá voltar a utilizar o sistema de arquivos com os drivers do ext2 ou ext3.
Para utilizar um dispositivo como um sistema de arquivos ext4, deve-se montá-lo com o código do tipo de sistema de arquivos
ext4dev . (Quando o ext4 se tornar
estável, o código do tipo de sistema de arquivos será alterado para ext4.)
Por exemplo,
mount -t ext4dev /dev/sda6 /mnt/point
monta /dev/sda6 como um sistema de arquivos ext4 em
/mnt/point. Isso é tudo o que existe para o uso do ext4 básico. Esteja
ciente de que as opções de montagem padrão ativam extensões, o que renderiza o sistema de arquivos
inutilizável como um sistema de arquivos ext3. Se você deseja experimentar o ext4, mas reter
a opção de voltar ao ext3, utilize a opção -o noextents para
desativar o uso de extensões.
O uso prático do ext4, uma vez montado, é exatamente como aquele de qualquer outro sistema de arquivos: é possível copiar arquivos, criá-los diretamente e assim por diante. A menos que você execute em um erro ou execute testes de avaliação de desempenho, não deve notar qualquer diferença.
Ajustando Opções de Desempenho do Ext4
É possível utilizar o programa tune2fs para sintonizar um sistema de arquivos ext4
das mesmas maneiras que sintonizaria um sistema de arquivos ext2 ou ext3. Atualmente,
tune2fs não fornece qualquer opção específica do ext4,
embora seja possível configurar opções do ext4, como extensões,
utilizando o parâmetro -O padrão.
Quando você monta um sistema de arquivos como o ext4, o kernel começa a utilizar recursos específicos do sistema de arquivos, como extensões. Isso torna impossível montar o sistema de arquivos novamente como um sistema de arquivos ext3, pelo menos não sem passar por um bom número de procedimentos complicados.
Embora a montagem de um sistema de arquivos ext3 como ext4 ative os recursos específicos do ext4,
a montagem sozinha não converte estruturas de dados antigas em novos formatos. Por
exemplo, arquivos existentes permanecem alocados bloco a bloco, em vez de utilizar
extensões. Dessa forma, seus arquivos antigos não ganham o benefício dos novos recursos. Os
desenvolvedores do ext4, entretanto, consideraram esse fato e forneceram um caminho adiante: É
possível utilizar a ferramenta (muito experimental) e4defrag (descrita
brevemente) para converter alocações para utilizar extensões. Uma outra ferramenta nova (que
ainda não está disponível) mudará tamanhos do inode para o novo formato.
Mantendo um Sistema de Arquivos Ext4
É possível utilizar a ferramenta e2fsprogs padrão para manter
um sistema de arquivos ext4, como tune2fs para ajustar opções
após criar o sistema de arquivos, fsck.ext4 para executar uma
verificação do sistema de arquivos e assim por diante. Esses programas não são muito diferentes para o ext4
comparados ao ext3. Se bem que, conforme observado anteriormente, o ext4 inclui alguns
aprimoramentos que devem melhorar o desempenho do fsck.
Além dessas ferramentas, uma nova merece menção especial:
e4defrag. Esse programa desfragmenta um sistema de arquivos
ext4 montado. Isso pode melhorar o desempenho, especialmente se o seu sistema de arquivos
tornou-se quase integral. Ele também possui as vantagens de converter alocação de estilo do ext2/3
na alocação baseada em extensões de estilo do ext4; portanto, isso pode melhorar o desempenho
em um sistema de arquivos que foi utilizado anteriormente como um sistema de arquivos ext3. Infelizmente,
e4defrag ainda não é parte do pacote
e2fsprogs padrão; portanto, é necessário trazer à tona um cópia "bruta"
(a seção Recursos fornece um link).
Aprender
-
Consulte o principal
wiki do ext4 assim como o Howto do ext4 na wikipedia para obter informações adicionais
e links.
-
Na zona Linux do developerWorks,
encontre mais recursos para desenvolvedores Linux e varra nossos
artigos e tutoriais mais
conhecidos.
-
Consulte todas as
dicas de Linux e
tutoriais de Linux no developerWorks.
-
Fique atualizado com eventos técnicos e Webcasts do developerWorks.
Obter produtos e tecnologias
-
Obtenha o
e2fsprogscom suporte ao ext4 a partir de ftp.kernel.org. -
Localize uma cópia
do código de origem para o utilitário
ext4defrag
, mesmo se ele ainda não for
parte do pacote
e2fsprogsprincipal. -
Com o Software de período experimental IBM, disponível para download diretamente do developerWorks, construa seu próximo projeto de desenvolvimento em Linux.
Discutir
-
Envolva-se com a
comunidade do developerWorks através de blogs, fóruns, podcasts e tópicos da comunidade em nossos
novos espaços do developerWorks.