Como posso saber se a dedup / compactação do ZFS (zfs-fusível) é aplicada a um determinado arquivo?

4

Eu tenho uma partição formatada zfs usando o zfs-fuse para Linux (Ubuntu).

Eu o usei por um tempo e, em seguida, ativei a dedução e a compactação nele (zfs set compression = on / dedup = on). Agora eu acho que tenho alguns arquivos que são dedupados e compactados, e arquivos que ainda não são.

Tudo bem, mas às vezes eu estava confuso. Vamos ver, o comando seguinte consumiria quase 4 GB do meu armazenamento zfs:

cp oldfile.4GB newfile.4GB

.. e isso consumiria quase zero:

cp newfile.4GB newfile.4GB.2

Isso ocorre porque o arquivo antigo ainda não está compactado, portanto, não aconteceu o evento.

Minha idéia é - se eu puder encontrar arquivos antigos que ainda não estejam dedupidos / compactados, posso copiar / renomear / removê-los em lote para eliminar duplicidade e redundância. Mas como posso verificar isso?

Eu sei que posso recopiar todo o conteúdo do meu armazenamento deve funcionar (melhor ainda com a verificação da data e hora de cada arquivo), mas ficaria mais feliz se eu tivesse a ferramenta zfsstat -like que mostra algumas propriedades do arquivo .

EDIT: Verificada a dica do jlliagre no meu ambiente.

First, made some dataset and directories:
$ sudo zfs create zfs/test
$ sudo install -d -m 1777 /zfs/test/orig /zfs/test/copy

Created some files:
$ yes > /zfs/test/orig/yes.1s & sleep 1; kill %1
$ dd if=/dev/zero of=/zfs/test/orig/zero.1M bs=1K count=1024
$ dd if=/dev/urandom of=/zfs/test/orig/rand.1M bs=1K count=1024

Turned compression on, and copy above files:
$ sudo zfs set compress=on  zfs/test
$ cp /zfs/test/orig/* /zfs/test/copy

Now the directories look like:
$ ls -hil /zfs/test/*
/zfs/test/copy:
total 1.5K
10 -rw-r--r-- 1 kimura kimura 1.0M Mar  2 01:30 rand.1M
11 -rw-r--r-- 1 kimura kimura  40M Mar  2 01:30 yes.1s
12 -rw-r--r-- 1 kimura kimura 1.0M Mar  2 01:30 zero.1M

/zfs/test/orig:
total 42M
9 -rw-r--r-- 1 kimura kimura 1.0M Mar  2 01:29 rand.1M
7 -rw-r--r-- 1 kimura kimura  40M Mar  2 01:29 yes.1s
8 -rw-r--r-- 1 kimura kimura 1.0M Mar  2 01:29 zero.1M

And zdb tool shows some information:
kimura@kimura-desktop:~$ sudo zdb zfs/test 
Dataset zfs/test [ZPL], ID 196, cr_txg 108306, 44.2M, 12 objects

    Object  lvl   iblk   dblk  dsize  lsize   %full  type
         0    7    16K    16K    16K    16K   37.50  DMU dnode
        -1    1    16K    512     1K    512  100.00  ZFS user/group used
        -2    1    16K    512     1K    512  100.00  ZFS user/group used
         1    1    16K    512     1K    512  100.00  ZFS master node
         2    1    16K    512     1K    512  100.00  ZFS delete queue
         3    1    16K    512     1K    512  100.00  ZFS directory
         4    1    16K    512     1K    512  100.00  ZFS directory
         5    1    16K    512     1K    512  100.00  ZFS directory
         6    1    16K    512     1K    512  100.00  ZFS directory
         7    3    16K   128K  39.8M  39.8M  100.00  ZFS plain file
         8    2    16K   128K  1.00M     1M  100.00  ZFS plain file
         9    2    16K   128K  1.00M     1M  100.00  ZFS plain file
        10    2    16K   128K  1.00M     1M  100.00  ZFS plain file
        11    3    16K   128K  1.41M  39.8M  100.00  ZFS plain file
        12    2    16K   128K      0   128K    0.00  ZFS plain file

Eu posso ver "sim" e "zero" estão bem compactados.

    
por asari 12.02.2011 / 20:28

1 resposta

5

Você pode obter estatísticas gerais de deduplicação com o comando zdb -D poolname .

Para o status de compactação por arquivo, não é muito simples, mas você pode usar isso:

zdb dataset | grep plain

Isso produzirá linhas parecidas com estas:

     8    2    16K   128K  3.03M  5.00M  100.00  ZFS plain file
     9    2    16K   128K  3.03M  5.00M  100.00  ZFS plain file
    10    2    16K   128K  5.00M  5.00M  100.00  ZFS plain file
    11    2    16K   128K  3.03M  6.00M   83.33  ZFS plain file

A primeira coluna é o número do inode, a coluna 5 e 6 representa o tamanho no disco e o tamanho do arquivo, e a coluna 7 a porcentagem do arquivo que realmente existe. Qualquer arquivo com valores diferentes em 6 e 7 e 100% em 8 são compactados.

    
por 27.02.2011 / 08:06