Un système de fichiers. Vous en avez surement déjà entendu parlé si vous avec déjà installé Linux, ou formaté une clé USB. Dans ces cas, vous connaissez surement NTFS, EXT4, ou encore FAT32.
Ces différents noms désignent en effet des systèmes de fichiers. Mais qu'est-ce qu'un système de fichiers?
Pour comprendre cela, il faut déjà savoir ce qu'est exactement un fichier. Un fichier est un ensemble de blocs (les blocs sont l'unité la plus petite traitable par le matériel, ils font généralement 1 ou 4 Kio (kibioctet), en fonction du système de fichier utilisé.), qui est donc composé de bits, interprétés différemment en fonction du type de fichier. Cependant, seul, le fichier n'est pas accessible, puisqu'il n'est pas indexé, c'est a dire que l'OS ne sait pas qu'il est présent, ou il commence ni où il s'arrête (je schématise un peu, mais c'est l'idée).
Ainsi, le système de fichier donne un cadre et un standard à l'arborescence des fichiers. Par exemple, le système de fichier ext4 utilise des blocs de 1 Kio, et de ce fait, toutes les partitions de disque dur formatées en ext4 peuvent prendre comme unité de base 1 Kio et mesurer la taille des fichiers en blocs de cette façon. Les systèmes de fichiers nécessitent l'inclusion de drivers dans le noyau pour pouvoir être pris en compte.
Le noyau linux inclut par défaut les drivers pour ext2/3/4, btrfs, reiserfs, ntfs, fat16/32 et hfsx, ce qui permet de monter a peu près tout type de partition récente.
Il convient de bien faire la différence entre le système de fichier et l'arborescence des fichiers. Si l'arborescence des fichiers est en fait une entité virtuelle englobant la racine / et tous les fichiers et dossiers contenus dedans, le système de fichier permet a votre système GNU/Linux de distinguer les différents fichiers composants cette arborescence.
Détaillons maintenant les types de fichiers les plus répandus:
-
FAT16/32 : Les systèmes de fichier FAT (pour File Allocation Table, soit la définition d'un système de fichier), remplissent leur rôle le plus simplement possible. Ne permettant (historiquement) que des noms de 8 caractères (plus extension de trois caractères), ni chiffrement, ni système de distinction d'utilisateurs (DOS étant un système mono-utilisateur), Il fut décliné par microsoft en FAT16 et en FAT32, utlisants respectivement des blocs de 16 et 32 Kio.
-
NTFS :. Le NTFS (pour New Technology File System, rapport a Windows NT) est un système de fichier qui est apparu avec Windows XP, et qui était une mise a jour nécessaire du FAT32 vieillissant. NTFS ajoute a FAT différentes capacités dont le chiffrement, les liens symboliques, la compression et les quotas pour les volumes, permettant de limiter la taille maximum occupée dans une partition.
-
ReFS : ReFS est le système de fichiers introduit dans Windows Server 2012. Ne différant pas énormément de NTFS, je le mentionne principalement parce qu'il est prévu qu'il soit le défaut pour Windows 8. Il apporte principalement la redondance, c'est a dire que chaque fichier possède une somme de contrôle en 64 bits stockée dans un fichier séparé pour éviter les corruption de disque.
-
Ext2/3/4 : les systèmes ext (extended) sont les systèmes de fichiers les plus utilisés sous linux pour le grand public. (Je traiterai ici d'ext4, puisque c'est le plus récent.) Il dispose de toutes les fonctions que l'on peut attendre d'un système de fichiers moderne, ni plus ni moins. Ainsi, ext4 est un système de fichiers journalisé, acceptant les capacités jusqu’à 1 Exioctet, et utilise l'allocation dite "par extent", ce qui signifie que la création d'un fichier réserve automatiquement les zones contiguës de façon a réduire la fragmentation.
-
ReiserFS : ce système de fichiers, créé par le (légèrement mégalo) programmeur Hans Reiser, est a retenir pour avoir été le premier système de fichiers journalisé, et accepte un nombre de fichiers de l'ordre des 4 milliards. Le but de ce système est de créer un système polyvalent, a la fois système de fichiers et base de donnée (de part sa grande capacité en terme de nombre de fichiers et de l'utilisation d'un journal.)
-
Btrfs : ce système est l'évolution logique d'ext4, et inclut lui aussi l'allocation par extent, mais possède de plus un système de sous-volumes, qui permet d’accéder a plusieurs arborescences de fichiers montées en même temps (système pratique et utile pour faire des snapshots de systèmes.). Il permet aussi de redimensionner a chaud la taille des partitions, en les agrandissant ou en les rétrécissant, est compatible avec LVM, a un système de checking intégré (btrfsck), et utilise un algorithme de compression appelé LZ4, qui accélère les accès aux fichiers compressés d'environ 30% par rapport a LZO, le système utilisé dans ext4.
-
HFS+ : le système de fichier présent sur tous les macs a des capacités relativement standards, et ressemble énormément a l'ext3. Il supporte cependant les liens directs vers les dossiers, fonction rare sur les systèmes de fichiers actuels. Il est possible qu'il évolue a nouveau dans les années a venir
-
ZFS : Ce système de fichier, venu de Solaris mais utilisable par Linux et *BSD, est, tel Btrfs, a la fois un système de fichier et un remplaçant/compatible avec LVM, C'est un système de fichiers conçu principalement pour les serveurs, et il intègre ainsi un système de redondance des données pour éviter les corruptions, un mode RAID-Z (apparenté au RAID5), des checks d’intégrité en continu, des snapshots, etc...
Comme on a pu le voir, les systèmes de fichiers disponibles sont légions. Cependant, le plus adapté a Linux et a une utilisation grand public aujourd'hui est probablement Btrfs. Malheureusement, ce dernier n'est pas aujourd'hui proposé par défaut sur les distributions les plus utilisées, au profit de l'ext4, qui commence a accuser son âge...
Les systèmes de fichiers, s'ils peuvent ne pas sembler primordiaux au fonctionnement du système, sont en fait de première importance, et ce choix ne devrait pas être laissé au hasard, et être mis a jour régulièrement (pour éviter les failles de sécurité...)
Bon courage, et bon choix pour votre prochain système.