Guide d'administration Oracle Solaris ZFS

Gestion des propriétés ZFS

La gestion des propriétés de jeu de données s'effectue à l'aide des sous-commandes set, inherit et get de la commande zfs.

Définition des propriétés ZFS

La commande zfs set permet de modifier les propriétés de jeu de données pouvant être définies. Vous pouvez également définir les propriétés lors de la création des jeux de données à l'aide de la commande zfs create. Pour consulter la listes des propriétés de jeu de données définies, reportez-vous à la section Propriétés ZFS natives définies.

La commande zfs set permet d'indiquer une séquence propriété/valeur au format property=value, suivie du nom du jeu de données. Lors de chaque appel de la commande zfs set, vous ne pouvez définir ou modifier qu'une propriété à la fois.

L'exemple suivant illustre la définition de la propriété atime sur la valeur off pour tank/home.


# zfs set atime=off tank/home

Vous pouvez également définir les propriétés des systèmes de fichiers une fois ces derniers créés. Exemple :


# zfs create -o atime=off tank/home

Vous pouvez spécifier les valeurs des propriétés numériques à l'aide de suffixes facile à comprendre (par ordre croissant de grandeur) : BKMGTPEZ. Ces suffixes peuvent être suivis de la lettre b (signifiant "byte", octet) à l'exception du suffixe B, qui fait déjà référence à cette unité de mesure. Les quatre formulations de la commande zfs set suivantes correspondent à des expressions numériques équivalentes indiquant que la propriété quota doit être définie sur 50 Go sur le système de fichiers 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

Les valeurs des propriétés non numériques prennent en charge la distinction majuscules/minuscules et doivent être spécifiées sous la forme de minuscules, sauf pour les propriétés mountpoint et sharenfs. Les valeurs de ces propriétés peuvent utiliser des minuscules et des majuscules.

Pour plus d'informations sur la commande zfs set, reportez-vous à la page de manuel zfs(1M).

Héritage des propriétés ZFS

Toutes les propriétés définies, à l'exception des propriétés de quotas et de réservations, héritent de la valeur du jeu de données parent (sauf si un quota ou une réservation est explicitement défini pour le jeu de données descendant). Si aucune valeur explicite n'est définie pour une propriété d'un système ascendant, la valeur par défaut de cette propriété est appliquée. Vous pouvez utiliser la commande zfs inherit pour effacer la valeur d'une propriété et faire ainsi hériter la valeur du jeu de données parent.

L'exemple suivant illustre l'activation de la compression pour le système de fichiers tank/home/bonwick à l'aide de la commande zfs set. La commande zfs inherit est ensuite exécutée afin de supprimer la valeur de la propriété compression, entraînant ainsi l'héritage de la valeur par défaut off. En effet, la propriété compression n'est définie localement ni pour home, ni pour tank ; la valeur par défaut est donc appliquée. Si la compression avait été activée pour ces deux systèmes, la valeur définie pour le système ascendant direct aurait été utilisée (en l'occurrence, 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

La sous-commande inherit est appliquée de manière récursive lorsque l'option -r est spécifiée. Dans l'exemple suivant, la commande entraîne l'héritage de la valeur de la propriété compression pour tank/home ainsi que pour ses éventuels descendants :


# zfs inherit -r compression tank/home

Remarque –

L'utilisation de l'option -r entraîne la suppression de la valeur de propriété actuelle pour l'ensemble des jeux de données descendants.


Pour plus d'informations sur la commande zfs inherit, reportez-vous à la page de manuel zfs(1M).

Envoi de requêtes sur les propriétés ZFS

Le moyen le plus simple pour envoyer une requête sur les valeurs de propriété consiste à exécuter la commande zfs list. Pour plus d'informations, reportez-vous à la section Affichage des informations de base des systèmes ZFS. Cependant, dans le cadre de requêtes complexes et pour les scripts, utilisez la commande zfs get afin de fournir des informations plus détaillées dans un format personnalisé.

La commande zfs get permet de récupérer les propriétés de jeu de données. L'exemple suivant illustre la récupération d'une seule valeur de propriété au sein d'un jeu de données :


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

La quatrième colonne SOURCE indique l'origine de la valeur de cette propriété. Le tableau ci-dessous définit les valeurs possibles de la source.

Tableau 6–3 Valeurs possibles de la colonne SOURCE (commande zfs get)

Valeur 

Description 

default

Cette propriété n'a jamais été définie de manière explicite pour ce jeu de données ni pour ses systèmes ascendants. La valeur par défaut est utilisée. 

inherited from nom-jeu-données

La valeur de propriété est héritée du jeu de données parent spécifié par la chaîne dataset-name.

local

La valeur de propriété a été définie de manière explicite pour ce jeu de données à l'aide de la commande zfs set.

temporary

Cette valeur de propriété a été définie à l'aide la commande zfs mount spécifiée avec l'option - o et n'est valide que pour la durée du montage. Pour plus d'informations sur les propriétés de point de montage temporaires, reportez-vous à la section Utilisation de propriétés de montage temporaires.

- (none) 

Cette propriété est en lecture seule. Sa valeur est générée par ZFS. 

Le mot-clé all permet de récupérer toutes les valeurs de propriétés du jeu de données. Les exemples suivants utilisent le mot-clé all :


# 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

Remarque –

Le fonctionnement des propriétés casesensitivity, nbmand, normalization, sharesmb, utf8only et vscan n'est pas optimal dans la version Solaris 10 car le service Oracle Solaris SMB n'est pas pris en charge dans la version Solaris 10.


L'option -s spécifiée avec la commande zfs get permet de spécifier, en fonction du type de source, les propriétés à afficher. Cette option permet d'indiquer la liste des types de sources souhaités, séparés par une virgule. Seules les propriétés associées au type de source spécifié sont affichées. Les types de source valides sont local, default, inherited, temporary et none. L'exemple suivant indique toutes les propriétés définies localement sur pool.


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

Les options décrites ci-dessus peuvent être associées à l'option -r afin d'afficher de manière récursive les propriétés spécifiées sur les systèmes enfant du jeu de données. Dans l'exemple suivant, les propriétés temporaires de tous les jeux de données définis sur tank sont affichées de manière récursive :


# 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

Vous pouvez interroger les valeurs d'une propriété à l'aide de la commande zfs get sans spécifier le système de fichiers cible (la commande fonctionne sur tous les systèmes de fichiers et les pools). Exemple :


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

Pour plus d'informations sur la commande zfs get, reportez-vous à la page de manuel zfs(1M).

Envoi de requête sur les propriétés ZFS pour l'exécution de scripts

La commande zfs get prend en charge les options -H et -o, qui permettent l'exécution de scripts. Vous pouvez utiliser l'option -H pour omettre les informations d'en-tête et pour remplacer un espace par un caractère de tabulation. L'uniformisation des espaces permet de faciliter l'analyse des données. Vous pouvez utiliser l'option -o pour personnaliser la sortie de l'une des façons suivantes :

L'exemple suivant illustre la commande permettant de récupérer une seule valeur en spécifiant les options -H et -o de la commande zfs get:


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

L'option -p indique les valeurs numériques sous leur forme exacte. Par exemple, 1 Mo serait signalé sous la forme 1000000. Cette option peut être utilisée comme suit :


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

L'option -r permet de récupérer de manière récursive les valeurs demandées pour l'ensemble des descendants et peut s'utiliser avec toutes les options mentionnées précédemment. Dans l'exemple suivant, les options -H, -o et -r sont spécifiées afin de récupérer le nom du jeu de données ainsi que la valeur de la propriété used pour export/home et ses descendants, tout en excluant les en-têtes dans la sortie :


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