High Performance File System: Difference between revisions

Content deleted Content added
Fixed filesystem sizes. It has 4-byte sector numbers and file size is limited to 2GiB (I've tried to create larger file and failed).
Native support under Windows: actually, I'll just remove this because otherwise it'll hang on here for another decade; this misinformation has been here for eighteen years already
 
(207 intermediate revisions by more than 100 users not shown)
Line 1:
{{Short description|Filesystem created for OS/2 operating system}}
{{infobox filesystem |
{{distinguish|Hi Performance FileSystem}}
name = HPFS |
{{ref improve|date=August 2013}}
full_name = High Performance File System |
{{infobox filesystem
developer = [[Microsoft]] |
|name = HPFS
introduction_os = [[OS/2]] 1.2|
|full_name = High Performance File System
introduction_date = November 1989 |
|developer = [[Microsoft]], [[IBM]]
partition_id = 0x07 ([[MBR]]) |
|introduction_os = [[OS/2 1.2]]
directory_struct = [[B_plus_tree|B+Tree]] |
|introduction_date = {{Start date and age|1989|11}}
file_struct = [[B_plus_tree|B+Tree]] |
|partition_id = <code>[[Partition type#PID_07h|0x07]]</code> ([[Master Boot Record|MBR]])
bad_blocks_struct = [[B_plus_tree|B+Tree]] |
|directory_struct = [[B tree]]
max_filename_size = 255 characters |
|file_struct = [[B+ tree]]
max_files_no = Unlimited |
|bad_blocks_struct = [[List (abstract data type)|List]]
max_volume_size = 2 [[tebibyte|TiB]] |
|max_filename_size = 255 characters
max_file_size = 2 [[gigibyte|GiB]] |
|max_files_no = Unlimited
filename_character_set = Double-byte from 0x0020 to 0xFFFF |
|max_volume_size = 64 [[gigabyte|GB]] (as implemented)<br/>2 [[terabyte|TB]] (theoretical)
dates_recorded = Access, Creation, Modified |
| max_file_size = 2 [[gigabyte|GB]]
date_range = Unknown |
|filename_character_set = Single-byte from <code>0x20</code> to <code>0xFF</code>
forks_streams = Yes |
|dates_recorded = Access, Creation, Modified
attributes = Read-only, hidden, system, archive |
|date_range =
file_system_permissions = Yes (only in HPFS386) |
|date_resolution =
compression = No |
|forks_streams = Yes
encryption = No |
|attributes = Read-only, hidden, system, archive
|file_system_permissions = Yes (only in HPFS386)
|compression = No
|encryption = No
|OS = [[OS/2]], [[Windows NT]], [[Linux]], [[DragonFly BSD]], [[eComStation]], [[ArcaOS]]
}}
 
'''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 [[File Allocation Table|FAT]] file system. It was written by [[Gordon Letwin]] and others at [[Microsoft]] and added to OS/2 version [[OS/2 1.2|1.2]], at that time still a joint undertaking of Microsoft and [[International Business Machines|IBM]], and released in 1988.
 
== Overview ==
Among its improvements are
Compared with FAT, HPFS provided a number of additional capabilities:
* support for [[mixed case]] file names, in different code pages;
*Support for [[Case Sensitivity|mixed case]] file names, in different [[code page]]s
* support for long file names (256 characters as opposed to FAT's 11 characters);
*Support for long file names (255 characters as opposed to FAT's [[8.3]] naming scheme)
* more efficient use of disk space (files are not stored using multiple-sector clusters but on a per-sector basis);
*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;
*An internal architecture that keeps related items close to each other on the disk volume
* less [[fragmentation]] of data;
*Less [[file system fragmentation|fragmentation]] of data
* extent-based space allocation;
*[[Extent (file systems)|Extent]]-based space allocation
* separate datestamps for last modification, last access, and creation (as opposed to FAT's one last modification datestamp);
*Separate datestamps for last modification, last access, and creation (as opposed to last-modification-only datestamp in then-times implementations of FAT)
* a [[b-tree]] structure for directories; and
*[[B+ tree]] structure for directories
* root directory located at the mid-point, rather than beginning of the disk, for faster average access.
*Root directory located at the midpoint, rather than at the beginning of the disk, for faster average access
 
ItHPFS also can keep 64 [[KibibyteKilobyte|KiBKB]] of [[Metadata (computing)|metadata]] ("Extended[[extended attributesattribute]]s") per file.
 
IBM offers two kindkinds of [[Installable File System|IFS]] drivers for this file system: the standard one with a cache limited to 2&nbsp;MiB, and HPFS386 provided with the server versions of OS/2. HPFS386's cache is limited by the available memory. It's highly tunable by experienced administrators. Thus, HPFS386 is faster, but IBM is required to pay Microsoft for each copy sold.
 
*The standard one with a cache limited to 2&nbsp;MB
Because of the Microsoft dependence and the longer disk check times after a crash, IBM ported the [[journaling file system]] [[JFS]] to OS/2 as a substitute.
*''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<ref>{{cite web|title=Virtual Memory Problems under OS/2|url=http://www.os2voice.org/VNL/past_issues/VNL0708H/feature_3.html|publisher=www.os2voice.org|access-date=11 June 2015|archive-url=https://web.archive.org/web/20150924061927/http://www.os2voice.org/VNL/past_issues/VNL0708H/feature_3.html|archive-date=24 September 2015|url-status=dead}}</ref> and was implemented in 32-bit [[assembly language]]. HPFS386 is a [[Ring (computer security)|ring 0]] driver (allowing direct hardware access and direct interaction with the kernel) with built-in SMB networking properties that are usable by various server [[daemon (computing)|daemon]]s, whereas HPFS is a [[Ring 3 (computer security)|ring 3]] driver. Thus, HPFS386 is faster than HPFS and highly optimized for server applications. It is also highly tunable by experienced administrators.
There are also third-party drivers for DOS and Linux and official ones for [[Windows NT]].
 
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&nbsp;GB and the long disk-check times after a crash, IBM ported the [[journaling file system]], [[JFS (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.
 
== Native support under Windows ==
[[Windows 95]] and its successors [[Windows 98]] and [[Windows Me]] have no support for HPFS. {{citation needed span|date=May 2023|They listed the [[NTFS]] partitions of networked computers as "HPFS"}}, because NTFS and HPFS share the same [[Partition type|filesystem identification number]] in the partition table.
 
[[Windows NT 3.1]] and [[Windows NT 3.5|3.5]] have native read/write support for local disks and can even be installed onto an HPFS partition.
 
[[Windows NT 3.51]] can also read and write from local HPFS formatted drives. Starting with [[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]] and [[FAT16]] filesystems. However, since HPFS lacks a [[Journaling file system|journal]], any recovery after an unexpected shutdown or other error state takes progressively longer as the filesystem grows. A utility such as [[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]]
* [[HPFS BPB]]
 
==References==
{{reflist}}
 
== Further reading ==
* {{journalcite referencejournal
| URLurl = http://wwwpages.2kacs.miptwisc.ruedu/~alexpbolo/docs/programming/formatsshipyard/hpfs.pdfhtml
| Titletitle=Design goals and implementation of the new High Performance File System
| Authorauthor=RoyRay Duncan
| Journaljournal=Microsoft Systems Journal
| Yeardate=September 1989|Volumevolume=4:5
| Pagesissue=1–135
| pages=1–13
}}
* {{citenewsauthorcite magazine
| url=http://www.edm2.com/0410/hpfs1.html<!-- http://www.nondot.org/sabre/os/files/FileSystems/HPFS/ -->
| title=Inside the High Performance File SytemSystem - parts 1 to 6
| givenfirst=Dan
| surnamelast=Bridges
| magazine=Electronic Developer Magazine for OS/2
| org=Significant Bits magazine
| date=November 1996
| volume=4
| issue=10
| access-date=2016-07-18
}}
* {{cite journal
| url = http://www.heise.de/ct/97/01/306/
| title=HPFS unter Windows NT 4.0
| author=Dieter Brors
| journal=C't Magazin für Computertechnik (German)
| year=1997|volume=1
| pages=306
}}
* {{cite web
|url=http://www.warpspeed.com.au./Products/OS2/GU/Manual/appg.htm
|title=Appendix G &mdash; HPFS internals
|author=Chris Graham
|work=The Graham Utilities for OS/2 - Version 2
|url-status=dead
|archive-url=https://web.archive.org/web/20060210154146/http://www.warpspeed.com.au/Products/OS2/GU/Manual/appg.htm
|archive-date=2006-02-10
}}
* [https://archive.today/20130130020814/http://homepage2.nifty.com/bayer/hpfs_w2k.html%23English How to get Windows NT 4, Windows 2000, and Windows XP to read HPFS partitions]
 
{{Filesystem}}
[[Category:Disk file systems]]
{{OS/2}}
[[Category:IBM software]]
[[Category:Microsoft software]]
 
[[Category:Disk file systems]]
[[de:OS/2#HPFS]]
[[Category:File systems supported by the Linux kernel]]
[[fr:High Performance File System]]
[[Category:IBM file systems]]
[[it:HPFS]]
[[Category:Windows disk file systems]]
[[nl:High Performance File System]]
[[Category:OS/2 technology|High Performance File System]]
[[ja:HPFS]]
[[Category:Computer file systems]]
[[pl:HPFS]]
[[Category:Assembly language software]]
[[ru:HPFS]]