========================== Systèmes de Fichiers Linux ========================== .. contents:: :depth: 2 :local: :backlinks: top 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 ----------------------------------------------------- .. list-table:: :header-rows: 1 * - 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é ----------------------------------------------- .. list-table:: :header-rows: 1 * - 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 : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash mkfs.ext4 /dev/sdX Montage et vérification d’un système de fichiers EXT4 : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash # 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 : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash resize2fs /dev/sdX --- XFS *** Création d’un système de fichiers XFS : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash mkfs.xfs /dev/sdX Montage d’un système de fichiers XFS : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash mount /dev/sdX /mnt Vérification et réparation d’un système de fichiers XFS : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash xfs_repair /dev/sdX --- Btrfs ***** Création d’un système de fichiers Btrfs : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash mkfs.btrfs /dev/sdX Ajout d’un disque à un système de fichiers Btrfs : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash btrfs device add /dev/sdY /mnt Prise d’un snapshot Btrfs : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash btrfs subvolume snapshot /mnt /mnt/snapshot_2024 --- ZFS *** Création et montage d’un pool ZFS : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash zpool create mypool /dev/sdX zfs create mypool/mydataset zfs mount mypool/mydataset Prise d’un snapshot ZFS : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash zfs snapshot mypool/mydataset@snapshot_2024 Redimensionnement d’un pool ZFS : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash zpool add mypool /dev/sdY --- GlusterFS ********* Création d’un volume GlusterFS : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash gluster volume create myvolume replica 2 server1:/data server2:/data Montage d’un volume GlusterFS : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash mount -t glusterfs server1:/myvolume /mnt Vérification de l’état d’un volume GlusterFS : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash gluster volume status myvolume --- CephFS ****** Création d’un volume CephFS : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash ceph fs volume create myfs Montage d’un volume CephFS : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash mount -t ceph server1:/ /mnt -o name=admin,secret= Vérification de l’état du cluster CephFS : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash ceph -s --- NFS *** Exporter un répertoire via NFS (serveur) : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Éditez `/etc/exports` : .. code-block:: /data *(rw,sync,no_subtree_check) Appliquez la configuration : .. code-block:: bash exportfs -ra Monter un partage NFS (client) : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash mount -t nfs server:/data /mnt --- NTFS **** Montage d’un système de fichiers NTFS sous Linux : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash mount -t ntfs-3g /dev/sdX /mnt --- ExFAT ***** Montage d’un système de fichiers ExFAT : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash mount.exfat /dev/sdX /mnt Vérification d’un système de fichiers ExFAT : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash fsck.exfat /dev/sdX Meta ==== - **Auteur** : CBillet - **Date** : 12/12/2024