You are on page 1of 6

Anatomia do Ext4 http://www.ibm.com/developerworks/br/library/l-anatomy-ext4/index.

html

Anatomia do Ext4
Conheça o quarto sistema de arquivos estendido

Nível: Intermediário

M. Tim Jones, Consultant Engineer, Emulex Corp.

17/Fev/2009

O quarto sistema de arquivos estendido, ou ext4, é a nova geração de sistemas de arquivos com registro de
mudanças que mantém a antiga compatibilidade com o sistema de arquivos anterior, o ext3. Embora o ext4 não
seja o padrão atual, será o próximo sistema de arquivos padrão da maioria das distribuições Linux. ® . Conheça
o ext4 e descubra por que ele será seu novo sistema de arquivos favorito.

Cada release de kernel do Linux traz algumas surpresas e o release 2.6.28 de dezembro não é exceção. Ele é o primeiro de um
sistema de arquivos ext4 estável (entre várias outras características interessantes, como Btrfs, que ainda está sob rigoroso
desenvolvimento). Esta nova geração de sistema de arquivos estendido oferece escalabilidade e confiabilidade aprimoradas,
além de novas e importantes funcionalidades. O ext4 é tão escalável que o sistema de arquivos máximo consumiria um milhão
de discos de 1 terabyte (TB).

Uma Breve História do Sistema de Arquivos Estendido


O primeiro sistema de arquivos suportado pelo Linux foi o Minix. Ele O Comutador do Sistema de Arquivo
apresentava alguns problemas de desempenho significativos e, assim, foi Virtual
criado outro sistema de arquivos, especificamente para o Linux, O VFS é uma camada que abstrai os detalhes
denominado sistema de arquivos estendido. O primeiro sistema de arquivos dos sistemas de arquivos subjacentes dos
estendido (ext) foi projetado por Remy Card e introduzido no Linux em usuários do sistema de arquivos da camada
abril de 1992. O sistema de arquivos ext foi o primeiro a utilizar o superior. Assim, o VFS permite que o Linux
comutador do Sistema de Arquivo Virtual (VFS) implementado no kernel ofereça suporte a vários sistemas de arquivos
0.96c e suportava sistemas de arquivos de até 2 gigabytes (GB). —simultaneamente—em um determinado
O segundo sistema de arquivos estendido (ext2), também implementado por sistema Linux.
Remy Card, foi introduzido em janeiro de 1993. Ele trazia ideias avançadas
de outros sistemas de arquivos da época (como o Berkeley Fast File System [FFS]). O Ext2 estendido suportava sistemas de
arquivos de até 2TB, embora os kernels 2.6 estendidos apresentassem sistemas de arquivos ext2 com tamanho máximo de
32TB.

O terceiro sistema de arquivos estendido (ext3) significou um avanço Leia mais sobre Tim Jones no
importante nos sistemas de arquivos do Linux, embora seu desempenho developerWorks
ficasse aquém de alguns concorrentes. O sistema de arquivos ext3 Artigos Anatomia de... de Tim
introduziu o conceito de journaling para aprimorar a confiabilidade do Todos os artigos de Tim no
sistema de arquivos quando o sistema sofria uma parada brusca. E apesar developerWorks
do melhor desempenho dos sistemas de arquivos concorrentes (como o XFS
da Silicon Graphics e o IBM® Journaled File System [JFS]), o ext3 suportava atualizações de sistemas que já utilizavam o
ext2. O Ext3 foi apresentado em novembro de 2001 e implementado por Stephen Tweedie.

Voltemos aos dias de hoje. Temos agora o quarto sistema de arquivos estendido (ext4). O Ext4 apresenta inúmeros novos
aprimoramentos quanto a desempenho, escalabilidade e confiabilidade. Mais especificamente, o ext4 suporta sistemas de
arquivos de 1 exabyte. Ele foi implementado por uma equipe de desenvolvedores, liderados por Theodore Tso (responsável
pela manutenção do ext3) e introduzido no kernel 2.6.19. Encontra-se agora estável no kernel 2.6.28 (desde dezembro de
2008).

O ext4 pega emprestado vários conceitos úteis de muitos sistemas de arquivos concorrentes. Por exemplo, a abordagem
baseada em extensões para o gerenciamento de blocos foi implementada no JFS. Outro recurso relativo ao gerenciamento de
blocos (alocação com atraso) foi implementado tanto no XFS quanto no ZFS da Sun Microsystems.

Você encontrará muitos aprimoramentos e inovações no novo sistema de arquivos ext4. Os aprimoramentos abrangem
inúmeros ângulos de recursos, desde uma funcionalidade nova (recursos novos), escalabilidade (que escala além das atuais
restrições dos sistema de arquivos), confiabilidade (no caso de falhas) e, sem dúvida, desempenho.

1 de 6 11/11/2009 11:29
Anatomia do Ext4 http://www.ibm.com/developerworks/br/library/l-anatomy-ext4/index.html

Funcionalidade
O ext4 inclui uma grande quantidade de funcionalidades novas, mas o mais importante é sua compatibilidade com versões
futuras e antigas com o ext3 e os aprimoramentos nos registros de data e hora que significam o futuro dos sistemas Linux de
alto desempenho.

Compatibilidade com Versões Futuras e Antigas


Como atualmente o ext3 é um dos sistemas de arquivos mais populares em uso pelo Linux, migrar para o ext4 é simples e
fácil. Por isso, o ext4 foi elaborado para ser compatível com versões futuras e antigas (até certo ponto) (consulte Figura 1). O
ext4 apresenta compatibilidade com versões futuras pelo fato de você poder montar um sistema de arquivos ext3 como um
sistema de arquivos ext4. Para aproveitar o ext4 ao máximo, é necessária uma migração do sistema de arquivos, a fim de
converter e usufruir o novo formato ext4. Também é possível montar um sistema de arquivos ext4 como ext3 (compatibilidade
anterior), mas somente se o sistema de arquivos ext4 não tiver extensões (isso será discutido na seção sobre desempenho).

Figura 1. A Compatibilidade com Versões Futuras e Antigas do Ext4

Além dos recursos de compatibilidade, quando você quiser migrar de um sistema de arquivos ext3 para ext4, poderá fazer isso
de forma gradativa. Ou seja, os arquivos antigos que você não moveu podem permanecer no formato ext3, mais antigo,
enquanto os arquivos novos (ou os antigos que foram copiados) ocuparão as novas estruturas de dados do ext4. Assim, será
possível migrar de um sistema de arquivos ext3 on-line para um sistema de arquivos ext4.

Aprimorando a Resolução e o Intervalo do Registro de Data e Hora


Por incrível que pareça, os registros de data e hora na área de sistemas de arquivos estendidos anteriores ao ext4 eram
baseados em segundos. Embora isso seja satisfatório em muitas configurações, à medida que os processadores evoluem, com
mais velocidade e integração maior (processadores com vários núcleos), e o Linux encontra-se em outros domínios de
aplicações, como computadores de alto desempenho, na simplicidade do registro de data e hora baseado em segundos falha.
Essencialmente, o ext4 tem registros de data e hora que resistem ao tempo, quando os expandimos para LSB em
nanossegundos. O intervalo de tempo também precisou ser estendido com dois bits adicionais, de modo a aumentar a vida útil
em mais 500 anos.

Escalabilidade
Um dos aspectos mais importantes da evolução dos sistemas de arquivos é sua capacidade de serem escaláveis, levando-se
em conta as crescentes exigências sobre eles. O ext4 realiza isso de diversas formas, superando os limites do ext3 e
revolucionando as áreas de gerenciamento de metadados dos sistemas de arquivos.

Estendendo os Limites do Sistema de Arquivos


Uma das primeiras diferenças visíveis do ext4 é o suporte aumentado para volumes do sistema de arquivos, tamanhos de

2 de 6 11/11/2009 11:29
Anatomia do Ext4 http://www.ibm.com/developerworks/br/library/l-anatomy-ext4/index.html

arquivos e limites de subdiretórios. O ext4 oferece suporte a sistemas de arquivos de até 1 exabyte (1000 petabytes). Embora
pareça muito para os padrões atuais, o consumo de armazenamento continua a crescer; assim, o ext4 foi definitivamente
desenvolvido pensando no futuro. Os arquivos no ext4 podem chegar a 16TB (supondo-se blocos de 4KB), oito vezes o limite
do ext3.

Por fim, o limite do subdiretório foi expandido com o ext4, de diretórios de 32KB para virtualmente ilimitados. Pode parecer
exagero, mas é preciso considerar a hierarquia do sistema de arquivos que consome um exabyte de armazenamento. A
indexação do diretório também foi otimizada para uma estrutura em Árvore B com hash; portanto, embora os limites sejam
bem maiores, o ext4 suporta tempos de procura muito rápidos.

Extensões
Uma das desvantagens principais do ext3 era seu método de alocação. Os arquivos eram alocados por meio de um mapa de
bits de espaço livre, que não era muito rápido nem escalável. O formato do ext3 é bastante eficiente com arquivos pequenos,
mas muito ineficiente com arquivos grandes. O ext4 substitui o mecanismo do ext3 com extensões para aprimorar a alocação e
oferecer suporte a uma estrutura mais eficiente de armazenamento. Uma extensão é simplesmente uma forma de representar
uma sequencia adjacente de blocos. Com isso, os metadados diminuem, porque, em vez de manter as informações sobre onde
está armazenado um bloco, a extensão mantém as informações sobre onde está armazenada uma lista grande de blocos
adjacentes (reduzindo, assim, o armazenamento geral de metadados).

As extensões do ext4 adotam uma abordagem em camadas para representar arquivos pequenos com eficiência, bem como
árvores de extensão para representar arquivos grandes de forma eficiente. Por exemplo, um único inode do ext4 tem espaço
suficiente para fazer referência a quatro extensões (em que cada uma representa um conjunto de blocos adjacentes). Para
arquivos grandes (inclusive fragmentados), um inode pode fazer referência a um nó de índice e cada um deles pode fazer
referência a um nó folha (fazendo referência a várias extensões). Essa árvore de extensão de profundidade constante oferece
um rico esquema de representação para arquivos grandes e potencialmente esparsos. Os nós também apresentam mecanismos
de autoverificação para evitar, no futuro, que os sistema de arquivos sejam corrompidos.

Desempenho
Um dos atributos mais importantes usados para mensurar novos sistemas de arquivos é seu desempenho fundamental. É
também uma das areas de maior dificuldade; quando um sistema de arquivos chega a dimensões muito extensas, espera-se que
seja bastante confiável, e o desempenho pode ficar comprometido. No entanto, mesmo que o ext4 trate de questões de
escalabilidade e confiabilidade, ele fornece inúmeros aprimoramentos de desempenho.

Pré-alocação de Nível de Arquivo


Algumas aplicações, como bancos de dados ou fluxos de conteúdos, contam com arquivos armazenados em blocos adjacentes
(para explorar a otimização da leitura de blocos sequenciais das unidades, bem como maximizar as taxas de leitura de
comandos para blocos). Embora as extensões possam fornecer segmentos de blocos adjacentes, outro método de força bruta é
o de pré-alocação de seções muito grandes de blocos adjacentes no tamanho desejado (como foi implementado no passado,
com o XFS). O ext4 implementa isso por meio de uma nova chamada de sistema, que efetua a pré-alocação e inicializa um
arquivo de um determinado tamanho. Em seguida, é possível gravar os dados necessários e fornecer desempenho de leitura
limitado sobre os dados.

Atrasando a Alocação dos Blocos


Outra otimização baseada no tamanho dos arquivos é a alocação com atraso. Essa otimização no desempenho atrasa a
alocação dos blocos físicos no disco até que eles sejam sincronizados nele. O segredo dessa otimização é que, atrasando a
alocação dos blocos físicos até que estes precisem ser gravados no disco, mais blocos são apresentados para alocar e gravar
nos blocos adjacentes. Isso se assemelha à pré-alocação persistente, com a diferença de que o sistema de arquivos efetua a
tarefa automaticamente. No entanto, se o tamanho do arquivo já for conhecido, a pré-alocação persistente será o melhor
caminho.

Alocação de Vários Blocos


Uma otimização final—novamente, relacionada a blocos adjacentes—é o alocador de blocos do ext4. No ext3, o alocador de

3 de 6 11/11/2009 11:29
Anatomia do Ext4 http://www.ibm.com/developerworks/br/library/l-anatomy-ext4/index.html

blocos trabalhava na alocação de um único bloco por vez. Quando eram necessários vários blocos, era possível encontrar
dados adjacentes em blocos não adjacentes. O ext4 resolve isso com um alocador de blocos que aloca vários blocos por vez,
provavelmente adjacentes no disco. Como as otimizações anteriores, esta reúne os dados relacionados no disco para melhorar
a otimização de leitura sequencial.

O outro aspecto da alocação de vários blocos é a quantidade de processamento exigida para a alocação dos blocos.
Lembre-se de que o ext3 alocava um bloco de cada vez. Nas unidades mais simples, essa operação exigia uma chamada para
a alocação de cada um dos blocos. Alocar vários blocos de uma só vez exige muito menos chamadas para o alocador de
blocos, resultando em uma alocação mais rápida e em uma redução do processamento.

Confiabilidade
Conforme os sistemas de arquivos são escaladospara tamanhos massivos possíveis com o ext4, sem dúvida haverá
preocupações quanto à confiabilidade. O ext4 inclui vários mecanismos de autoproteção e autorreparo que tratam disso.

Verificando o Checksumdo Diário do Sistema de Arquivos


Assim como o ext3, o ext4 é um sistema de arquivos com journal. Journaling é o processo de registro de mudanças no
sistema de arquivos por meio de um journal (um log circular dedicado em uma região adjacente do disco). As alterações reais
no armazenamento físico são então efetuadas partir do log, que pode implementá-las com mais confiabilidade e garantir a
consistência, mesmo se houver travamento do sistema ou faltar energia durante a operação. O resultado é que reduzem-se as
chances de que o sistema de arquivos seja corrompido.

Entretanto, mesmo com o journaling, a corrupção ainda será possível se entradas errôneas forem inseridas no diário. Para
enfrentar esse problema, o ext4 implementa a verificação de checksum do journal para certificar-se de que as alterações
válidas cheguem ao sistema de arquivos subjacente. É possível encontrar referências adicionais ao journaling —um importante
aspecto do ext4—na seção Recursos .

O ext4 oferece suporte a vários modos de journaling, dependendo das necessidades do usuário. Por exemplo, o ext4 oferece
suporte a um modo no qual somente metadados são gravados no journal (modo Writeback), um modo no qual os metadados
são gravados no journal, mas os dados são gravados como os metadados são gravados a partir do journal (modo Ordenado) e
um modo no qual tanto os metadados quanto os dados gravados no journal (modo Journal —o modo mais confiável). Observe
que o modo Journal, apesar de ser o melhor para assegurar um sistema de arquivos consistente, também é o mais lento, pois
todos os dados passam pelo journal.

Desfragmentação On-line
Embora o ext4 incorpore recursos que reduzam a fragmentação no sistema de arquivos (extensões para a alocação de blocos
sequenciais), é impossível evitar uma determinada fragmentação quando um sistema de arquivos existe por muito tempo. Por
esse motivo, existe uma ferramenta on-line de desfragmentação para desfragmentar o sistema de arquivos e os arquivos
individuais para aprimorar o desempenho. O desfragmentador on-line é uma ferramenta simples, que copia os arquivos em um
inode novo do ext4 que faça referência a extensões adjacentes.

Outro aspecto da desfragmentação on-line é o curto tempo exigido para a verificação de um sistema de arquivos (fsck). O
ext4 marca os grupos de blocos não utilizados na tabela do inode, permitindo que o processo fsck ignore-os totalmente, para
aumentar a velocidade do processo de verificação. Quando o sistema operacional decide validar o sistema de arquivos por
conta de corrupção interna (algo inevitável, pois os sistemas de arquivos aumentam em tamanho e distribuição), o design geral
do ext4 se reflete na confiabilidade geral aprimorada.

O Que Vem a Seguir?


É óbvio que o sistema de arquivos estendido apresenta uma história longa e valiosa dentro da Linux—desde a primeira
introdução ao ext, em 1992, ao ext4 em 2008. Ele foi o primeiro sistema de arquivos elaborado especificamente para Linux e
mostrou-se um dos sistemas de arquivos disponíveis mais eficientes, estáveis e eficazes. O ext4 aprimorou-se com os avanços

4 de 6 11/11/2009 11:29
Anatomia do Ext4 http://www.ibm.com/developerworks/br/library/l-anatomy-ext4/index.html

na pesquisa em sistema de arquivos, incorporando ideias de outros sistemas de arquivos inovadores (como XFS, JFS, Reiser e
as técnicas do sistema de arquivos tolerante a falhas IRON). Embora seja muito cedo para saber o que virá com o ext5, ele
sem dúvida estará na vanguarda dos sistemas Linux para as empresas.

Recursos
Aprender
O artigo "O Ubuntu 9.04 Recebe Suporte do EXT4" encontra aperfeiçoamento impressionante quanto ao desempenho
com o ext4 no release mais recente do Ubuntu (comparado com JFS, XFS, ReiserFS e Ext3).

Verifique a wiki de kernel do ext4 (que ajudará você a executar o ext4 em seu sistema), a página Fedora ext4, a página
Kernel Newbies ext4, e, é claro, a Wikipedia para obter informações adicionais sobre o ext4. Também é possível ler
sobre todos os quatro sistemas de arquivos estendidos (do 1 ao 4) na página Sistema de Arquivos Estendido da
Wikipedia, que fornece links para comparações do sistema de arquivos e o histórico do segundo sistema de arquivos
estendido.

Visualize uma ótima apresentação sobre o ext4, intitulada "Ext4: The Next Generation of Ext2/3 Filesystem" no IBM
Linux Technology Center.

Leia "Anatomia do Sistema de Arquivos do Linux" de Tim (developerWorks, outubro de 2007) e "Anatomia dos
Sistemas de Arquivos de journaling do Linux" (developerWorks, junho de 2008) para obter informações adicionais
sobre os sistemas de arquivos Linux e os sistemas de arquivos com journaling.

Aprenda sobre os novos releases de kernel para 2.6.28 e 2.6.29 de Softpedia: 2.6.28 e Heise on-line: 2.6.29. Os novos
releases de kernel para 2.6.28 e 2.6.29 são importantes avanços.

Aprenda mais sobre o histórico anterior do ext4. Este artigo de trap de kernel de 2006 inclui a proposta anterior de
Theodore Tso sobre o que iria se tornar o sistema de arquivos ext4.

Leia a dissertação, IRON File Systems, de Vijayan Prabhakaran da Universidade de Wisconsin-Madison. As técnicas
IRON (Internal RObustNess) entendem que as unidades de disco apresentam falhas em pontos interessantes e propõem
métodos para lidar com elas. Em especial, IRON propõe a identificação de falhas e as técnicas de recuperação por
meio de journaling.

Leia mais sobre os artigos de Tim no developerWorks.

Na zona Linux do developerWorks, encontre mais recursos para desenvolvedores Linux (incluindo desenvolvedores que
são novos no Linux) e verifique 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


Faça download do release de kernel mais recente em kernel.org.

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 espaços.

5 de 6 11/11/2009 11:29
Anatomia do Ext4 http://www.ibm.com/developerworks/br/library/l-anatomy-ext4/index.html

Sobre o autor

M. Tim Jones é um arquiteto de firmwares embarcados e autor de Inteligência Artificial: Sistemas de Abordagem,
GNU/Linux, Programação de Aplicativos AI (atualmente em sua segunda edição), Programação de Aplicativos AI (em sua
segunda edição) e BSD Sockets Programming from a Multilanguage Perspective. Sua formação em engenharia vai desde o
desenvolvimento de kernels para nave espacial geossincrônica até a arquitetura de sistema embarcado e o desenvolvimento
de protocolos de interligação de redes. Tim é um Engenheiro Consultor para a Emulex Corp. em Longmont, Colorado.

IBM, o logotipo IBM, ibm.com, DB2, developerWorks, Lotus, Rational, Tivoli e WebSphere são marcas ou marcas registradas da
International Business Machines Corporation nos Estados Unidos e/ou em outros países. Esses e outros termos de marcas
registradas IBM são marcados em sua primeira ocorrência nessas informações com o símbolo apropriado (® ou ™), indicando
marcas registradas nos EUA ou de direito consuetudinário de propriedade da IBM no momento em que essas informações foram
publicadas. Tais marcas registradas também podem ser marcas registradas ou de direito consuetudinário em outros países.
Consulte a lista atual de marcas registradas IBM. Linux é uma marca registrada da Linus Torvalds nos Estados Unidos e/ou em
outros países. Outros nomes de empresas, produtos e serviços podem ser marcas registradas ou marcas de serviço de terceiros.

6 de 6 11/11/2009 11:29

You might also like