# High Performance File System

> Mediated Wiki article. Canonical URL: https://mediated.wiki/source/High_Performance_File_System
> Markdown URL: https://mediated.wiki/source/High_Performance_File_System.md
> Source: https://en.wikipedia.org/wiki/High_Performance_File_System
> Source revision: 1334538771
> License: Creative Commons Attribution-ShareAlike 4.0 International (https://creativecommons.org/licenses/by-sa/4.0/)

Filesystem created for OS/2 operating system

Not to be confused with [Hi Performance FileSystem](/source/Hi_Performance_FileSystem).

This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed. Find sources: "High Performance File System" – news · newspapers · books · scholar · JSTOR (August 2013) (Learn how and when to remove this message)

HPFS Developer(s) Microsoft, IBM Full name High Performance File System Introduced November 1989; 36 years ago (1989-11) with OS/2 1.2 Partition IDs 0x07 (MBR) Structures Directory contents B tree File allocation B+ tree Bad blocks List Limits Max volume size 64 GB (as implemented) 2 TB (theoretical) Max file size 2 GB Max no. of files Unlimited Max filename length 255 characters Allowed filename characters Single-byte from 0x20 to 0xFF Features Dates recorded Access, Creation, Modified Forks Yes Attributes Read-only, hidden, system, archive File system permissions Yes (only in HPFS386) Transparent compression No Transparent encryption No Other Supported operating systems OS/2, Windows NT, Linux, DragonFly BSD, eComStation, ArcaOS

**HPFS** (**High Performance File System**) is a [file system](/source/File_system) created specifically for the [OS/2](/source/OS%2F2) [operating system](/source/Operating_system) to improve upon the limitations of the [FAT](/source/File_Allocation_Table) file system. It was written by [Gordon Letwin](/source/Gordon_Letwin) and others at [Microsoft](/source/Microsoft) and added to OS/2 version [1.2](/source/OS%2F2_1.2), at that time still a joint undertaking of Microsoft and [IBM](/source/IBM), and released in 1988.

## Overview

Compared with FAT, HPFS provided a number of additional capabilities:

- Support for [mixed case](/source/Case_Sensitivity) file names, in different [code pages](/source/Code_page)

- Support for long file names (255 characters as opposed to FAT's [8.3](/source/8.3) naming scheme)

- More efficient use of disk space (files are not stored using multiple-sector clusters but on a per-sector basis)

- An internal architecture that keeps related items close to each other on the disk volume

- Less [fragmentation](/source/File_system_fragmentation) of data

- [Extent](/source/Extent_(file_systems))-based space allocation

- Separate datestamps for last modification, last access, and creation (as opposed to last-modification-only datestamp in then-times implementations of FAT)

- [B+ tree](/source/B%2B_tree) structure for directories

- Root directory located at the midpoint, rather than at the beginning of the disk, for faster average access

HPFS also can keep 64 [KB](/source/Kilobyte) of [metadata](/source/Metadata_(computing)) ("[extended attributes](/source/Extended_attribute)") per file.

IBM offers two kinds of [IFS](/source/Installable_File_System) drivers for this file system:

- The standard one with a cache limited to 2 MB

- *HPFS386* provided with certain server versions of OS/2, or as added component for the server versions that did not come with it

HPFS386's cache is limited by the amount of available memory in OS/2's system memory arena[1] and was implemented in 32-bit [assembly language](/source/Assembly_language). HPFS386 is a [ring 0](/source/Ring_(computer_security)) driver (allowing direct hardware access and direct interaction with the kernel) with built-in SMB networking properties that are usable by various server [daemons](/source/Daemon_(computing)), whereas HPFS is a [ring 3](/source/Ring_3_(computer_security)) driver. Thus, HPFS386 is faster than HPFS and highly optimized for server applications. It is also highly tunable by experienced administrators.

Though IBM still had rights to HPFS, its agreement with Microsoft to continue licensing the HPFS386 version was contingent upon the company paying Microsoft a licensing fee for each copy sold. This was a result of the Microsoft and IBM collaboration that gave both the right to use Windows and OS/2 technology.

Due to the Microsoft dependence, limited partition size, file size limit of 2 GB and the long disk-check times after a crash, IBM ported the [journaling file system](/source/Journaling_file_system), [JFS](/source/JFS_(file_system)), to OS/2 as a substitute.

[DOS](/source/DOS) and [Linux](/source/Linux) support HPFS via third-party drivers. [Windows NT](/source/Windows_NT) versions 3.51 and earlier had native support for HPFS.

## Native support under Windows

[Windows 95](/source/Windows_95) and its successors [Windows 98](/source/Windows_98) and [Windows Me](/source/Windows_Me) have no support for HPFS. They listed the [NTFS](/source/NTFS) partitions of networked computers as "HPFS"[*[citation needed](https://en.wikipedia.org/wiki/Wikipedia:Citation_needed)*], because NTFS and HPFS share the same [filesystem identification number](/source/Partition_type) in the partition table.

[Windows NT 3.1](/source/Windows_NT_3.1) and [3.5](/source/Windows_NT_3.5) have native read/write support for local disks and can even be installed onto an HPFS partition.

[Windows NT 3.51](/source/Windows_NT_3.51) can also read and write from local HPFS formatted drives. Starting with [Windows NT 4](/source/Windows_NT_4) the filesystem driver *PINBALL.SYS* enabling the read/write access is not shipped anymore. Later Windows versions do not ship with this driver. Note that this driver is limited to 4GB HPFS volumes.

Microsoft retained rights to OS/2 technologies, including the HPFS filesystem, after they ceased collaboration with IBM. Since Windows NT 3.1 was designed for more rigorous (enterprise-class) use than previous versions of Windows, it included support for HPFS (and NTFS) giving it a larger storage capacity than the [FAT12](/source/FAT12) and [FAT16](/source/FAT16) filesystems. However, since HPFS lacks a [journal](/source/Journaling_file_system), any recovery after an unexpected shutdown or other error state takes progressively longer as the filesystem grows. A utility such as [CHKDSK](/source/CHKDSK) would need to scan each entry in the filesystem to ensure no errors are present, a problem which is vastly reduced on NTFS, which simply replays the journal.

## See also

- [Comparison of file systems](/source/Comparison_of_file_systems)

- [HPFS BPB](/source/HPFS_BPB)

## References

1. **[^](#cite_ref-1)** ["Virtual Memory Problems under OS/2"](https://web.archive.org/web/20150924061927/http://www.os2voice.org/VNL/past_issues/VNL0708H/feature_3.html). www.os2voice.org. Archived from [the original](http://www.os2voice.org/VNL/past_issues/VNL0708H/feature_3.html) on 24 September 2015. Retrieved 11 June 2015.

## Further reading

- Ray Duncan (September 1989). ["Design goals and implementation of the new High Performance File System"](http://pages.cs.wisc.edu/~bolo/shipyard/hpfs.html). *Microsoft Systems Journal*. **4** (5): 1–13.

- Bridges, Dan (November 1996). ["Inside the High Performance File System - parts 1 to 6"](http://www.edm2.com/0410/hpfs1.html). *Electronic Developer Magazine for OS/2*. Vol. 4, no. 10. Retrieved 2016-07-18.

- Dieter Brors (1997). ["HPFS unter Windows NT 4.0"](http://www.heise.de/ct/97/01/306/). *C't Magazin für Computertechnik (German)*. **1**: 306.

- Chris Graham. ["Appendix G — HPFS internals"](https://web.archive.org/web/20060210154146/http://www.warpspeed.com.au/Products/OS2/GU/Manual/appg.htm). *The Graham Utilities for OS/2 - Version 2*. Archived from [the original](http://www.warpspeed.com.au./Products/OS2/GU/Manual/appg.htm) on 2006-02-10.

- [How to get Windows NT 4, Windows 2000, and Windows XP to read HPFS partitions](https://archive.today/20130130020814/http://homepage2.nifty.com/bayer/hpfs_w2k.html%23English)

v t e File systems Comparison of file systems distributed Unix filesystem Disk and non-rotating ADFS AdvFS Amiga FFS Amiga OFS APFS AthFS bcachefs BFS Be File System Boot File System Byte File System (z/VM) Btrfs CVFS CXFS DFS EFS Encrypting File System Extent File System Episode ext ext2 ext3 ext4 FAT exFAT Files-11 Fossil GPFS HAMMER HAMMER2 HFS (Classic Mac OS) HFS (MVS) HFS+ HPFS HTFS JFS LFS MFS Macintosh File System TiVo Media File System MINIX NetWare File System Next3 NILFS NILFS2 NSS NTFS OneFS OpenZFS PFS QFS QNX4FS ReFS ReiserFS Reiser4 Reliance Reliance Nitro RFS SFS Shared File System (VM) Smart File System SNFS Soup (Apple) Tux3 UBIFS UFS/UFS2 soft updates WAPBL VxFS WAFL Xiafs XFS Xsan zFS (z/OS) ZFS (Sun) Optical disc HSF ISO 9660 ISO 13490 UDF Flash memory and SSD APFS FAT exFAT TFAT EROFS F2FS JFS NVFS host-side wear leveling CHFS JFFS JFFS2 LogFS NILFS NILFS2 YAFFS UBIFS Distributed parallel BeeGFS Ceph CXFS GFS2 Google File System OCFS2 OrangeFS PVFS QFS Xsan more... NAS 9P AFS (OpenAFS) AFP Coda DFS Google File System GPFS Lustre NCP NFS POHMELFS Hadoop SMB (CIFS) SSHFS more... Specialized Aufs AXFS Boot File System Compact Disc File System cramfs Davfs2 EROFS FTPFS FUSE Lnfs LTFS NOVA MVFS SquashFS UMSDOS OverlayFS UnionFS Pseudo configfs devfs debugfs kernfs procfs specfs sysfs tmpfs WinFS Encrypted eCryptfs EncFS EFS Rubberhose SSHFS ZFS Types Clustered Global Grid Self-certifying Flash Journaling Log-structured Object Record-oriented Semantic Steganographic Synthetic Versioning Features Case preservation Copy-on-write Data deduplication Data scrubbing Execute in place Extent File attribute Extended file attributes File change log Fork Inode Links Hard Symbolic Access control Access-control list Filesystem-level encryption Permissions Modes Sticky bit Interfaces File manager File system API Installable File System Virtual file system Lists Cryptographic Default Log-structured Layouts Master Boot Record GUID Partition Table Apple Partition Map

v t e OS/2 Developers Companies Microsoft (1.0 to 1.3 only) IBM People Ed Iacobucci (chief architect) Barry Appelman Joe Belfiore Moshe Dunie Naveen Jain Susan Kare Galina Kofman Barry Leiba Gordon Letwin John R. Patrick Mark Zbikowski Major versions 1.0 1.1 1.2 1.21 1.3 2.0 2.1 Warp 3.0 Warp Connect Warp Connect (PowerPC Edition) Warp 4.0 Warp 4.5 Components Information Presentation Facility Installable File System LAN Server Presentation Manager Windows Libraries for OS/2 Workplace Shell Technology and concepts Common User Access High Performance File System Pinball Journaled File System New Executable Shadow System Object Model Systems Application Architecture Successors eComStation ArcaOS See also Odin (Win32-OS/2) Team OS/2 Category Commons

---
Adapted from the Wikipedia article [High Performance File System](https://en.wikipedia.org/wiki/High_Performance_File_System) by Wikipedia contributors ([contributor history](https://en.wikipedia.org/wiki/High_Performance_File_System?action=history)). Available under [Creative Commons Attribution-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-sa/4.0/). Changes may have been made.
