104.3 Leçon 1
Certification : |
LPIC-1 |
---|---|
Version : |
5.0 |
Thème : |
104 Disques, systèmes de fichiers Linux, arborescence de fichiers standard (FHS) |
Objectif : |
104.3 Gérer le montage et le démontage des systèmes de fichiers |
Leçon : |
1 sur 1 |
Introduction
À ce stade, vous avez appris à partitionner les disques et à créer et maintenir des systèmes de fichiers sur ces derniers. En revanche, avant de pouvoir accéder à un système de fichiers sous Linux, il faut que celui-ci soit monté.
Cette opération consiste à rattacher le système de fichiers à un point spécifique de l’arborescence de votre système, que l’on appelle "point de montage". Les systèmes de fichiers peuvent être montés à la main ou de manière automatique, et il existe une multitude de façons de le faire. Nous allons en découvrir quelques-unes dans cette leçon.
Monter et démonter des systèmes de fichiers
La commande pour monter manuellement un système de fichiers s’appelle mount
et sa syntaxe est :
mount -t TYPE DEVICE MOUNTPOINT
Avec :
TYPE
-
Le type de système de fichiers en cours de montage (par exemple ext4, btrfs, exfat, etc.).
DEVICE
-
Le nom de la partition qui contient le système de fichiers (par exemple
/dev/sdb1
). MOUNTPOINT
-
L’endroit où le système de fichiers sera monté. Le répertoire monté ne doit pas nécessairement être vide, mais il doit exister. En revanche, tous les fichiers qu’il contient ne seront pas accessibles par leur nom tant que le système de fichiers sera monté.
Par exemple, pour monter une clé USB avec un système de fichiers exFAT située sur /dev/sdb1
vers un répertoire appelé flash
dans votre répertoire utilisateur, vous pouvez utiliser :
# mount -t exfat /dev/sdb1 ~/flash/
Tip
|
La plupart des systèmes Linux utilisent l’interpréteur de commandes Bash, et sur ces systèmes, le tilde |
Après le montage, le contenu du système de fichiers sera accessible dans le répertoire ~/flash
:
$ ls -lh ~/flash/ total 469M -rwxrwxrwx 1 root root 454M jul 19 09:49 lineage-16.0-20190711-MOD-quark.zip -rwxrwxrwx 1 root root 16M jul 19 09:44 twrp-3.2.3-mod_4-quark.img
Afficher la liste des systèmes de fichiers montés
Si vous tapez simplement mount
, vous obtenez une liste de tous les systèmes de fichiers en cours de montage sur votre système. Cette liste peut être assez conséquente, étant donné qu’en plus des disques attachés à votre système, ce dernier contient également un certain nombre de systèmes de fichiers exécutés en mémoire et destinés à des usages divers. Pour filtrer la sortie, vous pouvez utiliser le paramètre -t
pour afficher uniquement les systèmes de fichiers du type correspondant, comme ceci :
# mount -t ext4 /dev/sda1 on / type ext4 (rw,noatime,errors=remount-ro)
Vous pouvez spécifier plusieurs systèmes de fichiers à la fois en les séparant par une virgule :
# mount -t ext4,fuseblk /dev/sda1 on / type ext4 (rw,noatime,errors=remount-ro) /dev/sdb1 on /home/carol/flash type fuseblk (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other,blksize=4096) [DT_8GB]
Le résultat des exemples ci-dessus peut être décrit sous la forme :
SOURCE on TARGET type TYPE OPTIONS
Où SOURCE
est la partition contenant le système de fichiers, TARGET
est le répertoire dans lequel il est monté, TYPE
est le type de système de fichiers et OPTIONS
sont les options passées à la commande mount
au moment du montage.
Les options de la commande
La commande mount
peut être utilisée avec un certain nombre de paramètres. Voici les plus courants :
-a
-
Monter tous les systèmes de fichiers répertoriés dans le fichier
/etc/fstab
(voir un peu plus loin pour plus d’informations). -o
ou--options
-
Passer une liste d’options de montage séparées par des virgules à la commande
mount
, ce qui modifie la façon dont le système de fichiers sera monté. Ces options seront également discutées lorsque nous aborderons/etc/fstab
. -r
ou-ro
-
Monter le système de fichiers en lecture seule.
-w
ou-rw
-
Monter le système de fichiers en lecture/écriture.
Pour démonter un système de fichiers, utilisez la commande umount
suivie du nom du périphérique ou du point de montage. Si l’on considère l’exemple précédent, les deux commandes ci-dessous sont interchangeables :
# umount /dev/sdb1 # umount ~/flash
Voici quelques options de la commande umount
:
-a
-
Démonter tous les systèmes de fichiers répertoriés dans
/etc/fstab
. -f
-
Force le démontage d’un système de fichiers. Cette option peut s’avérer utile si vous avez monté un système de fichiers distant et que celui-ci est devenu inaccessible.
-r
-
Si le système de fichiers ne peut pas être démonté, il sera mis en lecture seule.
Gérer les fichiers ouverts
Lors du démontage d’un système de fichiers, vous pouvez rencontrer un message d’erreur indiquant que la "cible est occupée" (target is busy
). Cette erreur se produit lorsque des fichiers sont encore ouverts sur le système de fichiers. Cependant, il n’est pas toujours évident de savoir où se trouvent ces fichiers ouverts, ni ce qui est en train d’accéder au système de fichiers.
Dans ce cas, vous pouvez utiliser la commande lsof
suivie du nom du périphérique contenant le système de fichiers pour obtenir une liste des processus qui y accèdent ainsi que des fichiers ouverts. Par exemple :
# umount /dev/sdb1 umount: /media/carol/External_Drive: target is busy. # lsof /dev/sdb1 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME evince 3135 carol 16r REG 8,17 21881768 5195 /media/carol/External_Drive/Documents/E-Books/MagPi40.pdf
COMMAND
est le nom de l’exécutable qui a ouvert le fichier, et PID
le numéro du processus. NAME
est le nom du fichier ouvert. Dans l’exemple ci-dessus, le fichier MagPi40.pdf
est ouvert par le programme evince
(un visualiseur PDF). Si nous fermons le programme, nous pourrons alors démonter le système de fichiers.
Note
|
Avant que le résultat de lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs Output information may be incomplete.
|
Où monter ?
Vous pouvez monter un système de fichiers à peu près n’importe où. En revanche, certaines bonnes pratiques doivent être respectées pour faciliter l’administration du système.
Traditionnellement, /mnt
était le répertoire à l’intérieur duquel tous les périphériques externes étaient montés. Un certain nombre de "points d’ancrage" préconfigurés pour les périphériques courants comme les lecteurs de CD-ROM (/mnt/cdrom
) et les disquettes (/mnt/floppy
) existaient à l’intérieur de ce répertoire.
Il a été remplacé par /media
, qui constitue désormais le point de montage par défaut pour tous les médias amovibles (disques externes, clés USB, lecteurs de cartes mémoire, etc.) connectés au système.
Sur la plupart des distributions Linux et des environnements de bureau modernes, les périphériques amovibles sont automatiquement montés sous /media/USER/LABEL
lorsqu’ils sont connectés au système, où USER
est le nom d’utilisateur et LABEL
l’étiquette du périphérique. Par exemple, une clé USB étiquetée FlashDrive
et insérée par l’utilisateur john
sera montée sous /media/john/FlashDrive/
. La manière dont cela est géré peut varier en fonction de l’environnement de bureau.
Ceci étant dit, lorsque vous avez besoin de monter manuellement un système de fichiers, c’est une bonne pratique de le monter en dessous de /mnt
.
Monter les systèmes de fichiers au démarrage
Le fichier /etc/fstab
contient les spécifications des systèmes de fichiers qui peuvent être montés. Il s’agit là d’un fichier texte dans lequel chaque ligne décrit un système de fichiers destiné à être monté, avec six champs par ligne dans l’ordre suivant :
FILESYSTEM MOUNTPOINT TYPE OPTIONS DUMP PASS
Avec :
FILESYSTEM
-
Le périphérique qui contient le système de fichiers à monter. Au lieu du périphérique, vous pouvez spécifier l’UUID ou l’étiquette de la partition, ce que nous allons voir un peu plus loin.
MOUNTPOINT
-
L’endroit où le système de fichiers sera monté.
TYPE
-
Le type de système de fichiers.
OPTIONS
-
Les options de montage qui seront passées à la commande
mount
. DUMP
-
Indique si les systèmes de fichiers ext2, ext3 ou ext4 doivent être pris en compte pour la sauvegarde par la commande
dump
. En règle générale, ce paramètre est égal à zéro, ce qui signifie qu’ils doivent être ignorés. PASS
-
Lorsqu’il a une valeur non nulle, il définit l’ordre dans lequel les systèmes de fichiers seront vérifiés au démarrage. En général, il est égal à zéro.
Par exemple, la première partition du premier disque d’une machine peut être décrite comme ceci :
/dev/sda1 / ext4 noatime,errors
Les options de montage spécifiées dans OPTIONS
sont une liste de paramètres séparés par des virgules, qui peuvent être génériques ou spécifiques à un système de fichiers. Parmi les paramètres génériques, nous avons :
atime
etnoatime
-
Par défaut, à chaque fois qu’un fichier est lu, les informations de temps d’accès sont mises à jour. Désactiver ceci (avec
noatime
) peut accélérer les entrées-sorties sur le disque. Ne pas confondre avec le temps de modification, qui est mis à jour à chaque fois qu’un fichier est modifié. auto
etnoauto
-
Indique si le système de fichiers peut (ou non) être monté automatiquement avec
mount -a
. defaults
-
Cette option va passer les options
rw
,suid
,dev
,exec
,auto
,nouser
etasync
àmount
. dev
etnodev
-
Indique si les périphériques de type caractère ou de type bloc seront interprétés dans le système de fichiers monté.
exec
etnoexec
-
Permet ou empêche l’exécution de binaires sur le système de fichiers.
user
etnouser
-
Permet (ou non) à un utilisateur normal de monter le système de fichiers.
group
-
Permet à un utilisateur de monter le système de fichiers s’il appartient au même groupe que celui qui est propriétaire du périphérique correspondant.
owner
-
Permet à un utilisateur de monter le système de fichiers s’il est propriétaire du périphérique concerné.
suid
etnosuid
-
Autorise ou non les bits SETUID et SETGID à prendre effet.
ro
etrw
-
Monte un système de fichiers en lecture seule ou en écriture.
remount
-
Cette option va essayer de remonter un système de fichiers déjà monté. Elle n’est pas utilisée dans
/etc/fstab
, mais comme paramètre demount -o
. Par exemple, pour remonter la partition montée/dev/sdb1
en lecture seule, vous pouvez utiliser la commandemount -o remount,ro /dev/sdb1
. Lors du remontage, vous n’avez pas besoin de spécifier le type de système de fichiers, simplement le nom du périphérique ou le point de montage. sync
etasync
-
Indique si toutes les opérations d’entrées-sorties vers le système de fichiers doivent être effectuées de manière synchrone ou asynchrone.
async
est habituellement la valeur par défaut. La page de manuel demount
prévient que l’utilisation desync
sur un média avec un nombre limité de cycles d’écriture (comme les lecteurs flash ou les cartes mémoire) peut raccourcir la durée de vie du périphérique.
Utiliser les UUID et les étiquettes
Le fait de spécifier le nom du périphérique qui contient le système de fichiers à monter peut poser quelques problèmes. En effet, le même nom de périphérique peut parfois être attribué à un autre périphérique en fonction du moment ou de l’endroit où il a été connecté au système. Par exemple, une clé USB sur /dev/sdb1
peut être assignée à /dev/sdc1
si elle est branchée sur un autre port ou après une autre clé USB.
Une solution consiste à spécifier l’étiquette ou l’UUID (Universally Unique Identifier) du volume. Ces deux éléments sont définis lors de la création du système de fichiers et ne changeront pas, à moins que le système de fichiers ne soit détruit ou qu’une nouvelle étiquette ou un nouvel UUID ne lui soient attribués manuellement.
La commande lsblk
peut être utilisée pour obtenir des informations sur un système de fichiers et trouver l’étiquette et l’UUID qui lui sont associés. Pour ce faire, utilisez l’option -f
suivie du nom du périphérique :
$ lsblk -f /dev/sda1 NAME FSTYPE LABEL UUID FSAVAIL FSUSE% MOUNTPOINT sda1 ext4 6e2c12e3-472d-4bac-a257-c49ac07f3761 64,9G 33% /
Voici la signification de chacune des colonnes :
NAME
-
Nom du périphérique qui contient le système de fichiers.
FSTYPE
-
Type du système de fichiers.
LABEL
-
Étiquette du système de fichiers.
UUID
-
Identifiant universel unique (UUID) attribué au système de fichiers.
FSAVAIL
-
L’espace disponible dans le système de fichiers.
FSUSE%
-
Pourcentage d’utilisation du système de fichiers.
MOUNTPOINT
-
L’endroit où le système de fichiers est monté.
Dans /etc/fstab
, un périphérique peut être spécifié par son UUID avec l’option UUID=
suivie de l’UUID, ou avec LABEL=
suivi du label. Ainsi, au lieu de :
/dev/sda1 / ext4 noatime,errors
On pourra utiliser :
UUID=6e2c12e3-472d-4bac-a257-c49ac07f3761 / ext4 noatime,errors
Ou, si vous avez un disque étiqueté homedisk
:
LABEL=homedisk /home ext4 defaults
La même syntaxe pourra être utilisée avec la commande mount
. Au lieu du nom du périphérique, passez l’UUID ou l’étiquette. Par exemple, pour monter un disque NTFS externe avec l’UUID 56C11DCC5D2E1334
sur /mnt/external
, la commande serait :
# mount -t ntfs UUID=56C11DCC5D2E1334 /mnt/external
Monter des disques avec Systemd
Systemd est le processus d’initialisation, le premier processus à s’exécuter sur la plupart des distributions Linux. Il se charge de lancer d’autres processus, de démarrer des services et d’amorcer le système. En dehors de ces tâches, systemd peut également être utilisé pour gérer le montage (et l’automontage) des systèmes de fichiers.
Pour utiliser cette fonctionnalité de systemd, vous devez créer un fichier de configuration appelé "unité de montage" (mount unit). Chaque volume à monter dispose de sa propre unité de montage qui devra être rangée dans /etc/systemd/system/
.
Les unités de montage sont de simples fichiers texte avec l’extension .mount
. Voici le format de base :
[Unit] Description= [Mount] What= Where= Type= Options= [Install] WantedBy=
Description=
-
Description sommaire de l’unité de montage, quelque chose comme
Monte le disque de sauvegarde
. What=
-
Ce qui doit être monté. Le volume doit être spécifié sous la forme
/dev/disk/by-uuid/VOL_UUID
oùVOL_UUID
correspond à l’UUID du volume. Where=
-
Indique le chemin complet vers l’endroit où le volume doit être monté.
Type=
-
Le type de système de fichiers.
Options=
-
Les options de montage que vous pouvez souhaiter passer, les mêmes que celles utilisées avec la commande
mount
ou dans/etc/fstab
. WantedBy=
-
Utilisé pour la gestion des dépendances. Dans ce cas, nous utiliserons
multi-user.target
, ce qui signifie qu’à chaque fois que le système démarre dans un environnement multi-utilisateur (un démarrage normal), l’unité sera montée.
L’exemple précédent du disque externe pourrait s’écrire comme ceci :
[Unit] Description=External data disk [Mount] What=/dev/disk/by-uuid/56C11DCC5D2E1334 Where=/mnt/external Type=ntfs Options=defaults [Install] WantedBy=multi-user.target
Mais ce n’est pas tout. Pour fonctionner correctement, l’unité de montage doit impérativement avoir le même nom que le point de montage. Dans notre cas, le point de montage est /mnt/external
. Le fichier devra donc être nommé mnt-external.mount
.
Ensuite, vous devez recharger la configuration du démon systemd avec la commande systemctl
et démarrer l’unité de montage :
# systemctl daemon-reload # systemctl start mnt-external.mount
À présent, le contenu du disque externe devrait être disponible dans /mnt/external
. Vous pouvez vérifier l’état du montage avec la commande systemctl status mnt-external.mount
, comme ceci :
# systemctl status mnt-external.mount ● mnt-external.mount - External data disk Loaded: loaded (/etc/systemd/system/mnt-external.mount; disabled; vendor pres Active: active (mounted) since Mon 2019-08-19 22:27:02 -03; 14s ago Where: /mnt/external What: /dev/sdb1 Tasks: 0 (limit: 4915) Memory: 128.0K CGroup: /system.slice/mnt-external.mount ago 19 22:27:02 pop-os systemd[1]: Mounting External data disk... ago 19 22:27:02 pop-os systemd[1]: Mounted External data disk.
La commande systemctl start mnt-external.mount
n’activera l’unité que pour la session en cours. Si vous voulez l’activer à chaque démarrage, remplacez start
par enable
:
# systemctl enable mnt-external.mount
Montage automatique d’une unité de montage
Les unités de montage peuvent être montées automatiquement chaque fois que le point de montage est accédé. Pour ce faire, il vous faut un fichier .automount
en plus du fichier .mount
correspondant à l’unité. Voici le format de base :
[Unit] Description= [Automount] Where= [Install] WantedBy=multi-user.target
Comme précédemment, Description=
est un descriptif sommaire du fichier, et Where=
correspond au point de montage. Par exemple, un fichier .automount
pour l’exemple ci-dessus serait :
[Unit] Description=Automount for the external data disk [Automount] Where=/mnt/external [Install] WantedBy=multi-user.target
Enregistrez le fichier avec le même nom que le point de montage (dans ce cas, mnt-external.automount
), rechargez systemd et démarrez l’unité :
# systemctl daemon-reload # systemctl start mnt-external.automount
Maintenant, chaque fois que le répertoire /mnt/external
est accédé, le disque sera monté. Comme auparavant, pour activer le montage automatique à chaque démarrage, vous devez utiliser :
# systemctl enable mnt-external.automount
Exercices guidés
-
En utilisant
mount
, comment pouvez-vous monter un système de fichiersext4
sur/dev/sdc1
vers/mnt/external
en lecture seule et avec les optionsnoatime
etasync
? -
Lors du démontage d’un système de fichiers sur
/dev/sdd2
, vous obtenez le message d’erreurtarget is busy
. Comment savoir quels fichiers du système de fichiers sont ouverts, et quels sont les processus qui les ont ouverts ? -
Prenons l’entrée suivante dans
/etc/fstab
:/dev/sdb1 /data ext4 noatime,noauto,async
. Est-ce que ce système de fichiers sera monté si la commandemount -a
est invoquée ? Pourquoi ? -
Comment trouver l’UUID d’un système de fichiers sous
/dev/sdb1
? -
Comment utiliser
mount
pour remonter en lecture seule un système de fichiers exFAT avec l’UUID6e2c12e3-472d-4bac-a257-c49ac07f3761
monté sur/mnt/data
? -
Comment peut-on afficher la liste de tous les systèmes de fichiers
ext3
etntfs
actuellement montés sur un système ?
Exercices d’approfondissement
-
Prenons l’entrée suivante dans
/etc/fstab
:/dev/sdc1 /backup ext4 noatime,nouser,async
. Est-ce qu’un utilisateur peut monter ce système de fichiers avec la commandemount /backup
? Pourquoi ? -
Imaginons un système de fichiers distant monté sur
/mnt/server
, et qui est devenu inaccessible à cause d’une perte de connectivité réseau. Comment pouvez-vous le forcer à être démonté ou remonté en lecture seule si cela n’est pas possible ? -
Écrivez une entrée
/etc/fstab
pour monter un volumebtrfs
avec l’étiquetteBackup
sur/mnt/backup
, en utilisant les options par défaut mais sans autoriser l’exécution de fichiers binaires depuis ce volume. -
Prenons l’unité de montage systemd suivante :
[Unit] Description=External data disk [Mount] What=/dev/disk/by-uuid/56C11DCC5D2E1334 Where=/mnt/external Type=ntfs Options=defaults [Install] WantedBy=multi-user.target
-
Quelle serait l’entrée
/etc/fstab
équivalente pour ce système de fichiers ?
-
-
Quel doit être le nom du fichier pour l’unité ci-dessus pour qu’il puisse être utilisé par systemd ? Où faut-il le placer ?
Résumé
Dans cette leçon, vous avez appris à monter et démonter des systèmes de fichiers, manuellement ou de manière automatique. Voici les commandes et les concepts abordés :
-
mount
(monte un périphérique vers un emplacement) -
umount
(démonte un périphérique) -
lsof
(liste des processus qui accèdent à un système de fichiers) -
les répertoires
/mnt
et/media
-
/etc/fstab
-
lsblk
(affiche le type et l’UUID d’un système de fichiers) -
Monter un système de fichiers en utilisant son UUID ou son étiquette.
-
Monter un système de fichiers en utilisant les unités de montage systemd.
-
Monter automatiquement un système de fichiers avec les unités de montage systemd.
Réponses aux exercices guidés
-
En utilisant
mount
, comment pouvez-vous monter un système de fichiersext4
sur/dev/sdc1
vers/mnt/external
en lecture seule et avec les optionsnoatime
etasync
?# mount -t ext4 -o noatime,async,ro /dev/sdc1 /mnt/external
-
Lors du démontage d’un système de fichiers sur
/dev/sdd2
, vous obtenez le message d’erreurtarget is busy
. Comment savoir quels fichiers du système de fichiers sont ouverts, et quels sont les processus qui les ont ouverts ?Utilisez
lsof
suivi du nom du périphérique :$ lsof /dev/sdd2
-
Prenons l’entrée suivante dans
/etc/fstab
:/dev/sdb1 /data ext4 noatime,noauto,async
. Est-ce que ce système de fichiers sera monté si la commandemount -a
est invoquée ? Pourquoi ?Il ne sera pas monté. L’élément clé est le paramètre
noauto
, qui signifie que cette entrée sera ignorée parmount -a
. -
Comment trouver l’UUID d’un système de fichiers sous
/dev/sdb1
?Utilisez
lsblk -f
suivi du nom du système de fichiers :$ lsblk -f /dev/sdb1
-
Comment utiliser
mount
pour remonter en lecture seule un système de fichiers exFAT avec l’UUID6e2c12e3-472d-4bac-a257-c49ac07f3761
monté sur/mnt/data
?Puisque le système de fichiers est monté, ce n’est pas la peine de vous inquiéter du type de système de fichiers ou de l’ID, il suffit d’utiliser l’option
remount
avec le paramètrero
(lecture seule) et le point de montage :# mount -o remount,ro /mnt/data
-
Comment peut-on afficher la liste de tous les systèmes de fichiers
ext3
etntfs
actuellement montés sur un système ?Utilisez
mount -t
suivi de la liste des systèmes de fichiers séparés par des virgules :# mount -t ext3,ntfs
Réponses aux exercices d’approfondissement
-
Prenons l’entrée suivante dans
/etc/fstab
:/dev/sdc1 /backup ext4 noatime,nouser,async
. Est-ce qu’un utilisateur peut monter ce système de fichiers avec la commandemount /backup
? Pourquoi ?Non, le paramètre
nouser
ne permettra pas aux utilisateurs normaux de monter ce système de fichiers. -
Imaginons un système de fichiers distant monté sur
/mnt/server
, et qui est devenu inaccessible à cause d’une perte de connectivité réseau. Comment pouvez-vous le forcer à être démonté ou remonté en lecture seule si cela n’est pas possible ?Passez les options
-f
et-r
au démontage. La commande seraitumount -f -r /mnt/serveur
. Rappelez-vous que vous pouvez combiner les options, doncumount -fr /mnt/serveur
fonctionnerait également. -
Écrivez une entrée
/etc/fstab
pour monter un volumebtrfs
avec l’étiquetteBackup
sur/mnt/backup
, en utilisant les options par défaut mais sans autoriser l’exécution de fichiers binaires depuis ce volume.La ligne doit s’écrire
LABEL=Backup /mnt/backup btrfs defaults,noexec
-
Prenons l’unité de montage systemd suivante :
[Unit] Description=External data disk [Mount] What=/dev/disk/by-uuid/56C11DCC5D2E1334 Where=/mnt/external Type=ntfs Options=defaults [Install] WantedBy=multi-user.target
-
Quelle serait l’entrée
/etc/fstab
équivalente pour ce système de fichiers ?L’entrée serait :
UUID=56C11DCC5D2E1334 /mnt/external ntfs defaults
-
-
Quel doit être le nom du fichier pour l’unité ci-dessus pour qu’il puisse être utilisé par systemd ? Où faut-il le placer ?
Le nom du fichier doit correspondre au point de montage, donc
mnt-external.mount
, placé dans/etc/systemd/system
.