Comparison of file systems

Last updated

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

Contents

General information

File systemCreatorYear of introductionOriginal operating system
DECtape DEC 1964PDP-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 1973Core 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) Microsoft (Marc McDonald) for NCR 1977 Microsoft Standalone Disk BASIC-80 (later 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 QDOS/86-DOS (later IBM PC DOS 1.0)
ProDOS Apple 1980 Apple SOS (later 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 PC DOS 3.0, MS-DOS 3.0
MFS Apple 1984 System 1
Elektronika BK tape formatNPO "Scientific centre" (now Sitronics)1985 Vilnius Basic, BK monitor program
HFS Apple 1985 System 2.1
Amiga OFS 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 Ecma International, ISO 1988 MS-DOS, "classic" Mac OS, and AmigaOS
HPFS IBM & Microsoft 1989 OS/2 1.2
Rock Ridge IEEE c.1990 Unix
JFS1 IBM 1990 AIX [lower-alpha 1]
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 Linux, Hurd
Xiafs Q. Frank Xia1993 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 Microsoft Windows, Linux, "classic" Mac OS, and FreeBSD
UDF ISO/ECMA/OSTA 1995
FAT32, FAT32X Microsoft 1996 MS-DOS 7.10 / Windows 95 OSR2 [lower-alpha 2]
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)PolyServe1998 Windows, Linux
ODS-5 DEC 1998 OpenVMS V7.2
WAFL NetApp 1998 Data ONTAP
ext3 Stephen Tweedie 1999 Linux
ISO 9660:1999 Ecma International, ISO 1999 Microsoft Windows, Linux, "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 Lougher2002 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 various2006 Linux
exFAT Microsoft 2006 Windows CE 6.0
Btrfs Chris Mason2007 Linux
JXFS Hyperion Entertainment 2008 AmigaOS 4.1
HAMMER Matthew Dillon 2008 DragonFly BSD 2.0
LSFS StarWind Software 2009 Linux, FreeBSD, Windows
UniFS Nasuni 2009Cloud
CASL Nimble Storage 2010 Linux
OrangeFS Omnibond and others2011 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 Overstreet2015 Linux
APFS Apple 2016 macOS High Sierra, 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 systemStores file owner POSIX file permissionsCreation timestampsLast access/ read timestampsLast metadata change timestampsLast archive timestamps Access control lists Security/ MAC labels Extended attributes/ Alternate data streams/ forks Metadata checksum/ ECC File system
Bcachefs YesYesYesYesYesNoYesYesYesYes Bcachefs
BeeGFS YesYesNoYesYesNoYes ?YesYes BeeGFS
CP/M file system NoNoYes [lower-alpha 3] NoNoNoNoNoNoNo CP/M file system
DECtape [8] NoNoYesNoNoNoNoNoNoNo DECtape
Elektronika BK tape formatNoNoNoNoNoNoNoNoNoYes Elektronika BK
Level-DYesYesYesYes (date only)YesYesYes (FILDAE)NoNoNoLevel-D
RT-11 [9] NoNoYes (date only)NoNoNoNoNoNoYes RT-11
Version 6 Unix file system (V6FS) [10] YesYesNoYesNoNoNoNoNoNoVersion 6 Unix file system (V6FS)
Version 7 Unix file system (V7FS) [11] YesYesNoYesNoNoNoNoNoNoVersion 7 Unix file system (V7FS)
exFAT NoNoYesYesNoNoNoNoNoNo exFAT
FAT12/FAT16/FAT32 NoNoYesYesNo [lower-alpha 4] NoNoNoNo [lower-alpha 5] No FAT12/FAT16/FAT32
HPFS Yes [lower-alpha 6] NoYesYesNoNoNo ?YesNo HPFS
NTFS YesYes [lower-alpha 7] YesYesYesNoYesYes [lower-alpha 8] YesNo NTFS
ReFS YesYesYesYesYesNoYes ?Yes [lower-alpha 9] Yes ReFS
HFS NoNoYesNoNoYesNoNoYesNo HFS
HFS Plus YesYesYesYesYesYesYes ?YesNo HFS Plus
FFS YesYesNoYesYesNoNoNoNoNo FFS
UFS1 YesYesNoYesYesNoYes [lower-alpha 10] Yes [lower-alpha 10] No [lower-alpha 11] No UFS1
UFS2 YesYesYesYesYesNoYes [lower-alpha 10] Yes [lower-alpha 10] YesPartial UFS2
HAMMER YesYesYesYesYes ?YesYesNoYes HAMMER
LFS YesYesNoYesYesNoNoNoNoNo LFS
ext YesYesNoNoNoNoNoNoNoNo ext
Xiafs YesYesNoYesYesNoNoNoNoNo Xiafs
ext2 YesYesNoYesYesNoYes [lower-alpha 12] Yes [lower-alpha 12] YesNo ext2
ext3 YesYesNoYesYesNoYes [lower-alpha 12] Yes [lower-alpha 12] YesNo ext3
ext4 YesYesYesYesYesNoYes [lower-alpha 12] Yes [lower-alpha 12] YesPartial [lower-alpha 13] ext4
NOVA YesYesYesYesYesNoNoNoNoYes NOVA
Lustre YesYesNoYesYesNoYesYesYesNo Lustre
F2FS YesYesYesYesYesNoYes [lower-alpha 12] Yes [lower-alpha 12] YesNo F2FS
GPFS YesYesYesYesYesNoYesYesYesYes GPFS
GFS YesYesNoYesYesNoYes [lower-alpha 12] Yes [lower-alpha 12] YesNo GFS
NILFS YesYesYesNoYesNoNoNoNoYes NILFS
ReiserFS YesYesNoYesYesNoYes [lower-alpha 12] Yes [lower-alpha 12] YesNo ReiserFS
Reiser4 YesYesNoYesYesNoNoNoNoNo Reiser4
OCFS NoYesNoNoYesYesNoNoNoNo OCFS
OCFS2 YesYesNoYesYesNoNoNoNoNo OCFS2
XFS YesYesPartial [lower-alpha 14] YesYesNoYesYes [lower-alpha 12] YesYes XFS
JFS YesYesYesYesYesNoYesYesYesNo JFS
QFS YesYesYesYesYesYesYesNoYesNo QFS
BFS YesYesYesNoNoNoNoNoYesNo BFS
AdvFS YesYesNoYesYesNoYesNoYesNo AdvFS
NSS YesYesYes [lower-alpha 15] Yes [lower-alpha 15] YesYes [lower-alpha 15] Yes ?Yes [lower-alpha 16] [lower-alpha 17] No NSS
NWFS Yes ?Yes [lower-alpha 15] Yes [lower-alpha 15] YesYes [lower-alpha 15] Yes ?Yes [lower-alpha 16] [lower-alpha 17] No NWFS
ODS-5 YesYesYes ? ?YesYes ?Yes [lower-alpha 18] No ODS-5
APFS YesYesYesYesYesYesYesYesYesYes APFS
VxFS YesYesYesYesYesNoYes ?Yes [lower-alpha 12] No VxFS
UDF YesYesYesYesYesYesYesNoYesYes UDF
Fossil YesYes [lower-alpha 19] NoYesYesNoNoNoNoNo Fossil
ZFS YesYesYesYesYesYesYesYes [lower-alpha 20] Yes [lower-alpha 21] Yes ZFS
Btrfs YesYesYesYesYesNoYesYesYesYes Btrfs
Minix V1 YesYesNoNoNoNoNoNoNoNo Minix V1
Minix V2 YesYesNoYesYesNoNoNoNoNo Minix V2
Minix V3 YesYesNoYesYesNoNoNoNoNo Minix V3
VMFS2 YesYesNoYesYesNoNoNoNoNo VMFS2
VMFS3 YesYesNoYesYesNoNoNoNoNo VMFS3
ISO 9660:1988 NoNoYesNoNoNoNoNoNoNo ISO 9660:1988
Rock Ridge YesYesNoYes [lower-alpha 22] YesNoNo [lower-alpha 23] No [lower-alpha 24] No [lower-alpha 24] No Rock Ridge
Joliet ("CDFS") NoNoYesNoNoNoNoNoNoNo Joliet ("CDFS")
ISO 9660:1999 NoNoYesNoNoNoNoNoNoNo ISO 9660:1999
High Sierra NoNoYesNoNoNoNoNoNoNo High Sierra
SquashFS YesYesNoNoYesNoNoYesYesNo SquashFS
BlueStore/Cephfs YesYesYesYes ?NoYesYesYesYes BlueStore/Cephfs
File systemStores file owner POSIX file permissionsCreation timestampsLast access/read timestampsLast metadata change timestampsLast archive timestamps Access control lists Security/ MAC labels Extended attributes/ 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 NoNoNoNoNoNoNoNo ?
BeeGFS NoYesYesYesYesYesNoNo ?
Level-DNoNoNoNoNoNoNoNo ?
RT-11 NoNoNoNoNoNoNoNo ?
APFS YesYes ? ?OptionalYes ? ? ?
Version 6 Unix file system (V6FS)YesNoNoNoYesYesNoNoNo
Version 7 Unix file system (V7FS)YesNo [lower-alpha 25] NoNoYesYesNoNoNo
exFAT NoNoNoPartial (with TexFAT only)NoYesNoNoNo
FAT12 NoNoNoPartial (with TFAT12 only)NoPartial (with VFAT LFNs only)NoNoNo
FAT16  / FAT16B  / FAT16X NoNoNoPartial (with TFAT16 only)NoPartial (with VFAT LFNs only)NoNoNo
FAT32  / FAT32X NoNoNo?Partial (with TFAT32 only)NoPartial (with VFAT LFNs only)NoNoNo
GFS YesYes [lower-alpha 26] YesYes [lower-alpha 27] YesYesNoNo ?
HPFS NoNoNoNoNoYesNoNo ?
NTFS YesYes [lower-alpha 28] No [lower-alpha 29] Yes [lower-alpha 29] (2000)Yes [lower-alpha 30] YesYes ? Yes (approximately 700 bytes)
HFS Plus Yes [16] YesNoYes [lower-alpha 31] Optional [lower-alpha 32] YesYes [lower-alpha 33] No ?
FFS YesYesNoNoYesYesNoNoNo
UFS1 YesYesNoNoYesYesNoNoNo
UFS2 YesYesNoYes [lower-alpha 34] [21] [lower-alpha 35] YesYesNo ?No
HAMMER YesYesYesYesYesYes ?No ?
LFS YesYesYes [lower-alpha 36] NoYesYesNoNo ?
ext YesYesNoNoYesYesNoNo ?
Xiafs YesYesNoNoYesYesNoNo ?
ext2 YesYesNoNoYesYesNoYes [lower-alpha 37]  ?
ext3 YesYesYes (2001) [lower-alpha 38] Yes (2001)YesYesNoYes ?
ext4 YesYesYes [lower-alpha 38] YesYes, optional [24] YesNoYesYes (approximately 160 bytes) [25]
NOVA YesYesNoYesYesYesNoYes ?
F2FS YesYesYes [lower-alpha 36] NoYesYesNoNo ?
Lustre YesYesYes [lower-alpha 38] YesYesYesYesNo ?
NILFS YesYesYes [lower-alpha 36] NoYesYesNoNo ?
ReiserFS YesYesYes [lower-alpha 39] YesYesYesNo ? ?
Reiser4 YesYesYesNoYesYesNo ? ?
OCFS NoYesNoNoYesYesNoNo ?
OCFS2 YesYesYesYesYesYesNoNo ?
XFS YesYesYesYesYes [lower-alpha 40] YesYes ? ?
JFS YesYesYesYes (1990)Yes [lower-alpha 41] YesNo ? ?
QFS YesYesNoYesYesYesNoNo ?
BFS YesYesNoYesYesYes ?No ?
NSS YesYes ?YesYes [lower-alpha 42] Yes [lower-alpha 42] Yes [lower-alpha 43] No ?
NWFS Yes [lower-alpha 44] Yes [lower-alpha 44] NoNoYes [lower-alpha 42] Yes [lower-alpha 42] Yes [lower-alpha 43] No ?
ODS-2 YesYes [lower-alpha 45] NoYesNoNoYesNo ?
ODS-5 YesYes [lower-alpha 45] NoYesNoYesYes ? ?
UDF YesYesYes [lower-alpha 36] Yes [lower-alpha 36] YesYesNoYesYes [27]
VxFS YesYesYesNoYesYesYes ? ?
Fossil NoNoNoNoYesYesYesNo ?
ZFS YesYesYes [lower-alpha 46] No [lower-alpha 46] YesYesNoNo ?
Btrfs YesYesYes [lower-alpha 47] NoYesYes ? ? ?
Bcachefs YesYesYes [lower-alpha 48] NoYesYes ? ? ?
Minix V1 YesYesNoNoYesYesNoNo ?
Minix V2 YesYesNoNoYesYesNoNo ?
Minix V3 YesYesNoNoYesYesNoNo ?
VMFS2 YesYesNoYesYesYesNoNo ?
VMFS3 YesYesNoYesYesYesNoNo ?
ReFS Yes [lower-alpha 49] Yes ? ?Yes [lower-alpha 30] Yes ? ? ?
ISO 9660 NoNoNoNoNoNoNoNo ?
Rock Ridge YesYesNoNoYesYesNoNo ?
Joliet ("CDFS") NoNoNoNoNoYesNoNo ?
SquashFS YesYesNoNoYesYesNoNo ?
BlueStore/Cephfs YesYesYesYesYesYesNoNo ?
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 (LVM, integritysetup, cryptsetup) or Windows (Volume Shadow Copy Service, SECURITY), etc.

File systemInternal snapshotting / branching Encryption Deduplication Data checksum/ ECC Persistent Cache Multiple Devices Compression Self-healing [lower-alpha 50]
DECtape NoNoNoNoNoNoNoNo
BeeGFS NoNoYesNoNoNoYesNo
Level-DNoNoNoNoNoNoNoNo
RT-11 NoNoNoNoNoNoNoNo
APFS YesYesYes [28] NoNoNoYesNo
Version 6 Unix file system (V6FS)NoNoNoNoNoNoNoNo
Version 7 Unix file system (V7FS)NoNoNoNoNoNoNoNo
exFAT NoNoNoNoNoNoNoNo
FAT12 NoNoNoNoNoNoPartial [lower-alpha 51] No
FAT16  / FAT16B  / FAT16X NoNoNoNoNoNoPartial [lower-alpha 51] No
FAT32  / FAT32X NoNoNoNoNoNoNoNo
GFS NoNo ?NoNoNoNoNo
HPFS  ?No ?NoNoNoNoNo
NTFS NoYesYes [lower-alpha 52] [30] NoNoNoYesNo
HFS Plus NoNo [lower-alpha 53] NoNoNoNoNoNo
FFS NoNoNoNoNoNoNoNo
UFS1 NoNoNoNoNoNoNoNo
UFS2 YesNoNoNoNoNoNoNo
HAMMER YesNoYesYesNoNoNoNo
LFS YesNoNoNoNoNoNoNo
ext NoNoNoNoNoNoNoNo
Xiafs NoNoNoNoNoNoNoNo
ext2 NoNoNoNoNoNoNoNo
ext3 NoNoNoNoNoNoNoNo
ext4 NoYes, experimental [31] NoNo [32] NoNoNoNo
NOVA YesNoNoYesNoNoNo ?
F2FS NoYes, experimental [33] NoNoNoNoYesNo
Lustre NoNoNoNoYesYesNoNo
NILFS Yes, continuous [lower-alpha 36] NoNoYesNoNoNoNo
ReiserFS NoNoNoNoNoNoNoNo
Reiser4  ?Yes [lower-alpha 54]  ?NoNoNoYesNo
OCFS NoNoNoNoNoNoNoNo
OCFS2 NoNoNoNoNoNoNoNo
XFS NoNoYes [34] No [32] NoNoNoNo
JFS  ?No ?NoNoNoonly in JFS1 on AIX [35] No
QFS NoNoNoNoNoNoNoNo
BFS NoNoNoNoNoNoNoNo
NSS YesYes ?NoNoNoYesNo
NWFS  ?No ?NoNoNoYesNo
ODS-2 YesNoNoNoNoNoNoNo
ODS-5 YesNoNoNoNoNoNo
UDF NoNoNoNoNoNoNoNo
VxFS Yes [lower-alpha 55] NoYesNoNoNoNoNo
Fossil YesNoYesNoNoNoYesNo
ZFS YesYes [lower-alpha 56] YesYesYesYesYes [lower-alpha 57] Yes
Btrfs YesNoYesYes [lower-alpha 58] NoYesYes [lower-alpha 59] Yes
Bcachefs YesYesNoYes [lower-alpha 60] NoYesYes [lower-alpha 61] No
Minix V1 NoNoNoNoNoNoNoNo
Minix V2 NoNoNoNoNoNoNoNo
Minix V3 NoNoNoNoNoNoNoNo
VMFS2 NoNoNoNoNoNoNoNo
VMFS3 NoNoNoNoNoNoNoNo
ReFS  ?NoYesYes [lower-alpha 62] NoNoNoYes
ISO 9660 NoNoNo [lower-alpha 63] NoNoNoNoNo
Rock Ridge NoNoNo [lower-alpha 63] NoNoNoNoNo
Joliet ("CDFS") NoNoNo [lower-alpha 63] NoNoNoNoNo
SquashFS NoNoYesYesNoNoYesNo
BlueStore/Cephfs YesNoNoYesYesYesYesYes
File systemInternal snapshotting / branching Encryption Deduplication Data checksum/ ECC Persistent Cache Multiple Devices Compression Self-healing [lower-alpha 50]

Resize capabilities

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

File systemHost OSOffline growOnline growOffline shrinkOnline shrinkAdd and remove physical volumes
FAT16  / FAT16B  / FAT16X misc.Yes [lower-alpha 64] NoYes [lower-alpha 64] NoNo
FAT32  / FAT32X misc.Yes [lower-alpha 64] NoYes [lower-alpha 64] NoNo
exFAT misc.NoNoNoNoNo
NTFS WindowsYesYesYesYesNo
ReFS Windows ?Yes ?NoNo
HFS macOSNoNoNoNoNo
HFS+ macOSNoYesNoYesNo
APFS macOS ? ? ? ? ?
SquashFS LinuxNoNoNoNoNo
NOVA LinuxNoNoNoNoNo
JFS [43] LinuxYesNoNoNoNo
XFS [44] LinuxNoYesNo [45] No [45] No
Lustre [46] Linux ?YesNoNoYes
F2FS [47] LinuxYesNoNoNoNo
NTFS [48] LinuxYesNoYesNoNo
ext2 [49] LinuxYesNoYesNoNo
ext3 [49] LinuxYesYesYesNoNo
ReiserFS [50] LinuxYesYesYesNoNo
Reiser4 [51] LinuxYesYesYesNoNo
ext4 [49] LinuxYesYesYesNoNo
Btrfs [52] LinuxYesYesYesYesYes
Bcachefs [41] LinuxYesYesNoNoYes
NILFS [53] LinuxNoYesNoYesNo
ZFS misc.NoYesNoPartial [54] Yes
JFS2 AIX YesYesYesYesNo
UFS2 [55] FreeBSDYesYes (FreeBSD 10.0-RELEASE or later)NoNoNo
HAMMER DragonflyBSD ? ? ? ? ?
BlueStore/Cephfs LinuxNoYesNoYesYes

Allocation and layout policies

File system Sparse files Block suballocation Tail packing Extents Variable file block size [lower-alpha 65] Allocate-on-flush Copy on write Trim support
DECtape NoNoNoNoNoNoNoNo
BeeGFS YesNoNoYesYesYesYes ?
Level-DNoNoNoYesNoNoNo ?
APFS Yes ? ?Yes ?YesYesYes [56] [57]
Version 6 Unix file system (V6FS)YesNoNoNoNoNo ?No
Version 7 Unix file system (V7FS)YesNoNoNoNoNo ?No
exFAT NoNoNoPartial (only if the file fits into one contiguous block range)NoNoNoYes (Linux)
FAT12 Partial (only inside of compressed volumes) [58] Partial (only inside of Stacker 3/4 and DriveSpace 3 compressed volumes [29] )NoPartial (only inside of compressed volumes) [59] NoNoNoYes (Linux)
FAT16  / FAT16B  / FAT16X Partial (only inside of compressed volumes) [58] Partial (only inside of Stacker 3/4 and DriveSpace 3 compressed volumes [29] )NoPartial (only inside of compressed volumes) [59] NoNoNoYes (Linux)
FAT32  / FAT32X NoNoNoNoNoNoNoYes (Linux)
GFS YesNoPartial [lower-alpha 66] NoNoNo ?Yes
HPFS NoNoNoYesNoNo ?Yes (Linux)
NTFS YesPartialNoYesNoNo ?Yes (NT 6.1+; Linux)
HFS Plus NoNoNoYesNoNo ?Yes (macOS)
FFS Yes8:1 [lower-alpha 67] NoNoNoNo ?No
UFS1 Yes8:1 [lower-alpha 67] NoNoNoNo ?No
UFS2 Yes8:1 [lower-alpha 67] NoNoYesNo ?Yes [60] [61]
LFS Yes8:1 [lower-alpha 67] NoNoNoNoYes ?
ext YesNoNoNoNoNoNoNo
Xiafs YesNoNoNoNoNo ? ?
ext2 YesNo [lower-alpha 68] NoNoNoNoNoYes
ext3 YesNo [lower-alpha 68] NoNoNoNoNoYes
ext4 YesNo [lower-alpha 68] NoYesNoYesNoYes
NOVA YesNoNoYesNoNoYes ?
F2FS YesNoNoPartial [lower-alpha 69] NoYesYesYes [62]
Lustre YesNoNoYesNoYes ? ?
NILFS YesNoNoNoNoYesYesYes (Linux NILFS2)
ReiserFS YesYes [lower-alpha 70] YesNoNoNo ? ?
Reiser4 YesYes [lower-alpha 70] YesYes [lower-alpha 71] NoYes ?Testing [63]
OCFS  ?NoNoYesNoNo ? ?
OCFS2 YesNoNoYesNoNo ?Yes (Linux)
XFS YesNoNoYesNoYesYes, on request [64] Yes (Linux)
JFS YesYesNoYesNoNo ?Yes (Linux)
QFS  ?YesNoNoNoNo ? ?
BFS  ?NoNoYesNoNo ?Yes (Haiku)
NSS  ?NoNoYesNoYes ? ?
NWFS  ?Yes [lower-alpha 72] NoNoNoNo ? ?
ODS-5  ?NoNoYesNoNo ? ?
VxFS Yes ?NoYesNoNo ? ?
UDF YesNoNoYesNo ? [lower-alpha 73] Yes, for write once read many mediaNo
Fossil  ?NoNoNoNoNo ? ?
ZFS YesYesNoNoYesYesYesYes
Btrfs YesYesYesYesYesYesYesYes
Bcachefs  ? ? ?Yes ?YesYes ?
VMFS2 YesYesNoNoNoNo ? ?
VMFS3 YesYesNoNoNoNo ? ?
ReFS Yes ? ? ?No ?YesYes (NT 6.1+)
ISO 9660 NoNoNoYes [lower-alpha 74] NoNoNoNo
Rock Ridge NoNoNoYes [lower-alpha 74] NoNoNoNo
Joliet ("CDFS") NoNoNoYes [lower-alpha 74] NoNoNoNo
SquashFS YesNoYesNoNoNoNoNo
BlueStore/Cephfs Yes ? ? ? ?NoYesYes
File system Sparse files Block suballocation Tail packing Extents Variable file block size [lower-alpha 65] 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 NoPartial (read-only with apfs-fuse [66] or linux-apfs [67] )Yes
(Since macOS Sierra)
NoNoNoNoNoNoNoNoNoNo
BeeGFS NoYes ?NoNoNoNoNo ? ? ?NoNo
DECtape NoNoNoNoNoNoNoNoNoNoNoNoNo
Level-DNo ? ?NoNoNoNoNoNoNo ? ?No
RT-11 NoNoNoNoNoNoNoNoNoNoNoNoNo
Version 6 Unix file system (V6FS)No ?NoNoNoNoNoNoNoNoNoNoNo
Version 7 Unix file system (V7FS)NoYesNoNoNoNoNoNo ? ? ?NoNo
exFAT NoYes (since 5.4, [68] available as a kernel module or FUSE driver for earlier versions)YesNoYesNoYes (available as a FUSE driver)NoNoNoYes (available as a FUSE driver)NoWith kernel 5.10
FAT12 YesYesYesYesYesYesYesYesYesPartial (via dosdir, dosread, doswrite)Yes ?Yes
FAT16  / FAT16B  / FAT16X Yes (FAT16 from DOS 3.0, FAT16B from DOS 3.31, FAT16X from DOS 7.0)YesYesYesYesYesYesYesYesPartial (via dosdir, dosread, doswrite, not FAT16X)Yes ?Yes
FAT32  / FAT32X Yes (from DOS 7.10)YesYesYes (from Windows 95 OSR2)Yes ?YesYesYesNoYes ?Yes
GFS NoYes ?NoNoNoNo ? ? ? ? ?No
HPFS Partial (with third-party drivers)Yes ?NoNo ?YesYes (from OS/2 1.2) ?No ? ?No
NTFS Partial (with third-party drivers)Yes Native since Linux Kernel 5.15 NTFS3. Older kernels may use backported NTFS3 driver or ntfs-3g [69] Read only, write support needs Paragon NTFS or ntfs-3g Needs 3rd-party drivers like Paragon NTFS for Win98, DiskInternals NTFS Reader YesNoYes with ntfs-3g  ?Yes with ntfs-3g NoYes with ntfs-3g  ?With third party tools
Apple HFS NoYesNo write support since Mac OS X 10.6 and no support at all since macOS 10.15NoNeeds Paragon HFS+ [70] YesNo ?YesNo ?NoNo
Apple HFS Plus NoPartial - writing support only to unjournalled FSYesNoNeeds Paragon HFS+ [70] Yes from Mac OS 8.1 No ?with addonNo ?NoNo
FFS No ?YesNo ? ?Yes ? ? ? ? ?No
UFS1 NoPartial - read onlyYesNoPartial (with ufs2tools, read only) ?YesNo ? ?Yes ?No
UFS2 NoYesYesNoPartial (with ufs2tools, read only) ?YesNo ? ? ? ?No
LFS No ? ?NoNo ?NoNo ? ? ? ?No
ext NoYes - until 2.1.20NoNoNoNoNoNoNoNoNoNoNo
Xiafs NoYes - until 2.1.20

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

NoNoNoNoNoNoNoNoNoNoNo
ext2 NoYesNeeds Paragon ExtFS [73] or ext2fsx Partial (read-only, with explore2fs) [74] Needs Paragon ExtFS [75] or partial with Ext2 IFS [76] or ext2fsd [77] NoYesNoYes ? ? ?No
ext3 NoYesNeeds 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] Nowith addon ?Yes ?Yes
ext4 NoYesNeeds Paragon ExtFS [73] NoYes, with the optional WSL2; physical and VHDX virtual disks. [79] [80]  ?Yes since FreeBSD 12.0 [78] Nowith addon ? ? ?Yes
NOVA NoYesNoNoNoNoNoNoNoNoNoNoNo
Lustre NoYes [81]  ?NoNo ?No ? ? ?Yes ?No
NILFS NoYes as an external kernel module ?No ? ?No ? ? ? ? ?No
F2FS NoYesNoNoNoNoNoNoNoNoNoNoYes
ReiserFS NoYes ?NoNo ?Partial - Read Only from 6.0 to 10.x [82] and dropped in 11.0 [83] [84]  ?with addon ? ? ?No
Reiser4 NoYes with a kernel patch ?NoNo ?No ? ? ? ? ?No
SpadFSNoYesNoNoNoNo ?NoNoNoNoNoNo
OCFS NoYes ?NoNo ?NoNo ? ? ? ?No
OCFS2 NoYes ?NoNo ?NoNo ? ? ? ?No
XFS NoYes ?NoNo ?Partial ?with addon (read only) ? ? ?No
JFS NoYes ?NoNo ?NoYes ? ? ? ?No
QFS NoPartial - client only [85]  ?NoNo ?NoNo ? ?Yes ?No
Be File System NoPartial - read-only ?NoNo ?NoNoYes ? ? ?No
NSS NoYes via EVMS [lower-alpha 75]  ?NoNo ?NoNo ? ? ? ?No
NWFS Partial (with Novell drivers) ? ?NoNo ?YesNo ? ? ? ?No
ODS-2 No ? ?NoNo ?NoNo ? ? ? ?No
ODS-5 No ? ?NoNo ?NoNo ? ? ? ?No
UDF NoYesYes ?Yes ?Yes ? ? ?Yes ?No
VxFS NoYes ?NoNo ?NoNo ? ?Yes ?No
Fossil NoYes [lower-alpha 76] Yes [lower-alpha 76] NoNoNoYes [lower-alpha 76] NoNoNoYes [lower-alpha 76]  ?No
ZFS NoYes with FUSE [86] or as an external kernel module [87] Yes with Read/Write Developer Preview [88] NoYes [89] NoYesNoNoNoYesNoNo
Btrfs NoYes ?NoYes with WinBtrfs [90]  ?No ? ? ? ? ?No
Bcachefs NoYesNoNoNoNoNoNoNoNoNoNoNo
VMFS2 No ? ?NoNo ?NoNo ? ? ? ?No
VMFS3 No ? ?NoNo ?NoNo ? ? ? ?No
IBM HFS NoNoNoNoNoNoNoNoNoNoNoYesNo
IBM zFS NoNoNoNoNoNoNoNoNoNoNoYesNo
ReFS NoNeeds Paragon ReFS for Linux ?NoYes ? ? ? ? ? ? ?No
ISO 9660 YesYesYesYesYesYesYesYesYesYesYesYesNo
Rock Ridge NoYesYesNoNoNoYesNoNoYesYes ?No
Joliet ("CDFS") NoYesYesYesYes ?YesYesYes ?Yes ?No
SquashFS NoYesPartial (There are ports of unsquashfs and mksquashfs.)NoPartial (There are ports of unsquashfs and mksquashfs.)NoPartial (There are ports of unsquashfs and mksquashfs and fusefs-port. [91] [92] )NoNoNoNoNoNo
BlueStore/Cephfs NoYesNo [lower-alpha 77] NoNo [lower-alpha 78] NoNo [lower-alpha 77] NoNoNoNoNoNo
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  TB Solid State Drive will contain at least 1,000,000,000,000 (1012, 10004) bytes), filesystem limits are invariably powers of 2, so usually expressed with IEC prefixes. For instance, a 1  TiB limit means 240, 10244 bytes. Approximations (rounding down) using power of 10 are also given below to clarify.

File systemMaximum filename lengthAllowable characters in directory entries [lower-alpha 79] Maximum pathname lengthMaximum file sizeMaximum volume size [lower-alpha 80] Max number of files
AdvFS 255 charactersAny byte except NUL [lower-alpha 81] No limit defined [lower-alpha 82] 16  TiB (17.59  TB)16  TiB (17.59  TB) ?
APFS 255 UTF-8 characters Unicode 9.0 encoded in UTF-8 [93]  ?8  EiB (9.223  EB) ?263 [94]
Bcachefs 255 bytesAny byte except '/' and NULNo limit defined16  EiB (18.44  EB)16  EiB (18.44  EB)264
BeeGFS 255 bytesAny byte except NUL [lower-alpha 81] No limit defined [lower-alpha 82] 16  EiB (18.44  EB)16  EiB (18.44  EB) ?
BFS 255 bytesAny byte except NUL [lower-alpha 81] No limit defined [lower-alpha 82] 12,288 bytes to 260  GiB (279.1  GB) [lower-alpha 83] 256  PiB (288.2  PB) to 2  EiB (2.305  EB)Unlimited
BlueStore/Cephfs 255 charactersany byte, except null, "/"No limit definedMax. 264 bytes, 1 TiB (1.099 TB) by default [95] Not limitedNot limited, default is 100,000 files per directory [96]
Btrfs 255 bytesAny byte except '/' and NULNo limit defined16  EiB (18.44  EB)16  EiB (18.44  EB)264
CBM DOS 16 bytesAny byte except NUL0 (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.3A–Z, 0–9DTxN:FILNAM.EXT = 15369,280 bytes (577 * 640)369,920 bytes (578 * 640) ?
Disk Operating System (GEC DOS) ? ? ? ? at least 131,072 bytes  ? ?
Elektronika BK tape format16 bytes ?No directory hierarchy64  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  EiB (18.44  EB) [98] 64  ZiB (75.55  ZB) (276  bytes) ?
ext 255 bytesAny byte except NUL [lower-alpha 81] No limit defined [lower-alpha 82] 2  GiB (2.147  GB)2  GiB (2.147  GB) ?
ext2 255 bytesAny byte except NUL, / [lower-alpha 81] No limit defined [lower-alpha 82] 16  GiB (17.17  GB) to 2  TiB (2.199  TB) [lower-alpha 80] 2  TiB (2.199  TB) to 32  TiB (35.18  TB) ?
ext3 255 bytesAny byte except NUL, / [lower-alpha 81] No limit defined [lower-alpha 82] 16  GiB (17.17  GB) to 2  TiB (2.199  TB) [lower-alpha 80] 2  TiB (2.199  TB) to 32  TiB (35.18  TB) ?
ext4 255 bytes [99] Any byte except NUL, / [lower-alpha 81] No limit defined [lower-alpha 82] 16  GiB (17.17  GB) to 16  TiB (17.59  TB) [lower-alpha 80] [100] 1  EiB (1.152  EB)232 (static inode limit specified at creation)
F2FS 255 bytesAny byte except NUL, / [lower-alpha 81] No limit defined [lower-alpha 82] 4,228,213,756 KiB (4.329 TB)16  TiB (17.59  TB) ?
FAT (8-bit) 6.3 (binary files) / 9 characters (ASCII files) ASCII (0x00 and 0xFF not allowed in first character)No directory hierarchy ? ? ?
FAT12/FAT16 8.3 (255 UCS-2 characters with LFN) [lower-alpha 84] SFN: OEM A-Z, 0-9, ! # $ % & ' ( ) - @ ^ _ ` { } ~, 0x80-0xFF, 0x20. LFN: Unicode except NUL, " * / : < > ? \ | [lower-alpha 79] [lower-alpha 81] No limit defined [lower-alpha 82] 32  MiB (33.55  MB) (4  GiB (4.294  GB)) [lower-alpha 85] 1  MiB (1.048  MB) to 32  MiB (33.55  MB) ?
FAT16B/FAT16X 8.3 (255 UCS-2 characters with LFN) [lower-alpha 84] SFN: OEM A-Z, 0-9, ! # $ % & ' ( ) - @ ^ _ ` { } ~, 0x80-0xFF, 0x20. LFN: Unicode except NUL, " * / : < > ? \ | [lower-alpha 79] [lower-alpha 84] [lower-alpha 81] No limit defined [lower-alpha 82] 2 (4) GiB [lower-alpha 85] (2.147  GB)16  MiB (16.77  MB) to 2 (4) GiB (2.147  GB) ?
FAT32/FAT32X 8.3 (255 UCS-2 characters with LFN) [lower-alpha 84] SFN: OEM A-Z, 0-9, ! # $ % & ' ( ) - @ ^ _ ` { } ~, 0x80-0xFF, 0x20. LFN: Unicode except NUL, " * / : < > ? \ | [lower-alpha 79] [lower-alpha 84] [lower-alpha 81] 32,760 characters with each path component no more than 255 characters [98] 4  GiB (4.294  GB) [98] 512  MiB (536.8  MB) to 16  TiB (17.59  TB) [lower-alpha 86]  ?
FATX 42 bytes [lower-alpha 84] ASCII.No limit defined [lower-alpha 82] 2  GiB (2.147  GB)16  MiB (16.77  MB) to 2  GiB (2.147  GB) ?
FFS 255 bytesAny byte except NUL [lower-alpha 81] No limit defined [lower-alpha 82] 4  GiB (4.294  GB)256  TiB (281.4  TB) ?
Fossil  ? ? ? ? ? ?
GEC DOS filing system extended8 bytesA–Z, 0–9. Period was directory separator ? No limit defined (workaround for OS limit) ? at least 131,072 bytes  ? ?
GEMDOS 8.3A-Z, a-z, 0-9 ! @ # $ % ^ & ( ) + - = ~ ` ; ' " , < > | [ ] ( ) _ [102]  ? ? ? ?
GFS2 255 bytesAny byte except NUL [lower-alpha 81] No limit defined [lower-alpha 82] 100  TiB (109.95  TB) to 8  EiB (9.223  EB) [lower-alpha 87] 100  TiB (109.95  TB) to 8  EiB (9.223  EB) [lower-alpha 88]  ?
GFS 255 bytesAny byte except NUL [lower-alpha 81] No limit defined [lower-alpha 82] 2  TiB (2.199  TB) to 8  EiB (9.223  EB) [lower-alpha 89] 2  TiB (2.199  TB) to 8  EiB (9.223  EB) [lower-alpha 89]  ?
GPFS 255 UTF-8 codepoints Any byte except NUL [lower-alpha 81] No limit defined [lower-alpha 82] 9 EiB (10.37 EB)524,288  YiB (299  bytes) ?
HAMMER 1023 bytes [105] Any byte except NUL [lower-alpha 81]  ? ?1  EiB (1.152  EB) [106]  ?
HFS 31 bytesAny byte except :Unlimited2  GiB (2.147  GB)2  TiB (2.199  TB) ?
HFS Plus 255 UTF-16 characters [lower-alpha 90] Any valid Unicode [lower-alpha 81] [lower-alpha 91] Unlimitedslightly less than 8  EiB (9.223  EB)slightly less than 8  EiB (9.223  EB) [107] [108]  ?
High Sierra Format  ? ? ? ? ? ?
HPFS 255 bytesAny byte except NUL [lower-alpha 92] No limit defined [lower-alpha 82] 2  GiB (2.147  GB)2  TiB (2.199  TB) [lower-alpha 93]  ?
IBM SFS8.8 ? ?Non-hierarchical [109]  ? ?
ISO 9660:1988 Level 1: 8.3,
Level 2 & 3: ~ 180
Depends on Level [lower-alpha 94] ~ 180 bytes?4  GiB (4.294  GB) (Level 1 & 2) to 8  TiB (8.796  TB) (Level 3) [lower-alpha 95] 8  TiB (8.796  TB) [lower-alpha 96]  ?
ISO 9660:1999  ? ? ? ? ? ?
JFS 255 bytesAny Unicode except NULNo limit defined [lower-alpha 82] 4  PiB (4.503  PB)32  PiB (36.02  PB) ?
JFS1 255 bytesAny byte except NUL [lower-alpha 81] No limit defined [lower-alpha 82] 8  EiB (9.223  EB)512  TiB (562.9  TB) to 4  PiB (4.503  PB) ?
Joliet ("CDFS") 64 charactersAll UCS-2 code except *, /, \, :, ;, and ? [110]  ?same as ISO 9660:1988 same as ISO 9660:1988  ?
Level-D6.3A–Z, 0–9DEVICE:FILNAM.EXT[PROJCT,PROGRM] = 7 + 10 + 15 = 32; + 5*7 for SFDs = 6734,359,738,368 words (235); 206,158,430,208 SIXBIT bytes Approx 12  GiB (12.88  GB) (64 * 178  MiB (186.6  MB)) ?
Lustre 255 bytesAny byte except NUL [lower-alpha 81] No limit defined [lower-alpha 82] 16  EiB (18.44  EB) on ZFS 16  EiB (18.44  EB) ?
MFS 255 bytesAny byte except :No path (flat filesystem)256  MiB (268.4  MB)256  MiB (268.4  MB) ?
MicroDOS file system14 bytes ? ?16  MiB (16.77  MB)32  MiB (33.55  MB) ?
Minix V1 FS 14 or 30 bytes, set at filesystem creation timeAny byte except NUL [lower-alpha 81] No limit defined [lower-alpha 82] 256.5 MiB (268.9 MB) [lower-alpha 97] 64  MiB (67.10  MB) ?
Minix V2 FS 14 or 30 bytes, set at filesystem creation timeAny byte except NUL [lower-alpha 81] No limit defined [lower-alpha 82] 2  GiB (2.147  GB) [lower-alpha 97] 1  GiB (1.073  GB) ?
Minix V3 FS 60 bytesAny byte except NUL [lower-alpha 81] No limit defined [lower-alpha 82] 2  GiB (2.147  GB)4  GiB (4.294  GB) ?
NILFS 255 bytesAny byte except NUL [lower-alpha 81] No limit defined [lower-alpha 82] 8  EiB (9.223  EB)8  EiB (9.223  EB) ?
NOVA 255 bytesAny byte except NUL, / [lower-alpha 81] No limit defined [lower-alpha 82] 16  EiB (18.44  EB)16  EiB (18.44  EB) ?
NSS 256 charactersDepends on namespace used [lower-alpha 98] Only limited by client8  TiB (8.796  TB)8  TiB (8.796  TB) ?
NTFS 255 charactersIn 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 [lower-alpha 82] 16 TiB (17.59 TB) to 8 PiB (9.007 PB) [lower-alpha 99] [112] 16 TiB (17.59 TB) to 8 PiB (9.007 PB) [lower-alpha 99] [112] 232
NWFS 80 bytes [lower-alpha 100] Depends on namespace used [lower-alpha 98] No limit defined [lower-alpha 82] 4  GiB (4.294  GB)1  TiB (1.099  TB) ?
OCFS 255 bytesAny byte except NUL [lower-alpha 81] No limit defined [lower-alpha 82] 8  TiB (8.796  TB)8  TiB (8.796  TB) ?
OCFS2 255 bytesAny byte except NUL [lower-alpha 81] No limit defined [lower-alpha 82] 4  PiB (4.503  PB)4  PiB (4.503  PB) ?
ODS-5 236 bytes [lower-alpha 101]  ?4,096 bytes [lower-alpha 102] 1  TiB (1.099  TB)1  TiB (1.099  TB) ?
QFS 255 bytesAny byte except NUL [lower-alpha 81] No limit defined [lower-alpha 82] 16  EiB (18.44  EB) [lower-alpha 103] 4  PiB (4.503  PB) [lower-alpha 103]  ?
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  EiB (18.44  EB) [113] [115] 1  YiB (1.208  YB) [113]  ?
ReiserFS 4,032 bytes/255 charactersAny byte except NUL or '/' [lower-alpha 81] No limit defined [lower-alpha 82] 8  TiB (8.796  TB) [lower-alpha 104] (v3.6), 4  GiB (4.294  GB) (v3.5)16  TiB (17.59  TB) ?
Reiser4 3,976 bytesAny byte except / and NULNo limit defined [lower-alpha 82] 8  TiB (8.796  TB) on x86 ? ?
Rock Ridge 255 bytesAny byte except NUL or / [lower-alpha 81] No limit defined [lower-alpha 82] same as ISO 9660:1988 same as ISO 9660:1988  ?
RT-11 6.3A–Z, 0–9, $0 (no directory hierarchy)33,554,432 bytes (65536 * 512)33,554,432 bytes  ?
SquashFS 256 bytes ?No limit defined16  EiB (18.44  EB)16  EiB (18.44  EB) ?
UDF 255 bytesAny Unicode except NUL1,023 bytes [lower-alpha 105] 16  EiB (18.44  EB)512  MiB (536.8  MB) to 16  TiB (17.59  TB) ?
UFS1 255 bytesAny byte except NUL [lower-alpha 81] No limit defined [lower-alpha 82] 16  GiB (17.17  GB) to 256  TiB (281.4  TB)16  EiB (18.44  EB)Subdirectory per directory is 32,767 [117]
UFS2 255 bytesAny byte except NUL [lower-alpha 81] No limit defined [lower-alpha 82] 512  GiB (549.7  GB) to 32  PiB (36.02  PB)512  ZiB (604.4  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 definedNo limit defined
Version 6 Unix file system (V6FS)14 bytesAny byte except NUL and / [lower-alpha 81] No limit defined [lower-alpha 82] 16  MiB (16.77  MB) [lower-alpha 106] 32  MiB (33.55  MB) ?
Version 7 Unix file system (V7FS)14 bytesAny byte except NUL or / [lower-alpha 81] No limit defined [lower-alpha 82] 1  GiB (1.073  GB) [lower-alpha 107] 2  TiB (2.199  TB) ?
VMFS2 128Any byte except NUL or / [lower-alpha 81] 2,0484  TiB (4.398  TB) [lower-alpha 108] 64  TiB (70.36  TB) ?
VMFS3 128Any byte except NUL or / [lower-alpha 81] 2,0482  TiB (2.199  TB) [lower-alpha 108] 64  TiB (70.36  TB) ?
VxFS 255 bytesAny byte except NUL [lower-alpha 81] No limit defined [lower-alpha 82] 16  EiB (18.44  EB) ? ?
XFS 255 bytes [lower-alpha 109] Any byte except NUL [lower-alpha 81] No limit defined [lower-alpha 82] 8  EiB (9.223  EB) [lower-alpha 110] 8  EiB (9.223  EB) [lower-alpha 110]  ?
Xiafs 248 bytesAny byte except NUL [lower-alpha 81] No limit defined [lower-alpha 82] 64  MiB (67.10  MB)2  GiB (2.147  GB) ?
ZFS 255 bytesAny Unicode except NULNo limit defined [lower-alpha 82] 16  EiB (18.44  EB)281,474,976,710,656  YiB (2128  bytes)2128
File systemMaximum filename lengthAllowable characters in directory entries [lower-alpha 79] Maximum pathname lengthMaximum file sizeMaximum volume size [lower-alpha 80] Max number of files

See also

Notes

  1. 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.
  2. Microsoft first introduced FAT32 in MS-DOS 7.1 / 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. 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.
  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. 1 2 3 4 Access-control lists and MAC labels are layered on top of extended attributes.
  11. Some operating systems implemented extended attributes as a layer over UFS1 with a parallel backing file (e.g., FreeBSD 4.x).
  12. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 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. 1 2 3 4 5 6 The local time, time zone/UTC offset, and date are derived from the time settings of the reference/single timesync source in the NDS tree.
  16. 1 2 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. 1 2 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.
  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. 1 2 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. 1 2 NTFS stores everything, even the file data, as meta-data, so its log is closer to block journaling.
  30. 1 2 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.
  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. "Soft dependencies" (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. 1 2 3 4 5 6 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. 1 2 3 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. 1 2 3 4 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. 1 2 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. 1 2 Available only in the "NFS" namespace.
  45. 1 2 These are referred to as "aliases".
  46. 1 2 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. 1 2 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. 1 2 only inside of Stacker 3/4 and 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. 1 2 3 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. 1 2 3 4 With software based on GNU Parted.
  65. 1 2 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.
  66. Only for "stuffed" inodes
  67. 1 2 3 4 Other block:fragment size ratios supported; 8:1 is typical and recommended by most implementations.
  68. 1 2 3 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. 1 2 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. 1 2 3 ISO 9660 Level 3 only
  75. Supported using only EVMS; not currently supported using LVM
  76. 1 2 3 4 Provided in Plan 9 from User Space
  77. 1 2 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. 1 2 3 4 5 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; operating systems may also place restrictions of their own, across all filesystems. DOS, Windows, and OS/2 allow only the following characters from the current 8-bit OEM codepage in SFNs: A-Z, 0-9, characters ! # $ % & ' ( ) - @ ^ _ ` { } ~, as well as 0x80-0xFF and 0x20 (SPACE). Specifically, lowercase letters a-z, characters " * / : < > ? \ | + , . ; = [ ], control codes 0x00-0x1F, 0x7F and in some cases also 0xE5 are not allowed.) In LFNs, any 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. 1 2 3 4 5 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 (131.0  KB) 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 (32.76  KB)).
  81. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 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. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 The on-disk structures have no inherent limit. Particular Installable File System drivers and operating systems may impose limits of their own, however. Limited by its Current Directory Structure (CDS), DOS does not support more than 32 directory levels (except for DR DOS 3.31-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. 1 2 3 4 5 6 Depends on whether the FAT12, FAT16, and FAT32 implementation has support for LFNs. Where it does not, as in OS/2, 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 OEM 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 must not contain lowercase letters. A few special device names (CON, NUL, AUX, PRN, LPT1, COM1, etc.) should be avoided, as some operating systems (notably DOS, OS/2 and Windows) reserve them.
  85. 1 2 On-disk structures would support up to 4  GiB (4.294  GB), but practical file size is limited by volume size.
  86. While FAT32 partitions this large work fine once created, some software won't allow creation of FAT32 partitions larger than 32  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. 1 2 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. 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 (68.71  GB).
  94. ISO 9660#Restrictions
  95. Through the use of multi-extents, a file can consist of multiple segments, each up to 4  GiB (4.294  GB) in size. See ISO 9660#The 2 GiB (2.147 GB) (or 4 GiB (4.294 GB) depending on implementation) file size limit
  96. 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.
  97. 1 2 Sparse files can be larger than the file system size, even though they can't contain more data.
  98. 1 2 NSS allows files to have multiple names, in separate namespaces.
  99. 1 2 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 (281.4  TB) and the file size to 16  TiB (17.59  TB) respectively; in Windows 10 version 1709, the limit is 8 PiB (9.007 PB) when using 2 MiB (2.097 MB) cluster size.
  100. 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.
  101. Maximum combined filename/filetype length is 236 bytes; each component has an individual maximum length of 255 bytes.
  102. Maximum pathname length is 4,096 bytes, but quoted limits on individual components add up to 1,664 bytes.
  103. 1 2 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.
  104. ReiserFS has a theoretical maximum file size of 1  EiB (1.152  EB), but "page cache limits this to 8 Ti on architectures with 32 bit int" [116]
  105. This restriction might be lifted in newer versions.
  106. 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.
  107. 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 (4.294  GB).
  108. 1 2 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.
  109. Note that the filename can be much longer XFS#Extended attributes
  110. 1 2 XFS has a limitation under Linux 2.4 of 64  TiB (70.36  TB) file size, but Linux 2.4 only supports a maximum block size of 2  TiB (2.199  TB). This limitation is not present under IRIX.

Related Research Articles

XFS is a high-performance 64-bit journaling file system created by Silicon Graphics, Inc (SGI) in 1993. It was the default file system in SGI's IRIX operating system starting with its version 5.3. XFS was ported to the Linux kernel in 2001; as of June 2014, XFS is supported by most Linux distributions; Red Hat Enterprise Linux uses it as its default file system.

New Technology File System (NTFS) is a proprietary journaling file system developed by Microsoft. Starting with Windows NT 3.1, it is the default file system of the Windows NT family. It superseded File Allocation Table (FAT) as the preferred filesystem on Windows and is supported in Linux and BSD as well. NTFS reading and writing support is provided using a free and open-source kernel implementation known as NTFS3 in Linux and the NTFS-3G driver in BSD. By using the convert command, Windows can convert FAT32/16/12 into NTFS without the need to rewrite all files. NTFS uses several files typically hidden from the user to store metadata about other files stored on the drive which can help improve speed and performance when reading data. Unlike FAT and High Performance File System (HPFS), NTFS supports access control lists (ACLs), filesystem encryption, transparent compression, sparse files and file system journaling. NTFS also supports shadow copy to allow backups of a system while it is running, but the functionality of the shadow copies varies between different versions of Windows.

ext2, or second extended file system, is a file system for the Linux kernel. It was initially designed by French software developer Rémy Card as a replacement for the extended file system (ext). Having been designed according to the same principles as the Berkeley Fast File System from BSD, it was the first commercial-grade filesystem for Linux.

ext3, or third extended filesystem, is a journaled file system that is commonly used by the Linux kernel. It used to be the default file system for many popular Linux distributions. Stephen Tweedie first revealed that he was working on extending ext2 in Journaling the Linux ext2fs Filesystem in a 1998 paper, and later in a February 1999 kernel mailing list posting. The filesystem was merged with the mainline Linux kernel in November 2001 from 2.4.15 onward. Its main advantage over ext2 is journaling, which improves reliability and eliminates the need to check the file system after an unclean shutdown. Its successor is ext4.

<span class="mw-page-title-main">Disk partitioning</span> Creation of separate accessible storage areas on a secondary computer storage device

Disk partitioning or disk slicing is the creation of one or more regions on secondary storage, so that each region can be managed separately. These regions are called partitions. It is typically the first step of preparing a newly installed disk, before any file system is created. The disk stores the information about the partitions' locations and sizes in an area known as the partition table that the operating system reads before any other part of the disk. Each partition then appears to the operating system as a distinct "logical" disk that uses part of the actual disk. System administrators use a program called a partition editor to create, resize, delete, and manipulate the partitions. Partitioning allows the use of different filesystems to be installed for different kinds of files. Separating user data from system data can prevent the system partition from becoming full and rendering the system unusable. Partitioning can also make backing up easier. A disadvantage is that it can be difficult to properly size partitions, resulting in having one partition with too much free space and another nearly totally allocated.

The Unix file system (UFS) is a family of file systems supported by many Unix and Unix-like operating systems. It is a distant descendant of the original filesystem used by Version 7 Unix.

<span class="mw-page-title-main">Defragmentation</span> Rearrangement of sectors on a hard disk into contiguous units

In the maintenance of file systems, defragmentation is a process that reduces the degree of fragmentation. It does this by physically organizing the contents of the mass storage device used to store files into the smallest number of contiguous regions. It also attempts to create larger regions of free space using compaction to impede the return of fragmentation. Some defragmentation utilities try to keep smaller files within a single directory together, as they are often accessed in sequence.

The inode is a data structure in a Unix-style file system that describes a file-system object such as a file or a directory. Each inode stores the attributes and disk block locations of the object's data. File-system object attributes may include metadata, as well as owner and permission data.

fstab is a system file commonly found in the directory /etc on Unix and Unix-like computer systems. In Linux, it is part of the util-linux package. The fstab file typically lists all available disk partitions and other types of file systems and data sources that may not necessarily be disk-based, and indicates how they are to be initialized or otherwise integrated into the larger file system structure.

HFS Plus or HFS+ is a journaling file system developed by Apple Inc. It replaced the Hierarchical File System (HFS) as the primary file system of Apple computers with the 1998 release of Mac OS 8.1. HFS+ continued as the primary Mac OS X file system until it was itself replaced with the Apple File System (APFS), released with macOS High Sierra in 2017. HFS+ is also one of the formats supported by the iPod digital music player.

<span class="mw-page-title-main">File system</span> Computer filing system

In computing, a file system or filesystem governs file organization and access. A local file system is a capability of an operating system that services the applications running on the same computer. A distributed file system is a protocol that provides file access between networked computers.

Filesystem in Userspace (FUSE) is a software interface for Unix and Unix-like computer operating systems that lets non-privileged users create their own file systems without editing kernel code. This is achieved by running file system code in user space while the FUSE module provides only a bridge to the actual kernel interfaces.

In computing, an extent is a contiguous area of storage reserved for a file in a file system, represented as a range of block numbers, or tracks on count key data devices. A file can consist of zero or more extents; one file fragment requires one extent. The direct benefit is in storing each range compactly as two numbers, instead of canonically storing every block number in the range. Also, extent allocation results in less file fragmentation.

Extended file attributes are file system features that enable users to associate computer files with metadata not interpreted by the filesystem, whereas regular attributes have a purpose strictly defined by the filesystem. Unlike forks, which can usually be as large as the maximum file size, extended attributes are usually limited in size to a value significantly smaller than the maximum file size. Typical uses include storing the author of a document, the character encoding of a plain-text document, or a checksum, cryptographic hash or digital certificate, and discretionary access control information.

ext4 is a journaling file system for Linux, developed as the successor to ext3.

chattr is the command in Linux that allows a user to set certain attributes of a file. lsattr is the command that displays the attributes of a file.

Btrfs is a computer storage format that combines a file system based on the copy-on-write (COW) principle with a logical volume manager, developed together. It was founded by Chris Mason in 2007 for use in Linux, and since November 2013, the file system's on-disk format has been declared stable in the Linux kernel.

In computer operating systems, mkfs is a command used to format a block storage device with a specific file system. The command is part of Unix and Unix-like operating systems. In Unix, a block storage device must be formatted with a file system before it can be mounted and accessed through the operating system's filesystem hierarchy.

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. 1 2 3 "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. 1 2 "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. 1 2 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. 1 2 "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. 1 2 3 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. "Mac users, meet APFS: macOS's new file system - ZDNet". ZDNet .
  57. "Apple File System Guide - FAQ".
  58. 1 2 "CVF Region: MDFAT".
  59. 1 2 "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. 1 2 "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. 1 2 3 "Paragon ExtFS for Mac".
  74. 1 2 "Explore2fs". chrysocome.net.
  75. 1 2 "Paragon ExtFS for Windows".
  76. 1 2 "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. 1 2 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. 1 2 "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. 1 2 3 4 "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. 1 2 "NTFS overview". Microsoft Docs. 2022-05-26. Archived from the original on 2022-05-26. Retrieved 2022-06-05.
  113. 1 2 3 4 5 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. 1 2 "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.