Comparison of file systems

Source: Wikipedia, the free encyclopedia.

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

file systems
.

General information

File system Creator Year of introduction Original operating system
DECtape DEC 1964 PDP-6 Monitor
OS/3x0 FS IBM 1964
OS/360
Level-D DEC 1968 TOPS-10
George 3 ICT (later ICL) 1968 George 3
Version 6 Unix file system (V6FS) Bell Labs 1972 Version 6 Unix
RT-11 file system DEC 1973 RT-11
Disk Operating System (
GEC DOS
)
GEC
1973 Core Operating System
CP/M file system
Digital Research (Gary Kildall) 1974 CP/M[1][2]
ODS-1
DEC 1975 RSX-11
GEC DOS
filing system extended
GEC
1977 OS4000
FAT (8-bit)
NCR
1977
Microsoft Standalone Disk BASIC-86
)
DOS 3.x Apple 1978 Apple DOS
UCSD p-System
UCSD
1978
UCSD p-System
CBM DOS
Commodore 1978 Commodore BASIC
Atari DOS Atari 1979
Atari 8-bit
Version 7 Unix file system (V7FS) Bell Labs 1979 Version 7 Unix
ODS-2
DEC 1979 OpenVMS
FAT12
Seattle Computer Products (Tim Paterson) 1980
PC DOS 1.0
)
ProDOS
Apple 1980
ProDOS 8
)
DFS
Acorn Computers Ltd
1982 Acorn BBC Micro MOS
ADFS
Acorn Computers Ltd
1983 Acorn Electron (later Arthur/RISC OS)
FFS
Kirk McKusick 1983
4.2BSD
FAT16
IBM, Microsoft 1984
MS-DOS 3.0
MFS Apple 1984 System 1
Elektronika BK
tape format
NPO "Scientific centre" (now Sitronics) 1985
Vilnius Basic
, BK monitor program
HFS Apple 1985
System 2.1
Amiga OFS[1]
Metacomco for Commodore
1985
Amiga OS
GEMDOS
Digital Research 1985 Atari TOS
NWFS Novell 1985
NetWare 286
High Sierra
Ecma International 1986 MSCDEX for MS-DOS 3.1/3.2[3]
FAT16B
Compaq 1987
Compaq MS-DOS 3.31
Minix V1 FS
Andrew S. Tanenbaum 1987
MINIX 1.0
Amiga FFS Commodore 1988
Amiga OS 1.3
ISO 9660:1988
ISO
1988
"classic" Mac OS, and AmigaOS
HPFS IBM & Microsoft 1989
OS/2 1.2
Rock Ridge
IEEE
1990 c. 1990 Unix
JFS1
IBM 1990 AIX[a]
VxFS
VERITAS
1991
SVR4.0
ext Rémy Card 1992 Linux
AdvFS DEC 1993[4]
Digital Unix
NTFS Microsoft (Gary Kimura, Tom Miller) 1993 Windows NT 3.1
LFS Margo Seltzer 1993
Berkeley Sprite
ext2 Rémy Card 1993
Hurd
Xiafs Q. Frank Xia 1993 Linux
UFS1
Kirk McKusick 1994
4.4BSD
XFS SGI 1994 IRIX
HFS IBM 1994
MVS/ESA (now z/OS
)
FAT16X
Microsoft 1995
MS-DOS 7.0 / Windows 95
Joliet ("CDFS")
Microsoft 1995
"classic" Mac OS, and FreeBSD
UDF ISO/ECMA/OSTA 1995
FAT32X
Microsoft 1996
Windows 95 OSR2[b]
QFS Sun Microsystems 1996
Solaris
GPFS IBM 1996 AIX, Linux
Be File System Be Inc. (D. Giampaolo, Cyril Meurillon) 1996 BeOS
Minix V2 FS
Andrew S. Tanenbaum 1997
MINIX 2.0
HFS Plus Apple 1998
Mac OS 8.1
NSS Novell 1998
NetWare 5
PolyServe File System (PSFS) PolyServe 1998
Windows, Linux
ODS-5
DEC 1998 OpenVMS V7.2
WAFL NetApp 1998
Data ONTAP
ext3 Stephen Tweedie 1999 Linux
ISO 9660:1999
ISO
1999
"classic" Mac OS, FreeBSD, and AmigaOS
JFS
IBM 1999
OS/2 Warp
Server for e-business
GFS
Sistina (Red Hat) 2000 Linux
ReiserFS Namesys 2001 Linux
zFS IBM 2001 z/OS (backported to OS/390)
FATX
Microsoft 2002 Xbox
UFS2
Kirk McKusick 2002
FreeBSD 5.0
OCFS
Oracle Corporation 2002 Linux
SquashFS Phillip Lougher, Robert Lougher 2002 Linux
VMFS2
VMware 2002
VMware ESX Server 2.0
Lustre
Cluster File Systems[5]
2002 Linux
Fossil Bell Labs 2003 Plan 9 version 4
Google File System Google 2003 Linux
ZFS Sun Microsystems 2004
Solaris
Reiser4 Namesys 2004 Linux
Non-Volatile File System Palm, Inc. 2004
Palm OS Garnet
BeeGFS Fraunhofer/ ThinkParQ 2005 Linux
GlusterFS
Gluster Inc. 2005 Linux
Minix V3 FS
Andrew S. Tanenbaum 2005
MINIX 3
OCFS2 Oracle Corporation 2005 Linux
NILFS NTT 2005 Linux
VMFS3
VMware 2005
VMware ESX Server 3.0
GFS2
Red Hat 2006 Linux
ext4 various 2006 Linux
exFAT Microsoft 2006
Windows CE 6.0
Btrfs Chris Mason 2007 Linux
JXFS Hyperion Entertainment 2008
AmigaOS 4.1
HAMMER
Matthew Dillon
2008 DragonFly BSD 2.0
LSFS StarWind Software 2009
Windows
UniFS Nasuni 2009 Cloud
CASL Nimble Storage 2010 Linux
OrangeFS Omnibond and others 2011 Linux
VMFS5 VMware 2011
vSphere
5.0+
CHFS University of Szeged 2011 NetBSD 6.0+
ReFS Microsoft 2012 Windows Server 2012
F2FS Samsung Electronics 2012 Linux
bcachefs Kent Overstreet 2015 Linux
APFS
Apple 2016
iOS 10.3
NOVA UC, San Diego 2017 Linux
BlueStore/Cephfs Red Hat, University of California, Santa Cruz 2017 Linux
HAMMER2
Matthew Dillon[6]
2017 DragonFly BSD 5.0
EROFS Huawei[7] 2018 Android

Metadata

File system 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 streams/ forks
Metadata checksum/ ECC File system
Bcachefs Yes Yes Yes Yes Yes No Yes Yes Yes Yes Bcachefs
BeeGFS Yes Yes No Yes Yes No Yes ? Yes Yes BeeGFS
CP/M file system
No No Yes[c] No No No No No No No
CP/M file system
DECtape[8] No No Yes No No No No No No No DECtape
Elektronika BK
tape format
No No No No No No No No No Yes
Elektronika BK
Level-D Yes Yes Yes Yes (date only) Yes Yes Yes (FILDAE) No No No Level-D
RT-11[9] No No Yes (date only) No No No No No No Yes RT-11
Version 6 Unix file system (V6FS)[10] Yes Yes No Yes No No No No No No Version 6 Unix file system (V6FS)
Version 7 Unix file system (V7FS)[11] Yes Yes No Yes No No No No No No Version 7 Unix file system (V7FS)
exFAT No No Yes Yes No No No No No No exFAT
FAT32
No No Yes Yes No[d] No No No No[e] No
FAT32
HPFS Yes[f] No Yes Yes No No No ? Yes No HPFS
NTFS Yes Yes[g] Yes Yes Yes No Yes Yes[h] Yes No NTFS
ReFS Yes Yes Yes Yes Yes No Yes ? Yes[i] Yes ReFS
HFS No No Yes No No Yes No No Yes No HFS
HFS Plus Yes Yes Yes Yes Yes Yes Yes ? Yes No HFS Plus
FFS
Yes Yes No Yes Yes No No No No No
FFS
UFS1
Yes Yes No Yes Yes No Yes[j] Yes[j] No[k] No
UFS1
UFS2
Yes Yes Yes Yes Yes No Yes[j] Yes[j] Yes Partial
UFS2
HAMMER Yes Yes Yes Yes Yes ? Yes Yes No Yes HAMMER
LFS Yes Yes No Yes Yes No No No No No LFS
ext Yes Yes No No No No No No No No ext
Xiafs Yes Yes No Yes Yes No No No No No Xiafs
ext2 Yes Yes No Yes Yes No Yes[l] Yes[l] Yes No ext2
ext3 Yes Yes No Yes Yes No Yes[l] Yes[l] Yes No ext3
ext4 Yes Yes Yes Yes Yes No Yes[l] Yes[l] Yes Partial[m] ext4
NOVA Yes Yes Yes Yes Yes No No No No Yes NOVA
Lustre Yes Yes No Yes Yes No Yes Yes Yes No Lustre
F2FS Yes Yes Yes Yes Yes No Yes[l] Yes[l] Yes No F2FS
GPFS Yes Yes Yes Yes Yes No Yes Yes Yes Yes GPFS
GFS
Yes Yes No Yes Yes No Yes[l] Yes[l] Yes No
GFS
NILFS Yes Yes Yes No Yes No No No No Yes NILFS
ReiserFS Yes Yes No Yes Yes No Yes[l] Yes[l] Yes No ReiserFS
Reiser4 Yes Yes No Yes Yes No No No No No Reiser4
OCFS
No Yes No No Yes Yes No No No No
OCFS
OCFS2 Yes Yes No Yes Yes No No No No No OCFS2
XFS Yes Yes Partial[n] Yes Yes No Yes Yes[l] Yes Yes XFS
JFS
Yes Yes Yes Yes Yes No Yes Yes Yes No
JFS
QFS Yes Yes Yes Yes Yes Yes Yes No Yes No QFS
BFS Yes Yes Yes No No No No No Yes No BFS
AdvFS Yes Yes No Yes Yes No Yes No Yes No AdvFS
NSS Yes Yes Yes[o] Yes[o] Yes Yes[o] Yes ? Yes[p][q] No NSS
NWFS Yes ? Yes[o] Yes[o] Yes Yes[o] Yes ? Yes[p][q] No NWFS
ODS-5
Yes Yes Yes ? ? Yes Yes ? Yes[r] No
ODS-5
APFS
Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
APFS
VxFS Yes Yes Yes Yes Yes No Yes ? Yes[l] No VxFS
UDF Yes Yes Yes Yes Yes Yes Yes No Yes Yes UDF
Fossil Yes Yes[s] No Yes Yes No No No No No Fossil
ZFS Yes Yes Yes Yes Yes Yes Yes Yes[t] Yes[u] Yes ZFS
Btrfs Yes Yes Yes Yes Yes No Yes Yes Yes Yes Btrfs
Minix V1 Yes Yes No No No No No No No No Minix V1
Minix V2 Yes Yes No Yes Yes No No No No No Minix V2
Minix V3 Yes Yes No Yes Yes No No No No No Minix V3
VMFS2
Yes Yes No Yes Yes No No No No No
VMFS2
VMFS3
Yes Yes No Yes Yes No No No No No
VMFS3
ISO 9660:1988
No No Yes No No No No No No No
ISO 9660:1988
Rock Ridge
Yes Yes No Yes[v] Yes No No[w] No[x] No[x] No
Rock Ridge
Joliet ("CDFS")
No No Yes No No No No No No No
Joliet ("CDFS")
ISO 9660:1999
No No Yes No No No No No No No
ISO 9660:1999
High Sierra
No No Yes No No No No No No No
High Sierra
SquashFS Yes Yes No No Yes No No Yes Yes No SquashFS
BlueStore/Cephfs Yes Yes Yes Yes ? No Yes Yes Yes Yes BlueStore/Cephfs
File system 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 streams/ forks
Metadata checksum/ ECC File system

Features

File capabilities

File system Hard links Symbolic links Block journaling Metadata-only journaling
Case-sensitive
Case-preserving
File Change Log
XIP Resident files (inline data)
DECtape No No No No No No No No ?
BeeGFS No Yes Yes Yes Yes Yes No No ?
Level-D No No No No No No No No ?
RT-11 No No No No No No No No ?
APFS
Yes Yes ? ? Optional Yes ? ? ?
Version 6 Unix file system (V6FS) Yes No No No Yes Yes No No No
Version 7 Unix file system (V7FS) Yes No[y] No No Yes Yes No No No
exFAT No No No Partial (with TexFAT only) No Yes No No No
FAT12
No No No Partial (with
TFAT12
only)
No Partial (with
VFAT
LFNs only)
No No No
FAT16X
No No No Partial (with
TFAT16
only)
No Partial (with
VFAT
LFNs only)
No No No
FAT32X
No No No? Partial (with
TFAT32
only)
No Partial (with
VFAT
LFNs only)
No No No
GFS
Yes Yes[z] Yes Yes[aa] Yes Yes No No ?
HPFS No No No No No Yes No No ?
NTFS Yes Yes[ab] No[ac] Yes[ac] (2000) Yes[ad] Yes Yes ? Yes (approximately 700 bytes)
HFS Plus Yes[16] Yes No Yes[ae] Optional[af] Yes Yes[ag] No ?
FFS
Yes Yes No No Yes Yes No No No
UFS1
Yes Yes No No Yes Yes No No No
UFS2
Yes Yes No Yes[ah] [21] [ai] Yes Yes No ? No
HAMMER Yes Yes Yes Yes Yes Yes ? No ?
LFS Yes Yes Yes[aj] No Yes Yes No No ?
ext Yes Yes No No Yes Yes No No ?
Xiafs Yes Yes No No Yes Yes No No ?
ext2 Yes Yes No No Yes Yes No Yes[ak] ?
ext3 Yes Yes Yes (2001) [al] Yes (2001) Yes Yes No Yes ?
ext4 Yes Yes Yes[al] Yes Yes, optional [24] Yes No Yes Yes (approximately 160 bytes)[25]
NOVA Yes Yes No Yes Yes Yes No Yes ?
F2FS Yes Yes Yes[aj] No Yes Yes No No ?
Lustre Yes Yes Yes[al] Yes Yes Yes Yes No ?
NILFS Yes Yes Yes[aj] No Yes Yes No No ?
ReiserFS Yes Yes Yes[am] Yes Yes Yes No ? ?
Reiser4 Yes Yes Yes No Yes Yes No ? ?
OCFS
No Yes No No Yes Yes No No ?
OCFS2 Yes Yes Yes Yes Yes Yes No No ?
XFS Yes Yes Yes Yes Yes[an] Yes Yes ? ?
JFS
Yes Yes Yes Yes (1990) Yes[ao] Yes No ? ?
QFS Yes Yes No Yes Yes Yes No No ?
BFS Yes Yes No Yes Yes Yes ? No ?
NSS Yes Yes ? Yes Yes[ap] Yes[ap] Yes[aq] No ?
NWFS Yes[ar] Yes[ar] No No Yes[ap] Yes[ap] Yes[aq] No ?
ODS-2
Yes Yes[as] No Yes No No Yes No ?
ODS-5
Yes Yes[as] No Yes No Yes Yes ? ?
UDF Yes Yes Yes[aj] Yes[aj] Yes Yes No Yes Yes[27]
VxFS Yes Yes Yes No Yes Yes Yes ? ?
Fossil No No No No Yes Yes Yes No ?
ZFS Yes Yes Yes[at] No[at] Yes Yes No No ?
Btrfs Yes Yes Yes[au] No Yes Yes ? ? ?
Bcachefs Yes Yes Yes[av] No Yes Yes ? ? ?
Minix V1 Yes Yes No No Yes Yes No No ?
Minix V2 Yes Yes No No Yes Yes No No ?
Minix V3 Yes Yes No No Yes Yes No No ?
VMFS2
Yes Yes No Yes Yes Yes No No ?
VMFS3
Yes Yes No Yes Yes Yes No No ?
ReFS Yes[aw] Yes ? ? Yes[ad] Yes ? ? ?
ISO 9660 No No No No No No No No ?
Rock Ridge
Yes Yes No No Yes Yes No No ?
Joliet ("CDFS")
No No No No No Yes No No ?
SquashFS Yes Yes No No Yes Yes No No ?
BlueStore/Cephfs Yes Yes Yes Yes Yes Yes No No ?
File system Hard links Symbolic links Block journaling Metadata-only journaling
Case-sensitive
Case-preserving
File Change Log
XIP Resident files

Block capabilities

Note that in addition to the below table, block capabilities can be implemented below the file system layer in Linux (

SECURITY
), etc.

File system Internal snapshotting / branching Encryption Deduplication Data checksum/ ECC Persistent Cache Multiple Devices Compression Self-healing[ax]
DECtape No No No No No No No No
BeeGFS No No Yes No No No Yes No
Level-D No No No No No No No No
RT-11 No No No No No No No No
APFS
Yes Yes Yes [28] No No No Yes No
Version 6 Unix file system (V6FS) No No No No No No No No
Version 7 Unix file system (V7FS) No No No No No No No No
exFAT No No No No No No No No
FAT12
No No No No No No Partial[ay] No
FAT16X
No No No No No No Partial[ay] No
FAT32X
No No No No No No No No
GFS
No No ? No No No No No
HPFS ? No ? No No No No No
NTFS No Yes Yes[az][30] No No No Yes No
HFS Plus No No[ba] No No No No No No
FFS
No No No No No No No No
UFS1
No No No No No No No No
UFS2
Yes No No No No No No No
HAMMER Yes No Yes Yes No No No No
LFS Yes No No No No No No No
ext No No No No No No No No
Xiafs No No No No No No No No
ext2 No No No No No No No No
ext3 No No No No No No No No
ext4 No Yes, experimental [31] No No[32] No No No No
NOVA Yes No No Yes No No No ?
F2FS No Yes, experimental [33] No No No No Yes No
Lustre No No No No Yes Yes No No
NILFS Yes, continuous[aj] No No Yes No No No No
ReiserFS No No No No No No No No
Reiser4 ? Yes[bb] ? No No No Yes No
OCFS
No No No No No No No No
OCFS2 No No No No No No No No
XFS No No Yes[34] No[32] No No No No
JFS
? No ? No No No only in JFS1 on AIX[35] No
QFS No No No No No No No No
BFS No No No No No No No No
NSS Yes Yes ? No No No Yes No
NWFS ? No ? No No No Yes No
ODS-2
Yes No No No No No No No
ODS-5
Yes No No No No No No
UDF No No No No No No No No
VxFS Yes[bc] No Yes No No No No No
Fossil Yes No Yes No No No Yes No
ZFS Yes Yes[bd] Yes Yes Yes Yes Yes[be] Yes
Btrfs Yes No Yes Yes[bf] No Yes Yes[bg] Yes
Bcachefs Yes Yes No Yes[bh] No Yes Yes[bi] No
Minix V1 No No No No No No No No
Minix V2 No No No No No No No No
Minix V3 No No No No No No No No
VMFS2
No No No No No No No No
VMFS3
No No No No No No No No
ReFS ? No Yes Yes[bj] No No No Yes
ISO 9660 No No No[bk] No No No No No
Rock Ridge
No No No[bk] No No No No No
Joliet ("CDFS")
No No No[bk] No No No No No
SquashFS No No Yes Yes No No Yes No
BlueStore/Cephfs Yes No No Yes Yes Yes Yes Yes
File system Internal snapshotting / branching Encryption Deduplication Data checksum/ ECC Persistent Cache Multiple Devices Compression Self-healing[ax]

Resize capabilities

"Online" and "offline" are synonymous with "mounted" and "not mounted".

File system Host OS Offline grow Online grow Offline shrink Online shrink Add and remove physical volumes
FAT16X
misc. Yes[bl] No Yes[bl] No No
FAT32X
misc. Yes[bl] No Yes[bl] No No
exFAT misc. No No No No No
NTFS Windows Yes Yes Yes Yes No
ReFS Windows ? Yes ? No No
HFS macOS No No No No No
HFS+ macOS No Yes No Yes No
APFS
macOS ? ? ? ? ?
SquashFS Linux No No No No No
NOVA Linux No No No No No
JFS[43] Linux Yes No No No No
XFS[44] Linux No Yes No[45] No[45] No
Lustre[46] Linux ? Yes No No Yes
F2FS[47] Linux Yes No No No No
NTFS[48] Linux Yes No Yes No No
ext2[49] Linux Yes No Yes No No
ext3[49] Linux Yes Yes Yes No No
ReiserFS[50] Linux Yes Yes Yes No No
Reiser4[51] Linux Yes Yes Yes No No
ext4[49] Linux Yes Yes Yes No No
Btrfs[52] Linux Yes Yes Yes Yes Yes
Bcachefs[41] Linux Yes Yes No No Yes
NILFS[53] Linux No Yes No Yes No
ZFS misc. No Yes No Partial[54] Yes
JFS2
AIX
Yes Yes Yes Yes No
UFS2[55]
FreeBSD Yes Yes (FreeBSD 10.0-RELEASE or later) No No No
HAMMER DragonflyBSD ? ? ? ? ?
BlueStore/Cephfs Linux No Yes No Yes Yes

Allocation and layout policies

File system Sparse files Block suballocation
Tail packing
Extents Variable file block size[bm] Allocate-on-flush
Copy on write
Trim support
DECtape No No No No No No No No
BeeGFS Yes No No Yes Yes Yes Yes ?
Level-D No No No Yes No No No ?
APFS
Yes ? ? Yes ? Yes Yes Yes[56][57]
Version 6 Unix file system (V6FS) Yes No No No No No ? No
Version 7 Unix file system (V7FS) Yes No No No No No ? No
exFAT No No No Partial (only if the file fits into one contiguous block range) No No No Yes (Linux)
FAT12
Partial (only inside of compressed volumes)[58] Partial (only inside of
DriveSpace 3 compressed volumes[29]
)
No Partial (only inside of compressed volumes)[59] No No No Yes (Linux)
FAT16X
Partial (only inside of compressed volumes)[58] Partial (only inside of
DriveSpace 3 compressed volumes[29]
)
No Partial (only inside of compressed volumes)[59] No No No Yes (Linux)
FAT32X
No No No No No No No Yes (Linux)
GFS
Yes No Partial[bn] No No No ? Yes
HPFS No No No Yes No No ? Yes (Linux)
NTFS Yes Partial No Yes No No ? Yes (NT 6.1+; Linux)
HFS Plus No No No Yes No No ? Yes (macOS)
FFS
Yes 8:1[bo] No No No No ? No
UFS1
Yes 8:1[bo] No No No No ? No
UFS2
Yes 8:1[bo] No No Yes No ? Yes[60][61]
LFS Yes 8:1[bo] No No No No Yes ?
ext Yes No No No No No No No
Xiafs Yes No No No No No ? ?
ext2 Yes No[bp] No No No No No Yes
ext3 Yes No[bp] No No No No No Yes
ext4 Yes No[bp] No Yes No Yes No Yes
NOVA Yes No No Yes No No Yes ?
F2FS Yes No No Partial[bq] No Yes Yes Yes[62]
Lustre Yes No No Yes No Yes ? ?
NILFS Yes No No No No Yes Yes Yes (Linux NILFS2)
ReiserFS Yes Yes[br] Yes No No No ? ?
Reiser4 Yes Yes[br] Yes Yes[bs] No Yes ? Testing[63]
OCFS
? No No Yes No No ? ?
OCFS2 Yes No No Yes No No ? Yes (Linux)
XFS Yes No No Yes No Yes Yes, on request[64] Yes (Linux)
JFS Yes Yes No Yes No No ? Yes (Linux)
QFS ? Yes No No No No ? ?
BFS ? No No Yes No No ? Yes (Haiku)
NSS ? No No Yes No Yes ? ?
NWFS ? Yes[bt] No No No No ? ?
ODS-5
? No No Yes No No ? ?
VxFS Yes ? No Yes No No ? ?
UDF Yes No No Yes No ?[bu] Yes, for write once read many media No
Fossil ? No No No No No ? ?
ZFS Yes Yes No No Yes Yes Yes Yes
Btrfs Yes Yes Yes Yes Yes Yes Yes Yes
Bcachefs ? ? ? Yes ? Yes Yes ?
VMFS2
Yes Yes No No No No ? ?
VMFS3
Yes Yes No No No No ? ?
ReFS Yes ? ? ? No ? Yes Yes (NT 6.1+)
ISO 9660 No No No Yes[bv] No No No No
Rock Ridge
No No No Yes[bv] No No No No
Joliet ("CDFS")
No No No Yes[bv] No No No No
SquashFS Yes No Yes No No No No No
BlueStore/Cephfs Yes ? ? ? ? No Yes Yes
File system Sparse files Block suballocation
Tail packing
Extents Variable file block size[bm] Allocate-on-flush
Copy on write
Trim support

OS support

File system DOS Linux macOS Windows 9x (historic) Windows (current) Classic
Mac OS
FreeBSD OS/2 BeOS Minix
Solaris
z/OS Android[65]
APFS
No Partial (read-only with apfs-fuse[66] or linux-apfs[67]) Yes
(Since macOS Sierra)
No No No No No No No No No No
BeeGFS No Yes ? No No No No No ? ? ? No No
DECtape No No No No No No No No No No No No No
Level-D No ? ? No No No No No No No ? ? No
RT-11 No No No No No No No No No No No No No
Version 6 Unix file system (V6FS) No ? No No No No No No No No No No No
Version 7 Unix file system (V7FS) No Yes No No No No No No ? ? ? No No
exFAT No Yes (since 5.4,[68] available as a kernel module or FUSE driver for earlier versions) Yes No Yes No Yes (available as a FUSE driver) No No No Yes (available as a FUSE driver) No With kernel 5.10
FAT12
Yes Yes Yes Yes Yes Yes Yes Yes Yes Partial (via dosdir, dosread, doswrite) Yes ? Yes
FAT16X
Yes (FAT16 from DOS 3.0, FAT16B from DOS 3.31, FAT16X from DOS 7.0) Yes Yes Yes Yes Yes Yes Yes Yes Partial (via dosdir, dosread, doswrite, not FAT16X) Yes ? Yes
FAT32X
Yes (from DOS 7.10) Yes Yes Yes (from
Windows 95 OSR2
)
Yes ? Yes Yes Yes No Yes ? Yes
GFS
No Yes ? No No No No ? ? ? ? ? No
HPFS Partial (with third-party drivers) Yes ? No No ? Yes Yes (from
OS/2 1.2
)
? No ? ? No
NTFS Partial (with third-party drivers) Yes Native since Linux Kernel 5.15
ntfs-3g[69]
Read only, write support needs
ntfs-3g
Needs 3rd-party drivers like Paragon NTFS for Win98, DiskInternals NTFS Reader Yes No Yes with
ntfs-3g
? Yes with
ntfs-3g
No Yes with
ntfs-3g
? With third party tools
Apple HFS No Yes No write support since Mac OS X 10.6 and no support at all since macOS 10.15 No Needs Paragon HFS+ [70] Yes No ? Yes No ? No No
Apple HFS Plus No Partial - writing support only to unjournalled FS Yes No Needs Paragon HFS+ [70] Yes from
Mac OS 8.1
No ? with addon No ? No No
FFS
No ? Yes No ? ? Yes ? ? ? ? ? No
UFS1
No Partial - read only Yes No Partial (with ufs2tools, read only) ? Yes No ? ? Yes ? No
UFS2
No Yes Yes No Partial (with ufs2tools, read only) ? Yes No ? ? ? ? No
LFS No ? ? No No ? No No ? ? ? ? No
ext No Yes - until 2.1.20 No No No No No No No No No No No
Xiafs No Yes - until 2.1.20

Experimental port available to 2.6.32 and later [71][72]

No No No No No No No No No No No
ext2 No Yes Needs Paragon ExtFS [73] or ext2fsx Partial (read-only, with explore2fs)[74] Needs Paragon ExtFS [75] or partial with Ext2 IFS[76] or ext2fsd[77] No Yes No Yes ? ? ? No
ext3 No Yes Needs Paragon ExtFS [73] or partial with ext2fsx (journal not updated on writing) Partial (read-only, with explore2fs)[74] Needs Paragon ExtFS [75] or partial with Ext2 IFS[76] or ext2fsd[77] Partial (read only)[citation needed] Yes[78] No with addon ? Yes ? Yes
ext4 No Yes Needs Paragon ExtFS [73] No Yes, with the optional WSL2; physical and VHDX virtual disks.[79][80] ? Yes since FreeBSD 12.0[78] No with addon ? ? ? Yes
NOVA No Yes No No No No No No No No No No No
Lustre No Yes[81] ? No No ? No ? ? ? Yes ? No
NILFS No Yes as an external kernel module ? No ? ? No ? ? ? ? ? No
F2FS No Yes No No No No No No No No No No Yes
ReiserFS No Yes ? No No ? Partial - Read Only from 6.0 to 10.x[82] and dropped in 11.0[83][84] ? with addon ? ? ? No
Reiser4 No Yes with a kernel patch ? No No ? No ? ? ? ? ? No
SpadFS No Yes No No No No ? No No No No No No
OCFS
No Yes ? No No ? No No ? ? ? ? No
OCFS2 No Yes ? No No ? No No ? ? ? ? No
XFS No Yes ? No No ? Partial ? with addon (read only) ? ? ? No
JFS No Yes ? No No ? No Yes ? ? ? ? No
QFS No Partial - client only[85] ? No No ? No No ? ? Yes ? No
Be File System No Partial - read-only ? No No ? No No Yes ? ? ? No
NSS No Yes via EVMS[bw] ? No No ? No No ? ? ? ? No
NWFS Partial (with Novell drivers) ? ? No No ? Yes No ? ? ? ? No
ODS-2
No ? ? No No ? No No ? ? ? ? No
ODS-5
No ? ? No No ? No No ? ? ? ? No
UDF No Yes Yes ? Yes ? Yes ? ? ? Yes ? No
VxFS No Yes ? No No ? No No ? ? Yes ? No
Fossil No Yes[bx] Yes[bx] No No No Yes[bx] No No No Yes[bx] ? No
ZFS No Yes with FUSE[86] or as an external kernel module[87] Yes with Read/Write Developer Preview[88] No Yes[89] No Yes No No No Yes No No
Btrfs No Yes ? No Yes with WinBtrfs[90] ? No ? ? ? ? ? No
Bcachefs No Yes No No No No No No No No No No No
VMFS2
No ? ? No No ? No No ? ? ? ? No
VMFS3
No ? ? No No ? No No ? ? ? ? No
IBM HFS
No No No No No No No No No No No Yes No
IBM zFS
No No No No No No No No No No No Yes No
ReFS No Needs Paragon ReFS for Linux ? No Yes ? ? ? ? ? ? ? No
ISO 9660 Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No
Rock Ridge
No Yes Yes No No No Yes No No Yes Yes ? No
Joliet ("CDFS")
No Yes Yes Yes Yes ? Yes Yes Yes ? Yes ? No
SquashFS No Yes Partial (There are ports of unsquashfs and mksquashfs.) No Partial (There are ports of unsquashfs and mksquashfs.) No Partial (There are ports of unsquashfs and mksquashfs and fusefs-port.[91][92]) No No No No No No
BlueStore/Cephfs No Yes No[by] No No[bz] No No[by] No No No No No No
File system DOS Linux macOS Windows 9x (historic) Windows (current) Classic
Mac OS
FreeBSD OS/2 BeOS Minix
Solaris
z/OS Android

Limits

While storage devices usually have their size expressed in powers of 10 (for instance a 1 

TiB
limit means 240, 10244 bytes. Approximations (rounding down) using power of 10 are also given below to clarify.

File system Maximum filename length Allowable characters in directory entries[ca] Maximum pathname length Maximum file size Maximum volume size[cb] Max number of files
AdvFS 255 characters Any byte except NUL[cc] No limit defined[cd] 16 
TB
)
16 
TB
)
?
APFS
255 UTF-8 characters
Unicode 9.0 encoded in UTF-8[93]
?
EB
)
? 263 [94]
Bcachefs 255 bytes Any byte except '/' and NUL No limit defined 16 
EB
)
16 
EB
)
264
BeeGFS 255 bytes Any byte except NUL[cc] No limit defined[cd] 16 
EB
)
16 
EB
)
?
BFS 255 bytes Any byte except NUL[cc] No limit defined[cd] 12,288
GiB (279.1 GB)[ce]
256 
EB
)
Unlimited
BlueStore/Cephfs 255 characters any byte, except null, "/" No limit defined Max. 264 bytes, 1 TiB (1.099 TB) by default [95] Not limited Not limited, default is 100,000 files per directory [96]
Btrfs 255 bytes Any byte except '/' and NUL No limit defined 16 
EB
)
16 
EB
)
264
CBM DOS
16 bytes Any byte except NUL 0 (no directory hierarchy) 16 
MiB (16.77 MB
)
16 
MiB (16.77 MB
)
?
CP/M file system
8.3 ASCII except for < > . , ; : = ? * [ ] No directory hierarchy (but accessibility of files depends on user areas via USER command since
CP/M 2.2
)
32 
MiB (33.55 MB
)
512 
MiB (536.8 MB
)
?
DECtape 6.3 A–Z, 0–9 DTxN:FILNAM.EXT = 15 369,280 bytes (577 * 640) 369,920 bytes (578 * 640) ?
Disk Operating System (
GEC DOS
)
? ? ? ? at least 131,072 bytes ? ?
Elektronika BK
tape format
16 bytes ? No directory hierarchy 64 
KiB (65.53 KB
)
Not limited. Approx. 800 
KiB (819.2 KB
) (one side) for 90 min cassette
?
exFAT 255 UTF-16 characters Unicode except for control codes 0x0000 - 0x001F or " * / : < > ? \ | [97] 32,760 characters with each path component no more than 255 characters[98] 16 
EB)[98]
64 
ZB) (276 bytes
)
?
ext 255 bytes Any byte except NUL[cc] No limit defined[cd]
GiB (2.147 GB
)
GiB (2.147 GB
)
?
ext2 255 bytes Any byte except NUL, /[cc] No limit defined[cd] 16 
TB)[cb]
TB
)
?
ext3 255 bytes Any byte except NUL, /[cc] No limit defined[cd] 16 
TB)[cb]
TB
)
?
ext4 255 bytes[99] Any byte except NUL, /[cc] No limit defined[cd] 16 
EB
)
232 (static inode limit specified at creation)
F2FS 255 bytes Any byte except NUL, /[cc] No limit defined[cd] 4,228,213,756
TB
)
16 
TB
)
?
FAT (8-bit)
6.3
(binary files) / 9 characters (ASCII files)
ASCII (0x00 and 0xFF not allowed in first character) No directory hierarchy ? ? ?
FAT16
UCS-2 characters with LFN)[cf]
SFN:
OEM A-Z, 0-9, ! # $ % & ' ( ) - @ ^ _ ` { } ~, 0x80-0xFF, 0x20. LFN: Unicode except NUL, " * / : < > ? \ | [ca][cc]
No limit defined[cd] 32 
GiB (4.294 GB))[cg]
MiB (33.55 MB
)
?
FAT16X
UCS-2 characters with LFN)[cf]
SFN:
OEM A-Z, 0-9, ! # $ % & ' ( ) - @ ^ _ ` { } ~, 0x80-0xFF, 0x20. LFN: Unicode except NUL, " * / : < > ? \ | [ca][cf][cc]
No limit defined[cd] 2 (4)
GiB[cg] (2.147 GB
)
16 
GiB (2.147 GB
)
?
FAT32X
UCS-2 characters with LFN)[cf]
SFN:
OEM A-Z, 0-9, ! # $ % & ' ( ) - @ ^ _ ` { } ~, 0x80-0xFF, 0x20. LFN: Unicode except NUL, " * / : < > ? \ | [ca][cf][cc]
32,760 characters with each path component no more than 255 characters[98]
GiB (4.294 GB)[98]
512 
TB)[ch]
?
FATX
42 bytes[cf] ASCII. No limit defined[cd]
GiB (2.147 GB
)
16 
GiB (2.147 GB
)
?
FFS
255 bytes Any byte except NUL[cc] No limit defined[cd]
GiB (4.294 GB
)
256 
TB
)
?
Fossil ? ? ? ? ? ?
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 ? ?
GEMDOS
8.3 A-Z, a-z, 0-9 ! @ # $ % ^ & ( ) + - = ~ ` ; ' " , < > | [ ] ( ) _[102] ? ? ? ?
GFS2
255 bytes Any byte except NUL[cc] No limit defined[cd] 100 
EB)[ci]
100 
EB)[cj]
?
GFS
255 bytes Any byte except NUL[cc] No limit defined[cd]
EB)[ck]
EB)[ck]
?
GPFS
255 UTF-8
codepoints
Any byte except NUL[cc] No limit defined[cd] 9 EiB (10.37 EB) 524,288 
YiB (299 bytes
)
?
HAMMER 1023 bytes[105] Any byte except NUL[cc] ? ? ?
HFS 31 bytes Any byte except : Unlimited
GiB (2.147 GB
)
TB
)
?
HFS Plus 255 UTF-16 characters[cl] Any valid Unicode[cc][cm] Unlimited slightly less than 8 
EB
)
slightly less than 8  ?
High Sierra Format
? ? ? ? ? ?
HPFS 255 bytes Any byte except NUL[cn] No limit defined[cd]
GiB (2.147 GB
)
TB)[co]
?
IBM SFS 8.8 ? ? Non-hierarchical[109] ? ?
ISO 9660:1988
Level 1: 8.3,
Level 2 & 3: ~ 180
Depends on Level[cp] ~ 180 bytes?
TB) (Level 3)[cq]
TB)[cr]
?
ISO 9660:1999
? ? ? ? ? ?
JFS
255 bytes Any Unicode except NUL No limit defined[cd]
PB
)
32 
PB
)
?
JFS1
255 bytes Any byte except NUL[cc] No limit defined[cd]
EB
)
512 
PB
)
?
Joliet ("CDFS")
64 characters All
UCS-2 code except *, /, \, :, ;, and ?[110]
? same as
ISO 9660:1988
same as
ISO 9660:1988
?
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 (235); 206,158,430,208
SIXBIT bytes
Approx 12 
MiB (186.6 MB
))
?
Lustre 255 bytes Any byte except NUL[cc] No limit defined[cd] 16 
EB) on ZFS
16 
EB
)
?
MFS 255 bytes Any byte except : No path (flat filesystem) 256 
MiB (268.4 MB
)
256 
MiB (268.4 MB
)
?
MicroDOS file system 14 bytes ? ? 16 
MiB (16.77 MB
)
32 
MiB (33.55 MB
)
?
Minix V1 FS
14 or 30 bytes, set at filesystem creation time Any byte except NUL[cc] No limit defined[cd] 256.5
MiB (268.9 MB) [cs]
64 
MiB (67.10 MB
)
?
Minix V2 FS
14 or 30 bytes, set at filesystem creation time Any byte except NUL[cc] No limit defined[cd]
GiB (2.147 GB) [cs]
GiB (1.073 GB
)
?
Minix V3 FS
60 bytes Any byte except NUL[cc] No limit defined[cd]
GiB (2.147 GB
)
GiB (4.294 GB
)
?
NILFS 255 bytes Any byte except NUL[cc] No limit defined[cd]
EB
)
EB
)
?
NOVA 255 bytes Any byte except NUL, /[cc] No limit defined[cd] 16 
EB
)
16 
EB
)
?
NSS 256 characters Depends on namespace used[ct] Only limited by client
TB
)
TB
)
?
NTFS 255 characters In
Win32 namespace: any UTF-16 code unit (case-insensitive) except /\:*"?<>| as well as NUL

In POSIX namespace: any UTF-16 code unit (case-sensitive) except / as well as NUL[111]

32,767 characters with each path component (directory or filename) up to 255 characters long[cd] 16 TiB (17.59 TB) to 8 PiB (9.007 PB)[cu][112] 16 TiB (17.59 TB) to 8 PiB (9.007 PB)[cu][112] 232
NWFS 80 bytes[cv] Depends on namespace used[ct] No limit defined[cd]
GiB (4.294 GB
)
TB
)
?
OCFS
255 bytes Any byte except NUL[cc] No limit defined[cd]
TB
)
TB
)
?
OCFS2 255 bytes Any byte except NUL[cc] No limit defined[cd]
PB
)
PB
)
?
ODS-5
236 bytes[cw] ? 4,096 bytes[cx]
TB
)
TB
)
?
QFS 255 bytes Any byte except NUL[cc] No limit defined[cd] 16 
EB)[cy]
PB)[cy]
?
ReFS 255 UTF-16 characters[113] In
Win32 namespace: any UTF-16 code unit (case-insensitive) except /\:*"?<>| as well as NUL

In POSIX namespace: any UTF-16 code unit (case-sensitive) except / as well as NUL[113][114]

32,767 characters with each path component (directory or filename) up to 255 characters long[113] 16  ?
ReiserFS 4,032 bytes/255 characters Any byte except NUL or '/'[cc] No limit defined[cd]
GiB (4.294 GB
) (v3.5)
16 
TB
)
?
Reiser4 3,976 bytes Any byte except / and NUL No limit defined[cd]
TB
) on x86
? ?
Rock Ridge
255 bytes Any byte except NUL or /[cc] No limit defined[cd] same as
ISO 9660:1988
same as
ISO 9660:1988
?
RT-11 6.3 A–Z, 0–9, $ 0 (no directory hierarchy) 33,554,432 bytes (65536 * 512) 33,554,432 bytes ?
SquashFS 256 bytes ? No limit defined 16 
EB
)
16 
EB
)
?
UDF 255 bytes Any Unicode except NUL 1,023 bytes[da] 16 
EB
)
512 
TB
)
?
UFS1
255 bytes Any byte except NUL[cc] No limit defined[cd] 16 
TB
)
16 
EB
)
Subdirectory per directory is 32,767[117]
UFS2
255 bytes Any byte except NUL[cc] No limit defined[cd] 512 
PB
)
512 
ZB)[118] (279 bytes
)
Subdirectory per directory is 32,767[117]
UniFS No limit defined (depends on client) ? No limit defined (depends on client) Available cache space at time of write (depends on platform) No limit defined No limit defined
Version 6 Unix file system (V6FS) 14 bytes Any byte except NUL and /[cc] No limit defined[cd] 16 
MiB (16.77 MB)[db]
32 
MiB (33.55 MB
)
?
Version 7 Unix file system (V7FS) 14 bytes Any byte except NUL or /[cc] No limit defined[cd]
GiB (1.073 GB)[dc]
TB
)
?
VMFS2
128 Any byte except NUL or /[cc] 2,048
TB)[dd]
64 
TB
)
?
VMFS3
128 Any byte except NUL or /[cc] 2,048
TB)[dd]
64 
TB
)
?
VxFS 255 bytes Any byte except NUL[cc] No limit defined[cd] 16 
EB
)
? ?
XFS 255 bytes[de] Any byte except NUL[cc] No limit defined[cd]
EB)[df]
EB)[df]
?
Xiafs 248 bytes Any byte except NUL[cc] No limit defined[cd] 64 
MiB (67.10 MB
)
GiB (2.147 GB
)
?
ZFS 255 bytes Any Unicode except NUL No limit defined[cd] 16 
EB
)
281,474,976,710,656 
YiB (2128 bytes
)
2128
File system Maximum filename length Allowable characters in directory entries[ca] Maximum pathname length Maximum file size Maximum volume size[cb] Max number of files

See also

Notes

  1. OS/2 Warp
    Server for e-Business in 1999. The same sourcebase was also used for release JFS2 on AIX 5L.
  2. 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.
  3. ^ Implemented in later versions as an extension
  4. ^ 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.
  5. ^ 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.
  6. ^ The f-node contains a field for a user identifier. This is not used except by OS/2 Warp Server, however.
  7. Services for UNIX or Cygwin
    .
  8. ^ As of Vista, NTFS has support for Mandatory Labels, which are used to enforce Mandatory Integrity Control.[12]
  9. ^ Initially, ReFS lacked support for ADS, but Server 2012 R2 and up add support for ADS on ReFS
  10. ^ a b c d Access-control lists and MAC labels are layered on top of extended attributes.
  11. UFS1
    with a parallel backing file (e.g., FreeBSD 4.x).
  12. ^ a b c d e f g h i j k l m n 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.
  13. ^ Metadata is mostly checksummed,[13] however Direct/indirect/triple-indirect block maps are not protected by checksums[14]
  14. ^ Creation time stored since June 2015, xfsprogs version 3.2.3
  15. ^
    UTC
    offset, and date are derived from the time settings of the reference/single timesync source in the NDS tree.
  16. ^ 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.
  17. ^
    NDS/eDirectory
    , like file/object permissions, ownership, etc.
  18. ^ Record Management Services (RMS) attributes include record type and size, among many others.
  19. ^ File permission in 9P are a variation of the traditional Unix permissions with some minor changes, e.g. the suid bit is replaced by a new 'exclusive access' bit.
  20. ^ Supported on FreeBSD and Linux implementations, support may not be available on all operating systems.
  21. ^ Solaris "extended attributes" are really full-blown alternate data streams, in both the Solaris UFS and ZFS.
  22. ^ Access times are preserved from the original file system at creation time, but Rock Ridge file systems themselves are read-only.
  23. ^ libburnia can back up and restore ACLs with file system creation and extraction programs, but no kernel support exists.
  24. ^ a b libburnia can back up and restore extended attributes and MAC labels with file system creation and extraction programs, but no kernel support exists.
  25. ^ 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.
  26. ^ 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
  27. ^ Optional journaling of data
  28. ^ As of Windows Vista, NTFS fully supports symbolic links.[15] 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.
  29. ^ a b NTFS stores everything, even the file data, as meta-data, so its log is closer to block journaling.
  30. ^
    Services for Unix
    , that operate directly above the kernel and not on top of Win32 can have case-sensitivity.
  31. ^ Metadata-only journaling was introduced in the Mac OS X 10.2.2 HFS Plus driver; journaling is enabled by default on Mac OS X 10.3 and later.
  32. ^ Although often believed to be case sensitive, HFS Plus normally is not. The typical default installation is case-preserving only. From Mac OS X 10.3 on the command newfs_hfs -s will create a case-sensitive new file system.[17] 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.[18][19]
  33. ^ Mac OS X 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).[20]
  34. softdep) in NetBSD, called "soft updates" in FreeBSD provide meta-data consistency at all times without double writes (journaling
    )
  35. ^ Journaled Soft Updates (SU+J) are the default as of FreeBSD 9.x-RELEASE [22][23]
  36. ^ a b c d e f UDF, LFS, and NILFS are log-structured file systems and behave as if the entire file system were a journal.
  37. ^ Linux kernel versions 2.6.12 and newer.
  38. ^ a b c Off by default.
  39. ^ Full block journaling for ReiserFS was added to Linux 2.6.8.
  40. ^ Optionally no on IRIX and Linux.
  41. ^ 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.
  42. ^ 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.
  43. ^ 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.[26]
  44. ^ a b Available only in the "NFS" namespace.
  45. ^ a b These are referred to as "aliases".
  46. ^ 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.
  47. ^ Btrfs is a transactional filesystem using copy-on-write semantics, guaranteeing an always-consistent on-disk state without the use of a traditional journal. It keeps track of last five transactions and uses checksums to find problematic drives, making write intent logs unnecessary.
  48. ^ Bcachefs is a transactional filesystem using copy-on-write semantics, guaranteeing an always-consistent on-disk state without the use of a traditional journal. Journal commits are fairly expensive operations as they require issuing FLUSH and FUA operations to the underlying devices. By default, a journal flush is issued one second after a filesystem update has been done, which primarily records btree updates ordered by when they occurred. This option may be useful on a personal workstation or laptop, and perhaps less appropriate on a server.
  49. ^ Since Windows 10 Enterprise Insider Preview build 19536
  50. ^ a b A file system is self-healing if its capable to proactively autonomously detect and correct all but grave errors, faults and corruptions online both in internal metadata AND data. See US7694191B1 as example. This usually requires full checksumming as well as internal redundancy as well as corresponding logic.
  51. ^
    DriveSpace 3 compressed volumes[29]
  52. ^ Supported only on Windows Server SKUs. However, partitions deduplicated on Server can be used on Client.
  53. ^ 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.
  54. ^ Reiser4 supports transparent compression and encryption with the cryptcompress plugin which is the default file handler in version 4.1.
  55. ^ VxFS provides an optional feature called "Storage Checkpoints" which allows for advanced file system snapshots.
  56. ^ Applies to proprietary ZFS release 30 and ZFS On Linux. Encryption support is not yet available in all OpenZFS ports.[36][37][38]
  57. ^ LZJB (optimized for performance while providing decent data compression)
    LZ4 (faster & higher ratio than lzjb)
    gzip levels: 1 (fastest) to 9 (best), default is 6
    zstd positive: 1 (fastest) to 19 (best), default is 3
    zstd negative: 1(best & default)-10, 20, 30, …, 100, 500, 1000(fastest)
    zle: compresses runs of zeros.[39]
  58. ^ disabling copy-on-write (COW) to prevent fragmentation also disables data checksumming
  59. ^ zlib levels: 1 to 9, default is 3
    LZO (no levels) faster than ZLIB, worse ratio
    zstd levels: 1 to 15 (higher levels are not available)[40]
  60. ^ none
    CRC-32C (default)
    crc64
    chacha20/poly1305 (When encryption is enabled. Encryption can only be specified for the entire filesystem, not per file or directory)[41]
  61. ^ none (default)
    The three currently supported algorithms are gzip, LZ4, zstd.
    The compression level may also be optionally specified, as an integer between 0 and 15, e.g. lz4:15. 0 specifies the default compression level, 1 specifies the fastest and lowest compression ratio, and 15 the slowest and best compression ratio.[42]
  62. ^ By using the per-file "integrity stream" that internally stores a checksum per cluster. Those per cluster checksums are not accessible so it is actually a per file feature and not a per block feature. Integrity streams are not enabled by default.
  63. ^ a b c Some file system creation implementations reuse block references and support deduplication this way. This is not supported by the standard, but usually works well due to the file system's read-only nature.
  64. ^ a b c d With software based on GNU Parted.
  65. ^
    UFS2
    is read-only.
  66. ^ Only for "stuffed" inodes
  67. ^ a b c d Other block:fragment size ratios supported; 8:1 is typical and recommended by most implementations.
  68. ^ a b c Fragments were planned, but never actually implemented on ext2 and ext3.
  69. ^ Stores one largest extent in disk, and caches multiple extents in DRAM dynamically.
  70. ^ a b Tail packing is technically a special case of block suballocation where the suballocation unit size is always 1 byte.
  71. ^ In "extents" mode.
  72. ^ 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.
  73. ^ Depends on UDF implementation.
  74. ^ a b c ISO 9660 Level 3 only
  75. ^ Supported using only EVMS; not currently supported using LVM
  76. ^ a b c d Provided in Plan 9 from User Space
  77. ^ a b FUSE based driver available that can eliminate need for iSCSI gateways or SMB shares, but the physical backend store BlueStore only runs on Linux.
  78. ^ Filesystem driver "Dokany" available that can eliminate need for iSCSI gateways or SMB shares, but the physical backend store BlueStore only runs on Linux.
  79. ^
    UCS-2 Unicode except \ / : ? * " > < | and NUL are allowed in file and directory names across all filesystems. Unix-like
    systems disallow the characters / and NUL in file and directory names across all filesystems.
  80. ^
    KiB (32.76 KB
    )).
  81. ^ 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 ai aj ak al 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.
  82. ^
    6.0) or full pathnames longer than 66 bytes for FAT, or 255 characters for LFNs. Windows NT does not support full pathnames longer than 32,767 bytes for NTFS. Older POSIX APIs which rely on the PATH_MAX constant have a limit of 4,096 bytes on Linux but this can be worked around. Linux itself has no hard path length limits.[119][120]
  83. ^ Varies wildly according to block size and fragmentation of block allocation groups.
  84. ^
    COM1
    , etc.) should be avoided, as some operating systems (notably DOS, OS/2 and Windows) reserve them.
  85. ^
    GiB (4.294 GB
    ), but practical file size is limited by volume size.
  86. GiB (34.35 GB). 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.[101]
  87. ^ Depends on CPU arch. For 32bit kernels the max is 16 TiB (17.59 TB). [103]
  88. ^ Depends on CPU arch. For 32bit kernels the max is 16 TiB (17.59 TB). [104]
  89. ^ a b Depends on kernel version and arch. For 2.4 kernels the max is 2 TiB (2.199 TB). For 32-bit 2.6 kernels it is 16 TiB (17.59 TB). For 64-bit 2.6 kernels it is 8 EiB (9.223 EB).
  90. ^ The "classic" 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.
  91. ^ 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.
  92. ^ 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.
  93. GiB (68.71 GB
    ).
  94. ^ ISO 9660#Restrictions
  95. ^ 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.
  96. ^ a b Sparse files can be larger than the file system size, even though they can't contain more data.
  97. ^ a b NSS allows files to have multiple names, in separate namespaces.
  98. ^
    TB
    ) respectively; in Windows 10 version 1709, the limit is 8 PiB (9.007 PB) when using 2 MiB (2.097 MB) cluster size.
  99. ^ 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.
  100. ^ Maximum combined filename/filetype length is 236 bytes; each component has an individual maximum length of 255 bytes.
  101. ^ Maximum pathname length is 4,096 bytes, but quoted limits on individual components add up to 1,664 bytes.
  102. ^ 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.
  103. EB), but "page cache limits this to 8 Ti on architectures with 32 bit int"[116]
  104. ^ This restriction might be lifted in newer versions.
  105. ^ The file size in the inode is 1 8-bit byte followed by 1 16-bit word, for 24 bits. 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 MB.
  106. GiB (4.294 GB
    ).
  107. ^ 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.
  108. ^ Note that the filename can be much longer XFS#Extended attributes
  109. ^
    TB). This limitation is not present under IRIX
    .

References

  1. ^ Shustek, Len (2016-08-02). "In His Own Words: Gary Kildall". Remarkable People. Computer History Museum.
  2. ^ Kildall, Gary Arlen (2016-08-02) [1993]. Kildall, Scott; Kildall, Kristin (eds.). "Computer Connections: People, Places, and Events in the Evolution of the Personal Computer Industry" (Manuscript, part 1). Kildall Family. Retrieved 2016-11-17.
  3. ^ Mace, Scott (1986-09-22). "Extensions to MS-DOS Run CD-ROM". InfoWorld. 8 (38): 1, 8. Retrieved 2016-11-09.
  4. ^ Warren, David (20 October 1993). "Polycenter File System - - HELP". Archived from the original on 9 March 2012.
  5. ^ "Sun Microsystems Expands High Performance Computing Portfolio with Definitive Agreement to Acquire Assets of Cluster File Systems, Including the Lustre File System" (Press release). Santa Clara, Calif.: Sun Microsystems, Inc. 12 September 2007. Archived from the original on 2 October 2007.
  6. Matthew Dillon (2018-12-09). "hammer2/DESIGN". BSD Cross Reference. DragonFly BSD
    . Retrieved 2019-03-06.
  7. ^ "Huawei announces the EROFS Linux file system intended for Android devices". XDA Developer. June 1, 2018.
  8. ^ "RT–11 Volume and File Formats Manual" (PDF). Digital Equipment Corporation. August 1991. pp. 1–26 .. 1–32.
  9. ^ "RT–11 Volume and File Formats Manual" (PDF). Digital Equipment Corporation. August 1991. pp. 1–4 .. 1–12.
  10. ^ "Format of the Unix 6 file system" (PDF). Archived from the original (PDF) on 2016-09-21. Retrieved 2016-02-21.
  11. ^ See dinode structure on page 355 (FILESYS(5)) of "Unix Programmers Manual" (PDF) (Seventh ed.). Murray Hill, New Jersey: Bell Telephone Laboratories. January 1979. Retrieved 2016-02-21.
  12. ^ "Mandatory Integrity Control". Microsoft Docs. 25 March 2021. Retrieved 2022-08-14.
  13. ^ "Ext4 Disk Layout".
  14. ^ "Ext4 Metadata Checksums".
  15. ^ Mark Russinovich (February 2007). "Windows Administration: Inside the Windows Vista Kernel: Part 1". TechNet.
  16. ^ Siracusa, John (2011-07-20). "Mac OS X 10.7 Lion: the Ars Technica review". Ars Technica. Retrieved 14 December 2017. To keep track of hard links, HFS+ creates a separate file for each hard link inside a hidden directory at the root level of the volume.
  17. ^ newfs_hfs(8) – Darwin and macOS System Manager's Manual
  18. ^ "File System Comparisons". Apple. Archived from the original on 2008-10-06. (hasn't been updated to discuss HFSX)
  19. ^ "Technical Note TN1150: HFS Plus Volume Format". Apple. (Very technical overview of HFS Plus and HFSX.)
  20. ^ "fslogger". Archived from the original on 2008-09-18. Retrieved 2006-08-03.
  21. ^ McKusick, Marshall Kirk; Roberson, Jeff. "Journaled Soft-updates" (PDF).
  22. ^ "NewFAQs - FreeBSD Wiki".
  23. ^ "FreeBSD 9.0-RELEASE Announcement".
  24. ^ "EXT4 Case-Insensitive Directories/File-Name Lookups Coming With Linux 5.2".
  25. ^ "2. High Level Design — The Linux Kernel documentation § 2.10. Inline Data". www.kernel.org. Retrieved 2022-12-24.
  26. ^ "Filesystem Events tracked by NSure".
  27. ^ "Universal Disk Format Specification – Revision 2.60" (PDF). p. 34. This file, when small, can be embedded in the [Information Control Block] that describes it.
  28. ^ "clonefile(2)". The cloned file dst shares its data blocks with the src file [..]
  29. ^ a b c "DMSDOS CVF module" (dmsdoc.doc). 0.9.2.0. 1998-11-19. Archived from the original on 2016-11-02. Retrieved 2016-11-01. Usually all data for one cluster are stored in contiguous sectors, but if the filesystem is too fragmented there may not be a 'free hole' that is large enough for the data. […] Drivespace 3 and Stacker know a hack for that situation: they allow storing the data of one cluster in several fragments on the disk.
  30. ^ "About Data Deduplication". 31 May 2018.
  31. ^ "Ext4 encryption".
  32. ^ a b "Red Hat: What is bitrot?".
  33. ^ "F2FS encryption".
  34. ^ "mkfs.xfs(8) from xfsprogs 5.10.0-4". By default, mkfs.xfs [..] will enable the reflink [=deduplication] feature.
  35. ^ "JFS data compression". IBM. Retrieved 2020-07-26.
  36. ^ Moffat, Darren (July 2012). "How to Manage ZFS Data Encryption". Retrieved 2022-08-14.
  37. ^ "Release zfs-0.8.0". GitHub. 2020-01-21.
  38. ^ "Feature Flags - OpenZFS".
  39. ^ "zfsprops.7 — OpenZFS documentation". GitHub. 2023-08-26. Retrieved 2023-09-14.
  40. ^ "Compression — BTRFS documentation". GitHub. 2023-07-26. Retrieved 2023-09-14.
  41. ^ a b Overstreet, Kent (18 Dec 2021). "bcachefs: Principles of Operation" (PDF). Retrieved 10 May 2023.
  42. ^ "bcachefs/ Compression". 11 Sep 2023. Retrieved 14 Jan 2024.
  43. ^ "IBM's Journaled File System (JFS) for Linux".
  44. ^ "Growing an XFS File System".
  45. ^ a b "Shrinking Support - xfs.org". XFS Wiki. 2022-07-17. Archived from the original on 2022-07-17. Retrieved 2022-12-18.
  46. ^ "Frequently Asked Questions (Old Wiki)". Retrieved 5 May 2018.
  47. ^ "Kernel/Git/Jaegeuk/F2fs-tools.git - Userland tools for the f2fs filesystem".
  48. ^ "ntfsresize(8)".
  49. ^ a b c resize2fs(8) – Linux Programmer's Manual – Administration and Privileged Commands
  50. ^ "Resizing File Systems".
  51. ^ "Resize reiserfs". Reiserfs wiki.
  52. ^ "Just Enough Operating System (JeOS): Technical Information | SUSE". www.suse.com. Retrieved 28 April 2018.
  53. ^ "nilfs-resize(8)".
  54. ^ Mirror and single-disk vdevs can be wholly removed from a pool, but not RAID-Z vdevs. "OpenZFS 7614 - zfs device evacuation/removal". GitHub.
  55. ^ "Resizing and Growing Disks".
  56. ZDNet
    .
  57. ^ "Apple File System Guide - FAQ".
  58. ^ a b "CVF Region: MDFAT".
  59. ^ a b "Mapping DOS FAT to MDFAT".
  60. ^ "[base] Revision 216796".
  61. ^ "Newfs(8)".
  62. ^ Jaeguk Kim (2014-09-22). "[PATCH 2/3] f2fs: Introduce FITRIM in f2fs_ioctl". linux-kernel (Mailing list).
  63. ^ "Reiser4 discard support". Reiser4 FS Wiki.
  64. ^ "XFS Adds Shared Data Extents For Linux 4.9".
  65. ^ Android Kernel File System Support (Documentation). Android Open Source Project. Retrieved 2023-01-11.
  66. ^ "GitHub - sgan81/Apfs-fuse: FUSE driver for APFS (Apple File System)". GitHub. 2020-01-18.
  67. ^ "APFS module for linux, with experimental write support. This tree is just for development, please use linux-apfs-oot instead.: Linux-apfs/Linux-apfs". GitHub. 2019-12-14.
  68. ^ Namjae Jeon (20 January 2020). "[PATCH v12 00/13] add the latest exfat driver". linux-kernel (Mailing list). Retrieved 18 December 2021.
  69. ^ "NTFS3 Pull Request acceptance".
  70. ^ a b "Paragon HFS+ for Windows 10".
  71. ^ "Porting an Ancient Filesystem to Modern Linux". Time To Pull The Plug. Archived from the original on 2017-06-21. Retrieved 2016-04-22.
  72. ^ "A port of the xiafs filesystem to modern Linux kernels". Github (cdtk). 2019-06-28.
  73. ^ a b c "Paragon ExtFS for Mac".
  74. ^ a b "Explore2fs". chrysocome.net.
  75. ^ a b "Paragon ExtFS for Windows".
  76. ^ a b "FAQ". Ext2 Installable File System For Windows. (Provides kernel level read/write access to Ext2 and Ext3 volumes in Windows NT4, 2000, XP and Vista.)
  77. ^ a b Branten, Bo. "Ext2Fsd Project: Open source ext3/4 file system driver for Windows (2K/XP/WIN7/WIN8)". Archived from the original on 2012-07-23. Retrieved 2012-07-24.
  78. ^ a b "FreeBSD Handbook".
  79. ^ Hanselman, Scott (2021-11-02). "WSL2 can now mount Linux ext4 disks directly". Newsletter of Wonderful Things. Retrieved 2023-10-01.
  80. ^ Microsoft Corp. (2023-07-17). "Windows technical documentation: Windows development environment: Windows Subsystem for Linux". Microsoft Learn (published 2021-12-09). Archived from the original on 2021-12-27. Retrieved 2023-10-01.
  81. ^ "Lustre Wiki".
  82. ^ "FreeBSD 10.4 MAN page - reiserfs". www.freebsd.org. Retrieved 2019-08-05.
  83. ^ "FreeBSD 11 and Reiserfs". www.linuxquestions.org. 2016-12-19. Retrieved 2019-08-05.
  84. ^ "'svn commit: r300062 - in head/sys: gnu/fs modules modules/reiserfs' - MARC". marc.info. Retrieved 2019-08-05.
  85. ^ "About Shared File Systems and the Linux Client - Sun QFS and Sun Storage Archive Manager 5.3 Installation Guide". Retrieved 2016-03-14.
  86. ^ "ZFS Filesystem for FUSE/Linux". Wizy Wiki. 30 November 2009. Archived from the original on 13 May 2013.
  87. ^ "ZFS on Linux". Lawrence Livermore National Laboratory.
  88. ^ Kim, Arnold (4 October 2007). "Apple Seeds ZFS Read/Write Developer Preview 1.1 for Leopard". Mac Rumors.
  89. ^ "OpenZFS on Windows".
  90. ^ "WinBtrfs". Github (maharmstone). 2020-11-22.
  91. ^ "squashfs-tools". Freshports.
  92. ^ "fusefs-squashfuse". Freshports.
  93. ^ "Frequently Asked Questions".
  94. ^ "Volume Format Comparison".
  95. ^ "CephFS Maximum File Sizes and Performance".
  96. ^ "CephFS Directory Fragmentation".
  97. ^ "ExFAT: File Name Directory Entry".
  98. ^ a b c d "File System Functionality Comparison". Microsoft Docs. Microsoft. 2021-01-07. Retrieved 2022-08-14.
  99. ^ Vimal A.R (16 July 2016). "Max file-name length in an EXT4 file system". arvimal.blog. Archived from the original on 28 February 2021.
  100. ^ "Interviews/EricSandeen". Fedora Project Wiki. 9 June 2008.
  101. ^ "Limitations of the FAT32 File System in Windows XP". Microsoft. Archived from the original on 2014-03-30.
  102. ^ "GEMDOS Overview".
  103. ^ "What are the file and file system size limitations for Red Hat Enterprise Linux?". Red Hat. 2023-03-21.
  104. ^ "What are the file and file system size limitations for Red Hat Enterprise Linux?". Red Hat. 2023-03-21.
  105. ^ Matthew Dillon. "HAMMER2 Design Document". we can allow filenames up to 1023 bytes long
  106. ^ Matthew Dillon (June 21, 2008). "The HAMMER Filesystem" (PDF).
  107. ^ "Mac OS X: Mac OS Extended format (HFS Plus) volume and file limits". support.apple.com. July 26, 2016. Archived from the original on 2019-04-08.
  108. ^ "Mac OS 8, 9: Mac OS Extended Format - Volume and File Limits". support.apple.com. February 20, 2012.
  109. ^ "SFS file system". www.ibm.com. 2015-06-03. Archived from the original on 2022-09-13. Retrieved 2022-09-13.
  110. ^ "Joliet Specification". 22 May 1995. Archived from the original on 14 April 2009.
  111. ^ Russon, Richard; Fledel, Yuval. "NTFS Documentation" (PDF).
  112. ^ a b "NTFS overview". Microsoft Docs. 2022-05-26. Archived from the original on 2022-05-26. Retrieved 2022-06-05.
  113. ^ a b c d e Steven Sinofsky (January 16, 2012). "Building the next generation file system for Windows: ReFS".
  114. ^ Amigo (2015-04-02). "Invalid Characters in File Names". Amigo's Technical Notes. Retrieved 2020-10-20.
  115. ^ "Resilient File System (ReFS) overview". Microsoft Docs. Retrieved 2017-11-07.
  116. ^ "FAQ". namesys. 15 October 2003. Archived from the original on 19 July 2006.
  117. ^ a b "Maximum Number of UFS Subdirectories". Oracle. Retrieved 2019-02-12.
  118. ^ "Frequently Asked Questions for FreeBSD 9.X and 10.X". FreeBSD Documentation Project. Retrieved 2016-03-20. If there was not a fsck(8) memory limit the maximum filesystem size would be 2 ^ 64 (blocks) * 32 KiB (32.76 KB) => 16 Exa * 32 KiB (32.76 KB) => 512 ZettaBytes.
  119. ^ "PATH_MAX Is Tricky". Evan Klitzke’s web log.
  120. ^ "PATH_MAX simply isn't". Insane Coding. 2007-11-03.

External links