El Sistema de Archivos Jerárquico ( HFS ) es un sistema de archivos propietario desarrollado por Apple Inc. para su uso en sistemas informáticos con Mac OS . Diseñado originalmente para disquetes y discos duros , también se puede encontrar en soportes de solo lectura como los CD-ROM . HFS también se conoce como Mac OS Standard (o HFS Standard ), mientras que su sucesor, HFS Plus , se denomina Mac OS Extended (o HFS Extended).
Con la introducción de Mac OS X 10.6 , Apple dejó de dar soporte para formatear o escribir discos e imágenes HFS Standard , que siguieron siendo compatibles como volúmenes de solo lectura hasta macOS 10.15 . [ 1 ] A partir de macOS 10.15, los discos HFS Standard ya no se pueden leer.
Historia
Apple presentó 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 el primer ordenador 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ó de base para los sistemas de archivos jerárquicos en el Apple IIe y el Apple Lisa . HFS fue desarrollado por Patrick Dirks y Bill Bruffey. Compartía varias características de diseño con MFS que no estaban disponibles en otros sistemas de archivos de la época. Los archivos podían tener múltiples bifurcaciones (normalmente una de datos y otra de recursos ), lo que permitía almacenar los datos principales del archivo por separado de recursos como iconos que pudieran necesitar localización. Los archivos se referenciaban con identificadores únicos en lugar de nombres de archivo, y los nombres de archivo podían tener hasta 31 caracteres.
Sin embargo, MFS se había optimizado para usarse en soportes muy pequeños y lentos, como los disquetes , por lo que se introdujo HFS para superar algunos de los problemas de rendimiento que surgieron con la introducción de soportes más grandes, especialmente los discos duros . La principal preocupación era el tiempo necesario para mostrar el contenido de una carpeta . En MFS, toda la información de listado de archivos y directorios se almacenaba en un único archivo, que el sistema tenía que consultar para crear una lista de los archivos almacenados en una carpeta específica. Esto funcionaba bien con un sistema con unos cientos de kilobytes de almacenamiento y quizás un centenar de archivos, pero a medida que los sistemas crecían hasta alcanzar 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 con el Archivo de Catálogo , que utiliza una estructura de árbol B que podía buscarse muy rápidamente independientemente del tamaño. [ 2 ] HFS también rediseñó varias estructuras para poder almacenar números más grandes, reemplazando los enteros de 16 bits por enteros de 32 bits casi universalmente. Curiosamente, uno de los pocos lugares donde no se produjo este "aumento de tamaño" fue en 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; por lo general, existen 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 mediante un archivo de parche ("Hard Disk 20"). Sin embargo, HFS no se popularizó hasta que se incluyó en la ROM de 128 KB que debutó con el Macintosh Plus en enero de 1986 junto con la unidad de disquete de 800 KB para Macintosh que también utilizaba HFS. La introducción de HFS fue el primer avance de Apple que dejó obsoleto un modelo de ordenador Macintosh: el Macintosh original de 128 KB , que carecía de memoria suficiente para cargar el código HFS y fue descontinuado rápidamente.
En 1998, Apple presentó HFS Plus para solucionar la asignación ineficiente del espacio en disco en HFS y para añadir otras mejoras.
A partir de Mac OS X 10.0, un volumen HFS Standard no se puede usar para arrancar , y a partir de Mac OS X 10.6 (Snow Leopard), los volúmenes HFS Standard 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 continuó funcionando hasta el lanzamiento de macOS 10.15 , [ 4 ] finalizando la compatibilidad oficial con el HFS Standard clásico después de 35 años.
Diseño
Un volumen de almacenamiento se divide inherentemente en bloques lógicos de 512 bytes. El Sistema de Archivos Jerárquico (HFS) 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 el número de bloques de asignación a 65 535 (2¹⁶ - 1).
Un volumen HFS está compuesto por cinco estructuras:
- Los bloques lógicos 0 y 1 del volumen son los bloques de arranque , que contienen información de inicio del sistema. [ 2 ] Por ejemplo, los nombres de los archivos del sistema y del shell (normalmente el Finder ) que se cargan al inicio.
- El bloque lógico 2 contiene el Bloque de Directorio Maestro (también conocido como MDB ). Este define una amplia variedad de datos sobre el volumen, como la fecha y hora de creación, la ubicación de otras estructuras del volumen (como el Mapa de Bits del Volumen) o el tamaño de estructuras lógicas (como los bloques de asignación). Existe una copia del MDB, denominada Bloque de Directorio Maestro Alternativo (también conocido como MDB Alternativo ), ubicada en el extremo opuesto del volumen, en el penúltimo bloque lógico. Esta copia está destinada principalmente a las utilidades de disco y solo se actualiza cuando aumenta el tamaño del Archivo de Catálogo o del Archivo de Desbordamiento de Extensiones.
- El bloque lógico 3 es el bloque inicial del mapa de bits del volumen , que registra qué bloques de asignación están en uso y cuáles están libres. Cada bloque de asignación en el volumen está representado por un bit en el mapa: si el bit está activado, el bloque está en uso; si está desactivado, el bloque está libre para su uso. Dado que el mapa de bits del volumen debe tener un bit para representar cada bloque de asignación, su tamaño viene determinado por el tamaño del propio volumen. [ 2 ]
- El archivo de desbordamiento de extensiones es un árbol B que contiene extensiones adicionales que registran qué bloques de asignación se asignan a qué archivos, una vez que se agotan las tres extensiones iniciales del archivo de catálogo. Las versiones posteriores también añadieron la capacidad de almacenar extensiones que registran bloques defectuosos, para evitar que el sistema de archivos intente asignar un bloque defectuoso a un archivo.
- El archivo de catálogo es otro árbol B que contiene registros de todos los archivos y directorios almacenados en el volumen. Almacena cuatro tipos de registros. Cada archivo consta de un registro de hilo de archivo y un registro de archivo, mientras que cada directorio consta de un registro de hilo de directorio y un registro de directorio. Los archivos y directorios en el archivo de catálogo se localizan mediante su ID de nodo de catálogo único (o CNID ).
- Un registro de subproceso de archivo almacena únicamente el nombre del archivo y el CNID de su directorio padre.
- Un registro de archivo almacena diversos metadatos sobre el archivo, incluyendo su CNID, el tamaño del archivo, tres marcas de tiempo (fecha de creación, última modificación y última copia de seguridad), las primeras extensiones de archivo de las bifurcaciones de datos y recursos, y punteros a los primeros registros de extensión de datos y recursos del archivo en el archivo de desbordamiento de extensión. El registro de archivo también almacena dos campos de 16 bytes que el Finder utiliza para almacenar atributos del archivo, como su código de creador , el código de tipo , la ventana en la que debe aparecer el archivo y su ubicación dentro de la ventana.
- Un registro de subproceso de directorio almacena únicamente el nombre del directorio y el CNID de su directorio padre.
- Un registro de directorio almacena datos como el número de archivos, el CNID del directorio y tres marcas de tiempo (fecha de creación, última modificación y última copia de seguridad). Al igual que el registro de archivos, el registro de directorio también almacena dos campos de 16 bytes para el Finder. Estos campos almacenan información como el ancho, la altura y las coordenadas x e y de la ventana que muestra el contenido del directorio, el modo de visualización (vista de iconos, vista de lista, etc.) y la posición de la barra de desplazamiento.
Limitaciones
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 la cola debido a que un programa está "acaparando" el sistema. [ 5 ] También representa un grave problema de fiabilidad, ya que un daño a este archivo puede destruir todo el sistema de archivos. Esto contrasta con otros sistemas de archivos que almacenan los registros de archivos y directorios en estructuras separadas (como el sistema de archivos FAT de DOS o el sistema de archivos Unix ), donde tener la estructura distribuida por todo el disco significa que dañar un solo directorio no hace que todo el sistema de archivos sea inutilizable 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 resultó en 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, independientemente de su tamaño, solo podía almacenar un máximo de 65.535 archivos. Es má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 no tenía mayor importancia, ya que el tamaño de cada bloque de asignación era insignificante, pero a medida que los discos se acercaban a 1 GB, la cantidad mínima de espacio que cualquier archivo podía ocupar (un solo bloque de asignación) se volvía 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 en 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 menos problemática para los usuarios con 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. 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 hacía que particionar los discos en volúmenes lógicos más pequeños resultara muy atractivo para los usuarios de Mac, ya que los documentos pequeños almacenados en un volumen menor 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 conserva las mayúsculas y minúsculas del nombre que se le da a un archivo cuando se crea o se renombra, por lo que sí las conserva , pero su funcionamiento no distingue entre mayúsculas y minúsculas .
Véase también
Referencias
- ↑ Gagne, Ken (31 de agosto de 2009). "Pérdida de datos heredados con Snow Leopard" . Computerworld . Recuperado el 7 de septiembre de 2009 .
- 1 2 3 "The HFS Primer" (PDF) . MWJ . GCSF, Incorporated. 25 de mayo de 2003. Archivado del original (PDF) el 31 de diciembre de 2019.
- ↑ "Novedades de macOS: macOS Sierra 10.12" . Apple . Consultado el 25 de enero de 2017 .
- ↑ "Cómo montar unidades HFS Classic en macOS Catalina y versiones posteriores" . Matthew Hughes. 25 de julio de 2020. Consultado el 2 de marzo de 2022 .
- ↑ Giampaolo, Dominic (1999). Diseño práctico de sistemas de archivos con el sistema de archivos Be (PDF) . Morgan Kaufmann. pág. 37. ISBN 1-55860-497-9. Archivado del original (PDF) el 13-02-2017 . Consultado el 13-07-2006 .
Enlaces externos
- Especificación HFS de developer.apple.com
- Sistemas de archivos: Guía práctica: HFS - ligeramente desactualizado
- Explicación de la estructura de archivos HFS : descripción inicial de HFS.
- DiskWarrior : software para eliminar todos los daños al directorio de disco HFS.
- MacDrive archivado el 4 de octubre de 2010 en Wayback Machine : software para leer y escribir discos con formato HFS/HFS Plus en Microsoft Windows.
- hfsutils : software de código abierto para manipular HFS en Unix, DOS, Windows y OS/2.
- Sistemas de archivos de disco
- Sistemas de archivos de Apple Inc.
- Sistemas operativos Macintosh
- Sistemas de archivos informáticos