Guía de administración de Oracle Solaris ZFS

Uso de ZFS en un sistema Solaris con zonas instaladas

Las secciones siguientes explican cómo utilizar ZFS en un sistema con zonas de Oracle Solaris:

Para obtener información sobre cómo configurar zonas en un sistema con un sistema de archivos raíz ZFS que se va a migrar o al que se aplicarán parches con Actualización automática de Solaris, consulte Uso de Actualización automática de Oracle Solaris para migrar o actualizar un sistema con zonas (Solaris 10 10/08) o Uso de Actualización automática de Oracle Solaris para migrar o actualizar un sistema con zonas (al menos Solaris 10 5/09).

Al asociar conjuntos de datos de ZFS con zonas, hay que tener en cuenta los puntos siguientes:

En las secciones siguientes, un conjunto de datos de ZFS hace referencia a un sistema de archivos o un clon.

La adición de un conjunto de datos permite que la zona no global comparta espacio en el disco con la zona global, si bien el administrador de zona no puede controlar las propiedades ni crear sistemas de archivos en la jerarquía de sistemas de archivos subyacente. Es lo mismo que agregar cualquier otro sistema de archivos a una zona; es aconsejable utilizarlo si la finalidad principal es compartir espacio.

ZFS permite también la delegación de conjuntos de datos a una zona no global, con lo cual el administrador de zona dispone de control absoluto sobre el conjunto de datos y todos sus conjuntos de datos secundarios. El administrador de zona puede crear y destruir sistemas de archivos o clones de ese conjunto de datos, así como modificar las propiedades de los conjuntos de datos. El administrador de zona no puede incidir en los conjuntos de datos que no se hayan agregado a la zona ni sobrepasar las cuotas de nivel superior establecidas en el conjunto de datos delegado.

Al utilizar ZFS en un sistema con zonas Oracle Solaris instaladas hay que tener en cuenta los puntos siguientes:

Adición de sistemas de archivos ZFS a una zona no global

Un sistema de archivos ZFS se puede agregar como sistema de archivos genérico si la finalidad es compartir espacio con la zona global. Un sistema de archivos ZFS agregado a una zona no global debe tener la propiedad mountpoint establecida en legacy.

Un sistema de archivos ZFS puede agregarse a una zona no global mediante el comando zonecfg y el subcomando add fs.

En el ejemplo siguiente, un administrador de zona global agrega a la zona no global un sistema de archivos ZFS desde la zona global:


# zonecfg -z zion
zonecfg:zion> add fs
zonecfg:zion:fs> set type=zfs
zonecfg:zion:fs> set special=tank/zone/zion
zonecfg:zion:fs> set dir=/export/shared
zonecfg:zion:fs> end

Esta sintaxis agrega el sistema de archivos ZFS tank/zone/zion a la zona ya configurada zion, montada en /export/shared. La propiedad mountpoint del sistema de archivos se debe establecer en legacy y el sistema de archivos ya no se puede montar en otra ubicación. El administrador de zona puede crear y destruir archivos en el sistema de archivos. El sistema de archivos no se puede volver a montar en una ubicación distinta; el administrador de zona tampoco puede modificar propiedades del sistema de archivos, por ejemplo atime, readonly o compression. El administrador de zona global se encarga de configurar y controlar las propiedades del sistema de archivos.

Para más información sobre el comando zonecfg y la configuración de tipos de recursos con zonecfg, consulte la Parte II, Zonas de Guía de administración de sistemas: administración de recursos y contenedores de Oracle Solaris y zonas de Oracle Solaris.

Delegación de conjuntos de datos a una zona no global

Para cumplir el objetivo principal, que es delegar la administración del almacenamiento a una zona, ZFS permite agregar conjuntos de datos a una zona no global mediante el comando zonecfg y el subcomando add dataset.

En el ejemplo siguiente, un administrador de zona global delega a la zona no global un sistema de archivos ZFS desde la zona global:


# zonecfg -z zion
zonecfg:zion> add dataset
zonecfg:zion:dataset> set name=tank/zone/zion
zonecfg:zion:dataset> end

A diferencia de agregar un sistema de archivos, esta sintaxis hace que el sistema de archivos ZFS tank/zone/zion quede visible en la zona ya configurada zion. El administrador de zona puede establecer las propiedades del sistema de archivos, así como crear sistemas de archivos descendientes. Además, puede crear instantáneas y clones, y controlar toda la jerarquía del sistema de archivos.

Si utiliza Actualización automática Oracle de Solaris para actualizar el entorno de inicio de ZFS con zonas no globales, suprima en primer lugar cualquier conjunto de datos delegado. De lo contrario, Actualización automática Oracle de Solaris fallará por un error de sistema de archivos de sólo lectura. Por ejemplo:


zonecfg:zion>
zonecfg:zion> remove dataset name=tank/zone/zion
zonecfg:zion1> exit

Para obtener más información sobre las acciones factibles en las zonas, consulte Administración de propiedades de ZFS en una zona.

Adición de volúmenes de ZFS a una zona no global

Los volúmenes de ZFS no se pueden agregar a una zona no global mediante el comando zonecfg y el subcomando add dataset. Sin embargo, pueden agregarse volúmenes a una zona utilizando el comando zonecfg y el subcomando add device.

En el ejemplo siguiente, un administrador de zona global agrega a la zona no global un volumen ZFS desde la zona global:


# zonecfg -z zion
zion: No such zone configured
Use 'create' to begin configuring a new zone.
zonecfg:zion> create
zonecfg:zion> add device
zonecfg:zion:device> set match=/dev/zvol/dsk/tank/vol
zonecfg:zion:device> end

Esta sintaxis añade el volumen tank/vol a la zona zion. Agregar un volumen sin formato a una zona conlleva riesgos en la seguridad, incluso si el volumen no se corresponde con un dispositivo físico. En particular, el administrador de zona podría crear sistemas de archivos incorrectamente formados que causen confusión en el sistema al intentar un montaje. Para obtener más información sobre cómo agregar dispositivos a zonas y sus riesgos en la seguridad, consulte Interpretación de la propiedad zoned.

Para obtener más información sobre cómo añadir dispositivos a zonas, consulte la Parte II, Zonas de Guía de administración de sistemas: administración de recursos y contenedores de Oracle Solaris y zonas de Oracle Solaris.

Uso de agrupaciones de almacenamiento de ZFS en una zona

Las agrupaciones de almacenamiento de ZFS no se pueden crear ni modificar en una zona. El modelo de administración delegada centraliza el control de dispositivos de almacenamiento físicos en la zona global y el control de almacenamiento virtual en zonas no globales. Aunque un conjunto de datos de agrupación se puede agregar a una zona, en una zona no se permite ningún comando que modifique las características físicas de la agrupación, por ejemplo crear, agregar o eliminar dispositivos. Aunque se agreguen dispositivos físicos a una zona mediante el comando zonecfg y el subcomando add device, o aunque se utilicen archivos, el comando zpool no permite la creación de agrupaciones en la zona.

Administración de propiedades de ZFS en una zona

Tras delegar un conjunto de datos a una zona, el administrador de zona puede controlar determinadas propiedades del conjunto. Cuando un conjunto de datos se delega a una zona, todos sus antecesores se ven como conjuntos de datos de sólo lectura, mientras que el conjunto de datos agregado y todos sus descendientes se pueden escribir. Por ejemplo, tenga en cuenta la configuración siguiente:


global# zfs list -Ho name
tank
tank/home
tank/data
tank/data/matrix
tank/data/zion
tank/data/zion/home

Si tank/data/zion se agrega a una zona, cada conjunto de datos tendrá las propiedades siguientes.

Conjunto de datos 

Visible 

Escribible 

Propiedades invariables 

tank

Sí 

No 

tank/home

No 

tank/data

Sí 

No 

tank/data/matrix

No 

tank/data/zion

Sí 

Sí 

sharenfs, zoned, quota, reservation

tank/data/zion/home

Sí 

Sí 

sharenfs, zoned

Cada conjunto primario de tank/zone/zion es visible como de sólo lectura, todos los descendientes se pueden escribir y los conjuntos de datos que no forman parte de la jerarquía superior no se ven. El administrador de zona no puede cambiar la propiedad sharenfs porque las zonas no globales no son válidas como servidores NFS. El administrador de zona tampoco puede cambiar la propiedad zoned; de lo contrario, habría un riesgo en la seguridad, como se explica en la sección siguiente.

Los usuarios con privilegios en la zona pueden cambiar otras propiedades configurables, excepto quota y reservation. Este comportamiento permite que el administrador de zona global controle la ocupación de espacio en el disco de todos los conjuntos de datos utilizados por la zona no global.

Asimismo, el administrador de zona global no puede modificar las propiedades sharenfs y mountpoint después de que un conjunto de datos se haya delegado a una zona no global.

Interpretación de la propiedad zoned

Si un conjunto de datos se delega a una zona no global, se debe marcar de modo especial para que determinadas propiedades no se interpreten en el contexto de la zona global. Tras haber delegado un conjunto de datos a una zona no global bajo el control de un administrador de zona, su contenido deja de ser fiable. Como en cualquier sistema de archivos, puede haber binarios setuid, vínculos simbólicos o contenido dudoso que podría repercutir negativamente en la seguridad de la zona global. Además, la propiedad mountpoint no se puede interpretar en el contexto de la zona global. Por otro lado, el administrador de zona podría afectar al espacio de nombre de la zona global. Para ocuparse de esto último, ZFS utiliza la propiedad zoned para indicar que un conjunto de datos se ha delegado a una zona no global en un determinado momento.

La propiedad zoned consiste en un valor booleano que se activa automáticamente la primera vez que se inicia una zona que contiene un conjunto de datos de ZFS. Un administrador de zona no tiene necesidad de activar manualmente esta propiedad. Si se establece la propiedad zoned, el conjunto de datos no se puede montar ni compartir en la zona global. En el ejemplo siguiente, tank/zone/zion se ha delegado a una zona y tank/zone/global no se ha delegado:


# zfs list -o name,zoned,mountpoint -r tank/zone
NAME                  ZONED  MOUNTPOINT
tank/zone/global        off  /tank/zone/global
tank/zone/zion           on  /tank/zone/zion
# zfs mount
tank/zone/global           /tank/zone/global
tank/zone/zion             /export/zone/zion/root/tank/zone/zion

Observe la diferencia entre la propiedad mountpoint y el directorio en que está montado el conjunto de datos tank/zone/zion. La propiedad mountpoint refleja la propiedad como almacenada en disco, no donde el conjunto de datos está montado en el sistema.

Si se elimina un conjunto de datos de una zona o se destruye una zona, la propiedad zoned no se elimina de forma automática. Este comportamiento se debe a los riegos de seguridad inherentes a estas tareas. Debido a que un usuario que no es de confianza dispone de acceso completo al conjunto de datos y sus descendientes, la propiedad mountpoint podría definirse con valores incorrectos o podría haber binarios setuid en los sistemas de archivos.

Para prevenir riesgos en la seguridad, el administrador de zona global debe suprimir manualmente la propiedad zoned si se desea volver a utilizar el conjunto de datos. Antes de establecer la propiedad zoned en off, compruebe que la propiedad mountpoint del conjunto de datos y todos sus descendientes tengan valores razonables y que no haya binarios setuid, o desactive la propiedad setuid.

Tras haber comprobado que no queden puntos débiles en la seguridad, la propiedad zoned se puede desactivar mediante los comandos zfs set o zfs inherit. Si la propiedad zoned se desactiva mientras un conjunto de datos se utiliza en una zona, el sistema podría manifestar un comportamiento impredecible. La propiedad se debe modificar únicamente si se tiene la certeza de que ninguna zona no global no está utilizando el conjunto de datos.