Ext4

Origem: Wikipédia, a enciclopédia livre.
Saltar para a navegação Saltar para a pesquisa
EXT4
Desenvolvedor Mingming Cao, Andreas Dilger, Alex Zhuravlev (Tomas), Dave Kleikamp, Theodore Ts'o, Eric Sandeen, Sam Naghshineh, outros
Nome completo Fourth extended file system
Lançamento Estável: 21 de agosto de 2008
Instável: 10 de setembro de 2006 (Linux 2.6.28, 2.6.19)
Identificador da partição 0x83 (MBR)
EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 (GPT)
Estruturas
Conteúdos de diretório Lista ligada, hashed B-tree
Alocação de arquivos Extensões/Mapa de bites
Blocos ruins Tabela
Limites
Tamanho Máximo de arquivo 16 TiB (para um sistema com blocos de 4k)
Número máximo de arquivos 4 bilhões (especificado na criação do sistema)
Tamanho máximo do nome de arquivo 256 bytes
Tamanho máximo do volume 1 EiB
Caracteres permitidos em nomes Todos bytes exceto NULL ('\0') e '/'
Recursos
Datas salvas modificação(mtime), modificação de atributos (ctime), acesso (atime), deleção (dtime), criação (crtime)
Faixa de datas 14 de dezembro de 1901 - 25 de abril de 2514
Resolução de datas Nanosegundos
Bifurcações Não
Atributos not extents, noextents, mballoc, nomballoc, delalloc, nodelalloc, data=journal, data=ordered, data=writeback, commit=nrsec, orlov, oldalloc, user_xattr, nouser_xattr, acl, noacl, bsddf, minixdf, bh, nobh, journal_dev
Permissões de sistema de arquivos POSIX
Compressão transparente Não
Criptografia transparente Não
Armazenamento de caso único Não
Sistemas operativos suportados Baseados em Linux
Portal das Tecnologias de informação

Introdução[editar | editar código-fonte]

O ext4 é um sistema de arquivos do Linux desenvolvido para ser o sucessor do ext3 a partir de 2006.

Em 11 de Outubro de 2008, os patches que marcam o ext4 como códigos estáveis foram mesclados em repositórios de código de fonte do Linux 2.6.28, que denota o fim da fase de desenvolvimento e recomenda a adoção do ext4.

Mathur et al [2007], no congresso "Ottawa Linux Symposium" de 2007, descreveram as principais características a serem implementadas no Ext4, e mostraram a razão de não desenvolverem um sistema de arquivos inteiramente novo pela compatibilidade com o Ext3 e por causa de sua base já instalada.

História[editar | editar código-fonte]

Em 28 de junho de 2006, Theodore Y. "Ted" Ts'o propôs[1] a bifurcação (fork) do desenvolvimento do Ext3. Esse passo foi necessário para atender às discussões em torno da evolução do Ext3. Mingming Cao, dentre outros, citou a limitação desse sistema de arquivos por causa do uso de variáveis de 32 bits e indicou que já havia esforços para aumentar o tamanho daquelas variáveis para 48 bits[2]. O Ext4 foi incluído (marcado como "em desenvolvimento") no Linux 2.6.19[3].

O Ext3 suporta sistemas de arquivos com tamanho menor que 16 TiB, usando blocos de 4 KiB (212 bytes). Esse limite é definido por uma variável de 32 bits no superbloco, o valor máximo suportado exato é de (232-1) * 212 bytes. O tamanho de arquivo é limitado por uma variável de 32 bits no nó-i, um contador de setores, daí a limitação em ~2 TiB ((232 - 1) * 512 bytes). [MATHUR et al, 2007]

A primeira providência para aumentar aqueles valores foram: (i) aumentar o contador de blocos no superbloco para 64 bits, isso permitiria um sistema de arquivos com ~64 ZiB (~276 bytes = ~264 * 212 bytes). (ii) alterar a contagem de setores para blocos no nó-i, permitindo arquivos com até ~16 TiB ((232-1) * 212 bytes).

Entretanto, o limite para o tamanho do volume é determinado pela alocação de espaço, que no Ext4 é definido por extensões, que usam 48 bits [MATHUR et al, 2007], o limite para o volume é de ~1 EiB ((248-1) * 212 bytes).

A partir do Linux 2.6.25[3], em 2008, foram adicionados 16 bits ao contador de blocos do arquivo, no nó-i. Assim um arquivo no Ext4 tem um limite atual de ~1 EiB, o mesmo do volume.

Funcionalidades[editar | editar código-fonte]

As novas funcionalidades propostas são: alocação tardia (delayed allocation); marcas temporais com maior resolução (nanossegundos)[4]; verificação de integridade do journal (journal checksums); suporte para tamanhos maiores de volumes e arquivos[5]. mais extensões são introduzidas, compatibilidade com versões anteriores, pré alocação, mais rápido sistema de arquivo de verificação, alocador multibloco, melhor timestamps.

Deixa de existir um limite de sub-diretórios no ext4[6].

Alocação tardia

Ext4 usa uma técnica de execução do sistema de arquivos chamado atribuir-on-flush, também conhecida como a atribuição de atraso. Isso melhora o desempenho e reduz a fragmentação, melhorando a alocação de blocos decisões com base no tamanho do arquivo.

Jornal checksumming

Ext4 usa checksums no jornal para melhorar a confiabilidade, já que o jornal é um dos arquivos mais utilizados do disco. Esta característica tem um lado benéfico, que pode evitar com segurança um disco I / O esperar durante o processo diário, melhorando o desempenho ligeiramente.

Suporte para tamanhos maiores de volumes e arquivos

O sistema de arquivos ext4 pode suportar volumes com tamanho até 1 exabyte e arquivos com tamanho até 16 terabytes [7]. O atual e2fsprogs só pode tratar um sistema de arquivos de 16 TB.

Extensões

As extensões são introduzidas para substituir o tradicional bloco de mapeamento de esquema usado por arquivos ext2/3.Uma extensão é um conjunto de blocos contíguos físico, melhorando o desempenho de muitos arquivos e redução de fragmentação. Uma única extensão em ext4 pode mapear até 128MB de espaço contíguo com um bloco de 4 KB de tamanho. Quando há mais de 4 extensões em um arquivo, o resto das extensões são indexadas em um three.

Compatibilidade com versões anteriores

O sistema de arquivos ext4 é compatível com o ext3 e ext2 Isto irá melhorar o desempenho já ligeiramente, porque alguns novos recursos do ext4 também pode ser usado com ext3 e ext2, tal como o novo algoritmo de alocação de blocos.

Pré alocação

O sistema de arquivos ext4 permite pré-alocação de espaço em disco para um arquivo.

Um novo fallocate () chamada de sistema foi adicionado ao Linux para uso de sistemas de arquivos, incluindo ext4 e XFS, que têm essa capacidade.

O mais rápido sistema de arquivos de verificação

No ext4, bloco alocado grupos e secções da tabela de inode são marcados como tal. Isso permite que e2fsck para ignorá-los completamente em uma verificação e reduz o tempo necessário para verificar o sistema de arquivos do tamanho do ext4 é construída para suportar. Esse recurso é implementado na versão 2.6.24 do Linux.

Alocador multibloco

O alocador multiblock é usado quando a atribuição atrasada é ativado por um sistema de arquivos, ou quando os arquivos são abertos no modo O_DIRECT. Esse recurso não afeta o formato de disco.

Melhora de carimbos (timestamps)

Ext4 também adiciona um suporte para a data-criado timestamps. Mas, como Theodore Ts'o salienta, ao mesmo tempo que é fácil de adicionar um campo data de criação extra no inode (portanto, tecnicamente permitindo suporte para data criada timestamps em ext4), é mais difícil de modificar ou adicionar o necessário sistema de chamadas, como stat () (que provavelmente exigiria uma nova versão), e as várias bibliotecas que dependem deles (como glibc). Estas alterações exigem a coordenação de vários projetos. Portanto, mesmo se os desenvolvedores implementarem o suporte inicial para a data de criação de carimbos, esse recurso não estará disponível nesse momento para programas de usuário.

Desvantagens[editar | editar código-fonte]

Alocação tardia e potencial perda de dados

Como a "alocação tardia" oferece um comportamento diverso do existente no ext3 com o qual os programadores tem contado, ela representa um risco adicional de perda de dados nos casos de o sistema travar antes que todos os dados tenham sido gravados no disco. Devido a isto, o ext4, na versão 2.6.30 do Linux, detecta automaticamente esses casos e reverte para o comportamento antigo.

O cenário típico em que isso pode ocorrer é um programa que substitui o conteúdo de um arquivo sem forçar uma gravação para o disco com fsync. Existem duas maneiras comuns de substituir o conteúdo de um arquivo em sistemas Unix:

open ("file", O_TRUNC), write (fd, data); close (fd); Neste caso, um arquivo existente é truncado no momento da abertura (devido a O_TRUNC flag), então os novos dados são gravados. Desde a gravação pode demorar algum tempo, há uma oportunidade de perder o conteúdo mesmo com ext3, mas geralmente muito pequena. No entanto, porque o ext4 pode atrasar a atribuição arquivo de dados por um longo tempo, essa oportunidade é muito maior.

open ("File.New"); write (fd, dados); close (fd); rename ("File.New", "arquivo"); Um novo arquivo temporário ("File.New") é criado, inicialmente, que contém o novo conteúdo. Em seguida, o novo arquivo é renomeado sobre o antigo. A troca de arquivos pela "chamada" renomear é garantido para ser atômica por POSIX normas - ou seja, tanto o antigo arquivo continua, ou é substituído por um novo. Como o padrão ext3 "ordenada" journalling garantias modo de arquivo de dados são gravados no disco antes de metadados, isto garante que a técnica seja a idade ou o conteúdo do arquivo novo irá persistir no disco ext4 de alocação atrasada quebra essa expectativa, porque o arquivo de escrever pode ser adiado por um longo tempo, e mudar o nome é normalmente realizada antes de conteúdo novo arquivo chegar ao disco.

Usando fsync com mais frequência para reduzir o risco para o ext4 pode levar a sanções graves desempenho em ext3 montado com a data=ordered bandeira (o padrão na maioria das distribuições Linux. Em resposta, o ext4 no Linux 2.6.30 e versões mais recentes detecta a ocorrência destes casos comuns e força os arquivos a serem atribuídos de imediato. Por um pequeno custo de performance, isso fornece semântica semelhante ao ext3 modo ordenado e aumenta a chance que tanto a versão do arquivo vai sobreviver ao Os novos patches tornaram-se parte do Linux mainline 2.6.30.

Notas[editar | editar código-fonte]

Ver também[editar | editar código-fonte]

Referências


Ligações externas[editar | editar código-fonte]

Ícone de esboço Este artigo sobre Informática é um esboço. Você pode ajudar a Wikipédia expandindo-o.