HFS Plus o HFS+ (también conocido como Mac OS Extended o HFS Extended ) es un sistema de archivos con registro desarrollado por Apple Inc. Reemplazó al Sistema de archivos jerárquico (HFS) como el sistema de archivos principal de las computadoras Apple con el lanzamiento de Mac OS 8.1 en 1998. HFS+ continuó como el sistema de archivos principal de Mac OS X hasta que fue reemplazado por el Sistema de archivos de Apple (APFS), lanzado con macOS High Sierra en 2017. HFS+ también es uno de los formatos compatibles con el reproductor de música digital iPod .
En comparación con su predecesor HFS , también llamado Mac OS Standard o HFS Standard, HFS Plus admite archivos mucho más grandes (las direcciones de bloque tienen una longitud de 32 bits en lugar de 16 bits) y usa Unicode (en lugar de Mac OS Roman o cualquiera de varios otros conjuntos de caracteres) para nombrar elementos. Al igual que HFS, HFS Plus usa árboles B para almacenar la mayoría de los metadatos de volumen , pero a diferencia de la mayoría de los sistemas de archivos que admiten enlaces duros , HFS Plus admite enlaces duros a directorios. HFS Plus permite nombres de archivo de hasta 255 caracteres de longitud y archivos n-bifurcados similares a NTFS , aunque hasta 2005 casi ningún software de sistema aprovechó otras bifurcaciones que no fueran la bifurcación de datos y la bifurcación de recursos . HFS Plus también usa una tabla de asignación de mapeo de 32 bits completa en lugar de los 16 bits de HFS, lo que mejora el uso del espacio en discos grandes.
Con nombre en código Sequoia en desarrollo, [5] HFS+ se introdujo con el lanzamiento de Mac OS 8.1 el 19 de enero de 1998. [2]
Con el lanzamiento de la actualización de Mac OS X 10.2.2 el 11 de noviembre de 2002, Apple agregó funciones de registro opcionales a HFS Plus para mejorar la confiabilidad de los datos. Estas funciones eran accesibles a través de la interfaz gráfica de usuario, utilizando la aplicación Disk Utility en Mac OS X Server, pero solo a través de la línea de comandos en el cliente de escritorio estándar. [6]
Con Mac OS X v10.3, todos los volúmenes HFS Plus en todas las Mac se configuraron para que se registraran en el diario de manera predeterminada. Dentro del sistema, un volumen HFS Plus con un registro se identifica como HFSJ .
Mac OS X 10.3 también introdujo otra versión de HFS Plus llamada HFSX . Los volúmenes HFSX son casi idénticos a los volúmenes HFS Plus, excepto que nunca están rodeados por el HFS Wrapper que es típico de los volúmenes HFS Plus y, opcionalmente, admiten la distinción entre mayúsculas y minúsculas para los nombres de archivos y carpetas. Los volúmenes HFSX se pueden reconocer por dos entradas en el encabezado del volumen, un valor de HX en el campo de firma y 5 en el campo de versión. [2]
Mac OS X 10.3 también marcó la adopción por parte de Apple de la descomposición Unicode 3.2, reemplazando la descomposición Unicode 2.1 utilizada anteriormente. Este cambio causó problemas a los desarrolladores que escribían software para Mac OS X. [7]
Mac OS X 10.3 introdujo una serie de técnicas destinadas a evitar la fragmentación de archivos en HFS+. [8]
Con Mac OS X 10.4, Apple agregó soporte para registros de datos de atributos en línea, algo que había sido parte de la implementación de HFS Plus en Mac OS X desde al menos la versión 10.0 , pero siempre marcado como "reservado para uso futuro". [9] Hasta el lanzamiento de Mac OS X Server 10.4 , HFS Plus solo admitía los permisos del sistema de archivos estándar de UNIX ; sin embargo, 10.4 introdujo soporte para la seguridad de archivos basada en listas de control de acceso , que proporciona un mecanismo más rico para definir permisos de archivos y también está diseñado para ser completamente compatible con los modelos de permisos de archivos en otras plataformas como Microsoft Windows XP y Windows Server 2003. [ 10]
En Mac OS X Leopard 10.5, se agregó la vinculación fija de directorios como parte fundamental de Time Machine.
En Mac OS X Snow Leopard 10.6, se agregó la compresión HFS+ usando Deflate (Zlib). En código abierto y en otras áreas, esto se conoce como AppleFSCompression o decmpfs. Los datos comprimidos se pueden almacenar en un atributo extendido o en la bifurcación de recursos. Cuando se usan API que no son de Apple, AppleFSCompression no siempre es completamente transparente. [11] OS X 10.9 introdujo dos nuevos algoritmos: LZVN (libFastCompression) y LZFSE .
En Mac OS X Lion 10.7, se agregó al sistema operativo el cifrado de volúmenes lógicos (conocido como FileVault 2 ). Esta incorporación al sistema operativo no modificó en ningún modo la estructura lógica del sistema de archivos. El administrador de volúmenes lógicos de Apple se conoce como Core Storage y su cifrado a nivel de volumen se puede aplicar a sistemas de archivos distintos de HFS Plus. Con el hardware adecuado, tanto el cifrado como el descifrado deberían ser transparentes.
Los volúmenes HFS Plus se dividen en sectores (llamados bloques lógicos en HFS), que suelen tener un tamaño de 512 bytes. Estos sectores se agrupan en bloques de asignación que pueden contener uno o más sectores; la cantidad de bloques de asignación depende del tamaño total del volumen. HFS Plus utiliza un valor mayor para direccionar los bloques de asignación que HFS, 32 bits en lugar de 16 bits; esto significa que puede acceder a 4.294.967.296 (= 2 32 ) bloques de asignación en lugar de los 65.536 (= 2 16 ) bloques de asignación disponibles para HFS. [2] Cuando los discos eran pequeños, esto tenía poca importancia, pero a medida que se disponía de unidades de mayor capacidad, significó que 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. 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. Como resultado, el sistema HFS Plus mejora enormemente la utilización del espacio en discos más grandes.
Los nombres de archivos y carpetas en HFS Plus también están codificados en UTF-16 [12] y normalizados a una forma casi igual a la Forma de Normalización Unicode D (NFD) [13] (lo que significa que los caracteres precompuestos como "å" se descomponen en el nombre de archivo HFS+ y, por lo tanto, cuentan como dos unidades de código [14] y UTF-16 implica que los caracteres de fuera del Plano Multilingüe Básico también cuentan como dos unidades de código en un nombre de archivo HFS+). HFS Plus permite nombres de archivo de hasta 255 unidades de código UTF-16 de longitud.
Anteriormente, los volúmenes HFS Plus se incrustaban dentro de un sistema de archivos estándar HFS. Esto se eliminó gradualmente con la transición de Tiger a las Mac Intel, donde el sistema de archivos HFS Plus no estaba incrustado dentro de un contenedor. El contenedor había sido diseñado para dos propósitos; permitía a las computadoras Macintosh sin soporte HFS Plus en su ROM iniciar volúmenes HFS Plus y también fue diseñado para ayudar a los usuarios a realizar la transición a HFS Plus al incluir un volumen HFS mínimo con un archivo de solo lectura llamado Where_have_all_my_files_gone? , explicando a los usuarios con versiones de Mac OS 8.0 y anteriores sin HFS Plus, que el volumen requiere un sistema con soporte HFS Plus. El volumen HFS original contiene una firma y un desplazamiento al volumen HFS Plus incrustado dentro de su encabezado de volumen. Todos los bloques de asignación en el volumen HFS que contienen el volumen incrustado se asignan fuera del archivo de asignación HFS como bloques defectuosos . [2]
Entre los sistemas de archivos utilizados para sistemas Unix, HFS Plus no admite archivos dispersos .
Hay nueve estructuras que componen un volumen HFS Plus típico: [2]
HFS Plus carece de varias características consideradas básicas de los sistemas de archivos modernos como ZFS y NTFS . [16] Las sumas de comprobación de datos son la característica faltante que se cita con mayor frecuencia. [17]
Además de la suma de comprobación, las características de los sistemas de archivos modernos de las que HFS+ carece incluyen:
HFS Plus no fue diseñado para sistemas tipo Unix , por lo que características como los permisos del sistema de archivos y los enlaces duros tuvieron que ser adaptados cuando Apple pasó a Mac OS X. [17]
El núcleo de Linux incluye el módulo hfsplus [19] para montar sistemas de archivos HFS+ en modo lectura-escritura. Los archivos fsck y mkfs de HFS+ se han adaptado a Linux y forman parte del paquete hfsprogs. [20]
En 2009, se diagnosticó que estos controladores estaban dañando las unidades HFS+ con una capacidad superior a 2 TB. [21] En consecuencia, las distribuciones de Linux como Debian y Ubuntu dejaron de permitir el montaje de unidades HFS+ o particiones mayores a 2 TB. [22] A febrero de 2011 [actualizar], se está trabajando para levantar esta restricción. [23] [ necesita actualización ]
En el controlador HFS+ actual de Linux, el registro en diario debe estar deshabilitado para escribir datos de forma segura en una partición HFS+. Siempre que la partición no esté siendo utilizada por el software Time Machine de Apple , el registro en diario se puede deshabilitar en macOS: [24] Al utilizar la Utilidad de Discos en OS X Yosemite, el usuario puede mantener presionada la tecla Alt/Opción y hacer clic en "Deshabilitar registro en diario" en el menú Archivo, después de haber seleccionado primero una partición montada.
Una partición HFS+ con registro habilitado se puede montar a la fuerza con acceso de escritura en Linux, pero esto no es compatible y no es recomendable. [24] [25]
En 2011, la Linux Foundation aceptó un proyecto de Google Summer of Code para implementar compatibilidad con escritura en HFS+ con registro [26], pero no se completó en ese momento y todavía es un trabajo en progreso. Los avances y las mejoras del controlador HFS+, incluidas algunas actualizaciones de compatibilidad con registro, se publican en la lista de correo linux-fsdevel [27] de vez en cuando.
A partir de julio de 2011 [actualizar], Paragon Software Group proporcionó controladores de kernel que permiten acceso completo de lectura y escritura a volúmenes registrados en HFS+. [28] El producto es una implementación propietaria de HFS+ basada en la biblioteca UFSD propietaria de Paragon. Existen ediciones gratuitas y pagas del controlador, e incluyen una utilidad para verificar y reparar volúmenes HFS+. Según la documentación en línea (versión gratuita [29] o edición paga [30] ), tanto la edición gratuita como la paga actualmente admiten kernels Linux desde 2.6.36 hasta 4.12.x. Ubuntu , Debian , Fedora Linux , Rocky Linux , Red Hat Enterprise Linux , OpenSUSE y CentOS son las únicas distribuciones Linux oficialmente compatibles. [31]
A partir de mayo de 2012, Apple ha lanzado únicamente controladores HFS+ de solo lectura para Windows XP, Windows Vista y Windows 7 como parte del software Boot Camp en Mac OS X 10.6 . [32] Esto significa que los usuarios de estos sistemas pueden leer datos en la unidad HFS+, pero no escribir en ellos. Microsoft ha creado un controlador HFS+ para Xbox 360 principalmente con el propósito de leer iPods formateados con HFS+. [ cita requerida ]
Se puede utilizar un software gratuito y de código abierto, jHFSplus, basado en HFSExplorer y jpfm, para montar particiones hfs/hfs+ como carpetas virtuales de solo lectura. [33]
Existe un complemento gratuito para Total Commander que puede leer, entre otros, sistemas de archivos HFS y HFS+. [34]
DiskInternals Linux Reader se puede utilizar para extraer/guardar carpetas/archivos de discos duros/particiones HFS y HFS+. [35]
También está disponible un producto comercial, MacDrive, para montar unidades HFS y HFS+, discos ópticos y otros medios en el Explorador de Windows, y permite tanto leer como escribir en el volumen, así como reparar y formatear discos Mac. [36]
HFS+ de Paragon es un producto comercial para Windows que permite la lectura y escritura completas y la administración de discos desde todas las versiones de Windows, desde Windows XP hasta Windows Server 2008. [37]
Una alternativa libre ( GPL ) es HFSExplorer escrito por Erik Larsson. [38] HFSExplorer es una aplicación Java para ver y extraer archivos de un volumen HFS+ (Mac OS Extended) o un volumen HFSX (Mac OS Extended, sensible a mayúsculas y minúsculas). El volumen puede estar ubicado en un disco físico, en varios formatos de imagen de disco de Apple y de imagen de disco dispersa , o en un volcado de sistema de archivos sin procesar. Sin embargo, HFSExplorer es una solución de solo lectura; no puede escribir en volúmenes formateados en HFS.