Guide d'administration Oracle Solaris ZFS

Présentation des clones ZFS

Un clone est un volume ou un système de fichiers accessible en écriture et dont le contenu initial est similaire à celui du jeu de données à partir duquel il a été créé. Tout comme pour les instantanés, la création d'un clone est quasiment instantanée et ne consomme initialement aucun espace disque supplémentaire. Vous pouvez d'autre part créer un instantané d'un clone.

Les clones se créent uniquement à partir d'un instantané. Lors du clonage d'un instantané, une dépendance implicite se crée entre le clone et l'instantané. Même en cas de création d'un clone à un autre emplacement de la hiérarchie, l'instantané d'origine ne peut pas être détruit tant que le clone existe. La propriété origin indique cette dépendance et la commande zfs destroy répertorie ces dépendances, le cas échéant.

Un clone n'hérite pas des propriétés du jeu de données à partir duquel il a été créé. Les commandes zfs get et zfs set permettent d'afficher et de modifier les propriétés d'un jeu de données cloné. Pour de plus amples informations sur la configuration des propriétés de jeux de données ZFS, reportez-vous à la section Définition des propriétés ZFS.

Dans la mesure où un clone partage initialement son espace disque avec l'instantané d'origine, la valeur de la propriété used est initialement égale à zéro. À mesure que le clone est modifié, il utilise de plus en plus d'espace disque. La propriété used de l'instantané d'origine ne tient pas compte de l'espace disque consommé par le clone.

Création d'un clone ZFS

Pour créer un clone, utilisez la commande zfs clone en spécifiant l'instantané à partir duquel créer le clone, ainsi que le nom du nouveau volume ou système de fichiers. Le nouveau volume ou système de fichiers peut se trouver à tout emplacement de la hiérarchie ZFS. Le nouveau jeu de données est du même type (un système de fichiers ou un volume, par exemple) que celui de l'instantané à partir duquel le clone a été créé. Vous ne pouvez pas créer le clone d'un système de fichiers dans un autre pool que celui de l'instantané du système de fichiers d'origine.

Dans l'exemple suivant, un nouveau clone appelé tank/home/ahrens/bug123 avec le même contenu initial que l'instantané tank/ws/gate@yesterday est créé :


# zfs snapshot tank/ws/gate@yesterday
# zfs clone tank/ws/gate@yesterday tank/home/ahrens/bug123

Dans l'exemple suivant, un espace de travail est créé à partir de l'instantané projects/newproject@today pour un utilisateur temporaire, sous le nom projects/teamA/tempuser. Ensuite, les propriétés sont configurées dans l'espace de travail cloné.


# zfs snapshot projects/newproject@today
# zfs clone projects/newproject@today projects/teamA/tempuser
# zfs set sharenfs=on projects/teamA/tempuser
# zfs set quota=5G projects/teamA/tempuser

Destruction d'un clone ZFS

La commande zfs destroy permet de détruire les clones ZFS. Exemple : Destruction


# zfs destroy tank/home/ahrens/bug123

Les clones doivent être détruits préalablement à la destruction de l'instantané parent.

Remplacement d'un système de fichiers ZFS par un clone ZFS

La commande zfs promote permet de remplacer un système de fichiers ZFS actif par un clone de ce système de fichiers. Cette fonction facilite le clonage et le remplacement des systèmes de fichiers pour que le système de fichiers original devienne le clone du système de fichiers spécifié. En outre, cette fonction permet de détruire le système de fichiers à partir duquel le clone a été créé. Il est impossible de détruire un système de fichiers d'origine possédant des clones actifs, sans le remplacer par l'un de ses clones. Pour plus d'informations sur la destruction des clones, reportez-vous à la section Destruction d'un clone ZFS.

Dans l'exemple suivant, le système de fichiers tank/test/productA est cloné, puis le clone du système de fichiers (tank/test/productAbeta) devient le système de fichiers tank/test/productA d'origine.


# zfs create tank/test
# zfs create tank/test/productA
# zfs snapshot tank/test/productA@today
# zfs clone tank/test/productA@today tank/test/productAbeta
# zfs list -r tank/test
NAME                       USED  AVAIL  REFER  MOUNTPOINT
tank/test                  104M  66.2G    23K  /tank/test
tank/test/productA         104M  66.2G   104M  /tank/test/productA
tank/test/productA@today      0      -   104M  -
tank/test/productAbeta        0  66.2G   104M  /tank/test/productAbeta
# zfs promote tank/test/productAbeta
# zfs list -r tank/test
NAME                           USED  AVAIL  REFER  MOUNTPOINT
tank/test                      104M  66.2G    24K  /tank/test
tank/test/productA                0  66.2G   104M  /tank/test/productA
tank/test/productAbeta         104M  66.2G   104M  /tank/test/productAbeta
tank/test/productAbeta@today      0      -   104M  -

Dans la sortie zfs list, les informations de comptabilisation de l'espace disque du système de fichiers d'origine productA ont été remplacées par celles du système de fichiers productAbeta

Pour terminer le processus de remplacement de clone, renommez les systèmes de fichiers. Exemple :


# zfs rename tank/test/productA tank/test/productAlegacy
# zfs rename tank/test/productAbeta tank/test/productA
# zfs list -r tank/test

Vous pouvez également supprimer l'ancien système de fichiers si vous le souhaitez. Exemple :


# zfs destroy tank/test/productAlegacy