Jump to content

# Ext4 (Português)

From ArchWiki
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

1. Edite `/etc/fstab` e altere o 'type' de ext2/ext3 para ext4 para quaisquer partições você gostaria de montar como ext4.
2. 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`.

1. 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.
2. Edite `/etc/fstab` e altere o 'type' de ext3 para ext4 para quaisquer partições que serão convertidos para ext4.
3. 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.
4. Certifique-se que a partição não está montada.
5. 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.
6. Execute `tune2fs -O extent,uninit_bg,dir_index /dev/sdxX` como root. Esse comando converte o sistema de arquivos ext3 para ext4 (irreversivelmente).
7. 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).
8. 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.
9. 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

Category:

- File systems (Português)

Ext4 (Português)
Add topic