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

Salir de la Vista de impresión

Actualización: Diciembre de 2014
 
 

Cálculo del espacio de ZFS

ZFS se basa en el concepto de almacenamiento en agrupaciones. A diferencia de los sistemas de archivos habituales, asignados al almacenamiento físico, todos los sistemas de archivos ZFS de una agrupación comparten el espacio de almacenamiento de la agrupación. Por lo tanto, el espacio disponible en el disco notificado por utilidades como df puede llegar a cambiar aunque el sistema de archivos no esté activo, debido a que otros sistemas de archivos de la agrupación consumen o liberan espacio.

El tamaño máximo de los sistemas de archivos se puede restringir mediante cuotas. Para obtener información sobre las cuotas, consulte Establecimiento de cuotas en sistemas de archivos ZFS. Se puede garantizar una cantidad determinada de espacio en el disco para un sistema de archivos mediante reserva. Para obtener información acerca de las reservas, consulte Establecimiento de reservas en sistemas de archivos ZFS. Este modelo es muy similar al de NFS, en el que varios directorios se montan desde el mismo sistema de archivos (considere /home).

Todos los metadatos de ZFS se asignan de forma dinámica. Casi todos los demás sistemas de archivos preasignan gran parte de sus metadatos. Al crearse el sistema de archivos, el resultado es un coste inmediato de asignación de espacio para estos metadatos. También significa que está predefinida la cantidad de archivos que admiten los sistemas de archivos. Como ZFS asigna sus metadatos conforme los necesita, no precisa asignación inicial de espacio y la cantidad de archivos que puede admitir está solo en función del espacio disponible en el disco. La salida del comando df -g no significa lo mismo en ZFS que en otros sistemas. El valor de total files (total de archivos) que aparece es solo un cálculo basado en la cantidad de almacenamiento disponible en la agrupación.

ZFS es un sistema de archivos transaccional. Casi todas las modificaciones de sistemas de archivos se incluyen en grupos de transacciones y se envían al disco de manera asíncrona. Hasta que no se envían al disco, se denominan cambios pendientes. La cantidad de espacio en el disco utilizado, disponible y que hace referencia a un archivo o sistema de archivos no tiene en cuenta los cambios pendientes. Los cambios pendientes suelen calcularse en pocos segundos. El hecho de enviar un cambio al disco mediante fsync(3c) o O_SYNC no garantiza necesariamente la actualización inmediata del espacio que se utiliza en el disco.

En un sistema de archivos UFS, el comando du informa el tamaño de los bloques de datos en el archivo. En un sistema de archivos ZFS, du informa el tamaño real del archivo mientras se encuentra almacenado en el disco. Este tamaño incluye metadatos y compresión. Estos informes realmente ayudan a responder la pregunta "¿cuánto espacio obtengo si elimino este archivo?". Por lo tanto, incluso cuando la compresión esté desactivada, seguirá viendo resultados diferentes entre ZFS y UFS.

Cuando el consumo de espacio informado por el comando df se compara con el comando zfs list, tenga en cuenta que df está informando el tamaño de la agrupación y no solo los tamaños del sistema de archivos. Además, df no registra los sistemas de archivos descendientes o si existen instantáneas. Si en los sistemas de archivos se establece cualquiera de las propiedades de ZFS, como la compresión y las cuotas, puede resultar difícil reconciliar el consumo de espacio informado por df.

Tenga en cuenta las siguientes situaciones que también podrían impactar el consumo de espacio informado:

  • Para los archivos que son más mayores que recordsize, en general, el último bloque del archivo tendría 1/2 del espacio completo. Con el valor predeterminado recordsize establecido en 128 KB, se desaprovechan, aproximadamente, 64 KB por archivo, lo que podría producir un gran impacto. La integración de RFE 6812608 resolvería esta situación. Si activa la compresión, puede solucionar este problema. Incluso, si los datos ya están comprimidos, la porción no utilizada del último bloque estaría vacía y se podría comprimir de forma correcta.

  • En una agrupación RAIDZ-2, cada bloque consume, por lo menos, 2 sectores (fragmentos de 512 bytes) de información de paridad. El espacio consumido por la información de paridad no se ha informado, pero dado que puede variar y que puede convertirse en un porcentaje mucho mayor para bloques pequeños, se puede ver un impacto en el informe del espacio. El impacto es más extremo para un recordsize establecido en 512 bytes, donde cada bloque lógico de 512 bytes consume 1,5 KB (3 veces más espacio). Independientemente de los datos que se almacenan, si su principal preocupación es la eficacia del espacio, debe dejar el valor predeterminado de recordsize (128 KB) y activar la compresión (en el valor predeterminado de lzjb).

  • El comando df no registra los datos duplicados del archivo que fueron eliminados.

Comportamiento de falta de espacio

En ZFS, las instantáneas se crean sin dificultad ni coste alguno. Las instantáneas son comunes en casi todos los entornos de ZFS. Para obtener información sobre instantáneas de ZFS, consulte el Chapter 6, Uso de clones e instantáneas de Oracle Solaris ZFS.

La presencia de instantáneas puede producir comportamientos imprevistos al intentar liberar espacio en el disco. En general, con los permisos pertinentes, es posible eliminar archivos de un sistema de archivos lleno y disponer así de más espacio en el disco en el sistema de archivos. No obstante, si el archivo que se va a eliminar existe en una instantánea del sistema de archivos, suprimirlo no proporcionará más espacio libre. Se sigue haciendo referencia a los bloques utilizados por el archivo desde la instantánea.

Como consecuencia, suprimir un archivo puede suponer más consumo del espacio en el disco, ya que para reflejar el nuevo estado del espacio de nombre se debe crear una versión nueva del directorio. Este comportamiento significa que al intentar eliminar un archivo se puede generar un error ENOSPC o EDQUOT imprevisto.