ext4
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 |
ext4 ou fourth extended filesystem (em português: quarto sistema de arquivos estendido) é um sistema de arquivos de registro para Linux, desenvolvido para ser o sucessor do ext3.
História
[editar | editar código-fonte]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.
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]- ANEESH KUMAR K.V, et al. Ext4 block and inode allocator improvements. Proceedings of the Linux Symposium. Ottawa, Canada. 2008. Disponível em <http://ols.fedoraproject.org/OLS/Reprints-2008/kumar-reprint.pdf>. Acesso em 08 mar. 2009.
- LINUX. Código-fonte do núcleo 2.6.28.8. 2009. Disponível em <http://www.kernel.org/pub/linux/kernel/v2.6/>. Acesso em 16 mar. 2009.
- MATHUR, Avantika, et al. The new ext4 filesystem: current status and future plans. Proceedings of the Linux Symposium—Ottawa, Canada. 2007. Disponível em <https://ols2006.108.redhat.com/2007/Reprints/mathur-Reprint.pdf>. Acesso em 02 out. 2007.[ligação inativa]
Ver também
[editar | editar código-fonte]Referências
- ↑ Proposta do Ext3 http://lkml.indiana.edu/hypermail/linux/kernel/0606.3/2205.html
- ↑ Extensão do Ext3 http://lkml.indiana.edu/hypermail/linux/kernel/0606.1/0268.html
- ↑ a b Índice do Kernel versão 2.6 http://www.kernel.org/pub/linux/kernel/v2.6/
- ↑ Proposal and plan for ext2/3 future development work Arquivado em 31 de agosto de 2006, no Wayback Machine.
- ↑ Extents and 48bit ext3 Arquivado em 21 de julho de 2006, no Wayback Machine.
- ↑ Página do Kernel Newbies http://kernelnewbies.org/Ext4#head-97cbed179e6bcc48e47e645e06b95205ea832a68
- ↑ Wiki do Ext4 https://ext4.wiki.kernel.org/index.php/Ext4_Howto#Bigger_File_System_and_File_Sizes
Ligações externas
[editar | editar código-fonte]- (em inglês) EXT3 Filesystem Extents/64bit Project
- (em inglês) Migrating to ext4
- «ext4 - wiki.kernel.org» (em inglês)
- «Real World Benchmarks Of The EXT4 File-System @ phoronix.com» (em inglês)
- «Ext4 @ kernelnewbies.org» (em inglês)
- «ext4 File System: Introduction and Benchmarks» (em inglês)
- Conhecendo o novo Ext4 @ guiadohardware.net