Jump to content

File system

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by JLaTondre (talk | contribs) at 00:34, 17 September 2005 (→‎General Information: disambiguation link repair (You can help!)). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

The following tables compare general and technical information for a number of file systems. Please see the individual file system articles for further information.

General Information

Creator Introduced in Original operating system
FS Bell Labs 1972 Unix
FAT12 Microsoft 1980 QDOS
FAT16 Microsoft 1983 MS-DOS version 2
MFS Apple 1984 Mac OS
HFS Apple 1985 Mac OS

OFSTemplate:Fn

Metacomco for Commodore 1985 Amiga OS
FAT32 Microsoft 1996 Windows 95bTemplate:Fn
HPFS IBM & Microsoft 1988 OS/2
NTFS Microsoft, Gary Kimura, Tom Miller 1993? Windows NT
HFS+ Apple 1998 Mac OS
FFS Kirk McKusick 1983 4.2BSD
FFS (Amiga) Commodore 1987 AmigaOS 1.3
UFS1 Kirk McKusick 1994 4.4BSD
UFS2 Kirk McKusick 2002 FreeBSD 5.0
LFS Margo Seltzer 1993 4.4BSD
Mac OS X UFS Apple (from UFS1) ? Mac OS X
ext2 Rémy Card 1993 Linux
ext3 Stephen Tweedie 1999 Linux
ReiserFS Namesys 2001 Linux
Reiser4 Namesys 2005 Linux
XFS SGI 1994 IRIX
JFS IBM 1990 AIXTemplate:Fn
JFS2 IBM 1999 OS/2 WSeB
Be File System Be Inc., D. Giampaolo, C. Meurillon 1996? BeOS
NSS Novell 1998 Netware 5
NWFS Novell 1985 Netware 286
ODS5 DEC ? VMS
UDF ISO/ECMA/OSTA 1995 -
VxFS VERITAS 1991 SVR4.0
Creator Introduced in Original operating system

Limits

Maximum filename length Allowable characters in directory entriesTemplate:Fn Maximum pathname length Maximum file size Maximum volume size Template:Fn
FAT12 255 bytes Template:Fn Any Unicode except NUL Template:Fn Template:Fn No limit defined Template:Fn 4GiB 1MiB to 512MiB
FAT16 255 bytes Template:Fn Any Unicode except NUL Template:Fn Template:Fn No limit defined Template:Fn 4GiB 16MiB to 2GiB
FAT32 255 bytes Template:Fn Any Unicode except NUL Template:Fn Template:Fn No limit defined Template:Fn 4GiB 512MiB to 2TiB Template:Fn
HPFS 255 bytes Any byte except NUL Template:Fn No limit defined Template:Fn 4GiB 2TiBTemplate:Fn
NTFS 255 bytes Any Unicode except NUL No limit defined Template:Fn 16EiB 16EiB
HFS+ 255 charactersTemplate:Fn Any Unicode except NUL Template:Fn Template:Fn ? 8EiB 8EiB
FFS 255 bytes Any byte except NUL Template:Fn No limit defined Template:Fn 4GiB 256TiB
UFS1 255 bytes Any byte except NUL Template:Fn No limit defined Template:Fn 4GiB to 256TiB 256TiB
UFS2 255 bytes Any byte except NUL Template:Fn No limit defined Template:Fn 512GiB to 32PiB 1YiB
Mac OS X UFS ? Any byte except NUL Template:Fn ? ? ?
ext2 255 bytes Any byte except NUL Template:Fn No limit defined Template:Fn 16GiB to 2TiBTemplate:Fn 2TiB to 32TiB
ext3 255 bytes Any byte except NUL Template:Fn No limit defined Template:Fn 16GiB to 2TiBTemplate:Fn 2TiB to 32TiB
ReiserFS 4032 bytes/255 characters Any byte except NUL Template:Fn No limit defined Template:Fn 8TiBTemplate:Fn 16TiB
Reiser4 ? ? No limit defined Template:Fn 8TiB on x86 ?
XFS 255 bytes Any byte except NUL Template:Fn No limit defined Template:Fn 9EiBTemplate:Fn 9EiBTemplate:Fn
JFS 255 bytes Any byte except NUL Template:Fn No limit defined Template:Fn 8EiB 512TiB to 4PiB
JFS2 255 bytes Any Unicode except NUL No limit defined Template:Fn 4PiB 32PiB
Be File System 255 bytes Any byte except NUL Template:Fn No limit defined Template:Fn 12288 bytes to 260GiBTemplate:Fn 256PiB to 2EiB
NSS ? Depends on namespace used Template:Fn Only limited by client 8TiB 8TiB
NWFS 80 bytes Template:Fn Depends on namespace used Template:Fn No limit defined Template:Fn 4GiB 1TiB
ODS5 236 bytesTemplate:Fn ? 4096 bytesTemplate:Fn 1TiB 1TiB
VxFS 255 bytes Any byte except NUL Template:Fn No limit defined Template:Fn 16EiB ?
UDF 255 bytes Any Unicode except NUL 1023 bytes Template:Fn 16EiB ?
Maximum filename length Allowable characters in directory entriesTemplate:Fn Maximum pathname length Maximum file size Maximum volume size Template:Fn

Metadata

Rich File type metadata Stores file owner POSIX file permissions Creation timestamps Last access/read timestamps Last metadata change timestamps Last archive timestamps Access control lists Security/MAC labels Alternate data stream/fork
FAT12 No Template:Fn No No Yes Yes No No No No No
FAT16 No Template:Fn No No Yes Yes No No No No No
FAT32 No Template:Fn No No Yes Yes No No No No No
HPFS Yes YesTemplate:Fn No Yes Yes No No No ? No
NTFS Yes Yes NoTemplate:Fn Yes Yes Yes No Yes ? Yes
HFS+ Partial Yes Yes Yes Yes Yes ? Yes ? Yes
FFS No Yes Yes No Yes Yes No No No No
UFS1 No Template:Fn Yes Yes No Yes Yes No No Template:Fn No Template:Fn No
UFS2 Yes Template:Fn Yes Yes Yes Yes Yes No No Template:Fn No Template:Fn No
LFS No Yes Yes No Yes Yes No No No No
Mac OS X UFS Partial Yes Yes No Yes Yes No No No No
ext2 Yes Template:Fn Yes Yes No Yes Yes No Yes Template:Fn Yes Template:Fn No
ext3 Yes Template:Fn Yes Yes No Yes Yes No Yes Template:Fn Yes Template:Fn No
ReiserFS Yes Template:Fn Yes Yes No Yes Yes No Yes Template:Fn Yes Template:Fn No
Reiser4 No Yes Yes No Yes Yes No No No No
XFS Yes Yes Yes No Yes Yes No Yes Yes Template:Fn No
JFS Yes Template:Fn Yes Yes No Yes Yes No Yes ? No
Be File System Yes Yes Yes Yes No No No No No Yes
NSS Yes Template:Fn Yes Yes YesTemplate:Fn YesTemplate:Fn Yes YesTemplate:Fn Yes ? YesTemplate:Fn
NWFS Yes Template:Fn Yes ? YesTemplate:Fn YesTemplate:Fn Yes YesTemplate:Fn Yes ? YesTemplate:Fn
ODS5 Yes Template:Fn Yes Yes ? ? ? ? Yes ? No
VxFS Yes Template:Fn Yes Yes Yes Yes Yes No Yes ? Yes
UDF No Yes Yes Yes Yes Yes No Yes No Yes
Rich File type metadata Stores file owner POSIX file permissions Creation timestamps Last access/read timestamps Last metadata change timestamps Last archive timestamps Access control lists Security/MAC labels Alternate data stream/fork

Features

Hard links Soft links Block journaling Metadata-only journaling Case-sensitive Case-preserving File Change Log
FAT12 No No No No No No No
FAT16 No No No No No Partial No
FAT32 No No No No No Partial No
HPFS No No No No No Yes No
NTFS Yes YesTemplate:Fn PartialTemplate:Fn Yes YesTemplate:Fn Yes Yes
HFS+ Yes Yes No YesTemplate:Fn YesTemplate:Fn Yes No
FFS Yes Yes No No Yes Yes No
UFS1 Yes Yes No No Yes Yes No
UFS2 Yes Yes No No Yes Yes No
LFS Yes Yes YesTemplate:Fn YesTemplate:Fn Yes Yes No
Mac OS X UFS Yes Yes No No Yes Yes No
ext2 Yes Yes No No Yes Yes No
ext3 Yes Yes Yes Yes Yes Yes No
ReiserFS Yes Yes Yes Template:Fn Yes Yes Yes No
Reiser4 Yes Yes Yes No Yes Yes No
XFS Yes Yes No Yes Yes Template:Fn Yes Yes
JFS Yes Yes No Yes YesTemplate:Fn Yes No
Be File System Yes Yes No Yes Yes Yes ?
NSS Yes Yes ? Yes YesTemplate:Fn YesTemplate:Fn YesTemplate:Fn
NWFS YesTemplate:Fn YesTemplate:Fn No No YesTemplate:Fn YesTemplate:Fn YesTemplate:Fn
ODS5 Yes YesTemplate:Fn No Yes No Yes Yes
UDF Yes Yes YesTemplate:Fn YesTemplate:Fn Yes Yes No
VxFS Yes Yes Yes No Yes Yes Yes
Hard links Soft links Block journaling Metadata-only journaling Case-sensitive Case-preserving File Change Log

Allocation and layout policies

Tail packing Data compression Block fragmentation Delayed allocation Extents Variable file block size Template:Fn Block suballocation Template:Fn
FAT12 No No Template:Fn No No No No No
FAT16 No No Template:Fn No No No No No
FAT32 No No Template:Fn No No No No No
HPFS No No No No Yes No ?
NTFS No Yes Partial No Yes No No
HFS+ No No ? No No No ?
FFS No No 8:1 Template:Fn No No No No
UFS1 No No 8:1 Template:Fn No No No No
UFS2 No No 8:1 Template:Fn No No Yes No
LFS No No 8:1 Template:Fn No No No No
Mac OS X UFS No No 8:1 Template:Fn No No No No
ext2 No No Template:Fn No Template:Fn No No No No
ext3 No No No Template:Fn No No No No
ReiserFS Yes No No No No No No
Reiser4 Yes No Template:Fn No Yes Yes Template:Fn No No
XFS No No No Yes Yes No No
JFS No No ? No Yes No ?
Be File System No No ? No No ? ?
NSS No Yes ? No No No No
NWFS No Yes ? No No No Yes
ODS5 No No No No No No No
VxFS No No ? No Yes No ?
UDF No No No ? Template:Fn Yes No No
Tail packing Data compression Block fragmentation Delayed allocation Extents Variable block size Template:Fn Block Suballocation

Notes

Template:Fnb HFS, an older version of HFS+, only supported 31 character filenames; some older applications don't work well with names longer than this.
Template:Fnb HFS+ mandates support for an escape sequence to allow arbitrary Unicode. Users of older software might see the escape sequences instead of the desired characters.
Template:Fnb Varies wildly according to block size and fragmentation of block allocation groups.
Template:Fnb For filesystems that have variable allocation unit (block/cluster) sizes, a range of size are given, indicating the maximum volume sizes for the minimum and the maximum possible allocation unit sizes of the filesystem (e.g. 512 bytes and 128KiB for FAT — which is the cluster size range allowed by the on-disc data structures, although some Installable File System drivers and operating systems do not support cluster sizes larger than 32KiB).
Template:Fnb NTFS access control lists can express essentially any access policy possible using simple POSIX file permissions, but use of a POSIX-like interface is not supported without an add-on such as Services for UNIX or Cygwin.
Template:Fnb The file change logs, last entry change timestamps, and other filesystem metadata, are all part of the extensive suite of auditing capabilities built into NDS/eDirectory called NSure Audit. (Filesystem Events tracked by NSure)
Template:Fnb While FAT32 partitions this large work fine once created, some software won't allow creation of FAT32 partitions larger than 32GiB. This includes, notoriously, the Windows XP installation program.
Template:Fnb ReiserFS has a theoretical maximum file size of 1EiB, but "page cache limits this to 8 Ti on architectures with 32 bit int"[1]
Template:Fnb XFS has a limitation under Linux 2.4 of 64TiB file size and 2TiB file system size. This limitation is not present under IRIX.
Template:Fnb Microsoft first introduced FAT32 in Windows 95 OSR2 (OEM Service Release 2) and then later in Windows 98.
Template:Fnb IBM introduced JFS with the initial release of AIX Version 3.1 in 1990. This file system now called JFS1. The new JFS (sometimes called JFS2), on which the Linux port was based, was first shipped in OS/2 Warp Server for e-Business in 1999.
Template:Fnb The on-disc structures have no inherent limit. Particular Installable File System drivers and operating systems may impose limits of their own, however. MS-DOS does not support full pathnames longer than 260 bytes for FAT12 and FAT16. Windows NT does not support full pathnames longer than 32767 bytes for NTFS.
Template:Fnb This is the limit of the on-disc structures. The HPFS Installable File System driver for OS/2 uses the top 5 bits of the volume sector number for its own use, limiting the volume size that it can handle to 64GiB.
Template:Fnb The f-node contains a field for a user identifier. This is not used except by OS/2 Warp Server, however.
Template:Fnb Maximum combined filename/filetype length is 236 bytes; each component has an individual maximum length of 255 byes.
Template:Fnb Maximum pathname length is 4096 bytes, but quoted limits on individual components add up to 1664 bytes.
Template:Fnb Record Management Services (RMS) attributes include record type and size, among many others.
Template:Fnb These are referred to as "aliases".
Template:Fnb Novell calls this feature "multiple data streams". Published specifications say that NWFS allows for 16 attributes and 10 data streams, and NSS allows for unlimited quantities of both.
Template:Fnb Case-sensitivity/Preservation depends on client. Windows, DOS, and OS/2 clients don't see/keep case differences, whereas clients accessing via NFS or AFP may.
Template:Fnb Published specs say that the 128-bit file system provides for up to 264 bytes to describe the file system, file size, directory entries, etc, with a theoretical max of 2128 bytes total to describe all storage on such a machine.
Template:Fnb Particular Installable File System drivers and operating systems may not support extended attributes on FAT12, FAT16, and FAT32. The OS/2 and Windows NT filesystem drivers for FAT12, FAT16, and FAT32 support extended attributes (using a "EA DATA. SF" pseudo-file to reserve the clusters allocated to them). Other filesystem drivers for other operating systems do not.
Template:Fnb Some Installable File System drivers and operating systems may not support extended attributes, access control lists or security labels on these filesystems. Linux kernels prior to 2.6.x may either be missing support for these altogether or require a patch.
Template:Fnb Depends on whether the FAT12, FAT16, and FAT32 implementation has support for LFNs. Where it does not, as in OS/2, MS-DOS, Windows 95, Windows 98 in DOS-only mode and the Linux "msdos" driver, file names are limited to 11 8-bit characters (space padded in both the basename and extension parts) and may not contain NUL (end-of-directory marker) or character 229 (deleted-file marker). Short names also do not normally contain lowercase letters.
Template:Fnb These are the restrictions imposed by the on-disc directory entry structures themselves. Particular Installable File System drivers may place restrictions of their own on file and directory names; and particular and operating systems may also place restrictions of their own, across all filesystems. MS-DOS, Microsoft Windows, and OS/2 disallow the characters \ / : ? * " > < | and NUL in file and directory names across all filesystems. Unices and Linux disallow the characters / and NUL in file and directory names across all filesystems.
Template:Fnb In these filesystems the directory entries named "." and ".." have special status. Directory entries with these names are not prohibited, and indeed exist as normal directory entries in the on-disc data structures. However, they are mandatory directory entries, with mandatory values, that are automatically created in each directory when it is created; and directories without them are considered corrupt.
Template:Fnb The "." and ".." directory entries in HPFS that are seen by applications programs are a partial fiction created by the Installable File System drivers. The on-disc data structure for a directory does not contain entries by those names, but instead contains a special "start" entry. Whilst on-disc directory entries by those names are not physically prohibited, they cannot be created in normal operation, and a directory containing such entries is corrupt.
Template:Fnb NSS allows files to have multiple names, in separate namespaces.
Template:Fnb Some file and directory metadata is stored on the Netware server irrespective of whether Directory Services is installed or not, like date/time of creation, file size, purge status, etc; and some file and directory metadata is stored in NDS/eDirectory, like file/object permissions, ownership, etc.
Template:Fnb Particular Installable File System drivers and operating systems may not support case sensitivity for JFS. OS/2 does not, and Linux has a mount option for disabling case sensitivity.
Template:Fnb The local time, timezone/UTC offset, and date are derived from the time settings of the reference/single timesync source in the NDS tree.
Template:Fnb Some operating systems implemented extended attributes as a layer over UFS1 with a parallel backing file (e.g., FreeBSD 4.x).
Template:Fnb Access-control lists and MAC labels available as an operating-system feature layered on top of extended attributes.
Template:Fnb NTFS 5.0 and higher can create junctions, which allow entire directories (but not individual files) to be mapped to elsewhere in the directory tree of a locally managed drive. These are implemented through reparse points, which allow the normal process of filename resolution to be extended in a flexible manner.
Template:Fnb Turned off by default.
Template:Fnb While NTFS itself supports case sensitivity, the Windows standard file system drivers cannot create files whose names differ only by case, for compatibility reasons.
Template:Fnb NTFS stores everything, even the file data, as meta-data, so its log is closer to block journaling.
Template:Fnb UDF and LFS are log-structured file systems and behave as if the entire file system were a journal.
Template:Fnb In "extents" mode.
Template:Fnb Optionally no on IRIX.
Template:Fnb Variable block size refers to systems which support different block sizes on a per-file basis. (This is similar to extents but a slightly different implementational choice.) The current implementation in UFS2 is read-only.
Template:Fnb Block suballocation divides storage into blocks of 4KiB to 64KiB (usually 8KiB), and if all of the block is not used, the remainder is subdivided into 512-byte blocks for other files, usually smaller files, to use.
Template:Fnb This restriction might be lifted in newer versions.
Template:Fnb Full block journaling for ReiserFS was added to Linux 2.6.8.
Template:Fnb Other block:fragment size ratios supported; 8:1 is typical and recommended by most implementations.
Template:Fnb Depends on UDF implementation.
Template:Fnb Fragments were planned, but never actually implemented on ext2 and ext3.
Template:Fnb Metadata-only journaling was introduced in the Mac OS 10.2.2 HFS+ driver; journaling is enabled by default on Mac OS 10.3 and later.
Template:Fnb e2compr, a set of patches providing block-based compression for ext2, has been available since 1997, but has never been merged into the mainline Linux kernel.
Template:Fnb Reiser4 implements data compression, but has not provided an VFS API for it.
Template:Fnb DoubleSpace in DOS 6, and DriveSpace in Windows 95 and Windows 98 were data compression schemes for FAT, but are no longer supported by Microsoft.
Template:Fnb Some namespaces had lower name length limits. "LONG" had an 80-byte limit, "NTFS" 80 bytes, "NFS" 40 bytes and "DOS" imposed 8.3-style names.
Template:Fnb Available only in the "NFS" namespace.
Template:Fnb Metacomco released a so called "evolution" version of original file system for Amiga realizied by engineers of first Amiga Inc. (Formerly Hi-Toro) in 1982-83/85. To be true, Metacomco made a huge mess of early FS ruining its simple and easy structure. Originally OFS it was simply Amiga File System. Name changed since the release of the "new" Fast File System, born in 1987 for the same platform.

See also

References

  • Template:Web reference author
  • Template:Web reference author
  • "Attribute - $EA_INFORMATION (0xD0)". NTFS Information, Linux-NTFS Project. February 9. {{cite web}}: Check date values in: |date= and |year= / |date= mismatch (help)
  • "Attribute - $EA (0xE0)". NTFS Information, Linux-NTFS Project. February 9. {{cite web}}: Check date values in: |date= and |year= / |date= mismatch (help)
  • "Attribute - $STANDARD_INFORMATION (0x10)". NTFS Information, Linux-NTFS Project. February 21. {{cite web}}: Check date values in: |date= and |year= / |date= mismatch (help)

External links