Comparison of file systems

From Wikipedia, the free encyclopedia
Jump to: navigation, search

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

General information[edit]

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

Limits[edit]

File system Maximum filename length Allowable characters in directory entries[d] Maximum pathname length Maximum file size Maximum volume size[e] Max number of inodes
BeeGFS 255 bytes Any byte except NUL[f] No limit defined[g] 16 EiB 16 EiB
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 512 MiB
IBM SFS 8.8  ?  ? Non-hierarchical[13]  ?
DECtape 6.3 A–Z, 0–9 DTxN:FILNAM.EXT = 15 369,280 bytes (577 * 640) 369,920 bytes (578 * 640)
Elektronika BK tape format 16 bytes No directory hierarchy 64 KiB Not limited. Approx. 800KB (one side) for 90 min cassette
MicroDOS file system 14 bytes 16 MiB 32 MiB
Level-D 6.3 A–Z, 0–9 DEVICE:FILNAM.EXT[PROJCT,PROGRM] = 7 + 10 + 15 = 32; + 5*7 for SFDs = 67 34,359,738,368 words (2**35-1); 206,158,430,208 SIXBIT bytes Approx 12 GB (64 * 178 MB)
RT-11 6.3 A–Z, 0–9, $ 0 (no directory hierarchy) 33,554,432 bytes (65536 * 512) 33,554,432 bytes
Version 6 Unix file system (V6FS) 14 bytes Any byte except NUL and /[f] No limit defined[g] 16 MiB[h] 32 MiB
Disk Operating System (GEC DOS) ? ? ? ? at least 131,072 bytes ?
GEC DOS filing system extended 8 bytes A–Z, 0–9. Period was directory separator ? No limit defined (workaround for OS limit) ? at least 131,072 bytes ?
CBM DOS 16 bytes Any byte except NUL 0 (no directory hierarchy) 16 MiB 16 MiB
Version 7 Unix file system (V7FS) 14 bytes Any byte except NUL and /[f] No limit defined[g] 1 GiB[i] 2 TiB
exFAT 255 UTF-16 characters ? 32,760 Unicode characters with each path component no more than 255 characters[14] 16 EiB[14] 64 ZiB (276 bytes)
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)[j] SFN: OEM A-Z, 0-9, ! # $ % & ' ( ) - @ ^ _ ` { } ~, 0x80-0xFF, 0x20. LFN: Unicode except NUL, " * / : < > ? \ | [d][f] No limit defined[g] 32 MiB (4 GiB)[k] 1 MiB to 32 MiB
FAT16B/FAT16X 8.3 (255 UCS-2 characters with LFN)[j] SFN: OEM A-Z, 0-9, ! # $ % & ' ( ) - @ ^ _ ` { } ~, 0x80-0xFF, 0x20. LFN: Unicode except NUL, " * / : < > ? \ | [d][j][f] No limit defined[g] 2 (4) GiB[k] 16 MiB to 2 (4) GiB
FAT32/FAT32X 8.3 (255 UCS-2 characters with LFN)[j] SFN: OEM A-Z, 0-9, ! # $ % & ' ( ) - @ ^ _ ` { } ~, 0x80-0xFF, 0x20. LFN: Unicode except NUL, " * / : < > ? \ | [d][j][f] 32,760 Unicode characters with each path component no more than 255 characters[14] 2 (4) GiB[k][14] 512 MiB to 8 TiB[l]
FATX 42 bytes[j] ASCII. Unicode not permitted. No limit defined[g] 2 GiB 16 MiB to 2 GiB
Fossil ? ? ? ? ?
GEMDOS 8.3 A-Z, a-z, 0-9 ! @ # $ % ^ & ( ) + - = ~ ` ; ' " , < > | [ ] ( ) _[16] ? ? ?
APFS 255 UTF-8 characters ? ? 8 EiB ? 264
F2FS 255 bytes Any byte except NUL, /[f] No limit defined[g] 3.94 TiB 16 TiB
MFS 255 bytes Any byte except : No path (flat filesystem) 256 MiB 256 MiB
HFS 31 bytes Any byte except : Unlimited 2 GiB 2 TiB
HPFS 255 bytes Any byte except NUL[m] No limit defined[g] 2 GiB 2 TiB[n]
NTFS 255 characters Any Unicode except NUL, / 32,767 Unicode characters with each path component (directory or filename) up to 255 characters long[g] 16 EiB[o] 16 EiB[o]
ReFS 255 UTF-16 characters[17] Any Unicode except NUL, /[17] 32,767 Unicode characters with each path component (directory or filename) up to 255 characters long[17] 16 EiB[17] 3.76 ZiB[18]
HFS Plus 255 UTF-16 characters[p] Any valid Unicode[f][q] Unlimited slightly less than 8 EiB slightly less than 8 EiB[19][20]
FFS 255 bytes Any byte except NUL[f] No limit defined[g] 4 GiB 256 TiB
HAMMER 255 bytes[21] Any byte except NUL[f] ? ? 1 EiB[22]
UFS1 255 bytes Any byte except NUL[f] No limit defined[g] 16 GiB to 256 TiB 16 TiB
UFS2 255 bytes Any byte except NUL[f] No limit defined[g] 512 GiB to 32 PiB 512 ZiB[23] (279 bytes)
ext 255 bytes Any byte except NUL[f] No limit defined[g] 2 GiB 2 GiB
Xiafs 248 bytes Any byte except NUL[f] No limit defined[g] 64 MiB 2 GiB
ext2 255 bytes Any byte except NUL, /[f] No limit defined[g] 16 GiB to 2 TiB[e] 2 TiB to 32 TiB
ext3 255 bytes Any byte except NUL, /[f] No limit defined[g] 16 GiB to 2 TiB[e] 2 TiB to 32 TiB
ext4 255 bytes Any byte except NUL, /[f] No limit defined[g] 16 GiB to 16 TiB[e][24] 1 EiB 232
NOVA 255 bytes Any byte except NUL, /[f] No limit defined[g] 16 EiB 16 EiB
Lustre 255 bytes Any byte except NUL[f] No limit defined[g] 16 EiB on ZFS 16 EiB
GPFS 255 UTF-8 codepoints Any byte except NUL[f] No limit defined[g] No limit found 299 bytes (2 PiB tested)
GFS 255 bytes Any byte except NUL[f] No limit defined[g] 2 TiB to 8 EiB[r] 2 TiB to 8 EiB[r]
NILFS 255 bytes Any byte except NUL[f] No limit defined[g] 8 EiB 8 EiB
ReiserFS 4,032 bytes/255 characters Any byte except NUL and '/'[f] No limit defined[g] 8 TiB[s] (v3.6), 4 GiB (v3.5) 16 TiB
Reiser4 3,976 bytes Any byte except / and NUL No limit defined[g] 8 TiB on x86 ?
OCFS 255 bytes Any byte except NUL[f] No limit defined[g] 8 TiB 8 TiB
OCFS2 255 bytes Any byte except NUL[f] No limit defined[g] 4 PiB 4 PiB
XFS 255 bytes[t] Any byte except NUL[f] No limit defined[g] 8 EiB[u] 8 EiB[u]
JFS1 255 bytes Any byte except NUL[f] No limit defined[g] 8 EiB 512 TiB to 4 PiB
JFS 255 bytes Any Unicode except NUL No limit defined[g] 4 PiB 32 PiB
QFS 255 bytes Any byte except NUL[f] No limit defined[g] 16 EiB[v] 4 PiB[v]
BFS 255 bytes Any byte except NUL[f] No limit defined[g] 12,288 bytes to 260 GiB[w] 256 PiB to 2 EiB
AdvFS 255 characters Any byte except NUL[f] No limit defined[g] 16 TiB 16 TiB
NSS 256 characters Depends on namespace used[x] Only limited by client 8 TiB 8 TiB
NWFS 80 bytes[y] Depends on namespace used[x] No limit defined[g] 4 GiB 1 TiB
ODS-5 236 bytes[z] ? 4,096 bytes[aa] 1 TiB 1 TiB
VxFS 255 bytes Any byte except NUL[f] No limit defined[g] 16 EiB ?
UDF 255 bytes Any Unicode except NUL 1,023 bytes[ab] 16 EiB ?
ZFS 255 bytes Any Unicode except NUL No limit defined[g] 16 EiB 256 ZiB (278 bytes) 2128
Btrfs 255 bytes Any byte except '/' and NUL No limit defined 16 EiB 16 EiB 264
Minix V1 FS 14 or 30 bytes, set at filesystem creation time Any byte except NUL[f] No limit defined[g] 256.5 MiB [ac] 64 MiB
Minix V2 FS 14 or 30 bytes, set at filesystem creation time Any byte except NUL[f] No limit defined[g] 2 GiB [ac] 1 GiB
Minix V3 FS 60 bytes Any byte except NUL[f] No limit defined[g] 2 GiB 4 GiB
VMFS2 128 Any byte except NUL and /[f] 2,048 4 TiB[ad] 64 TiB
VMFS3 128 Any byte except NUL and /[f] 2,048 2 TiB[ad] 64 TiB
ISO 9660:1988 Level 1: 8.3,
Level 2 & 3: ~ 180
Depends on Level[ae] ~ 180 bytes? 4 GiB (Level 1 & 2) to 8 TiB (Level 3)[af] 8 TiB[ag]
Joliet ("CDFS") 64 Unicode characters All UCS-2 code except *, /, \, :, ;, and ?[26]  ? same as ISO 9660:1988 same as ISO 9660:1988
Rock Ridge 255 bytes Any byte except NUL and /[f] No limit defined[g] same as ISO 9660:1988 same as ISO 9660:1988
ISO 9660:1999  ?  ?  ? ? ?
High Sierra Format  ?  ?  ? ? ?
SquashFS ? ? No limit defined 16 EiB 16 EiB
File system Maximum filename length Allowable characters in directory entries[d] Maximum pathname length Maximum file size Maximum volume size[e]

Metadata[edit]

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 Extended attributes/ Alternate data streams/ forks Checksum/ ECC
BeeGFS Yes Yes No Yes Yes No Yes ? Yes Yes
CP/M file system No No Yes[ah] No No No No No No No
DECtape[27] No No Yes No No No No No No No
Elektronika BK tape format No No No No No No No No No Yes
Level-D Yes Yes Yes Yes Yes Yes Yes No No No
RT-11[28] No No Yes (date only) No No No No No No Yes
Version 6 Unix file system (V6FS)[29] Yes Yes No Yes No No No No No No
Version 7 Unix file system (V7FS)[30] Yes Yes Yes Yes No No No No No No
FAT12/FAT16/FAT32 No No Yes Yes No[ai] No No No No[aj] No
HPFS Yes[ak] No Yes Yes No No No ? Yes No
NTFS Yes Yes[al] Yes Yes Yes No Yes Yes[am] Yes No
ReFS Yes Yes Yes Yes Yes No Yes ? Yes[an] Yes[ao]
HFS No No Yes No No Yes No No Yes No
HFS Plus Yes Yes Yes Yes Yes Yes Yes ? Yes No
FFS Yes Yes No Yes Yes No No No No No
UFS1 Yes Yes No Yes Yes No Yes[ap] Yes[ap] No[aq] No
UFS2 Yes Yes Yes Yes Yes No Yes[ap] Yes[ap] Yes No
HAMMER ? ? ? ? ? ? ? ? ? ?
LFS Yes Yes No Yes Yes No No No No No
ext Yes Yes No No No No No No No No
Xiafs Yes Yes No Yes Yes No No No No No
ext2 Yes Yes No Yes Yes No Yes[ar] Yes[ar] Yes No
ext3 Yes Yes No Yes Yes No Yes[ar] Yes[ar] Yes No
ext4 Yes Yes Yes Yes Yes No Yes[ar] Yes[ar] Yes Partial[as]
NOVA Yes Yes Yes Yes Yes No No No No Yes
Lustre Yes Yes No Yes Yes No Yes Yes Yes No
F2FS Yes Yes Yes Yes Yes No Yes[ar] Yes[ar] Yes No
GPFS Yes Yes Yes Yes Yes No Yes Yes Yes Yes
GFS Yes Yes No Yes Yes No Yes[ar] Yes[ar] Yes No
NILFS Yes Yes Yes No Yes No No No No Yes
ReiserFS Yes Yes No Yes Yes No Yes[ar] Yes[ar] Yes No
Reiser4 Yes Yes No Yes Yes No No No No No
OCFS No Yes No No Yes Yes No No No No
OCFS2 Yes Yes No Yes Yes No No No No No
XFS Yes Yes Partial[at] Yes Yes No Yes Yes[ar] Yes Partial[au]
TFS Yes
JFS Yes Yes Yes Yes Yes No Yes Yes Yes No
QFS Yes Yes Yes Yes Yes Yes Yes No Yes No
BFS Yes Yes Yes No No No No No Yes No
AdvFS Yes Yes No Yes Yes No Yes No Yes No
NSS Yes Yes Yes[av] Yes[av] Yes Yes[av] Yes ? Yes[aw][ax] No
NWFS Yes ? Yes[av] Yes[av] Yes Yes[av] Yes ? Yes[aw][ax] No
ODS-5 Yes Yes Yes ? ? Yes Yes ? Yes[ay] No
APFS Yes Yes Yes Yes Yes Yes Yes ? Yes Yes
VxFS Yes Yes Yes Yes Yes No Yes ? Yes[ar] No
UDF Yes Yes Yes Yes Yes Yes Yes No Yes No
Fossil Yes Yes[az] No Yes Yes No No No No No
ZFS Yes Yes Yes Yes Yes Yes Yes No[ba] Yes[bb] Yes
Btrfs Yes Yes Yes Yes ? ? Yes ? Yes Yes[bc]
Minix V1 Yes Yes No No No No No No No No
Minix V2 Yes Yes No Yes Yes No No No No No
Minix V3 Yes Yes No Yes Yes No No No No No
VMFS2 Yes Yes No Yes Yes No No No No No
VMFS3 Yes Yes No Yes Yes No No No No No
ISO 9660:1988 No No Yes No No No No No No No
Rock Ridge Yes Yes No Yes[bd] Yes No No[be] No[bf] No[bf] No
Joliet ("CDFS") No No Yes No No No No No No No
ISO 9660:1999 No No Yes No No No No No No No
High Sierra No No Yes No No No No No No No
SquashFS Yes Yes Yes Yes Yes ? Yes No Yes No
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 Extended attributes/ Alternate data streams/ forks Checksum/ ECC

Features[edit]

File capabilities[edit]

File system Hard links Symbolic links Block journaling Metadata-only journaling Case-sensitive Case-preserving File Change Log Internal snapshotting / branching XIP Filesystem-level encryption Data deduplication Concurrent execution Trim support Data checksums
DECtape No No No No No No No No No No No No
BeeGFS Yes Yes Yes Yes Yes Yes No No No No Yes No
Level-D No No No No No No No No No No No No
RT-11 No No No No No No No No No No No No
APFS Yes Yes ? ? Partial Yes ? Yes ? Yes Partial Yes[33][34] No
Version 6 Unix file system (V6FS) Yes No No No Yes Yes No No No No No No
Version 7 Unix file system (V7FS) Yes No[bg] No No Yes Yes No No No No No No
FAT12 No No No Partial (with TFAT12 only) No Partial (with VFAT LFNs only) No No No Partial (DR-DOS with SECURITY only) No No
FAT16 / FAT16B / FAT16X No No No Partial (with TFAT16 only) No Partial (with VFAT LFNs only) No No No Partial (DR-DOS with SECURITY only) No No
FAT32 / FAT32X No No No? Partial (with TFAT32 only) No Partial (with VFAT LFNs only) No No No No No Yes (linux) No
GFS Yes Yes[bh] Yes Yes[bi] Yes Yes No No No No ? Yes (linux) No
HPFS No No No No No Yes No ? No No ? No
NTFS Yes Yes[bj] No[bk] Yes[bk] (2000) Yes[bl] Yes Yes Partial[bm] ? Yes Yes[bn][36] Yes (windows 7+) No
HFS Plus Partial Yes No Yes[bo] Partial[bp] Yes Yes[bq] No No No[br] No Yes No
FFS Yes Yes No No Yes Yes No No No No No No
UFS1 Yes Yes No No Yes Yes No No No No No No
UFS2 Yes Yes No No[bs] Yes Yes No Yes ? No No No
HAMMER Yes Yes Yes Yes Yes Yes ? Yes No No Yes Yes
LFS Yes Yes Yes[bt] No Yes Yes No Yes No No No No
ext Yes Yes No No Yes Yes No No No No No No
Xiafs Yes Yes No No Yes Yes No No No No No No
ext2 Yes Yes No No Yes Yes No No Yes[bu] No No No
ext3 Yes Yes Yes (2001) [bv] Yes (2001) Yes Yes No No Yes No No Partial linux, by default-offline only No
ext4 Yes Yes Yes[bv] Yes Yes Yes No No Yes Yes, experimental [41] No Yes (linux) No
NOVA Yes Yes No Yes Yes Yes No Yes Yes No No Yes
F2FS Yes Yes Yes[bt] No Yes Yes No No No Yes, experimental [42] No No
Lustre Yes Yes Yes[bv] Yes Yes Yes No No No No No No
NILFS Yes Yes Yes[bt] No Yes Yes No Yes No No No Yes
ReiserFS Yes Yes Yes[bw] Yes Yes Yes No No ? No No No
Reiser4 Yes Yes Yes No Yes Yes No ? ? Yes[bx] ? No
OCFS No Yes No No Yes Yes No No No No No No
OCFS2 Yes Yes Yes Yes Yes Yes No No No No No No
XFS Yes Yes Yes Yes Yes[by] Yes Yes No ? No Yes, experimental [43] Yes (linux) No
JFS Yes Yes Yes Yes (1990) Yes[bz] Yes No ? ? No ? Yes (linux) No
QFS Yes Yes No Yes Yes Yes No No No No No No
BFS Yes Yes No Yes Yes Yes ? ? No No No No
NSS Yes Yes ? Yes Yes[ca] Yes[ca] Yes[cb] Yes No Yes ? No
NWFS Yes[cc] Yes[cc] No No Yes[ca] Yes[ca] Yes[cb] ? No No ? No
ODS-2 Yes Yes[cd] No Yes No No Yes Yes No No No No
ODS-5 Yes Yes[cd] No Yes No Yes Yes Yes ? No No No
UDF Yes Yes Yes[bt] Yes[bt] Yes Yes No No Yes No No No
VxFS Yes Yes Yes No Yes Yes Yes Yes[ce] ? No Yes No
Fossil No No No No Yes Yes Yes Yes No No Yes No
ZFS Yes Yes Yes[cf] No[cf] Yes Yes No Yes No Yes[cg] Yes Yes (FreeBSD) Yes
Btrfs Yes Yes Yes Yes Yes Yes ? Yes ? No, planned, not being developed (Nov, 2015)[47] Yes Yes (linux) Yes
TFS Yes Yes [48] Yes (redox OS)[49] Yes
Minix V1 Yes Yes No No Yes Yes No No No No No No
Minix V2 Yes Yes No No Yes Yes No No No No No No
Minix V3 Yes Yes No No Yes Yes No No No No No No
VMFS2 Yes Yes No Yes Yes Yes No No No No No No
VMFS3 Yes Yes No Yes Yes Yes No No No No No No
ReFS No Yes ? ? Yes[bl] Yes ? ? ? No No Yes
ISO 9660 No No No No No No No No No No No[ch] No
Rock Ridge Yes Yes No No Yes Yes No No No No No[ch] No
Joliet ("CDFS") No No No No No Yes No No No No No[ch] No
SquashFS No No No No Yes Yes No No No No Yes No
File system Hard links Symbolic links Block journaling Metadata-only journaling Case-sensitive Case-preserving File Change Log Internal snapshotting / branching XIP Filesystem-level encryption Data deduplication Concurrent execution Trim support Data checksums

Resize capabilities[edit]

File system Host OS Online grow Offline grow Online shrink Offline shrink
Btrfs[50] Linux Yes No Yes No
ext2[51] Linux No Yes No Yes
ext3[51] Linux Yes Yes No Yes
ext4[51] Linux Yes Yes No Yes
NOVA Linux No No No No
FAT12 misc. No with third-party tools[52] No with third-party tools[52]
FAT16 / FAT16B / FAT16X misc. No with third-party tools[52] No with third-party tools[52]
FAT32 / FAT32X misc. No with third-party tools[52] No with third-party tools[52]
F2FS[53] Linux No Yes No No
HFS+ Linux No No No No
HFS+ macOS Yes No Yes No
JFS[54] Linux No Yes No No
JFS2 AIX Yes  ? Yes  ?
NILFS[55] Linux Yes No Yes No
NTFS[56] Linux No Yes No Yes
NTFS Windows Yes Yes Yes Yes
APFS macOS ? ? ? ?
ZFS misc. Yes No No No
Reiser4[57] Linux Yes Yes No Yes
ReiserFS[58] Linux Yes Yes No Yes
XFS[59] Linux Yes No No No
ReFS Windows Yes ? No ?
UFS2[60] FreeBSD Yes (FreeBSD 10.0-RELEASE or later) Yes No No
HAMMER DragonflyBSD ? ? ? ?
SquashFS Linux No No No No

Allocation and layout policies[edit]

File system Tail packing Transparent compression Block suballocation Allocate-on-flush Extents Variable file block size[ci] Sparse files Copy on write
DECtape No No No No No No No No
BeeGFS No Yes (e.g. with zfs) No Yes Yes Yes Yes Yes (e.g. with zfs)
Level-D No No No No Yes No No No
APFS ? No ? Yes Yes ? Yes Yes
Version 6 Unix file system (V6FS) No No No No No No Yes ?
Version 7 Unix file system (V7FS) No No No No No No Yes ?
FAT12 No Partial[cj] Partial (only inside of Stacker 3/4 and DriveSpace 3 compressed volumes[61]) No Partial (only inside of compressed volumes)[62] No Partial (only inside of compressed volumes)[63] No
FAT16 / FAT16B / FAT16X No Partial[cj] Partial (only inside of Stacker 3/4 and DriveSpace 3 compressed volumes[61]) No Partial (only inside of compressed volumes)[62] No Partial (only inside of compressed volumes)[63] No
FAT32 / FAT32X No No No No No No No No
GFS Partial[ck] No No No No No Yes ?
HPFS No No No No Yes No No ?
NTFS No Yes Partial No Yes No Yes ?
HFS Plus No No No No Yes No No ?
FFS No No 8:1[cl] No No No Yes ?
UFS1 No No 8:1[cl] No No No Yes ?
UFS2 No No 8:1[cl] No No Yes Yes ?
LFS No No 8:1[cl] No No No Yes Yes
ext No No No No No No Yes No
Xiafs No No No No No No Yes ?
ext2 No No[cm] No[cn] No No No Yes No
ext3 No No No[cn] No No No Yes No
ext4 No No No[cn] Yes Yes No Yes No
NOVA No No No No Yes No Yes Yes
F2FS No No No Yes Partial[co] No Yes Yes
Lustre No No No Yes Yes No Yes ?
NILFS No No No Yes No No Yes ?
ReiserFS Yes No Yes[cp] No No No Yes ?
Reiser4 Yes Yes[bx] Yes[cp] Yes Yes[cq] No Yes ?
OCFS No No No No Yes No ? ?
OCFS2 No No No No Yes No Yes ?
XFS No No No Yes Yes No Yes Yes, on request[64]
TFS Yes Yes
JFS No only in JFS1 on AIX[65] Yes No Yes No Yes ?
QFS No No Yes No No No ? ?
BFS No No No No Yes No ? ?
NSS No Yes No No Yes No ? ?
NWFS No Yes Yes[cr] No No No ? ?
ODS-5 No No No No Yes No ? ?
VxFS No No ? No Yes No Yes ?
UDF No No No ?[cs] Yes No No ?
Fossil No Yes No No No No ? ?
ZFS No Yes Yes Yes No Yes Yes Yes
Btrfs Yes Yes Yes Yes Yes Yes Yes Yes
VMFS2 No No Yes No No No Yes ?
VMFS3 No No Yes No No No Yes ?
ReFS ? No ? ? ? No Yes Yes
ISO 9660 No No[ct] No No Yes[cu] No No No
Rock Ridge No No[ct] No No Yes[cu] No No No
Joliet ("CDFS") No No[ct] No No Yes[cu] No No No
SquashFS No Yes No No No No Yes No
File system Tail packing Transparent compression Block suballocation Allocate-on-flush Extents Variable file block size[ci] Sparse files Copy on write

OS support[edit]

File system DOS Windows 9x Windows NT Linux "classic" Mac OS macOS FreeBSD OS/2 BeOS Minix Solaris z/OS ReactOS RedoxOS
APFS No No No No No Yes
(Since macOS Sierra)
No No No No No No
BeeGFS No No No Yes No ? No No ? ? ? No
DECtape No No No No No No No No No No No No
Level-D No No No ? No ? No No No No ? ?
RT-11 No No No No No No No No No No No No
Version 6 Unix file system (V6FS) No No No ? No ? No No ? ? ? ?
Version 7 Unix file system (V7FS) No No No Yes No ? No No ? ? ? ?
FAT12 Yes Yes Yes Yes Yes Yes Yes Yes Yes Partial (via dosdir, dosread, doswrite) Yes ?
FAT16 / FAT16B / 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 ?
FAT32 / FAT32X Yes (from DOS 7.10) Yes (from Windows 95 OSR2) Yes (from Windows 2000) Yes Yes? Yes Yes Yes Yes No Yes ?
GFS No No No Yes No ? No ? ? ? ? ?
HPFS Partial (with third-party drivers) No Partial (with NT 3.1 to 4.0 only) Yes ? ? Yes Yes (from OS/2 1.2) ? No ? ?
NTFS Partial (with third-party drivers) No Yes Yes with ntfs-3g No Yes with Paragon NTFS or ntfs-3g Yes with ntfs-3g ? Yes with ntfs-3g No Yes with ntfs-3g ? Partial
Apple HFS No No Yes with Paragon HFS+ [66] Yes Yes Yes No ? Yes No ? No
Apple HFS Plus No No Yes with Paragon HFS+ [66] Partial - writing support only to unjournalled FS Yes from Mac OS 8.1 Yes No ? with addon No ? No
FFS No No ? ? ? Yes Yes ? ? ? ? ?
UFS1 No No No Partial - read only ? Yes Yes No ? ? Yes ?
UFS2 No No No Yes ? Yes Yes No ? ? ? ?
LFS No No No ? ? ? No No ? ? ? ?
ext No No No Yes - until 2.1.20 No No No No No No No No
Xiafs No No No Yes - until 2.1.20

Experimental port available to 2.6.32 and later [67][68]

No No No No No No No No
ext2 No No Yes with Paragon ExtFS [69] or partial with Ext2 IFS[70] or ext2fsd[71] Yes No Yes with Paragon ExtFS [72] or ext2fsx Yes No Yes ? ? ? Yes
ext3 No No Yes with Paragon ExtFS [69] or partial with Ext2 IFS[70] or ext2fsd[71] Yes Partial (read only)[citation needed] Yes with Paragon ExtFS [72] or partial with ext2fsx (journal not updated on writing) Partial (read-only)[73][74] No with addon ? Yes ?
ext4 No No Yes with Paragon ExtFS [69] or partial with Ext2 IFS[70] or ext2fsd[71] Yes ? Yes with Paragon ExtFS [72] Partial support in kernel since version 10.1 (read-only)[73][74] No with addon ? ? ?
NOVA No No No Yes No No No No No No No No
Lustre No No No Yes[75] ? ? No ? ? ? Yes ?
NILFS No No ? Yes as an external kernel module ? ? No ? ? ? ? ?
F2FS No No No Yes No No No No No No No No
ReiserFS No No No Yes ? ? Partial Read Only ? with addon ? ? ? Yes
Reiser4 No No No Yes with a kernel patch ? ? No ? ? ? ? ?
OCFS No No No Yes ? ? No No ? ? ? ?
OCFS2 No No No Yes ? ? No No ? ? ? ?
XFS No No No Yes ? ? Partial ? with addon (read only) ? ? ?
TFS Yes
JFS No No No Yes ? ? No Yes ? ? ? ?
QFS No No No Partial - client only[76] ? ? No No ? ? Yes ?
Be File System No No No Partial - read-only ? ? No No Yes ? ? ?
NSS No No No Yes via EVMS[cv] ? ? No No ? ? ? ?
NWFS Partial (with Novell drivers) No No ? ? ? Yes No ? ? ? ?
ODS-2 No No No ? ? ? No No ? ? ? ?
ODS-5 No No No ? ? ? No No ? ? ? ?
UDF No ? Yes Yes ? Yes Yes ? ? ? Yes ?
VxFS No No No Yes ? ? No No ? ? Yes ?
Fossil No No No Yes[cw] No Yes[cw] Yes[cw] No No No Yes[cw] ?
ZFS No No No Yes with FUSE[77] or as an external kernel module[78] ? Yes with Read/Write Developer Preview[79] Yes ? ? ? Yes ?
Btrfs No No Partial with WinBtrfs[80] Yes ? ? ? ? ? ? ? ? Yes
VMFS2 No No No ? ? ? No No ? ? ? ?
VMFS3 No No No ? ? ? No No ? ? ? ?
IBM HFS No No No No No No No No No No No Yes
IBM zFS No No No No No No No No No No No Yes
ReFS No No Yes (from Windows Server 2012 and from Windows 8.1) Partial - Only ReFS 1.x with Paragon ReFS for Linux ? ? ? ? ? ? ? ?
ISO 9660 Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
Rock Ridge No No No Yes No Yes Yes No No Yes Yes ?
Joliet ("CDFS") No Yes Yes Yes ? Yes Yes Yes Yes ? Yes ?
SquashFS No No Partial (There are ports of unsquashfs and mksquashfs.) Yes No Partial (There are ports of unsquashfs and mksquashfs.) Partial (There are ports of unsquashfs and mksquashfs and fusefs-port.[81][82]) No No No No No
File system DOS Windows 9x Windows NT Linux "classic" Mac OS macOS FreeBSD OS/2 BeOS Minix Solaris z/OS

See also[edit]

Notes[edit]

  1. ^ most permissive implementation
  2. ^ 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.
  3. ^ 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.
  4. ^ a b c d e 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.
  5. ^ a b c d e For filesystems that have variable allocation unit (block/cluster) sizes, a range of size are given, indicating the maximum volume sizes for the minimum and the maximum possible allocation unit sizes of the filesystem (e.g. 512 bytes and 128 KiB for FAT — which is the cluster size range allowed by the on-disk data structures, although some Installable File System drivers and operating systems do not support cluster sizes larger than 32 KiB).
  6. ^ 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 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.
  7. ^ 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 am 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. Linux has a pathname limit of 4,096.
  8. ^ 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 MiB.
  9. ^ 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.
  10. ^ a b c d e f 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.
  11. ^ a b c On-disk structures would support up to 4 GiB, but practical file size is limited by volume size.
  12. ^ While FAT32 partitions this large work fine once created, some software won't allow creation of FAT32 partitions larger than 32 GiB. This includes, notoriously, the Windows XP installation program and the Disk Management console in Windows 2000, XP, 2003 and Vista. Use FDISK from a Windows ME Emergency Boot Disk to avoid.[15]
  13. ^ 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.
  14. ^ 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.
  15. ^ a b This is the limit of the on-disk structures. The NTFS driver for Windows NT limits the volume size that it can handle to 256 TiB and the file size to 16 TiB respectively.
  16. ^ 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.
  17. ^ 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.
  18. ^ a b Depends on kernel version and arch. For 2.4 kernels the max is 2 TiB. For 32-bit 2.6 kernels it is 16 TiB. For 64-bit 2.6 kernels it is 8 EiB.
  19. ^ ReiserFS has a theoretical maximum file size of 1 EiB, but "page cache limits this to 8 Ti on architectures with 32 bit int"[25]
  20. ^ Note that the filename can be much longer XFS#Extended attributes
  21. ^ a b XFS has a limitation under Linux 2.4 of 64 TiB file size, but Linux 2.4 only supports a maximum block size of 2 TiB. This limitation is not present under IRIX.
  22. ^ 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.
  23. ^ Varies wildly according to block size and fragmentation of block allocation groups.
  24. ^ a b NSS allows files to have multiple names, in separate namespaces.
  25. ^ 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.
  26. ^ Maximum combined filename/filetype length is 236 bytes; each component has an individual maximum length of 255 bytes.
  27. ^ Maximum pathname length is 4,096 bytes, but quoted limits on individual components add up to 1,664 bytes.
  28. ^ This restriction might be lifted in newer versions.
  29. ^ a b Sparse files can be larger than the file system size, even though they can't contain more data.
  30. ^ 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.
  31. ^ ISO 9660#Restrictions
  32. ^ Through the use of multi-extents, a file can consist of multiple segments, each up to 4 GiB in size. See ISO 9660#The 2 GiB .28or 4 GiB depending on implementation.29 file size limit
  33. ^ 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.
  34. ^ Implemented in later versions as an extension
  35. ^ 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.
  36. ^ 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.
  37. ^ The f-node contains a field for a user identifier. This is not used except by OS/2 Warp Server, however.
  38. ^ 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.
  39. ^ As of Vista, NTFS has support for Mandatory Labels, which are used to enforce Mandatory Integrity Control.[31]
  40. ^ Initially, ReFS lacked support for ADS, but Server 2012 R2 and up add support for ADS on ReFS
  41. ^ Data checksums not enabled by default
  42. ^ a b c d Access-control lists and MAC labels are layered on top of extended attributes.
  43. ^ Some operating systems implemented extended attributes as a layer over UFS1 with a parallel backing file (e.g., FreeBSD 4.x).
  44. ^ 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.
  45. ^ Journal and metadata only[32]
  46. ^ Creation time stored since June 2015, xfsprogs version 3.2.3
  47. ^ Metadata checksums stored since June 2015, xfsprogs version 3.2.3
  48. ^ a b c d e f The local time, timezone/UTC offset, and date are derived from the time settings of the reference/single timesync source in the NDS tree.
  49. ^ 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.
  50. ^ a b Some file and directory metadata is stored on the NetWare server irrespective of whether Directory Services is installed or not, like date/time of creation, file size, purge status, etc; and some file and directory metadata is stored in NDS/eDirectory, like file/object permissions, ownership, etc.
  51. ^ Record Management Services (RMS) attributes include record type and size, among many others.
  52. ^ 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.
  53. ^ MAC/Sensitivity labels in the file system are not out of the question as a future compatible change but aren't part of any available version of ZFS.
  54. ^ Solaris "extended attributes" are really full-blown alternate data streams, in both the Solaris UFS and ZFS.
  55. ^ disabling copy-on-write (COW) to prevent fragmentation also disables checksumming
  56. ^ Access times are preserved from the original file system at creation time, but Rock Ridge file systems themselves are read-only.
  57. ^ libburnia can backup and restore ACLs with file system creation and extraction programs, but no kernel support exists.
  58. ^ a b libburnia can backup and restore extended attributes and MAC labels with file system creation and extraction programs, but no kernel support exists.
  59. ^ 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.
  60. ^ 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
  61. ^ Optional journaling of data
  62. ^ As of Windows Vista, NTFS fully supports soft links.[35] 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.
  63. ^ a b NTFS stores everything, even the file data, as meta-data, so its log is closer to block journaling.
  64. ^ a b 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.
  65. ^ NTFS does not internally support snapshots, but in conjunction with the Volume Shadow Copy Service can maintain persistent block differential volume snapshots.
  66. ^ Supported only on Windows Server SKUs. However, partitions deduplicated on Server can be used on Client.
  67. ^ 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.
  68. ^ 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.[37] 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.[38][39]
  69. ^ 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).[40]
  70. ^ 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.
  71. ^ "Soft dependencies" (softdep) in NetBSD, called "soft updates" in FreeBSD provide meta-data consistency at all times without double writes (journaling)
  72. ^ a b c d e UDF, LFS, and NILFS are log-structured file systems and behave as if the entire file system were a journal.
  73. ^ Linux kernel versions 2.6.12 and newer.
  74. ^ a b c Off by default.
  75. ^ Full block journaling for ReiserFS was added to Linux 2.6.8.
  76. ^ a b Reiser4 supports transparent compression and encryption with the cryptcompress plugin which is the default file handler in version 4.1.
  77. ^ Optionally no on IRIX.
  78. ^ 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.
  79. ^ 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.
  80. ^ 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.[44]
  81. ^ a b Available only in the "NFS" namespace.
  82. ^ a b These are referred to as "aliases".
  83. ^ VxFS provides an optional feature called "Storage Checkpoints" which allows for advanced file system snapshots.
  84. ^ 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.
  85. ^ Applies only to proprietary ZFS release and ZFS On Linux. Encryption support is not yet available in whole OpenZFS.[45][46]
  86. ^ 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.
  87. ^ a b Variable block size refers to systems which support different block sizes on a per-file basis. (This is similar to extents but a slightly different implementational choice.) The current implementation in UFS2 is read-only.
  88. ^ a b SuperStor in DR DOS 6.0, PalmDOS 1.0, PC DOS 6.1 and 6.3, Stacker in Novell DOS 7, OpenDOS 7.01, DR-DOS 7.02 (and higher), and PC DOS 7.0 (and higher), DoubleSpace in MS-DOS 6.0 and 6.20, and DriveSpace in MS-DOS 6.22 and Windows 95, 98 and Me are disk compression schemes for FAT, but are not supported for other operating systems.
  89. ^ Only for "stuffed" inodes
  90. ^ a b c d Other block:fragment size ratios supported; 8:1 is typical and recommended by most implementations.
  91. ^ e2compr, a set of patches providing block-based compression for ext2, has been available since 1997, but has never been merged into the mainline Linux kernel.
  92. ^ a b c Fragments were planned, but never actually implemented on ext2 and ext3.
  93. ^ Stores one largest extent in disk, and caches multiple extents in DRAM dynamically.
  94. ^ a b Tail packing is technically a special case of block suballocation where the suballocation unit size is always 1 byte.
  95. ^ In "extents" mode.
  96. ^ 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.
  97. ^ Depends on UDF implementation.
  98. ^ a b c Linux supports the zisofs extension that allows per-file compression, and file system creation tools may support creating such images. zisofs images are incompatible on non-Linux OSes.
  99. ^ a b c ISO 9660 Level 3 only
  100. ^ Supported using only EVMS; not currently supported using LVM
  101. ^ a b c d Provided in Plan 9 from User Space

References[edit]

  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. ^ "hammer license". 2017-09-27. 
  7. ^ tfs: Next Generation File System, Redox OS, 2017-10-28, retrieved 2017-10-29 
  8. ^ "This Year in Redox - Redox - Your Next(Gen) OS". www.redox-os.org. Retrieved 2017-10-29. 
  9. ^ "Rust-Based Redox OS Had A Busy Year With Rewriting Its Kernel, Writing A File-System - Phoronix". www.phoronix.com. Retrieved 2017-10-29. 
  10. ^ "TFS File-System Still Aiming To Compete With ZFS, Written In Rust - Phoronix". phoronix.com. Retrieved 2017-10-29. 
  11. ^ "Contributors to redox-os/tfs · GitHub". 
  12. ^ redox: Redox: A Rust Operating System, Redox OS, 2017-10-28, retrieved 2017-10-29 
  13. ^ "SFS file system". IBM Knowledge Center. 
  14. ^ a b c d "File System Functionality Comparison". Microsoft Developer Network. Microsoft. Retrieved 4 November 2017. 
  15. ^ "Limitations of the FAT32 File System in Windows XP". Microsoft. 
  16. ^ "GEMDOS Overview". 
  17. ^ a b c d Steven Sinofsky (January 16, 2012). "Building the next generation file system for Windows: ReFS". 
  18. ^ "Resilient File System (ReFS) overview". docs.microsoft.com. Retrieved 2017-11-07. 
  19. ^ "Mac OS X: Mac OS Extended format (HFS Plus) volume and file limits". support.apple.com. July 26, 2016. 
  20. ^ "Mac OS 8, 9: Mac OS Extended Format - Volume and File Limits". support.apple.com. February 20, 2012. 
  21. ^ Matthew Dillon. "HAMMER2 Design Document". 
  22. ^ Matthew Dillon (June 21, 2008). "The HAMMER Filesystem" (PDF). 
  23. ^ "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 KB => 16 Exa * 32 KB => 512 ZettaBytes. 
  24. ^ "Interviews/EricSandeen". Fedora Project Wiki. 9 June 2008. 
  25. ^ "FAQ". namesys. 15 October 2003. Archived from the original on 19 July 2006. 
  26. ^ "Joliet Specification". 22 May 1995. Archived from the original on 14 April 2009. 
  27. ^ "RT–11 Volume and File Formats Manual" (PDF). Digital Equipment Corporation. August 1991. p. 1-26 .. 1-32. 
  28. ^ "RT–11 Volume and File Formats Manual" (PDF). Digital Equipment Corporation. August 1991. p. 1-4 .. 1-12. 
  29. ^ "Format of the Unix 6 file system" (PDF). Retrieved 2016-02-21. 
  30. ^ 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. 
  31. ^ "Mandatory Integrity Control". Microsoft Developer Network. 
  32. ^ "Ext4 Metadata Checksums - Ext4". ext4.wiki.kernel.org. 
  33. ^ "Mac users, meet APFS: macOS's new file system - ZDNet". 
  34. ^ "Apple File System Guide - FAQ". 
  35. ^ Mark Russinovich (February 2007). "Windows Administration: Inside the Windows Vista Kernel: Part 1". TechNet. 
  36. ^ "About Data Deduplication". 
  37. ^ newfs_hfs(8) – Darwin and macOS System Manager's Manual
  38. ^ "File System Comparisons". Apple.  (hasn't been updated to discuss HFSX)
  39. ^ "Technical Note TN1150: HFS Plus Volume Format". Apple.  (Very technical overview of HFS Plus and HFSX.)
  40. ^ fslogger
  41. ^ "Ext4 encryption". 
  42. ^ "F2FS encryption". 
  43. ^ "XFS, Reflinks and Deduplication". 
  44. ^ Filesystem Events tracked by NSure
  45. ^ "How to Manage ZFS Data Encryption". 
  46. ^ https://github.com/zfsonlinux/zfs/pull/5769
  47. ^ "Btrfs FAQ". Btrfs Wiki. 
  48. ^ "GitHub - redox-os/tfs: Next Generation File System". GitHub. Retrieved 2017-11-14. 
  49. ^ "Add ATA trim support, trim sectors which are no longer used. · redox-os/tfs@bce6ea1". GitHub. Retrieved 2017-11-14. 
  50. ^ "Btrfs UseCases". Btrfs Wiki. 
  51. ^ a b c resize2fs(8) – Linux Programmer's Manual – Administration and Privileged Commands
  52. ^ a b c d e f PartitionMagic
  53. ^ https://git.kernel.org/cgit/linux/kernel/git/jaegeuk/f2fs-tools.git/
  54. ^ "IBM's Journaled File System (JFS) for Linux". 
  55. ^ "nilfs-resize(8)". 
  56. ^ "ntfsresize(8)". 
  57. ^ "Resize reiserfs". Reiserfs wiki. 
  58. ^ "Resizing File Systems". 
  59. ^ "Growing an XFS File System". 
  60. ^ "Resizing and Growing Disks". 
  61. ^ a b "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. 
  62. ^ a b "Mapping DOS FAT to MDFAT". 
  63. ^ a b "CVF Region: MDFAT". 
  64. ^ "XFS Adds Shared Data Extents For Linux 4.9". 
  65. ^ "AIX documentation: JFS data compression". IBM. 
  66. ^ a b "Paragon HFS+ for Windows 10". 
  67. ^ "Porting an Ancient Filesystem to Modern Linux". Time To Pull The Plug. 
  68. ^ "A port of the xiafs filesystem to modern Linux kernels". Github (cdtk). 
  69. ^ a b c "Paragon ExtFS for Windows". 
  70. ^ a b c "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.)
  71. ^ a b c Branten, Bo. "Ext2Fsd Project: Open source ext3/4 file system driver for Windows (2K/XP/WIN7/WIN8)". 
  72. ^ a b c "Paragon ExtFS for Mac". 
  73. ^ a b "FreeBSD Handbook". 
  74. ^ a b "Debian GNU/kFreeBSD". 
  75. ^ "Lustre Wiki". 
  76. ^ "About Shared File Systems and the Linux Client - Sun QFS and Sun Storage Archive Manager 5.3 Installation Guide". Retrieved 2016-03-14. 
  77. ^ "ZFS Filesystem for FUSE/Linux". Wizy Wiki. 30 November 2009. Archived from the original on 13 May 2013. 
  78. ^ "ZFS on Linux". Lawrence Livermore National Laboratory. 
  79. ^ Kim, Arnold (4 October 2007). "Apple Seeds ZFS Read/Write Developer Preview 1.1 for Leopard". Mac Rumors. 
  80. ^ "WinBtrfs". Github (maharmstone). 
  81. ^ "squashfs-tools". Freshports. 
  82. ^ "fusefs-squashfuse". Freshports. 

External links[edit]