Installable File System
| Company type | API |
|---|---|
| Industry | Computer software |
| Founded | 1989 |
| Headquarters | United States |
| Products | Filesystem drivers and APIs for MS-DOS, OS/2, Windows |
The Installable File System (IFS) represents a filesystem API utilized in MS-DOS/PC DOS 4.x, IBM OS/2, and Microsoft Windows, designed to allow the operating system to identify and load filesystem drivers seamlessly.
History
While jointly developing OS/2, IBM and Microsoft encountered constraints with the FAT file system. To address these, Microsoft created the High Performance File System (HPFS), internally known as Pinball. Instead of embedding HPFS directly into the kernel as FAT was, Microsoft devised a "driver-based" filesystem API that permits the integration of new filesystems without altering the kernel.
Following Microsoft's withdrawal from OS/2 development, IBM maintained the use of IFS, whereas Microsoft adopted a comparable interface within Windows NT.
IFS in OS/2
The IFS debuted in 1989 with OS/2 version 1.20 alongside HPFS, offering a comprehensive framework for filesystem development. Filesystem drivers operate within kernel-space (ring 0) and are composed of four parts: microIFS, miniIFS, IFS, and helper modules.
Only the IFS driver combined with the filesystem code is mandatory and is loaded through an "IFS=" entry in CONFIG.SYS. This IFS driver is a 16-bit NE dynamic-link library, even on 32-bit OS/2 systems (although unofficial 32-bit IFS variants exist).
During system startup, microIFS loads the kernel and miniIFS. The miniIFS then loads the initial IFS specified in CONFIG.SYS, which must correspond to the boot filesystem. Helper programs run in user-space (ring 3) as either 16-bit or 32-bit applications depending on the OS/2 version and support utilities such as CHKDSK and FORMAT.
This layered architecture facilitated the flexible addition of bootable filesystems, exemplified by the ext2 filesystem driver developed for OS/2.
Over time, filesystem drivers expanded: support for CD-ROM (ISO 9660) was incorporated in OS/2 2.0; UDF arrived with OS/2 4.0; and JFS was introduced in OS/2 4.5. The latest OS/2 distribution, ArcaOS, includes several filesystem drivers such as FAT32.
An official 32-bit HPFS IFS named HPFS386, which improved performance and added features like adjustable cache sizes and Access Control Lists, was available in certain OS/2 server editions. The FAT filesystem remained kernel-resident and was never officially converted into an IFS; however, third-party FAT IFS drivers provided enhancements including support for long file names (LFNs) and FAT32.
Network file-sharing protocols like NFS and SMB also utilize the stable IFS interface over time.
IFS in Windows 3.11 and 9x
IFSHLP.SYS (Installable File System Helper) is an MS-DOS device driver introduced with Microsoft Windows for Workgroups 3.11. It enables native 32-bit file access under Windows 386 Enhanced Mode by circumventing the 16-bit DOS API and blocking other real-mode drivers from intercepting INT 21h calls.
Its protected mode counterparts include IFSMGR.386 in Windows 3.11 and IFSMGR.VXD found in Windows 95 and Windows 98.
IFS in Windows NT
The IFS API is part of the Windows Driver Kit.
When Microsoft transitioned its focus from OS/2 to OS/2 NT (which later evolved into Windows NT), it incorporated IFS principles along with the HPFS filesystem into the NT architecture. This led to a redesign of IFS, simplifying it from a four-component structure to a more efficient two-part system by eliminating the microIFS and miniIFS elements. With the release of Windows NT 4.0, a defragmentation aid known as DEFRAG was introduced.
Initially, NTLDR supported kernel loading from FAT, HPFS, and NTFS filesystems; however, HPFS support was phased out in subsequent releases. Drivers and helper programs were transitioned entirely into 32-bit PE format. The FAT filesystem was extracted from the kernel and implemented as an IFS driver named FASTFAT, optimized for enhanced 32-bit processing.
Windows NT 3.1 shipped with drivers for FAT, HPFS (also called Pinball), and NTFS, alongside a CD-ROM driver that enabled long filename support through the Microsoft Joliet extension.
With Windows NT 3.51, NTFS and the IFS interface gained per-file compression capabilities. HPFS was discontinued starting with NT 4.0, whereas Windows 2000 expanded FASTFAT to accommodate FAT32 and introduced support for UDF. Additionally, Windows 2000 enhanced the IFS interface by adding per-file encryption features.
IFS 'file system filter' drivers are utilized by network file-sharing services and antivirus software to intercept and manage file input/output operations.
Apple integrated read-only HFS+ drivers into Mac OS X 10.6's Boot Camp to ensure compatibility with Windows XP, Windows Vista, and Windows 7 environments.
Further reading
- Rajeev Nagar, Windows NT File System Internals, A Developer's Guide, O'Reilly, 1997, ISBN 1-56592-249-2
- Helen Custer, Inside Windows NT File System, Microsoft Press, 1994, ISBN 1-55615-660-X
- Helen Custer, Inside Windows NT, Microsoft Press, 1993, ISBN 1-55615-481-X
See also
- Virtual file system
- List of file systems
- Comparison of file systems
- Network redirector
- Dokan Library
External links
ext2/ext3/ext4
- Ext2Fsd – GPL-licensed filesystem driver compatible with Windows 2000 through Windows 8 (both 32-bit and 64-bit); supports write functionality, multiple codepages, ext3 htree indexing, and journaling since version 0.50
- ext2 IFS for Windows NT – Provides read-only access
- Ext2IFS / Ext2-3 IFS for Windows NT/2000/XP/2003 – Offers read/write access with UTF-8 filename support and ext3 htree indexing; lacks journaling capability
ReiserFS
- ReiserFS IFS for Windows NT – Driver enabling read-only access
HFS
OS/2
Other
- CBFS Storage – a cross-platform virtual filesystem contained within a single file, featuring encryption and data compression
- CBFS Connect – a Windows user-mode SDK designed for building installable virtual file systems
- MiniSpy Sample – example of a filter driver for Microsoft Windows
- EaseFilter – framework for developing Windows user-mode file system filter drivers
- RomFS – samples of Windows drivers
- WinFUSE – .NET-based userspace filesystem framework utilizing SMB instead of IFS
- Dokany – MIT-licensed userspace filesystem framework for Windows with .NET integration