Redimensione o sistema de arquivos btrfs para o tamanho mínimo em uma única etapa

1

Como eu redimensiono um sistema de arquivos btrfs para o tamanho mínimo possível em uma única etapa?

Eu quero apenas dd da menor quantidade possível de dados e quero usar dd , pois btrfs send é progressivamente mais lento quanto mais instantâneos houver.

btrfs filesystem resize tem um argumento max , mas nenhum argumento min .

Se eu tentar redimensionar mais do que o espaço livre disponível, recebo uma mensagem como:

ERROR: unable to resize '/media/backup-alt': No space left on device

Eu tenho progressivamente redimensionado para baixo em etapas de tamanho decrescente (por exemplo, passando argumentos -128G -64G , -32G , ...), mas essa é uma convergência demorada em uma solução.

Existe uma maneira de reduzir ao mínimo em uma única etapa?

    
por Tom Hale 17.02.2018 / 11:29

1 resposta

2

A melhor solução que encontrei até agora é obter o espaço livre mínimo de:

sudo btrfs filesystem usage -b /mountpoint

( -b será impresso em bytes)

Em seguida, redimensione por esse valor:

sudo btrfs filesystem resize -71890542592 /mountpoint

Onde 71890542592 é o espaço livre mínimo em bytes.

Como alternativa, se houver uma grande diferença entre o min free e o unallocated, você pode optar por usar (não alocado * 0,9), pois o redimensionamento pelos bytes não alocados exatos parece falhar.

Você pode reduzir repetidamente em pequenas quantidades até que o redimensionamento falhe:

while sudo btrfs filesystem resize -200M /mountpoint; do true; done

Este não é exatamente um único passo, mas pelo menos na maior parte automatizado. O loop por si só pode ser um único passo, mas provavelmente levará mais tempo fazendo pequenos redimensionamentos incrementais em vez de encolher inicialmente por um grande bloco.

    
por 17.02.2018 / 11:29