El sistema de archivos jerárquico ( HFS ) es un sistema de archivos propietario desarrollado por Apple Inc. para su uso en sistemas informáticos que ejecutan Mac OS . Originalmente diseñado para su uso en disquetes y discos duros , también se puede encontrar en medios de solo lectura como CD-ROM . HFS también se conoce como Mac OS Standard (o HFS Standard ), mientras que su sucesor, HFS Plus , también se llama Mac OS Extended (o HFS Extended).
Con la introducción de Mac OS X 10.6 , Apple abandonó el soporte para formatear o escribir discos e imágenes HFS , que siguieron siendo compatibles como volúmenes de solo lectura hasta macOS 10.15 . [1] A partir de macOS 10.15, los discos HFS ya no se pueden leer.
Apple introdujo HFS en septiembre de 1985, específicamente para dar soporte al primer disco duro de Apple para Macintosh, reemplazando al Macintosh File System (MFS), el sistema de archivos original que se había introducido más de un año y medio antes con la primera computadora Macintosh . HFS se basó en gran medida en el primer sistema operativo de Apple con un sistema de archivos jerárquico , SOS para el fallido Apple III , que también sirvió como base para los sistemas de archivos jerárquicos en Apple IIe y Apple Lisa . HFS fue desarrollado por Patrick Dirks y Bill Bruffey. Compartía una serie de características de diseño con MFS que no estaban disponibles en otros sistemas de archivos de la época (como FAT de DOS ). Los archivos podían tener múltiples bifurcaciones (normalmente una bifurcación de datos y una de recursos ), lo que permitía que los datos principales del archivo se almacenaran por separado de los recursos como los íconos que podrían necesitar ser localizados. Los archivos se referenciaban con identificadores de archivo únicos en lugar de nombres de archivo, y los nombres de archivo podían tener hasta 31 caracteres de longitud.
Sin embargo, MFS había sido optimizado para ser utilizado en medios muy pequeños y lentos, a saber, disquetes , por lo que HFS se introdujo para superar algunos de los problemas de rendimiento que llegaron con la introducción de medios más grandes, en particular los discos duros . La principal preocupación era el tiempo necesario para mostrar el contenido de una carpeta. Con MFS, toda la información de listado de archivos y directorios se almacenaba en un solo archivo, que el sistema tenía que buscar para crear una lista de los archivos almacenados en una carpeta en particular. Esto funcionaba bien con un sistema con unos pocos cientos de kilobytes de almacenamiento y quizás un centenar de archivos, pero a medida que los sistemas crecían a megabytes y miles de archivos, el rendimiento se degradaba rápidamente.
La solución fue reemplazar la estructura de directorios de MFS por una más adecuada para sistemas de archivos más grandes. HFS reemplazó la estructura de tabla plana por el Archivo de Catálogo que utiliza una estructura de árbol B en la que se pueden realizar búsquedas muy rápidamente independientemente del tamaño. [2] HFS también rediseñó varias estructuras para poder almacenar números más grandes, reemplazando los números enteros de 16 bits por los de 32 bits casi universalmente. Curiosamente, uno de los pocos lugares en los que no se produjo este "aumento de tamaño" fue el propio directorio de archivos, lo que limita a HFS a un total de 65.535 archivos en cada disco lógico.
Si bien HFS es un formato de sistema de archivos propietario, está bien documentado; generalmente hay soluciones disponibles para acceder a discos con formato HFS desde la mayoría de los sistemas operativos modernos .
Apple introdujo HFS por necesidad con su primer disco duro de 20 MB para Macintosh en septiembre de 1985, donde se cargaba en la RAM desde un disquete MFS al arrancar usando un archivo de parche ("Hard Disk 20"). Sin embargo, HFS no se introdujo ampliamente hasta que se incluyó en la ROM de 128K que debutó con Macintosh Plus en enero de 1986 junto con la unidad de disquete más grande de 800 KB para Macintosh que también usaba HFS. La introducción de HFS fue el primer avance de Apple para dejar atrás un modelo de computadora Macintosh: el Macintosh original de 128K , que carecía de memoria suficiente para cargar el código HFS y fue descontinuado rápidamente.
En 1998, Apple introdujo HFS Plus para solucionar la asignación ineficiente de espacio en disco en HFS y para añadir otras mejoras. HFS Plus sigue siendo compatible con las versiones actuales de Mac OS, pero a partir de Mac OS X , no se puede utilizar un volumen HFS para el arranque y, a partir de Mac OS X 10.6 (Snow Leopard), los volúmenes HFS son de solo lectura y no se pueden crear ni actualizar. En macOS Sierra (10.12), las notas de la versión de Apple indican que "El sistema de archivos HFS Standard ya no es compatible". [3] Sin embargo, la compatibilidad con HFS Standard de solo lectura siguió funcionando hasta el lanzamiento de macOS 10.15 , [4] poniendo fin al soporte oficial para el HFS Standard clásico después de 35 años. [5]
Un volumen de almacenamiento se divide inherentemente en bloques lógicos de 512 bytes. El sistema de archivos jerárquico agrupa estos bloques lógicos en bloques de asignación , que pueden contener uno o más bloques lógicos, según el tamaño total del volumen. HFS utiliza un valor de 16 bits para direccionar los bloques de asignación, lo que limita la cantidad de bloques de asignación a 65 535 (2 16 -1).
Un volumen HFS está formado por cinco estructuras:
El archivo de catálogo, que almacena todos los registros de archivos y directorios en una única estructura de datos, genera problemas de rendimiento cuando el sistema permite la multitarea , ya que solo un programa puede escribir en esta estructura a la vez, lo que significa que muchos programas pueden estar esperando en cola debido a que un programa "acapara" el sistema. [6] También es un problema de confiabilidad grave, ya que el daño a este archivo puede destruir todo el sistema de archivos. Esto contrasta con otros sistemas de archivos que almacenan registros de archivos y directorios en estructuras separadas (como el sistema de archivos FAT de DOS o el sistema de archivos Unix ), donde tener una estructura distribuida en el disco significa que dañar un solo directorio generalmente no es fatal y los datos posiblemente se puedan reconstruir con los datos almacenados en las partes no dañadas.
Además, el límite de 65.535 bloques de asignación dio como resultado que los archivos tuvieran un tamaño "mínimo" equivalente a 1/65.535 del tamaño del disco. Por lo tanto, cualquier volumen dado, sin importar su tamaño, solo podía almacenar un máximo de 65.535 archivos. Además, a cualquier archivo se le asignaría más espacio del que realmente necesitaba, hasta el tamaño del bloque de asignación. Cuando los discos eran pequeños, esto tenía poca importancia, porque el tamaño del bloque de asignación individual era trivial, pero a medida que los discos comenzaron a acercarse a la marca de 1 GB, la cantidad mínima de espacio que cualquier archivo podía ocupar (un solo bloque de asignación) se volvió excesivamente grande, desperdiciando cantidades significativas de espacio en disco. Por ejemplo, en un disco de 1 GB, el tamaño del bloque de asignación bajo HFS es de 16 KB, por lo que incluso un archivo de 1 byte ocuparía 16 KB de espacio en disco. Esta situación era un problema menor para los usuarios que tenían archivos grandes (como imágenes, bases de datos o audio) porque estos archivos más grandes desperdiciaban menos espacio como porcentaje de su tamaño de archivo. Por otro lado, los usuarios con muchos archivos pequeños podían perder una gran cantidad de espacio debido al gran tamaño de los bloques de asignación. Esto hizo que la partición de discos en volúmenes lógicos más pequeños fuera muy atractiva para los usuarios de Mac, porque los documentos pequeños almacenados en un volumen más pequeño ocuparían mucho menos espacio que si residieran en una partición grande. El mismo problema existía en el sistema de archivos FAT16.
HFS guarda el caso de un archivo que se crea o se renombra, pero no distingue entre mayúsculas y minúsculas durante su funcionamiento.