ZFS: Vendo e Definindo Propriedades do DataSet – Parte 13

Como sabemos, um conjunto de dispositivos físicos(HDs por exemplo) disponibilizam  um espaço a que chamamos de pool. Dentro do pool criamos os datasets.

No post passado vimos propriedades do pool e hoje iremos ver as do datasets.

Ao final do arquivo irei postar a tabela contendo algumas propriedades e sua explicação.

Vendo as Propriedades do Dataset

Se não especificar o dataset será mostrado na tela a propriedade de todos os datasets, clones e snapshots. Exemplo:

elder@server01:~$ sudo zfs get creation 
NAME                           PROPERTY  VALUE                  SOURCE
meuPool                        creation  sex fev  5 18:09 2021  -
meuPool/documentos             creation  seg fev  8  9:51 2021  -
meuPool/documentos@08_02_2021  creation  seg fev  8 10:14 2021  -
meuPool/documentosClone        creation  seg fev  8 10:16 2021  -

Acima, meuPool é um dataset. Mas não é recomendado usá-lo.

Vendo apenas uma propriedade:

Vendo a taxa de compressão usada no dataset meuPool/documentos

elder@server01:~$  sudo zfs get compressratio meuPool/documentos
NAME                PROPERTY       VALUE  SOURCE
meuPool/documentos  compressratio  1.00x  -

Vendo mais de uma propriedade:

Vendo taxa de compressão, espaço usado e disponível

elder@server01:~$ sudo zfs get compressratio,used,available  meuPool/documentos
NAME                PROPERTY       VALUE  SOURCE
meuPool/documentos  compressratio  1.00x  -
meuPool/documentos  used           38K    -
meuPool/documentos  available      79,7M  -

Vendo todas as propriedades:

Exibindo todas as propriedades

elder@server01:~$ sudo zfs get all   meuPool/documentos
NAME                PROPERTY              VALUE                  SOURCE
meuPool/documentos  type                  filesystem             -
meuPool/documentos  creation              seg fev  8  9:51 2021  -
meuPool/documentos  used                  38K                    -
meuPool/documentos  available             79,7M                  -
meuPool/documentos  referenced            25K                    -
meuPool/documentos  compressratio         1.00x                  -
meuPool/documentos  mounted               yes                    -
meuPool/documentos  quota                 none                   default
meuPool/documentos  reservation           none                   default
meuPool/documentos  recordsize            128K                   default
meuPool/documentos  mountpoint            /meuPool/documentos    default
meuPool/documentos  sharenfs              off                    default
meuPool/documentos  checksum              on                     default
meuPool/documentos  compression           off                    default
meuPool/documentos  atime                 on                     default
meuPool/documentos  devices               on                     default
meuPool/documentos  exec                  on                     default
meuPool/documentos  setuid                on                     default
meuPool/documentos  readonly              off                    default
meuPool/documentos  zoned                 off                    default
meuPool/documentos  snapdir               hidden                 default
meuPool/documentos  aclinherit            restricted             default
meuPool/documentos  createtxg             44853                  -
meuPool/documentos  canmount              on                     default
meuPool/documentos  xattr                 on                     default
meuPool/documentos  copies                1                      default
meuPool/documentos  version               5                      -
meuPool/documentos  utf8only              off                    -
meuPool/documentos  normalization         none                   -
meuPool/documentos  casesensitivity       sensitive              -
meuPool/documentos  vscan                 off                    default
meuPool/documentos  nbmand                off                    default
meuPool/documentos  sharesmb              off                    default
meuPool/documentos  refquota              none                   default
meuPool/documentos  refreservation        none                   default
meuPool/documentos  guid                  12101442455316929734   -
meuPool/documentos  primarycache          all                    default
meuPool/documentos  secondarycache        all                    default
meuPool/documentos  usedbysnapshots       13K                    -
meuPool/documentos  usedbydataset         25K                    -
meuPool/documentos  usedbychildren        0B                     -
meuPool/documentos  usedbyrefreservation  0B                     -
meuPool/documentos  logbias               latency                default
meuPool/documentos  objsetid              158                    -
meuPool/documentos  dedup                 off                    default
meuPool/documentos  mlslabel              none                   default
meuPool/documentos  sync                  standard               default
meuPool/documentos  dnodesize             legacy                 default
meuPool/documentos  refcompressratio      1.00x                  -
meuPool/documentos  written               13K                    -
meuPool/documentos  logicalused           19K                    -
meuPool/documentos  logicalreferenced     12,5K                  -
meuPool/documentos  volmode               default                default
meuPool/documentos  filesystem_limit      none                   default
meuPool/documentos  snapshot_limit        none                   default
meuPool/documentos  filesystem_count      none                   default
meuPool/documentos  snapshot_count        none                   default
meuPool/documentos  snapdev               hidden                 default
meuPool/documentos  acltype               off                    default
meuPool/documentos  context               none                   default
meuPool/documentos  fscontext             none                   default
meuPool/documentos  defcontext            none                   default
meuPool/documentos  rootcontext           none                   default
meuPool/documentos  relatime              off                    default
meuPool/documentos  redundant_metadata    all                    default
meuPool/documentos  overlay               off                    default
meuPool/documentos  encryption            off                    default
meuPool/documentos  keylocation           none                   default
meuPool/documentos  keyformat             none                   default
meuPool/documentos  pbkdf2iters           0                      default
meuPool/documentos  special_small_blocks  0                      default

Propriedade Herdada

Quando listamos os datasets podemos ver que meuPool também é exibido, colori ele de laranja abaixo. Ele é  muito mais que um pool, ele é um válido dataset também. Então todas as propriedades alteradas em meuPool serão herdadas pelos demais pools que são filhos.

elder@server01:~$ sudo zfs list
NAME                      USED  AVAIL     REFER  MOUNTPOINT
meuPool                   252K  79,7M       24K  /meuPool
meuPool/documentos         38K  79,7M       25K  /meuPool/documentos
meuPool/documentosClone    15K  79,7M       25K  /meuPool/documentosClone

Por exemplo, podemos ver abaixo que a propriedade snapdir em meuPool está com o valor hidden(oculto).

elder@server01:~$ sudo zfs get snapdir meuPool
NAME     PROPERTY  VALUE    SOURCE
meuPool  snapdir   hidden   default

Vamos ver a mesma propriedade em meuPool/documentos. Vemos que também está como hidden.

elder@server01:~$ sudo zfs get snapdir meuPool/documentos
NAME                PROPERTY  VALUE    SOURCE
meuPool/documentos  snapdir   hidden   default

Vamos alterar para “snapdir=visible” em meuPool e em seguida veremos que será automaticamente alterada em meuPool/documentos

elder@server01:~$ sudo zfs set snapdir=visible  meuPool
elder@server01:~$ sudo zfs get snapdir meuPool/documentos
NAME                PROPERTY  VALUE    SOURCE
meuPool/documentos  snapdir   visible  inherited from meuPool

Só por curiosidade , quando definimos “snapdir=visible” podemos visualizar a pasta .zfs dentro da qual estão os snapshots e shares(compartilhamentos). Para visualizar basta usar “ls -a”  ou “ls -A”

elder@server01:~$ ls -1A  /meuPool/documentos
arquivos1.txt
arquivos2.txt
arquivos3.txt
arquivos4.txt
arquivos5.txt
arquivos6.txt
arquivos7.txt
.zfs

 

Outros testes com herança em datasets do zfs:

Vamos criar o dataset meuPool/documentos/contratos

elder@server01:~$ sudo zfs create meuPool/documentos/contratos

Vamos ativar a compression=gzip nesse dataset recém criado

elder@server01:~$ sudo zfs set compression=gzip meuPool/documentos/contratos

Usando get podemos ver que compresão está ativo apenas em  meuPool/documentos/contratos

elder@server01:~$ sudo zfs get compression 
NAME                           PROPERTY     VALUE     SOURCE
meuPool                        compression  off       default
meuPool/documentos             compression  off       default
meuPool/documentos@08_02_2021  compression  -         -
meuPool/documentos/contratos   compression  gzip      local
meuPool/documentosClone        compression  off       default

Vamos fazer com que ele herde as propriedades do pai

elder@server01:~$ sudo zfs inherit compression meuPool/documentos/contratos

Vamos ver o resultado

elder@server01:~$ sudo zfs get compression 
NAME                           PROPERTY     VALUE     SOURCE
meuPool                        compression  off       default
meuPool/documentos             compression  off       default
meuPool/documentos@08_02_2021  compression  -         -
meuPool/documentos/contratos   compression  off       default
meuPool/documentosClone        compression  off       default

Temos compression=off  que “meuPool/documentos/contratos”  herdou do pai

Vamos definir “meuPool” com compression=lzjb

elder@server01:~$ sudo zfs set compression=lzjb  meuPool

Todos herdaram. Na coluna “SOURCE” meuPool que antes estava default(padrão) agora está como “local” por ter sido alterado por  mim, usuário. Os filhos de meuPool agora está com “inherited from meuPool(herdado de meuPool)”  na coluna SOURCE.

elder@server01:~$ sudo zfs get compression  
NAME                           PROPERTY     VALUE     SOURCE
meuPool                        compression  lzjb      local
meuPool/documentos             compression  lzjb      inherited from meuPool
meuPool/documentos@08_02_2021  compression  -         -
meuPool/documentos/contratos   compression  lzjb      inherited from meuPool
meuPool/documentosClone        compression  lzjb      inherited from meuPool

Vamos colocar novamente compression=gzib para  “meuPool/documentos”

elder@server01:~$ sudo zfs set compression=gzip  meuPool/documentos

Vejamos o resultado

elder@server01:~$ sudo zfs get compression  
NAME                           PROPERTY     VALUE     SOURCE
meuPool                        compression  lzjb      local
meuPool/documentos             compression  gzip      local
meuPool/documentos@08_02_2021  compression  -         -
meuPool/documentos/contratos   compression  gzip      inherited from meuPool/documentos
meuPool/documentosClone        compression  lzjb      inherited from meuPool

 

Segue Tabela com Algumas Propriedades de DataSets Explicadas

 

PropriedadeDataset

Descrição Apenas Leitura?

Valor Padrão

Aclinherit Controla se entradas ACL serão herdadas quando pastas e arquivos são criados. Opções:

-discard: não herda nenhuma ACL

-noallow: apenas herda ACL que especifica permissões “deny”

-restricted: remove as permissões “write_acl” e “write_owner” quando entradas ACLs são herdadas

Passthrough: herda qualquer ACL desde que seja herdável sem modificar nenhuma entrada ACL quando são herdadas. ??????

-passthrough-x: o mesmo significado de passthrough exceto que as ACLS owner@, group@ e everyone@  herdam a permissão “executar” apenas se o modo de criação solicita o bit  “execute”

restricted
Aclmode Controla como o acl é modificado usando o comando “chmod”. Valores aceitáveis são: discard, groupmask e passthrough groupmask
Acltype Controla se acl está ativado e se sim qual tipo usar. Pode aceitar o valor “posixacl” para ativar acl no liux. Posix ACL é específico para Linux e não é funcional em outras plataformas. POSIXACL é guardado como xattr e não vai sobrescrever outros  ACLs ZFS/NFSv4   existentes. Atualmente apenas posixacl é suportado no linux noacl
Atime Controla de o tempo de acesso é atualizado quando um arquivo é acessado On
Available Exibe o espaço disponível do dataset e seus filhos. Pode ser referenciado pelo nome “avail” Sim
Canmount Controla se o dataset pode ser montado ao usarmos o comando “zfs mount”. Valores aceitáveis são “on, off e noauto”. Quando “Noauto” está configurado o dataset só pode ser montado e desmontado de forma explícita.  O dataset não será montado ao ser criado ou importado. Essa propriedade não é herdável. On
Checksum Controla o checksum usado para verificação de integridade dos dados. O valor padrão é “on” que automaticamente seleciona um algorítimo apropriado que atualmente é o  fletcher2. Valores aceitáveis são: “on, off, fletcher2, fletcher4 e sha256”. Alterando o valor afetará apenas os novos dados adicionados. On
Clones Exibe quais são os clones de um snapshot Sim
Compression Controla o algorítimo de compressão. Valores aceitáveis são: “on, off, lzjb, gzip, gzip-N e zle”. lzjp é otimizado para proporcionar velocidade e ao mesmo tempo com uma taxa de compressão boa. Selecionar “on” faz com que lzjp seja usado. O N em gzip-N é um número de 1 a 9; esse número é a taxa de compressão que queremos. Zle também é rápido. Alterado a propriedade compression irá afetar apenas os novos arquivos adicionados, não é retroativo. Off
Compressratio Mostra a taxa de compressão alcançado pelo algorítimo escolhido em compression. sim
Copies Controla o número de cópias a ser armazenado no dataset. Valores aceitáveis são: “1, 2 e 3”. Essa cópia é uma adição a qualquer redundância configurada no pool. As cópias são guardadas em discos diferentes se possível. Alterado essa propriedade apenas afeta novos dados, não é retroativo. 1
Creation Mostra data de criação do dataset sim
Dedup Controla se deduplicação está ativa ou não para o dataset. Valores aceitos são “on, off, verify e sha256”. Quando dedup está ativo ele sobrescreve a propriedade checksum. Alterado a propriedade compression irá afetar apenas os novos arquivos adicionados, não é retroativo. Se deduplicação estiver ativada e pararmos a tabela de deduplicação não é destruída, continuará à espera de uma continuação.
Devices Controla se um dispositivo pode ser aberto pelo sistema de arquivos. Valores podem ser “on ou off” on
Exec Controla quais processos podem ser executado dentro do sistema de arquivos. Valores podem ser “on ou off” on
groupquota@<grupo> Limita o espaço usado pelo grupo especificado. Consumo de espaço é identificado pela propriedade “userquota@<usuario>. Valores aceitáveis é “none ou um número em bytes” none
groupsused@<grupo> Exibe quantidade de espaço usado pelo grupo especificado sim
Logbias Se SLOG existe logbias controla como ele é usado. Dá uma dica ao zfs de como gerenciar  solicitação sicronizada.
Mounted Mostra se o dataset está montado Sim
Mountpoint Controla o ponto de montagem(mountpoint) do dataset.
Origin Para volumes ou clones; mostra o snapshot de onde o clone foi feito
Primarycache Controla o que será guardado no cache primário(ARC). Valores podem ser “metadata, all e none”. o valor “all” guardará no chave tanto dados do usuário quanto metadados all
Quota Limita a quantidade de espaço que um dataset e seus filhos podem consumir. Quota não pode ser usado em volumes já que o volsize serve implicaitamente como um limite. Também não existe um soft limit como há no linux, somente hard limit. none
Readonly Controla se o dataset pode ser modificado. Esse opção pode ser abreviada para rdonly off
Refcompressratio Mostra a taxa de compressão alcanmçada pelo espaço ocupado na propriedade “refenced” Sim
Referenced A quantidade de dados que o dataset pode acessar. Inicialmente esse irá ser o mesmo número da propriedade “used”. Quando snapshots serão criados esse número irá mudar. Essa propriedade pode ser abreviada para refer Sim
Refquota Limita a quantidade de espaço que um dataset pode consumir. none
Reservation A quantidade mínima de espaço garantida para um dataset e seus filhos none
secondrycache Controla o que é guardado no cache secundário(L2ARC).Valores podem ser “all, none, metadata”
Sharenfs Indica se um dataset é exportado como um “nfs export”
Sharesmb Indica se um dataset é exportado como um compartilhamento smb. Obs.: no site de onde me baseio para este post relata que há um bug nessa opção. Não sei se já foi resolvido.
Snapdir Controla se o diretório “.zfs” ficará oculto ou visível
Sync Controle o comportamento de solicitação sincronizada. Valores podem ser “always, default e disabled”. Se disabler for usado o sistema ficará mais rápido porém não irá fazer uso da sincronização.
Type Mostra o tipo do sistema de arquivos: snapshot, volume ou dataset(ou filesystem) Sim
Used Mostra quantidade de espaço usado pelo dataset e seus filhos. Sim
Usedbychildren Quantidade de espaço consumido pelos filhos de um dataset. Um espaço que será liberado se os datasets filhos forem destruídos. Sim
usedbysnapshots Quantidade de espaço consumido por snapshot de um dataset Sim
userquota@<usuario>: Limita a quantidade de espaço usado pelo usuário especificado
Version Versão do sistema de arquivos. Obs.: é independete do pool.
Written Quantidade de espaço escrito no dataset desde que o último snapshot foi criado Sim
written@<snapshot> Quantidade de espaço escrito no dataset desde que o último snapshot especificado foi criado sim
xattr Controla se atributos extendidos estão ativados para esse sistema de arquivos. Valores podem ser “on ou off” on

 

 

Conclusão

Acima estão apenas algumas propriedades. Dentre as que não listei acima estão algumas que não estão completamente implementadas para o Linux; lembrando que o zfs não é nativo do Linux e é desenvolvido por meio do projeto “ZFS on Linux”.

Alguma propriedades, como a dedupication, mesmo sendo definida para o dataset acaba sendo aplicada em todo o pool.

Outras propriedades ao serem aplicadas acabam afetando apenas os novos/futuros dados e não têm retroatividade.

Após vermos as propriedades para o pool agora vimos para os datasets. Com tudo isso temos comandos simples mas que são poderosos para customizar nosso zfs.

 

Fontes: manual zfs,  pthree.org

Leitor voraz e um dos administradores do GNU/Linux Brasil no Whatsapp, facebook, youtube e nesse dito site: www.gnulinuxbrasil.com.br

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *