Ext4 (Português)

Status de tradução:
Esse artigo é uma tradução de
Ext4
. Data da última tradução: 2020-03-26. Você pode ajudar a sincronizar a tradução, se houver
alterações
na versão em inglês.
Artigos relacionados
Sistemas de arquivos
Ext3
De
Ext4 - Linux Kernel Newbies
(traduzido):
Ext4 é a evolução do sistema de arquivos mais usado no Linux, o Ext3. De diversas formas, o Ext4 é uma melhoria mais profunda sobre Ext3 do que o Ext3 foi sobre Ext2. O Ext3 foi principalmente sobre adicionar
journaling
ao Ext2, mas o Ext4 modifica estruturas de dados importantes do sistema de arquivos como aqueles projetados para armazenar os dados de arquivos. O resultado é um sistema de arquivos com um desenho melhorado, melhor desempenho, confiabilidade e recursos.
Criando um novo sistema de arquivos ext4
Para formatar uma partição, faça:
# mkfs.ext4 /dev/
partição
Dica
Veja
mke2fs(8)
para mais opções; edite
/etc/mke2fs.conf
para ver/configurar as opções padrões.
Se houver suporte, você pode querer habilitar suporte a 64-bits e
metadados de somas de verificação
(também conhecidos como
checksums
).
Proporção de bytes por nó-i
Traduzido de
mke2fs(8)
:
mke2fs
cria um nó-i para todos os
bytes por nó-i
de espaço no disco. Quanto maior proporção de
bytes por nó-i
, menos nós-i serão criados.
A criação de um novo arquivo, diretório, link simbólico etc. exige pelo menos um
nó-i
livre. Se a contagem de nós-i for pequena demais, nenhum arquivo pode ser criado no sistema de arquivos mesmo se ainda houver espaço restante nele.
Porque não é possível alterar a proporção de bytes por nó-i ou a contagem de nós-i após o sistema de arquivos ser criado, o
mkfs.ext4
usa, por padrão, uma proporção relativamente baixa de um nó-i a cada 16384 bytes (16 KB) para evitar essa situação.
Porém, para partições com tamanho em centenas ou milhares de  GB e tamanho de arquivo médio na faixa de megabytes, isso geralmente resulta em um número muito grande de nós-i porque o número de arquivos criados nunca alcança o número de nós-i.
Isso resulta em um desperdício de espaço em disco, porque todos arquivos nós-i não usados ocupam até 256 bytes no sistema de arquivos (isso também é definido em
/etc/mke2fs.conf
, mas não deve ser alterado). 256 * vários milhões = alguns poucos gigabytes desperdiçados em nós-i não usados.
Essa situação pode ser avaliada comparando as figuras
{I}Uso%
fornecidas pelo
df
e
df -i
:
$ df -h /home
Sist. Arq.              Tam.   Usado   Dispo.
Uso%
Montado em
/dev/mapper/lvm-home    115G    56G    59G
49%
/home
$ df -hi /home
Sist. Arq.              Inodes IUsado ILivre
IUso%
Montado em
/dev/mapper/lvm-home    1.8M    1.1K   1.8M
1%
/home
Para especificar uma proporção de bytes por nó-i diferente, você pode usar a opção
-T
tipo-de-uso
que sugere o uso esperado do sistema de arquivos usando tipos definidos em
/etc/mke2fs.conf
. Além daqueles tipos estão os
largefile
e
largefile4
maiores, que oferecem proporções mais relevantes de um nó-i a cada  1 MB e 4 MB, respectivamente. Pode-se usar da seguinte forma:
# mkfs.ext4 -T largefile /dev/
dispositivo
A proporção de bytes por nó-i também pode ser definida diretamente via a opção
-i
:
p.ex.:
use
-i 2097152
para uma proporção 2 MB e
-i 6291456
para uma proporção 6 MB.
Dica
Por outro lado, se você está configurando uma partição dedicada a hospedar milhões de arquivos pequenos, como e-mails e itens de newsgroups, você pode usar valores menores de
tipo-de-uso
como
news
(um nó-i para cada 4096 bytes) ou
small
(idem, somado a tamanhos de bloco e nó-i menores).
Atenção
Se você faz uso intenso de links simbólicos, certifique-se de manter a contagem de nós-i alta o suficiente com uma proporção baixa de bytes por nó-i, porque, apesar de não usar muito espaço, todo novo link simbólico consume um novo nó-i e, portanto, o sistema de arquivos pode esgotá-los rapidamente.
Blocos reservados
Por padrão, 5% dos blocos de sistema de arquivos serão reservados para o superusuário, para evitar fragmentação e "
permitir daemons do root continuarem a funcionar corretamente após processos sem privilégios serem impedidos de escrever no sistema de arquivos
" (traduzido de
mke2fs(8)
).
Para discos modernos de alta capacidade, isso é mais alto do que necessário se a partição for usada como um arquivo de longo prazo ou não crucial para operações do sistema (como
/home
). Veja
esse e-mail
para a opinião do desenvolvedor do ext4 Ted Ts'o sobre blocos reservados.
Geralmente é seguro reduzir a percentagem de blocos reservados para liberar espaço de disco quando a partição é:
Grande demais (por exemplo > 50G); ou
Usado como arquivo de longo prazo, isto é, onde arquivos não serão excluídos e criados com muita frequência
A opção
-m
de utilitários relacionados ao ext4 permitem especificar a percentagem de blocos reservados.
Para impedir totalmente de reservar blocos na criação do sistema de arquivos, use:
# mkfs.ext4 -m 0 /dev/
dispositivo
Para alterá-lo para 1% posteriormente, use:
# tune2fs -m 1 /dev/
dispositivo
Você pode usar
findmnt(8)
para localizar o nome do dispositivo:
$ findmnt
/o/ponto/de/montagem
Migrando de ext2/ext3 para ext4
Montando partições ext2/ext3 como ext4 sem conversão
Motivo
Um compromisso entre a conversão total para ext4 e simplesmente permanecer com ext2/ext3 é montar as partições como ext4.
Vantagens:
Compatibilidade (o sistema de arquivos pode continuar sendo montado como ext3) – Isso permite que os usuários ainda leiam o sistema de arquivos de outros sistemas operacionais sem suporte a ext4 (por exemplo, o Windows com drivers ext2/ext3)
Melhor desempenho (embora não tanto como uma partição ext4 totalmente convertida).
[1]
[2]
Desvantagens:
Menos recursos do ext4 são usados (apenas aqueles que não alteram o formato do disco, como a alocação de múltiplos blocos e a alocação atrasada)
Nota
Exceto pela novidade relativa do ext4 (que pode ser visto como um risco),
não há nenhuma desvantagem importante para esta técnica
.
Procedimento
Edite
/etc/fstab
e altere o 'type' de ext2/ext3 para ext4 para quaisquer partições você gostaria de montar como ext4.
Monte novamente as partições afetadas.
Convertendo partições ext2/ext3 para ext4
Motivo
Para experimentar os benefícios do ext4, um processo de conversão irreversível deve ser concluído.
Vantagens:
Desempenho melhorado e novos recursos.
[3]
[4]
Desvantagens:
As partições que contêm principalmente arquivos estáticos, como uma partição
/boot
, podem não se beneficiar dos novos recursos. Além disso, adicionar um journal (que está implícito ao mover uma partição ext2 para ext3/4) sempre incorre em despesas extras ao custo de desempenho.
Irreversível (as partições ext4 não podem ser "rebaixadas" para ext2/ext3. No entanto, é compatível com versões anteriores até que a extensão e outras opções exclusivas estejam habilitadas)
Procedimento
Essas instruções foram adaptadas da
documentação do Kernel
e um
tópico do BBS
.
Atenção
Se você converter o sistema de arquivos raiz do sistema, certifique-se de que o initramfs reserva ('fallback') está disponível na reinicialização. Alternativamente, adicione
ext4
de acordo com
Mkinitcpio#MODULES
e
gere novamente o initramfs
antes de iniciar.
Se você decidir converter uma partição
/boot
separada, certifique-se que o
gerenciador de boot
oferece inicialização do ext4.
Nas etapas a seguir,
/dev/sdxX
denota o caminho para a partição a ser convertida, tal como
/dev/sda1
.
Faça backup
de todos os dados em quaisquer partições ext3 que serão convertidas para ext4. Um pacote útil, especialmente para partições raiz, é o
clonezilla
.
Edite
/etc/fstab
e altere o 'type' de ext3 para ext4 para quaisquer partições que serão convertidos para ext4.
Inicialize uma mídia
Live
(se necessário). O processo de conversão com
e2fsprogs
deve ser feito quando a unidade não está montada. Se estiver convertendo uma partição raiz, a forma mais simples de alcançar isso é inicializar de alguma outra mídia
Live
.
Certifique-se que a partição
não
está montada.
Se você quiser converter uma partição ext2, a primeira etapa de conversão é adicionar um
journal
executando
tune2fs -j /dev/sdxX
como root; fazendo dela uma partição ext3.
Execute
tune2fs -O extent,uninit_bg,dir_index /dev/sdxX
como root. Esse comando converte o sistema de arquivos ext3 para ext4 (irreversivelmente).
Execute
fsck -f /dev/sdxX
como root.
Esta etapa é necessária, do contrário o sistema de arquivos
ficará ilegível
. A execução de
fsck
é necessária para retornar o sistema de arquivos para um estado consistente. Ele vai encontrar erros de soma de verificação nos descritores de grupo - isso é esperado. A opção
-f
pede que o
fsck
verifique mesmo se o sistema de arquivos parecer limpo. A opção
-p
pode ser usada sobre a "reparação automática" (do contrário, o usuário será solicitado a intervir em cada erro).
Recomendado: monte a partição e execute
e4defrag -c -v /dev/sdxX
como root.
Mesmo que o sistema de arquivos agora esteja convertido em ext4, todos os arquivos que foram escritos antes da conversão ainda não aproveitam a opção de extensão do ext4, que melhorará o desempenho de arquivos grandes e reduzirá a fragmentação e o tempo de verificação do sistema de arquivos. Para aproveitar plenamente o ext4, todos os arquivos teriam que ser reescritos no disco. Use
e4defrag
para cuidar desse problema.
Reinicie.
Melhorando o desempenho
Desabilitando atualização de tempo de acesso
O sistema de arquivos
ext4
registra informações sobre quando um arquivo foi acessado pela última vez e há um custo associado ao registro dele. Com a opção
noatime
, os timestamps de acesso no sistema de arquivos não são atualizados.
/etc/fstab
/dev/sda5    /    ext4    defaults,
noatime
0    1
Fazer isso quebra aplicativos que dependem do tempo de acesso, veja
fstab#Opções atime
para soluções possíveis.
Aumentando o intervalo de commit
O intervalo de sincronização para dados e metadados pode ser aumentado, proporcionando um maior atraso de tempo para a opção
commit
.
O 5 segundos padrão significa que, se a energia for perdida, será perdido tanto quanto os últimos 5 segundos de trabalho.
Isso força uma sincronia completa de todos os dados/journals para mídia física a cada 5 segundos. O sistema de arquivos não será danificado, graças ao registro no journaling.
O seguinte
fstab
ilustra o uso de
commit
:
/etc/fstab
/dev/sda5    /    ext4   defaults,noatime,
commit=60
0    1
Desligando barreiras
Atenção
Desabilitar as barreiras para discos sem cache com respaldo de bateria não é recomendado e pode levar à corrupção severa do sistema de arquivos e perda de dados.
Ext4
permite barreiras de gravação por padrão. Isso garante que os metadados do sistema de arquivos sejam corretamente escritos e ordenados no disco, mesmo quando os caches de gravação perdem energia. Isso ocorre com um custo de desempenho especialmente para aplicativos que usam
fsync
intensamente ou criam e excluem muitos pequenos arquivos. Para discos que tenham um cache de gravação com respaldo de bateria de uma forma ou de outra, desabilitar as barreiras pode melhorar o desempenho com segurança.
Para desligar as barreiras, adicione a opção
barrier=0
ao sistema de arquivos desejado. Por exemplo:
/etc/fstab
/dev/sda5    /    ext4    noatime,
barrier=0
0    1
Desabilitando journaling
Atenção
Usar um sistema de arquivos sem o journal pode resultar em perda de dados em caso de desmontagem repentina, como falha de energia ou bloqueio do kernel.
Desabilitar o journal do
ext4
pode ser feito com o seguinte comando em um disco desmontado:
# tune2fs -O "^has_journal" /dev/sdXN
Use journal externo para otimizar o desempenho
Para aqueles com preocupações sobre integridade e desempenho de dados, o registro no jornal pode ser significativamente acelerado com a opção de montagem
journal_async_commit
. Note que
não funciona
com o padrão balanceado de
data=ordered
, então isso é recomendado apenas quando o sistema de arquivos já estiver usando
data=journal
cautelosamente.
Você pode formatar um dispositivo dedicado para o journal com
mke2fs -O journal_dev /dev/journal_device
. Use
tune2fs -J device=/dev/journal_device /dev/ext4_fs
para atribuir o journal a um dispositivo existente ou substitua
tune2fs
por
mkfs.ext4
se você estiver criando um novo sistema de arquivos.
Dicas e truques
Usando criptografia baseada em arquivos
Desde o Linux 4.1, o ext4 possui suporte nativo a criptografia de arquivos — consulte o artigo
fscrypt
. A criptografia é aplicada no nível do diretório, e diretórios diferentes podem usar chaves de criptografia diferentes. Isso é diferente de
dm-crypt
, que é a criptografia em nível de dispositivo de bloco, e de
eCryptfs
, que é um sistema de arquivos criptográficos empilhados.
Habilitando somas de verificação de metadados
Quando um sistema de arquivos foi criado com o
e2fsprogs
1.44 ou posterior, as somas de verificação de metadados já devem estar ativadas por padrão. Os sistemas de arquivos existentes podem ser convertidos para permitir o suporte à soma de verificação de metadados.
Se o seu CPU tem suporte a SSE 4.2, certifique-se que o
módulo de kernel
crc32c_intel
esteja carregado para habilitar o algoritmo CRC32C acelerado por hardware
[5]
. Caso contrário, você precisará carregar o módulo
crc32c_generic
.
Para ler mais sobre metadados de somas de verificação, veja o
wiki do ext4
.
Dica
Use
dumpe2fs
para verificar os recursos que estão habilitados no sistema de arquivos:
# dumpe2fs
/dev/caminho/para/disco
Novo sistema de arquivos
Para habilitar o suporte a somas de verificação de metadados ext4 ao criar um novo sistema de arquivos.
# mkfs.ext4 -O metadata_csum
/dev/caminho/para/disco
Converter arquivo de sistema existente
Nota
O sistema de arquivos não deve estar montado.
Primeiro, a partição precisa ser verificada e otimizada usando
e2fsck
:
# e2fsck -Df
/dev/caminho/para/disco
Converta o sistema de arquivos para 64 bits:
# resize2fs -b
/dev/caminho/para/disco
Finalmente, habilite suporte a somas de verificação:
# tune2fs -O metadata_csum
/dev/caminho/para/disco
Veja também
Wiki oficial do Ext4
Layout de disco com Ext4
descrito no seu wiki
Criptografia no Ext4
- artigo do LWN
Commits do kernel para criptografia no ext4
[6]
[7]
Changelog do e2fsprogs
Somas de verificação de metadados do Ext4