FreeBSD: Como saber o tamanho real do arquivo no zfs com a compressão ativada?

17

Estou usando o zfs no meu FreeBSD 9.0 x64 e estou muito feliz com isso, mas acho difícil contar o tamanho real do diretório, não compactado.

Certamente posso percorrer o diretório e contar todos os tamanhos de arquivo com ls, mas esperaria alguma chave extra para esse fim.

Então, como posso saber o tamanho do diretório para o diretório colocado no zfs com a compactação ativada ?

Agradecemos antecipadamente o conselho. Simplesmente não me lembro de que não existe uma maneira 'simples', sem 'find ./ -type d -exec ls -l' {} '\; | awk ... '!

Alexander
fonte
4
Veja esta resposta para algumas soluções: serverfault.com/questions/254013/file-size-with-zfs-compression
Zanchey
3
Se estiver usando a desduplicação, qual seria o tamanho "real"?
21712 ryandenki

Respostas:

22

Use o ducom sua -Abandeira:

root@pg78:/usr/local/pgsql/data/base/218204 # du -A -h 221350.219
1.0G    221350.219
root@pg78:/usr/local/pgsql/data/base/218204 # du -h 221350.219
501M    221350.219

Muito conveniente. Ele até trabalha com -dbondade recursiva:

root@pg78:/usr/local/pgsql/data/base # du -h -c -d0 .
387G    .
387G    total
root@pg78:/usr/local/pgsql/data/base # du  -A -h -c -d0 .
518G    .
518G    total
Sean
fonte
Solução realmente boa! E o melhor que existe lá "direto da caixa"!
Alexander
5
Apenas uma observação, se a sua versão do dunão tiver a opção -A, -A é para "tamanho aparente", que está disponível via --apparent-size. O Ubuntu 16.04 / du 8.25 não parece ter -A, então parece que alguém pode ter esse problema.
21717 Jim Rubenstein
11

Você pode instalar a versão GNU de du(1):

cd /usr/ports/sysutils/coreutils && make install clean

Então você pode usar a --apparent-sizebandeira:

/space# zfs create space/comptest
/space# zfs set compression=on space/comptest
/space# dd if=/dev/zero of=/space/comptest/zerofile bs=1M count=40
/space/comptest# gdu
2K      .
/space/comptest# gdu --apparent-size
40961K  .
Zanchey
fonte
4
NO razão para usar uma porta para isso. Use o sistema operacional base ducom seu -Asinalizador.
Sean
10
Isso é útil para o ZFS no Linux. GNU dunão tem uma -Aopção.
Jakar 31/05
1
O ZFS no Linux dutem a --apparent-sizepartir do comentário sobre a solução aceita aqui: serverfault.com/a/434655/145009
Rob Paisley
0

tente usar o comando zpool:

zpool list
NAME      SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
storage  8.93T  6.59T  2.34T         -    60%    73%  2.13x  ONLINE  -

mas df -sh mostra o resultado (tamanho não deduplicado)

df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
storage        zfs        16T   14T  1.9T  89% /storage
shcherbak
fonte