Système de fichiers
7918
31334552
2008-07-05T22:58:59Z
Archibald.c
11759
/* Journalisés */
{{voir homonymes|FS|SGF}}
Un '''système de fichiers''' (''file system'' ou ''filesystem'' en anglais) ou '''système de gestion de fichiers''' (SGF) est une structure de données permettant de stocker les informations et de les organiser dans des fichiers sur ce que l'on appelle des mémoires secondaires (disque dur, disquette, CD-ROM, clé USB, [[Solid State Drive|disques SSD]], etc.). Une telle gestion des [[Fichier informatique|fichiers]] permet de traiter, de conserver des quantités importantes de [[donnée]]s ainsi que de les partager entre plusieurs [[Programme informatique|programmes informatiques]]. Il offre à l'[[utilisateur (informatique)|utilisateur]] une vue abstraite sur ses [[donnée]]s et permet de les localiser à partir d'un chemin d'accès.
Il existe d'autres façons d'organiser les [[donnée]]s, par exemple les [[système de gestion de base de données|systèmes de gestion de base de données]] (notamment [[base de données relationnelle]]) et les [[fichier indexé|fichiers indexés]].
== Généralités ==
Le volume des [[donnée]]s traitées par les [[Logiciel|applications informatiques]] atteignant plusieurs méga et giga octets, ces données ne peuvent pas être stockées dans la [[Mémoire informatique|mémoire centrale]]. On souhaite également disposer d'un stockage à long terme qui ne disparaisse pas lorsqu'on éteint la machine. Le principe 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 chiffres 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 du fichier (l'ouverture du fichier, sa copie dans un second emplacement ou sa suppression) à partir de son 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 [[Fichier informatique|fichiers]] est vu comme une arborescence : les [[Fichier informatique|fichiers]] sont regroupés dans des répertoires (concept utilisé par la plupart des systèmes d’exploitation). Ces répertoires contiennent soit des [[Fichier informatique|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 ==
Différentes méthodes permettent d'associer un nom de fichier à son contenu. Dans le cas du système de fichier FAT, ancien système de fichier de MS/DOS et de Windows encore largement utilisé sur les supports amovibles comme les clés USB, chaque répertoire contient une table associant les noms de fichier à leur taille et un index pointant vers la table d'allocation de fichiers, une zone réservée du disque indiquant pour chaque bloc de données l'index du bloc suivant du même fichier.
Dans le cas des systèmes de fichier d'Unix (ou de Linux); les fichiers et les répertoires sont identifiés par un numéro unique le numéro d'[[inode]]. Ce numéro permet d'accéder à une structure de données ([[inode]]) regroupant toutes les informations sur un fichier à l'exception du nom, notamment la protection d'accès en lecture, en écriture ou des listes de dates, ainsi que le moyen d'en retrouver le contenu. Le nom est stocké dans le répertoire associé à un numéro d'inode. Cette organisation présente l'avantage qu'un fichier unique sur disque peut être connu du système sous plusieurs noms.
L'organisation du système de fichier NTFS est encore plus complexe, fonctionnant un peu à la façon d'une base de données.
== Restriction de nommage ==
Le nom d'un fichier est une chaîne de caractères, parfois de taille limitée, et dans laquelle certains caractères ayant un sens pour le système d'exploitation peuvent être interdits. C'est le cas par exemple pour les caractères « : », « / » ou « \ » sous Windows. Les systèmes de fichier Unix sont généralement neutres pour le jeu de caractère utilisé (considéré au niveau bas comme une simple suite d'octets). [[New Technology File System|NTFS]], utilise le jeu de caractères [[UTF-16]] pour les noms de fichiers.
Sous Windows, le nom d'un fichier possède en général un suffixe (extension) séparé par un point qui est fonction du contenu du fichier : .txt pour du texte par exemple ; de cette extension va dépendre le choix des applications prenant en charge ce fichier. Toutefois, sous Linux/Unix, l'extension fait simplement partie du nom de fichier, son format est détecté par le type [[Multipurpose Internet Mail Extensions|MIME]] inscrit de façon transparente dans l'en-tête des fichiers.
{{DEFAULTSORT:}}
== [[Métadonnée]]s ==
Chaque fichier est décrit par des [[métadonnée]]s (conservées dans l'[[inode]] sous Linux/Unix), alors que le contenu du [[Fichier informatique|fichier]] est écrit dans un ou plusieurs blocs du support de stockage, selon la tailles du fichier.
Les [[métadonnée]]s les plus courantes sous [[UNIX]] sont :
* [[droits d'accès]] en lecture, écriture et exécution selon l'[[utilisateur (informatique)|utilisateur]], le groupe, ou les autres ;
* dates de dernier accès, de modification des [[métadonnée]]s ([[inode]]), de modification des [[donnée]]s (block) <ref>et donc de l'inode car la modification des [[donnée]]s implique le changement de la date de modification des données dans l'[[inode]] et donc implique un changement de l'[[inode]] elle-même !</ref> ;
* propriétaire et groupe propriétaire du fichier ;
* taille du fichier ;
* nombre d'autres [[inode]]s (liens) pointant vers le fichier ;
* nombre de blocs utilisés par le fichier <ref>différent de la taille du fichier car les blocs sont de taille fixe, ainsi un fichier de 5 Kio sur un système utilisant des blocs de 4 Kio prendra 2 blocs complets. Pour les fichiers de grande taille, cela se complique encore car les premiers blocs servent à l'adressage des suivants.</ref> ;
* type de fichier : fichier simple, lien symbolique, répertoire, périphérique, etc.
Sur la plupart des systèmes Unix, la commande ''stat'' permet d'afficher l'intégralité du contenu de l'[[inode]].
== Fonctions du SGF ==
Le système de gestion des fichiers assure plusieurs fonctions :
* Manipulation des fichiers : des opérations sont définies pour permettre la manipulation des fichiers par les programmes d’application, à savoir : créer/détruire des fichiers, insérer, supprimer et modifier un article dans un fichier.
* Allocation de la place sur mémoires secondaires : les fichiers étant de taille différente et cette taille pouvant être dynamique, le SGF alloue à chaque fichier un nombre variable de granules de mémoire secondaire de taille fixe (blocs).
* Localisation des fichiers : il est nécessaire de pouvoir identifier et retrouver les données ; pour cela, chaque fichier possède un ensemble d’informations descriptives (nom, adresse…) regroupées dans un inode.
* Sécurité et contrôle des fichiers : le SGF permet le partage des fichiers par différents programmes d’applications tout en assurant la sécurité et la confidentialité des données. En effet, un nom et une clé de protection sont associés à chaque fichier afin de le protéger contre tout accès non autorisé ou mal intentionné lors du partage des fichiers. Le SGF se doit aussi de garantir la conservation des fichiers en cas de panne du matériel ou du logiciel.
== Organisation des fichiers ==
L'organisation physique sous-jacente du médium utilisé (blocs, linéaire) et les mécanismes d'entrée/sortie de bas-niveau sont masqués. L'utilisateur peut donc organiser ses données permanentes en les distribuant dans différents fichiers. Le contenu des fichiers est déterminé par leur [[Format de données|format]], qui dépend de l'application utilisée.
En plus de cette organisation abstraite, les systèmes de fichiers peuvent inclure la compression ou le chiffrement automatique des données, une gestion plus ou moins fine des droits d'accès aux fichiers, et une [[Journal (système de fichiers)|journalisation des écritures]] (pour la robustesse, en cas de défaillance du système). De plus, certains systèmes de fichiers peuvent s'étendre sur un réseau entier, comme par exemple NFS. Certains de ces systèmes de fichiers en réseau peuvent être distribués ou répartis, comme par exemple PVFS2.
== Systèmes de fichiers et [[système d'exploitation|systèmes d'exploitation]] associés ou compatibles ==
Le choix du système de gestion des fichiers se fait principalement en fonction du système d’exploitation. Généralement, les systèmes d’exploitation les plus récents supportent un grand nombre de systèmes de fichiers.
MS-DOS (et compatibles) et les premières versions de Windows 95 utilisaient les systèmes de fichiers [[FAT16]] et [[FAT12]] (pour les supports de moins de 16 Mio). À partir de Windows 95 OSR2, le choix entre les systèmes de fichiers a commencé à s'élargir. [[FAT16]] et [[FAT32]] pouvaient tous les deux être utilisés, et à partir d'une certaine taille de partition, le choix du système [[FAT32]] était alors plus judicieux.
Sous les premières versions de Windows NT (NT3.x et NT4), il y a le choix entre le système [[FAT16]] et [[NTFS]]. Ce système d'exploitation ne supporte pas le [[FAT32]]. Généralement, le système [[NTFS]] est conseillé, car il procure une sécurité plus grande ainsi que des performances accrues par rapport au [[FAT]].
Contrairement aux précédentes versions de Windows NT, Windows NT5 ([[Microsoft Windows 2000|Windows 2000]]) accepte des partitions de type [[FAT16]], [[FAT32]] et [[NTFS]]. Ainsi, le système de fichiers le plus récent (NTFS 5) est conseillé puisqu’il offre de plus nombreuses fonctionnalités que les systèmes [[FAT]].
Le SP1 de Vista propose de formater en [[exFAT]] qui est une grosse évolution de la FAT, proposant une meilleure fiabilité, une "vraie" gestion des noms longs, et l'[[Access_Control_List|ACL]]. [[Microsoft Windows CE|Windows CE]] 6 (le futur [[Microsoft Windows Mobile|Windows Mobile]] 7) gère aussi ce nouveau FS. Le but de Microsoft est de remplacer la FAT, principalement utilisé sur les supports amovibles comme les cartes mémoires.
Le monde des Unix (Unix, Linux, BSD, MacOS X) supporte un très grand nombre de systèmes de fichiers. Cela est dû au fait que malgré leur nombre, les systèmes supportés suivent généralement des standards et notamment [[Inode#Spécifications POSIX sur les attributs de fichiers|POSIX]].
===Non journalisés===
* [[Ext]] et [[Ext2]] : ''Extented FS version 2'' ([[Linux]], [[Berkeley Software Distribution|BSD]], [[Microsoft Windows|Windows]] via un pilote)
* [[exFAT]] : ''Extended File Allocation Table'' (nouveau système de fichiers proposé par [[Microsoft]] pour remplacer la FAT sur les supports amovibles)
* [[File Allocation Table|FAT]] : ''File Allocation Table'' ([[DOS]]/[[Microsoft Windows|Windows]], [[Linux]], [[Berkeley Software Distribution|BSD]], [[OS/2]], [[Mac OS X]]). Se décompose en plusieurs catégories :
** [[FAT12]] ;
** [[FAT16]] ;
** [[FAT32]] ;
** [[VFAT]].
* [[Berkeley Fast File System|FFS]] : ''Fast File System'' ([[Berkeley Software Distribution|BSD]], [[Linux]] expérimental)
* [[Hierarchical File System|HFS]] : ''Hierarchical File System'' ([[Mac OS]], [[Mac OS X]], [[Linux]])
* [[High Performance File System|HPFS]] : ''High Performance FileSystem'' ([[OS/2]], [[Linux]])
* [[MINIX fs|minix fs]] ([[minix]], [[Linux]])
* [[S5 (système de fichier)|S5]] ([[UNIX System V]], [[Linux]])
* [[Unix File System]] : ([[Berkeley Software Distribution|BSD]], [[Linux]] en lecture seule)
===Journalisés===
* [[BeOS_file_system|BeFS]] ([[BeOS]], [[Haïku (système d'exploitation)|Haïku]], [[Linux]] en lecture seule et expérimental)
* [[Ext3]] : ''Extented FS version 3'' - notamment pour l'ajout de la journalisation ([[Linux]], [[Berkeley Software Distribution|BSD]])
* [[Ext4]] : ''Extented FS version 4'' - notamment pour étendre sa capacité à 1024 peta-octets (1 exa-octet)([[Linux]] expérimental)
* [[HFS+]] ([[Mac OS X]], [[Linux]])
* [[JFS]] ([[AIX]], [[OS/2]], [[Linux]])
* [[JFS2]] AIX5
* LFS : ([[Linux]])
* NSS : ''Novell Storage Services'' ([[Netware]] et [[Suse Linux]])
* [[New Technology File System|NTFS]] : ''New Technology FileSystem'' ([[Microsoft Windows|Windows]] NT/2000/XP/Vista, [[Linux]] (écriture disponible grace au pilote [[NTFS-3G]]), [[Mac OS X]] en lecture seule)
* [[ReiserFS]] ([[Linux]], [[Berkeley Software Distribution|BSD]] en lecture seule)
* [[Reiser4]] ([[Linux]] expérimental)
* Spufs : ''Synergistic processing unit filesystem''
* [[Unix File System|UFS+]] : ''Unix FS'' + journal ([[Berkeley Software Distribution|BSD]], [[Linux]] en lecture seule)
* [[XFS]] ([[Irix]], [[Linux]], [[Berkeley Software Distribution|BSD]] en lecture seule)
* [[ZFS]] : ''Zettabyte FS'' ([[Solaris (système d'exploitation)|Solaris10]], [[Opensolaris|OpenSolaris]], [[FreeBSD|FreeBSD 7]], [[Mac OS X]] en lecture seule)
===Réseau===
* [[Andrew File System|AFS]] Andrew File System : ([[Aix]], [[Linux]])
* [[Coda (Systèmes de fichiers informatique)|CodaFS]] ([[Linux]])
* [[Network file system|NFS]] (tous les [[UNIX]], [[Linux]], [[Mac OS X]]) ([[Microsoft Windows|Windows]] pour la 4)
* [[NCP]] NetWare Core Protocol (Novell NetWare, [[Linux]] en client seul)
* [[Secure shell file system|SSHFS]] (tous les [[UNIX]] ?, [[Linux]])
* SMB ou ''[[Server Message Block]]'' ([[Microsoft Windows|Windows]]) ([[Linux]], [[Berkeley Software Distribution|BSD]] et [[Mac OS X]] ''via'' [[Samba (informatique)|Samba]])
* [[Common Internet File System|CIFS]] (Evolution de SMB, supporté par [[Samba (informatique)|Samba]] ainsi que par Windows 2000 et XP)
===Cluster===
* [[Global_File_System|GFS2]], ''Global file system'' : [[Linux]]
* [[General Parallel File System|GPFS]], ''General Parallel File Sytem'' : [[Linux]], [[AIX]]
* [[Lustre (système de fichier)|Lustre]], Compression de Linux et de Cluster : [[Linux]]
* [[OCFS2]], développé par Oracle : [[Linux]]
* [[PVFS2]], ''Parallel Virtual FileSystem version 2'' : [[Linux]], [[UNIX]]
=== Spécialisés ===
* CFS ''[[Cryptographic File System]]'' : FS chiffré ([[Berkeley Software Distribution|BSD]], [[Linux]])
* [[cramfs]] : FS compressé ([[Linux]] en lecture seule)
* [[Encrypting_File_System|EFS]] ''Encrypting File System'' : FS chiffré au dessus de [[New Technology File System|NTFS]] ([[Microsoft Windows|Windows]])
* [[ISO 9660]] : en lecture seule sur tous les systèmes lisant les CDROM/DVDROM de données
* [[JFFS]] et [[JFFS2]] : FS pour support physique sans block, typiquement des cartes flash. Il est compressé et journalisé ([[Linux]])
* [[QNX4fs]] : FS utilisé pour le temps réel ([[QNX]], [[Linux]] en lecture seule)
* [[Format universel de disque|UDF]] : le format de disque universel (système de fichiers des DVD-ROM et des disques optiques réinscriptibles tels les CD-RW, DVD±RW, etc.)
* [[VMFS]] : FS dédié à la virtualisation ([[VMware]])
=== Temporaires ===
* [[ramfs]], le système de fichiers temporaire en [[Mémoire vive|mémoire RAM]] le plus simple et efficace qui soit, basé sur la gestion du cache du [[noyau Linux]].
* [[tmpfs]], le nom générique d'un système de fichier temporaire, mais aussi son implémentation (dérivée de [[ramfs]]) dans le [[noyau Linux]] 2.6.x
=== Méta systèmes de fichiers ===
* [[unionfs]], une implémentation d'''[[union mount]]'' dans le [[noyau Linux]], consistant à merger différents systèmes de fichiers en un unique point de montage
* [[aufs]], une autre implémentation de unionfs
===À classer…===
* [[ODS]] ([[Virtual Memory System|VMS]], [[Virtual Memory System|OpenVMS]])
* [[Devfs]] et [[udev]]
* [[ADFS]] : Acorn Disc Filing System (RiscOS, [[Linux]] expérimental)
* [[AFFS]] : fichiers rapides d'[[Amiga]]
* [[CBMFS]] : Le système de fichiers pour Commodore 1581/1541
* [[DTFS]] : DeskTop File System ([[UNIX]])
* [[MFS]] ([[Macintosh]])
* [[NWFS]] : système de fichiers Novell NetWare
* [[SFS]] : ''Secure file system''
* [[Virtual Memory System|OpenVMS]] : système de fichiers Spiralog
* [[FATX]] : système de fichiers pour Xbox
* [[CDfs]] : système de fichier virtuel pour [[Linux]] qui permet d'accéder aux données et aux pistes audio d'un [[disque compact]].
* [[uc/FS]] : système de fichiers pour OS uCOS//II www.micrium.com
== Notes et références ==
<references />
== Voir aussi ==
* [[Fichier informatique|Fichier]]
* [[Répertoire (informatique)|Répertoire]]
* [[Système de fichiers virtuel]]
* [[Gestion électronique des documents|GED]]
* [[Point de montage]]
* [[Gestionnaire de fichiers]]
* [[Comparaison des systèmes de fichiers]]
==Liens externes==
* {{fr}} [http://jfenal.free.fr/Traduc/FSHOWTO/filesystems-howto.fr.html Description de tous les systèmes de fichiers]
* {{fr}} [http://www.malekal.com/filesystem.html Tutorial sur le fonctionnement des systèmes de fichiers sous GNU/Linux]
* {{en}} [http://arstechnica.com/articles/paedia/past-present-future-file-systems.ars From BFS to ZFS: past, present, and future of file systems], par Jeremy Reimer (ars technica), 16 mars 2008.
* {{fr}} [http://linuxfr.org/2008/04/04/23938.html Les systèmes de fichiers pour disques SSD (LINUXFR.ORG)], par Patrick Guignot, le 4 avril 2008
* Un exemple de [http://ftp.traduc.org/doc-vf/gazette-linux/html/2004/109/lg109-A.html SGF virtuel]
[[Catégorie:Système de fichiers|*]]
[[da:Filsystem]]
[[de:Dateisystem]]
[[en:File system]]
[[eo:Dosiersistemo]]
[[es:Sistema de archivos]]
[[eu:Fitxategi sistema]]
[[fi:Tiedostojärjestelmä]]
[[he:מערכת קבצים]]
[[hu:Fájlrendszer]]
[[id:Sistem berkas]]
[[it:File system]]
[[ja:ファイルシステム]]
[[ko:파일 시스템]]
[[lt:Failų sistema]]
[[nl:Bestandssysteem]]
[[no:Filsystem]]
[[pl:System plików]]
[[pt:Sistema de ficheiros]]
[[ru:Файловая система]]
[[sk:Súborový systém]]
[[sl:Datotečni sistem]]
[[sv:Filsystem]]
[[uk:Файлова система]]
[[zh:文件系统]]