Guía de administración de Oracle Solaris ZFS

Creación y destrucción de instantáneas de ZFS

Las instantáneas se crean con el comando zfs snapshot, que toma como único argumento el nombre de la instantánea que se va a crear. El nombre de las instantáneas se asigna de la forma siguiente:


filesystem@snapname
volume@snapname

El nombre de la instantánea debe cumplir los requisitos de denominación establecidos en Requisitos de asignación de nombres de componentes de ZFS.

En el ejemplo siguiente, se crea una instantánea de tank/home/ahrens denominada friday.


# zfs snapshot tank/home/ahrens@friday

Puede crear instantáneas de todos los sistemas de archivos descendientes con la opción -r. Por ejemplo:


# 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  -

Las instantáneas no tienen propiedades modificables. Las propiedades de conjuntos de datos no se pueden aplicar a una instantánea. Por ejemplo:


# zfs set compression=on tank/home/ahrens@now
cannot set compression property for 'tank/home/ahrens@now': snapshot
properties cannot be modified

Para destruir instantáneas se utiliza el comando zfs destroy. Por ejemplo:


# zfs destroy tank/home/ahrens@now

Los conjuntos de datos no se pueden destruir si tienen una instantánea. Por ejemplo:


# 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

Además, si se han creado clones a partir de una instantánea, deben destruirse antes de poder destruir la instantánea.

Para obtener más información sobre el subcomando destroy, consulte Destrucción de un sistema de archivos ZFS.

Conservación de instantáneas de ZFS

Si se implementan diferentes directivas de instantáneas automáticas de manera que zfs receive destruye accidentalmente las instantáneas más antiguas porque ya no existen en la parte remitente, debería considerar el uso de la función de conservación de instantáneas.

La función de conservación impide que se destruya una instantánea. Además, esta función permite que una instantánea con clones se elimine en espera de la eliminación del último clon mediante el comando zfs destroy -d. Cada instantánea tiene asociado un número de referencia de usuario, que se inicializa a cero. El número aumenta una unidad cada vez que se aplica la función de conservación a una instantánea, y se reduce una unidad cuando se anula dicha función.

En la versión anterior de Solaris, sólo era posible destruir una instantánea mediante el comando zfs destroy si no tenía clones. En esta versión de Solaris, la instantánea también debe tener un número de referencia cero.

Se puede aplicar la función de conservación a una instantánea o a un conjunto de ellas. Por ejemplo, la siguiente sintaxis coloca una etiqueta de conservación, keep, en tank/home/cindys/snap@1 .


# zfs hold keep tank/home/cindys@snap1

Puede utilizar la opción -r para conservar las instantáneas de todos los sistemas de archivos descendientes. Por ejemplo:


# zfs snapshot -r tank/home@now
# zfs hold -r keep tank/home@now

Esta sintaxis agrega una sola referencia, keep, a la instantánea o al conjunto de instantáneas. Cada instantánea tiene su propio espacio de nombre de etiqueta y las etiquetas de conservación deben ser exclusivas dentro de ese espacio. Si se ha aplicado la función de conservación a una instantánea, fallará cualquier intento de destruirla mediante el comando zfs destroy. Por ejemplo:


# zfs destroy tank/home/cindys@snap1
cannot destroy 'tank/home/cindys@snap1': dataset is busy

Para destruir una instantánea conservada, use la opción -d. Por ejemplo:


# zfs destroy -d tank/home/cindys@snap1

Utilice el comando zfs holds para ver una lista de instantáneas conservadas. Por ejemplo:


# 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  

Puede utilizar el comando zfs release para eliminar la conservación de una instantánea o de un conjunto de instantáneas. Por ejemplo:


# zfs release -r keep tank/home@now

Si la instantánea se libera, se podrá destruir mediante el comando zfs destroy. Por ejemplo:


# zfs destroy -r tank/home@now

Hay dos nuevas propiedades de información de conservación de instantánea:

Cambio de nombre de instantáneas de ZFS

Se puede cambiar el nombre de las instantáneas, pero debe hacerse en la agrupación y el conjunto de datos en que se crearon. Por ejemplo:


# zfs rename tank/home/cindys@083006 tank/home/cindys@today

Además, la siguiente sintaxis de acceso directo es equivalente a la sintaxis anterior:


# zfs rename tank/home/cindys@083006 today

La siguiente operación de cambio de nombre de instantánea no es posible porque los nombres del sistema de archivos y la agrupación de destino no coinciden con los del sistema de archivos y la agrupación a partir de los cuales se creó la instantánea:


# zfs rename tank/home/cindys@today pool/home/cindys@saturday
cannot rename to 'pool/home/cindys@today': snapshots must be part of same 
dataset

El comando zfs rename - r permite cambiar el nombre de instantáneas de forma recursiva. Por ejemplo:


# 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  -