Guia de administração do ZFS Oracle Solaris

Gerenciando propriedades do ZFS

As propriedades do conjunto de dados são gerenciadas através dos subcomandos set, inherit e get do comando zfs.

Definindo propriedades do ZFS

O comando zfs set pode ser usado para modificar qualquer propriedade definível de conjunto de dados. Ou então, é possível utilizar o comando zfs create para definir as propriedades quando o conjunto de dados é criado. Para obter uma lista de propriedades definíveis de conjunto de dados, consulte Propriedades nativas definíveis do ZFS.

O comando zfs set utiliza uma sequência de propriedade/valor no formato de propriedade=valor seguido por um nome de conjunto de dados. Somente uma propriedade pode ser configurada ou modificada durante cada chamada zfs set.

O exemplo abaixo define a propriedade atime como off para tank/home.


# zfs set atime=off tank/home

Além disso, qualquer propriedade do sistema de arquivos pode ser definida quando o sistema de arquivos é criado. Por exemplo:


# zfs create -o atime=off tank/home

É possível especificar valores de propriedades numérica utilizando os sufixos fáceis de entender (em ordem crescente de magnitude): BKMGTPEZ. Todos estes sufixos podem ser seguidos de b opcional, indicando bytes, com exceção do sufixo B, que já indica bytes. As quatro chamadas a seguir de zfs set são expressões numéricas equivalentes que configuram a propriedade quota para ser definida com o valor de 50 GB no sistema de arquivos tank/home/marks:


# zfs set quota=50G tank/home/marks
# zfs set quota=50g tank/home/marks
# zfs set quota=50GB tank/home/marks
# zfs set quota=50gb tank/home/marks

Os valores de propriedades não numéricas fazem a diferenciação entre maiúsculas e minúsculas e devem ser em minúsculas, com exceção de mountpoint e sharenfs. Os valores destas propriedades podem apresentar maiúsculas e minúsculas misturadas.

Para obter mais informações sobre o comando zfs set, consulte zfs(1M).

Herdando propriedades do ZFS

Todas as propriedades configuráveis, com exceção de cotas e reservas, herdam o valor do seu conjunto de dados pai, a menos que uma cota ou reserva esteja explicitamente definida no conjunto de dados descendente. Se nenhum antepassado tiver um valor explícito definido para uma propriedade herdada, é usado o valor padrão para a propriedade. É possível utilizar o comando zfs inherit para limpar um valor de propriedade, fazendo, assim, com que o valor seja herdado do conjunto de dados pai.

O exemplo abaixo usa o comando zfs set para ativar a compactação do sistema de arquivos tank/home/bonwick. Em seguida, zfs inherit é utilizado para limpar a propriedade compression, fazendo, assim, com que a propriedade herde o valor padrão de off. Como nem home e tampouco tank possui a propriedade compression definida localmente, o valor padrão é utilizado. Se ambos possuírem a compactação ativada, o valor definido no próximo predecessor seria utilizado (neste exemplo home).


# zfs set compression=on tank/home/bonwick
# zfs get -r compression tank
NAME             PROPERTY      VALUE                    SOURCE
tank             compression   off                      default
tank/home        compression   off                      default
tank/home/bonwick compression   on                      local
# zfs inherit compression tank/home/bonwick
# zfs get -r compression tank
NAME             PROPERTY      VALUE                    SOURCE
tank             compression   off                      default
tank/home        compression   off                      default
tank/home/bonwick compression  off                      default

O subcomando inherit é aplicado repetidamente quando a opção -r está especificada. No exemplo abaixo, o comando faz com que o valor da propriedade compression seja herdada por tank/home e pelos descendentes que possa ter:


# zfs inherit -r compression tank/home

Observação –

Tenha em mente que o uso da opção -r limpa a definição da propriedade atual de todos os conjuntos de dados descendentes.


Para mais informações sobre o comando zfs inherit, consulte zfs(1M).

Consultando propriedades do ZFS

A forma mais simples de consultar os valores de uma propriedade é usando o comando zfs list. Para obter mais informações, consulte Listando informações básicas do ZFS. No entanto, para consultas complexas e para script, use o comando zfs get para fornecer informações mais detalhadas em um formato personalizado.

O comando zfs get pode ser usado para recuperar qualquer propriedade de conjunto de dados. O exemplo a seguir ilustra como recuperar um valor de propriedade único em um conjunto de dados:


# zfs get checksum tank/ws
NAME             PROPERTY       VALUE                      SOURCE
tank/ws          checksum       on                         default

A quarta coluna, SOURCE, indica a origem do valor da propriedade. A tabela a seguir define os possíveis valores de origem.

Tabela 6–3 Possíveis valores de SOURCE (comando zfs get)

Valor de origem 

Descrição 

default

Esse valor de propriedade nunca foi definido explicitamente para esse conjunto de dados ou para qualquer um dos seus predecessores. O valor padrão desta propriedade está sendo usado. 

inherited from nome-do-conjunto-de-dados

Esse valor de propriedade é herdado a partir do conjunto de dados pai especificado em dataset-name.

local

Este valor de propriedade foi explicitamente definido para este conjunto de dados usando zfs set.

temporary

Esse valor de propriedade foi definido utilizando a opção zfs mount -o e é válido somente durante a montagem. Para obter mais informações sobre as propriedades do ponto de montagem, consulte Usando propriedades de montagem temporárias.

- (none) 

Essa propriedade é somente leitura. Seu valor é gerado pelo ZFS. 

É possível utilizar a palavra-chave especial todos para recuperar todas os valores de propriedade do conjunto de dados. Os exemplos a seguir utilizam a palavra-chave todos:


# zfs get all tank/home
NAME       PROPERTY              VALUE                  SOURCE
tank/home  type                  filesystem             -
tank/home  creation              Tue Jun 29 11:44 2010  -
tank/home  used                  21K                    -
tank/home  available             66.9G                  -
tank/home  referenced            21K                    -
tank/home  compressratio         1.00x                  -
tank/home  mounted               yes                    -
tank/home  quota                 none                   default
tank/home  reservation           none                   default
tank/home  recordsize            128K                   default
tank/home  mountpoint            /tank/home             default
tank/home  sharenfs              off                    default
tank/home  checksum              on                     default
tank/home  compression           off                    default
tank/home  atime                 on                     default
tank/home  devices               on                     default
tank/home  exec                  on                     default
tank/home  setuid                on                     default
tank/home  readonly              off                    default
tank/home  zoned                 off                    default
tank/home  snapdir               hidden                 default
tank/home  aclmode               groupmask              default
tank/home  aclinherit            restricted             default
tank/home  canmount              on                     default
tank/home  shareiscsi            off                    default
tank/home  xattr                 on                     default
tank/home  copies                1                      default
tank/home  version               4                      -
tank/home  utf8only              off                    -
tank/home  normalization         none                   -
tank/home  casesensitivity       sensitive              -
tank/home  vscan                 off                    default
tank/home  nbmand                off                    default
tank/home  sharesmb              off                    default
tank/home  refquota              none                   default
tank/home  refreservation        none                   default
tank/home  primarycache          all                    default
tank/home  secondarycache        all                    default
tank/home  usedbysnapshots       0                      -
tank/home  usedbydataset         21K                    -
tank/home  usedbychildren        0                      -
tank/home  usedbyrefreservation  0                      -
tank/home  logbias               latency                default

Observação –

As propriedades casesensitivity, nbmand, normalization, sharesmb, utf8only e vscan não são totalmente operacionais na versão 10 do Oracle Solaris porque o serviço Oracle Solaris SMB não possui suporte na versão 10 do Oracle Solaris.


A opção -s de zfs get permite especificar, por tipo de origem, o tipo de propriedades a exibir. Esta opção usa uma lista separada por vírgulas indicando os tipos de origem desejados. Somente as propriedades com o tipo de origem especificado são exibidas. Os tipos de origem válidos são local, default, inherited, temporary e none. O exemplo abaixo ilustra todas as propriedades definidas localmente no pool.


# zfs get -s local all pool
NAME             PROPERTY      VALUE                      SOURCE
pool             compression   on                         local

Todas as opções acima podem ser combinadas com a opção -r para exibir repetidamente as propriedades especificadas em todos os filhos do conjunto de dados especificado. No exemplo abaixo, todas as propriedades temporárias de todos os conjuntos de dados dentro de tank são exibidas repetidamente:


# zfs get -r -s temporary all tank
NAME             PROPERTY       VALUE                      SOURCE
tank/home          atime          off                      temporary
tank/home/bonwick  atime          off                      temporary
tank/home/marks    atime          off                      temporary

É possível consultar os valores de propriedade utilizando o comando zfs get sem especificar um sistema de arquivos destino, o que significa que o comando opera em todos os conjuntos ou sistemas de arquivos. Por exemplo:


# zfs get -s local all
tank/home               atime          off                    local
tank/home/bonwick       atime          off                    local
tank/home/marks         quota          50G                    local

Para obter mais informações sobre o comando zfs get, consulte zfs(1M).

Consultando propriedades do ZFS em busca de script

O comando zfs get oferece suporte às opções -H e - o, que estão destinadas a script. É possível utilizar a opção -H para omitir o cabeçalho de informação e substituir o espaço em branco com o caractere Tab. O espaço em branco uniforme leva em consideração os dados facilmente analisáveis. É possível utilizar a opção -o para personalizar a saída das seguintes maneiras:

O exemplo a seguir ilustra como recuperar um único valor utilizando as opções -H e -o de zfs get:


# zfs get -H -o value compression tank/home
on

A opção -p relata valores numéricos como seus valores exatos. Por exemplo, 1 MB seria relatado como 1000000. Esta opção pode ser usada da seguinte forma:


# zfs get -H -o value -p used tank/home
182983742

É possível utilizar a opção -r, juntamente com qualquer uma das opções anteriores, para recuperar recursivamente os valores solicitados para todos os descendentes. O exemplo a seguir utiliza as opções -H, -o e - r para recuperar o nome do conjunto de dados e o valor da propriedade utilizada para export/home e seus descendentes, ao mesmo tempo em que omite a saída de cabeçalho:


# zfs get -H -o name,value -r used export/home
export/home             5.57G
export/home/marks       1.43G
export/home/maybee      2.15G