Commande lsblk : structure des disques et partitions et vérification de l'UUID

Environnement de testFamille RHELAlmaLinux 9.8Compte root
Commandes de disques et de montagelsblkEmplacement/usr/bin/lsblk

La commande lsblk affiche sous forme d'arborescence les disques et partitions connectés à un serveur ainsi que leurs points de montage, et montre d'un coup la taille des disques, le type de système de fichiers et même l'UUID. En exécutant lsblk sur un serveur AlmaLinux 9, les périphériques loop créés par les paquets snap sont apparus avant le disque, nous les avons donc filtrés avec -e 7. Nous avons ensuite vérifié avec -f le système de fichiers xfs et l'UUID de la partition racine.

Les tailles de disque et les UUID de la sortie ci-dessous sont des valeurs d'exemple.

1️⃣ Lire la sortie de base de la commande lsblk

Sur un serveur où des programmes ont été installés avec snap, lsblk sans option affiche avant le disque une série de périphériques loop montés, un par version de paquet. On indique donc avec -e le numéro de périphérique des loop, 7, pour les exclure.

lsblk -e 7
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
nvme0n1     259:0    0   80G  0 disk 
├─nvme0n1p1 259:1    0    1M  0 part 
├─nvme0n1p2 259:2    0  200M  0 part /boot/efi
├─nvme0n1p3 259:3    0    1G  0 part /boot
└─nvme0n1p4 259:4    0 78.8G  0 part /

nvme0n1 dans la colonne NAME est le disque. Les partitions qui divisent ce disque sont nvme0n1p1 à nvme0n1p4, reliées en dessous par [├─] et [└─]. C'est comme le tableau des étages à l'entrée d'un immeuble, qui indique sous le nom de l'immeuble ce qui se trouve à chaque étage.

Dans la colonne TYPE, les disques apparaissent comme [disk] et les partitions comme [part], et la colonne MOUNTPOINTS indique le dossier où chaque partition est montée. Sur le serveur vérifié, la partition racine nvme0n1p4 était montée sur / et nvme0n1p3 sur /boot. nvme0n1p1, de 1M, est une partition de démarrage BIOS utilisée pour démarrer depuis un disque GPT, elle n'a donc pas de point de montage.

MAJ:MIN sont les numéros majeur et mineur que le noyau attribue à un périphérique ; les périphériques loop ont 7 et le disque NVMe vérifié avait 259. RM indique par 1 ou 0 si le périphérique est amovible, et RO s'il est en lecture seule.

On lit facilement SIZE comme l'espace libre, mais SIZE est la taille totale du disque ou de la partition. L'espace libre d'un système de fichiers se vérifie dans la colonne FSAVAIL, qui apparaît avec -f.

Le diagramme ci-dessous permet de comparer étape par étape comment les lignes et les colonnes de la sortie changent selon l'option.

🧭 Sortie de lsblk par option : disques et partitions
Schéma explicatif
⚙️ Option
$ lsblk -f -d -p -e 7
Nom du périphérique
Taille
Système de fichiers
Point de montage
/dev/nvme0n1
80G
├─/dev/nvme0n1p1
1M
├─/dev/nvme0n1p2
200M
vfat, 5A1E-…
/boot/efi
├─/dev/nvme0n1p3
1G
xfs, 6d2f…
/boot
└─/dev/nvme0n1p4
78.8G
xfs, 2b9e…
/
🖥️ Ce qui s'affiche à l'écran
1 ligne de disque et 4 lignes de partition, 7 colonnes de base (de NAME à MOUNTPOINTS)
1 ligne de disque et 4 lignes de partition, 8 colonnes de système de fichiers (FSTYPE, UUID, FSAVAIL, etc.)
1 seule ligne de disque, 7 colonnes de base
1 ligne de disque et 4 lignes de partition, noms commençant par /dev/
Sans option, les partitions s'accrochent en branches sous le disque. La taille et le point de montage s'affichent aussi.
-f affiche, à la place de la taille, le type de système de fichiers, l'UUID et l'espace libre. Le disque nvme0n1 et nvme0n1p1, qui n'a pas de système de fichiers, restent vides.
-d retire les lignes de partition et n'affiche que la ligne du disque.
Avec -p, /dev/ est ajouté devant les noms de périphérique, ce qui permet de passer directement les chemins affichés à d'autres commandes.

2️⃣ lsblk -f : vérifier les systèmes de fichiers et les UUID

La sortie de base n'affiche pas le type de système de fichiers, on vérifie donc avec -f comment une partition a été formatée. -f affiche huit colonnes : NAME, FSTYPE, FSVER, LABEL, UUID, FSAVAIL, FSUSE% et MOUNTPOINTS.

lsblk -f -e 7
NAME        FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
nvme0n1                                                                            
├─nvme0n1p1                                                                        
├─nvme0n1p2 vfat   FAT16       5A1E-3B7C                             192.1M     4% /boot/efi
├─nvme0n1p3 xfs                6d2f0c4e-8b1a-4f3d-a7e2-9c5b1d0e4f28  691.4M    28% /boot
└─nvme0n1p4 xfs                2b9e7f41-c3d6-4a85-b0f1-7e4a2c9d6b13   68.5G    13% /

À l'exécution, les partitions racine et /boot étaient en xfs, et /boot/efi en vfat dans la version FAT16. Le disque nvme0n1 et nvme0n1p1 n'ont pas de système de fichiers et sont donc restés vides. L'UUID est un numéro unique attribué à chaque système de fichiers ; on l'utilise dans /etc/fstab pour désigner la partition à monter par son UUID plutôt que par son nom de périphérique.

Pour vérifier les informations du système de fichiers avec le plus de précision, on utilise la commande blkid.

FSAVAIL et FSUSE% sont l'espace libre et le taux d'utilisation d'un système de fichiers monté. Les partitions non montées n'affichent aucune valeur. Commande df n'affiche que la taille et l'utilisation des systèmes de fichiers montés. lsblk affiche en plus la structure des disques et des partitions, qu'ils soient montés ou non.

3️⃣ lsblk -o pour choisir les colonnes et -b pour les octets

Si l'on écrit après -o des noms de colonnes séparés par des virgules, seules ces colonnes apparaissent, dans cet ordre. Les noms de colonnes disponibles figurent dans la liste à la fin de [lsblk --help].

lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT -e 7
NAME         SIZE FSTYPE MOUNTPOINT
nvme0n1       80G        
├─nvme0n1p1    1M        
├─nvme0n1p2  200M vfat   /boot/efi
├─nvme0n1p3    1G xfs    /boot
└─nvme0n1p4 78.8G xfs    /

MOUNTPOINT n'affiche qu'un seul point de montage, tandis que MOUNTPOINTS les affiche tous lorsque le même système de fichiers est monté à plusieurs endroits. Pour n'ajouter qu'une colonne après les colonnes de base, on place + devant le nom de la colonne, comme dans [-o +UUID].

-b affiche les tailles en nombres entiers d'octets. Pour comparer à l'œil, les unités de base sont plus lisibles ; -b convient donc aux scripts qui calculent ou comparent des tailles.

lsblk -b -o NAME,SIZE -e 7
NAME               SIZE
nvme0n1     85899345920
├─nvme0n1p1     1048576
├─nvme0n1p2   209715200
├─nvme0n1p3  1073741824
└─nvme0n1p4 84613774848

Les G et M de la sortie de base sont des unités de 1 024, le disque de 80G apparaît donc comme 85 899 345 920 octets.

4️⃣ lsblk -d pour la liste des disques et -p pour les chemins complets

Sur un serveur à plusieurs disques, les lignes de partition s'intercalent et la liste des disques devient difficile à lire ; on retire donc les partitions avec -d pour n'afficher que les lignes de disque.

lsblk -d -e 7
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0    0  80G  0 disk 

Dans la sortie, seule la ligne du disque nvme0n1 est restée, et les quatre lignes de partition en dessous ne sont pas apparues.

Avec -p, /dev/ est ajouté devant les noms de périphérique, qui apparaissent sous forme de chemins complets. Ces chemins peuvent être passés tels quels à d'autres commandes comme mount.

lsblk -p -e 7
NAME             MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
/dev/nvme0n1     259:0    0   80G  0 disk 
├─/dev/nvme0n1p1 259:1    0    1M  0 part 
├─/dev/nvme0n1p2 259:2    0  200M  0 part /boot/efi
├─/dev/nvme0n1p3 259:3    0    1G  0 part /boot
└─/dev/nvme0n1p4 259:4    0 78.8G  0 part /

Seule la colonne NAME passe aux chemins complets, de /dev/nvme0n1 à /dev/nvme0n1p4 ; les autres colonnes sont identiques à la sortie de base.

Si l'on passe en argument le chemin d'un périphérique, seuls ce périphérique et ses partitions s'affichent ; avec le chemin d'une partition, seule la ligne de cette partition apparaît.

lsblk /dev/nvme0n1p4
NAME      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
nvme0n1p4 259:4    0 78.8G  0 part /

La sortie n'affiche que la ligne de nvme0n1p4, sans la ligne du disque ni les marques de branche. Avec un chemin de périphérique inexistant, l'erreur [not a block device] est apparue et le code de sortie était 32.

5️⃣ Sortie et options de la commande lsblk pour les scripts

Il est tentant de découper la sortie de base dans les scripts, mais la composition des colonnes de la sortie de base et de -f peut changer à l'avenir ; dans les scripts, on indique donc soi-même les colonnes avec -o.

-n retire la ligne d'en-tête et n'affiche que les valeurs ; il convient quand on n'a besoin que d'une valeur, comme le type de système de fichiers d'une partition.

lsblk -no FSTYPE /dev/nvme0n1p4
xfs

Sans ligne d'en-tête, un seul mot apparaît, xfs, le type de système de fichiers de la partition racine ; on peut donc le placer directement dans une variable shell.

-P affiche chaque colonne sur une ligne sous la forme [nom=”valeur”]. Dans util-linux 2.37 sous AlmaLinux 9, ajouter -P suffit pour que les noms changent afin d'être faciles à lire comme variables shell, par exemple MAJ:MIN en MAJ_MIN et FSUSE% en FSUSE_PCT.

lsblk -P -o NAME,FSTYPE,MOUNTPOINT /dev/nvme0n1p4
NAME="nvme0n1p4" FSTYPE="xfs" MOUNTPOINT="/"

Les trois colonnes indiquées apparaissent sur une ligne dans l'ordre NAME, FSTYPE, MOUNTPOINT. Toutes les valeurs sont entre guillemets doubles.

-J affiche la sortie en JSON. Sans -d, les partitions entrent dans le tableau children sous le disque. Utilisé avec -b, seul size devient un nombre, et les autres colonnes de taille comme FSAVAIL restent des chaînes.

lsblk -J -d -o NAME,SIZE,TYPE -e 7
{
   "blockdevices": [
      {
         "name": "nvme0n1",
         "size": "80G",
         "type": "disk"
      }
   ]
}

Avec -d, le tableau blockdevices ne contient que le disque, et le tableau children n'apparaît pas.

🔲 Options de la commande lsblk

OptionCopierDescription
-e, --excludeExclut les périphériques ayant le numéro majeur indiqué. Avec 7, les périphériques loop sont exclus.
-f, --fsAffiche le type de système de fichiers, l'UUID, l'espace libre et le taux d'utilisation.
-o, --outputN'affiche, dans l'ordre, que les colonnes indiquées séparées par des virgules.
-b, --bytesAffiche la colonne SIZE en nombres entiers d'octets.
-d, --nodepsRetire les lignes de partition et n'affiche que les lignes de disque.
-p, --pathsAffiche les noms de périphérique sous forme de chemins complets commençant par /dev/.
-n, --noheadingsRetire la ligne d'en-tête et n'affiche que les valeurs.
-P, --pairsAffiche les noms de colonnes et leurs valeurs par paires sur une ligne.
-J, --jsonAffiche la sortie au format JSON.
-a, --allAffiche aussi les périphériques vides de taille 0.
OptionCopierDescription
-I, --includeN'affiche que les périphériques ayant le numéro majeur indiqué.
-l, --listAffiche la sortie sous forme de liste au lieu d'une arborescence.
-r, --rawAffiche la sortie au format raw, sans aligner les colonnes.
-i, --asciiAffiche les lignes de l'arborescence avec des caractères ASCII.
-s, --inverseInverse les dépendances et affiche les disques sous les partitions.
-S, --scsiN'affiche que les informations des périphériques SCSI.
-t, --topologyAffiche des informations de topologie comme la taille de secteur et l'ordonnanceur d'E/S.
-m, --permsAffiche le propriétaire, le groupe et les permissions des périphériques.
-x, --sortTrie selon la colonne indiquée et affiche la sortie sous forme de liste.
-O, --output-allAffiche toutes les colonnes disponibles.

🔲 Simulateur de la commande lsblk

Dans le simulateur ci-dessous, vous pouvez saisir vous-même les commandes vues jusqu'ici et vérifier comment la sortie change selon l'option.

Simulateur de la commande lsblkutil-linux 2.37.4
[root@server work]#
Les touches ↑↓ rappellent les commandes saisies auparavant.

🔢 FAQ & contenus recommandés

Avec un compte ordinaire, -f a affiché UUID et FSAVAIL de la même façon qu'avec le compte root. lsblk lit les informations de sysfs et d'udev. Quand les informations d'udev ne sont pas disponibles, il doit lire directement le périphérique, ce qui demande les droits root.

Juste après l'ajout ou le remplacement d'un périphérique, udev n'a peut-être pas encore rassemblé toutes les informations ; exécutez udevadm settle, puis relancez lsblk.

-a affiche aussi les périphériques vides de taille 0 ; on l'utilise pour vérifier qu'aucun périphérique ne manque dans la sortie de base. Sur le même serveur, l'ajout de -a a affiché une ligne de plus : un périphérique loop de 0B auquel rien n'était relié.

ℹ️ Mention d'affiliation
Le contenu de ce site contient des liens d'affiliation. Lorsqu'un visiteur achète un produit ou un service via l'un de ces liens, le site perçoit une commission du vendeur. Le montant payé par l'acheteur(il baisse lors des promotions ↓), lui, n'augmente pas. Les prix, remises et stocks indiqués correspondent à la date de rédaction et peuvent différer ; vérifiez-les donc auprès du vendeur avant d'acheter. Les produits sont choisis et évalués selon nos propres critères, et les commissions n'influencent ni l'ordre de présentation ni le contenu des évaluations.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Prouvez que vous êtes humain : 7   +   7   =