Como verificar (simular), quanto espaço será liberado após a remoção de um subvolume btrfs?


9

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.

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

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

Preciso de uma maneira de ponderar a quantidade de dados que serão liberados após a remoção de cada backup com a idade do instantâneo antigo e a importância do seu pool de backup. Faltam as informações anteriores.

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

Alguém pode me ajudar? Devo postar esta mensagem no linux-btrfs@vger.kernel.org?

Respostas:


6

Como demonstrado aqui , isso é realmente bastante simples de fazer.

Primeiro, ative as cotas btrfs:

# btrfs quota enable /btrfs_subvolume

E então execute:

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

O qual no Btrfs v3.18.2 mostra isso:

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

O 0/260 é o ID do subvolume e excl são os dados exclusivos no subvolume. Se você excluir o subvolume, é quanto espaço você liberará.

Edit: De acordo com este link , esta parece ser a maneira oficial recomendada de fazer isso.


O Pro Backup apontou (em uma edição sugerida) que vale a pena verificar os problemas conhecidos com o suporte de cota .
Stephen Kitt

0

btrfsQuota.pytorna a saída btrfs qgroup showmais legível, substituindo IDs de subvol pelos nomes dos subvol, 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

1
Ele não funciona com a versão padrão do btrfs-tools do Ubuntu 14.04. Você precisa instalar um mais novo, e então tudo é ok
Adam Ryczkowski

@AdamRyczkowski Agora, estou usando a versão Python 3 desse script e funciona bem.
Geremia
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.