Comparison of file systems
Appearance
This article needs additional citations for verification. (March 2008) |
The following tables compare general and technical information for a number of file systems.
General information
Limits
File system | Maximum filename length | Allowable characters in directory entries[4] | Maximum pathname length | Maximum file size | Maximum volume size [5] |
---|---|---|---|---|---|
CoreFSIF | 256 | All except null,'*','?' | 256 | 2 GiB | 2 TiB |
CP/M file system | 8.3 | ? | Initial versions had no subdirectories | ? | ? |
IBM SFS | 8.8 | ? | ? | Non-hierarchical[6] | ? |
DECtape | 6.3 | A–Z, 0–9 | DTxN:FILNAM.EXT = 15 | 369,280 bytes (577 * 640) | 369,920 bytes (578 * 640) |
Elektronika BK tape format | 16 bytes | No directory hierarchy | 64 KiB | Not limited. Approx. 800KB (one side) for 90 min cassette | |
MicroDOS file system | 14 bytes | 16 MiB | 32 MiB | ||
Level-D | 6.3 | A–Z, 0–9 | DEVICE:FILNAM.EXT[PROJCT,PROGRM] = 7 + 10 + 15 = 32; + 5*7 for SFDs = 67 | 34,359,738,368 words (2**35-1); 206,158,430,208 SIXBIT bytes | Approx 12 GB (64 * 178 MB) |
RT-11 | 6.3 | A–Z, 0–9, $ | 0 (no directory hierarchy) | 33,554,432 bytes (65536 * 512) | 33,554,432 bytes |
V6FS | 14 bytes [7] | Any byte except NUL and / [8]
|
No limit defined [9] | 8 MiB [10] | 2 TiB |
Disk Operating System (GEC DOS) | ? | ? | ? | ? at least 131,072 bytes | ? |
GEC DOS filing system extended | 8 bytes | A–Z, 0–9. Period was directory separator | ? No limit defined (workaround for OS limit) | ? at least 131,072 bytes | ? |
CBM DOS | 16 bytes | Any byte except NUL | 0 (no directory hierarchy) | 16 MiB | 16 MiB |
V7FS | 14 bytes [7] | Any byte except NUL and / [8]
|
No limit defined [9] | 1 GiB [11] | 2 TiB |
exFAT | ? | ? | No limit defined | 16 EiB | ? |
FAT12 | 8.3 (255 UTF-16 characters with LFN) [7] | Any Unicode except NUL (with LFN) [7] [8] | No limit defined [9] | 32 MiB | 1 MiB to 32 MiB |
FAT16 | 8.3 (255 UTF-16 characters with LFN) [7] | Any Unicode except NUL (with LFN)[7] [8] | No limit defined [9] | 2 GiB | 16 MiB to 2 GiB |
FAT32 | 8.3 (255 UTF-16 characters with LFN) [7] | Any Unicode except NUL (with LFN)[7] [8] | No limit defined [9] | 4 GiB | 512 MiB to 8 TiB [12] |
FATX | 42 bytes [7] | ASCII. Unicode not permitted. | No limit defined [9] | 2 GiB | 16 MiB to 2 GiB |
Fossil | ? | ? | ? | ? | ? |
MFS | 255 bytes | Any byte except :
|
No path (flat filesystem) | 256 MiB | 256 MiB |
DOS 3.x | 40 bytes | A-Z, 0-9, CTRL characters allowed but invisible | No directory hierarchy | approx. 130K | 140K, one side of a SD 5.25" floppy |
ProDOS | 15 bytes | A-Z, 0-9, . | 64 bytes including slashes | 16MB | 32MB |
HFS | 31 bytes | Any byte except :
|
Unlimited | 2 GiB | 2 TiB |
HPFS | 255 bytes | Any byte except NUL [13] | No limit defined [9] | 2 GiB | 2 TiB[14] |
NTFS | 255 characters | Any Unicode except NUL, /
|
32,767 Unicode characters with each path component (directory or filename) up to 255 characters long [9] | 16 EiB [15] | 16 EiB [15] |
HFS Plus | 255 UTF-16 characters [16] | Any valid Unicode [17] [8] | Unlimited | slightly less than 8 EiB | slightly less than 8 EiB [18] |
FFS | 255 bytes | Any byte except NUL [8] | No limit defined [9] | 4 GiB | 256 TiB |
UFS1 | 255 bytes | Any byte except NUL [8] | No limit defined [9] | 4 GiB to 256 TiB | 256 TiB |
UFS2 | 255 bytes | Any byte except NUL [8] | No limit defined [9] | 512 GiB to 32 PiB | 1 YiB |
ext2 | 255 bytes | Any byte except NUL [8] | No limit defined [9] | 16 GiB to 2 TiB[5] | 2 TiB to 32 TiB |
ext3 | 255 bytes | Any byte except NUL [8] | No limit defined [9] | 16 GiB to 2 TiB[5] | 2 TiB to 32 TiB |
ext4 | 255 bytes | Any byte except NUL [8] | No limit defined [9] | 1 EiB[5][19] | 1 EiB |
Lustre | 255 bytes | Any byte except NUL [8] | No limit defined [9] | 320 TiB on ext4 (16 TiB tested) | 220 EiB on ext4 (2 PiB tested) |
GPFS | 255 UTF-8 codepoints | Any byte except NUL [8] | No limit defined [9] | No limit found | 299 bytes (2 PiB tested) |
GFS | 255 | Any byte except NUL [8] | No limit defined [9] | 2 TB to 8 EB[20] | 2 TB to 8 EB[20] |
NILFS | 255 bytes | Any byte except NUL [8] | No limit defined [9] | 8 EiB | 8 EiB |
ReiserFS | 4,032 bytes/255 characters | Any byte except NUL [8] | No limit defined [9] | 8 TiB[21] (v3.6), 4 GiB (v3.5) | 16 TiB |
Reiser4 | 3,976 bytes | Any byte except / and NUL
|
No limit defined [9] | 8 TiB on x86 | ? |
OCFS | 255 bytes | Any byte except NUL [8] | No limit defined [9] | 8 TiB | 8 TiB |
OCFS2 | 255 bytes | Any byte except NUL [8] | No limit defined [9] | 4 PiB [22] | 4 PiB [22] |
XFS | 255 bytes [23] | Any byte except NUL [8] | No limit defined [9] | 8 EiB[24] | 8 EiB[24] |
JFS1 | 255 bytes | Any byte except NUL [8] | No limit defined [9] | 8 EiB | 512 TiB to 4 PiB |
JFS | 255 bytes | Any Unicode except NUL | No limit defined [9] | 4 PiB | 32 PiB |
QFS | 255 bytes | Any byte except NUL [8] | No limit defined [9] | 16 EiB [25] | 4 PiB [25] |
BFS | 255 bytes | Any byte except NUL [8] | No limit defined [9] | 12,288 bytes to 260 GiB[26] | 256 PiB to 2 EiB |
AdvFS | 255 characters | Any byte except NUL [8] | No limit defined [9] | 16 TiB | 16 TiB |
NSS | 256 characters | Depends on namespace used [27] | Only limited by client | 8 TiB | 8 TiB |
NWFS | 80 bytes [28] | Depends on namespace used [27] | No limit defined [9] | 4 GiB | 1 TiB |
ODS-5 | 236 bytes[29] | ? | 4,096 bytes[30] | 1 TiB | 1 TiB |
VxFS | 255 bytes | Any byte except NUL [8] | No limit defined [9] | 16 EiB | ? |
UDF | 255 bytes | Any Unicode except NUL | 1,023 bytes [31] | 16 EiB | ? |
ZFS | 255 bytes | Any Unicode except NUL | No limit defined [9] | 16 EiB | 218 EiB (278 bytes) |
Minix V1 FS | 14 or 30 bytes, set at filesystem creation time | Any byte except NUL [8] | No limit defined [9] | 1 GiB | 1 GiB |
Minix V2 FS | 14 or 30 bytes, set at filesystem creation time | Any byte except NUL [8] | No limit defined [9] | 1 GiB | 1 GiB |
Minix V3 FS | 60 bytes | Any byte except NUL [8] | No limit defined [9] | 4 GiB | 4 GiB |
VMFS2 | 128 | Any byte except NUL and / [8]
|
2,048 | 4 TiB [32] | 64 TiB |
VMFS3 | 128 | Any byte except NUL and / [8]
|
2,048 | 2 TiB [32] | 64 TiB |
ISO 9660:1988 | Level 1: 8.3, Level 2 & 3: ~ 180 |
Depends on Level [33] | ~ 180 bytes? | 4 GiB (Level 1 & 2) to 8 TiB (Level 3) [34] | 8 TiB [35] |
Joliet ("CDFS") | 64 Unicode characters | All UCS-2 code except *, /, \, :, ;, and ? [36] | ? | same as ISO 9660:1988 | same as ISO 9660:1988 |
ISO 9660:1999 | ? | ? | ? | ? | ? |
High Sierra | ? | ? | ? | ? | ? |
File system | Maximum filename length | Allowable characters in directory entries[4] | Maximum pathname length | Maximum file size | Maximum volume size [5] |
Metadata
File system | Stores file owner | POSIX file permissions | Creation timestamps | Last access/ read timestamps | Last modification of content | This copy created | Last metadata change timestamps | Last archive timestamps | Access control lists | Security/ MAC labels | Extended attributes/ Alternate data streams/ forks | Checksum/ ECC |
---|---|---|---|---|---|---|---|---|---|---|---|---|
CP/M file system | No | No | Yes[37] | No | No | No | No | No | No | No | ||
DECtape | No | No | Yes | No | No | No | No | No | No | No | ||
Elektronika BK tape format | No | No | No | No | No | No | No | No | No | No | No | Yes |
Level-D | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | ||
RT-11 | No | No | Yes | No | No | No | No | No | No | No | ||
V6FS | Yes | Yes | No | Yes | Yes | No | No | No | No | No | ||
V7FS | Yes | Yes | No | Yes | Yes | No | No | No | No | No | ||
FAT12 | No | No | Yes | Yes | No[38] | No | No | No | No [39] | No | ||
FAT16 | No | No | Yes | Yes | Yes | No | No[38] | No | No | No | No [39] | No |
FAT32 | No | No | Yes | Yes | Yes | No | No[38] | No | No | No | No | Partial |
HPFS | Yes[40] | No | Yes | Yes | No | No | No | ? | Yes | No | ||
NTFS | Yes | Yes[41] | Yes | Yes | Yes | Yes | No | Yes | Yes[42] | Yes | No | |
HFS | No | No | Yes | No | No | Yes | No | No | Yes | No | ||
HFS Plus | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ? | Yes | No | ||
FFS | Yes | Yes | No | Yes | Yes | No | No | No | No | No | ||
UFS1 | Yes | Yes | No | Yes | Yes | No | Yes | No | Yes [43] | Yes [43] | No [44] | No |
UFS2 | Yes | Yes | Yes | Yes | Yes | No | Yes | No | Yes [43] | Yes [43] | Yes | No |
LFS | Yes | Yes | No | Yes | Yes | No | No | No | No | No | ||
ext2 | Yes | Yes | No | Yes | Yes | No | Yes [45] | Yes [45] | Yes | No | ||
ext3 | Yes | Yes | No | Yes | Yes | No | Yes | No | Yes [45] | Yes [45] | Yes | No |
ext4 | Yes | Yes | Yes | Yes | Yes | No | Yes [45] | Yes [45] | Yes | No | ||
Lustre | Yes | Yes | No | Yes | Yes | No | Yes | Yes | Yes | No | ||
GPFS | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes | ||
GFS | Yes | Yes | No | Yes | Yes | No | Yes [45] | Yes [45] | Yes | No | ||
NILFS | Yes | Yes | Yes | No | Yes | No | No | No | No | Yes | ||
ReiserFS | Yes | Yes | No | Yes | Yes | No | Yes | No | Yes [45] | Yes [45] | Yes | No |
Reiser4 | Yes | Yes | No | Yes | Yes | No | No | No | No | No | ||
OCFS | No | Yes | No | No | Yes | Yes | No | No | No | No | ||
OCFS2 | Yes | Yes | No | Yes | Yes | No | No | No | No | No | ||
XFS | Yes | Yes | No | Yes | Yes | No | Yes | Yes [45] | Yes | No | ||
JFS | Yes | Yes | Yes | Yes | Yes | No | Yes | Yes | Yes | No | ||
QFS | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | No | ||
BFS | Yes | Yes | Yes | No | No | No | No | No | Yes | No | ||
AdvFS | Yes | Yes | No | Yes | Yes | No | Yes | No | Yes | No | ||
NSS | Yes | Yes | Yes[46] | Yes[46] | Yes | Yes[46] | Yes | ? | Yes[47] [48] | No | ||
NWFS | Yes | ? | Yes[46] | Yes[46] | Yes | Yes[46] | Yes | ? | Yes[47] [48] | No | ||
ODS-5 | Yes | Yes | Yes | ? | ? | Yes | Yes | ? | Yes [49] | No | ||
VxFS | Yes | Yes | Yes | Yes | Yes | No | Yes | ? | Yes [45] | No | ||
UDF | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | Yes | No | ||
Fossil | Yes | Yes [50] | No | Yes | Yes | No | No | No | No | No | ||
ZFS | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No [51] | Yes [52] | Yes | ||
VMFS2 | Yes | Yes | No | Yes | Yes | No | No | No | No | No | ||
VMFS3 | Yes | Yes | No | Yes | Yes | No | No | No | No | No | ||
ISO 9660:1988 | No | No | Yes | No | No | No | No | No | No | No | ||
Joliet ("CDFS") | No | No | Yes | No | No | No | No | No | No | No | ||
ISO 9660:1999 | No | No | Yes | No | No | No | No | No | No | No | ||
High Sierra | No | No | Yes | No | No | No | No | No | No | No | ||
CoreFSIF | No | Yes | Yes | No | No | No | No | No | No | Yes | ||
File system | Stores file owner | POSIX file permissions | Creation timestamps | Last access/read timestamps | Last modification of content | This copy created | Last metadata change timestamps | Last archive timestamps | Access control lists | Security/ MAC labels | Extended attributes/ Alternate data streams/ forks | Checksum/ ECC |
Features
File system | Hard links | Symbolic links | Block journaling | Metadata-only journaling | Case-sensitive | Case-preserving | File Change Log | Internal snapshotting / branching | XIP | Filesystem-level encryption | Undelete supported | Offline shrink | Online shrink | Offline grow | Online grow | Clustering |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
CoreFSIF | Yes | Partial | No | No | Yes | Yes | No | No | No | Yes, AES | ? | ? | ? | ? | ? | ? |
DECtape | No | No | No | No | No | No | No | No | No | No | ? | ? | ? | ? | ? | ? |
Level-D | No | No | No | No | No | No | No | No | No | No | ? | ? | ? | ? | ? | ? |
RT-11 | No | No | No | No | No | No | No | No | No | No | ? | ? | ? | ? | ? | ? |
Elektronika BK tape format | No | No | No | No | Yes | Yes | No | No | No | No | ? | ? | ? | ? | ? | ? |
V6FS | Yes | No | No | No | Yes | Yes | No | No | No | No | ? | ? | ? | ? | ? | ? |
V7FS | Yes | No [53] | No | No | Yes | Yes | No | No | No | No | ? | ? | ? | ? | ? | ? |
FAT12 | No | No | No | No | No | No | No | No | No | No | ? | ? | ? | ? | ? | ? |
FAT16 | No | No | No | No | No | Partial | No | No | No | No | ? | ? | ? | Yes | ? | ? |
FAT32 | No | No | No | No | No | Partial | No | No | No | No | ? | ? | ? | Yes | ? | ? |
GFS | Yes | Yes[54] | Yes | Yes[55] | Yes | Yes | No | No | No | No | ? | ? | ? | ? | ? | ? |
HPFS | No | No | No | No | No | Yes | No | ? | No | No | ? | ? | ? | ? | ? | ? |
NTFS | Yes | Yes[56] | No[57] | Yes[57] | Yes[58] | Yes | Yes | Partial[59] | ? | Yes | ? | ? | ? | Yes | ? | ? |
HFS Plus | Partial | Yes | No | Yes[60] | Partial[61] | Yes | Yes[62] | No | No | No[63] | ? | ? | ? | ? | ? | ? |
FFS | Yes | Yes | No | No | Yes | Yes | No | No | No | No | ? | ? | ? | ? | ? | ? |
UFS1 | Yes | Yes | No | No | Yes | Yes | No | No | No | No | ? | ? | ? | Yes | ? | ? |
UFS2 | Yes | Yes | Yes | No[64] | Yes | Yes | No | Yes | ? | No | ? | ? | ? | Yes | ? | ? |
LFS | Yes | Yes | Yes[65] | No | Yes | Yes | No | Yes | No | No | ? | ? | ? | ? | ? | ? |
ext2 | Yes | Yes | No | No | Yes | Yes | No | No | Yes[66] | No | ? | Yes | ? | Yes | No | ? |
ext3 | Yes | Yes | Yes [67] | Yes | Yes | Yes | No | No | Yes | No | ? | Yes | ? | Yes | Yes | ? |
ext4 | Yes | Yes | Yes [67] | Yes | Yes | Yes | No | No | Yes | No | ? | ? | ? | ? | ? | ? |
Lustre | Yes | Yes | Yes [67] | Yes | Yes | Yes | No | No | No | No | ? | ? | ? | ? | ? | ? |
NILFS | Yes | Yes | Yes [65] | No | Yes | Yes | No | Yes | No | No | ? | ? | ? | ? | ? | ? |
ReiserFS | Yes | Yes | Yes [68] | Yes | Yes | Yes | No | No | ? | No | ? | Yes | ? | Yes | Yes | ? |
Reiser4 | Yes | Yes | Yes | No | Yes | Yes | No | ? | ? | No | ? | ? | ? | ? | ? | ? |
OCFS | No | Yes | No | No | Yes | Yes | No | No | No | No | ? | ? | ? | ? | ? | ? |
OCFS2 | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | ? | ? | ? | ? | ? | ? |
XFS | Yes | Yes | No | Yes | Yes [69] | Yes | Yes | No | ? | No | No [70] | No | No | ? | Yes | Yes [71] |
JFS | Yes | Yes | No | Yes | Yes[72] | Yes | No | ? | ? | No | ? | No | No | No | Yes | ? |
QFS | Yes | Yes | No | Yes | Yes | Yes | No | No | No | No | ? | ? | ? | ? | ? | ? |
Be File System | Yes | Yes | No | Yes | Yes | Yes | ? | ? | No | No | ? | ? | ? | ? | ? | ? |
NSS | Yes | Yes | ? | Yes | Yes[73] | Yes[73] | Yes[74] | Yes | No | Yes | Yes | ? | ? | ? | ? | ? |
NWFS | Yes[75] | Yes[75] | No | No | Yes[73] | Yes[73] | Yes[74] | ? | No | No | ? | ? | ? | ? | ? | ? |
ODS-2 | Yes | Yes[76] | No | Yes | No | No | Yes | Yes | No | No | ? | ? | ? | ? | ? | ? |
ODS-5 | Yes | Yes[76] | No | Yes | No | Yes | Yes | Yes | ? | No | ? | ? | ? | ? | ? | ? |
UDF | Yes | Yes | Yes[65] | Yes[65] | Yes | Yes | No | No | Yes | No | ? | ? | ? | ? | ? | ? |
VxFS | Yes | Yes | Yes | No | Yes | Yes | Yes | Yes[77] | ? | No | ? | ? | ? | ? | ? | ? |
Fossil | No | No | No | No | Yes | Yes | Yes | Yes | No | No | ? | ? | ? | ? | ? | ? |
ZFS | Yes | Yes | Yes[78] | No[78] | Yes | Yes | No | Yes | No | Beta | ? | ? | ? | ? | ? | ? |
VMFS2 | Yes | Yes | No | Yes | Yes | Yes | No | No | No | No | ? | ? | ? | ? | ? | ? |
VMFS3 | Yes | Yes | No | Yes | Yes | Yes | No | No | No | No | ? | ? | ? | ? | ? | ? |
File system | Hard links | Symbolic links | Block journaling | Metadata-only journaling | Case-sensitive | Case-preserving | File Change Log | Internal snapshotting / branching | XIP | Filesystem-level encryption | Undelete supported | Offline shrink | Online shrink | Offline grow | Online grow | Clustering |
Allocation and layout policies
File system | Tail packing | Transparent compression | Block suballocation | Allocate-on-flush | Extents | Variable file block size [79] | Sparse files |
---|---|---|---|---|---|---|---|
CoreFSIF | No | No | No | No | No | No | No |
DECtape | No | No | No | No | No | No | No |
Level-D | No | No | Yes | No | Yes | No | No |
V6FS | No | No | No | No | No | No | Yes |
V7FS | No | No | No | No | No | No | Yes |
FAT12 | No | No [80] | No | No | No | No | No |
FAT16 | No | No [80] | No | No | No | No | No |
FAT32 | No | No | No | No | No | No | No |
GFS | Partial[81] | No | No | No | No | No | Yes |
HPFS | No | No | No | No | Yes | No | No |
NTFS | No | Yes | Partial | No | Yes | No | Yes |
HFS Plus | No | No | No | No | Yes | No | No |
FFS | Yes | No | 8:1 [82] | No | No | No | Yes |
UFS1 | No | No | 8:1 [82] | No | No | No | Yes |
UFS2 | No | No | 8:1 [82] | No | No | Yes | Yes |
LFS | No | No | 8:1 [82] | No | No | No | Yes |
ext2 | No | No [83] | No [84] | No | No | No | Yes |
ext3 | No | No | No [84] | No | No | No | Yes |
ext4 | No | No | No [84] | Yes | Yes | No | Yes |
Lustre | No | No | No | Yes | Yes | No | Yes |
NILFS | No | No | No | Yes | No | No | Yes |
ReiserFS | Yes | No | Yes [85] | No | No | No | Yes |
Reiser4 | Yes | Yes [86] | Yes [85] | Yes | Yes [87] | No | Yes |
OCFS | No | No | No | No | Yes | No | ? |
OCFS2 | No | No | No | No | Yes | No | Yes |
XFS | No | No | No | Yes | Yes | No | Yes |
JFS | No | only in JFS1 on AIX[88] | Yes | No | Yes | No | Yes |
QFS | No | No | Yes | No | No | No | ? |
BFS | No | No | No | No | Yes | No | ? |
NSS | No | Yes | No | No | Yes | No | ? |
NWFS | No | Yes | Yes [89] | No | No | No | ? |
ODS-5 | No | No | No | No | Yes | No | ? |
VxFS | No | No | ? | No | Yes | No | Yes |
UDF | No | No | No | ? [90] | Yes | No | Yes |
Fossil | No | Yes | No | No | No | No | ? |
ZFS | Partial [91] | Yes | ? | Yes | No | Yes | Yes |
VMFS2 | No | No | Yes | No | No | No | Yes |
VMFS3 | No | No | Yes | No | No | No | Yes |
File system | Tail packing | Transparent compression | Block suballocation | Allocate-on-flush | Extents | Variable file block size [79] | Sparse files |
OS support
File system | DOS | Windows 9x | Windows NT | Linux | Mac OS | Mac OS X | FreeBSD | OS/2 | BeOS | Minix | Solaris | z/OS |
---|---|---|---|---|---|---|---|---|---|---|---|---|
CoreFSIF | No | Yes | Yes | Yes | ? | Yes | Yes | ? | ? | ? | Yes | ? |
DECtape | No | No | No | No | No | No | No | No | No | No | No | No |
Level-D | No | No | No | No | No | No | No | No | No | No | No | No |
RT-11 | No | No | No | No | No | No | No | No | No | No | No | No |
V6FS | No | No | No | No | No | No | No | No | No | No | No | No |
V7FS | No | ? | ? | Yes | ? | ? | No | ? | ? | ? | ? | ? |
FAT12 | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ? | Yes | ? |
FAT16 | DOS 3.31 and newer | Yes | Yes | Yes | ? | Yes | Yes | Yes | Yes | ? | Yes | ? |
FAT32 | FreeDOS; DR-DOS 8.x | Yes from Windows 95 OSR2 | Yes from Windows 2000 | Yes | ? | Yes | Yes | Yes | Yes | ? | Yes | ? |
GFS | No | ? | ? | Yes | ? | ? | No | ? | ? | ? | ? | ? |
HPFS | No | Partial - Read-write support only via network shares | Yes Windows NT 3.x only, NT 4 and 2000 could still use the driver | Yes | ? | ? | Yes | Yes | ? | ? | ? | ? |
NTFS | No | No | Yes | Yes with ntfs-3g | Yes with Paragon NTFS and ntfs-3g | Yes with ntfs-3g | Yes with ntfs-3g | ? | Yes with ntfs-3g | ? | ? | ? |
Apple HFS | No | ? | ? | Yes | Yes | Yes | No | ? | ? | ? | ? | No |
Apple HFS Plus | No | ? | ? | Partial - writing support only to unjournalled FS | Yes from Mac OS 8.1 | Yes | No | ? | ? | ? | ? | No |
FFS | No | ? | ? | ? | ? | Yes | Yes | ? | ? | ? | ? | ? |
UFS1 | No | ? | ? | Partial - read only | ? | Yes | Yes | ? | ? | ? | ? | ? |
UFS2 | No | ? | ? | Partial - read only | ? | Yes | Yes | ? | ? | ? | ? | ? |
LFS | No | ? | ? | ? | ? | ? | No | ? | ? | ? | ? | ? |
ext2 | No | Yes with Ext2 IFS[92] or ext2fsd[93] | Yes with Ext2 IFS[92] or ext2fsd[93] | Yes | Yes with ext2fsx | Yes with ext2fsx | Yes | ? | ? | ? | ? | ? |
ext3 | No | Yes with Ext2 IFS[92] or ext2fsd[93] | Yes with Ext2 IFS[92] or ext2fsd[93] | Yes | ? | Partial with ext2fsx (journal not updated on writing) | ? | ? | ? | ? | Yes | ? |
ext4 | No | ? | ? | Experimental | ? | ? | No | ? | ? | ? | ? | ? |
Lustre | No | ? | ? | Yes [94] | ? | ? | No | ? | ? | ? | Yes | ? |
NILFS | No | ? | ? | Yes as an external kernel module | ? | ? | No | ? | ? | ? | ? | ? |
ReiserFS | No | ? | ? | Yes | ? | ? | Partial - read-only | ? | ? | ? | ? | ? |
Reiser4 | No | ? | ? | Yes with a kernel patch | ? | ? | No | ? | ? | ? | ? | ? |
OCFS | No | ? | ? | Yes | ? | ? | No | ? | ? | ? | ? | ? |
OCFS2 | No | ? | ? | Yes | ? | ? | No | ? | ? | ? | ? | ? |
XFS | No | ? | ? | Yes | ? | ? | Partial | ? | ? | ? | ? | ? |
JFS | No | ? | ? | Yes | ? | ? | No | Yes | ? | ? | ? | ? |
QFS | No | ? | ? | ? | ? | ? | No | ? | ? | ? | Yes | ? |
Be File System | No | ? | ? | Partial - read-only | ? | ? | No | ? | Yes | ? | ? | ? |
NSS | No | ? | ? | Yes via EVMS[95] | ? | ? | No | ? | ? | ? | ? | ? |
NWFS | No | ? | ? | ? | ? | ? | Yes | ? | ? | ? | ? | ? |
ODS-2 | No | ? | ? | ? | ? | ? | No | ? | ? | ? | ? | ? |
ODS-5 | No | ? | ? | ? | ? | ? | No | ? | ? | ? | ? | ? |
UDF | No | ? | Yes[citation needed] | Yes | Yes | Yes | Yes | ? | ? | ? | Yes | ? |
VxFS | No | ? | ? | Yes | ? | ? | No | ? | ? | ? | Yes | ? |
Fossil | No | No | No | Yes [96] | No | Yes [96] | Yes [96] | No | No | No | Yes [96] | ? |
Sun ZFS | No | ? | ? | Yes with FUSE[97] | ? | Yes with Read/Write Developer Preview[98] | Yes | ? | ? | ? | Yes | ? |
VMFS2 | No | ? | ? | ? | ? | ? | No | ? | ? | ? | ? | ? |
VMFS3 | No | ? | ? | ? | ? | ? | No | ? | ? | ? | ? | ? |
IBM HFS | No | No | No | No | No | No | No | No | No | No | No | Yes |
IBM zFS | No | No | No | No | No | No | No | No | No | No | No | Yes |
File system | DOS | Windows 9x | Windows NT | Linux | Mac OS | Mac OS X | FreeBSD | OS/2 | BeOS | Minix | Solaris | z/OS |
See also
- Comparison of archive formats
- Comparison of file archivers
- List of archive formats
- List of file archivers
- List of file systems
Notes
- ^ IBM introduced JFS with the initial release of AIX Version 3.1 in 1990. This file system now called JFS1. The new JFS, on which the Linux port was based, was first shipped in OS/2 Warp Server for e-Business in 1999. The same sourcebase was also used for release JFS2 on AIX 5L.
- ^ Polycenter File System - - HELP
- ^ Microsoft first introduced FAT32 in Windows 95 OSR2 (OEM Service Release 2) and then later in Windows 98. NT-based Windows did not have any support for FAT32 up to Windows NT4; Windows 2000 was the first NT-based Windows OS that received the ability to work with it.
- ^ a b These are the restrictions imposed by the on-disk 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.
- ^ a b c d e 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 128 KiB for FAT — which is the cluster size range allowed by the on-disk data structures, although some Installable File System drivers and operating systems do not support cluster sizes larger than 32 KiB).
- ^ SFS file system
- ^ a b c d e f g h i 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 8.3 format of 8-bit characters (space padded in both the basename and extension parts) and may not contain NUL (end-of-directory marker) or character 5 (replacement for character 229 which itself is used as deleted-file marker). Short names also do not normally contain lowercase letters. Also note that a few special names (CON, NUL, LPT1) should be avoided, as some operating systems (notably DOS and windows) effectively reserve them.
- ^ a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad 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-disk 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.
- ^ a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah The on-disk 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 32,767 bytes for NTFS. Linux has a pathname limit of 4,096.
- ^ The actual maximum was 8,847,360 bytes, with 7 singly-indirect blocks and 1 doubly-indirect block; PWB/UNIX 1.0's variant had 8 singly-indirect blocks, making the maximum 524,288 bytes or half a MiB.
- ^ The actual maximum was 1,082,201,088 bytes, with 10 direct blocks, 1 singly-indirect block, 1 doubly-indirect block, and 1 triply-indirect block. The 4.0BSD and 4.1BSD versions, and the System V version, used 1,024-byte blocks rather than 512-byte blocks, making the maximum 4,311,812,608 bytes or approximately 4 GiB.
- ^ While FAT32 partitions this large work fine once created, some software won't allow creation of FAT32 partitions larger than 32 GiB. This includes, notoriously, the Windows XP installation program and the Disk Management console in Windows 2000, XP, 2003 and Vista. Use FDISK from a Windows ME Emergency Boot Disk to avoid. [1]
- ^ 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-disk data structure for a directory does not contain entries by those names, but instead contains a special "start" entry. Whilst on-disk directory entries by those names are not physically prohibited, they cannot be created in normal operation, and a directory containing such entries is corrupt.
- ^ This is the limit of the on-disk 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 64 GiB.
- ^ a b This is the limit of the on-disk structures. The NTFS driver for Windows NT limits the volume size that it can handle to 256 TiB and the file size to 16 TiB respectively.
- ^ The Mac OS provides two sets of functions to retrieve file names from an HFS Plus volume, one of them returning the full Unicode names, the other shortened names fitting in the older 31 byte limit to accommodate older applications.
- ^ HFS Plus mandates support for an escape sequence to allow arbitrary Unicode. Users of older software might see the escape sequences instead of the desired characters.
- ^ See http://docs.info.apple.com/article.html?artnum=25557 and http://docs.info.apple.com/article.html?artnum=24601.
- ^ Interviews/EricSandeen - FedoraProject
- ^ a b Depends on kernel version and arch. For 2.4 kernels the max is 2 TiB. For 32-bit 2.6 kernels it is 16 TiB. For 64-bit 2.6 kernels it is 8 EiB.
- ^ ReiserFS has a theoretical maximum file size of 1 EiB, but "page cache limits this to 8 Ti on architectures with 32 bit int"[2]
- ^ a b Currently limited to 16TiB since it uses the Linux JBD
- ^ Note that the filename can be much longer XFS#Extended_attributes
- ^ a b XFS has a limitation under Linux 2.4 of 64 TiB file size, but Linux 2.4 only supports a maximum block size of 2 TiB. This limitation is not present under IRIX.
- ^ a b QFS allows files to exceed the size of disk when used with its integrated HSM, as only part of the file need reside on disk at any one time.
- ^ Varies wildly according to block size and fragmentation of block allocation groups.
- ^ a b NSS allows files to have multiple names, in separate namespaces.
- ^ Some namespaces had lower name length limits. "LONG" had an 80-byte limit, "NWFS" 80 bytes, "NFS" 40 bytes and "DOS" imposed 8.3 filename.
- ^ Maximum combined filename/filetype length is 236 bytes; each component has an individual maximum length of 255 bytes.
- ^ Maximum pathname length is 4,096 bytes, but quoted limits on individual components add up to 1,664 bytes.
- ^ This restriction might be lifted in newer versions.
- ^ a b Maximum file size on a VMFS volume depends on the block size for that VMFS volume. The figures here are obtained by using the maximum block size.
- ^ ISO_9660#Restrictions
- ^ Through the use of multi-extents, a file can consist of multiple segments, each up to 4 GiB in size. See ISO_9660#The_2_GiB_.28or_4_GiB_depending_on_implementation.29_file_size_limit
- ^ Assuming the typical 2048 Byte sector size. The volume size is specified as a 32 bit value identifying the number of sectors on the volume.
- ^ Joliet Specification
- ^ Implemented in later versions as an extension
- ^ a b c Some FAT implementations, such as in Linux, show file modification timestamp (mtime) in the metadata change timestamp (ctime) field. This timestamp is however, not updated on file metadata change.
- ^ a b Particular Installable File System drivers and operating systems may not support extended attributes on FAT12 and FAT16. The OS/2 and Windows NT filesystem drivers for FAT12 and FAT16 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.
- ^ The f-node contains a field for a user identifier. This is not used except by OS/2 Warp Server, however.
- ^ NTFS access control lists can express any access policy possible using simple POSIX file permissions (and far more), but use of a POSIX-like interface is not supported without an add-on such as Services for UNIX or Cygwin.
- ^ As of Vista, NTFS has support for Mandatory Labels, which are used to enforce Mandatory Integrity Control. See [3]
- ^ a b c d Access-control lists and MAC labels are layered on top of extended attributes.
- ^ Some operating systems implemented extended attributes as a layer over UFS1 with a parallel backing file (e.g., FreeBSD 4.x).
- ^ a b c d e f g h i j k l 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.
- ^ a b c d e f The local time, timezone/UTC offset, and date are derived from the time settings of the reference/single timesync source in the NDS tree.
- ^ a b 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.
- ^ a b 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.
- ^ Record Management Services (RMS) attributes include record type and size, among many others.
- ^ File permission in 9P are a variation of the traditional Unix permissions with some minor changes, eg. the suid bit is replaced by a new 'exclusive access' bit.
- ^ MAC/Sensitivity labels in the file system are not out of the question as a future compatible change but aren't part of any available version of ZFS.
- ^ Solaris "extended attributes" are really full-blown alternate data streams, in both the Solaris UFS and ZFS.
- ^ System V Release 4, and some other Unix systems, retrofitted symbolic links to their versions of the Version 7 Unix file system, although the original version didn't support them.
- ^ Context based symlinks were supported in GFS, GFS2 only supports standard symlinks since the bind mount feature of the Linux VFS has made context based symlinks obsolete
- ^ Optional journaling of data
- ^ As of Windows Vista, NTFS fully supports soft links. See this Microsoft article on Vista kernel improvements. NTFS 3.0 (Windows 2000) and higher can create junctions, which allow entire directories (but not individual files) to be mapped to elsewhere in the directory tree of the same partition (file system). These are implemented through reparse points, which allow the normal process of filename resolution to be extended in a flexible manner.
- ^ a b NTFS stores everything, even the file data, as meta-data, so its log is closer to block journaling (also see: USN Journal).
- ^ 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.
- ^ NTFS does not internally support snapshots, but in conjunction with the Volume Shadow Copy Service can maintain persistent block differential volume snapshots.
- ^ Metadata-only journaling was introduced in the Mac OS 10.2.2 HFS Plus driver; journaling is enabled by default on Mac OS 10.3 and later.
- ^ Although often believed to be case sensitive, HFS Plus normally is not. The typical default installation is case-preserving only. From Mac OS 10.3 on the command newfs_hfs -s will create a case-sensitive new file system. HFS Plus version 5 optionally supports case-sensitivity. However, since case-sensitivity is fundamentally different from case-insensitivity, a new signature was required so existing HFS Plus utilities would not see case-sensitivity as a file system error that needed to be corrected. Since the new signature is 'HX', it is often believed this is a new filesystem instead of a simply an upgraded version of HFS Plus. See Apple's File System Comparisons (which hasn't been updated to discuss HFSX) and Technical Note TN1150: HFS Plus Volume Format (which provides a very technical overview of HFS Plus and HFSX).
- ^ Mac OS Tiger (10.4) and late versions of Panther (10.3) provide file change logging (it's a feature of the file system software, not of the volume format, actually). See fslogger.
- ^ HFS+ does not actually encrypt files: to implement FileVault, OS X creates an HFS+ filesystem in a sparse, encrypted disk image that is automatically mounted over the home directory when the user logs in.
- ^ "Soft dependencies" (softdep) in NetBSD, called "soft updates" in FreeBSD provide meta-data consistency at all times without double writes (journaling).
- ^ a b c d UDF, LFS, and NILFS are log-structured file systems and behave as if the entire file system were a journal.
- ^ Linux kernel versions 2.6.12 and newer.
- ^ a b c Off by default.
- ^ Full block journaling for ReiserFS was added to Linux 2.6.8.
- ^ Optionally no on IRIX.
- ^ Support is theoretically possible, but no application have been written written to support it yet.
- ^ see CXFS
- ^ 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.
- ^ a b c d 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.
- ^ a b 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)
- ^ a b Available only in the "NFS" namespace.
- ^ a b These are referred to as "aliases".
- ^ VxFS provides an optional feature called "Storage Checkpoints" which allows for advanced file system snapshots.
- ^ 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.
- ^ 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.
- ^ a b 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.
- ^ Only for "stuffed" inodes
- ^ a b c d Other block:fragment size ratios supported; 8:1 is typical and recommended by most implementations.
- ^ 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.
- ^ a b c Fragments were planned, but never actually implemented on ext2 and ext3.
- ^ a b Tail packing is technically a special case of block suballocation where the suballocation unit size is always 1 byte.
- ^ Reiser4 supports transparent compression and encryption with the cryptcompress plugin which is the default file handler in version 4.1.
- ^ In "extents" mode.
- ^ "AIX documentation: JFS data compression". IBM.
- ^ Each possible size (in sectors) of file tail has a corresponding suballocation block chain in which all the tails of that size are stored. The overhead of managing suballocation block chains is usually less than the amount of block overhead saved by being able to increase the block size but the process is less efficient if there is not much free disk space.
- ^ Depends on UDF implementation.
- ^ When enabled, ZFS's logical-block based compression behaves much like tail-packing for the last block of a file.
- ^ a b c d Ext2 IFS for Windows provides kernel level read/write access to Ext2 and Ext3 volumes in Windows NT4, 2000, XP and Vista.[4]
- ^ a b c d Ext2Fsd is an open source linux ext2/ext3 file system driver for Windows systems (NT/2K/XP/VISTA, X86/AMD64).[5]
- ^ Main Page - Wiki3
- ^ Supported using only EVMS; not currently supported using LVM
- ^ a b c d Provided in Plan 9 from User Space
- ^ ZFS on FUSE
- ^ Apple Seeds ZFS Read/Write Developer Preview 1.1 for Leopard - Mac Rumors