Por que o zfs lista a saída do tamanho real de um instantâneo?

1

Portanto, estou com pouco espaço em um servidor de backup baseado em zfs e excluí alguns backups antigos, mas o espaço no sistema de arquivos não estava liberando mais tarde.

Primeiro palpite? Deve haver alguns instantâneos antigos por aí. Então eu corri:

zfs list -t snapshot | grep "pool/backups@"

E realmente houve alguns:

NAME                                USED    AVAIL   MOUNTPOINT
pool/[email protected]  4.81M   0       0
pool/[email protected]  270K    0       0
pool/[email protected]  270K    0       0
pool/[email protected]  270K    0       0
pool/[email protected]  270K    0       0
pool/[email protected]  270K    0       0
pool/[email protected]  270K    0       0
pool/[email protected]  270K    0       0

Mas, embora eu esperasse ver um instantâneo que tivesse um USED size do ~ 400G que acabei de excluir, não há nenhum instantâneo com um tamanho digno de nota.

Eu passei algumas horas tentando encontrar o problema em outro lugar, quando finalmente corri:

zfs destroy -nv pool/backups@

e a saída surpreendente foi:

will destroy pool/[email protected]
will destroy pool/[email protected]
will destroy pool/[email protected]
will destroy pool/[email protected]
will destroy pool/[email protected]
will destroy pool/[email protected]
will destroy pool/[email protected]
will destroy pool/[email protected]
will reclaim 421G

Então, a minha pergunta aqui é: Por que o zfs list não exibe o tamanho real dos instantâneos e o que eu deveria ter feito de forma diferente para obter o espaço real consumido pelos instantâneos em primeiro lugar?

    
por s1lv3r 30.05.2016 / 14:51

1 resposta

3

Parece que é um erro na sua versão do comando zfs . Talvez verifique os relatórios de bugs do FreeBSD.

Quase certamente é apenas um erro de saída / exibição (acho que você notaria um comportamento seriamente estranho se fosse um problema mais profundo com a contabilização de armazenamento)

zfsonlinux 0.6.5.6 no meu sistema exibe corretamente a quantidade de espaço usado por esse instantâneo no Coluna USED:

# zfs list -t snapshot -r backup/hosts/kali
NAME                           USED  AVAIL  REFER  MOUNTPOINT
[...deleted...]
backup/hosts/kali@2016-05-24   526M      -  44.1G  -
backup/hosts/kali@2016-05-25   162M      -  44.1G  -
backup/hosts/kali@2016-05-26   137M      -  44.1G  -
backup/hosts/kali@2016-05-27   116M      -  44.1G  -
backup/hosts/kali@2016-05-28   195M      -  44.0G  -
backup/hosts/kali@2016-05-29   528M      -  44.4G  -
backup/hosts/kali@2016-05-30      0      -  44.5G  -

O sistema de arquivos backup/hosts/kali se parece com isso:

# zfs list backup/hosts/kali
NAME                USED  AVAIL  REFER  MOUNTPOINT
backup/hosts/kali  48.5G  4.06T  44.5G  /backup/hosts/kali

Consulte man zfs , pesquise por Native Properties e, em seguida, referenced e / ou used para obter mais informações sobre exatamente o que esses campos significam para sistemas de arquivos e para instantâneos.

Veja também a opção -o de zfs list . Você pode usar isso para contornar o erro e obter exatamente a saída desejada.

por exemplo,

# zfs list -o space backup/hosts/kali
NAME               AVAIL   USED  USEDSNAP  USEDDS  USEDREFRESERV  USEDCHILD
backup/hosts/kali  4.06T  48.5G     4.03G   44.5G              0          0

BTW, não há necessidade de canalizar zfs list... para grep como no comando zfs list -t snapshot | grep "pool/backups@" . Experimente zfs list -t snapshot -r pool/backups .

    
por 30.05.2016 / 15:26

Tags