btrfs ALTA atribuição de metadados

1

Esta questão é quase a mesma que btrfs: ENORMES metadados alocados , exceto pela magnitude do tamanho dos dados na partição, e uma nova versão do kernel Linux 4.4.

Estou tentando fazer um backup de imagem completa de uma partição btrfs. btrfs fil usage mostra:

Overall:
    Device size:        4.50GiB
    Device allocated:   3.17GiB
    Device unallocated: 1.33GiB
    Device missing:       0.00B
    Used:               1.70GiB
    Free (estimated):   1.58GiB       (min: 936.52MiB)
    Data ratio:            1.00
    Metadata ratio:        2.00
    Global reserve:   512.00MiB       (used: 0.00B)

Data,single: Size:1.85GiB, Used:1.61GiB
    /dev/vda2      1.85GiB

Metadata,DUP: Size:640.00MiB, Used:49.38MiB
    /dev/vda2      1.25GiB

System,DUP: Size:32.00MiB, Used:16.00KiB
    /dev/vda2     64.00MiB

Descobri que os metadados consumiram até 1,25GiB, enquanto o tamanho real dos metadados é menor que 100MiB. Como você pode ver, o volume total do disco é de 4.5GiB. Esse desperdício de espaço não é aceitável.

Eu tentei executar btrfs balance start -m e btrfs balance start -musage=x , onde x varia de 0 a 50, mas nenhum deles ajudou.

Existe alguma maneira de forçar o btrfs a reduzir o tamanho da alocação dos metadados? Ou existe alguma maneira de redimensionar uma partição btrfs perto do tamanho que ela realmente levou?

    
por Ben 17.02.2018 / 16:17

1 resposta

0

Em primeiro lugar, o BTRFS aloca metadados (e dados) um pedaço no momento. Cada pedaço é 1GB. Mesmo que um pedaço de metadados seja alocado, isso não significa que este pedaço seja totalmente utilizado. Tenha em mente que o BTRFS também armazena arquivos menores nos metadados, o que pode contribuir para o uso de metadados "alto".

Por padrão, o BTRFS também duplica os metadados para aumentar a chance de recuperação do sistema de arquivos em caso de corrupção. Os dados não são duplicados.

Você pode reduzir o uso de metadados reequilibrando seus metadados para um único perfil, ao custo da chance de recuperação, o que pode ser desejável dependendo do seu caso de uso. Você faz isso assim:

btrfs balance start -dconvert=single /mountpoint

Você também pode procurar grupos de blocos mistos que farão com que o BTRFS não aloque blocos de metadados separados, mas armazene dados e metadados nos mesmos blocos.

Também vale ressaltar que quando você executa o balanceamento com o filtro de uso, o que você está dizendo é apenas os pedaços de balanceamento que têm um fator de utilização menor que X.

    
por 18.03.2018 / 20:23