Ceci est une ancienne révision du document !



Les systèmes de fichiers sous Linux

Les systèmes de fichiers, il en existe de multiples, gèrent l'organisation des informations mémorisées sur les périphériques de l'ordinateur. Chacun offre des avantages pour certains types d'utilisation… et des désavantages pour d'autres. Connaître leurs principales caractéristiques est nécessaire pour la bonne utilisation d'un équipement.

Dans un disque dur, sont enregistrés tous vos fichiers. Mais l'organisation de ces données n'est pas aussi simple.

  • Un bit est un 1 ou un 0
  • Un octet (byte en anglais) est composé de huit bits
  • Un KibiOctet est un groupe de 1024 octets (2^10), à ne pas confondre avec :
  • Un KiloOctet, qui lui ne contient que 1000 octets, comme un kilomètre contient 1000 mètres.

En fait, chaque bit d'information est un bâtonnet dont l'orientation est soit "Nord" soit "Sud" sur le disque dur, et une tête de lecture va lire/écrire sur chaque bâtonnet.

Il faut donc une "table des matières" à chaque partition d'un disque, qui serait chaque "section" d'une gigantesque bibliothèque.
Une bibliothèque va classer ses livres, souvent selon le Système Dewey, qui attribue un numéro à chaque section, puis sous-section (des dossiers), etc.
Les systèmes de fichiers permettent, de même, d'organiser les fichiers de façon à les retrouver le plus efficacement possible.
Microsoft® Windows® ne sait lire que le Fat et le NTFS, mais Linux utilise la plupart du temps d'autres systèmes de fichiers, qui existent par dizaines : Ext, BtrFS, ReiserFS, JFS, XFS, etc.

Nous comparons plus bas les systèmes de fichiers les plus utilisés dans les mondes Windows et Linux.

Tous les systèmes de fichiers sont différents : Taille maximale de fichiers, taille maximale de partition, journalisation (sécurisation) du système de fichiers, etc.

La taille maximale d'un fichier

Par exemple, le Fat32 limite les fichiers à 4Go, ce qui est problématique pour des films en HD par exemple. Les ficihers trop grands ne sont pas enregistrés totalement, on ne peut récupérer que le début.

La taille maximale d'une partition

Par exemple, le Fat16 (plus utilisé, heureusement) est limité à 4Go. On peut dire que ce n'est plus un facteur limitant aujourd'hui.

La gestion des droits d'accès aux fichiers et répertoires

Il est parfois utile de définir des droits d'accès et/ou d'écriture à des dossiers/fichiers. Tous les systèmes ne le permettent pas, mais tous les systèmes natifs Linux le peuvent.

La journalisation

La journalisation peut s'interpréter comme la sécurisation de l'écriture des données.
En effet, lorsqu'on enregistre sur le disque, que se passe-t-il si l'écriture est interrompue avant son terme ? (Par exemple dans le cas de coupure de courant ou de débranchement "sauvage")
Votre fichier devient « corrompu », incomplet.

La journalisation prévient ce genre d'accident en conservant les anciennes données pendant l'enregistrement, puis en "déplaçant" le fichier là où la sauvegarde a été écrite. Ainsi, en cas de problème l'ancien fichier existe toujours.

FIXME : Je n'ai compris ni l'explication d'origine, ni Wikipedia… Je ne suis donc pas vraiment sûr de ce que j'ai écrit.

La journalisation entraîne une (faible, mais parfois visible) diminution des performances, et est totalement incompatible avec les SSD. (Lien vers la page de doc !) C'est aussi peu utile pour les périphériques de stockage Usb.

Particularité des systèmes de fichiers Unix/Linux : inode

Les utilisateurs habitués de Microsoft Windows savent qu'il n'est normalement pas possible de modifier les propriétés d'un fichier (renommer, déplacer, supprimer…) quand celui-ci est ouvert par un programme ; cette restriction n'existe pas sur les systèmes de fichiers de type Unix/Linux.
La raison est que sur les systèmes de fichiers Linux, les fichiers sont indexés selon un numéro, appelé inode, et que chaque inode possède de nombreux attributs associés à lui, tels les droits d'accès, le nom du fichier, etc.
Lorsque vous supprimez un fichier, l'inode est « délié » du système de fichiers (c'est-à-dire qu'il n'est plus indexé). Mais si des programmes ont un lien avec l'inode (par exemple, si un document texte est ouvert dans un éditeur de texte, il a un lien avec cet éditeur de texte), le fichier continue d'exister dans le système d'exploitation et continue d'être mis à jour.
Un fichier n'est réellement effacé que lorsque tous les liens avec son inode ont été coupés. Ce que tout ceci signifie est que vous pouvez supprimer des programmes alors qu'ils sont en fonctionnement sans faire planter votre système d'exploitation, renommer ou déplacer des fichiers avant qu'ils aient fini d'être téléchargés sans les corrompre et supprimer un fichier alors qu'il est encore ouvert dans un logiciel.

Voici une brève comparaison des systèmes de fichiers les plus utilisés.

Nom du système de fichiers Taille maximale d'un fichier Taille maximale d'une partition Journalisée ou non ? Gestion des droits d'accès? Notes
ext2 (Extended File System) 2 TiB 4 TiB Non Oui Extended File System est le système de fichiers natif de Linux. En ses versions 1 et 2, on peut le considérer comme désuet, car il ne dispose pas de la journalisation. Ext2 peut tout de même s'avérer utile sur des disquettes 3½ et sur les autres périphériques dont l'espace de stockage est restreint, car aucun espace ne doit être réservé à un journal.
ext3 2 TiB 4 TiB Oui Oui ext3 est essentiellement ext2 avec la gestion de la journalisation. Il est possible de passer une partition formatée en ext2 vers le système de fichiers ext3 (et vice versa) sans formatage.
ext4 16 TiB 1 EiB Oui Oui ext4 est le successeur du système de fichiers ext3. Il est cependant considéré par ses propres concepteurs comme une solution intermédiaire en attendant le vrai système de nouvelle génération que sera Btrfs
ReiserFS 8 TiB 16 TiB Oui Oui Développé par Hans Reiser et la société Namesys, ReiserFS est reconnu particulièrement pour bien gérer les fichiers de moins de 4 ko. Un avantage du ReiserFS, par rapport à ext3, est qu'il ne nécessite pas une hiérarchisation aussi poussée: il s'avère intéressant pour le stockage de plusieurs fichiers temporaires provenant d'Internet. Par contre, ReiserFS n'est pas recommandé pour les ordinateurs portables, car le disque dur tourne en permanence, ce qui consomme beaucoup d'énergie.
FAT
(File Allocation Table)
2 GiB 2 GiB Non Non* Développé par Microsoft, ce système de fichiers se rencontre moins fréquemment aujourd'hui. Il reste néanmoins utilisé sur les disquettes 3½ formatées sous Windows et devrait être utilisé sous Linux si une disquette doit aussi être lue sous Windows. Il est aussi utilisé par plusieurs constructeurs comme système de fichiers pour cartes mémoires (memory sticks), car, bien documenté, ce système de fichiers reste le plus universellement utilisé et accessible.
FAT32 4 GiB 8 TiB Non Non* Ce système de fichiers, aussi créé par Microsoft, est une évolution de son prédécesseur. Depuis ses versions 2000 SP4 et XP, Windows ne peut pas formater (ou bloque volontairement le formatage) une partition en FAT32 d'une taille supérieure à 32 Go. Cette limitation ne s'applique pas sous Linux, de même qu'avec des versions antérieures de Windows. Une partition FAT32 d'une taille supérieure à 32 Go déjà formatée pourra être lue par Windows, peu importe sa version.
NTFS
(New Technology File System)
16 TiB 256 TiB Oui Oui* Ce système de fichiers a aussi été développé par Microsoft, et il reste très peu documenté. L'écriture depuis Linux sur ce système de fichiers est stable à l'aide du pilote ntfs-3g. Ce pilote est inclus de base dans Ubuntu 7.10, et disponible en paquets dans les dépôts pour les versions antérieures.
EiB = Exbioctets (1024 pébioctets) :: PiB = Pébioctet (1024 tébioctet) :: TiB = Tébioctet (1024 gibioctets) :: GiB = Gibioctet (1024 mibioctets) [ Plus d'informations sur la Wikipedia ]

Ci-dessus vous voyez aussi une comparaison de deux autres des principaux attributs d'un système de fichiers, à savoir la taille maximale d'un fichier sur une partition et la taille la plus grande que peut avoir une partition avec un système de fichiers particulier.

* Systèmes de fichiers FAT32 et NTFS

Parmi les systèmes de fichiers précédents, les seuls sur lesquels on ne peut pas installer Linux sont le NTFS, la FAT et la FAT32. En théorie, il pourrait être possible d'installer Linux sur l'un de ces systèmes de fichiers, mais comme ce système de fichiers ne gère pas les droits d'accès, il résulterait un système d'exploitation hautement non-sécurisé.

Les systèmes de fichiers créés par Microsoft (FAT, FAT32 et NTFS) ne gèrent pas les droits d'accès aux fichiers comme les systèmes de fichiers de type Unix (ext2, ext3, ReiserFS…). Toutefois, pour être accessible sous Linux, un système de fichiers doit disposer du système de droits d'accès; pour contourner cette limitation, les droits d'accès de type Unix sont émulés sur ces systèmes de fichiers. Cette émulation est effectuée au montage d'une partition de disque dur formatée selon l'un de ces systèmes de fichiers, et ces droits sont immuables tout le temps que ce système de fichiers est en cours d'utilisation.

Il n'est pas possible de modifier les permissions ou les propriétés d'un fichier ou d'un dossier situé dans un système de fichiers NTFS ou FAT32. Le seul moyen de changer ce comportement est de démonter le système de fichiers puis le remonter avec des options de montage différentes.

Sous Microsoft® Windows®, le système de fichiers NTFS gère les droits d'accès basé sur une liste de contrôle (ACL) qui n'est pas prise en compte sous Linux. Linux peut aussi prendre en charge une forme d'ACL, mais celle-ci est différente de celle implantée dans NTFS. Pour cette raison, les ACL des systèmes de fichiers NTFS sont simplement ignorées.

«Je désire créer une partition d'échange de fichiers entre Ubuntu et Microsoft® Windows®. Quel système de fichiers devrais-je préférer ?»

Vous devriez faire une partition d'échange formatée en NTFS. Elle sera pleinement gérée par Windows NT/2000/XP/Vista et Ubuntu.
Le désavantage de cette option est que les droits d'accès aux fichiers ne sont pas disponibles, et donc l'ensemble des données seront accessibles sous Ubuntu à tous les utilisateurs. Ceci peut être dérangeant sur des systèmes multi-utilisateurs qui doivent partager des fichiers sensibles.

Il n'existe aucun moyen de contourner ce problème, vous pouvez créer une partition d'échange formatée en ext3, mais le problème se retrouvera sous Windows ce coup ci, avec des problèmes de sécurités plus importants encore.

Afficher le système de fichier d'une partition

  • partition montée
     df -h
  • partition quelconque (nécessite que le paquet parted soit installé et que le disque /dev/sda existe)
     sudo parted /dev/sda print all  
  • utilisateurs/felixp/systeme_de_fichiers.1387828875.txt.gz
  • Dernière modification: Le 23/12/2013, 21:01
  • par FelixP