Gestión de sistemas de archivos ZFS en Oracle® Solaris 11.2

Salir de la Vista de impresión

Actualización: Diciembre de 2014
 
 

Sintaxis de uso compartido de ZFS nuevo

El nuevo comando zfs set se utiliza para compartir y publicar un sistema de archivos ZFS a través de los protocolos NFS o SMB. También puede establecer la propiedad share.nfs o share.smb al crear el sistema de archivos.

Por ejemplo, el sistema de archivos tank/sales se crea y se comparte. Los permisos de uso compartido predeterminados son de solo lectura para todos los usuarios. El sistema de archivos descendente tank/sales/logs también se comparte automáticamente porque la propiedad share.nfs es heredada por sistemas de archivos descendentes y el sistema de archivos tank/sales/log se establece en acceso de solo lectura.

# zfs create -o share.nfs=on tank/sales
# zfs create -o share.nfs.ro=\* tank/sales/logs
# zfs get -r share.nfs tank/sales
NAME             PROPERTY   VALUE  SOURCE
tank/sales       share.nfs  on     local
tank/sales%      share.nfs  on     inherited from tank/sales
tank/sales/log   share.nfs  on     inherited from tank/sales
tank/sales/log%  share.nfs  on     inherited from tank/sales

Puede proporcionar acceso root a un sistema específico para un sistema de archivos compartido de la siguiente manera:

# zfs set share.nfs=on tank/home/data
# zfs set share.nfs.sec.default.root=neo.daleks.com tank/home/data

Uso compartido de ZFS con herencia por propiedad

En las agrupaciones que se actualizaron a la última versión de agrupación 34, hay disponible una nueva sintaxis de uso compartido que utiliza la herencia de propiedades ZFS para facilitar el mantenimiento del uso compartido. Cada característica de recurso compartido se convierte en una propiedad share independiente. Las propiedades share se identifican con nombres que empiezan con el prefijo share. Algunos ejemplos de propiedades share son share.desc, share.nfs.nosuid y share.smb.guestok.

La propiedad share.nfs controla si se activó el uso compartido de NFS. La propiedad share.smb controla si se activó el uso compartido de SMB. Los nombres de propiedad sharenfs y sharesmb antiguos se pueden seguir utilizando porque, en las nuevas agrupaciones, sharenfs es un alias de share.nfs y sharesmb es un alias de share.smb. Si desea compartir el sistema de archivos tank/home, utilice una sintaxis similar a la siguiente:

# zfs set share.nfs=on tank/home

En este ejemplo, el valor de propiedad share.nfs es heredado por cualquier sistema de archivos descendente. Por ejemplo:

# zfs create tank/home/userA
# zfs create tank/home/userB
# grep tank/home /etc/dfs/sharetab
/tank/home      tank_home       nfs     sec=sys,rw
/tank/home/userA        tank_home_userA nfs     sec=sys,rw
/tank/home/userB        tank_home_userB nfs     sec=sys,rw   
Herencia de uso compartido de ZFS en agrupaciones más antiguas

En agrupaciones más antiguas, únicamente las propiedades sharenfs y sharesmb son heredadas por sistemas de archivos descendentes. Otras características de uso compartido se almacenan en el archivo .zfs/shares para cada recurso compartido y no se heredan.

Una regla especial es que siempre que se crea un nuevo sistema de archivos que hereda sharenfs o sharesmb de su elemento principal, se crea un recurso compartido predeterminado para ese sistema de archivos desde el valor sharenfs o sharesmb. Tenga en cuenta que cuando sharenfs simplemente está establecido en on, el recurso compartido predeterminado que se crea en un sistema de archivos descendente únicamente tiene las características NFS predeterminadas. Por ejemplo:

# zpool get version tank
NAME  PROPERTY  VALUE  SOURCE
tank  version   33     default
# zfs create -o sharenfs=on tank/home
# zfs create tank/home/userA
# grep tank/home /etc/dfs/sharetab
/tank/home      tank_home       nfs     sec=sys,rw
/tank/home/userA        tank_home_userA nfs     sec=sys,r

Recursos compartidos ZFS designados

También puede crear un recurso compartido designado, lo cual proporciona más flexibilidad para configurar permisos y propiedades en un entorno SMB. Por ejemplo:

# zfs share -o share.smb=on tank/workspace%myshare

En el ejemplo anterior, el comando zfs share crea un recurso compartido SMB denominado myshare del sistema de archivos tank/workspace. Puede acceder al recurso compartido SMB y mostrar o configurar permisos específicos o ACL mediante el directorio .zfs/shares del sistema de archivos. Cada recurso compartido SMB es representado mediante un archivo .zfs/shares independiente. Por ejemplo:

# ls -lv /tank/workspace/.zfs/shares
-rwxrwxrwx+  1 root     root           0 May 15 10:31 myshare
0:everyone@:read_data/write_data/append_data/read_xattr/write_xattr
/execute/delete_child/read_attributes/write_attributes/delete
/read_acl/write_acl/write_owner/synchronize:allow

Los recursos compartidos designados heredan propiedades de uso compartido del sistema de archivos principal. Si agrega la propiedad share.smb.guestok al sistema de archivos principal en el ejemplo anterior, esta propiedad es heredada por el recurso compartido designado. Por ejemplo:

# zfs get -r share.smb.guestok tank/workspace
NAME                    PROPERTY           VALUE  SOURCE
tank/workspace          share.smb.guestok  on     inherited from tank
tank/workspace%myshare  share.smb.guestok  on     inherited from tank

Los recursos compartidos designados pueden ser útiles en el entorno NFS al definir recursos compartidos para un subdirectorio del sistema de archivos. Por ejemplo:

# zfs create -o share.nfs=on -o share.nfs.anon=99 -o share.auto=off tank/home
# mkdir /tank/home/userA
# mkdir /tank/home/userB
# zfs share -o share.path=/tank/home/userA tank/home%userA
# zfs share -o share.path=/tank/home/userB tank/home%userB
# grep tank/home /etc/dfs/sharetab
/tank/home/userA        userA   nfs     anon=99,sec=sys,rw
/tank/home/userB        userB   nfs     anon=99,sec=sys,rw  

El ejemplo anterior también muestra que, al establecer share.auto en off para un sistema de archivos, se desactiva el uso compartido automático para ese sistema de archivos y se mantiene intacta la herencia de otras propiedades. A diferencia de la mayoría de las propiedades de uso compartido, la propiedad share.auto no se puede heredar.

Los recursos compartidos designados también se utilizan al crear un recurso compartido NFS público. Un recurso compartido público solamente se puede crear en un recurso compartido NFS designado. Por ejemplo:

# zfs create -o mountpoint=/pub tank/public
# zfs share -o share.nfs=on -o share.nfs.public=on tank/public%pubshare
# grep pub /etc/dfs/sharetab
/pub    pubshare        nfs     public,sec=sys,rw

Consulte share_nfs(1M) and share_smb(1M) para obtener una descripción detallada de las propiedades de recursos compartidos NFS y SMB.

Recursos compartidos ZFS automáticos

Cuando se crea un recurso compartido automático (auto), se crea un nombre de recurso único a partir del nombre del sistema de archivos. El nombre creado es una copia del nombre del sistema de archivos, con la excepción de que los caracteres del nombre del sistema de archivos, los cuales serían ilegales en el nombre del recurso, se reemplazan con caracteres de subrayado (_). Por ejemplo, el nombre del recurso de data/home/john es data_home_john.

La configuración de un nombre de propiedad share.autoname permite reemplazar el nombre del sistema de archivos con un nombre específico al crear el recurso compartido automático. El nombre también se utiliza para reemplazar el nombre del sistema de archivos de prefijo en caso de herencia. Por ejemplo:

# zfs create -o share.smb=on -o share.autoname=john data/home/john
# zfs create data/home/john/backups
# grep john /etc/dfs/sharetab
/data/home/john john    smb
/data/home/john/backups john_backups    smb

Si un comando share antiguo o el comando zfs set share se utilizan en un sistema de archivos que aún no fue compartido, el valor share.auto se establece automáticamente en off. Los comandos antiguos siempre crean recursos compartidos designados. Esta regla especial impide que el uso compartido automático interfiera con el recurso compartido designado que se crea.

Visualización de información de recurso compartido ZFS

Visualice el valor de las propiedades de uso compartido de archivos con el comando zfs get. En el siguiente ejemplo, se muestra cómo visualizar la propiedad share.nfs para un solo sistema de archivos:

# zfs get share.nfs tank/sales
NAME        PROPERTY   VALUE  SOURCE
tank/sales  share.nfs  on     local

En el siguiente ejemplo, se muestra cómo visualizar la propiedad share.nfs para sistemas de archivos descendentes:

# zfs get -r share.nfs tank/sales
NAME             PROPERTY   VALUE  SOURCE
tank/sales       share.nfs  on     local
tank/sales%      share.nfs  on     inherited from tank/sales
tank/sales/log   share.nfs  on     inherited from tank/sales
tank/sales/log%  share.nfs  on     inherited from tank/sales

La información extendida de la propiedad de recurso compartido no está disponible en la sintaxis del comando zfs get all.

Puede visualizar detalles específicos sobre la información del recurso compartido NFS o SMB con la siguiente sintaxis:

# zfs get share.nfs.all tank/sales
NAME        PROPERTY             VALUE  SOURCE
tank/sales  share.nfs.aclok      off    default
tank/sales  share.nfs.anon              default
tank/sales  share.nfs.charset.*  ...    default
tank/sales  share.nfs.cksum             default
tank/sales  share.nfs.index             default
tank/sales  share.nfs.log               default
tank/sales  share.nfs.noaclfab   off    default
tank/sales  share.nfs.nosub      off    default
tank/sales  share.nfs.nosuid     off    default
tank/sales  share.nfs.public     -      -
tank/sales  share.nfs.sec               default
tank/sales  share.nfs.sec.*      ...    default

Dado que existen muchas propiedades de recursos compartidos, considere la posibilidad de visualizar las propiedades con un valor que no es el predeterminado. Por ejemplo:

# zfs get -e -s local,received,inherited share.all tank/home
NAME       PROPERTY           VALUE  SOURCE
tank/home  share.auto         off    local
tank/home  share.nfs          on     local
tank/home  share.nfs.anon     99     local
tank/home  share.protocols    nfs    local
tank/home  share.smb.guestok  on     inherited from tank

Cambio de valores de propiedad de un recurso compartido ZFS

Puede cambiar los valores de propiedad de un recurso compartido especificando propiedades nuevas o modificadas en un recurso compartido de sistema de archivos. Por ejemplo, si la propiedad de solo lectura se establece cuando se crea el sistema de archivos, se puede establecer en off.

# zfs create -o share.nfs.ro=\* tank/data
# zfs get share.nfs.ro tank/data
NAME       PROPERTY              VALUE  SOURCE
tank/data  share.nfs.sec.sys.ro  *     local
# zfs set share.nfs.ro=none tank/data
# zfs get share.nfs.ro tank/data
NAME       PROPERTY              VALUE  SOURCE
tank/data  share.nfs.sec.sys.ro  off    local

Si crea un recurso compartido SMB, también puede agregar el protocolo del recurso compartido NFS. Por ejemplo:

# zfs set share.smb=on tank/multifs
# zfs set share.nfs=on tank/multifs
# grep multifs /etc/dfs/sharetab
/tank/multifs   tank_multifs    nfs     sec=sys,rw
/tank/multifs   tank_multifs    smb     -       

Elimine el protocolo SMB:

# zfs set share.smb=off tank/multifs
# grep multifs /etc/dfs/sharetab
/tank/multifs   tank_multifs    nfs     sec=sys,rw

Puede cambiar el nombre de un recurso compartido designado. Por ejemplo:

# zfs share -o share.smb=on tank/home/abc%abcshare
# grep abc /etc/dfs/sharetab
/tank/home/abc  abcshare        smb     -
# zfs rename tank/home/abc%abcshare tank/home/abc%a1share
# grep abc /etc/dfs/sharetab
/tank/home/abc  a1share        smb     -   

Publicación y anulación de la publicación de recursos compartidos ZFS

Puede dejar de compartir temporalmente un recurso compartido designado sin destruirlo utilizando el comando zfs unshare. Por ejemplo:

# zfs unshare tank/home/abc%a1share
# grep abc /etc/dfs/sharetab
#
# zfs share tank/home/abc%a1share
# grep abc /etc/dfs/sharetab
/tank/home/abc  a1share smb     -

Cuando se emite el comando zfs unshare, se dejan de compartir todos los recursos compartidos del sistema de archivos. Estos recursos compartidos permanecen sin compartir hasta que se emite el comando zfs share para el sistema de archivos o se configura la propiedad share.nfs o share.smb para el sistema de archivos.

Los recursos compartidos definidos no se eliminan cuando se emite el comando zfs unshare y se vuelven a compartir la próxima vez que se emite el comando zfs share para el sistema de archivos o se configura la propiedad share.nfs o share.smb para el sistema de archivos.

Eliminación de un recurso compartido ZFS

Puede dejar de compartir un recurso compartido del sistema de archivos configurando la propiedad share.nfs o share.smb en off. Por ejemplo:

# zfs set share.nfs=off tank/multifs
# grep multifs /etc/dfs/sharetab
# 

Puede eliminar permanentemente un recurso compartido designado utilizando el comando zfs destroy. Por ejemplo:

# zfs destroy tank/home/abc%a1share

Uso compartido de archivos ZFS en una zona no global

A partir de Oracle Solaris 11, puede crear y publicar recursos compartidos NFS en una zona no global de Oracle Solaris.

  • Si un sistema de archivos ZFS está montado y se encuentra disponible en una zona no global, dicho sistema puede ser compartido en esa zona.

  • Un sistema de archivos se puede compartir en la zona global si no está delegado a una zona no global o si no está montado en una zona no global. Si un sistema de archivos se agrega a una zona no global, solamente se puede compartir utilizando el comando share antiguo.

Por ejemplo, los sistemas de archivos /export/home/data y /export/home/data1 están disponibles en zfszone.

zfszone# share -F nfs /export/home/data
zfszone#  cat /etc/dfs/sharetab
zfszone# zfs set share.nfs=on tank/zones/export/home/data1
zfszone# cat /etc/dfs/sharetab