Além das propriedades nativas, o ZFS oferece suporte a propriedades arbitrárias do usuário. As propriedades de usuário não afetam o comportamento do ZFS, mas podem ser usadas para anotar conjuntos de dados com informações significativas no ambiente.
Os nomes das propriedades do usuário devem estar de acordo com as convenções a seguir:
Eles precisam conter dois pontos (':') para distingui-los das propriedades nativas.
Eles precisam conter letras minúsculas, números ou caracteres de pontuação: ':', '+','.', '_'.
O comprimento máximo de uma propriedade de usuário é de 256 caracteres.
A convenção esperada é que o nome da propriedade esteja dividido nos dois componentes seguintes, mas que este espaço de nome não seja imposto pelo ZFS:
module:property |
Ao fazer utilização programática das propriedades do usuário, utilize um nome de domínio DNS reverso para o componente módulo dos nomes da propriedade para diminuir a possibilidade de que dois pacotes desenvolvidos independentemente utilizem o mesmo nome de propriedade para fins diferentes. Os nomes de propriedade que começam com com.sun. estão reservados para utilização da Oracle Corporation.
O valor da propriedade do usuário deve estar de acordo com as convenções a seguir:
Eles devem consistir de sequências arbitrárias que são sempre herdadas e nunca validadas.
O comprimento máximo do valor da propriedade de usuário é de 1024 caracteres.
Por exemplo:
# zfs set dept:users=finance userpool/user1 # zfs set dept:users=general userpool/user2 # zfs set dept:users=itops userpool/user3 |
Todos os comandos que operam em propriedades, tais como zfs list, zfs get, zfs set, etc., podem ser usados para manipular propriedades nativas e de usuário.
Por exemplo:
zfs get -r dept:users userpool NAME PROPERTY VALUE SOURCE userpool dept:users all local userpool/user1 dept:users finance local userpool/user2 dept:users general local userpool/user3 dept:users itops local |
Para limpar uma propriedade de usuário, use o comando zfs inherit. Por exemplo:
# zfs inherit -r dept:users userpool |
Se a propriedade não estiver definida em nenhum conjunto de dados pai, ela é totalmente removida.