2.6 Systèmes de fichiers¶
Objectif du TP¶
On va essayer de comprendre ce qu’est un système de fichiers, pourquoi / est appelé la racine, et en quoi le montage conditionne l’accès aux données et à l’état du système.
Rappels¶
Un système Unix/Linux présente une seule arborescence, accessible à partir de /. Contrairement à Windows, il n’existe pas de notion de lecteur (c: ou d:).
Arborescence
1) Une arborescence est une organisation hiérarchique de fichiers et de répertoires, structurée à partir d’un point d'entrée unique: la racine notée /. 2) Un fichier ou un répertoire occupe une position unique dans cette arborescence, et peut être localisé par son chemin d’accès en partant de la racine. Par exemple: /dossier-A/dossier-2/fichier3.txt
Répertoire de travail
À l’ouverture d’une session Unix, le système crée un environnement d’exécution pour l’utilisateur authentifié. Le shell, lancé dans cette session, est un processus qui hérite de cet environnement. Cet environnement inclut un répertoire de travail initial, correspondant au répertoire personnel défini dans /etc/passwd. Ce répertoire est utilisé par le shell pour résoudre les chemins relatifs lors de l’exécution des commandes.
1. Navigation dans l’arborescence Unix¶
Rappel
/ est le point d’entrée de l’arborescence Unix (la racine). Un chemin commençant par / désigne explicitement le chemin d'un fichier depuis la racine.
Commençons par quelques manipulations:
pwd
La commande pwd (print working directory) affiche le dossier dans lequel shell est en train d'être exécuté. On pourrait dire que pwd retourne le répertoire où l’on se trouve, mais c’est une explication un peu rapide. En réalité, vous n’êtes pas « dans un dossier » ( vous êtes assis sur une chaise...). Par contre le shell est un processus qui s’exécute avec un contexte, et ce contexte inclut un répertoire de travail. C’est ce répertoire de travail que la commande pwd affiche. Bon, après si vous avez rien compris "retourne le répertoire on l'on se trouve", ça ira quand même.
cd /
pwd
Le nouveau répertoire courant est maintenant la racine soit/.
cd /etc
pwd
Ici, le chemin commence par /, ce qui signifie que l’on part de la racine, puis que l’on descend dans le dossier etc. Comme le dossier etc est bien présent à cet emplacement, le changement de répertoire se fait sans erreur. Essayez ceci:
cd /
cd etc
pwd
On arrive encore dans /etc. Pourtant, on n’a pas tapé /etc, seulement etc.
Pourquoi ça marche ? Parce que le répertoire etc est recherché par défaut dans le répertoire de travail ($PWD), ici la racine /. Et comme il existe bien un dossier nommé etc à cet emplacement, la commande aboutit sans erreur.
On n’a donc pas utilisé un chemin absolu pour atteindre un dossier, mais un chemin relatif : relatif à quoi ? et bien au répertoire de travail.
cd /home
pwd
Constat : on arrive dans /home.
Raison : le chemin commence par / → le répertoire home est explicitement recherché à la racine. Sans surprise ça marche, on l'a déjà vu.
cd /etc
cd home
Constat : erreur.
cd home est interprété comme un chemin relatif (pas / au début). Comme on l'a vu il sera recherché dans le répertoire de travail, soit /etc, où il n’existe pas. La commande ne peut pas aboutir sans passer par un chemin absolu.
cd /home
pwd
Notez que l'on aurait pu faire autrement. Retournons dans le répertoire /etc. Maintenant vous avez du vous en rendre compte dans l’arborescence UNIX, le répertoire home est situé à un niveau au dessus de etc. Donc si l'on souhaitait tout de meme utilisé un chemin relatif pour y accéder on peut utiliser les caractères ... Les 2 points indiquent au SHELL de remonter d'un niveau l'arborescence depuis le répertoire de travail
cd /etc
cd ..
cd home
pwd
Et si on est été encore plus fainéant, on peut même faire de cette manière
cd /etc
cd ../home
pwd
../home indique à SHELL que dans le répertoire parent, il y a un dossier home, ce qui est exact, donc notre commande aboutie.
On peut même faire encore plus fort.
cd /home/alice
pwd
cd ../../etc
pwd
cd ../../etc indique que l'on souhaite se rendre dans le dossier etc, qui se trouve 2 niveaux au dessus de notre répertoire de travail.
À retenir
-
L’arborescence Unix est organisée à partir d’un point d’entrée unique :
/, appelé la racine. -
Un chemin absolu commence par
/: il indique le chemin complet à suivre depuis la racine pour atteindre un emplacement dans l’arborescence. -
Un chemin relatif est interprété à partir du répertoire de travail du shell.
-
Le répertoire de travail est le contexte dans lequel le shell s’exécute.
-
Les caractères
..permettent de remonter d’un niveau dans l’arborescence (../..pour 2 niveaux,../../..pour 3 niveaux, et ainsi de suite).
2. Notion de système de fichiers¶
Un disque ne stocke que des données brutes. Pour pouvoir les exploiter sous forme de fichiers et de répertoires, le système d’exploitation s’appuie sur un système de fichiers.
Un système de fichiers comme ext4 définit comment les données brutes doivent être structurées sur le disque afin de pouvoir localiser et récupérer des fichiers, des répertoires, leurs droits, et leurs métadonnées.
Dans la pratique, un système de fichiers ext4 s’applique sur un espace de stockage bien identifié, comme une partition ou un volume logique. Cette opération, appelée formatage, est dite destructive, car elle efface les informations qui permettent au système de localiser et d’interpréter les données, même si celles-ci peuvent encore être présentes physiquement.
df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
devtmpfs devtmpfs 10240 0 10240 0% /dev
shm tmpfs 236900 0 236900 0% /dev/shm
/dev/sda3 ext4 6924276 161736 6389500 2% /
tmpfs tmpfs 94760 128 94632 0% /run
/dev/sda1 ext4 277631 37102 221073 14% /boot
tmpfs tmpfs 236900 0 236900 0% /tmp
Comment lire ce truc ? Prenons cette ligne:
/dev/sda3 ext4 6924276 161736 6389500 2% /
- Filesystem :
/dev/sda3désigne la partition utilisée. - Type :
ext4est le type de système de fichiers appliqué sur cette partition. - Les colonnes 1K-blocks, Used et Available indiquent respectivement la taille totale, l’espace utilisé et l’espace disponible (elles ne sont pas étudiées ici).
- Use% :
2%correspond au taux d’occupation de la partition. - Mounted on :
/indique que cette partition est accessible à partir de / c'est à dire la racine de l’arborescence , comme vu précédemment
À propos du système de fichiers ext4
ext4 (Fourth Extended Filesystem) est le système de fichiers natif de Linux. ext4 est un système de fichiers journalisé, ce qui permet de limiter les pertes de données en cas d’arrêt brutal (coupure de courant, crash).
Analysons une autre ligne: /dev/sda1 ext4 277631 37102 221073 14% /boot
Que voyons nous ? - /dev/sda1 est une partition distincte. - Elle utilise également le système de fichiers ext4. - Elle n’est pas montée à la racine /, mais sur le répertoire /boot.
Le répertoire /boot est ici ce que l'on appelle un point de montage.
Qu’est-ce qu’un point de montage ?
Un point de montage est un répertoire de l’arborescence Unix sur lequel un système de fichiers est attaché. Lorsque une partition est montée son contenu devient accessible à partir de ce répertoire et s’intègre à l’arborescence existante.
A retenir
Sous Linux, il n’existe pas de notion de « lecteur disque » comme sous Windows. Les partitions sont attachée à une arborescence unique par un point de montage Le système de fichiers d’une partition devient accessible à partir de son point de montage, dès l’instant qu'il est monté.
Note
Des outils plus avancés comme lsblk (paquet util-linux) permettent une vue plus lisible des disques et partitions, mais ils ne sont pas installés par défaut sur Alpine.
3. Des répertoires gérés par le système¶
Observation du répertoire /proc:
ls /proc
/proc fait partie de l’arborescence, mais il ne correspond pas à des fichiers stockés sur disque. Ce répertoire expose principalement des informations sur les processus en cours d’exécution.
Chaque répertoire portant un numéro correspond à un PID (identifiant de processus). Autrement dit : - quand un processus démarre, un répertoire apparaît dans /proc, - quand il s’arrête, ce répertoire disparaît. - Le contenu de /proc reflète donc l’état du système à un instant donné, et non un stockage permanent.
Observation du répertoire /sys:
ls /sys
/sys expose l’état du matériel et des composants du système, pas des données stockées sur disque. - Chaque répertoire représente un élément du système (disque, carte réseau, périphérique, etc.). - Les fichiers permettent de consulter (et parfois modifier) cet état.
Ces informations sont fournies directement par le noyau, et ne sont pas lues depuis un disque ou une partition.
Conclusion¶
Au cours de ce TP, on a pu observer que l’arborescence Unix n’est pas une simple organisation de dossiers, mais le fruits de montage de systèmes de fichiers sur des points précis.
Vous avez vu que : - un disque ne fournit que des données brutes, - un système de fichiers comme ext4 est nécessaire pour structurer ces données en fichiers et répertoires, - une partition définit l’espace sur lequel ce système de fichiers s’applique, - un point de montage permet d’intégrer ce système de fichiers dans l’arborescence unique, à partir de /.
Vous avez également constaté que tout ce qui apparaît dans l’arborescence ne provient pas forcément d’un système de fichier : des répertoires comme /proc et /sys sont générés par le noyau et exposent l’état du système, des processus et du matériel.
En résumé, sous Linux, l’accès aux données et à l’état du système dépend entièrement du montage des systèmes de fichiers.
Comprendre cette mécanique est indispensable pour administrer, diagnostiquer et sécuriser un système Unix/Linux.