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)
Creación, destrucción y cambio de nombre de sistemas de archivos ZFS
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.
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.
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.
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.
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 |
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 |
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.
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:
Cambiar el nombre de un sistema de archivos.
Cambiar la ubicación del sistema de archivos en la jerarquía ZFS.
Cambiar el nombre de un sistema de archivos y cambiar su ubicación dentro de la jerarquía ZFS.
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.
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:
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.
Indica que la propiedad se ha heredado del superior nombrado.
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. |
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.
available
compressratio
creation
mounted
origin
referenced
type
used
Para obtener más información, consulte Propiedad used.
usedbychildren
usedbydataset
usedbyrefreservation
usedbysnapshots
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.
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.
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.
aclinherit
Para obtener una descripción detallada, consulte Propiedades de ACL.
aclmode
Para obtener una descripción detallada, consulte Propiedades de ACL.
atime
canmount
checksum
compression
copies
devices
exec
mountpoint
primarycache
quota
readonly
recordsize
Para obtener información detallada, consulte Propiedad recordsize.
refquota
refreservation
reservation
secondarycache
shareiscsi
sharenfs
setuid
snapdir
version
volsize
Para obtener información detallada, consulte Propiedad volsize.
volblocksize
zoned
xattr
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.
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.
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.
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:
Deben contener un signo de dos puntos (': ') para distinguirlos de las propiedades nativas.
Además, deben contener letras minúsculas, números o los signos de puntuación siguientes: ':', '+','.', '_'.
La longitud máxima de un nombre de propiedad de usuario es 256 caracteres.
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:
Deben constar de cadenas aleatorias que se heredan siempre y que nunca se validan.
La longitud máxima de la propiedad de usuario es 1024 caracteres.
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.
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.
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).
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 |
Las propiedades del conjunto de datos se administran mediante los subcomandos set, inherit y get del comando 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).
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 |
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).
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 |
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).
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 nombre literal se puede utilizar con una lista separada por comas de propiedades como se definen en la sección Introducción a las propiedades de ZFS.
Una lista separada por comas de los campos literales, name, value, property, y source, que deben salir seguidos por un espacio y un argumento, que es una lista separada por comas de las propiedades.
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 |
En esta sección se describe la forma de administrar en ZFS puntos de montaje y sistemas de archivos compartidos.
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.
Cuando cambie la propiedad mountpoint de legacy o none a una ruta específica, ZFS monta automáticamente el sistema de archivos.
Si ZFS administra el sistema de archivos pero éste se encuentra desmontado, y se cambia la propiedad mountpoint, el sistema de archivos permanece sin montar.
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.
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.
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.
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).
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).
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.
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 .
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 |
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 |
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.
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:
Las propiedades quota y reservation son apropiadas para administrar el espacio en el disco consumido por conjuntos de datos y sus descendientes.
Las propiedades refquota y refreservation son apropiadas para administrar espacio en el disco consumido por conjuntos de datos e instantáneas.
Establecer refquota o refreservation con un valor más alto que el de quota o reservation no tiene repercusión alguna. Si establece las propiedades de quota o refquota, fallarán las operaciones que intenten exceder cualquier valor. Es posible exceder un valor de quota superior al de refquota. Si se ensucian algunos bloques de instantáneas, quizá se exceda realmente el valor de quota antes de exceder el valor de refquota.
Las cuotas de usuarios y grupos proporcionan un medio de administrar más fácilmente el espacio en el disco con múltiples cuentas de usuario, como por ejemplo en un entorno universitario.
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.
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 |
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 cuota de un usuario o grupo que se define en un sistema de archivos superior no la hereda automáticamente un sistema de archivos descendiente.
Sin embargo, la cuota del grupo o usuario se aplica cuando se crea una instantánea o un clon a partir de un sistema de archivos que tiene una cuota de grupo o usuario. Del mismo modo, se incluye una cuota de usuario o grupo en el sistema de archivos cuando se crea una secuencia mediante el comando zfs send, incluso sin opción -R.
Los usuarios sin privilegios sólo pueden acceder al uso de su propio espacio en el disco. El usuario raíz o el usuario al que se le haya concedido el privilegio userused o groupused, puede acceder a la información de cálculo de espacio de grupos o usuarios de todos.
Las propiedades userquota y groupquota no se pueden establecer en volúmenes de ZFS, en un sistema de archivos anteriores a la versión 4, o en una agrupación anterior a la versión 15.
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 |
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.