b'\n_START_ARTICLE_\nExt4\n_START_SECTION_\nHist\xc3\xb3ria\n_START_PARAGRAPH_\nEm 11 de Outubro de 2008, os patches que marcam o ext4 como c\xc3\xb3digos est\xc3\xa1veis foram mesclados em reposit\xc3\xb3rios de c\xc3\xb3digo de fonte do Linux 2.6.28, que denota o fim da fase de desenvolvimento e recomenda a ado\xc3\xa7\xc3\xa3o do ext4._NEWLINE_Mathur et al [2007], no congresso "Ottawa Linux Symposium" de 2007, descreveram as principais caracter\xc3\xadsticas a serem implementadas no Ext4, e mostraram a raz\xc3\xa3o de n\xc3\xa3o desenvolverem um sistema de arquivos inteiramente novo pela compatibilidade com o Ext3 e por causa de sua base j\xc3\xa1 instalada._NEWLINE_Em 28 de junho de 2006, Theodore Y. "Ted" Ts\'o prop\xc3\xb4s a bifurca\xc3\xa7\xc3\xa3o (fork) do desenvolvimento do Ext3. Esse passo foi necess\xc3\xa1rio para atender \xc3\xa0s discuss\xc3\xb5es em torno da evolu\xc3\xa7\xc3\xa3o do Ext3. Mingming Cao, dentre outros, citou a limita\xc3\xa7\xc3\xa3o desse sistema de arquivos por causa do uso de vari\xc3\xa1veis de 32 bits e indicou que j\xc3\xa1 havia esfor\xc3\xa7os para aumentar o tamanho daquelas vari\xc3\xa1veis para 48 bits. O Ext4 foi inclu\xc3\xaddo (marcado como "em desenvolvimento") no Linux 2.6.19._NEWLINE_O Ext3 suporta sistemas de arquivos com tamanho menor que 16 TiB, usando blocos de 4 KiB (2\xc2\xb9\xc2\xb2 bytes). Esse limite \xc3\xa9 definido por uma vari\xc3\xa1vel de 32 bits no superbloco, o valor m\xc3\xa1ximo suportado exato \xc3\xa9 de (2\xc2\xb3\xc2\xb2-1) * 2\xc2\xb9\xc2\xb2 bytes. O tamanho de arquivo \xc3\xa9 limitado por uma vari\xc3\xa1vel de 32 bits no n\xc3\xb3-i, um contador de setores, da\xc3\xad a limita\xc3\xa7\xc3\xa3o em ~2 TiB ((2\xc2\xb3\xc2\xb2 - 1) * 512 bytes). [MATHUR et al, 2007]_NEWLINE_A primeira provid\xc3\xaancia para aumentar aqueles valores foram:_NEWLINE_(i) aumentar o contador de blocos no superbloco para 64 bits, isso permitiria um sistema de arquivos com ~64 ZiB (~2\xe2\x81\xb7\xe2\x81\xb6 bytes = ~2\xe2\x81\xb6\xe2\x81\xb4 * 2\xc2\xb9\xc2\xb2 bytes)._NEWLINE_(ii) alterar a contagem de setores para blocos no n\xc3\xb3-i, permitindo arquivos com at\xc3\xa9 ~16 TiB ((2\xc2\xb3\xc2\xb2-1) * 2\xc2\xb9\xc2\xb2 bytes)._NEWLINE_Entretanto, o limite para o tamanho do volume \xc3\xa9 determinado pela aloca\xc3\xa7\xc3\xa3o de espa\xc3\xa7o, que no Ext4 \xc3\xa9 definido por extens\xc3\xb5es, que usam 48 bits [MATHUR et al, 2007], o limite para o volume \xc3\xa9 de ~1 EiB ((2\xe2\x81\xb4\xe2\x81\xb8-1) * 2\xc2\xb9\xc2\xb2 bytes)._NEWLINE_A partir do Linux 2.6.25, em 2008, foram adicionados 16 bits ao contador de blocos do arquivo, no n\xc3\xb3-i. Assim um arquivo no Ext4 tem um limite atual de ~1 EiB, o mesmo do volume.\n_START_SECTION_\nFuncionalidades\n_START_PARAGRAPH_\nAs novas funcionalidades propostas s\xc3\xa3o: aloca\xc3\xa7\xc3\xa3o tardia (delayed allocation); marcas temporais com maior resolu\xc3\xa7\xc3\xa3o (nanossegundos); verifica\xc3\xa7\xc3\xa3o de integridade do journal (journal checksums); suporte para tamanhos maiores de volumes e arquivos._NEWLINE_mais extens\xc3\xb5es s\xc3\xa3o introduzidas, compatibilidade com vers\xc3\xb5es anteriores, pr\xc3\xa9 aloca\xc3\xa7\xc3\xa3o, mais r\xc3\xa1pido sistema de arquivo de verifica\xc3\xa7\xc3\xa3o, alocador multibloco, melhor timestamps._NEWLINE_Deixa de existir um limite de sub-diret\xc3\xb3rios no ext4._NEWLINE_Aloca\xc3\xa7\xc3\xa3o tardia_NEWLINE_Ext4 usa uma t\xc3\xa9cnica de execu\xc3\xa7\xc3\xa3o do sistema de arquivos chamado atribuir-on-flush, tamb\xc3\xa9m conhecida como a atribui\xc3\xa7\xc3\xa3o de atraso. Isso melhora o desempenho e reduz a fragmenta\xc3\xa7\xc3\xa3o, melhorando a aloca\xc3\xa7\xc3\xa3o de blocos decis\xc3\xb5es com base no tamanho do arquivo._NEWLINE_Jornal checksumming_NEWLINE_Ext4 usa checksums no jornal para melhorar a confiabilidade, j\xc3\xa1 que o jornal \xc3\xa9 um dos arquivos mais utilizados do disco. Esta caracter\xc3\xadstica tem um lado ben\xc3\xa9fico, que pode evitar com seguran\xc3\xa7a um disco I / O esperar durante o processo di\xc3\xa1rio, melhorando o desempenho ligeiramente._NEWLINE_Suporte para tamanhos maiores de volumes e arquivos_NEWLINE_O sistema de arquivos ext4 pode suportar volumes com tamanho at\xc3\xa9 1 exabyte e arquivos com tamanho at\xc3\xa9 16 terabytes . O atual e2fsprogs s\xc3\xb3 pode tratar um sistema de arquivos de 16 TB._NEWLINE_Extens\xc3\xb5es_NEWLINE_As extens\xc3\xb5es s\xc3\xa3o introduzidas para substituir o tradicional bloco de mapeamento de esquema usado por arquivos ext2/3.Uma extens\xc3\xa3o \xc3\xa9 um conjunto de blocos cont\xc3\xadguos f\xc3\xadsico, melhorando o desempenho de muitos arquivos e redu\xc3\xa7\xc3\xa3o de fragmenta\xc3\xa7\xc3\xa3o. Uma \xc3\xbanica extens\xc3\xa3o em ext4 pode mapear at\xc3\xa9 128MB de espa\xc3\xa7o cont\xc3\xadguo com um bloco de 4 KB de tamanho. Quando h\xc3\xa1 mais de 4 extens\xc3\xb5es em um arquivo, o resto das extens\xc3\xb5es s\xc3\xa3o indexadas em um three._NEWLINE_Compatibilidade com vers\xc3\xb5es anteriores_NEWLINE_O sistema de arquivos ext4 \xc3\xa9 compat\xc3\xadvel com o ext3 e ext2_NEWLINE_Isto ir\xc3\xa1 melhorar o desempenho j\xc3\xa1 ligeiramente, porque alguns novos recursos do ext4 tamb\xc3\xa9m pode ser usado com ext3 e ext2, tal como o novo algoritmo de aloca\xc3\xa7\xc3\xa3o de blocos._NEWLINE_Pr\xc3\xa9 aloca\xc3\xa7\xc3\xa3o_NEWLINE_O sistema de arquivos ext4 permite pr\xc3\xa9-aloca\xc3\xa7\xc3\xa3o de espa\xc3\xa7o em disco para um arquivo._NEWLINE_Um novo fallocate () chamada de sistema foi adicionado ao Linux para uso de sistemas de arquivos, incluindo ext4 e XFS, que t\xc3\xaam essa capacidade._NEWLINE_O mais r\xc3\xa1pido sistema de arquivos de verifica\xc3\xa7\xc3\xa3o_NEWLINE_No ext4, bloco alocado grupos e sec\xc3\xa7\xc3\xb5es da tabela de inode s\xc3\xa3o marcados como tal. Isso permite que e2fsck para ignor\xc3\xa1-los completamente em uma verifica\xc3\xa7\xc3\xa3o e reduz o tempo necess\xc3\xa1rio para verificar o sistema de arquivos do tamanho do ext4 \xc3\xa9 constru\xc3\xadda para suportar. Esse recurso \xc3\xa9 implementado na vers\xc3\xa3o 2.6.24 do Linux._NEWLINE_Alocador multibloco_NEWLINE_O alocador multiblock \xc3\xa9 usado quando a atribui\xc3\xa7\xc3\xa3o atrasada \xc3\xa9 ativado por um sistema de arquivos, ou quando os arquivos s\xc3\xa3o abertos no modo O_DIRECT. Esse recurso n\xc3\xa3o afeta o formato de disco._NEWLINE_Melhora de carimbos (timestamps)_NEWLINE_Ext4 tamb\xc3\xa9m adiciona um suporte para a data-criado timestamps. Mas, como Theodore Ts\'o salienta, ao mesmo tempo que \xc3\xa9 f\xc3\xa1cil de adicionar um campo data de cria\xc3\xa7\xc3\xa3o extra no inode (portanto, tecnicamente permitindo suporte para data criada timestamps em ext4), \xc3\xa9 mais dif\xc3\xadcil de modificar ou adicionar o necess\xc3\xa1rio sistema de chamadas, como stat () (que provavelmente exigiria uma nova vers\xc3\xa3o), e as v\xc3\xa1rias bibliotecas que dependem deles (como glibc). Estas altera\xc3\xa7\xc3\xb5es exigem a coordena\xc3\xa7\xc3\xa3o de v\xc3\xa1rios projetos. Portanto, mesmo se os desenvolvedores implementarem o suporte inicial para a data de cria\xc3\xa7\xc3\xa3o de carimbos, esse recurso n\xc3\xa3o estar\xc3\xa1 dispon\xc3\xadvel nesse momento para programas de usu\xc3\xa1rio.\n_START_SECTION_\nDesvantagens\n_START_PARAGRAPH_\nAloca\xc3\xa7\xc3\xa3o tardia e potencial perda de dados_NEWLINE_Como a "aloca\xc3\xa7\xc3\xa3o 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\xc3\xa3o 2.6.30 do Linux, detecta automaticamente esses casos e reverte para o comportamento antigo._NEWLINE_O cen\xc3\xa1rio t\xc3\xadpico em que isso pode ocorrer \xc3\xa9 um programa que substitui o conte\xc3\xbado de um arquivo sem for\xc3\xa7ar uma grava\xc3\xa7\xc3\xa3o para o disco com fsync. Existem duas maneiras comuns de substituir o conte\xc3\xbado de um arquivo em sistemas Unix:_NEWLINE_open ("file", O_TRUNC), write (fd, data); close (fd);_NEWLINE_Neste caso, um arquivo existente \xc3\xa9 truncado no momento da abertura (devido a O_TRUNC flag), ent\xc3\xa3o os novos dados s\xc3\xa3o gravados. Desde a grava\xc3\xa7\xc3\xa3o pode demorar algum tempo, h\xc3\xa1 uma oportunidade de perder o conte\xc3\xbado mesmo com ext3, mas geralmente muito pequena. No entanto, porque o ext4 pode atrasar a atribui\xc3\xa7\xc3\xa3o arquivo de dados por um longo tempo, essa oportunidade \xc3\xa9 muito maior._NEWLINE_open ("File.New"); write (fd, dados); close (fd); rename ("File.New", "arquivo");_NEWLINE_Um novo arquivo tempor\xc3\xa1rio ("File.New") \xc3\xa9 criado, inicialmente, que cont\xc3\xa9m o novo conte\xc3\xbado. Em seguida, o novo arquivo \xc3\xa9 renomeado sobre o antigo. A troca de arquivos pela "chamada" renomear \xc3\xa9 garantido para ser at\xc3\xb4mica por POSIX normas - ou seja, tanto o antigo arquivo continua, ou \xc3\xa9 substitu\xc3\xaddo por um novo. Como o padr\xc3\xa3o ext3 "ordenada" journalling garantias modo de arquivo de dados s\xc3\xa3o gravados no disco antes de metadados, isto garante que a t\xc3\xa9cnica seja a idade ou o conte\xc3\xbado do arquivo novo ir\xc3\xa1 persistir no disco ext4 de aloca\xc3\xa7\xc3\xa3o atrasada quebra essa expectativa, porque o arquivo de escrever pode ser adiado por um longo tempo, e mudar o nome \xc3\xa9 normalmente realizada antes de conte\xc3\xbado novo arquivo chegar ao disco._NEWLINE_Usando fsync com mais frequ\xc3\xaancia para reduzir o risco para o ext4 pode levar a san\xc3\xa7\xc3\xb5es graves desempenho em ext3 montado com a data=ordered bandeira (o padr\xc3\xa3o na maioria das distribui\xc3\xa7\xc3\xb5es Linux. Em resposta, o ext4 no Linux 2.6.30 e vers\xc3\xb5es mais recentes detecta a ocorr\xc3\xaancia destes casos comuns e for\xc3\xa7a os arquivos a serem atribu\xc3\xaddos de imediato. Por um pequeno custo de performance, isso fornece sem\xc3\xa2ntica semelhante ao ext3 modo ordenado e aumenta a chance que tanto a vers\xc3\xa3o do arquivo vai sobreviver ao Os novos patches tornaram-se parte do Linux mainline 2.6.30.'