15/11/2024

Commandes et SystèmeLinux

Comment différencier le type de disque utilisé sur Linux ?

I. Présentation

En tant qu’administrateur nous savons tous, ou presque, comment faire la différence, sur un système GNU/Linux, entre un disque IDE et un disque SCSI ou SATA. En effet, les premiers sont généralement labélisés /dev/hdx, alors que les seconds sont identifiés par le nom de périphérique /dev/sdx. Mais, comment distinguer un disque SCSI ou SATA d’un disque SSD.

REMARQUE : x représente la lettre d’identification du volume. Soit ‘a’ pour le 1er disque, b pour le second, ainsi de suite.

RAPPEL : il est peut être intéressant de rappeler brièvement l’architecture d’un ordinateur quel qu’il soit, afin de mieux comprendre où intervient cette connaissance des disques ou des périphériques connectés:

Comme nous le constatons sur ce graphe, les disques arrivent en bout de chaîne et sont reliés à des bus d’adressage et de données, ainsi qu’à des contrôleurs, permettant l’orchestration et la distributions cohérente des informations sous-jacentes. Qu’il s’agisse de bus PCI ou PCI express, on distingue trois grandes familles de disques :

• Les disques IDE et (S)ATA
• Les disques SCSI
• Les disques SSD

A l’heure où les disques SSD sont de plus en plus déployés sur les machine, je vous propose dans ce tutoriel de voir comment distinguer en quelques commandes les disques SCSI, SATA des disques SSD. La finalité étant de pouvoir optimiser correctement les performances de chacun d’eux.

II. Distinction entre disques SATA et SSD

Comme nous l’avons mentionné en introduction, les disques SATA, SCSI et SSD portent le même nom de périphérique : /dev/sdx. Donc, il n’est pas question de les distinguer comme on peut le faire entre disque IDE et disque SATA. Toutefois, sur une distribution Linux, il existe deux systèmes de fichiers particuliers, appelés les pseudo-filesystems disposant des informations concernant chaque processus, chaque périphérique du système.

Nous allons donc piocher l’information recherchée dans le pseudo-système de fichiers /sys en interrogeant /sys/block/sdx/queue/rotational (en remplaçant x par sa valeur véritable : a, b, c… pour votre système), par exemple pour un disque sda:

# cat /sys/block/sda/queue/rotational

Dans le cas où la réponse est :

• 0, il s’agit d’un disque SSD
• 1, il s’agit d’un disque SATA ou SCSI

III. Informations pour les disques SCSI

En ce qui concerne les disques SCSI, il est possible d’installer le package lsscsi permettant de détecter les informations du ou des périphériques associés :

# yum install lsscsi

Cette commande fournit la liste des périphériques SCSI et il est possible de faire également afficher la taille du disque ou son identifiant :

-s pour afficher la taille du périphérique
-g pour afficher l’identifiant utilisé par le noyau

REMARQUE : cette commande est un dérivé de la commande lsblk et n’affiche qu’un sous-ensemble des périphériques du système.

L’option -t de la commande lsscsi permet de compléter les informations déjà obtenues, en distinguant les disques avec contrôleur intégré (IDE, ATA, PATA ou même SATA), de ceux dont l’interface ATA est émulée au travers d’une interface USB (cas des clés USB, des lecteurs de cartes SD…) :

$ lsscsi -t
[0:0:0:0] disk sata: /dev/sda 
[2:0:0:0] cd/dvd sata: /dev/sr0 
[7:0:0:0] disk usb: 2-2:1.0 /dev/sdb

Dans l’exemple ci-dessus, nous avons identifié un disque dur SATA /dev/sda, un lecteur/graveur CD ou DVD /dev/sr0 et une carte flash /dev/sdb. Dans le pseudo-système de fichiers /sys, les disques appartenant à la classe des périphériques blocs, leurs adresses vers les contrôleurs (USB ou ATA) s’y trouvent. Pour s’en convaincre, il suffit d’exécuter la commande :

# ls -l /sys/class/block/

L’exemple précédent met également en lumière qu’il est possible grâce à la commande lsscsi de lister des éléments de type différents tels que des disques SATA ou des connectiques USB. C’est d’ailleurs un des moyens de les distinguer entre eux.

IV. Contrôleur et bus PCI

Le contrôleur, quant à lui, est à rechercher à partir de l’adresse fournie sur le bus PCI ou USB:

# ls -l /sys/class/block | grep "/dev/sda ->"
lrwxrwxrwx 1 root root 0 nov. 3 23:01 sda -> ../../devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda

Le contrôleur recherché se trouve donc à l’adresse identifiée par le formalisme <bus>:<slot>:<fonction> soit l’adresse 00:1f:2. Grâce à la commande lspci on peut alors déterminer les informations souhaitées:

# lspci -s 1f.2 -k
00:1f.2 SATA controller: Intel Corporation 6 Series/C200 Series Chipset Family 6 port SATA AHCI Controller (rev 05)
Subsystem: ASUSTeK Computer Inc. Device 1347
Kernel driver in use: ahci

D’après cet exemple, le contrôleur est donc de type SATA associé à un pilote AHCI (Advanced Host Controler Interface). Le même genre d’information peut être obtenue à l’aide de la commande ci-dessus, pour un contrôleur IDE.

REMARQUE: dans le cas d’une adresse sur un bus USB, on peut utiliser la commande lsusb pour identifier l’ensemble de ces informations.

RAPPEL: les différents acronymes concernant les disques sont les suivants :

• SCSI: Small Computer Systems Interface
• PCI: Peripheral Component Interconnect
• PATA: Parallel Advanced Technology Attachment
• IDE: Integrated Drive Electronic
• SATA: Serial Advanced Technology Attachment
• USB: Universal Serial Bus

V. Cas particulier de disque SSD sur un bus PCI express

Il arrive parfois qu’au sein de certaines machines, on connecte des disques SSD sur un bus PCI express. Dans ce genre de situation, le nom du périphérique est alors NVme (et non plus sdx). Afin de déterminer le nom d’un périphérique, la commande associée est très simple :

# lsblk -o NAME

On devrait alors voir s’afficher l’écran suivant :

Ce genre de commande sur un serveur dont les montages sont effectués sur du LVM en multipath, retourne alors les différentes partitions avec leur équivalent et leur nommage :

sda
└─mpatha (dm-5)
├─mpathap1 (dm-6)
└─mpathap2 (dm-7)
├─vg_linux-lv_sys_swap (dm-8)
├─vg_linux-lv_sys_root (dm-9)
├─vg_linux-lv_sys_var (dm-10)
└─vg_linux-lv_sys_util (dm-11)
…

Ici, "linux" représente le nom du serveur. Le nommage LVM dépend des normes de labélisation en cours sur vos plateformes. Pour comprendre comment est constitué LVM et le multipath, je vous invite à vous reporter au cours "Le stockage LVM sous Linux" sur ce site.

VI. Conclusion

Voilà un billet succinct listant les principales commandes permettant de récupérer de l’information concernant à la fois les disques durs et les contrôleurs sous-jacents. J’espère que cela pourra vous servir pour identifier rapidement le type de périphérique utilisé sur vos machines et ainsi, optimiser leurs performances de façon adéquate.

author avatar
Philippe PIERRE
A exercé de nombreuses années en tant qu'administrateur de base de données et comme administrateur Système Unix/Linux. Il a enseigné les réseaux au CNAM (Paris). Aujourd'hui, employé en tant qu'ingénieur infrastructure, au sein d'un laboratoire pharmaceutique et administrant un cluster de calculs HPC, il connaît parfaitement les environnements GNU/Linux dans le cadre d'une entreprise et des systèmes de haute disponibilité. Il aime partager son expérience.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

2 commentaires sur “Comment différencier le type de disque utilisé sur Linux ?

  • Merci ca servira surement et ca ma permet d’en apprendre un peu plus sur linux

    Répondre
    • Merci pour votre commentaire. Pour tout dire c’est ainsi que j’ai découvert Linux et que je ne puis m’en passer maintenant. Bonne journée.

      Répondre

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.