Guide d'administration Oracle Solaris ZFS

Montage et partage des systèmes de fichiers ZFS

Cette section décrit le processus de gestion des points de montage et des systèmes de fichiers partagés dans ZFS.

Gestion des points de montage ZFS

Par défaut, un système de fichiers ZFS est automatiquement monté lors de sa création. Vous pouvez déterminer un comportement de point de montage spécifique pour un système de fichiers comme décrit dans cette section.

Vous pouvez également définir le point de montage par défaut du jeu de données du pool lors de l'exécution de la commande de création zpool create en spécifiant l'option -m. Pour plus d'informations sur la création de pools, reportez-vous à la section Création d'un pool de stockage ZFS.

Tous les systèmes de fichiers ZFS sont montés lors de l'initialisation à l'aide du service svc://system/filesystem/local SMF (Service Management Facility). Les systèmes de fichiers sont montés sous /path, où path correspond au nom du système de fichiers. Système de fichiers ZFS

Vous pouvez remplacer le point de montage par défaut à l'aide de la commande zfs set pour définir la propriété mountpoint sur un chemin spécifique. Le système de fichiers ZFS crée automatiquement le point de montage spécifié, le cas échéant. Il monte ensuite automatiquement le système de fichiers correspondant, lors de l'exécution de la commande zfs mount -a. Il n'est pas nécessaire de modifier le fichier /etc/vfstab.

La propriété mountpoint est héritée. Par exemple, si le fichier pool/home est doté d'une propriété mountpoint définie sur /export/stuff, alors pool/home/user hérite de la valeur /export/stuff/user pour sa propriété mountpoint.

Pour éviter le montage d'un système de fichiers, définissez la propriété mountpoint sur none. En outre, la propriété canmount peut être utilisée pour contrôler le montage d'un système de fichiers. Pour plus d'informations sur la propriété canmount, reportez-vous à la section Propriété canmount.

Les systèmes de fichiers peuvent également être gérés de manière explicite à l'aide d'interfaces de montage héritées en utilisant la commande zfs set pour définir la propriété mountpoint sur legacy. Dans ce cas, le montage et la gestion d'un système de fichiers ne sont pas gérés automatiquement par ZFS. Ces opérations s'effectuent alors à l'aide des outils hérités, comme les commandes mount et umount et le fichier /etc/vfstab. Pour plus d'informations sur les montages hérités, reportez-vous à la section Points de montage hérités.

Points de montage automatiques

Les jeux de données dont la propriété mountpoint n'est pas définie sur legacy sont gérés par le système ZFS. L'exemple suivant illustre la création d'un jeu de données dont le point de montage est géré automatiquement par le système ZFS :


# zfs create pool/filesystem
# zfs get mountpoint pool/filesystem
NAME             PROPERTY      VALUE                      SOURCE
pool/filesystem  mountpoint    /pool/filesystem           default
# zfs get mounted pool/filesystem
NAME             PROPERTY      VALUE                      SOURCE
pool/filesystem  mounted       yes                        -

Vous pouvez également définir la propriété mountpoint de manière explicite, comme dans l'exemple suivant :


# zfs set mountpoint=/mnt pool/filesystem
# zfs get mountpoint pool/filesystem
NAME             PROPERTY      VALUE                      SOURCE
pool/filesystem  mountpoint    /mnt                       local
# zfs get mounted pool/filesystem
NAME             PROPERTY      VALUE                      SOURCE
pool/filesystem  mounted       yes                        -

Si la propriété mountpoint est modifiée, le système de fichiers est automatiquement démonté de l'ancien point de montage et remonté sur le nouveau. Les répertoires de point de montage sont créés, le cas échéant. Si ZFS n'est pas en mesure de démonter un système de fichiers parce qu'il est actif, une erreur est signalée et un démontage manuel forcé doit être effectué.

Points de montage hérités

La gestion des systèmes de fichiers ZFS peut s'effectuer à l'aide d'outils hérités. Pour cela, la propriété mountpoint doit être définie sur legacy. Les systèmes de fichiers hérités sont alors gérés à l'aide des commandes mount et umount et du fichier /etc/vfstab. Lors de l'initialisation, le système de fichiers ZFS ne monte pas automatiquement les systèmes de fichiers hérités et les commandes ZFS mount et umount ne fonctionnent pas sur ces types de jeu de données. Les exemples suivants illustrent les commandes de définition et de gestion d'un jeu de données ZFS hérité :


# zfs set mountpoint=legacy tank/home/eschrock
# mount -F zfs tank/home/eschrock /mnt

Pour monter automatiquement un système de fichiers hérité lors de l'initialisation, vous devez ajouter une entrée au fichier /etc/vfstab. L'exemple suivant montre l'entrée telle qu'elle peut apparaître dans le fichier /etc/vfstab :


#device         device        mount           FS      fsck    mount   mount
#to mount       to fsck       point           type    pass    at boot options
#

tank/home/eschrock -		/mnt		   zfs		-		yes		-	

Les entrées device to fsck et fsck pass sont définies sur - car la commande fsck ne s'applique pas aux systèmes de fichiers ZFS. Pour plus d'informations sur l'intégrité des données ZFS, reportez-vous à la section Sémantique transactionnelle.

Montage de système de fichiers ZFS

Le montage des systèmes de fichiers ZFS s'effectue automatiquement lors du processus de création ou lors de l'initialisation du système. Vous ne devez utiliser la commande zfs mount que lorsque vous devez modifier les options de montage ou monter/démonter explicitement les systèmes de fichiers.

Spécifiée sans argument, la commande zfs mount répertorie tous les systèmes de fichiers actuellement montés gérés par ZFS. Les points de montage hérités ne sont pas inclus. Exemple :


# zfs mount
tank                            /tank
tank/home                       /tank/home
tank/home/bonwick               /tank/home/bonwick
tank/ws                         /tank/ws

L'option -a permet de monter tous les systèmes de fichiers ZFS. Les systèmes de fichiers hérités ne sont pas montés. Exemple :


# zfs mount -a

Par défaut, le système ZFS autorise uniquement le montage sur les répertoires vides. Pour forcer une opération de montage effectuée sur un répertoire non vide, spécifiez l'option -O. Exemple :


# zfs mount tank/home/lalt
cannot mount '/export/home/lalt': directory is not empty
use legacy mountpoint to allow this behavior, or use the -O flag
# zfs mount -O tank/home/lalt

La gestion des points de montage hérités doit s'effectuer à l'aide des outils hérités. Toute tentative d'utilisation des outils ZFS génère une erreur. Exemple :


# zfs mount pool/home/billm
cannot mount 'pool/home/billm': legacy mountpoint
use mount(1M) to mount this filesystem
# mount -F zfs tank/home/billm

Le montage d'un système de fichiers requiert l'utilisation d'un ensemble d'options basées sur les valeurs des propriétés associées au jeu de données. Le tableau ci-dessous illustre la corrélation entre les propriétés et les options de montage :

Tableau 6–4 Options et propriétés de montage ZFS

Propriétés 

Option de montage 

atime

atime/noatime

devices

devices/nodevices

exec

exec/noexec

nbmand

nbmand/nonbmand

readonly

ro/rw

setuid

setuid/nosetuid

xattr

xattr/noaxttr

L'option de montage nosuid représente un alias de nodevices,nosetuid.

Utilisation de propriétés de montage temporaires

Si les options de montage décrites à la section précédente sont définies de manière explicite en spécifiant l'option -o avec la commande zfs mount, les valeurs des propriétés associées sont remplacées de manière temporaire. Ces valeurs de propriété sont désignées par la chaîne temporary dans la commande zfs get et reprennent leur valeur d'origine une fois le système de fichiers démonté. Si une valeur de propriété est modifiée alors que le jeu de données est monté, la modification prend immédiatement effet et remplace toute valeur temporaire.

L'exemple suivant illustre la définition temporaire de l'option de montage en lecture seule sur le système de fichiers tank/home/perrin. Le système de fichiers est censé être démonté.


# zfs mount -o ro tank/home/perrin

Pour modifier temporairement une valeur de propriété sur un système de fichiers monté, vous devez utiliser l'option spécifique remount. Dans l'exemple suivant, la propriété atime est temporairement définie sur la valeur off pour un système de fichiers monté :


# zfs mount -o remount,noatime tank/home/perrin
# zfs get atime tank/home/perrin
NAME             PROPERTY      VALUE                      SOURCE
tank/home/perrin atime         off                        temporary

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

Démontage des systèmes de fichiers ZFS

Le démontage des systèmes de fichiers ZFS peut s'effectuer à l'aide de la commande zfs unmount. La commande unmount peut utiliser le point de montage ou le nom du système de fichiers comme argument.

L'exemple suivant illustre le démontage d'un système de fichiers avec l'argument de nom de système de fichiers :


# zfs unmount tank/home/tabriz

L'exemple suivant illustre le démontage d'un système de fichiers avec l'argument de point de montage :


# zfs unmount /export/home/tabriz

Si le système de fichiers est occupé, la commande unmount échoue. L'option -f permet de forcer le démontage d'un système de fichiers. Le démontage forcé d'un système de fichiers requiert une attention particulière si le contenu de ce système est en cours d'utilisation. Ce type d'opération peut entraîner des comportements d'application imprévisibles.


# zfs unmount tank/home/eschrock
cannot unmount '/export/home/eschrock': Device busy
# zfs unmount -f tank/home/eschrock

Pour garantir la compatibilité ascendante, vous pouvez démonter les systèmes de fichiers ZFS à l'aide de la commande héritée umount. Exemple :


# umount /export/home/bob

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

Activation et annulation du partage des systèmes de fichiers ZFS

Le système de fichiers ZFS permet de partager automatiquement des systèmes de fichiers en définissant la propriété sharenfs. Cette propriété évite d'avoir à modifier le fichier /etc/dfs/dfstab lors de l'ajout d'un système de fichiers. La propriété sharenfs correspond à une liste d'options séparées par une virgule spécifiée avec la commande share. La valeur on constitue un alias des options de partage par défaut, qui attribuent les droits read/write à tous les utilisateurs. La valeur off indique que le partage du système de fichiers n'est pas géré par ZFS et qu'il s'effectue à l'aide des outils classiques (par exemple, à l'aide du fichier /etc/dfs/dfstab). Tous les systèmes de fichiers dont la propriété sharenfs n'est pas définie sur off sont partagés lors de l'initialisation.

Contrôle de la sémantique de partage

Par défaut, le partage est annulé pour tous les systèmes de fichiers. Pour partager un nouveau système de fichiers, utilisez une syntaxe de la commande zfs set similaire à celle présentée à l'exemple ci-dessous :


# zfs set sharenfs=on tank/home/eschrock

La propriété sharenfs est héritée et les systèmes de fichiers sont automatiquement partagés lorsqu'ils sont créés (si la propriété héritée n'est pas définie sur off). Exemple :


# zfs set sharenfs=on tank/home
# zfs create tank/home/bricker
# zfs create tank/home/tabriz
# zfs set sharenfs=ro tank/home/tabriz

tank/home/bricker et tank/home/tabriz sont partagés en écriture dès leur création, car ils héritent de la propriété sharenfs définie pour tank/home. Une fois la propriété définie sur ro (lecture seule), tank/home/tabriz est partagé en lecture seule, quelle que soit la propriété sharenfs définie pour tank/home .

Annulation du partage des systèmes de fichiers ZFS

Même si la plupart des systèmes de fichiers sont automatiquement partagés ou non lors de l'initialisation, la création ou la destruction de ces derniers, il est parfois nécessaire de les définir explicitement comme non partagés. Ce type d'opération s'effectue à l'aide de la commande zfs unshare. Exemple :


# zfs unshare tank/home/tabriz

Cette commande entraîne l'annulation du partage du système de fichiers tank/home/tabriz. Pour annuler le partage de tous les systèmes de fichiers ZFS du système, vous devez utiliser l'option - a.


# zfs unshare -a

Partage des systèmes de fichiers ZFS

La plupart du temps, le comportement automatique du système de fichiers ZFS par rapport au partage de système de fichiers lors de l'initialisation et de la création de ces derniers est suffisant pour les opérations normales. Si vous êtes amené à annuler le partage d'un système de fichiers, vous pouvez réactiver le partage à l'aide de la commande zfs share. Exemple :


# zfs share tank/home/tabriz

L'option - a permet également de partager tous les systèmes de fichiers ZFS du système.


# zfs share -a

Comportement de partage hérité

Si la propriété sharenfs est définie sur off, l'activation et l'annulation du partage des systèmes de fichiers ZFS sont désactivées de manière permanente. Cette valeur permet de gérer le partage des systèmes de fichiers à l'aide des outils classiques (par exemple, à l'aide du fichier /etc/dfs/dfstab).

Contrairement à la commande mount héritée, les commandes share et unshare peuvent être exécutées sur les systèmes de fichiers ZFS. Vous pouvez dès lors partager manuellement un système de fichiers en spécifiant des options différentes de celles définies pour la propriété sharenfs. Ce modèle de gestion est déconseillé. La gestion des partages NFS doit s'effectuer intégralement à l'aide du système ZFS ou intégralement à l'aide du fichier /etc/dfs/dfstab. Les modèle ZFS a été conçu pour simplifier et pour faciliter les opérations de gestion par rapport au modèle classique.