stringtranslate.com

Sistema de archivos jerárquico (Apple)

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.

Historia

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]

Diseño

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:

  1. 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.
  2. 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 en sí, por ejemplo, las marcas de fecha y hora de creación del volumen, la ubicación de otras estructuras de volumen como el mapa de bits del volumen o el tamaño de las estructuras lógicas como los bloques de asignación. También hay un duplicado del MDB llamado bloque de directorio maestro alternativo (también conocido como MDB alternativo ) ubicado en el extremo opuesto del volumen en el segundo bloque lógico anterior al último. Este está destinado principalmente para su uso por parte de utilidades de disco y solo se actualiza cuando el archivo de catálogo o el archivo de desbordamiento de extensiones aumentan de tamaño.
  3. El bloque lógico 3 es el bloque inicial del mapa de bits de volumen , que lleva un registro de 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á configurado, el bloque está en uso; si está libre, el bloque está libre para usarse. Dado que el mapa de bits de volumen debe tener un bit para representar cada bloque de asignación, su tamaño está determinado por el tamaño del volumen en sí. [2]
  4. El archivo de desbordamiento de extensión 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 agregaron la capacidad para que el archivo de desbordamiento de extensión almacene extensiones que registran bloques defectuosos, para evitar que el sistema de archivos intente asignar un bloque defectuoso a un archivo.
  5. 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 subproceso de archivo y un registro de archivo, mientras que cada directorio consta de un registro de subproceso de directorio y un registro de directorio. Los archivos y directorios del archivo de catálogo se ubican por su ID de nodo de catálogo (o CNID ) único.
    • Un registro de hilo de archivo almacena solo el nombre del archivo y el CNID de su directorio principal.
    • Un registro de archivo almacena una variedad de metadatos sobre el archivo, incluido su CNID, el tamaño del archivo, tres marcas de tiempo (cuándo se creó el archivo, cuándo se modificó por última vez, cuándo se realizó la última copia de seguridad), las primeras extensiones de archivo de los datos y las bifurcaciones de 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 utiliza el Finder para almacenar atributos sobre el archivo, incluidos elementos como su código de creador , código de tipo , la ventana en la que debe aparecer el archivo y su ubicación dentro de la ventana.
    • Un registro de hilo de directorio almacena solo el nombre del directorio y el CNID de su directorio principal.
    • Un registro de directorio que almacena datos como la cantidad de archivos almacenados en el directorio, el CNID del directorio, tres marcas de tiempo (cuándo se creó el directorio, cuándo se modificó por última vez, cuándo se realizó la última copia de seguridad). Al igual que el registro de archivo, el registro de directorio también almacena dos campos de 16 bytes para que los use el Finder. Estos almacenan cosas como el ancho y la altura y las coordenadas x e y de la ventana que se usa para mostrar el contenido del directorio, el modo de visualización (vista de íconos, vista de lista, etc.) de la ventana y la posición de la barra de desplazamiento de la ventana.

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 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.

Véase también

Referencias

  1. ^ Gagne, Ken (31 de agosto de 2009). "Losing legacy data to Snow Leopard" (Pérdida de datos heredados en Snow Leopard). Computerworld . Consultado el 7 de septiembre de 2009 .
  2. ^ abc "The HFS Primer" (PDF) . MWJ . GCSF, Incorporated. 25 de mayo de 2003. Archivado desde el original (PDF) el 31 de diciembre de 2019.
  3. ^ "Novedades de macOS: macOS Sierra 10.12". Apple . Consultado el 25 de enero de 2017 .
  4. ^ "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 .
  5. ^ "Acerca del contenido de seguridad de la actualización de seguridad 2021-005 Mojave". Soporte técnico de Apple . 2022-06-21 . Consultado el 2023-05-18 .
  6. ^ 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-9Archivado desde el original (PDF) el 13 de febrero de 2017. Consultado el 13 de julio de 2006 .

Enlaces externos