Sistemas de archivos de BSD, Solaris, Unix

As pointed out in the article on Filesystems basics, a filesystem constitutes an indispensable part of any OS. And most operating systems tend to employ their own native FS formats, whose support may be limited or unavailable under other environments. Speaking of the Unix family, this OS and its variants, like BSD and Solaris, have traditionally relied on UFS, which was later upgraded to UFS2. After a while, a next-generation filesystem called ZFS originated from Solaris. The latter has also gained immense popularity and promptly made it to other platforms. Here you can find a brief overview of these two most common FS types and learn about their key peculiarities.

Please note: Some of these operating systems may provide read-write support for other formats, such as FAT/FAT32 of Microsoft Windows and Ex2/Ext3/Ext3 of Linux, that are described in the respective articles.

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 ganó una inmensa popularidad y rápidamente llegó a otras plataformas. Aquí se puede encontrar una descripción breve de estos dos tipos de sistemas de archivos más comunes y conocer sus peculiaridades clave.

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.

Contenido:

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 funcionaban 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 está dividido 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 las 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 convirtió en 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). Él tiene funciones similares a las del Superbloque (Superblock) en 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 que indique 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.

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

Última actualización: el 25 de abril de 2023

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