Uma maneira mais precisa de obter o tamanho do sistema de arquivos ZFS?

1

Estou tendo problemas para fazer o backup de um arquivo do ZFS devido a falta de espaço em meus dispositivos de backup.

A primeira vez que esqueci que a compactação estava ativada. No entanto, para a segunda tentativa, obtive a taxa de compactação do sistema de arquivos e também obtive o tamanho aparente como retornado por du .

Estes concordaram entre si no tamanho:

louis@watson:~$ sudo zpool list
NAME     SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
watson  3.62T  2.74T   904G    75%  1.00x  ONLINE  -

louis@watson:~$ sudo zfs list 
NAME            USED  AVAIL  REFER  MOUNTPOINT
watson         2.74T   846G    30K  none
watson/gelato  2.73T   846G  2.67T  /data/gelato

louis@watson:~$ sudo zfs get compressratio watson/gelato
NAME           PROPERTY       VALUE  SOURCE
watson/gelato  compressratio  1.64x  -

Eu esperava 2,67 TB comprimido com uma economia de 1,64x para caber em um drive de 6 TB, como reafirmado por du :

louis@watson:~$ cd /data/gelato/
louis@watson:/data/gelato$ sudo du -hs --apparent-size
4.6T    .

Mas mais uma vez fiquei sem espaço durante o backup e não sei por quê. Havia provavelmente menos de 1 TB para copiar quando o disco de 6 TB ficou sem espaço. Ainda assim, isso está acima de qualquer coisa que eu possa pensar que explicaria a discrepância.

Instantâneos:

louis@watson:~$ sudo zfs list -o space
NAME           AVAIL   USED  USEDSNAP  USEDDS  USEDREFRESERV  USEDCHILD
watson          846G  2.74T         0     30K              0      2.74T
watson/gelato   846G  2.73T     53.6G   2.67T              0          0
watson/home     846G  15.8G     57.3M   15.8G              0          0

Existe uma maneira melhor de obter o tamanho real dos dados armazenados em um sistema de arquivos ZFS compactado?

Devo mencionar que uso o rsync -avh para backup. Na unidade de destino, não vejo os instantâneos (..... /. Zfs / snapshot). Isso significa que os instantâneos não estão sendo copiados?

    
por Louis 09.11.2017 / 06:36

2 respostas

3

Algumas coisas a considerar:

  • Verifique o tamanho do registro (com zfs list -o recsize watson/gelato ) da origem e do destino. Se você tiver muitos dados pequenos, mas um tamanho de registro grande, o espaço será desperdiçado. Por outro lado, o espaço também é desperdiçado por causa dos cabeçalhos e metadados, mas geralmente o efeito não é tão perceptível. Se você compartilhar o sistema de arquivos via SMB / CIFS, poderá ver a diferença usando a janela de propriedades da pasta do Windows Explorer.
  • Verifique o alinhamento do setor (ashift) em ambas as unidades e compare com as especificações da unidade (pode ser encontrado nas folhas de dados técnicos do modelo da unidade). O alinhamento incorreto pode afetar negativamente o espaço do seu pool (neste exemplo, ele perdeu cerca de 9%).
  • Verifique se a propriedade copies já foi definida para um valor de 1 ou maior (isso pode ter sido definido e desativado no passado e cópias seriam criadas para quaisquer dados recém-gravados no período entre).
  • Obtenha mais detalhes sobre como o espaço é usado com as propriedades usedbychildren , usedbydataset , usedbyrefreservation e usedbysnapshots . Eles somam used , por isso não será nada novo, mas poderá ajudar a identificar instantâneos antigos e afins.
  • Para ver a quantidade de espaço usada pelos dados e metadados como se a compactação estivesse desativada, verifique as propriedades logicalused e logicalreferenced
  • Devido às diferenças na especificação de tamanhos de dados (base 2 vs. base 10), sua unidade de 6 TB na verdade tem apenas 5.457 TiB (9% a menos do que se supõe).
por 09.11.2017 / 10:26
1

Sugiro zpool list .

Eu também verifico o uso de snapshots. Há algum instantâneo em seu ambiente?

    
por 09.11.2017 / 07:55