Guía de administración de Oracle Solaris ZFS

Capítulo 6 Administrar sistemas de archivos ZFS de Oracle Solaris

Este capítulo ofrece información detallada sobre la administración de sistemas de archivos ZFS de Oracle Solaris. En este capítulo se incluyen conceptos como la disposición jerárquica del sistema de archivos, la herencia de propiedades, así como la administración automática de puntos de montaje y cómo compartir interacciones.

Este capítulo se divide en las secciones siguientes:

Administración de sistemas de archivos AFS (descripción general)

Un sistema de archivos ZFS se genera encima de una agrupación de almacenamiento. Los sistemas de archivos se pueden crear y destruir dinámicamente sin necesidad de asignar ni dar formato a ningún espacio en el disco subyacente. Debido a que los sistemas de archivos son tan ligeros y a que son el punto central de administración en ZFS, puede crear muchos de ellos.

Los sistemas de archivos ZFS se administran mediante el comando zfs. El comando zfs ofrece un conjunto de subcomandos que ejecutan operaciones específicas en los sistemas de archivos. Este capítulo describe estos subcomandos detalladamente. Las instantáneas, los volúmenes y los clones también se administran mediante este comando, pero estas funciones sólo se explican brevemente en este capítulo. Para obtener información detallada sobre instantáneas y clones, consulte el Capítulo 7Uso de clones e instantáneas de Oracle Solaris ZFS. Para obtener información detallada sobre volúmenes ZFS, consulte Volúmenes de ZFS.


Nota –

El término conjunto de datos se utiliza en este capítulo como término genérico para referirse a un sistema de archivos, instantánea, clon o volumen.


Creación, destrucción y cambio de nombre de sistemas de archivos ZFS

Los sistemas de archivos ZFS se pueden crear y destruir mediante los comandos zfs create y zfs destroy, respectivamente. Mediante el comando zfs rename se puede cambiar el nombre a los sistemas de archivos ZFS.

Creación de un sistema de archivos ZFS

Los sistemas de archivos ZFS se crean mediante el comando zfs create. El subcomando create toma un único argumento: el nombre del sistema de archivos que crear. El nombre del sistema de archivos se especifica como nombre de ruta que comienza por el nombre de la agrupación:

nombre_agrupación/[nombre_sistema_archivos/]nombre_sistema_archivos

El nombre de agrupación y los nombres del sistema de archivos inicial de la ruta identifican la ubicación en la jerarquía donde se creará el nuevo sistema de archivos. El último nombre de la ruta identifica el nombre del sistema de archivos que se creará. El nombre del sistema de archivos debe seguir las convenciones de denominación establecidas en Requisitos de asignación de nombres de componentes de ZFS.

En el ejemplo siguiente, un sistema de archivos denominado bonwick se crea en el sistema de archivos tank/home.


# zfs create tank/home/bonwick

ZFS monta de forma automática el sistema de archivos recién creado si se crea correctamente. De forma predeterminada, los sistemas de archivos se montan como /conjunto de datos, mediante la ruta proporcionada para el nombre del sistema de archivos en el subcomando create. En este ejemplo, el sistema de archivos recién creado bonwick se encuentra en /tank/home/bonwick. Para obtener más información sobre puntos de montaje que se administran automáticamente, consulte Administración de puntos de montaje de ZFS.

Para obtener más información sobre el comando zfs create, consulte zfs(1M).

Las propiedades del sistema de archivos pueden establecerse al crear dicho sistema de archivos.

En el ejemplo siguiente se crea un punto de montaje de /export/zfs para el sistema de archivos tank/home:


# zfs create -o mountpoint=/export/zfs tank/home

Para obtener más información sobre las propiedades del sistema de archivos, consulte Introducción a las propiedades de ZFS.

Destrucción de un sistema de archivos ZFS

Para destruir un sistema de archivos ZFS, utilice el comando zfs destroy. El sistema de archivos destruido se desmonta automáticamente y se anula la compartición. Para obtener más información sobre puntos de montaje o recursos compartidos administrados automáticamente, consulte Puntos de montaje automáticos.

En el ejemplo siguiente se destruye el sistema de archivos tabriz:


# zfs destroy tank/home/tabriz

Precaución – Precaución –

No aparece ningún mensaje de confirmación con el subcomando destroy. Utilícelo con extrema precaución.


Si el sistema de archivos que se desea destruir está ocupado y no se puede desmontar, el comando zfs destroy falla. Para destruir un sistema de archivos activo, utilice la opción -f. Úsela con precaución, puesto que puede desmontar, destruir y anular la compartición de sistemas de archivos activos, lo que provoca un comportamiento inesperado de la aplicación.


# zfs destroy tank/home/ahrens
cannot unmount 'tank/home/ahrens': Device busy

# zfs destroy -f tank/home/ahrens

El comando zfs destroy también falla si un sistema de archivos tiene descendientes. Para destruir repetidamente un sistema de archivos y todos sus descendientes, utilice la opción -r. Una destrucción repetitiva también destruye las instantáneas, por lo que debe utilizar esta opción con precaución.


# zfs destroy tank/ws
cannot destroy 'tank/ws': filesystem has children
use '-r' to destroy the following datasets:
tank/ws/billm
tank/ws/bonwick
tank/ws/maybee

# zfs destroy -r tank/ws

Si el sistema de archivos que se debe destruir tiene elementos dependientes indirectos, falla incluso el comando de destrucción repetitiva. Para forzar la destrucción de todos los dependientes, incluidos los sistemas de archivos clonados fuera de la jerarquía de destino, se debe utilizar la opción -R. Esta opción se debe utilizar con sumo cuidado.


# zfs destroy -r tank/home/schrock
cannot destroy 'tank/home/schrock': filesystem has dependent clones
use '-R' to destroy the following datasets:
tank/clones/schrock-clone

# zfs destroy -R tank/home/schrock

Precaución – Precaución –

No aparece ningún mensaje de confirmación con las opciones -f, - r o -R para el comando zfs destroy, por lo que debe utilizarlas con cuidado.


Para obtener información detallada sobre instantáneas y clones, consulte el Capítulo 7Uso de clones e instantáneas de Oracle Solaris ZFS.

Cambio de nombre de un sistema de archivos ZFS

Mediante el comando zfs rename se puede cambiar el nombre a los sistemas de archivos. Con el subcomando rename se pueden efectuar las operaciones siguientes:

El ejemplo siguiente utiliza el subcomando renombrar para cambiar de nombre de un sistema de archivos de kustarz a kustarz_old :


# zfs rename tank/home/kustarz tank/home/kustarz_old

El ejemplo siguiente muestra cómo utilizar zfs rename para cambiar la ubicación de un sistema de archivos:


# zfs rename tank/home/maybee tank/ws/maybee

En este ejemplo, el sistema de archivos maybee se reubica de tank/home a tank/ws. Si reubica un sistema de archivos mediante rename, la nueva ubicación debe estar en la misma agrupación y tener espacio suficiente en el disco para albergar este nuevo sistema de archivos. Si la nueva ubicación no tiene espacio suficiente en el disco, posiblemente por haber llegado a su cuota, fallará la operación rename.

Para obtener más información sobre las cuotas, consulte Configuración de cuotas y reservas de ZFS.

La operación rename intenta una secuencia de desmontar/volver a montar para el sistema de archivos y los sistemas de archivos descendientes. El comando rename falla si la operación no puede desmontar un sistema de archivos activo. Si se produce este problema, deberá forzar el desmontaje del sistema de archivos.

Para obtener más información sobre el cambio de nombre de las instantáneas, consulte Cambio de nombre de instantáneas de ZFS.

Introducción a las propiedades de ZFS

Las propiedades son para el mecanismo principal que utiliza para controlar el comportamiento de sistemas de archivos, volúmenes, instantáneas y clones. A menos que se indique otra cosa, las propiedades que se definen en la sección se aplican a todos los tipos de conjuntos de datos.

Las propiedades se dividen en dos tipos: nativas y definidas por el usuario. Las propiedades nativas exportan estadísticas internas o controlan el comportamiento del sistema de archivos ZFS. Asimismo, las propiedades nativas son configurables o de sólo lectura. Las propiedades del usuario no repercuten en el comportamiento del sistema de archivos ZFS, pero puede usarlas para anotar conjuntos de datos de forma que tengan sentido en su entorno. Para obtener más información sobre las propiedades del usuario, consulte Propiedades de usuario de ZFS.

La mayoría de las propiedades configurables también se pueden heredar. Una propiedad que se puede heredar es aquella que, cuando se establece en un principal, se propaga a todos sus descendientes.

Todas las propiedades heredables tienen un origen asociado que indica la forma en que se ha obtenido una propiedad. El origen de una propiedad puede tener los valores siguientes:

local

Indica que la propiedad se ha establecido explícitamente en el conjunto de datos mediante el comando zfs set, tal como se describe en Configuración de propiedades de ZFS.

inherited from nombre_conjunto_datos

Indica que la propiedad se ha heredado del superior nombrado.

default

Indica que el valor de la propiedad no se ha heredado o establecido localmente. Este origen es el resultado de que ningún superior tiene la propiedad como local de origen.

La tabla siguiente identifica las propiedades del sistema de archivos ZFS nativo configurable y de sólo lectura. Las propiedades nativas de sólo lectura se identifican como tales. Todas las demás propiedades nativas que se enumeran en esta tabla son configurables. Para obtener información sobre las propiedades del usuario, consulte Propiedades de usuario de ZFS.

Tabla 6–1 Descripciones de propiedades nativas de ZFS

Nombre de propiedad 

Tipo 

Valor predeterminado 

Descripción 

aclinherit

Cadena 

secure

Controla cómo se heredan las entradas de lista de control de acceso (ACL) cuando se crean los archivos y los directorios. Los valores son discard, noallow, secure y passthrough. Para obtener una descripción de estos valores, consulte Propiedades de ACL.

aclmode

Cadena 

groupmask

Controla cómo se modifica una entrada de lista de control de acceso (ACL) durante una operación de chmod. Los valores son discard, groupmask y passthrough. Para obtener una descripción de estos valores, consulte Propiedades de ACL.

atime

Booleano 

on

Controla si la hora de acceso de los archivos se actualiza cuando se leen. Si se desactiva esta propiedad, se evita la generación de tráfico de escritura al leer archivos y se puede mejorar considerablemente el rendimiento, si bien esto podría confundir a los programas de envío de correo y otras utilidades similares.

available

Número 

N/D 

Propiedad de sólo lectura que identifica la cantidad de espacio disponible para el conjunto de datos y todos los subordinados, suponiendo que no haya otra actividad en la agrupación. Como el espacio en el disco se comparte en una agrupación, el espacio disponible puede verse limitado por varios factores, como el tamaño físico de la agrupación, las cuotas, las reservas u otros conjuntos de datos de la agrupación.

La abreviatura de la propiedad es avail.

Para obtener más información sobre el cálculo de espacio, consulte Cálculo del espacio de ZFS.

canmount

Booleano 

on

Controla si un sistema de archivos determinado se puede montar con el comando zfs mount. Esta propiedad se puede establecer en cualquier sistema de archivos y la propiedad no es heredable. No obstante, cuando esta propiedad está establecida en off, los sistemas de archivos descendientes se pueden heredar, pero el sistema de archivos nunca se monta.

Si se establece la opción noauto, un conjunto de datos sólo se puede montar y desmontar de manera explícita. El conjunto de datos no se monta automáticamente al crearse o importarse el conjunto de datos, ni se monta con el comando zfs mount- a ni se desmonta con el comando zfs unmount-a.

Para obtener más información, consulte Propiedad canmount.

checksum

Cadena 

on

Controla la suma de comprobación utilizada para verificar la integridad de los datos. El valor predeterminado es on, que selecciona automáticamente un algoritmo adecuado, actualmente fletcher4. Los valores son on, off, fletcher2 , fletcher4 y sha256. El valor off deshabilita la comprobación de integridad en los datos del usuario. No se recomienda un valor de off.

compression

Cadena 

off

Habilita o inhabilita la compresión de este conjunto de datos. Los valores son on, off y lzjb, gzip o gzip-N. En la actualidad, configurar esta propiedad en lzjb, gzip o gzip- N equivale a establecerla en on. Habilitar la compresión en un sistema de archivos en el que ya hay datos sólo comprime los datos nuevos. Los datos que existan están sin comprimir.

La abreviatura de la propiedad es compress.

compressratio

Número 

N/D 

Propiedad de sólo lectura que identifica el índice de compresión alcanzado para un conjunto de datos, expresado como multiplicador. La compresión se puede activar ejecutando zfs set compression=on conjunto_datos.

El valor se calcula a partir del tamaño lógico de todos los archivos y la cantidad de datos físicos a los que se hace referencia. Incluye grabaciones explícitas mediante el uso de la propiedad compression.

copies

Número 

1

Establece la cantidad de copias de datos de usuarios por sistema de archivos. Los valores disponibles son 1, 2, o 3. Estas copias son adicionales a cualquier redundancia de agrupación. El espacio en el disco que utilicen varias copias de datos de usuarios se carga en los pertinentes archivo y conjunto de datos, y se contabiliza en relación con las cuotas y reservas. Además, la propiedad used se actualiza si se habilitan varias copias. La configuración de esta propiedad debe considerarse al crear el sistema de archivos, puesto que, si se modifica la propiedad en cualquier sistema ya creado, sólo se afecta a los datos nuevos que se escriban.

creation

Cadena 

N/D 

Propiedad de sólo lectura que identifica la fecha y la hora de creación de este conjunto de datos.

devices

Booleano 

on

Controla si se pueden abrir archivos de dispositivos en un sistema de archivos.

exec

Booleano 

on

Controla si se permite ejecutar programas en un sistema de archivos. Asimismo, si se establece en off, no se permiten las llamadas de mmap(2) con PROT_EXEC.

mounted

Booleano 

N/D 

Propiedad de sólo lectura que indica si este sistema de archivos, un clon o una instantánea se encuentra montada. Esta propiedad no se aplica a los volúmenes. El valor puede ser yes o no.

mountpoint

Cadena 

N/D 

Controla el punto de montaje utilizado para este sistema de archivos. Si la propiedad mountpoint se cambia para un sistema de archivos, se desmontan éste y cualquier descendiente que herede el punto de montaje. Si el valor nuevo es legacy, permanecen desmontados. En cambio, se vuelven a montar automáticamente en la nueva ubicación si la propiedad era legacy o none, o bien si estaban montados antes de que cambiara la propiedad. Además, cualquier nuevo sistema de archivos compartidos se comparte o no en la ubicación nueva.

Para obtener más información sobre el uso de esta propiedad, consulte Administración de puntos de montaje de ZFS.

primarycache

Cadena 

all

Controla la información que se guarda en la caché primaria (ARC). Los valores posibles son all, none y metadata. Si se establece en all, los datos de usuario y los metadatos se almacenan en la memoria caché. Si se establece en none, ni los datos de usuario ni los metadatos se almacenan en la memoria caché. Si se establece en metadata, sólo los metadatos se almacenan en la memoria caché.

origin

Cadena 

N/D 

Propiedad de sólo lectura para volúmenes o sistemas de archivos clónicos que identifica la instantánea a partir de la cual se ha creado el clon. No se puede destruir el origen (ni siquiera con las opciones -r o -f) en tanto exista un clon.

Los sistemas de archivos no clónicos tienen la propiedad origin establecida en none.

quota

Número (o none)

none

Limita la cantidad de espacio en el disco que un conjunto de datos y sus descendientes pueden consumir. Esta propiedad fuerza un límite físico sobre la cantidad de espacio utilizado, incluido todo el espacio consumido por descendientes, como los sistemas de archivos y las instantáneas. La configuración de una cuota en un descendiente de un conjunto de datos que ya tiene una no anula la cuota del descendiente, sino que impone un límite adicional. Las cuotas no se pueden establecer en volúmenes, ya que la propiedad volsize representa una cuota implícita.

Para obtener información sobre la configuración de cuotas, consulte Establecimiento de cuotas en sistemas de archivos ZFS.

readonly

Booleano 

off

Controla si un conjunto de datos se puede modificar. Si se establece en on, no se pueden efectuar modificaciones.

La abreviatura de la propiedad es rdonly.

recordsize

Número 

128K

Especifica un tamaño de bloque sugerido para los archivos del sistema de archivos.

La abreviatura de la propiedad es recsize. Para obtener información detallada, consulte Propiedad recordsize.

referenced

Número 

N/D 

Propiedad de sólo lectura que identifica la cantidad de datos a los que puede acceder un conjunto de datos, y que se pueden compartir o no con otros conjuntos de datos de la agrupación.

Cuando se crea una instantánea o un clon, inicialmente hace referencia a la misma cantidad de espacio en el disco que la instantánea o el sistema de archivos del que se creó, porque su contenido es idéntico. 

La abreviatura de la propiedad es refer.

refquota

Número (o none) 

none

Establece la cantidad de espacio en el disco que puede consumir un conjunto de datos. Esta propiedad impone un límite físico en la cantidad de espacio que se usa. El límite físico no incluye el espacio que utilizan los descendientes, como las instantáneas y los clones.

refreservation

Número (o none) 

none

Establece la cantidad mínima de espacio en el disco que se garantiza a un conjunto de datos, sin incluir descendientes como las instantáneas o los clones. Cuando la cantidad de espacio en el disco utilizado aparece bajo este valor, se considera que el conjunto de datos utiliza la cantidad de espacio especificado por refreservation. La reserva de refreservation se representa mediante el espacio en el disco utilizado del conjunto de datos principal, y repercute en las reservas y cuotas del conjunto de datos principal.

Si se establece refreservation, sólo se permite una instantánea en caso de que, fuera de esta reserva, exista espacio libre en la agrupación para alojar la cantidad actual de bytes a los que se hace referencia en el conjunto de datos.

La abreviatura de la propiedad es refreserv.

reservation

Número (o none) 

none

Establece la cantidad de espacio mínimo en el disco garantizada para un conjunto de datos y sus descendientes. Cuando la cantidad de espacio utilizado aparece bajo este valor, se considera que el conjunto de datos utiliza la cantidad de espacio especificado por su reserva. Las reservas representan el espacio en el disco utilizado del conjunto de datos principales, y repercuten en las reservas y cuotas del conjunto de datos principales.

La abreviatura de la propiedad es reserv.

Para obtener más información, consulte Establecimiento de reservas en sistemas de archivos ZFS.

secondarycache

Cadena 

all

Controla la información que se almacena en la memoria caché secundaria (L2ARC). Los valores posibles son all, none y metadata. Si se establece en all, los datos de usuario y los metadatos se almacenan en la memoria caché. Si se establece en none, ni los datos de usuario ni los metadatos se almacenan en la memoria caché. Si se establece en metadata, sólo los metadatos se almacenan en la memoria caché.

setuid

Booleano 

on

Controla si el bit de setuid se cumple en un sistema de archivos.

shareiscsi

Cadena 

off 

Controla si un volumen de ZFS se comparten como un destino iSCSI. Los valores de la propiedad son on, off y type=disk. Es posible que desee establecer shareiscsi=en para un sistema de archivos para que todos los volúmenes de ZFS dentro del sistema de archivos se comparten de forma predeterminada. Sin embargo, si establece este propiedad de un sistema de archivos, no logrará un efecto directo.

sharenfs

Cadena 

off

Controla si el sistema de archivos está disponible en NFS y las opciones que se utilizan. Si se establece en on, el comando zfs share se invoca sin opciones. De lo contrario, el comando zfs share se invoca con opciones equivalentes al contenido de esta propiedad. Si se establece en off, el sistema de archivos se administra mediante los comandos heredados share y unshare, y el archivo dfstab.

Para obtener más información sobre cómo compartir los sistemas de archivos ZFS, consulte Cómo compartir y anular la compartición de sistemas de archivos ZFS.

snapdir

Cadena 

hidden

Controla si el directorio .zfs está oculto o visible en la raíz del sistema de archivos. Para obtener más información sobre el uso de instantáneas, consulte Información general de instantáneas de ZFS.

type

Cadena 

N/D 

Propiedad de sólo lectura que identifica el tipo de datos como filesystem (sistema de archivos o clon), volume o snapshot.

used

Número 

N/D 

Propiedad de sólo lectura que identifica la cantidad de espacio que consumen el conjunto de datos y todos sus descendientes.

Para obtener información detallada, consulte Propiedad used.

usedbychildren

Número 

off

Propiedad de sólo lectura que identifica la cantidad de espacio en el disco utilizado por subordinados de este conjunto de datos, que se liberaría si todos los subordinados del conjunto de datos se destruyeran. La abreviatura de la propiedad es usedchild.

usedbydataset

Número 

off

Propiedad de sólo lectura que identifica la cantidad de espacio en el disco que utiliza este conjunto de datos en sí, que se liberaría si se destruyera el conjunto de datos, después de eliminar primero las instantáneas y los refreservation. La abreviatura de la propiedad es usedds.

usedbyrefreservation

Número 

off

Propiedad de sólo lectura que identifica la cantidad de espacio en el disco que utiliza un refreservation establecido en un conjunto de datos, que se liberaría si el refreservation se eliminara. La abreviatura de la propiedad es usedrefreserv.

usedbysnapshots

Número 

off

Propiedad de sólo lectura que identifica la cantidad de espacio en el disco que consumen las instantáneas de este conjunto de datos. En concreto, es la cantidad de espacio en el disco que se liberaría si todas las instantáneas de este conjunto de instantáneas se destruyeran. Tenga en cuenta que esto no es simplemente la suma de las propiedades used de las instantáneas, ya que varias instantáneas pueden compartir el espacio. La abreviatura de la propiedad es usedsnap.

version

Número 

N/D 

Identifica la versión de disco de un sistema de archivos, que es independiente de la versión de la agrupación. Esta propiedad sólo se puede establecer en una versión posterior que está disponible en la versión del software admitida. Para obtener más información, consulte el comando zfs upgrade.

volsize

Número 

N/D 

En el caso de volúmenes, especifica el tamaño lógico del volumen.

Para obtener información detallada, consulte Propiedad volsize.

volblocksize

Número 

8 KB

En volúmenes, especifica el tamaño del bloque del volumen. El tamaño del bloque no se puede cambiar cuando el volumen se ha escrito, por lo que debe establecer el tamaño del bloque en el momento de la creación del volumen. El tamaño de bloque predeterminado para volúmenes es de 8 Kbytes. Es válida cualquier potencia de 2 desde 512 bytes hasta 128 Kbytes.

La abreviatura de la propiedad es volblock.

zoned

Booleano 

N/D 

Indica si este conjunto de datos se ha agregado a una zona no global. Si se establece esta propiedad, el punto de montaje no recibe permisos en la zona global y ZFS no puede montar dicho sistema de archivos cuando se solicite. Al instalarse una zona por primera vez, esta propiedad se establece para cualquier sistema de archivos que se agregue.

Para obtener más información sobre el uso de ZFS con zonas instaladas, consulte Uso de ZFS en un sistema Solaris con zonas instaladas.

xattr

Booleano 

on

Indica si los atributos extendidos se habilitan (on) o deshabilitan (off) para este sistema de archivos.

Propiedades nativas de sólo lectura de ZFS

Las propiedades nativas de sólo lectura se pueden recuperar, pero no definir. Las propiedades nativas de sólo lectura no se heredan. Algunas propiedades nativas son específicas de un tipo concreto de conjunto de datos. En tales casos, el tipo de conjunto de datos se menciona en la descripción de la Tabla 6–1.

Las propiedades nativas de sólo lectura aparecen aquí y se describen en la Tabla 6–1.

Para obtener más información sobre el cálculo de espacio en el disco, incluidas las propiedades used, referenced y available, consulte Cálculo del espacio de ZFS.

Propiedad used

La propiedad used es una propiedad de sólo lectura que identifica la cantidad de espacio en el disco que consume este conjunto de datos y todos sus descendientes. Este valor se comprueba con la cuota del conjunto de datos y la reserva. El espacio utilizado no incluye la reserva del conjunto de datos, pero considera la reserva de cualquier conjunto de datos descendiente. La cantidad de espacio que un conjunto de datos consume en su elemento principal, y la cantidad de espacio en el disco que se libera si el conjunto de datos se destruye repetidamente, es la mayor entre su espacio utilizado y su reserva.

Cuando se crean instantáneas, su espacio en el disco se comparte inicialmente entre la instantánea y el sistema de archivos, y posiblemente con instantáneas anteriores. Conforme cambia el sistema de archivos, el espacio en el disco que se compartía anteriormente se vuelve exclusivo para la instantánea, y se cuenta en el espacio utilizado de la instantánea. El espacio que utiliza una instantánea representa sólo sus datos exclusivos. Asimismo, eliminar instantáneas puede aumentar la cantidad de espacio en el disco exclusivo para (y utilizado por) otras instantáneas. Para obtener información sobre los problemas de espacio y las instantáneas, consulte Comportamiento de falta de espacio.

La cantidad de espacio en el disco utilizado, disponible y con referencia no incluye los cambios pendientes. Los cambios pendientes suelen calcularse en pocos segundos. Si se confirma un cambio en un disco mediante la función fsync(3c) u O_SYNC, no se garantiza necesariamente que la información de uso del espacio en el disco se actualice de inmediato.

La información de las propiedades usedbychildren, usedbydataset , usedbyrefreservation y usedbysnapshots se puede mostrar mediante el comando zfs list - o space. Estas propiedades identifican la propiedad used en espacio en el disco que consumen los descendientes. Para obtener más información, consulte la Tabla 6–1.

Propiedades nativas de ZFS configurables

Las propiedades nativas configurables son aquellas cuyos valores se pueden recuperar y establecer. Las propiedades nativas configurables se establecen mediante el comando zfs set, como se describe en Configuración de propiedades de ZFS, o mediante el comando zfs create, como se describe en Creación de un sistema de archivos ZFS. Salvo las cuotas y las reservas, las propiedades nativas configurables se heredan. Si desea más información sobre cuotas y reservas, consulte Configuración de cuotas y reservas de ZFS.

Algunas propiedades nativas configurables son específicas de un tipo concreto de conjunto de datos. En estos casos, el tipo de conjunto de datos concreto se menciona en la descripción de la Tabla 6–1. Si no se menciona específicamente, una propiedad se aplica a todos los tipos de conjuntos de datos: sistemas de archivos, clones, volúmenes e instantáneas.

Las propiedades configurables aparecen aquí y se describen en la Tabla 6–1.

Propiedad canmount

Si esta propiedad se establece en off, el sistema de archivos no se puede montar mediante los comandos zfs mount ni zfs mount -a. Establecer esta propiedad en of es como establecer la propiedad mountpoint en none, excepto que el conjunto de datos todavía tiene una propiedad mountpoint normal que se puede heredar. Por ejemplo, puede establecer esta propiedad en off, así como establecer propiedades heredables para los sistemas de archivos descendientes. Sin embargo, el sistema de archivos principal no se puede montar nunca, ni los usuarios pueden acceder a él. En este caso, el sistema de archivos principal sirve como contenedor para poder establecer propiedades en el contenedor, pero nunca se puede acceder al contenedor en sí.

En el ejemplo siguiente, se crea userpool y su propiedad canmount se establece en off. Los puntos de montaje para los sistemas de archivos de usuario descendientes se establecen en un punto de montaje común, /export/home. Los sistemas de archivo descendientes heredan las propiedades que se establecen en el sistema de archivos superior, pero el sistema de archivos superior no se monta nunca.


# zpool create userpool mirror c0t5d0 c1t6d0
# zfs set canmount=off userpool
# zfs set mountpoint=/export/home userpool
# zfs set compression=on userpool
# zfs create userpool/user1
# zfs create userpool/user2
# zfs mount
userpool/user1                  /export/home/user1
userpool/user2                  /export/home/user2

Si la propiedad canmount se establece en noauto, el conjunto de datos sólo se puede montar de manera explícita, no automáticamente. Este valor lo utiliza el software de actualización de Oracle Solaris para que, en el momento del inicio, sólo se monten los conjuntos de datos pertenecientes al entorno de inicio activo.

Propiedad recordsize

La propiedad recordsize especifica un tamaño de bloque sugerido para los archivos del sistema de archivos.

Esta propiedad se designa exclusivamente para utilizarse con cargas de trabajo de la base de datos que acceden a los archivos en registros de tamaño fijo. ZFS ajusta automáticamente el tamaño de los bloques de acuerdo con algoritmos internos optimizados para los patrones de acceso habituales. En cuanto a las bases de datos que crean archivos muy grandes pero que acceden a los archivos en pequeños bloques aleatorios, estos algoritmos quizá funcionen por debajo de su nivel habitual. Si se especifica un valor de recordsize mayor o igual que el tamaño de grabación de la base de datos, el rendimiento puede mejorar considerablemente. El uso de esta propiedad se desaconseja de manera especial en los sistemas de archivos de finalidad general; puede afectar negativamente al rendimiento. El tamaño especificado debe ser una potencia de 2 mayor o igual que 512 y menor o igual que 128 KB. El cambio del valor recordsize en los sistemas de archivos sólo afecta a los archivos creados posteriormente. No afecta a los archivos ya creados.

La abreviatura de la propiedad es recsize.

Propiedad volsize

La propiedad volsize especifica el tamaño lógico del volumen. De forma predeterminada, la creación de un volumen establece una reserva para la misma cantidad. Cualquier cambio en volsize se refleja en un cambio equivalente en la reserva. Estas comprobaciones se utilizan para evitar un comportamiento inesperado para los usuarios. Un volumen que contenga menos espacio del que indica como disponible puede provocar un comportamiento indefinido o daño de los datos, según cómo se utilice el volumen. Estos efectos también pueden darse si el tamaño del volumen se cambia durante su uso, especialmente si se reduce el tamaño. Al ajustar el tamaño del volumen se debe ir con sumo cuidado.

Aunque no se recomienda, puede crear un volumen disperso si especifica el indicador -s en el comando zfs create -V o si cambia la reserva después de crear el volumen. Un volumen disperso se define como un volumen donde la reserva no es igual al tamaño del volumen. En un volumen disperso, los cambios en volsize no se reflejan en la reserva.

Para obtener más información sobre el uso de volúmenes, consulte Volúmenes de ZFS.

Propiedades de usuario de ZFS

Además de las propiedades nativas, ZFS es compatible con las propiedades aleatorias del usuario. Las propiedades del usuario no repercuten en el comportamiento del sistema de archivos ZFS, pero puede usarlas para anotar información de manera que tenga sentido en su entorno.

Los nombres de propiedad del usuario deben ajustarse a las características siguientes:

La convención habitual es que el nombre de la propiedad se divida en los dos componentes siguientes, pero este espacio de nombre no lo aplica ZFS:


module:property

Cuando haga un uso programático de las propiedades del usuario, utilice un nombre de dominio DNS inverso para el componente módulo de nombres de propiedades con vistas a reducir la posibilidad de que dos paquetes desarrollados independientemente utilicen el mismo nombre de propiedad para fines diferentes. Los nombres de propiedad que comiencen por com.sun. se reservan para su uso por Oracle Corporation.

Los valores de las propiedades de usuario deben ajustarse a las convenciones siguientes:

Por ejemplo:


# zfs set dept:users=finance userpool/user1
# zfs set dept:users=general userpool/user2
# zfs set dept:users=itops userpool/user3

Todos los comandos que se utilizan en propiedades, como zfs list, zfs get, zfs set, etc., se pueden utilizar para manipular las propiedades nativas y las del usuario.

Por ejemplo:


zfs get -r dept:users userpool
NAME            PROPERTY    VALUE           SOURCE
userpool        dept:users  all             local
userpool/user1  dept:users  finance         local
userpool/user2  dept:users  general         local
userpool/user3  dept:users  itops           local

Para borrar una propiedad de usuario, utilice el comando zfs inherit. Por ejemplo:


# zfs inherit -r dept:users userpool

Si la propiedad no se define en ningún conjunto de datos superior, se elimina por completo.

Consulta de información del sistema de archivos ZFS

El comando zfs list ofrece un mecanismo ampliable para ver y consultar información del conjunto de datos. En esta sección se explican las consultas básicas y complejas.

Visualización de información básica de ZFS

Puede visualizar información básica del conjunto de datos mediante el comando zfs list sin opciones. Este comando muestra los nombres de todos los conjuntos de datos en el sistema y los de sus propiedades used, available, referenced y mountpoint. Para obtener más información sobre estas propiedades, consulte Introducción a las propiedades de ZFS.

Por ejemplo:


# zfs list
NAME                   USED  AVAIL  REFER  MOUNTPOINT
pool                   476K  16.5G    21K  /pool
pool/clone              18K  16.5G    18K  /pool/clone
pool/home              296K  16.5G    19K  /pool/home
pool/home/marks        277K  16.5G   277K  /pool/home/marks
pool/home/marks@snap      0      -   277K  -
pool/test               18K  16.5G    18K  /test

También puede utilizar este comando para visualizar conjuntos de datos específicos si proporciona el nombre del conjunto de datos en la línea de comandos. Asimismo, utilice la opción -r para mostrar repetidamente todos los descendientes del conjunto de datos. Por ejemplo:


# zfs list -r pool/home/marks
NAME                   USED  AVAIL  REFER  MOUNTPOINT
pool/home/marks        277K  16.5G   277K  /pool/home/marks
pool/home/marks@snap      0      -   277K  -

Puede utilizar el comando lista zfs con el punto de montaje de un sistema de archivos. Por ejemplo:


# zfs list /pool/home/marks
NAME              USED  AVAIL  REFER  MOUNTPOINT
pool/home/marks   277K  16.5G   277K  /pool/home/marks

El ejemplo siguiente muestra cómo visualizar información básica sobre tank/home/chua y todos sus conjuntos de datos descendientes.


# zfs list -r tank/home/chua
NAME                        USED  AVAIL  REFER  MOUNTPOINT 
tank/home/chua		          26.0K  4.81G  10.0K  /tank/home/chua 
tank/home/chua/projects       16K  4.81G   9.0K  /tank/home/chua/projects
tank/home/chua/projects/fs1    8K  4.81G     8K  /tank/home/chua/projects/fs1 
tank/home/chua/projects/fs2    8K  4.81G     8K  /tank/home/chua/projects/fs2

Para obtener más información sobre el comando zfs list, consulte zfs(1M).

Creación de consultas de ZFS complejas

La salida zfs list se puede personalizar mediante las opciones -o, -t y -H.

Puede personalizar la salida del valor de las propiedades mediante la opción -o y una lista separada por comas de las propiedades en cuestión. También puede proporcionar una propiedad del conjunto de datos como argumento válido. Para obtener una lista de todas las propiedades de conjuntos de datos compatibles, consulte Introducción a las propiedades de ZFS. Además de las propiedades que se definen, la lista de la opción -o también puede contener el name literal para indicar que la salida debe incluir el nombre del conjunto de datos.

El ejemplo siguiente utiliza zfs list para mostrar el nombre del conjunto de datos, junto con los valores de las propiedades sharenfs y mountpoint .


# zfs list -o name,sharenfs,mountpoint
NAME                   SHARENFS         MOUNTPOINT
tank                   off              /tank
tank/home              on               /tank/home
tank/home/ahrens       on               /tank/home/ahrens
tank/home/bonwick      on               /tank/home/bonwick
tank/home/chua         on               /tank/home/chua
tank/home/eschrock     on               legacy
tank/home/moore        on               /tank/home/moore
tank/home/tabriz       ro               /tank/home/tabriz

Puede utilizar la opción -t para especificar los tipos de conjuntos de datos que se deben mostrar. Los tipos válidos se describen en la tabla siguiente.

Tabla 6–2 Tipos de conjuntos de datos de ZFS

Tipo 

Descripción 

filesystem

Sistemas de archivos y clones 

volume

Volúmenes 

snapshot

Instantáneas 

Las opciones -t toman una lista separada por comas de los tipos de conjuntos de datos que mostrar. El ejemplo siguiente utiliza las opciones -t y - o simultáneamente para mostrar el nombre y la propiedad used para todos los sistemas:


# zfs list -t filesystem -o name,used
NAME              USED
pool              476K
pool/clone         18K
pool/home         296K
pool/home/marks   277K
pool/test          18K

Puede utilizar la opción -H para omitir la cabecera zfs list de la salida que se ha generado. Con la opción -H, todos los espacios en blanco se sustituyen por el carácter de tabulación. Puede usar esta opción si necesita una salida analizable; por ejemplo, con las secuencias de comandos. El ejemplo siguiente muestra la salida generada a partir del uso del comando zfs list con la opción -H:


# zfs list -H -o name
pool
pool/clone
pool/home
pool/home/marks
pool/home/marks@snap
pool/test

Administración de propiedades de ZFS

Las propiedades del conjunto de datos se administran mediante los subcomandos set, inherit y get del comando zfs.

Configuración de propiedades de ZFS

Puede utilizar el comando zfs set para modificar cualquier propiedad configurable del conjunto de datos. También puede usar el comando zfs create para establecer las propiedades cuando se crea el conjunto de datos. Para obtener una lista de propiedades del conjunto de datos configurables, consulte Propiedades nativas de ZFS configurables.

El comando zfs set toma una secuencia de propiedad/valor con el formato de propiedad=valor y un nombre de conjunto de datos. Sólo se puede establecer o modificar una propiedad durante cada invocación de zfs set.

El ejemplo siguiente establece la propiedad atime en off para tank/home.


# zfs set atime=off tank/home

Además, cualquier propiedad del sistema de archivos se puede establecer al crear el sistema. Por ejemplo:


# zfs create -o atime=off tank/home

Puede especificar valores numéricos de propiedades mediante el uso de sufijos sencillos (en orden creciente de importancia): BKMGTPEZ. Cualquiera de estos sufijos puede ir seguido de una b opcional que indica los bytes, con la excepción del sufijo B, que ya indica los bytes. Las cuatro invocaciones siguientes de zfs set son expresiones numéricas equivalentes que indican que la propiedad quota se puede establecer en el valor de 50 GB en el sistema de archivos 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

Los valores de propiedades no numéricas distinguen mayúsculas de minúsculas y deben estar en minúsculas, excepto mountpoint y sharenfs. Los valores de estas propiedades pueden tener caracteres en mayúscula y minúscula.

Para obtener más información sobre el comando zfs set, consulte zfs(1M).

Herencia de propiedades de ZFS

Todas las propiedades configurables, con la excepción de cuotas y reservas, heredan el valor del conjunto de datos superior, a menos que en el descendiente se establezca explícitamente una cuota o reserva. Si ningún superior tiene un valor explícito establecido para una propiedad heredada, se usa el valor predeterminado para la propiedad. Puede utilizar el comando zfs inherit para eliminar un valor de propiedad y, de este modo, hacer que el valor se herede del elemento superior.

El ejemplo siguiente utiliza el comando zfs set para activar la compresión para el sistema de archivos tank/home/bonwick. A continuación, zfs inherit se utiliza para desconfigurar la propiedad compression; de este modo, la propiedad hereda el valor predeterminado de off. Como ni home ni tank tienen la propiedad compression configurada localmente, se utiliza el valor predeterminado. Si ambos tienen activada la compresión, se utiliza el valor configurado en el superior más inmediato (home en este ejemplo).


# 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

El subcomando inherit se aplica de forma recursiva cuando se especifica la opción -r. En el ejemplo siguiente, el comando hace que el valor de la propiedad compression: sea heredado por tank/home y cualquier descendiente que pudiera haber:


# zfs inherit -r compression tank/home

Nota –

Si se utiliza la opción -r, se borra la configuración actual de la propiedad en todos los conjuntos de datos descendientes.


Para obtener más información sobre el comando zfs inherit, consulte zfs(1M).

Consulta de las propiedades de ZFS

La forma más sencilla de consultar los valores de las propiedades es mediante el comando zfs list. Para obtener más información, consulte Visualización de información básica de ZFS. Sin embargo, en el caso de consultas y secuencias de comandos complejas, use el comando zfs get para proporcionar información detallada en un formato personalizado.

Puede utilizar el comando zfs get para recuperar cualquier propiedad del conjunto de datos. El ejemplo siguiente muestra la manera de recuperar un solo valor de propiedad en un conjunto de datos:


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

La cuarta columna, SOURCE, indica el origen de este valor de propiedad. La tabla siguiente define los posibles valores de origen.

Tabla 6–3 Valores posibles de SOURCE (zfs get)

Valor de origen 

Descripción 

default

Este valor de propiedad nunca se ha configurado explícitamente para este conjunto de datos ni sus superiores. En esta propiedad se utiliza el valor predeterminado. 

inherited from nombre_conjunto_datos

El valor de esta propiedad se hereda del superior, tal como especifica nombre_conjunto_datos.

local

El valor de esta propiedad se ha configurado explícitamente para este conjunto de datos mediante zfs set.

temporary

El valor de esta propiedad se ha establecido mediante la opción zfs mount - o y sólo es válida durante el ciclo de vida del montaje. Para obtener más información sobre las propiedades de puntos de montaje temporales, consulte Uso de propiedades de montaje temporales.

- (none) 

Esta propiedad es de sólo lectura. Su valor lo ha generado ZFS. 

Puede utilizar la palabra clave especial all para recuperar todos los valores de propiedades del conjunto de datos. Los ejemplos siguientes usan la palabra clave 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

Nota –

Las propiedades casesensitivity, nbmand, normalization, sharesmb, utf8only y vscan no están totalmente operativas en la versión Oracle Solaris 10 porque el servicio Oracle Solaris SMB servicio no es compatible con la versión Oracle Solaris 10.


La opción -s de zfs get permite especificar, por tipo de origen, las propiedades que mostrar. Esta opción toma una lista separada por comas que indica los tipos de origen deseados. Sólo aparecen las propiedades con el tipo de origen especificado. Los tipos de origen válidos son local, default, inherited, temporary y none. El ejemplo siguiente muestra todas las propiedades que se han establecido localmente en pool.


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

Cualquiera de las opciones anteriores se puede combinar con la opción -r para mostrar de forma recursiva las propiedades especificadas en todos los subordinados del conjunto de datos indicado. En el ejemplo siguiente, todas las propiedades temporales de todos los conjuntos de datos en tank aparecen de forma recursiva:


# 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

Puede consultar los valores de las propiedades mediante el comando zfs get sin especificar un sistema de archivos de destino, lo cual significa que el comando funciona en todas las agrupaciones o los sistemas de archivos. Por ejemplo:


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

Para obtener más información sobre el comando zfs get, consulte zfs(1M).

Consulta de propiedades de ZFS para secuencias de comandos

El comando zfs get admite las opciones -H y - o, diseñadas para secuencias de comandos. Puede utilizar la opción -H para omitir información de cabecera y sustituir un espacio en blanco con el carácter de tabulación. El espacio en blanco uniforme permite el fácil análisis de los datos. Puede utilizar la opción -o para personalizar la salida de los modos siguientes:

El ejemplo siguiente muestra la forma de recuperar un valor simple mediante las opciones -H y -o de zfs get:


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

La opción -p informa de valores numéricos como sus valores exactos. Por ejemplo, 1 MB se especifica como 1000000. Esta opción puede usarse de la forma siguiente:


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

Puede utilizar la opción -r junto con una de las opciones anteriores para recuperar de forma recursiva los valores solicitados para todos los descendientes. El ejemplo siguiente utiliza las opciones -H, -o y - r para recuperar el nombre del conjunto de datos y el valor de la propiedad used para export/home y sus descendientes, mientras se omite la salida de cualquier encabezado:


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

Montaje y compartición de sistemas de archivos ZFS

En esta sección se describe la forma de administrar en ZFS puntos de montaje y sistemas de archivos compartidos.

Administración de puntos de montaje de ZFS

De manera predeterminada, un sistema de archivos ZFS se monta automáticamente cuando se crea. Puede determinar un comportamiento de punto de montaje específico para un sistema de archivos, tal y como se describe en esta sección.

También puede establecer el punto de montaje predeterminado para el conjunto de datos de una agrupación al crearlo mediante la opción m del comando -zpool create. Para obtener más información sobre la creación de agrupaciones, consulte Creación de una agrupación de almacenamiento de ZFS.

De forma predeterminada, todos los sistemas de archivos ZFS se montan con ZFS en el inicio mediante el servicio svc://system/filesystem/local de la Utilidad de gestión de servicios (SMF). Los sistemas de archivos se montan en /ruta, donde ruta corresponde al nombre del sistema de archivos.

Puede anular el punto de montaje predeterminado si utiliza el comando zfs set para establecer la propiedad mountpoint en una ruta específica. ZFS crea automáticamente este punto de montaje, si fuera necesario, y monta de forma automática el sistema de archivos asociados al invocarse el comando zfs mount -a, sin solicitar la edición del archivo /etc/vfstab.

La propiedad mountpoint se hereda. Por ejemplo, si pool/home tiene la propiedad mountpoint configurada en /export/stuff, entonces pool/home/user hereda /export/stuff/user para su propiedad mountpoint.

Para evitar que se monte un sistema de archivos, establezca la propiedad mountpoint en none. Además, la propiedad canmount se puede utilizar para controlar si se puede montar un sistema de archivos. Para obtener información sobre la propiedad canmount, consulte Propiedad canmount.

Los sistemas de archivos también se administran a través de las interfaces de montaje heredadas utilizando zfs establecido para definir la propiedad mountpoint en legacy. De este modo, se impide que ZFS monte y administre automáticamente un sistema de archivos. En su lugar se deben utilizar las herramientas heredadas que incluyen los comandos mount y umount, así como el archivo /etc/vfstab. Para obtener más información sobre montajes heredados, consulte Puntos de montaje heredados.

Puntos de montaje automáticos

ZFS administra cualquier conjunto de datos cuya propiedad mountpoint no sea legacy. En el ejemplo siguiente se crea un conjunto de datos cuyo punto de montaje lo administra ZFS automáticamente:


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

También puede configurar explícitamente la propiedad mountpoint tal como se muestra en el ejemplo siguiente:


# 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 se cambia la propiedad mountpoint, el sistema de archivos se desmonta automáticamente del punto de montaje anterior y se vuelve a montar en el nuevo punto de montaje. Se crean directorios de punto de montaje según sea preciso. Si ZFS no puede desmontar un sistema de archivos porque está activo, se informa de un error y se debe forzar un desmontaje manual.

Puntos de montaje heredados

Puede administrar los sistemas de archivos ZFS con herramientas heredadas si la propiedad mountpoint se configura como legacy. Los sistemas de archivos heredados se deben administrar mediante los comandos mount y umount, así como el archivo /etc/vfstab. ZFS no monta automáticamente sistemas de archivos heredados en el inicio, y los comandos mount y umount de ZFS no funcionan en conjuntos de datos de este tipo. Los ejemplos siguientes muestran cómo configurar y administrar un conjunto de datos de ZFS en el modo de herencia:


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

Para montar automáticamente un sistema de archivos heredado en el inicio, debe agregar una entrada al archivo /etc/vfstab. El ejemplo siguiente muestra el aspecto que podría tener la entrada en el archivo /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		-	

Las entradas device to fsck y fsck pass se establecen en - porque el comando fsck no es aplicable a los sistemas de archivos ZFS. Para obtener más información sobre integridad de datos de ZFS, consulte Semántica transaccional.

Montaje de sistemas de archivos ZFS

ZFS monta automáticamente sistemas de archivos cuando éstos se crean o cuando el sistema se inicia. El uso del comando zfs mount sólo es necesario cuando se deben cambiar las opciones de montaje, o explícitamente montar o desmontar sistemas de archivos.

El comando zfs mount sin argumentos muestra todos los sistemas de archivos montados que son administrados por ZFS. No se muestran los puntos de montaje administrados de herencia. Por ejemplo:


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

Puede utilizar la opción -a para montar todos los sistemas de archivos ZFS administrados. Los sistemas de archivos administrados de herencia no están montados. Por ejemplo:


# zfs mount -a

De forma predeterminada, ZFS no permite el montaje en la parte superior de un directorio que no está vacío. Para forzar un montaje en la parte superior de un directorio que no está vacío, debe usar la opción -O. Por ejemplo:


# 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

Los puntos de montaje heredados se deben administrar mediante las herramientas de herencia. Intentar usar herramientas de ZFS genera un error. Por ejemplo:


# 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

Cuando se monta un sistema de archivos, éste utiliza un conjunto de opciones de montaje basadas en los valores de propiedad asociados con el conjunto de datos. La correspondencia entre las propiedades y las opciones de montaje es la siguiente:

Tabla 6–4 Propiedades relacionadas con el montaje de ZFS y opciones de montaje

Propiedad 

Opción de montaje  

atime

Atime/noatime

devices

devices/nodevices

exec

exec/noexec

nbmand

Nbmand/nonbmand

readonly

ro/rw

setuid

setuid/nosetuid

xattr

Xattr/noaxttr

La opción de montaje nosuid es un alias de nodevices, nosetuid.

Uso de propiedades de montaje temporales

Si alguna de las opciones anteriores se configura explícitamente mediante la opción -o con el comando zfs mount, el valor de propiedad asociado se anula de manera temporal. Estos valores de propiedades se indican como temporary mediante el comando zfs get y recuperan la configuración original cuando se desmonta el sistema de archivos. Si se cambia un valor de propiedad mientras se monta el conjunto de datos, el cambio surte efecto inmediatamente y se anula cualquier configuración temporal.

En el ejemplo siguiente, la opción de montaje de sólo lectura se configura temporalmente en el sistema de archivos tank/home/perrin. Se supone que el sistema de archivos está desmontado.


# zfs mount -o ro tank/home/perrin

Para cambiar temporalmente una propiedad de un sistema de archivos que está montado, debe usar la opción especial remount. En el ejemplo siguiente, la propiedad atime se cambia temporalmente a off para un sistema de archivos que esté montado:


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

Para obtener más información sobre el comando zfs mount, consulte zfs(1M).

Desmontaje de los sistemas de archivos ZFS

Los sistemas de archivos ZFS se pueden desmontar mediante el subcomando zfs unmount. El comando unmount puede considerar como argumentos el punto de montaje o el nombre del sistema de archivos.

En el ejemplo siguiente, el nombre del sistema de archivos desmonta un sistema de archivos:


# zfs unmount tank/home/tabriz

En el ejemplo siguiente, el punto de montaje desmonta el sistema de archivos:


# zfs unmount /export/home/tabriz

El comando unmount falla si el sistema de archivos está ocupado. Para forzar el desmontaje de un sistema de archivos, puede usar la opción -f. Tenga cuidado al forzar el desmontaje de un sistema de archivos si su contenido está en uso. La aplicación se puede comportar de manera imprevista.


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

Para ofrecer compatibilidad con versiones anteriores, el comando umount se puede usar para desmontar sistemas de archivos ZFS. Por ejemplo:


# umount /export/home/bob

Para obtener más información sobre el comando zfs umount, consulte zfs(1M).

Cómo compartir y anular la compartición de sistemas de archivos ZFS

ZFS puede compartir automáticamente sistemas de archivos mediante la configuración de la propiedad sharenfs. Gracias a este método, no hay necesidad de modificar el archivo /etc/dfs/dfstab cuando se comparte un nuevo sistema de archivos. La propiedad sharenfs es una lista de opciones separada por comas para pasar al comando share. El valor on es un alias para las opciones de compartición predeterminadas, que ofrecen permisos read/write a cualquier usuario. El valor off indica que el sistema de archivos no está administrado por ZFS y se puede compartir por medios tradicionales, como el archivo /etc/dfs/dfstab. Todos los sistemas de archivos cuya propiedad sharenfs no esté establecida en off se comparten durante el inicio.

Control de la semántica de compartición

De forma predeterminada, todos los sistemas de archivos están sin compartir. Para compartir un nuevo sistema de archivos, utilice una sintaxis de zfs set similar a la siguiente:


# zfs set sharenfs=on tank/home/eschrock

La propiedad sharenfs se hereda y los sistemas de archivos se comparten automáticamente al crearse, si su propiedad heredada no es off. Por ejemplo:


# 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 y tank/home/tabriz son inicialmente de escritura compartida porque heredan la propiedad sharenfs de tank/home. Si la propiedad se establece en ro (sólo lectura), tank/home/tabriz es de sólo lectura compartida, al margen de la propiedad sharenfs que se ha configurado para tank/home .

Anulación de sistemas de archivos ZFS compartidos

Si bien la compartición de la mayoría de los sistemas de archivos se activa o desactiva al iniciase, crearse y destruirse, en ocasiones la compartición de los sistemas de archivos se debe anular de forma explícita. Para ello, utilice el comando zfs unshare. Por ejemplo:


# zfs unshare tank/home/tabriz

Este comando anula la compartición del sistema de archivos tank/home/tabriz. Para que los sistemas de archivos ZFS dejen de compartirse en el sistema, debe usar la opción - a.


# zfs unshare -a

Cómo compartir sistemas de archivos ZFS

La mayor parte del tiempo, el comportamiento automático de ZFS con respecto a compartir sistemas de archivos durante el inicio y la creación es suficiente para las operaciones normales. Si por algún motivo anula la compartición de un sistema de archivos, puede compartirlo de nuevo mediante el comando zfs share. Por ejemplo:


# zfs share tank/home/tabriz

También puede compartir todos los sistemas de archivos ZFS en el sistema mediante la opción - a.


# zfs share -a

Comportamiento de compartición heredado

Si la propiedad sharenfs se establece en off, ZFS no intenta compartir ni anular la compartición del sistema de archivos en ningún momento. Este valor permite administrar la compartición de sistemas de archivos mediante medios tradicionales, como el archivo /etc/dfs/dfstab.

A diferencia del comando mount heredado, los comandos share y unshare heredados todavía son válidos en sistemas de archivos ZFS. De este modo, puede compartir manualmente un sistema de archivos con opciones distintas de las de la propiedad sharenfs. Se desaconseja este modelo de administración. Administre las comparticiones de NFS íntegramente con ZFS o con el archivo /etc/dfs/dfstab. El modelo de administración de ZFS se ha ideado para ser más sencillo y requerir menos recursos que el modelo tradicional.

Configuración de cuotas y reservas de ZFS

Puede usar la propiedad quota para establecer un límite en la cantidad de espacio en el disco que puede usar un sistema de archivos. Asimismo, puede usar la propiedad reservation para garantizar que un sistema de archivos disponga de una cierta cantidad de espacio en el disco. Ambas propiedades se aplican al conjunto de datos donde se han configurado y a todos los descendientes de ese conjunto de datos.

Es decir, si una cuota se configura en el conjunto de datos tank/home, la cantidad total de espacio utilizado por tank/home y todos sus descendientes no puede superar la cuota. Asimismo, si se concede una reserva a tank/home, tank/home y todos sus descendientes se separan de esa reserva. La propiedad used informa de la cantidad de espacio utilizado por un conjunto de datos y todos sus descendientes.

Las propiedades refquota y refreservation están disponibles para administrar el espacio de sistemas de archivos sin tener en cuenta el espacio en el disco que consumen los descendientes, como las instantáneas y los clones.

En esta versión de Solaris, puede establecer una cuota de usuario o grupo sobre la cantidad de espacio en el disco consumida por archivos que sean propiedad de un determinado grupo o usuario. Las propiedades de cuota de usuarios y grupos no se pueden establecer en un volumen, en un sistema de archivos que sea anterior a la versión 4, o en una agrupación que sea anterior a la versión 15.

A la hora de determinar las funciones de cuota y reserva que mejor administran los sistemas de archivos se deben tener en cuenta los puntos siguientes:

Para obtener más información sobre la configuración de cuotas y reservas, consulte Establecimiento de cuotas en sistemas de archivos ZFS y Establecimiento de reservas en sistemas de archivos ZFS.

Establecimiento de cuotas en sistemas de archivos ZFS

Las cuotas en los sistemas de archivos ZFS se pueden configurar y visualizar mediante los comandos zfs set y zfs get. En el ejemplo siguiente, una cuota de 10 GB se establece en tank/home/bonwick:


# zfs set quota=10G tank/home/bonwick
# zfs get quota tank/home/bonwick
NAME              PROPERTY      VALUE                      SOURCE
tank/home/bonwick quota         10.0G                      local

Las cuotas también influyen en la salida de los comandos zfs list y df. Por ejemplo:


# zfs list
NAME                   USED  AVAIL  REFER  MOUNTPOINT
tank/home             16.5K  33.5G  8.50K  /export/home
tank/home/bonwick     15.0K  10.0G  8.50K  /export/home/bonwick
tank/home/bonwick/ws  6.50K  10.0G  8.50K  /export/home/bonwick/ws
# df -h /export/home/bonwick
Filesystem             size   used  avail capacity  Mounted on
tank/home/bonwick       10G     8K    10G     1%    /export/home/bonwick

Aunque tank/home tenga un espacio disponible en disco de 33,5 GB, tank/home/bonwick y tank/home/bonwick/ws sólo disponen cada uno de 10 GB disponibles en disco debido a la cuota en tank/home/bonwick.

No puede configurar una cuota con una cantidad inferior a la que esté usando un conjunto de datos. Por ejemplo:


# zfs set quota=10K tank/home/bonwick
cannot set quota for 'tank/home/bonwick': size is less than current used or 
reserved space

Puede establecer un valor de refquota en un conjunto de datos que limite la cantidad de espacio en el disco que puede consumir el conjunto de datos. Este límite fijo no incluye el espacio en el disco consumido por descendientes. Por ejemplo:


# zfs set refquota=10g students/studentA
# zfs list
NAME                USED  AVAIL  REFER  MOUNTPOINT
profs               106K  33.2G    18K  /profs
students           57.7M  33.2G    19K  /students
students/studentA  57.5M  9.94G  57.5M  /students/studentA
# zfs snapshot students/studentA@today
# zfs list
NAME                      USED  AVAIL  REFER  MOUNTPOINT
profs                     106K  33.2G    18K  /profs
students                 57.7M  33.2G    19K  /students
students/studentA        57.5M  9.94G  57.5M  /students/studentA
students/studentA@today      0      -  57.5M  -

Para mayor comodidad, puede establecer otra cuota en un conjunto de datos para administrar mejor el espacio que consumen las instantáneas. Por ejemplo:


# zfs set quota=20g students/studentA
# zfs list
NAME                      USED  AVAIL  REFER  MOUNTPOINT
profs                     106K  33.2G    18K  /profs
students                 57.7M  33.2G    19K  /students
students/studentA        57.5M  9.94G  57.5M  /students/studentA
students/studentA@today      0      -  57.5M  -

En esta situación hipotética, studentA puede entrar en conflicto con el límite físico de refquota (10 GB), pero studentA puede eliminar archivos que recuperar aunque haya instantáneas.

En el ejemplo anterior, la menor de las dos cuotas (10 GB si se compara con 20 GB) aparece en la salida zfs list. Para ver el valor de las dos cuotas, use el comando zfs get. Por ejemplo:


# zfs get refquota,quota students/studentA
NAME               PROPERTY  VALUE              SOURCE
students/studentA  refquota  10G                local
students/studentA  quota     20G                local

Establecimiento de las cuotas de usuarios y grupos en un sistema de archivos ZFS

Puede definir la cuota de un grupo o un usuario mediante el uso de los comandos zfs userquota y zfs groupquota, respectivamente. Por ejemplo:


# zfs create students/compsci
# zfs set userquota@student1=10G students/compsci
# zfs create students/labstaff
# zfs set groupquota@staff=20GB students/labstaff

Visualice la cuota del grupo o la del usuario actual como se indica a continuación:


# zfs get userquota@student1 students/compsci
NAME              PROPERTY            VALUE               SOURCE
students/compsci  userquota@student1  10G                 local
# zfs get groupquota@staff students/labstaff
NAME               PROPERTY          VALUE             SOURCE
students/labstaff  groupquota@staff  20G               local

Puede mostrar el uso general del espacio en el disco del usuario o grupo mediante la consulta de las propiedades siguientes:


# zfs userspace students/compsci
TYPE        NAME      USED  QUOTA  
POSIX User  root      227M   none  
POSIX User  student1  455M    10G  
# zfs groupspace students/labstaff
TYPE         NAME   USED  QUOTA  
POSIX Group  root   217M   none  
POSIX Group  staff  217M    20G  

Para identificar el uso individual del espacio en el disco de un usuario o grupo, consulte las propiedades siguientes:


# zfs get userused@student1 students/compsci
NAME              PROPERTY           VALUE              SOURCE
students/compsci  userused@student1  455M               local
# zfs get groupused@staff students/labstaff
NAME               PROPERTY         VALUE            SOURCE
students/labstaff  groupused@staff  217M             local

Las propiedades de cuotas de grupos y usuarios no se muestran si utiliza el comando zfs get all del conjunto de datos, que muestra una lista de todas las propiedades del sistema de archivos.

Puede eliminar la cuota de un grupo o usuario como se indica a continuación:


# zfs set userquota@user1=none students/compsci
# zfs set groupquota@staff=none students/labstaff

Las cuotas de usuarios o grupos en sistemas de archivos ZFS proporcionan las siguientes funciones:

La aplicación de cuotas de usuario o grupo puede retrasarse en varios segundos. Este retraso significa que los usuarios pueden exceder su cuota antes de que el sistema perciba que se ha sobrepasado la cuota y que rechace escrituras adicionales con el mensaje de error EDQUOT.

Puede utilizar el comando quota heredado para revisar las cuotas del usuario en un entorno NFS; por ejemplo, donde se haya montado un sistema de archivos ZFS. Sin ninguna opción, el comando quota sólo muestra la salida si se ha superado la cuota del usuario. Por ejemplo:


# zfs set userquota@student1=10m students/compsci   
# zfs userspace students/compsci
TYPE        NAME      USED  QUOTA  
POSIX User  root      227M   none  
POSIX User  student1  455M    10M  
# quota student1
Block limit reached on /students/compsci

Si reinicia la cuota de usuario y el límite de cuota ya no se supera, podrá utilizar el comando quota -v para revisar la cuota del usuario. Por ejemplo:


# zfs set userquota@student1=10GB students/compsci 
# zfs userspace students/compsci
TYPE        NAME      USED  QUOTA  
POSIX User  root      227M   none  
POSIX User  student1  455M    10G  
# quota student1
# quota -v student1
Disk quotas for student1 (uid 201):
Filesystem     usage  quota  limit    timeleft  files  quota  limit    timeleft
/students/compsci
              466029 10485760 10485760     

Establecimiento de reservas en sistemas de archivos ZFS

Una reserva de ZFS es una asignación de espacio en el disco de la agrupación cuya disponibilidad en un conjunto de datos está garantizada. Así, no puede reservar espacio en el disco para un conjunto de datos si ese espacio no está disponible en la agrupación. La cantidad total de todas las reservas pendientes sin consumir no puede superar la cantidad de espacio en el disco sin utilizar de la agrupación. Las reservas de ZFS se pueden configurar y visualizar mediante los comandos zfs set y zfs get. Por ejemplo:


# zfs set reservation=5G tank/home/moore
# zfs get reservation tank/home/moore
NAME             PROPERTY     VALUE   SOURCE
tank/home/moore  reservation  5G      local

Las reservas de pueden afectar a la salida del comando zfs list. Por ejemplo:


# zfs list
NAME                   USED  AVAIL  REFER  MOUNTPOINT
tank/home             5.00G  33.5G  8.50K  /export/home
tank/home/moore       15.0K  33.5G  8.50K  /export/home/moore

tank/home utiliza 5 GB de espacio, aunque la cantidad total de espacio a la que hacen referencia tank/home y sus descendientes es mucho menor que 5 GB. El espacio utilizado refleja el espacio reservado para tank/home/moore. Las reservas se tienen en cuenta en el espacio en el disco utilizado del conjunto de datos superior y se contabilizan en relación con su cuota, reserva o ambas.


# zfs set quota=5G pool/filesystem
# zfs set reservation=10G pool/filesystem/user1
cannot set reservation for 'pool/filesystem/user1': size is greater than 
available space

Un conjunto de datos puede usar más espacio en el disco que su reserva, siempre que haya espacio disponible en la agrupación que no esté reservado y que el uso actual del conjunto de datos esté por debajo de su cuota. Un conjunto de datos no puede consumir espacio en el disco reservado a otro conjunto de datos.

Las reservas no son acumulativas. Es decir, una segunda invocación de zfs set para configurar una reserva no agrega su reserva a la que ya existe, sino que la segunda reserva sustituye la primera. Por ejemplo:


# zfs set reservation=10G tank/home/moore
# zfs set reservation=5G tank/home/moore
# zfs get reservation tank/home/moore
NAME             PROPERTY      VALUE                      SOURCE
tank/home/moore  reservation   5.00G                      local

Puede establecer una reserva refreservation para garantizar espacio en el disco para un conjunto de datos que no incluya espacio en el disco consumido por instantáneas y clones. Esta reserva se explica en el cálculo del espacio utilizado en los conjuntos de datos principales, y repercute en las cuotas y reservas del conjunto de datos superior. Por ejemplo:


# zfs set refreservation=10g profs/prof1
# zfs list
NAME                      USED  AVAIL  REFER  MOUNTPOINT
profs                    10.0G  23.2G    19K  /profs
profs/prof1                10G  33.2G    18K  /profs/prof1

También se puede establecer una reserva en el mismo conjunto de datos para garantizar espacio de conjunto de datos e instantáneas. Por ejemplo:


# zfs set reservation=20g profs/prof1
# zfs list
NAME                      USED  AVAIL  REFER  MOUNTPOINT
profs                    20.0G  13.2G    19K  /profs
profs/prof1                10G  33.2G    18K  /profs/prof1

Las reservas regulares se explican en el cálculo del espacio utilizado en el principal.

En el ejemplo anterior, la menor de las dos cuotas (10 GB si se compara con 20 GB) aparece en la salida zfs list. Para ver el valor de las dos cuotas, use el comando zfs get. Por ejemplo:


# zfs get reservation,refreserv profs/prof1
NAME         PROPERTY        VALUE        SOURCE
profs/prof1  reservation     20G          local
profs/prof1  refreservation  10G          local

Si se establece refreservation, sólo se permite una instantánea en caso de que fuera de esta reserva exista suficiente espacio no reservado en la agrupación para alojar la cantidad actual de bytes a los que se hace referencia en el conjunto de datos.