Un dataset es un sistema de archivos dentro de un pool ZFS. Se comporta como un sistema de archivos independiente, aunque comparte el espacio en disco disponible entre todos los sistemas de archivos del pool. Una de las propiedades y ventajas de los sistemas de archivos ZFS (se comportan como sistemas de archivos y gestores de volúmenes al mismo tiempo). Este artículo explica cómo crear y configurar las propiedades de un nuevo dataset dentro de un pool ZFS existente en un sistema GNU/Linux.



Para tener una noción básica acerca de los componentes y funcionamiento de un sistema de archivos ZFS recomiendo leer el siguiente artículo: Introducción a ZFS en FreeBSD.

Crear y configurar un nuevo sistema de archivos (filesystem) dentro de un pool ZFS existente es bastante simple. Veamos directamente un ejemplo.

El siguiente sistema Debian cuenta con un único pool ZFS "z01":

root@debian:~# zpool list
NAME   SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
z01   49,9G  6,69G  43,2G         -     7%    13%  1.00x  ONLINE  -

Este pool actualmente contiene dos sistemas de archivos: el dataset raíz (que posee el mismo nombre que el pool) y un dataset "backups".

root@debian:~# zfs list
NAME          USED  AVAIL  REFER  MOUNTPOINT
z01           306K  48,3G    24K  /z01
z01/backups    24K  48,3G    24K  /backups

En este escenario, se necesita crear un nuevo dataset (sistema de archivos independiente dentro del mismo ) llamado "datos".

Para crear un nuevo dataset simplemente se debe utilizar el subcomando create de la siguiente forma:

root@debian:~# zfs create z01/datos

Inmediatamente se encuentra disponible el nuevo sistema de archivos:

root@debian:~# zfs list
NAME          USED  AVAIL  REFER  MOUNTPOINT
z01           306K  48,3G    24K  /z01
z01/backups    24K  48,3G    24K  /backups
z01/datos      24K  48,3G    24K  /z01/datos

Se observa que se ha creado con un punto de montaje por defecto, el cual es posible cambiar, por ejemplo a /usr/local/datos:

root@debian:~# zfs set mountpoint=/usr/local/datos z01/datos

Ahora el dataset "z01/datos" se encuentra montado en /usr/local/datos:

root@debian:~# zfs list
NAME          USED  AVAIL  REFER  MOUNTPOINT
z01           320K  48,3G    24K  /z01
z01/backups    24K  48,3G    24K  /backups
z01/datos      24K  48,3G    24K  /usr/local/datos

Este nuevo sistema de archivos hereda todas las propiedades definidas en el pool. Sin embargo es posible personalizarlas a fin de optimizar el espacio y rendimiento del dataset.

Cuando se emplean sistemas de archivos ZFS comúnmente se desea habilitar la compresión nativa para optimizar el espacio. Además se suele deshabilitar el access time (registro de la última fecha de acceso/lectura para cada archivo y directorio) a fin de mejorar el rendimiento y tiempos de lectura en disco. Para ello se deben tunear las propiedades compression y atime respectivamente.

En este caso en particular además es recomendable desactivar la caché secundaria y sólo almacenar metadatos en la caché primaria. El artículo Optimizar un dataset ZFS para bases de datos PostgreSQL explica detalladamente el funcionamiento y configuración de ambas cachés.

Las propiedades de un dataset se alteran con el subcomando set:

root@debian:~# zfs set atime=off z01/datos
root@debian:~# zfs set compression=lz4 z01/datos
root@debian:~# zfs set primarycache=metadata z01/datos
root@debian:~# zfs set secondarycache=none z01/datos

Luego es posible comprobar sus valores mediante get:

root@debian:~# zfs get all z01/datos | grep "atime\|compression\|primarycache\|secondarycache"
z01/datos  compression           lz4                    local
z01/datos  atime                 off                    local
z01/datos  primarycache          metadata               local
z01/datos  secondarycache        none                   local
z01/datos  relatime              off                    default

Para más información, consultar las siguientes páginas de manual:

  • man zfs
  • man zpool


Tal vez pueda interesarte


Compartí este artículo