Introduction aux fichiers système Linux

Chaque ordinateur à usage général doit stocker des données de différents types sur un disque dur (HDD) ou une clé USB. Il y a plusieurs raisons à cela. Tout d’abord, la RAM perd son contenu lorsque l’ordinateur est éteint. Il existe des types non volatiles de RAM qui peuvent conserver les données stockées après la mise hors tension (comme la RAM flash utilisée dans les clés USB et les lecteurs à semi-conducteurs), mais la RAM flash est beaucoup plus chère que la RAM standard volatile DDR3 et autres types similaires.

La deuxième raison pour laquelle les données doivent être stockées sur les disques durs est que même la RAM standard est encore plus coûteux que l’espace disque. Les coûts de RAM et de disques ont baissé rapidement, mais la RAM reste la voie en termes de coût par octet.

Définitions :

Je vais essayer de définir les différentes significations du mot «système de fichiers» en fonction de la façon dont j’ai observé qu’il est utilisé dans des circonstances différentes. Notez que tout en essayant de se conformer aux significations «officielles» standard, mon intention est de définir le terme en fonction de ses divers usages. Ces significations seront abordées plus en détail dans les sections suivantes de cet article.

  1. Toute la structure du répertoire Linux commençant par le répertoire racine top (/).
  2. Un type spécifique de format de stockage de données, tel que EXT3, EXT4, BTRFS, XFS, etc. Linux supporte presque 100 types de systèmes de fichiers, y compris certains très anciens ainsi que certains des plus récents. Chacun de ces types de système de fichiers utilise ses propres structures de métadonnées pour définir comment les données sont stockées et consultées.
  3. Une partition ou un volume logique formaté avec un type de système de fichiers spécifique pouvant être monté sur un point de montage spécifié sur un système de fichiers Linux.

Fonctions de base du système de fichiers :

Un système de fichiers est conçu pour fournir un espace pour le stockage non volatile de données; C’est sa fonction ultime. Cependant, de nombreuses autres fonctions importantes découlent de cette exigence.

Tous les systèmes de fichiers doivent fournir un espace de nom, c’est-à-dire une méthodologie d’organisation et de nomenclature. Cela définit la façon dont un fichier peut être nommé, spécifiquement la longueur du nom du fichier et le sous-ensemble de caractères pouvant être utilisés pour les noms des fichiers parmi l’ensemble des caractères disponibles. Il définit également la structure logique des données sur un disque, comme l’utilisation de répertoires pour organiser des fichiers au lieu de simplement les regrouper tous ensemble dans un seul et énorme conglomérat de fichiers.

Une fois l’espace de noms défini, une structure de métadonnées est nécessaire pour fournir la base logique de cet espace de noms. Cela inclut les structures de données nécessaires pour supporter une structure hiérarchique de répertoires; Des structures pour déterminer quels blocs d’espace sur le disque sont utilisés et qui sont disponibles; Structures qui permettent de conserver les noms des fichiers et répertoires; Des informations sur les fichiers tels que leur taille et leur date de création, de modification ou de dernière consultation; Et l’emplacement ou les emplacements des données appartenant au fichier sur le disque. D’autres métadonnées sont utilisées pour stocker des informations de haut niveau sur les sous-divisions du disque, telles que les volumes logiques et les partitions. Ces métadonnées de niveau supérieur et les structures qu’il représente contiennent les informations décrivant le système de fichiers stocké sur le disque ou la partition, mais sont distinctes et indépendantes des métadonnées du système de fichiers.

Les systèmes de fichiers nécessitent également une interface de programmation d’application (API) qui fournit l’accès aux appels de fonction système qui manipulent des objets de système de fichiers comme des fichiers et des répertoires. Les API fournissent des tâches telles que la création, le déplacement et la suppression de fichiers. Il fournit également des algorithmes qui déterminent des choses comme où un fichier est placé sur un système de fichiers. De tels algorithmes peuvent expliquer des objectifs tels que la vitesse ou la fragmentation du disque.

Les systèmes de fichiers modernes fournissent également un modèle de sécurité, qui est un schéma permettant de définir les droits d’accès aux fichiers et répertoires. Le modèle de sécurité du système de fichiers Linux permet de s’assurer que les utilisateurs n’ont accès qu’à leurs propres fichiers et non à ceux des autres ou du système d’exploitation lui-même.

Le bloc de construction final est le logiciel requis pour mettre en œuvre toutes ces fonctions. Linux utilise une mise en œuvre logicielle en deux parties pour améliorer l’efficacité du système et du programmeur.

Diagramme des fichiers système

La première partie de cette mise en œuvre en deux parties est le système de fichiers Linux virtuel. Ce système de fichiers virtuel fournit un ensemble unique de commandes pour le noyau, et les développeurs, pour accéder à tous les types de systèmes de fichiers. Le logiciel de système de fichiers virtuel appelle le pilote de périphérique spécifique nécessaire à l’interface avec les différents types de systèmes de fichiers. Les pilotes de périphériques spécifiques au système de fichiers sont la deuxième partie de la mise en œuvre. Le pilote de périphérique interprète l’ensemble standard de commandes de système de fichiers à celles spécifiques au type de système de fichiers sur la partition ou le volume logique.

Structure du répertoire :

Dans Linux et beaucoup d’autres systèmes d’exploitation, les répertoires peuvent être structurés dans une hiérarchie arborescente. La structure de l’annuaire Linux est bien définie et documentée dans la hiérarchie du système de fichiers Linux (FHS). Le référencement de ces répertoires lors de leur accès s’effectue en utilisant les noms de répertoires séquentiellement plus profonds connectés par des barres obliques (/) telles que /var /log et /var /spool /mail. Ils sont appelés chemins.

Le tableau suivant fournit une liste très brève des répertoires Linux de premier niveau, bien connus et définis, et leurs buts.

Répertoire Description
/(root filesystem) Le système de fichiers racine est le répertoire de niveau supérieur du système de fichiers. Il doit contenir tous les fichiers requis pour démarrer le système Linux avant que d’autres systèmes de fichiers ne soient montés. Il doit inclure tous les exécutables et bibliothèques nécessaires pour démarrer les systèmes de fichiers restants. Une fois le système démarré, tous les autres systèmes de fichiers sont montés sur des points de montage standard et bien définis en tant que sous-répertoires du système de fichiers racine.
/bin Le répertoire /bin contient des fichiers exécutables par l’utilisateur.
/bin Contient le chargeur de démarrage statique et les fichiers exécutables et de configuration du noyau requis pour démarrer un ordinateur Linux.
/dev Ce répertoire contient les fichiers de périphérique de chaque périphérique connecté au système. Ce ne sont pas des pilotes de périphériques, mais plutôt des fichiers qui représentent chaque périphérique sur l’ordinateur et facilitent l’accès à ces périphériques.
/etc Contient les fichiers de configuration système locaux de l’ordinateur hôte.
/home Répertoire de stockage pour les fichiers utilisateur. Chaque utilisateur dispose d’un sous-répertoire dans / home.
/lib Contient les fichiers de bibliothèque partagée nécessaires pour démarrer le système.
/media Un endroit pour monter des périphériques amovibles externes tels que des clés USB qui peuvent être connectés à l’hôte.
/mnt Un point de montage temporaire pour les systèmes de fichiers ordinaires (comme dans les supports non amovibles) qui peut être utilisé lorsque l’administrateur est en train de réparer ou de travailler sur un système de fichiers.
/opt Les fichiers optionnels tels que les programmes d’application fournis par le fournisseur doivent être situés ici.
/root Ce n’est pas le système de fichiers racine (/). Il s’agit du répertoire de base de l’utilisateur racine.
/sbin Fichiers binaires système. Ce sont des exécutables utilisés pour l’administration système.
/tmp Répertoire temporaire. Utilisé par le système d’exploitation et de nombreux programmes pour stocker des fichiers temporaires. Les utilisateurs peuvent également stocker des fichiers ici temporairement. Notez que les fichiers stockés ici peuvent être supprimés à tout moment sans préavis.
/usr Il s’agit de fichiers partageables en lecture seule, y compris des fichiers binaires exécutables et des bibliothèques, des fichiers man et d’autres types de documentation.
/var Les fichiers de données variables sont stockés ici. Cela peut inclure des choses comme les fichiers journaux, MySQL et autres fichiers de base de données, les fichiers de données du serveur Web, les boîtes de réception de courrier électronique et bien plus encore.