Comparison of file systems


The following tables compare general and technical information for a number of file systems.

General information

Limits


File systemMaximum filename lengthAllowable characters in directory entriesMaximum pathname lengthMaximum file sizeMaximum volume sizeMax number of files
BeeGFS255 bytesAny byte except NULNo limit defined16 EiB16 EiB
CP/M file system8.3ASCII except for < >., ; : = ? * No directory hierarchy 32 MiB512 MiB
IBM SFS8.8Non-hierarchicaldata-sort-type="number" data-sort-value="0"
DECtape6.3A–Z, 0–9DTxN:FILNAM.EXT = 15369,280 bytes 369,920 bytes
Elektronika BK tape format16 bytesNo directory hierarchy64 KiBNot limited. Approx. 800KB for 90 min cassette
MicroDOS file system14 bytes16 MiB32 MiB
Level-D6.3A–Z, 0–9DEVICE:FILNAM.EXT = 7 + 10 + 15 = 32; + 5*7 for SFDs = 6734,359,738,368 words ; 206,158,430,208 SIXBIT bytesApprox 12 GB
RT-116.3A–Z, 0–9, $0 33,554,432 bytes 33,554,432 bytes
Version 6 Unix file system 14 bytesAny byte except NUL and /No limit defined16 MiB32 MiB
Disk Operating System data-sort-type="number" data-sort-value="0" at least 131,072 bytesdata-sort-type="number" data-sort-value="0"
GEC DOS filing system extended8 bytesA–Z, 0–9. Period was directory separator No limit defined data-sort-type="number" data-sort-value="0" at least 131,072 bytesdata-sort-type="number" data-sort-value="0"
CBM DOS16 bytesAny byte except NUL0 16 MiB16 MiB
Version 7 Unix file system 14 bytesAny byte except NUL or /No limit defined1 GiB2 TiB
exFAT255 UTF-16 characters32,760 Unicode characters with each path component no more than 255 characters16 EiB64 ZiB
FAT 6.3 / 9 characters ASCII No directory hierarchydata-sort-type="number" data-sort-value="0" data-sort-type="number" data-sort-value="0"
FAT12/FAT168.3 SFN: OEM A-Z, 0-9, ! # $ % & ' - @ ^ _ ` ~, 0x80-0xFF, 0x20. LFN: Unicode except NUL, " * / : < > ? \ | No limit defined32 MiB 1 MiB to 32 MiB
FAT16B/FAT16X8.3 SFN: OEM A-Z, 0-9, ! # $ % & ' - @ ^ _ ` ~, 0x80-0xFF, 0x20. LFN: Unicode except NUL, " * / : < > ? \ | No limit defined2 GiB16 MiB to 2 GiB
FAT32/FAT32X8.3 SFN: OEM A-Z, 0-9, ! # $ % & ' - @ ^ _ ` ~, 0x80-0xFF, 0x20. LFN: Unicode except NUL, " * / : < > ? \ | 32,760 Unicode characters with each path component no more than 255 characters4 GiB512 MiB to 16 TiB
FATX42 bytesASCII. Unicode not permitted.No limit defined2 GiB16 MiB to 2 GiB
Fossildata-sort-type="number" data-sort-value="0" data-sort-type="number" data-sort-value="0"
GEMDOS8.3A-Z, a-z, 0-9 ! @ # $ % ^ & + - = ~ ` ; ' ", < > | _
APFS255 UTF-8 charactersUnicode 9.0 encoded in UTF-88 EiBdata-sort-type="number" data-sort-value="0" 263
F2FS255 bytesAny byte except NUL, /No limit defined3.94 TiB16 TiB
MFS255 bytesAny byte except :No path 256 MiB256 MiB
HFS31 bytesAny byte except :Unlimited2 GiB2 TiB
HPFS255 bytesAny byte except NULNo limit defined2 GiB2 TiB
NTFS255 charactersIn Win32 namespace: any UTF-16 code unit except /\:*"?<>| as well as NUL
In POSIX namespace: any UTF-16 code unit except / as well as NUL
32,767 Unicode characters with each path component up to 255 characters long16 EiB16 EiB232
ReFS255 UTF-16 charactersAny Unicode except NUL, /32,767 Unicode characters with each path component up to 255 characters long16 EiB1 YiB
HFS Plus255 UTF-16 charactersAny valid UnicodeUnlimitedslightly less than 8 EiBslightly less than 8 EiB
FFS255 bytesAny byte except NULNo limit defined4 GiB256 TiB
HAMMER255 bytesAny byte except NULdata-sort-type="number" data-sort-value="0" 1 EiB
UFS1255 bytesAny byte except NULNo limit defined16 GiB to 256 TiB16 EiBSubdirectory per directory is 32,767
UFS2255 bytesAny byte except NULNo limit defined512 GiB to 32 PiB512 ZiB Subdirectory per directory is 32,767
ext255 bytesAny byte except NULNo limit defined2 GiB2 GiB
Xiafs248 bytesAny byte except NULNo limit defined64 MiB2 GiB
ext2255 bytesAny byte except NUL, /No limit defined16 GiB to 2 TiB2 TiB to 32 TiB
ext3255 bytesAny byte except NUL, /No limit defined16 GiB to 2 TiB2 TiB to 32 TiB
ext4255 bytesAny byte except NUL, /No limit defined16 GiB to 16 TiB1 EiB232
NOVA255 bytesAny byte except NUL, /No limit defined16 EiB16 EiB
Lustre255 bytesAny byte except NULNo limit defined16 EiB on ZFS16 EiB
GPFS255 UTF-8 codepointsAny byte except NULNo limit definedNo limit found299 bytes
GFS255 bytesAny byte except NULNo limit defined2 TiB to 8 EiB2 TiB to 8 EiB
NILFS255 bytesAny byte except NULNo limit defined8 EiB8 EiB
ReiserFS4,032 bytes/255 charactersAny byte except NUL or '/'No limit defined8 TiB, 4 GiB 16 TiB
Reiser43,976 bytesAny byte except / and NULNo limit defined8 TiB on x86data-sort-type="number" data-sort-value="0"
OCFS255 bytesAny byte except NULNo limit defined8 TiB8 TiB
OCFS2255 bytesAny byte except NULNo limit defined4 PiB4 PiB
XFS255 bytesAny byte except NULNo limit defined8 EiB8 EiB
JFS1255 bytesAny byte except NULNo limit defined8 EiB512 TiB to 4 PiB
JFS255 bytesAny Unicode except NULNo limit defined4 PiB32 PiB
QFS255 bytesAny byte except NULNo limit defined16 EiB4 PiB
BFS255 bytesAny byte except NULNo limit defined12,288 bytes to 260 GiB256 PiB to 2 EiBUnlimited
AdvFS255 charactersAny byte except NULNo limit defined16 TiB16 TiB
NSS256 charactersDepends on namespace usedOnly limited by client8 TiB8 TiB
NWFS80 bytesDepends on namespace usedNo limit defined4 GiB1 TiB
ODS-5236 bytes4,096 bytes1 TiB1 TiB
VxFS255 bytesAny byte except NULNo limit defined16 EiBdata-sort-type="number" data-sort-value="0"
UDF255 bytesAny Unicode except NUL1,023 bytes16 EiB512 MiB to 16 TiB
ZFS255 bytesAny Unicode except NULNo limit defined16 EiB256 ZiB 2128
Btrfs255 bytesAny byte except '/' and NULNo limit defined16 EiB16 EiB264
Minix V1 FS14 or 30 bytes, set at filesystem creation timeAny byte except NULNo limit defined256.5 MiB 64 MiB
Minix V2 FS14 or 30 bytes, set at filesystem creation timeAny byte except NULNo limit defined2 GiB 1 GiB
Minix V3 FS60 bytesAny byte except NULNo limit defined2 GiB4 GiB
VMFS2128Any byte except NUL or /2,0484 TiB64 TiB
VMFS3128Any byte except NUL or /2,0482 TiB64 TiB
Level 1: 8.3,
Level 2 & 3: ~ 180
Depends on Level~ 180 bytes?4 GiB to 8 TiB 8 TiB
Joliet 64 Unicode charactersAll UCS-2 code except *, /, \, :, ;, and ?same as same as
Rock Ridge255 bytesAny byte except NUL or /No limit definedsame as same as
UniFSNo limit defined No limit defined Available cache space at time of write No limit definedNo limit defined
data-sort-type="number" data-sort-value="0" data-sort-type="number" data-sort-value="0"
High Sierra Formatdata-sort-type="number" data-sort-value="0" data-sort-type="number" data-sort-value="0"
SquashFS256 bytesNo limit defined16 EiB16 EiB
File systemMaximum filename lengthAllowable characters in directory entriesMaximum pathname lengthMaximum file sizeMaximum volume sizeMax number of files

Metadata


File systemStores file ownerPOSIX file permissionsCreation timestampsLast access/ read timestampsLast metadata change timestampsLast archive timestampsAccess control listsSecurity/ MAC labelsExtended attributes/ Alternate data streams/ forksChecksum/ ECC
BeeGFS
CP/M file system
DECtape
Elektronika BK tape format
Level-D
RT-11
Version 6 Unix file system
Version 7 Unix file system
exFAT
FAT12/FAT16/FAT32
HPFS
NTFS
ReFS
HFS
HFS Plus
FFS
UFS1
UFS2
HAMMER
LFS
ext
Xiafs
ext2
ext3
ext4
NOVA
Lustre
F2FS
GPFS
GFS
NILFS
ReiserFS
Reiser4
OCFS
OCFS2
XFS
JFS
QFS
BFS
AdvFS
NSS
NWFS
ODS-5
APFS
VxFS
UDF
Fossil
ZFS
Btrfs
Minix V1
Minix V2
Minix V3
VMFS2
VMFS3
Rock Ridge
Joliet
High Sierra
SquashFS
File systemStores file ownerPOSIX file permissionsCreation timestampsLast access/read timestampsLast metadata change timestampsLast archive timestampsAccess control listsSecurity/ MAC labelsExtended attributes/ Alternate data streams/ forksChecksum/ ECC

Features

File capabilities


File systemHard linksSymbolic linksBlock journalingMetadata-only journalingCase-sensitiveCase-preservingFile Change LogXIP
DECtape
BeeGFS
Level-D
RT-11
APFS
Version 6 Unix file system
Version 7 Unix file system
exFAT
FAT12
FAT16 / FAT16B / FAT16X
FAT32 / FAT32X?
GFS
HPFS
NTFS
HFS Plus
FFS
UFS1
UFS2
HAMMER
LFS
ext
Xiafs
ext2
ext3
ext4, optional
NOVA
F2FS
Lustre
NILFS
ReiserFS
Reiser4
OCFS
OCFS2
XFS
JFS
QFS
BFS
NSS
NWFS
ODS-2
ODS-5
UDF
VxFS
Fossil
ZFS
Btrfs
Minix V1
Minix V2
Minix V3
VMFS2
VMFS3
ReFS
ISO 9660
Rock Ridge
Joliet
SquashFS
File systemHard linksSymbolic linksBlock journalingMetadata-only journalingCase-sensitiveCase-preservingFile Change LogXIP

Block capabilities

Note that in addition to the below table, block capabilities can be implemented below the file system layer in Linux or Windows, etc.

File systemInternal snapshotting / branchingencryptiondeduplicationChecksumPersistent CacheMultiple Devicescompression
DECtape
BeeGFS
Level-D
RT-11
APFS
Version 6 Unix file system
Version 7 Unix file system
exFAT
FAT12
FAT16 / FAT16B / FAT16X
FAT32 / FAT32X
GFS
HPFS
NTFS
HFS Plus
FFS
UFS1
UFS2
HAMMER
LFS
ext
Xiafs
ext2
ext3
ext4, experimental
NOVA
F2FS, experimental
Lustre
NILFS, continuous
ReiserFS
Reiser4
OCFS
OCFS2
XFS, experimental
JFS only in JFS1 on AIX
QFS
BFS
NSS
NWFS
ODS-2
ODS-5-
UDF
VxFS
Fossil
ZFS
Btrfs
Minix V1
Minix V2
Minix V3
VMFS2
VMFS3
ReFS
ISO 9660
Rock Ridge
Joliet
SquashFS
File systemInternal snapshotting / branchingFilesystem-level encryptionData deduplicationData checksumsPersistent CacheMultiple Devicescompression

Resize capabilities

Allocation and layout policies


File systemSparse filesBlock suballocationTail packingExtentsVariable file block sizeAllocate-on-flushCopy on writeTrim support
DECtape
BeeGFS
Level-D
APFS
Version 6 Unix file system
Version 7 Unix file system
exFAT
FAT12
FAT16 / FAT16B / FAT16X
FAT32 / FAT32X
GFS
HPFS
NTFS
HFS Plus
FFS 8:1
UFS1 8:1
UFS2 8:1
LFS 8:1
ext
Xiafs
ext2
ext3
ext4
NOVA
F2FS
Lustre
NILFS
ReiserFS
Reiser4
OCFS
OCFS2
XFS, on request
JFS
QFS
BFS
NSS
NWFS
ODS-5
VxFS
UDF, for write once read many media
Fossil
ZFS
Btrfs
VMFS2
VMFS3
ReFS
ISO 9660
Rock Ridge
Joliet
SquashFS
File systemSparse filesBlock suballocationTail packingExtentsVariable file block sizeAllocate-on-flushCopy on writeTrim support

OS support


File systemDOSWindows 9xWindows NTLinux"classic" Mac OSmacOSFreeBSDOS/2BeOSMinixSolarisz/OS
APFS
BeeGFS
DECtape
Level-D
RT-11
Version 6 Unix file system
Version 7 Unix file system
exFAT
FAT12
FAT16 / FAT16B / FAT16X
FAT32 / FAT32X ?
GFS
HPFS
NTFS with ntfs-3g natively read only, write support with Paragon NTFS or ntfs-3g with ntfs-3g with ntfs-3g with ntfs-3g
Apple HFS with Paragon HFS+ write support since Mac OS X 10.6 and no support at all since macOS 10.15
Apple HFS Plus with Paragon HFS+ - writing support only to unjournalled FS from Mac OS 8.1
FFS
UFS1 - read only
UFS2
LFS
ext - until 2.1.20
Xiafs - until 2.1.20

Experimental port available to 2.6.32 and later
ext2 with Paragon ExtFS or partial with Ext2 IFS or ext2fsd with Paragon ExtFS or ext2fsx
ext3 with Paragon ExtFS or partial with Ext2 IFS or ext2fsd with Paragon ExtFS or partial with ext2fsx
ext4 with Paragon ExtFS or partial with Ext2 IFS or ext2fsd with Paragon ExtFS support in kernel since version 10.1
NOVA
Lustre
NILFS as an external kernel module
F2FS
ReiserFS - Read Only from 6.0 to 10.x and dropped in 11.0
Reiser4 with a kernel patch
SpadFS
OCFS
OCFS2
XFS
JFS
QFS - client only
Be File System - read-only
NSS via EVMS
NWFS
ODS-2
ODS-5
UDF
VxFS
Fossil
ZFS with FUSE or as an external kernel module with Read/Write Developer Preview
Btrfs with WinBtrfs
VMFS2
VMFS3
IBM HFS
IBM zFS
ReFS - with Paragon ReFS for Linux
ISO 9660
Rock Ridge
Joliet
SquashFS
File systemDOSWindows 9xWindows NTLinux"classic" Mac OSmacOSFreeBSDOS/2BeOSMinixSolarisz/OS