Tutoriel

Monter un disque sous Linux : lsblk, partitionnement, mkfs, mount et fstab

Mis à jour: · Skillaria.Top

Monter un disque sous Linux consiste à rattacher le système de fichiers d'une partition à un répertoire de l'arborescence, par exemple /data. On repère le nouveau disque avec lsblk, on le partitionne avec fdisk ou parted, on le formate avec mkfs.ext4, on le monte avec mount /dev/sdb1 /data, et pour qu'il reste monté après le redémarrage on ajoute une ligne contenant son UUID dans /etc/fstab, puis on la vérifie avec mount -a.

Sous Linux, il n'existe pas de lettres de lecteurs : tous les périphériques de stockage sont intégrés dans un unique arbre de répertoires dont la racine est /. Monter un disque sous Linux revient à « accrocher » le système de fichiers d'une partition à un répertoire vide, appelé point de montage. La procédure est toujours la même : trouver le périphérique (lsblk), le partitionner (fdisk ou parted), créer le système de fichiers (mkfs), le monter (mount) et le fixer dans /etc/fstab. Voyons chaque étape, ainsi que la façon de trouver où est passé l'espace disque avec df et du.

Comment sont organisés les disques et les partitions sous Linux

Le noyau représente chaque disque par un fichier de périphérique dans /dev. Le nom dépend du type de connexion :

NomTypePartitions
/dev/sda, /dev/sdbdisques SATA/SAS/USB, de nombreux disques virtuels/dev/sda1, /dev/sda2
/dev/vdadisques virtio des machines virtuelles KVM/dev/vda1
/dev/nvme0n1SSD NVMe/dev/nvme0n1p1
/dev/mapper/...volumes logiques LVM, volumes chiffrés—

Un disque est découpé en partitions, un système de fichiers (ext4, xfs, btrfs) est créé sur la partition, et c'est ce système de fichiers qu'on monte dans un répertoire. Tant que la partition n'est pas montée, ses fichiers sont inaccessibles, même si le disque est physiquement connecté.

Voir les disques : lsblk et blkid

La première commande à lancer lorsqu'on travaille avec les disques est lsblk. Elle affiche l'arborescence des périphériques, leurs tailles et leurs points de montage :

$ lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda      8:0    0   40G  0 disk
├─sda1   8:1    0    1G  0 part /boot
└─sda2   8:2    0   39G  0 part /
sdb      8:16   0  100G  0 disk

On voit ici que sdb est un nouveau disque de 100 Go, sans partition ni point de montage. Options utiles :

  • lsblk -f — type de système de fichiers, étiquette et UUID de chaque partition.
  • lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT,MODEL — uniquement les colonnes voulues.
  • sudo blkid — UUID et type de système de fichiers pour toutes les partitions.
  • sudo fdisk -l — tables de partitions de tous les disques, avec les secteurs.

Si le disque a été ajouté « à chaud » à une machine virtuelle et que lsblk ne le voit pas, demandez au noyau de rescanner le bus : echo "- - -" | sudo tee /sys/class/scsi_host/host*/scan.

Partitionner le disque : fdisk et parted

Avant de partitionner, vérifiez encore une fois que vous avez choisi le bon périphérique : l'écriture d'une table de partitions sur le disque système détruirait vos données. Basez-vous sur la taille et sur l'absence de point de montage dans la sortie de lsblk.

GPT ou MBR

Pour les disques récents, choisissez GPT : elle prend en charge les disques de plus de 2 To et jusqu'à 128 partitions. MBR (dos) ne sert que pour les anciens systèmes démarrant via le BIOS, lorsque le chargeur de démarrage l'exige.

Partitionnement avec fdisk

Le fdisk actuel gère aussi bien GPT que MBR. Le travail se fait en mode interactif :

$ sudo fdisk /dev/sdb
Command (m for help): g        # créer une table GPT vide
Command (m for help): n        # nouvelle partition
Partition number (1-128, default 1): Enter
First sector: Enter
Last sector, +/-sectors or +/-size{K,M,G,T,P}: Enter   # tout le disque
Command (m for help): w        # écrire les modifications et quitter

Tant que vous n'avez pas tapé w, rien n'est écrit sur le disque : la touche q permet de quitter sans rien modifier.

Partitionnement en une ligne avec parted

Dans les scripts, parted est plus pratique car il fonctionne sans dialogue :

$ sudo parted -s /dev/sdb mklabel gpt
$ sudo parted -s /dev/sdb mkpart primary ext4 0% 100%
$ lsblk /dev/sdb
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sdb      8:16   0  100G  0 disk
└─sdb1   8:17   0  100G  0 part

Les bornes en pourcentages assurent un alignement correct de la partition. Si la nouvelle partition n'apparaît pas, lancez sudo partprobe /dev/sdb pour que le noyau relise la table.

Créer le système de fichiers : mkfs

Une partition n'est qu'une plage de blocs. Pour y stocker des fichiers, il faut y créer un système de fichiers :

$ sudo mkfs.ext4 -L data /dev/sdb1
mke2fs 1.47.0 (5-Feb-2023)
Creating filesystem with 26214144 4k blocks and 6553600 inodes
...
Writing superblocks and filesystem accounting information: done

L'option -L définit une étiquette qui permet de reconnaître la partition facilement. Quel système choisir :

SystèmeCommandeQuand le choisir
ext4mkfs.ext4choix universel par défaut, sait aussi se réduire
XFSmkfs.xfsgros fichiers et gros volumes, standard sous RHEL ; ne peut qu'être agrandi
Btrfsmkfs.btrfsinstantanés, compression, sous-volumes
vfat/exFATmkfs.vfat, mkfs.exfatclés USB pour échanger avec Windows et macOS

mkfs efface tout ce qui se trouvait sur la partition. La commande ne demande pas de confirmation pour une partition vide : vérifiez donc encore une fois le nom du périphérique.

Monter un disque sous Linux avec mount

Créez un répertoire — le point de montage — puis raccordez-y la partition :

$ sudo mkdir -p /data
$ sudo mount /dev/sdb1 /data
$ df -h /data
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1        98G   24K   93G   1% /data

La commande mount détecte elle-même le type de système de fichiers, mais on peut le préciser : mount -t xfs. Si le répertoire /data contenait déjà des fichiers, ils ne sont pas supprimés après le montage : ils sont simplement masqués par le nouveau système de fichiers et réapparaissent après le démontage.

Options de montage

Les options se passent avec -o, séparées par des virgules :

  • ro / rw — lecture seule ou lecture et écriture.
  • noatime — ne pas mettre à jour l'heure d'accès à chaque lecture, ce qui évite des écritures inutiles.
  • noexec — interdire le lancement de programmes depuis cette partition (utile pour /tmp et les dossiers de téléchargement).
  • nosuid, nodev — ignorer les bits SUID et les fichiers de périphériques.
  • remount — modifier les options sans démonter : sudo mount -o remount,ro /data.

Pour voir ce qui est monté et avec quelles options, la commande findmnt est pratique : findmnt /data ou findmnt -t ext4.

Droits sur le disque monté

La racine d'un ext4 neuf appartient à root, donc un utilisateur ordinaire ne peut pas y écrire. Après le montage, attribuez le répertoire à l'utilisateur voulu : sudo chown alice:alice /data. Pour vfat et exFAT, il n'existe pas de droits Unix : le propriétaire se définit à la montée avec les options uid=, gid= et umask=.

Démonter un disque : umount et l'erreur target is busy

Le démontage se fait avec la commande umount (sans le n), en indiquant le périphérique ou le répertoire :

$ sudo umount /data
umount: /data: target is busy.

Cette erreur signifie qu'un processus utilise des fichiers de ce système de fichiers ou y a son répertoire courant — souvent votre propre terminal, après un cd /data. Pour trouver le coupable :

$ sudo lsof +f -- /data
$ sudo fuser -vm /data

Arrêtez le processus ou quittez le répertoire, puis recommencez. En dernier recours, umount -l (lazy) : le système de fichiers est retiré de l'arborescence immédiatement, et il ne sera réellement libéré que lorsque les processus auront fermé leurs fichiers.

Montage automatique au démarrage : /etc/fstab

La commande mount n'agit que jusqu'au prochain redémarrage. Pour que le disque se monte automatiquement, ajoutez une ligne dans /etc/fstab. Désignez la partition par son UUID plutôt que par son nom /dev/sdb1 : les noms peuvent changer d'ordre lorsqu'on ajoute des disques, alors que l'UUID reste constant.

$ sudo blkid /dev/sdb1
/dev/sdb1: LABEL="data" UUID="3f1c9a2e-7b5d-4c1e-9a8f-2d6e4b0c1a77" TYPE="ext4" PARTUUID="..."

La ligne comporte six champs :

# <périphérique>                         <point>  <type>  <options>         <dump> <fsck>
UUID=3f1c9a2e-7b5d-4c1e-9a8f-2d6e4b0c1a77  /data    ext4   defaults,noatime  0      2
ChampRôle
périphériqueUUID=..., LABEL=... ou un chemin
pointrépertoire de montage (il doit exister)
typeext4, xfs, swap, nfs, etc.
optionsdefaults et les options voulues, par exemple noatime, nofail
dump

Questions fréquentes

Comment monter une clé USB sous Linux ?

Repérez-la avec lsblk (en général /dev/sdb1), créez un répertoire et exécutez sudo mount /dev/sdb1 /mnt/usb. Dans les environnements de bureau graphiques, les clés USB sont montées automatiquement dans /media/nom_utilisateur ou /run/media.

Comment monter une image ISO ?

Avec la commande sudo mount -o loop,ro image.iso /mnt/iso : l'option loop rattache le fichier comme un périphérique bloc. On le démonte avec un simple umount.

Comment raccorder un dossier réseau dans fstab ?

Pour NFS, la ligne ressemble à server:/export /mnt/nfs nfs defaults,_netdev,nofail 0 0 ; pour SMB, à //server/share /mnt/smb cifs credentials=/root/.smbcred,_netdev,nofail 0 0. L'option _netdev attend que le réseau soit disponible.

Quelle différence entre UUID et PARTUUID ?

L'UUID appartient au système de fichiers et change lors d'un nouveau mkfs, tandis que le PARTUUID désigne la partition dans la table GPT et reste le même lors d'un reformatage. Dans fstab, on utilise en général l'UUID.

Comment vérifier un système de fichiers pour détecter des erreurs ?

Démontez la partition puis lancez sudo fsck -f /dev/sdb1 pour de l'ext4, ou sudo xfs_repair /dev/sdb1 pour du XFS. Ne vérifiez jamais un système de fichiers monté en écriture : cela risque d'abîmer les données.

Apprenez ce sujet en vidéo

Ce sujet est traité en détail avec de la pratique dans le cours « Linux: с нуля до уверенного администрирования ».

Voir le cours