Science Fair Project Encyclopedia
Comparison of file systems
The following table compares general and technical information for a number of file systems. Please see the individual file system articles for further information.
| Contents |
Table
| File system: | FAT12 | FAT16 | FAT32 | HPFS | NTFS | HFS+ | FFS | UFS1 | UFS2 | Mac OS X UFS | ext2 | ext3 | ReiserFS V3 | Reiser4 | XFS | JFS | Be File System | NSS | NWFS | ODS5 | VxFS | ZFS | File system |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Creator | Microsoft | Microsoft | Microsoft | IBM & Microsoft | Microsoft, Gary Kimura, Tom Miller | Apple | Kirk McKusick | Kirk McKusick | Kirk McKusick | Apple (from UFS1) | Rémy Card | Stephen Tweedie | Namesys | Namesys | SGI | IBM | Be Inc., D. Giampaolo, C. Meurillon | Novell | Novell | DEC | VERITAS | Sun | Creator |
| Introduced in | 1980 | 1983 | 1997? | 1988 | 1993? | 1998 | 1983 | 1994 | 2002 | ? | 1993 | 1999 | 2001 | 2005 | 1994 | ? | 1996? | 1998 | 1985 | ? | 1991 | 2004 | Introduced in |
| Original operating system | QDOS | MS-DOS version 2 | Windows 95 | OS/2 | Windows NT | Mac OS | 4.2BSD | 4.4BSD | FreeBSD 5.0 | Mac OS X | Linux | Linux | Linux | Linux | IRIX | AIX11 | BeOS | Netware 5 | Netware 286 | VMS | SVR4.0 | Solaris 10 | Original operating system |
| Limits | |||||||||||||||||||||||
| Maximum filename length | 255 bytes 24 | 255 bytes 24 | 255 bytes 24 | 255 bytes | 255 bytes | 255 characters1 | 255 bytes | 255 bytes | 255 bytes | ? | 255 bytes | 255 bytes | 4032 bytes/255 characters | ? | 255 bytes | 255 bytes | 255 bytes | ? | ? | 236 bytes15 | 255 bytes | ? | Maximum filename length |
| Allowable characters in directory entries25 | Any Unicode except NUL 24 26 | Any Unicode except NUL 24 26 | Any Unicode except NUL 24 26 | Any byte except NUL 27 | Any Unicode except NUL | Any Unicode except : 2 26 | Any byte except NUL 26 | Any byte except NUL 26 | Any byte except NUL 26 | Any byte except NUL 26 | Any byte except NUL 26 | Any byte except NUL 26 | Any byte except NUL 26 | ? | Any byte except NUL 26 | Any byte except NUL 26 | Any byte except NUL 26 | Depends on namespace used 28 | ? | ? | Any byte except NUL 26 | ? | Allowable characters in directory entries25 |
| Maximum pathname length | No limit defined 12 | No limit defined 12 | No limit defined 12 | No limit defined 12 | No limit defined 12 | ? | No limit defined 12 | No limit defined 12 | No limit defined 12 | ? | No limit defined 12 | No limit defined 12 | No limit defined 12 | No limit defined 12 | No limit defined 12 | No limit defined 12 | No limit defined 12 | Only limited by client | No limit defined 12 | 4096 bytes16 | No limit defined 12 | ? | Maximum pathname length |
| Maximum file size | 4GiB | 4GiB | 4GiB | 4GiB | 16EB | 8EB | 4GiB | 4GiB to 256TiB | 512GiB to 32PiB | ? | 16GiB to 2TiB4 | 16GiB to 2TiB4 | 8TB8 | ? | 9EB9 | 8EB | 12288 bytes to 260GiB3 | 8TiB | 4GiB | 1TB | 16EB | 1YiB21 | Maximum file size |
| Maximum volume size 4 | 1MiB to 512MiB | 16MiB to 8GiB | 8GiB to 2TiB 7 | 2TiB13 | 16EB | ? | 256TiB | 256TiB | 1YiB | ? | 2TB to 32TB | 2TB to 32TB | 16TB | ? | 9EB9 | 512TB to 4PB | 256PiB to 2EiB | 8TiB | 1TiB | 1TB | ? | 16EiB21 | Maximum volume size 4 |
| Features | |||||||||||||||||||||||
| File system: | FAT12 | FAT16 | FAT32 | HPFS | NTFS | HFS+ | FFS | UFS1 | UFS2 | Mac OS X UFS | ext2 | ext3 | ReiserFS V3 | Reiser4 | XFS | JFS | Be File System | NSS | NWFS | ODS-5 | VxFS | ZFS | File system |
| File type metadata | rich (IBM extended attributes) 22 | rich (IBM extended attributes) 22 | rich (IBM extended attributes) 22 | rich (IBM extended attributes) | rich (IBM extended attributes) | medium (type and creator) | none | none 32 | rich (Unix extended attributes) 23 | medium (type and creator) | rich (Unix extended attributes) 23 | rich (Unix extended attributes) 23 | rich (Unix extended attributes) 23 | meta-files (not done/stable) | rich (Unix extended attributes) | rich (IBM? extended attributes) 23 | rich | rich (Netware & NDS extended attributes) 29 | rich (Netware & NDS extended attributes) 29 | rich (RMS extended attributes) 17 | rich (Unix extended attributes) 23 | ? | File type metadata |
| Stores file owner | No | No | No | Yes14 | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ? | Stores file owner |
| POSIX file permissions | No | No | No | No | No5 | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ? | Yes | Yes | Yes | POSIX file permissions |
| Creation timestamps | Yes | Yes | Yes | Yes | Yes | Yes | No | No | Yes | No | No | No | No | No | No | No | Yes | Yes31 | Yes31 | ? | Yes | No | Creation timestamps |
| Last modification timestamps | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes31 | Yes31 | ? | Yes | Yes | Last modification timestamps |
| Last access/read timestamps | Yes | Yes | Yes | Yes | Yes | ? | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes31 | Yes31 | ? | Yes | Yes | Last access/read timestamps |
| Last entry change timestamps | No | No | No | No | Yes | ? | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes6 | Yes6 | ? | Yes | Yes | Last entry change timestamps |
| Last archive timestamps | No | No | No | No | No | ? | No | No | No | No | No | No | No | No | No | No | No | Yes31 | Yes31 | ? | No | No | Last archive timestamps |
| Access control lists | No | No | No | No | Yes | ? | No | No 33 | No 33 | No | Yes | Yes | Yes | No | Yes | Yes | No | Yes | Yes | Yes | Yes | Yes | Access control lists |
| Security/MAC labels | No | No | No | ? | ? | ? | No | No 33 | No 33 | No | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | Security/MAC labels |
| Hard links | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ? | Yes | Yes | Yes | Hard links |
| Soft links | No | No | No | No | Yes34 | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ? | Yes18 | Yes | Yes | Soft links |
| Alternate data stream / resource fork | No | No | No | No | Yes | Yes | No | No | No | No | No | No | No | Not yet | No | No | No | Yes19 | Yes19 | No | Yes | ? | Alternate data stream / resource fork |
| File system: | FAT12 | FAT16 | FAT32 | HPFS | NTFS | HFS+ | FFS | UFS1 | UFS2 | Mac OS X UFS | ext2 | ext3 | ReiserFS V3 | Reiser4 | XFS | JFS | Be File System | NSS | NWFS | ODS-5 | VxFS | ZFS | File system |
| Journaling | |||||||||||||||||||||||
| Block journaling | No | No | No | No | Recovery37 | No | No | No | No | No | No | Yes | No | ? | No | ? | No | ? | No | No | Yes | No | Block journaling |
| Meta-data only journaling | No | No | No | No | Yes | ? | No | No | No | No | No | Yes 38 | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | No | ? | Meta-data only journaling |
| Case-sensitive | No | No | No | No | Yes36 | Yes35 | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes 41 | Yes30 | Yes | Yes20 | Yes20 | No | Yes | Yes | Case-sensitive |
| Case-preserving | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes20 | Yes20 | Yes | Yes | Yes | Case-preserving |
| File Change Log | No | No | No | No | Yes | No | No | No | No | No | No | No | No | No | Yes | No | ? | Yes6 | Yes6 | Yes | Yes | No | File Change Log |
| Features that help to prevent fragmentation | |||||||||||||||||||||||
| Delayed allocation | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes | No | No | No | No | No | No | No | Delayed allocation |
| Extents | No | No | No | Yes | ? | No | No | No | No | No | No | No | No | Yes 39 | Yes 40 | ? | No | No | No | No | No | ? | Extents |
| Variable block size 42 | No | No | No | ? | ? | ? | No | No | Yes | No | No | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | ? | Variable block size 42 |
| File system: | FAT12 | FAT16 | FAT32 | HPFS | NTFS | HFS+ | FFS | UFS1 | UFS2 | Mac OS X UFS | ext2 | ext3 | ReiserFS V3 | Reiser4 | XFS | JFS | Be File System | NSS | NWFS | ODS-5 | VxFS | ZFS | File system |
Notes
Older versions of HFS only supported 31 character filenames; some older applications don't work well with names longer than this.
Note 2: 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.
Note 3: Varies wildly according to block size and fragmentation of block allocation groups.
Note 4: 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).
Note 5: 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.
Note 6: 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)
Note 7: While FAT32 partitions this large work fine once created, some software won't allow creation of FAT32 partitions larger than 32GB. This includes, notoriously, the Windows XP installation program.
Note 8: ReiserFS has a theoretical maximum file size of 1EB, but "page cache limits this to 8 Ti on architectures with 32 bit int"[1]
Note 9: XFS has a limitation under Linux 2.4 of 64 TB file size and 2 TB file system size. This limitation is not present under IRIX.
Note 10: Microsoft first introduced FAT32 in Windows 95 OSR2 (OEM Service Release 2) and then later in Windows 98.
Note 11: JFS originated on AIX and was completely rewritten for OS/2. The Linux filesystem was based on the OS/2 version.
Note 12: 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.
Note 13: 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.
Note 14: The f-node contains a field for a user identifier. This is not used except by OS/2 Warp Server, however.
Note 15: Maximum combined filename / filetype length is 236 bytes; each component has an individual maximum length of 255 byes.
Note 16: Maximum pathname length is 4096 bytes, but quoted limits on individual components add up to 1664 bytes.
Note 17: Record Management Services (RMS) attributes include record type and size, among many others.
Note 18: These are referred to as 'aliases'.
Note 19: 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.
Note 20: 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.
Note 21: 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.
Note 22: 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.
Note 23: Particular Installable File System drivers and operating systems may not support extended attributes on these filesystem types. Linux kernels prior to 2.6.x either require patching to support extended attributes or do not support extended attributes at all.
Note 24: On FAT12, FAT16, and FAT32 files have both long and short names. These are the restrictions upon long names. Short names are exactly 11 8-bit characters long (being space padded, in both the basename and extension parts); may not contain either NUL or character 229, both of which have special meaning (marking the end of the directory or a deleted entry, respectively); and in normal operation do not contain lowercase letters. Particular Installable File System drivers and operating systems may not support long names. Without a third-party driver, MS-DOS (including Windows 95 and Windows 98 booted into DOS-only mode) only provides access to short names. The OS/2 filesystem drivers for FAT12 and FAT16 only provide access to short names.
Note 25: 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.
Note 26: 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.
Note 27: 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.
Note 28: NSS allows files to have multiple names, in separate namespaces.
Note 29: 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.
Note 30: 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.
Note 31: The local time, timezone/UTC offset, and date are derived from the time settings of the reference/single timesync source in the NDS tree.
Note 32: Some operating systems implemented extended attributes as a layer over UFS1 with a parallel backing file (e.g., FreeBSD 4.x).
Note 33: Access-control lists and MAC labels available as an operating-system feature layered on top of extended attributes.
Note 34: 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.
Note 35: Turned off by default.
Note 36: While NTFS itself supports case sensitivity, the Windows standard file system drivers cannot create files whose names differ only by case, for compatibility reasons.
Note 37: NTFS stores everything, even the file data, as meta-data, so its log is closer to block journaling.
Note 38: Data journaling is possible.
Note 39: In "extents" mode.
Note 40: Only in the realtime chunk of the XFS file system.
Note 41: Optionally no on IRIX.
Note 42: 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.
See also
References
- "OS/2 corrective service fix JR09427." IBM. Accessed on February 9, 2005.
- "Attribute - $EA_INFORMATION (0xD0)." NTFS Information, Linux-NTFS Project. Accessed on February 9, 2005.
- "Attribute - $EA (0xE0)." NTFS Information, Linux-NTFS Project. Accessed on February 9, 2005.
- "Attribute - $STANDARD_INFORMATION (0x10)." NTFS Information, Linux-NTFS Project. Accessed on February 21, 2005.
External links
The contents of this article is licensed from www.wikipedia.org under the GNU Free Documentation License. Click here to see the transparent copy and copyright details


