Sistemas de archivos de BSD, Solaris, Unix

Como se mencionó en el artículo sobre los conceptos básicos de los sistemas de archivos, un sistema de archivos (también sistema de ficheros) constituye una parte indispensable de cualquier sistema operativo (SO). Y la mayoría de los sistemas operativos emplean sus propios sistemas de ficheros que pueden ser incompatibles o limitadamente compatibles con otros entornos. Cuando se trata de la familia Unix, este sistema operativo y sus variantes, como BSD y Solaris, tradicionalmente usaban UFS que luego se actualizó a UFS2. Con el tiempo, en Solaris, se originó un sistema de archivos de próxima generación llamado ZFS. Este último ha ganado una inmensa popularidad y rápidamente ha llegado a otras plataformas. Aquí se puede encontrar una descripción breve de estos dos tipos de sistemas de archivos más comunes y sus peculiaridades clave, y familiarizarse con las tecnologías de almacenamiento de datos asociadas a ellos.

Nota: Algunos de estos sistemas operativos pueden proporcionar soporte de lectura y escritura para otros formatos, como FAT/FAT32 de Windows de Microsoft y Ex2/Ext3/Ext3 de Linux que se describen en los artículos respectivos.

UFS/UFS2

UFS (del inglés UNIX File System, Sistema de archivos de UNIX) proviene del Berkeley Fast File System (FFS, Sistema de archivos rápido de Berkeley) que fue desarrollado por Computer Science Research Group (CSRG, Grupo de Investigación en Informática) de la Universidad de California en Berkeley y lanzado en 1983 junto con la distribución 4.2 BSD de UNIX. El desarrollo de UFS continuaba y, finalmente, se convirtió en el formato principal para máquinas que operaban en BSD y en otros derivados de Unix. Hoy en día, a pesar de ser bastante anticuado en términos de características, UFS sigue siendo popular primariamente gracias a su rendimiento altamente estable.

En UFS, el espacio de almacenamiento se divide en Grupos de cilindros (Cylinder Groups). Sus ubicaciones y otra información de servicio importante se pueden encontrar en el Superbloque (Superblock). En este sistema de ficheros, un archivo está representado por un descriptor individual denominado inodo junto con los bloques de datos que conforman su contenido. Cada Grupo de cilindros realiza un seguimiento de sus bloques e inodos no ocupados utilizando los mapas de bits (bitmaps) dedicados.

Un inodo contiene todos los atributos del archivo, excepto su nombre. Y además almacena las direcciones directas de los primeros 12 bloques de datos del archivo. Si hay más bloques de datos, las direcciones subsiguientes apuntan a los bloques indirectos que almacenan las direcciones directas de esos bloques. Un directorio, por otro lado, consta de entradas que asocian los números de los inodos con los nombres de los archivos que se ubican en el directorio dado.

A pesar de que UFS crea un solo inodo para cada archivo, aun permite almacenar el mismo archivo en varios directorios y bajo diferentes nombres. Dichos archivos comparten el mismo inodo y se conocen como enlaces duros (hard links o también enlaces físicos). En este caso, el inodo indica el número exacto de referencias al mismo.

A lo largo de los años, UFS ha pasado por muchos cambios. En 2003, como un reemplazo del UFS original, se introdujo UFS2, ampliado para la implementación en los dispositivos de almacenamiento de múltiples terabytes. Además, muchos vendedores de Unix crearon sus propias adaptaciones de UFS. Por ejemplo, Sun Microsystems agregó el registro por diario (journaling en inglés) a su versión de UFS en Solaris 7. Este sistema de archivos guarda todas las actualizaciones de metadatos en el registro antes de aplicarlas a cualquier estructura real, lo que garantiza su protección contra fallas que pueden ocurrir en el proceso.

Así que, pueden existir diferencias considerables entre distintas implementaciones de UFS. Siendo así, a pesar de que toda la familia de sistemas de archivos se conoce como UFS, muchas de sus variedades pueden servir sólo para usos particulares o tener extensiones propietarias incompatibles con las variantes homólogas de Unix.

ZFS

ZFS (del inglés Zettabyte File System, Sistema de archivos de zettabyte) fue creado en 2001 por Sun Microsystems como parte de su sistema operativo Solaris. En 2005, se hizo de código abierto y se integró en otras plataformas, incluido en BSD. Cuando Oracle Corporation adquirió Sun en 2010, el desarrollo posterior de ZFS se hizo un asunto de propiedad exclusiva. Por esa razón, se estableció un proyecto separado llamado OpenZFS que hizo posible mantener la base de código de ZFS de código abierto y hacer el sistema disponible para el público fuera del ecosistema cerrado de Oracle. Aún así, no se pudo incluir ZFS directamente en el núcleo de Linux debido a un conflicto de licencias, por lo que se lanzó la iniciativa ZFSonLinux (ZoL) para abordar este problema. Todo esto resultó en la existencia de varias "ramas" distintas de ZFS.

En general, ZFS ha cambiado radicalmente la idea de lo que es un sistema de archivos. Es que este ofrece las funciones nativas de administración de volúmenes, similares a las proporcionadas por las tecnologías basadas en RAID, junto con muchas otras características únicas.

ZFS puede cubrir varios medios de almacenamiento. Todos sus recursos se combinan en un único grupo de almacenamiento compartido. Este último puede contener uno o más dispositivos virtuales denominados vdevs. Cada vdev se describe con una etiqueta individual, que también contiene su Uberbloque (Uberblock). Este último tiene funciones similares a las del Superbloque (Superblock) de otros sistemas de archivos.

La asignación de espacio de almacenamiento se realiza en bloques de tamaños variables. Estos bloques se organizan como objetos de diferentes tipos, por ejemplo, objetos de archivo y objetos de directorio. Una estructura especial llamada dnode registra el tipo de objeto y su tamaño y apunta a los bloques que almacenan su contenido de datos. Puede haber hasta tres punteros de bloques en un dnode. Dicho puntero puede hacer referencia a un bloque hoja que almacena datos reales o a un bloque indirecto que, a su vez, apunta a otro bloque.

Los objetos similares se agrupan, formando conjuntos de objetos. Cada objeto de dicho conjunto se puede identificar por su número. La colección de dnodos que los describen también se almacena como un objeto al que apunta un dnodo especial llamado metadnodo. Un conjunto de objetos dedicado llamado Meta Object Set (del inglés, Conjunto de objeto meta) almacena los metadatos que caracterizan todo el grupo de almacenamiento.

ZFS también emplea el mecanismo de Copiar en escrito (VACA) o Copy-on-Write (CoW). Él siempre crea una copia del bloque a modificar, en lugar de reemplazarlo directamente. Después de que se complete la operación, el puntero del bloque se actualiza para indicar la dirección del bloque recién escrito, mientras que la versión original queda sin cambios.

En la actualidad, ZFS se usa ampliamente por las empresas y los usuarios con conocimientos tecnológicos. Aunque hay algunas discusiones sobre su estabilidad actual, este formato tiene un gran potencial para convertirse en la nueva opción número uno.

Sugerencia: La información sobre la posibilidad de lograr éxito en la recuperación de datos de estos tipos de sistemas de archivos se puede encontrar en los artículos sobre las peculiaridades de la recuperación de datos según el SO y las probabilidades de recuperar datos. El proceso en sí se describe en las instrucciones dedicadas a la recuperación de datos en Unix, Solaris y BSD.

Otras tecnologías de almacenamiento de la familia de SO Unix

UFS/UFS2 es un sistema de archivos tradicional que sirve mejor para casos de uso más simples. Si bien es autónomo en términos de la funcionalidad básica de sistemas de ficheros, no dispone de ninguna función avanzada de administración del almacenamiento de datos y debe depender de marcos de trabajo a nivel de núcleo o utilidades externas para realizar tareas más complicadas, como la creación de RAID o el cifrado. ZFS, por el contrario, es un formato de próxima generación que combina un sistema de archivos y varios mecanismos de administración de volúmenes en un solo paquete, lo que elimina la necesidad de utilizar herramientas externas.

A continuación, se presentan algunas tecnologías de almacenamiento de datos comunes que pueden complementar los sistemas de archivos antes mencionados:

  • GEOM Framework: un marco modular que se puede utilizar junto con UFS/UFS2 en el sistema operativo FreeBSD, lo que permite hacer configuraciones avanzadas en los dispositivos de almacenamiento en los que se emplea este sistema de archivos. GEOM los abstrae en "proveedores" virtuales que el sistema de archivos puede utilizar. Un proveedor de este tipo puede representarse por una sola unidad, múltiples unidades organizadas en un arreglo RAID 0 (striping o bandas) o RAID 1 (mirroring o espejo), o un volumen cifrado.

  • zPool: un constructo de almacenamiento de datos central en ZFS que reúne varios dispositivos en una sola unidad de almacenamiento lógica, aprovechando las capacidades nativas de creación de grupos de almacenamiento (pool) de este sistema de ficheros. En un grupo de este tipo, los datos pueden distribuirse entre las unidades sin redundancia (similar a RAID 0), 'reflejarse' en dos o más unidades (similar a RAID 1) u organizarse en RAID-Z, una configuración más avanzada que se describe a continuación.

    Sugerencia: Por favor, consulte las instrucciones respectivas, si necesita recuperar datos de un volumen ZFS simple (con striping o mirroring).

  • RAID-Z: una funcionalidad similar a la de RAID e integrada en el sistema de archivos ZFS para mejorar la eficiencia de almacenamiento de datos y conseguir la tolerancia a fallas. Los datos dentro del grupo de almacenamiento (pool) se dividen en fragmentos (chunks) que se escriben en varios discos, con uno o más bloques de paridad calculados para los datos en esos fragmentos. Según la configuración elegida, la matriz puede utilizar un solo bloque de paridad para la protección contra la falla de una sola unidad (RAID-Z1), dos bloques de paridad para resistir la falla de dos unidades (RAID-Z2) o tres bloques de paridad para superar la falla de tres unidades (RAID-Z3).

    Sugerencia: Por favor, lea el artículo respectivo, si necesita recuperar datos de RAID-Z de ZFS.

  • Cifrado ZFS: una función de cifrado integrada en el sistema de archivos ZFS. Permite cifrar cada conjunto de datos dentro de un grupo de almacenamiento (pool) de ZFS de forma independiente, lo que garantiza la seguridad de porciones concretas de los datos almacenados.

Si le interesan los sistemas de archivos típicos de otros entornos, lea los siguientes artículos:

Última actualización: el 14 de noviembre de 2024

Si le gusta este artículo, compártalo en sus redes sociales: