Agregación de sistemas de archivos ZFS a una zona no global en Solaris 11.2

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:


Al asociar conjuntos de datos de ZFS con zonas, hay que tener en cuenta los puntos siguientes:
  • Puede agregar un sistema de archivos o un clon de ZFS a una zona no global con o sin delegación de control administrativo.
  • Puede agregar un volumen de ZFS como dispositivo a zonas no globales.
  • Por ahora no es posible asociar instantáneas de ZFS con zonas.
En las secciones siguientes, un conjunto de datos de ZFS hace referencia a un sistema de archivos o un clon.
La agregació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 modificar los conjuntos de datos que no se han 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:
  • Un sistema de archivos ZFS agregado a una zona no global debe tener la propiedad mountpoint establecida en legacy.
  • Cuando tanto un origen zonepath como un destino zonepath residen en un sistema de archivos ZFS y se encuentran en la misma agrupación, zoneadm clone utiliza automáticamente el clon de ZFS para clonar una zona. El comando zoneadm clone crea una instantánea de ZFS de la zonepath de origen y configura la zonepath de destino. No puede utilizar el comando zfs clone para clonar una zona. Para obtener más información, consulte Creación y uso de zonas de Oracle Solaris .

Agregació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. Por ejemplo, si el sistema de archivos tank/zone/zion se agregará a una zona no global, establezca la propiedad mountpoint en la zona global como se indica a continuación:

# zfs set mountpoint=legacy tank/zone/zion

Puede agregar un sistema de archivos ZFS a una zona no global mediante el subcomando add fs del comando zonecfg.

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=/opt/data
zonecfg:zion:fs> end

Esta sintaxis agrega el sistema de archivos ZFS, tank/zone/zion, a la zona zion ya configurada, que está montada en /opt/data. 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 zonas 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 atimereadonly ocompression.
El administrador de zona global se encarga de configurar y controlar las propiedades del sistema de archivos.
Para obtener más información sobre el comando zonecfg y la configuración de tipos de recursos con zonecfg, consulte Creación y uso de zonas de Oracle Solaris .


Montaje de sistemas de archivos ZFS:

- En la configuración predeterminada, ZFS monta todos los sistemas de archivos durante el arranque del servicio svc://system/filesystem/local. Y se montan bajo /ruta. Este comportamiento se puede modificar modificando la propiedad heredable mountpoint. En este caso ejecutando zfs mount –a se montan los sistemas de archivos sin editar el vfstab. Es posible administrar los sistemas de archivos mediante los comandos tradicionales, configurando la propiedad mountpoint con el valor legacy. De esta manera se impide que ZFS monte automáticamente los sistemas de archivos y se pueda administrarlos mediante los comandos mount o mediante el vfstab.

Despues podemos crear el punto de montaje donde queramos dentro de la zona global :
Ej:   zfs mountpoint=/almacen  rpool/almacen

Ej:  zfs mountpoint=/zone/zion  tank/zone/zion


Desmontaje de los sistemas de archivos ZFS:

- Los sistemas e archivos se desmontan usando el comando zfs umount.
Ej: # zfs umount tank/home/pepe.
El comando zfs umount falla si el sistema de archivos está ocupado. Para el desmontaje fozoso se usa zfs umount. Ej: #zfs umount –f tank/home/pepe. 

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 uso del subcomando add dataset del comando zonecfg.
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> set alias=tank
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 zion ya configurada. Dentro de la zona zion, no se puede acceder a este sistema de archivos como tank/zone/zion, sino como una agrupación virtual denominada tank. El alias del sistema de archivos delegado proporciona una vista de la agrupación original para la zona como una agrupación virtual. La propiedad del alias especifica el nombre de la agrupación virtual. Si no se especifica ningún alias, se utiliza un alias predeterminado que coincide con el último componente del nombre del sistema de archivos. Si no se proporciona un alias específico, el alias predeterminado en el ejemplo anterior habría sido zion.
En conjuntos de datos delegados, 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 los volúmenes de ZFS se crean en sistemas de archivos delegados, es posible que entren en conflicto con los volúmenes de ZFS que se agregan como recursos de dispositivos. Para obtener más información, consulte la siguiente sección.

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

Puede agregar o crear un volumen ZFS en una zona no global o puede agregar el acceso a los datos de un volumen en una zona no global en las siguientes formas:
  • En una zona no global, un administrador de zona privilegiada puede crear un volumen de ZFS como descendiente de un sistema de archivos previamente delegado. Por ejemplo:
    # zfs create -V 2g tank/zone/zion/vol1
    La sintaxis anterior significa que el administrador de zona puede gestionar las propiedades y los datos del volumen en la zona no global.
  • En una zona global, utilice el subcomando zonecfg add dataset y especifique un volumen de ZFS para agregar a una zona no global. Por ejemplo:
    # zonecfg -z zion
    zonecfg:zion> add dataset
    zonecfg:zion:dataset> set name=tank/volumes/vol1
    zonecfg:zion:dataset> end
    La sintaxis anterior significa que el administrador de zona puede gestionar las propiedades y los datos del volumen en la zona no global.
  • En una zona global, utilice el subcomando zonecfg add device y especifique un volumen de ZFS a cuyos datos se pueda acceder en una zona no global. Por ejemplo:
    # zonecfg -z zion
    zonecfg:zion> add device
    zonecfg:zion:device> set match=/dev/zvol/dsk/tank/volumes/vol2
    zonecfg:zion:device> end
    La sintaxis anterior significa que solamente se puede acceder a los datos del volumen en la zona no global.

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, considere la siguiente configuración:

global# zfs list -Ho name
tank
tank/home
tank/data
tank/data/matrix
tank/data/zion
tank/data/zion/home
Si se agregara tank/data/zion a una zona con el alias zion predeterminado, cada conjunto de datos tendría las siguientes propiedades.
Conjunto de datos
Visible
Permite escritura
Propiedades invariables
tank
No
-
-
tank/home
No
-
-
tank/data
No
-
-
tank/data/zion
Yes (Sí)
Yes (Sí)
zoned, quota, reservation
tank/data/zion/home
Yes (Sí)
Yes (Sí)
zoned

Tenga en cuenta que cada principal de tank/zone/zion es invisible y que puede escribirse en todos los descendientes. El administrador de zona no puede cambiar la propiedad zoned ya que existiría 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 share.nfs 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, enlaces 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 abordar el último caso, ZFS utiliza la propiedad zoned para indicar que un conjunto de datos se ha delegado a una zona no global en un momento determinado.
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.

Comentarios