Le terme système de fichiers (abrégé « FS » pour ., parfois en anglais) désigne de façon ambigüe : soit l'organisation hiérarchique des fichiers au sein d'un système d'exploitation (on parle par exemple du système de fichiers d'une machine Unix organisé à partir de sa racine) ; soit l'organisation des fichiers au sein d'un volume physique ou logique, qui peut être de différents types (par exemple NTFS, FAT, FAT32, ext2, ext3, ext4, ZFS, btrfs, etc.), et qui a également une racine mais peut en avoir plusieurs : soit parce que le système de fichiers permet de prendre des instantanés (snapshots), soit parce que le système de fichiers (par exemple : ZFS) permet l'existence de volumes virtuels (datasets sous ZFS), qui partagent un même espace physique, mais peuvent être montés à des endroits différents d'une même hiérarchie de fichiers, ce qui permet la dé-duplication entre des volumes différents et a l'avantage de ne pas imposer à chaque volume virtuel de réserver un espace fixe difficile à modifier après coup. De façon générale, un système de fichiers ou système de gestion de fichiers (SGF) est une façon de stocker les informations et de les organiser dans des fichiers sur ce que l'on appelle, en génie logiciel, des mémoires secondaires. (pour le matériel informatique, il s'agit de mémoire de masse comme un disque dur, un disque SSD, un CD-ROM, une clé USB, une disquette, etc.). Une telle gestion des fichiers permet de traiter, de conserver des quantités importantes de données ainsi que de les partager entre plusieurs programmes informatiques. Il offre à l'utilisateur une vue abstraite sur ses données et permet de les localiser à partir d'un chemin d'accès.

Il existe d'autres façons d'organiser les données, par exemple les bases de données (notamment base de données relationnelle) et les fichiers indexés.

Histoire

La carte perforée a progressivement disparu à partir de 1970 lorsque sont apparues les unités d'entrée-sortie à bande magnétique et à disquettes souples de format « 8 pouces » et des mémoires de masse plus performantes.

En 1964, le système DECtape de la société DEC permet d'enregistrer les données sur bandes magnétiques plutôt que sur cartes perforées.

En 1968, GEORGE 3 était doté d'un magasin de fichier (file store) enregistrant les fichiers dans une arborescence dans l'idée de Multics. Chaque utilisateur du système disposait d'un dossier utilisateur (home) avec autant de sous-dossiers que nécessaire. Les dossiers utilisateurs pouvaient être accédés directement ou à travers un chemin, comme : :MASTER.USERS.COMPSCI,JOHN. Un système de listes de contrôle d'accès (ACL) était utilisé pour la sécurité permettant de configurer l'accès par utilisateur et par groupe. Le système de fichiers était organisé sur deux niveaux : l'un sur disque, et l'autre sur bande magnétique.

En 1972, ODS-1 est un système de fichiers à plat (utilisé par RSX-11 OS). Il sera remplacé par la suite par ODS-2 et ODS-5.

En 1974, le système de fichiers CP/M apparaît. Ce système d'exploitation, enregistre les fichiers sur disquettes suivant une organisation logique spécifique (qui n'a pas été reprise par MS-DOS), et peut remplir les disquettes jusqu'à ce qu'elles soient complètement remplies.

CP/M peut aussi gérer des disques durs (en réalité, comme le BIOS est « ouvert » et décrit clairement dans la documentation que Digital Research fournissait avec certains de ses logiciels, il est donc possible d'adapter tout système particulier CP/M à toute mémoire de masse disponible - et aux périphériques dont on dispose).

Chaque fichier a un nom et une extension. Plus précisément, la syntaxe est : <nom du fichier (8 octets maximum)>.<extension (3 octets maximum)>.

En 1978 apparaît le premier système de fichiers d'Apple.

En 1980, le système FAT12 apparaît. Le système FAT16 en 1984.

Le BIOS parameter block (BPB) est introduit avec le PC DOS 2.0 . Cette version introduit également les bits attributs lecture seule, archive, étiquette de volume, et dossier pour une hiérarchisation des dossiers.

En 1988, ISO 9660 (une norme de l'ISO) définit le système de fichiers utilisé sur les CD-ROM.

En 1993, apparaît le système NTFS Version 1.0, utilisé par Windows.

En 1994 et 1995, les systèmes de fichiers pour CD-ROMs sont complétés : Rock Ridge et Joliet.

Système de fichiers Inventeur Annéed'introduction Système d'exploitation initial Licence DECtape DEC 1964 PDP-6 Monitor Level-D DEC 1968 TOPS-10 George3 ICT (later ICL) 1968 George 3 ODS-1 DEC 1972 RSX-11 RT-11 file system DEC 1973 RT-11 DOS (GEC) GEC 1973 Core Operating System CP/M file system Gary Kildall 1974 CP/M V6FS Bell Labs 1975 Unix version 6 OS4000 GEC 1977 OS4000 FAT (8-bit) Marc McDonald, Microsoft 1977 Microsoft Standalone Disk BASIC-80 DOS 3.x Apple Computer 1978 Apple DOS Pascal Apple Computer 1978 Apple Pascal CBM DOS Commodore 1978 BASIC Microsoft (for CBM PET) V7FS Bell Labs 1979 Version 7 Unix ODS-2 DEC 1979 VAX/VMS FAT12 Tim Paterson, Seattle Computer Products 1980 QDOS, 86-DOSAFS Carnegie Mellon University 1982 Multiplatform MultoOS DFS Acorn Computers Ltd 1982 Acorn BBC Micro MOS ADFS Acorn Computers Ltd 1983 Acorn Electron (plus tard Arthur RISC OS) FFS Kirk McKusick 1983 4.2BSD ProDOS Apple Computer 1983 ProDOS 8 MFS Apple Computer 1984 Mac OS FAT16 Microsoft, IBM 1984 PC DOS 3.0/MS-DOS 3.0 Elektronika BK tape format NPO "Scientific centre" (maintenant Sitronics) 1985 Vilnius Basic, BK monitor program HFS Apple Computer 1985 Mac OS Amiga OFS Metacomco pour Commodore 1985 AmigaOS High Sierra Ecma International 1985 MS-DOS, Mac OS NWFS Novell 1985 NetWare 286 FAT16B Compaq 1987 Compaq MS-DOS 3.31, DR DOS 3.31 MINIX V1 FS Andrew S. Tanenbaum 1987 MINIX 1.0 Amiga FFS Commodore 1988 AmigaOS 1.3 HPFS IBM et Microsoft 1988 OS/2 ISO 9660:1988 Ecma International, Microsoft 1988 MS-DOS, Mac OS, et AmigaOS JFS1 IBM 1990 AIXIBM introduced JFS with the initial release of AIX Version 3.1 in 1990. This file system now called JFS1. The new JFS, ported from OS/2 to AIX and Linux, was first shipped in OS/2 Warp Server for e-Business in 1999. It was released as JFS2 on AIX 5L. VxFS VERITAS (maintenant Symantec) 1991 développé pour Unix System Laboratories, HP-UXthrough OEM agreement. ext Rémy Card 1992 Linux WAFL NetApp 1992 Data ONTAP MINIX V2 FS Andrew S. Tanenbaum 1992 MINIX 1.6 et 2.0 AdvFS DEC 1993. Digital Unix NTFS Version 1.0 Microsoft, Tom Miller, Gary Kimura 1993 Windows NT 3.1 Propriétaire LFS Margo Seltzer 1993 Berkeley Sprite ext2 Rémy Card 1993 Linux, Hurd UFS1 Kirk McKusick 1994 4.4BSD XFS SGI 1994 IRIX HFS (Hierarchical File System) IBM 1994 MVS/ESA (maintenant z/OS) Rock Ridge Young Minds Inc. 1994 Linux, Mac OS, AmigaOS, et FreeBSD Joliet ("CDFS") Microsoft 1995 Microsoft Windows, Linux, Mac OS, et FreeBSD PFS Michiel Pelt 1996 AmigaOS Romeo Adaptec 1996 Microsoft Windows UDF ISO/ECMA/OSTA 1995 - FAT32 Microsoft 1996 Windows 95bMicrosoft first introduced FAT32 in Windows 95 OSR2 (OEM Service Release 2) and then later in Windows 98. NT-based Windows did not have any support for FAT32 up to Windows NT4; Windows 2000 was the first NT-based Windows OS that received the ability to work with it. QFS LSC Inc, Sun Microsystems 1996 Solaris GPFS IBM 1996 AIX, Linux, Windows Be File System Be Inc., D. Giampaolo, C. Meurillon 1996 BeOS, HaikuOS HFS Plus Apple Computer 1998 Mac OS 8.1 NSS Novell 1998 NetWare 5 PolyServe File System (PSFS) PolyServe 1998 Windows, Linux ODS-5 DEC 1998 OpenVMS 7.2 SFS John Hendrikx 1998 AmigaOS, AROS, MorphOS ext3 1999 Linux ISO 9660:1999 Ecma International, Microsoft 1999 Microsoft Windows, Linux, Mac OS X, FreeBSD, et AmigaOS JFS IBM 1999 OS/2 Warp Server for e-business GFS Sistina (Red Hat) 2000 Linux Melio FS Sanbolic 2001 Windows NTFS Version 3.1 Microsoft 2001 Windows XPPropriétaire ReiserFS Namesys 2001 Linux zFS IBM 2001 z/OS (backported to OS/390) FATX Microsoft 2002 Xbox UFS2 Kirk McKusick 2002 FreeBSD 5.0 Lustre Cluster File Systems (plus tard Oracle Corporation) 2002 Linux OCFS Oracle Corporation 2002 Linux VMFS2 VMware 2002 VMware ESX Server 2.0 ext3cow Zachary Peterson 2003 Linux Fossil Bell Labs 2003 Plan 9 from Bell Labs 4 Google File System Google 2003 Linux PramFS MontaVista 2003 Linux RelianceSpecifications for the Reliance file systems are available here . Datalight 2003 Windows CE, VxWorks, custom ports VxCFS VERITAS (maintenant Symantec) 2004 AIX, HP-UX, Solaris, Linux ZFS Sun Microsystems 2004 Solaris CDDL Reiser4 Namesys 2004 Linux Non-Volatile File System Palm, Inc. 2004 Palm OS Garnet MINIX V3 FS Andrew S. Tanenbaum 2005 MINIX 3 OCFS2 Oracle Corporation 2005 Linux NILFS NTT 2005 Linux VMFS3 VMware 2005 VMware ESX Server 3.0 GFS2 Red Hat 2006 Linux ext4 Various 2006 Linux exFAT Microsoft 2006, 2009 Windows CE 6.0, Windows XP SP3, Windows Vista SP1 Propriétaire TexFAT/TFAT Microsoft 2006 Windows CE 6.0 Btrfs Oracle Corporation 2007 Linux GPL Ceph Sage Weil, Inktank Storage, Red Hat 2007, 2012 Linux WBFSkwiirk and Waninkoko (Wii homebrew) 2008 Wii HAMMER Matthew Dillon 2008 DragonFly BSD Tux3 Various 2008 Linux UBIFS Nokia avec l'aide de l'Université de Szeged 2008 Linux Oracle ACFS Oracle Corporation 2009 Seulement Linux - Red Hat Enterprise Linux 5 et Oracle Enterprise Linux 5 Reliance Nitro Datalight 2009 Windows CE, Windows Mobile, VxWorks, Linux, custom ports LTFS IBM 2010 Linux, Mac OS X, planned Microsoft Windows, LGPL IlesfayFSIlesfay Technology Group 2011 Microsoft Windows, planned Red Hat Enterprise Linux VMFS5 VMware 2011 VMware ESXi 5.0tux 3 stats ReFS Microsoft 2012, 2013 Windows Server 2012 Lanyard Filesystem Dan Luedtke 2012 Linux F2FS Samsung 2012 Linux GPLv2 APFS Apple 2016 macOS Système de fichiers Créateur Année d'introduction Système d'exploitation initial License

Généralités vignette|Exemple d'arborescence de fichier. Le volume des données traitées par les applications informatiques atteint couramment plusieurs centaines de gigaoctets et va jusqu'à plusieurs téraoctets pour certaines applications industrielles. De tels volumes de données ne peuvent pas être stockées dans la mémoire centrale. De plus, un stockage persistant à long terme, permettant de sauvegarder les données traitées ou à traiter pour une utilisation future, est également nécessaire. Le principe employé pour répondre à ce problème consiste à stocker ces données dans des mémoires secondaires sous forme de fichiers, c'est-à-dire de suites de blocs (la plus petite unité que le périphérique de stockage est capable de gérer). Le contenu de ces blocs, simple suite de données binaires, peut être interprété selon le format de fichier comme des caractères, des nombres entiers ou flottants, des codes d'opérations machines, des adresses mémoires, etc. L’échange entre les deux types de mémoire se fait ensuite par transfert de blocs.

L'objectif du système de fichiers est de permettre l'accès au contenu des fichiers stockés (l'ouverture du fichier, son enregistrement sa copie ou son déplacement dans un second emplacement, ou sa suppression) à partir de leur chemin d'accès, formé d'un nom précédé d'une liste de répertoires imbriqués.

Représentation pour l'utilisateur

Pour l'utilisateur, un système de fichiers est vu comme une arborescence : les fichiers sont regroupés dans des répertoires (concept utilisé par la plupart des systèmes d’exploitation). Ces répertoires contiennent soit des fichiers, soit récursivement d'autres répertoires. Il y a donc un répertoire racine et des sous-répertoires. Une telle organisation génère une hiérarchie de répertoires et de fichiers organisés en arbre.

Principe de stockage