HFS Plus

HFS Plus

Infobox filesystem
name = HFS+
full_name = Hierarchical File System Plus
developer = Apple
introduction_os = Mac OS 8.1
introduction_date = January 19, 1998
partition_id = Apple_HFS (Apple Partition Map)
0xAF (MBR)
Apple_HFSX (Apple Partition Map) when HFSX
48465300-0000-11AA-
AA11-00306543ECAC
(GPT)
directory_struct = B*-tree
file_struct = B*-tree
bad_blocks_struct = B*-tree
max_files_no = Unlimited
max_file_size = 8 EiB
max_filename_size = 255 characters (255 UTF-16 encoding units, normalized to Apple-modified variant of Unicode Normalization Format D)
max_volume_size = 16 EiB
filename_character_set = Unicode, any character, including NUL. OS APIs may limit some characters for legacy reasons
dates_recorded = access, attributes modified, backed up, contents modified, created
date_range = January 1 1904 - February 6 2040
date_resolution = 1s
forks_streams = Yes
attributes = Color (3 bits, all other flags 1 bit), locked, custom icon, bundle, invisible, alias, system, stationery, inited, no INIT resources, shared, desktop
file_system_permissions = Unix permissions, ACLs (Mac OS X v10.4 onward)
compression = No
encryption = No, although per-home directory AES using HFS+ formatted .dmg volumes is possible using FileVault in Mac OS X v10.3 onward
OS = Mac OS 8, Mac OS 9, Mac OS X, & Darwin,Linux

HFS Plus or HFS+ is a file system developed by Apple Inc. to replace their Hierarchical File System (HFS) as the primary file system used in Macintosh computers (or other systems running Mac OS). It is also one of the formats used by the iPod digital music player. HFS Plus is also referred to as Mac OS Extended (or, erroneously, “HFS Extended”), where its predecessor, HFS, is also referred to as "Mac OS Standard" (or, erroneously, as “HFS Standard”). During development, Apple referred to this filesystem with the codename "Sequoia". [cite web | url=http://developer.apple.com/adcnews/pastissues/devnews090597.html | title=New Mac OS Extended Format (HFS+) Available | date=1997 | work=Apple Developer News | accessdate=2007-03-28]

HFS Plus is an improved version of HFS, supporting much larger files (block addresses are 32-bit length instead of 16-bit) and using Unicode (instead of Mac OS Roman or any of several other character sets) for naming the items (files, folders) – names which are also normalized to a form very nearly the same as NFD [cite web | url=http://developer.apple.com/qa/qa2001/qa1235.html | title=Technical Q&A QA1235: Converting to Precomposed Unicode | date=February 7 2003 | work=Apple Developer Connection | accessdate=2007-03-28 ] (there are some minor differences derived from the fact that the HFS Plus format was finalized before Unicode had standardized the NFD format). HFS Plus permits filenames up to 255 UTF-16 characters in length, and n-forked files similar to NTFS, though almost no software takes advantage of forks other than the data fork and resource fork. HFS Plus also uses a full 32-bit allocation mapping table, rather than HFS’s 16 bits. This was a serious limitation of HFS, meaning that no disk could support more than 65,536 allocation blocks under HFS. When disks were small, this was of little consequence, but as larger-capacity drives became available, it meant that the smallest amount of space that any file could occupy (a single allocation block) became excessively large, wasting significant amounts of space. For example, on a 1 GB disk, the allocation block size under HFS is 16 KB, so even a 1 byte file would take up 16 KB of disk space.

Like HFS, HFS Plus uses B*-trees to store most volume metadata.

History

HFS Plus was introduced with the January 19 1998 release of Mac OS 8.1.cite web | url=http://developer.apple.com/technotes/tn/tn1150.html | title=Technical Note TN1150: HFS Plus Volume Format | date=March 5 2004 | work=Apple Developer Connection | accessdate=2007-03-28] However its first appearance, as a beta filesystem, was in the never-released Copland OS betas.

With the release of the 10.2.2 update on November 11 2002, Apple added optional journaling features to HFS Plus for improved data reliability. These features were easily accessible in Mac OS X Server, but only accessible through the command line in the standard desktop client. [cite web | url=http://daringfireball.net/2002/11/crow | title=Crow | author=John Gruber | date=November 11 2002 | work=DaringFireball.net | accessdate=2007-03-28] With Mac OS X v10.3, all HFS Plus volumes on all Macs are set to be journaled by default. Within the system, an HFS Plus volume with a journal is identified as HFSJ.

10.3 also introduced another version of HFS Plus called HFSX. HFSX volumes are almost identical to HFS Plus volumes, except that they are never surrounded by the HFS Wrapper that is typical of HFS Plus volumes and they optionally support case sensitivity for file and folder names. HFSX volumes can be recognised by two entries in the Volume Header, a value of HX in the signature field and 5 in the version field.

With 10.4, Apple added support for Inline Attribute Data records, something that had been a part of the Mac OS X implementation of HFS Plus since at least 10.0, but always marked as "reserved for future use". [cite web | url=http://arstechnica.com/reviews/os/macosx-10.4.ars/6 | title=Mac OS X 10.4 Tiger: Metadata revisited | author=John Siracusa | date=April 28 2005 | work=Ars Technica | accessdate=2007-03-28] Until the release of Mac OS X Server 10.4, HFS Plus only supported the standard UNIX file system permissions, however 10.4 introduced support for access control list-based file security, which is designed to be fully compatible with the file permission system used by Microsoft Windows XP and Windows Server 2003. [cite web | url=http://www.apple.com/br/server/macosx/windowsservices.html | title=Apple - Mac OS X Server - Windows Services | work=Apple.com | accessdate=2007-11-12 ]

Design

HFS Plus volumes are divided into sectors (called logical blocks in HFS), that are usually 512 bytes in size. These sectors are then grouped together into allocation blocks which can contain one or more sectors; the number of allocation blocks depends on the total size of the volume. HFS Plus uses a larger value to address allocation blocks than HFS, 32 bits rather than 16 bits; this means it can access 4,294,967,296 (=2^{32}) allocation blocks rather than the 65,536 (=2^{16}) allocation blocks available to HFS.

Typically an HFS Plus volume is embedded inside an HFS Wrapper, although this is becoming less prevalent. The wrapper was designed for two purposes; it allowed Macintosh computers without HFS Plus support in their ROM to boot HFS Plus volumes and it also was designed to help users transition to HFS Plus by including a minimal, bootable HFS volume with a read-only file called "Where_have_all_my_files_gone?", explaining to users with versions of the Mac OS without HFS Plus, that the volume requires a system with HFS Plus support. The original HFS volume contains a signature and an offset to the embedded HFS Plus volume within its volume header. All allocation blocks in the HFS volume which contain the embedded volume are mapped out of the HFS allocation file as "bad blocks".

There are nine structures that make up a typical HFS Plus volume:

# Sectors 0 and 1 of the volume are HFS boot blocks. These are identical to the boot blocks in an HFS volume. They are part of the HFS wrapper.
# Sector 2 contains the Volume Header equivalent to the Master Directory Block in an HFS volume. The Volume Header stores a wide variety of data about the volume itself, for example the size of allocation blocks, a timestamp that indicates when the volume was created or the location of other volume structures such as the Catalog File or Extent Overflow File. The Volume Header is always located in the same place.
# The Allocation File which keeps track of which allocation blocks are free and which are in use. It is similar to the Volume Bitmap in HFS, each allocation block is represented by one bit. A zero means the block is free and a one means the block is in use. The main difference with the HFS Volume Bitmap, is that the Allocation File is stored as a regular file, it does not occupy a special reserved space near the beginning of the volume. The Allocation File can also change size and does not have to be stored contiguously within a volume.
# The Catalog File is a B*-tree that contains records for all the files and directories stored in the volume. The HFS Plus Catalog File is very similar to the HFS Catalog File, the main differences being records are larger to allow more fields and to allow for those fields to be larger (for example to allow the longer 255-character unicode file names in HFS Plus). A record in the HFS Catalog File is 512 bytes in size, a record in the HFS Plus Catalog File is 4KB in Mac OS and 8KB in Mac OS X. Fields in HFS are of fixed size, in HFS Plus the size can vary depending on the actual size of the data they store.
# The Extents Overflow File is another B*-tree that records the allocation blocks that are allocated to each file as extents. Each file record in the Catalog File is capable of recording eight extents for each fork of a file; once those are used extents are recorded in the Extents Overflow File. Bad blocks are also recorded as extents in the Extents Overflow File. The default size of an extent record in Mac OS is 1 KB and 4 KB in Mac OS X.
# The Attributes File is a new B*-tree in HFS Plus that does not have a corresponding structure in HFS. The Attributes File can store three different types of 4 KB records: "Inline Data Attribute" records, "Fork Data Attribute" records and "Extension Attribute" records. Inline Data Attribute records store small attributes that can fit within the record itself. Fork Data Attribute records contain references to a maximum of eight extents that can hold larger attributes. Extension Attributes are used to extend a Fork Data Attribute record when its eight extent records are already used.
# The Startup File is designed for non-Mac OS systems that don't have HFS or HFS Plus support. It is similar to the Boot Blocks of an HFS volume.
# The second to last sector contains the Alternate Volume Header equivalent to the Alternate Master Directory Block of HFS.
# The last sector in the volume is reserved for use by Apple. It is used during the computer manufacturing process.

Other operating systems

As with NTFS on Linux, there has been some success in porting HFS+ to Linux, at least in non-journaled read/write and journal read-only mode. [ [http://sourceforge.net/projects/linux-hfsplus SourceForge.net: Linux HFS+ Support ] ] [ [http://www.ardistech.com/hfsplus/ Ardis: HFS ] ]

On Windows, a fairly complete filesystem driver for HFS+ exists as a commercial software package called MacDrive. This package allows Windows users to read and write HFS+ formatted drives, and read Mac format optical disks. [ [http://www.mediafour.com/products/macdrive/ Macdrive] ]

See also

* Comparison of file systems

References

External links

* [http://developer.apple.com/technotes/tn/tn1189.html Apple Technote 1189] - The Monster Disk Driver Technote
* [http://www.osxbook.com/software/hfsdebug/ hfsdebug] - A debugger for HFS Plus volumes by Amit Singh
* [http://hem.bredband.net/catacombae/hfsx.html HFSExplorer] - A free Java-based utility to read HFS Plus on Windows


Wikimedia Foundation. 2010.

Игры ⚽ Нужна курсовая?

Look at other dictionaries:

  • HFS plus — HFS+ Hersteller Apple Vollständige Bezeichnung Hierarchical File System Plus Erstveröffentlichung 19. Januar 1998 (Mac OS 8.1) Partitionskennung Apple HFS (Apple Partition Map) 0xAF (MBR) Apple HFSX (Apple Partition Map) when HFSX 48465300 000 …   Deutsch Wikipedia

  • HFS Plus — Для термина «HFS» см. другие значения. HFS+ Разработчик Apple Файловая система Hierarchical File System Plus Дата представления 19 января 1998 (Mac OS 8.1) Метка тома Apple HFS (Apple Partition Map) 0xAF (MBR) Apple HFSX (App …   Википедия

  • HFS plus — HFS+ HFS+ ou HFS étendu est un système de fichiers géré par le système d exploitation Mac OS à partir de sa version 8.1. Apple a abandonné ce format au profit du HFSX lors du passage de ses micro ordinateurs aux processeurs Intel. Il est… …   Wikipédia en Français

  • HFS+ — Hersteller Apple Vollständige Bezeichnung Hierarchical File System Plus Erstveröffentlichung 19. Januar 1998 (Mac OS 8.1) Partitionskennung Apple HFS (Apple Partition Map) 0xAF (MBR) Apple HFSX (Apple Partition Map) when HFSX 48465300 0000 11AA… …   Deutsch Wikipedia

  • HFS — Desarrollador(a) Apple Computer Nombre completo Hierarchical File System Introducido 17 de septiembre de 1985 (System 2.1) Identificador de la partición Apple HFS (Apple Partition Map) 0xAF (MBR) …   Wikipedia Español

  • HFS (значения) — HFS: HFS (англ. Hierarchical File System  иерархическая файловая система)  файловая система, разработанная Apple Computer для использования на компьютерах, работающих под управлением Mac OS. HFS Plus (HFS+)  файловая система,… …   Википедия

  • HFS+ — ou HFS étendu est un système de fichiers géré par le système d exploitation Mac OS à partir de sa version 8.1. HFSX Apple a fait évoluer ce format vers le HFSX, introduit dans son système Mac OS X 10.3. HFSX est l appellation choisie pour des… …   Wikipédia en Français

  • HFS+ — El texto que sigue es una traducción defectuosa o incompleta. Si quieres colaborar con Wikipedia, busca el artículo original y mejora o finaliza esta traducción. Puedes dar aviso al autor principal del artículo pegando el siguiente código en su… …   Wikipedia Español

  • HFS — У этого термина существуют и другие значения, см. HFS (значения). HFS (англ. Hierarchical File System, иерархическая файловая система) файловая система, разработанная Apple Computer для компьютеров с установленной операционной системой Mac… …   Википедия

  • HFS+ —   [Abk. für Hierarchical File System Plus, dt. »erweitertes hierarchisches Dateisystem«], eine grundlegend überarbeitete Version des Macintosh Dateisystems HFS, das seit Version 8.0.1 im Betriebssystem MacOS eingesetzt wird. Auch die aktuelle… …   Universal-Lexikon

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”