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