High Performance File System
From Wikipedia, the free encyclopedia
| HPFS | |
|---|---|
| Developer | Microsoft |
| Full name | High Performance File System |
| Introduced | November 1989 (OS/2 1.2) |
| Partition identifier | 0x07 (MBR) |
| Structures | |
| Directory contents | B+ tree |
| File allocation | B+ tree |
| Bad blocks | B+ tree |
| Limits | |
| Max file size | 2 GiB |
| Max number of files | Unlimited |
| Max filename size | 255 characters |
| Max volume size | 2 TiB |
| Allowed characters in filenames | Double-byte from 0x0020 to 0xFFFF |
| Features | |
| Dates recorded | Access, Creation, Modified |
| Date range | Unknown |
| Forks | Yes |
| Attributes | Read-only, hidden, system, archive |
| File system permissions | Yes (only in HPFS386) |
| Transparent compression | No |
| Transparent encryption | No |
| Supported operating systems | OS/2, Windows NT, Linux, FreeBSD |
HPFS or High Performance File System is a file system created specifically for the OS/2 operating system to improve upon the limitations of the FAT file system. It was written by Gordon Letwin and others at Microsoft and added to OS/2 version 1.2, at that time still a joint undertaking of Microsoft and IBM.
Among its improvements are:
- support for mixed case file names, in different code pages
- support for long file names (256 characters as opposed to FAT's 11 characters)
- 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 of data
- extent-based space allocation
- separate datestamps for last modification, last access, and creation (as opposed to FAT's one last modification datestamp)
- a B+ tree structure for directories
- root directory located at the mid-point, rather than beginning of the disk, for faster average access
HPFS also can keep 64 KiB of metadata ("extended attributes") per file.
IBM offers two kind of IFS drivers for this file system:
- the standard one with a cache limited to 2 MiB
- HPFS386 provided with the server versions of OS/2
HPFS386's cache is limited by the available memory and was implemented in assembler. Thus, HPFS386 is faster, but IBM is required to pay Microsoft for each copy sold. It is highly tunable by experienced administrators.
Because of the Microsoft dependence and the long disk check times after a crash, IBM ported the journaling file system JFS to OS/2 as a substitute.
DOS and Linux support HPFS via third-party drivers. Windows NT versions 3.51 and earlier had native support for HPFS.
Windows 95 and its successors Windows 98, Windows ME could only read/write HPFS when mapped via a network share, but could not read it from a local disk. They listed the NTFS partitions of networked computers as "HPFS", because NTFS and HPFS share the same filesystem identification number in the partition table.
Windows NT 3.1 and 3.51 had native read/write support for local disks and could even be installed onto an HPFS partition.
Windows NT 4 still could read and write from local HPFS formatted drives however, using HPFS was discouraged starting with Windows NT 4 and in subsequent versions. Starting with Windows 2000 the filesystem driver pinball.sys enabling the read/write access was removed from the default installation. Pinball.sys was included on the installation media for Windows 2000 and could still be manually installed and used with some limitations.[citation needed] Later Windows versions did not ship this driver.
- Roy Duncan (September 1989). "Design goals and implementation of the new High Performance File System". Microsoft Systems Journal 4:5: 1–13.
- Bridges, Dan. "Inside the High Performance File System", Significant Bits magazine, 1996.
- Chris Graham. Appendix G — HPFS internals. The Graham Utilities for OS/2 - Version 2.