Como verificar (simular), quanto espaço será liberado depois que eu remover um subvolume btrfs?

7

A questão não é trivial. BTRFS é um sistema de arquivos COW e um objeto armazenado no disco rígido pode ser referenciado por muitos arquivos.

Eu uso instantâneos BTRFS como parte de uma solução de backup no meu servidor de produção. Desta forma, eu tenho um histórico navegável de um determinado subvolume, com espaço eficiente (eu uso uma modificação do SnapBtr ).

Eu tenho vários subvolumes btrfs independentes para diferentes propósitos e um esquema de backup para cada um. Quando o espaço livre está acabando, posso obter o snapshot de backup mais desnecessário de cada pool de backup com base no algoritmo logarítmico inteligente de custo de tempo de SnapBtr .

Eu preciso avaliar o volume de dados que serão liberados depois que eu remover cada backup com a idade do instantâneo antigo e a importância de seu pool de backup. Eu estou sentindo falta da informação anterior.

Eu entendo que o processo de cálculo do espaço livre no BTRFS não é nem trivial nem rápido. Preciso de algo que simule a exclusão do subvolume para obter o tamanho do espaço que poderia ser liberado.

Alguém pode me ajudar? Devo postar esta mensagem para o [email protected] ?

    
por Adam Ryczkowski 05.03.2015 / 09:56

2 respostas

6

Conforme demonstrado aqui , isso é bastante simples de fazer.

Primeiro, ative as cotas do btrfs:

# btrfs quota enable /btrfs_subvolume

E, em seguida, execute:

# btrfs qgroup show /btrfs_subvolume
OR
# btrfs qgroup show -f /btrfs_subvolume

Que no Btrfs v3.18.2 mostra isso:

qgroupid        rfer       excl
--------        ----       ----
0/260        1.09GiB    1.09GiB

0/260 é o ID do subvolume e o excl é o dado exclusivo no subvolume. Se você excluir o subvolume, esse será o espaço que você liberará.

Editar: de acordo com este link , essa parece ser a maneira recomendada oficialmente de fazer isso.

    
por 14.03.2015 / 03:05
0

btrfsQuota.py faz a saída de btrfs qgroup show mais legível, substituindo IDs de subvol com os nomes dos subvols, por exemplo:

subvol                                      group         total    unshared
-------------------------------------------------------------------------------
test/a                                      0/970        20.05M       0.05M
test/b                                      0/971        20.05M      10.05M
test/c                                      0/972        30.05M      10.05M
test/d                                      0/973        30.05M       0.05M
test/e                                      0/974        30.05M      10.05M
    
por 02.06.2016 / 23:58