User:Pi3832/Relevent File Systems

From Wikipedia, the free encyclopedia

Comparison of relevant file systems[edit]

The Comparison of file systems page is bloody useless because it lumps all file systems in the known universe together.

So, I've copied it here, and trimmed things that don't come up much in my narrow little view of the world.


Limits[edit]

File system Maximum filename length Allowable characters in directory entries Maximum pathname length Maximum file size Maximum volume size
FAT16 8.3 (255 UTF-16 code units with LFN) Any byte except for values 0-31, 127 (DEL) and: " * / : < > ? \ | + , . ; = [] (lowcase a-z are stored as A-Z).
With VFAT LFN any Unicode except NUL
No limit defined 2 GB (4 GB) 2 GB or 4 GB
FAT32 8.3 (255 UTF-16 code units with LFN) Any byte except for values 0-31, 127 (DEL) and: " * / : < > ? \ | + , . ; = [] (lowcase a-z are stored as A-Z).
With VFAT LFN any Unicode except NULL
No limit defined 4 GB 2 TB (16 TB)
NTFS 255 characters Any Unicode except NUL and \ / : * ? " < > | 32,767 Unicode characters with each path component (directory or filename) commonly up to 255 characters long 16 EB 16 EB
ext2 255 bytes Any byte except NUL and / No limit defined 2 TB 32 TB
ext3 255 bytes Any byte except NUL and / No limit defined 2 TB 32 TB
ext4 256 bytes Any byte except NUL and / No limit defined 16 TB 1 EB
ReiserFS 4,032 bytes/226 characters Any byte except NUL No limit defined 8 TB (v3.6), 2 GB (v3.5) 16 TB
NILFS 255 bytes Any byte except NUL No limit defined 8 EB 8 EB
XFS 255 bytes Any byte except NUL No limit defined 8 EB 8 EB
JFS 255 bytes Any Unicode except NUL No limit defined 4 PB 32 PB
UDF 255 bytes Any Unicode except NUL 1,023 bytes 16 EB Un­known
ZFS 255 bytes Any Unicode except NUL No limit defined 16 EB 16 EB
Btrfs 255 bytes Any byte except NUL Un­known 16 EB 16 EB
File system Maximum filename length Allowable characters in directory entries Maximum pathname length Maximum file size Maximum volume size

Metadata[edit]

File system Stores file owner POSIX file permissions Creation timestamps Last access/ read timestamps Last content modification timestamps Disk copy created Last metadata change timestamps Last archive timestamps Access control lists Security/ MAC labels Extended attributes/ Alternate data streams/ forks Checksum/ ECC
FAT16 No No Partial Partial Yes Yes No[1] No No No No[2] No
FAT32 No No Partial[3] Partial[3] Yes Yes No[1] No No No No No
NTFS Yes Yes Yes Yes Yes No Yes No Yes Yes Yes No
ext2 Yes Yes No Yes Yes Un­known Yes No Yes Yes Yes No
ext3 Yes Yes No Yes Yes No Yes No Yes Yes Yes No
ext4 Yes Yes Yes Yes Yes Un­known Yes No Yes Yes Yes Partial
NILFS Yes Yes Yes No Un­known Un­known Yes No No No No Yes
ReiserFS Yes Yes No Yes Yes No No No No No No No
Reiser4 Yes Yes No Yes Yes Un­known Yes No No No No No
XFS Yes Yes No Yes Yes Un­known Yes No Yes Yes Yes No
JFS Yes Yes Yes Yes Yes Un­known Yes No Yes Yes Yes No
UDF Yes Yes Yes Yes Un­known Un­known Yes Yes Yes No Yes No
ZFS Yes Yes Yes Yes Yes Un­known Yes Yes Yes Yes Yes Yes
Btrfs Yes Yes Yes Yes Yes Un­known Yes Un­known Yes Yes Yes Yes
File system Stores file owner POSIX file permissions Creation timestamps Last access/read timestamps Last content modification timestamps Disk copy created Last metadata change timestamps Last archive timestamps Access control lists Security/ MAC labels Extended attributes/ Alternate data streams/ forks Checksum/ ECC

Features[edit]

File system Hard links Symbolic links Block journaling Metadata-only journaling Case-sensitive Case-preserving File Change Log Snapshot XIP Encryption COW integrated LVM Data deduplication Volumes are resizeable
FAT16 No No No No No Partial No No No No No No No Offline[4]
FAT32 No No No No No Partial No No No No No No No Offline[4]
NTFS Yes Yes[5] No[6] Yes[6] Yes[7] Yes Yes Partial[8] Yes Yes Partial Un­known No Online[9]
ext2 Yes Yes No No Yes Yes No No Yes[10] No No No No Online[11]
ext3 Yes Yes Yes[12] Yes Yes Yes No No Yes No No No No Online[11]
ext4 Yes Yes Yes[12] Yes Yes Yes No No Yes No No No No Online[11]
NILFS Yes Yes Yes[13] No Yes Yes Yes Yes No No Yes Un­known Un­known Un­known
ReiserFS Yes Yes No[14] Yes Yes Yes No No No No No No No Offline
XFS Yes Yes Yes Yes Yes[15] Yes No No No No No No No Online (cannot be shrunk)
JFS Yes Yes No Yes Yes[16] Yes No Yes No No No Un­known Un­known Online (cannot be shrunk)[17]
UDF Yes Yes Yes[13] Yes[13] Yes Yes No No Yes No No No No Un­known
ZFS Yes Yes Yes[18] No[18] Yes Yes No Yes No Yes Yes Yes Yes Online (cannot be shrunk)[19]
Btrfs Yes Yes Un­known Yes Yes Yes Un­known Yes No Planned[20] Yes Yes Work-in-Progress Online
File system Hard links Symbolic links Block journaling Metadata-only journaling Case-sensitive Case-preserving File Change Log Snapshotting XIP Encryption COW integrated LVM Data deduplication Volumes are resizeable

Allocation and layout policies[edit]

File system Block suballocation Variable file block size[21] Extents Allocate-on-flush Sparse files Transparent compression
Btrfs Yes No Yes Yes Yes Yes
FAT16 No No No No No No[22]
FAT32 No No No No No No
NTFS Partial No Yes No Yes Partial[23]
ext2 No[24] No No No Yes No[25]
ext3 No[24] No No No Yes No
ext4 No[24] No Yes Yes Yes No
NILFS No No No Yes Yes No
ReiserFS Yes No No No Yes No
XFS No No Yes Yes Yes No
JFS Yes No Yes No Yes only in JFS1 on AIX[26]
UDF No No Yes Depends[27] No No
ZFS Partial[28] Yes No Yes Yes Yes
File system Block suballocation Variable file block size[21] Extents Allocate-on-flush Sparse files Transparent compression

Supporting operating systems[edit]

File system DOS Windows 9x Windows NT Linux Mac OS Mac OS X FreeBSD BeOS Solaris AIX z/OS OS/2 Windows CE Windows Mobile VxWorks HP-UX
FAT16 Yes Yes Yes Yes Yes Yes Yes Yes Yes Partial Un­known Yes Yes Yes Yes Un­known
FAT32 Yes Yes Yes Yes Yes Yes Yes Yes Yes Partial Un­known Yes Yes Yes Un­known
NTFS Yes Yes No Un­known Un­known Partial No Un­known Un­known
ext2 Un­known Un­known Yes No Yes Un­known Un­known Un­known Un­known Un­known Un­known
ext3 Un­known Un­known Yes No Yes Un­known Yes Un­known Un­known Un­known Un­known Un­known
ext4 No No Yes No No Un­known Un­known Un­known Un­known Un­known No Un­known Un­known Un­known
NILFS No Un­known Un­known Yes No Un­known No Un­known Un­known Un­known Un­known Un­known No No Un­known Un­known
ReiserFS No Un­known Partial Yes No No Partial Un­known Un­known Un­known Un­known Un­known Un­known Un­known
XFS No Un­known Un­known Yes No Un­known Partial Un­known Un­known Un­known Un­known Un­known No No Un­known Un­known
JFS No Un­known Un­known Yes No No No Un­known Un­known Yes Un­known Yes No No Un­known
UDF Un­known Partial Yes Yes Yes Yes Yes Un­known Yes Un­known Un­known Un­known Yes Un­known Un­known Un­known
ZFS No No No No Yes No Yes No No No Un­known Un­known Un­known Un­known
Btrfs No No No Yes No No No No No No No No No No Un­known Un­known
File system DOS Windows 9x Windows NT Linux Mac OS Mac OS X FreeBSD BeOS Solaris AIX z/OS OS/2 Windows CE Windows Mobile VxWorks HP-UX
  1. ^ a b Cite error: The named reference fat-ctime was invoked but never defined (see the help page).
  2. ^ Cite error: The named reference note-22 was invoked but never defined (see the help page).
  3. ^ a b Cite error: The named reference fat-cstamp was invoked but never defined (see the help page).
  4. ^ a b Cite error: The named reference parted-resize was invoked but never defined (see the help page).
  5. ^ As of Windows Vista, NTFS fully supports soft links. See this Microsoft article on Vista kernel improvements. NTFS 5.0 (Windows 2000) and higher can create junctions, which allow any valid local directory (but not individual files) ("target" of junction) to be mapped to an NTFS version thereof ("source" = location of junction). The source directory must lie on an NTFS 5+ partition, but the target directory can lie on any valid local partition and needn't be NTFS. Junctions are implemented through reparse points, which allow the normal process of filename resolution to be extended in a flexible manner.
  6. ^ a b NTFS stores everything, even the file data, as meta-data, so its log is closer to block journaling.
  7. ^ While NTFS itself supports case sensitivity, the Win32 environment subsystem cannot create files whose names differ only by case for compatibility reasons. When a file is opened for writing, if there is any existing file whose name is a case-insensitive match for the new file, the existing file is truncated and opened for writing instead of a new file with a different name being created. Other subsystems like e. g. Services for Unix, that operate directly above the kernel and not on top of Win32 can have case-sensitivity.
  8. ^ NTFS does not internally support snapshots, but in conjunction with the Volume Shadow Copy Service can maintain persistent block differential volume snapshots.
  9. ^ http://www.bleepingcomputer.com/tutorials/tutorial133.html
  10. ^ Linux kernel versions 2.6.12 and newer.
  11. ^ a b c Offline growing/shrinking as well as online growing: "Linux man page for resize2fs(8) (from e2fsprogs 1.41.9)".
  12. ^ a b Off by default.
  13. ^ a b c Cite error: The named reference note-38 was invoked but never defined (see the help page).
  14. ^ Full block journaling for ReiserFS was not added to Linux 2.6.8 for obvious reasons.
  15. ^ Optionally no on IRIX.
  16. ^ 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.
  17. ^ http://www.linux.com/archive/feed/32002
  18. ^ a b ZFS is a transactional filesystem using copy-on-write semantics, guaranteeing an always-consistent on-disk state without the use of a traditional journal. However, it does also implement an intent log to provide better performance when synchronous writes are requested.
  19. ^ "How to resize ZFS".
  20. ^ McPherson, Amanda (2009-06-22), A Conversation with Chris Mason on BTRfs: the next generation file system for Linux, Linux Foundation, retrieved 2009-09-01
  21. ^ a b 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.
  22. ^ Cite error: The named reference note-51 was invoked but never defined (see the help page).
  23. ^ Only if formatted with 4kB-sized clusters or smaller
  24. ^ a b c Fragments were planned, but never actually implemented on ext2 and ext3.
  25. ^ 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.
  26. ^ "AIX documentation: JFS data compression". IBM.
  27. ^ Depends on UDF implementation.
  28. ^ When enabled, ZFS's logical-block based compression behaves much like tail-packing for the last block of a file.