O ZFS não compacta arquivos e todas as configurações parecem corretas

1

Eu criei recentemente um volume do ZFS para testar seus recursos de compactação. Eu estou comparando isso lado a lado com um volume ext4. Depois de criar o novo volume e ativar a compactação com sudo zfs set compression=gzip postgres-zfs copiei um arquivo ~ 3GB do volume ext4 para o arquivo ZFS, mas o arquivo tem o mesmo tamanho exato na unidade ZFS (usei ls -alh para ver isso). Eu gzipped o arquivo manualmente para ver o que a compressão deve ser (eu entendo que existem níveis diferentes, mas apenas para obter uma estimativa) e usando apenas gzip file o tamanho do arquivo foi cortado pela metade. Minhas configurações do ZFS também mostram que a compactação está ativada:

# zfs get all
NAME          PROPERTY              VALUE                  SOURCE
postgres-zfs  type                  filesystem             -
postgres-zfs  creation              Thu Apr  5 17:17 2018  -
postgres-zfs  used                  1.54G                  -
postgres-zfs  available             143G                   -
postgres-zfs  referenced            1.54G                  -
postgres-zfs  compressratio         1.34x                  -
postgres-zfs  mounted               yes                    -
postgres-zfs  quota                 none                   default
postgres-zfs  reservation           none                   default
postgres-zfs  recordsize            128K                   default
postgres-zfs  mountpoint            /postgres-zfs          default
postgres-zfs  sharenfs              off                    default
postgres-zfs  checksum              on                     default
postgres-zfs  compression           gzip                   local
postgres-zfs  atime                 on                     default
postgres-zfs  devices               on                     default
postgres-zfs  exec                  on                     default
postgres-zfs  setuid                on                     default
postgres-zfs  readonly              off                    default
postgres-zfs  zoned                 off                    default
postgres-zfs  snapdir               hidden                 default
postgres-zfs  aclinherit            restricted             default
postgres-zfs  canmount              on                     default
postgres-zfs  xattr                 on                     default
postgres-zfs  copies                1                      default
postgres-zfs  version               5                      -
postgres-zfs  utf8only              off                    -
postgres-zfs  normalization         none                   -
postgres-zfs  casesensitivity       sensitive              -
postgres-zfs  vscan                 off                    default
postgres-zfs  nbmand                off                    default
postgres-zfs  sharesmb              off                    default
postgres-zfs  refquota              none                   default
postgres-zfs  refreservation        none                   default
postgres-zfs  primarycache          all                    default
postgres-zfs  secondarycache        all                    default
postgres-zfs  usedbysnapshots       0                      -
postgres-zfs  usedbydataset         1.54G                  -
postgres-zfs  usedbychildren        132K                   -
postgres-zfs  usedbyrefreservation  0                      -
postgres-zfs  logbias               latency                default
postgres-zfs  dedup                 off                    default
postgres-zfs  mlslabel              none                   default
postgres-zfs  sync                  standard               default
postgres-zfs  refcompressratio      1.34x                  -
postgres-zfs  written               1.54G                  -
postgres-zfs  logicalused           2.07G                  -
postgres-zfs  logicalreferenced     2.07G                  -
postgres-zfs  filesystem_limit      none                   default
postgres-zfs  snapshot_limit        none                   default
postgres-zfs  filesystem_count      none                   default
postgres-zfs  snapshot_count        none                   default
postgres-zfs  snapdev               hidden                 default
postgres-zfs  acltype               off                    default
postgres-zfs  context               none                   default
postgres-zfs  fscontext             none                   default
postgres-zfs  defcontext            none                   default
postgres-zfs  rootcontext           none                   default
postgres-zfs  relatime              on                     temporary
postgres-zfs  redundant_metadata    all                    default
postgres-zfs  overlay               off                    default

Alguma ideia de por que esses dados não estão sendo armazenados compactados?

    
por Tony 05.04.2018 / 23:59

1 resposta

5

Os dados são compactados, apenas o próprio SO não pode reconhecer a compactação por meio de comandos normais, pois os arquivos são descompactados de forma transparente quando você os acessa.

Nessa lista de configurações do ZFS, você vê uma entrada chamada compressratio , que no seu caso lê x1.34. Isso mostra a eficiência com que os arquivos foram compactados (em média):
tamanho compactado * compressratio = tamanho não compactado

Você também pode ver usado e logicalused , que exibem o tamanho compactado absoluto e o tamanho absoluto descompactado do conjunto completo (embora o uso lógico não corresponda ao tamanho o tamanho de arquivo mencionado do arquivo de teste).

Você pode encontrar mais informações sobre esses valores aqui

Eu também reúno uma pequena lista contendo todos os comandos e o que eles geraram:

por 06.04.2018 / 00:17