La commande zfs snapshot permet de créer les instantanés. Elle ne prend pour argument que le nom de l'instantané à créer. Le nom de l'instantané est spécifié comme suit :
filesystem@snapname volume@snapname |
Ce nom doit respecter les conventions d'attribution de nom définies à la section Exigences d'attribution de noms de composants ZFS.
Dans l'exemple suivant, un instantané de tank/home/ahrens nommé friday est créé.
# zfs snapshot tank/home/ahrens@friday |
Vous pouvez créer des instantanés pour tous les systèmes de fichiers descendants à l'aide de l'option -r. Exemple :
# zfs snapshot -r tank/home@now # zfs list -t snapshot NAME USED AVAIL REFER MOUNTPOINT rpool/ROOT/zfs2BE@zfs2BE 78.3M - 4.53G - tank/home@now 0 - 26K - tank/home/ahrens@now 0 - 259M - tank/home/anne@now 0 - 156M - tank/home/bob@now 0 - 156M - tank/home/cindys@now 0 - 104M - |
Les propriétés des instantanés ne sont pas modifiables. Les propriétés des jeux de données ne peuvent pas être appliquées à un instantané. Exemple :
# zfs set compression=on tank/home/ahrens@now cannot set compression property for 'tank/home/ahrens@now': snapshot properties cannot be modified |
La commande zfs destroy permet de détruire les instantanés. Exemple :
# zfs destroy tank/home/ahrens@now |
La destruction d'un jeu de données est impossible s'il existe des instantanés du jeu de données. Exemple :
# zfs destroy tank/home/ahrens cannot destroy 'tank/home/ahrens': filesystem has children use '-r' to destroy the following datasets: tank/home/ahrens@tuesday tank/home/ahrens@wednesday tank/home/ahrens@thursday |
En outre, afin de pouvoir détruire l'instantané utilisé pour créer les clones, vous devez au préalable détruire les clones.
Pour de plus amples informations sur la sous-commande destroy, reportez-vous à la section Destruction d'un système de fichiers ZFS.
Si vous disposez de plusieurs stratégies automatiques pour les instantanés pour que l'instantané le plus ancien soit par exemple détruit par la commande zfs receive car il n'existe plus du côté de l'envoi, vous pouvez utiliser la fonction de conservation des instantanés.
La conservation d'un instantané empêche sa destruction. En outre, cette fonction permet de supprimer un instantané contenant des clones en attendant la suppression du dernier clone à l'aide de la commande zfs destroy -d. Chaque instantané est associé à un décompte de référence utilisateur initialisé sur 0 (zéro). Ce nombre augmente de 1 à chaque fois qu'un instantané est conservé et diminue de 1 à chaque fois qu'un instantané conservé est libéré.
Dans la version précédente de Solaris, les instantanés ne peuvent pas être détruits à l'aide de la commande zfs destroy s'ils ne contiennent aucun clone. Dans cette version de Solaris, les instantanés doivent également renvoyer un décompte de référence utilisateur égal à 0 (zéro).
Vous pouvez conserver un instantané ou un jeu d'instantanés. Par exemple, la syntaxe suivante insère une balise de conservation keep sur citerne/home/cindys/snap@1 .
# zfs hold keep tank/home/cindys@snap1 |
Vous pouvez utiliser l'option -r pour conserver récursivement les instantanés de tous les systèmes de fichiers descendants. Exemple :
# zfs snapshot -r tank/home@now # zfs hold -r keep tank/home@now |
Cette syntaxe permet d'ajouter une référence keep unique à cet instantané ou à ce jeu d'instantanés. Chaque instantané possède son propre espace de noms de balise dans lequel chaque balise de conservation doit être unique. Si un instantané est conservé, les tentatives de destruction de ce dernier à l'aide de la commande zfs destroy échoueront. Exemple :
# zfs destroy tank/home/cindys@snap1 cannot destroy 'tank/home/cindys@snap1': dataset is busy |
Si vous souhaitez détruire un instantané conservé, utilisez l'option -d. Exemple :
# zfs destroy -d tank/home/cindys@snap1 |
Utilisez la commande zfs holds pour afficher la liste des instantanés conservés. Exemple :
# zfs holds tank/home@now NAME TAG TIMESTAMP tank/home@now keep Thu Jul 15 11:25:39 2010 |
# zfs holds -r tank/home@now NAME TAG TIMESTAMP tank/home/cindys@now keep Thu Jul 15 11:25:39 2010 tank/home/mark@now keep Thu Jul 15 11:25:39 2010 tank/home@now keep Thu Jul 15 11:25:39 2010 |
Vous pouvez utiliser la commande zfs release pour libérer un instantané ou un jeu d'instantanés conservé. Exemple :
# zfs release -r keep tank/home@now |
Si l'instantané est libéré, l'instantané peut être détruit à l'aide de la commande zfs destroy. Exemple :
# zfs destroy -r tank/home@now |
Deux nouvelles propriétés permettent d'identifier les informations de conservation d'un instantané :
La propriété defer_destroy est définie sur on si l'instantané a été marqué en vue d'une destruction différée à l'aide de la commande zfs destroy -d. Dans le cas contraire, la propriété est définie sur off.
La propriété userrefs est définie sur le nombre de conservations d'instantanés, également appelée décompte de références utilisateur.
Vous pouvez renommer les instantanés. Cependant, ils doivent rester dans le même pool et dans le même jeu de données dans lequel il ont été créés. Exemple :
# zfs rename tank/home/cindys@083006 tank/home/cindys@today |
En outre, la syntaxe de raccourci suivante est équivalente à la syntaxe précédente :
# zfs rename tank/home/cindys@083006 today |
L'opération de renommage (rename) d'instantané n'est pas prise en charge, car le nom du pool cible et celui du système de fichiers ne correspondent pas au pool et au système de fichiers dans lesquels l'instantané a été créé :
# zfs rename tank/home/cindys@today pool/home/cindys@saturday cannot rename to 'pool/home/cindys@today': snapshots must be part of same dataset |
Vous pouvez renommer de manière récursive les instantanés à l'aide de la commande zfs rename - r. Exemple :
# zfs list NAME USED AVAIL REFER MOUNTPOINT users 270K 16.5G 22K /users users/home 76K 16.5G 22K /users/home users/home@yesterday 0 - 22K - users/home/markm 18K 16.5G 18K /users/home/markm users/home/markm@yesterday 0 - 18K - users/home/marks 18K 16.5G 18K /users/home/marks users/home/marks@yesterday 0 - 18K - users/home/neil 18K 16.5G 18K /users/home/neil users/home/neil@yesterday 0 - 18K - # zfs rename -r users/home@yesterday @2daysago # zfs list -r users/home NAME USED AVAIL REFER MOUNTPOINT users/home 76K 16.5G 22K /users/home users/home@2daysago 0 - 22K - users/home/markm 18K 16.5G 18K /users/home/markm users/home/markm@2daysago 0 - 18K - users/home/marks 18K 16.5G 18K /users/home/marks users/home/marks@2daysago 0 - 18K - users/home/neil 18K 16.5G 18K /users/home/neil users/home/neil@2daysago 0 - 18K - |