Systèmes de Fichiers Linux
Introduction
Les systèmes de fichiers jouent un rôle fondamental dans la gestion et l’organisation des données au sein des systèmes Linux. Ils définissent comment les fichiers sont stockés, accessibles et protégés sur les périphériques de stockage. Chaque système de fichiers offre des fonctionnalités spécifiques, adaptées à des cas d’utilisation variés, allant des postes de travail aux infrastructures distribuées.
Objectifs :
Comprendre les caractéristiques principales des systèmes de fichiers Linux.
Identifier les cas d’utilisation appropriés pour chaque système.
Fournir des commandes pratiques et des exemples concrets pour la gestion des systèmes de fichiers.
Les Systèmes de Fichiers
EXT4 : Polyvalent et fiable pour des environnements serveurs et postes de travail.
XFS : Conçu pour des performances élevées et des volumes massifs.
Btrfs : Offrant des fonctionnalités avancées comme les snapshots et la déduplication.
ZFS : Idéal pour les infrastructures critiques, avec vérification d’intégrité des données.
ReiserFS : Optimisé pour les petits fichiers.
EXT3 : Simplicité et compatibilité avec des systèmes plus anciens.
GlusterFS : Adapté aux environnements distribués nécessitant une réplication et une mise à l’échelle.
NFS : Pour le partage de fichiers sur un réseau local ou distant.
NTFS : Compatible Windows/Linux pour des usages mixtes.
CephFS : Conçu pour les clusters distribués et les clouds.
ExFAT : Idéal pour les dispositifs portables nécessitant une compatibilité multiplateforme.
Comparatifs:
Filesystem |
EXT4 |
XFS |
Btrfs |
ZFS |
ReiserFS |
EXT3 |
GlusterFS |
NFS |
NTFS |
CephFS |
ExFAT |
---|---|---|---|---|---|---|---|---|---|---|---|
Creation Timestamp |
✗ |
✓ |
✓ |
✓ |
✗ |
✗ |
✗ |
✓ |
✓ |
✓ |
✗ |
Last Read Timestamp |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✗ |
✓ |
✓ |
✓ |
✗ |
Access Control List |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✗ |
Metadata Checksum |
✓ |
✓ |
✓ |
✓ |
✗ |
✗ |
✓ |
✗ |
✓ |
✓ |
✗ |
Extended Attributes |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
Hard/Soft Links |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✗ |
✗ |
✓ |
✓ |
✗ |
File Change Log |
✗ |
✓ |
✗ |
✗ |
✗ |
✗ |
✗ |
✗ |
✗ |
✗ |
✗ |
Snapshot Support |
✗ |
✗ |
✓ |
✓ |
✗ |
✗ |
✗ |
✗ |
✗ |
✓ |
✗ |
Encryption |
✓ |
✗ |
✗ |
✓ |
✗ |
✗ |
✗ |
✓ |
✓ |
✓ |
✓ |
Deduplication |
✗ |
✓ |
✓ |
✓ |
✗ |
✗ |
✗ |
✗ |
✗ |
✓ |
✗ |
Data Checksum |
✗ |
✗ |
✓ |
✓ |
✗ |
✗ |
✓ |
✗ |
✗ |
✓ |
✗ |
Persistent Cache |
✗ |
✗ |
✗ |
✓ |
✗ |
✗ |
✗ |
✗ |
✓ |
✗ |
✗ |
Compression |
✗ |
✗ |
✓ |
✓ |
✗ |
✗ |
✗ |
✗ |
✓ |
✓ |
✓ |
Online Grow |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✓ |
✗ |
✓ |
✗ |
Offline Shrink |
✓ |
✗ |
✓ |
✗ |
✓ |
✓ |
✗ |
✗ |
✓ |
✗ |
✗ |
Online Shrink |
✗ |
✗ |
✓ |
✗ |
✗ |
✗ |
✗ |
✗ |
✗ |
✗ |
✗ |
Add/Remove Disks |
✗ |
✗ |
✓ |
✓ |
✗ |
✗ |
✓ |
✗ |
✗ |
✓ |
✗ |
Descriptions des fonctionnalités
Journalisation : Mécanisme permettant de suivre les modifications effectuées sur le système de fichiers dans un journal avant leur application. Cela améliore la tolérance aux pannes en permettant une récupération rapide en cas de crash ou de coupure électrique.
Creation Timestamp : Enregistre la date et l’heure de création des fichiers. Cette fonctionnalité est absente sur certains systèmes comme ext4 et n’est généralement pas priorisée.
Dernier Accès Timestamp : Stocke la dernière date à laquelle un fichier ou un répertoire a été accédé. Cette information peut être utile pour le suivi ou le nettoyage des systèmes.
ACL (Access Control List) : Offre un contrôle granulaire des permissions d’accès aux fichiers et dossiers, allant au-delà du modèle UNIX classique (lecture, écriture, exécution).
Checksum des Métadonnées : Ajoute une vérification d’intégrité sur les métadonnées du système de fichiers pour détecter les corruptions accidentelles. Particulièrement utile pour garantir la fiabilité dans les environnements critiques.
Checksum des Données : Similaire au checksum des métadonnées, mais s’applique aux données utilisateur. Il garantit que les fichiers ne sont pas corrompus, une fonctionnalité clé pour les systèmes comme ZFS.
Attributs Étendus : Permet de stocker des métadonnées supplémentaires dans les fichiers, comme des tags ou des informations de sécurité.
Liens Durs / Symboliques : Support des mécanismes permettant de créer des liens vers d’autres fichiers ou répertoires, qu’ils soient au sein du même système de fichiers (liens durs) ou entre plusieurs systèmes (liens symboliques).
Journal de Modification : Historise les modifications apportées au système de fichiers. Cette fonctionnalité est rare mais peut être intégrée indirectement via des outils comme les snapshots.
Snapshots : Prend des copies instantanées du système de fichiers ou d’une partie de celui-ci, permettant de revenir à un état précédent. Utile pour les sauvegardes et les mises à jour critiques.
Chiffrement : Protection des données en utilisant des algorithmes cryptographiques pour empêcher les accès non autorisés. Ext4 utilise fscrypt, tandis que ZFS intègre le chiffrement nativement.
Déduplication : Élimine les copies redondantes de données au sein du système de fichiers, réduisant l’espace disque consommé. ZFS propose cette fonctionnalité nativement.
Compression : Réduit la taille des données stockées en appliquant des algorithmes de compression. Btrfs et ZFS supportent cette fonctionnalité pour économiser l’espace disque.
Cache Persistant : Améliore les performances en conservant en mémoire une partie des données fréquemment utilisées. Certaines implémentations permettent de sauvegarder ce cache lors des redémarrages.
Agrandissement en Ligne : Permet d’augmenter la taille d’un système de fichiers sans interrompre son utilisation, une fonctionnalité critique pour les environnements dynamiques.
Réduction Hors Ligne : Autorise la réduction de la taille du système de fichiers, mais nécessite souvent que le système soit démonté pour éviter les corruptions.
Réduction en Ligne : Permet la réduction de la taille d’un système de fichiers sans nécessiter son démontage. Cette fonctionnalité est rare et limitée à certains FS.
Ajout/Suppression de Disques : Fonctionnalité avancée permettant de gérer dynamiquement les disques physiques associés au système de fichiers. ZFS et Btrfs supportent ces opérations pour la gestion des volumes.
Tableau Complémentaire : Comparaison des Aspects Clés
Filesystem |
Performance |
Complexité de Gestion |
Support Multi-Plateforme |
Scénarios Recommandés |
---|---|---|---|---|
EXT4 |
Bonne (équilibrée) |
Simple |
Limité (Linux seulement) |
Serveurs et postes de travail classiques. |
XFS |
Excellente (volumes massifs) |
Moyenne |
Limité (Linux seulement) |
Bases de données, gros fichiers, systèmes exigeants. |
Btrfs |
Moyenne à Bonne |
Complexe (snapshots, gestion avancée) |
Limité (Linux seulement) |
Snapshots, sauvegardes, environnements dynamiques. |
ZFS |
Excellente (intégrité, IOPS élevés) |
Complexe (gestion des pools) |
Limité (Linux, BSD, Solaris) |
Infrastructures critiques, data centers. |
ReiserFS |
Moyenne à Bonne |
Moyenne |
Limité (Linux seulement) |
Gestion de nombreux petits fichiers. |
EXT3 |
Moyenne |
Très simple |
Limité (Linux seulement) |
Systèmes anciens nécessitant une compatibilité. |
GlusterFS |
Moyenne (en fonction du réseau) |
Complexe (gestion des clusters) |
Étendu (Linux, macOS) |
Réplication et haute disponibilité sur clusters. |
NFS |
Moyenne (dépend de la bande passante) |
Moyenne (configuration réseau) |
Étendu (Linux, macOS, Windows) |
Partage de fichiers sur réseaux locaux. |
NTFS |
Moyenne (optimisé pour Windows) |
Simple (avec outils dédiés) |
Étendu (Windows, Linux, macOS) |
Partage Windows/Linux, périphériques externes. |
CephFS |
Bonne (scalabilité élevée) |
Très complexe (gestion des clusters) |
Étendu (Linux, certaines intégrations Windows) |
Clouds, clusters distribués, tolérance aux pannes. |
ExFAT |
Bonne (simple pour les périphériques) |
Très simple |
Étendu (Windows, Linux, macOS) |
Stockage portable (clés USB, cartes SD). |
Tableau Comparatif : Local, Réseau et Distribué
Type |
Fonctionnalité principale |
Résilience |
Complexité |
Cas d’usage |
Exemple |
---|---|---|---|---|---|
Local |
Stockage sur disque physique/partition. |
Faible (dépend du FS). |
Simple à moyenne. |
Serveurs, ordinateurs personnels. |
EXT4, XFS, ZFS. |
Réseau |
Partage de fichiers via un réseau local/distant. |
Moyenne (dépend du réseau). |
Moyenne (configuration réseau). |
Collaboration, accès distant. |
NFS. |
Distribué |
Gestion des fichiers sur plusieurs nœuds. |
Élevée (grâce à la réplication). |
Complexe (gestion de clusters). |
Clouds privés/publics, HPC. |
GlusterFS, CephFS. |
Commandes Pratiques par Système de Fichiers
Cette section présente des commandes concrètes pour manipuler les systèmes de fichiers décrits dans cette documentation.
EXT4
Création d’un système de fichiers EXT4 :
mkfs.ext4 /dev/sdX
Montage et vérification d’un système de fichiers EXT4 :
# Monter un système de fichiers EXT4
mount /dev/sdX /mnt
# Vérifier l'intégrité d’un système de fichiers EXT4
fsck.ext4 /dev/sdX
Redimensionnement d’un système de fichiers EXT4 :
resize2fs /dev/sdX
—
XFS
Création d’un système de fichiers XFS :
mkfs.xfs /dev/sdX
Montage d’un système de fichiers XFS :
mount /dev/sdX /mnt
Vérification et réparation d’un système de fichiers XFS :
xfs_repair /dev/sdX
—
Btrfs
Création d’un système de fichiers Btrfs :
mkfs.btrfs /dev/sdX
Ajout d’un disque à un système de fichiers Btrfs :
btrfs device add /dev/sdY /mnt
Prise d’un snapshot Btrfs :
btrfs subvolume snapshot /mnt /mnt/snapshot_2024
—
ZFS
Création et montage d’un pool ZFS :
zpool create mypool /dev/sdX
zfs create mypool/mydataset
zfs mount mypool/mydataset
Prise d’un snapshot ZFS :
zfs snapshot mypool/mydataset@snapshot_2024
Redimensionnement d’un pool ZFS :
zpool add mypool /dev/sdY
—
GlusterFS
Création d’un volume GlusterFS :
gluster volume create myvolume replica 2 server1:/data server2:/data
Montage d’un volume GlusterFS :
mount -t glusterfs server1:/myvolume /mnt
Vérification de l’état d’un volume GlusterFS :
gluster volume status myvolume
—
CephFS
Création d’un volume CephFS :
ceph fs volume create myfs
Montage d’un volume CephFS :
mount -t ceph server1:/ /mnt -o name=admin,secret=<key>
Vérification de l’état du cluster CephFS :
ceph -s
—
NFS
Exporter un répertoire via NFS (serveur) :
Éditez /etc/exports :
/data *(rw,sync,no_subtree_check)
Appliquez la configuration :
exportfs -ra
Monter un partage NFS (client) :
mount -t nfs server:/data /mnt
—
NTFS
Montage d’un système de fichiers NTFS sous Linux :
mount -t ntfs-3g /dev/sdX /mnt
—
ExFAT
Montage d’un système de fichiers ExFAT :
mount.exfat /dev/sdX /mnt
Vérification d’un système de fichiers ExFAT :
fsck.exfat /dev/sdX
Meta
Auteur : CBillet
Date : 12/12/2024