Mise à jour Debian : 10.10 / Buster
On s’intéresse ici aux périphériques blocs de type disque dur rotatif ou ssd, disposant d'une interface ATA (SATA ou IDE)
Sommaire
$ lspci |grep -i ata
00:17.0 SATA controller: Intel Corporation Cannon Point-LP SATA Controller [AHCI Mode] (rev 30)
$ ls -l /sys/class/block/sda
lrwxrwxrwx 1 root root 0 sept. 8 16:41 /sys/class/block/sda -> ../../devices/pci0000:00/0000:00:17.0/ata3/host2/target2:0:0/2:0:0:0/block/sda
Le disque /dev/sda est connecté sur le bus pci via une interface ata3
Pour un disque connecté par une interface usb ou pcie on aurait les mentions respectives usb ou nvme
$ ls -l /sys/class/block/sdb
lrwxrwxrwx 1 root root 0 sept. 8 16:41 /sys/class/block/sdb -> ../../devices/pci0000:00/0000:00:14.0/usb2/2-4/2-4.1/2-4.1:1.0/host3/target3:0:0/3:0:0:0/block/sdb
$ ls -l /sys/class/block/nvme0n1
lrwxrwxrwx 1 root root 0 sept. 8 16:41 /sys/class/block/nvme0n1 -> ../../devices/pci0000:00/0000:00:1d.0/0000:01:00.0/nvme/nvme0/nvme0n1
$ lsscsi -t
[2:0:0:0] disk sata:50026b767a012c69 /dev/sda
[3:0:0:0] disk usb:2-4.1:1.0 /dev/sdb
[N:0:5:1] disk pcie 0x144d:0xa801 /dev/nvme0n1
DESCRIPTION
hdparm provides a command line interface to various kernel interfaces supported by
the Linux SATA/PATA/SAS "libata" subsystem and the older IDE driver subsystem. Many
newer (2008 and later) USB drive enclosures now also support "SAT" (SCSI-ATA Command
Translation) and therefore may also work with hdparm. E.g. recent WD "Passport"
models and recent NexStar-3 enclosures. Some options may work correctly only with
the latest kernels.
$ sudo aptitude install hdparm
$ aptitude versions hdparm
i 9.58+ds-1 stable 500
p 9.58+ds-4~bpo10+1 buster-backports 100
p 9.58+ds-5 testing 10
La commandes hdparm -I fournit les caractéristiques détaillées du disque. A noter que selon les modèles de disque, certaines caractéristiques et commandes peuvent ne pas être présentes.
$ sudo hdparm -I /dev/sda |head -11
/dev/sda:
ATA device, with non-removable media
Model Number: KINGSTON SHSS37A480G
Serial Number: 50026B767A012C69
Firmware Revision: SAFM02.H
Transport: Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0
Standards:
Supported: 9 8 7 6 5
Likely used: 9
Le disque supporte la dernière version Sata : version 3. Il est utilisé selon la norme 9.
Exemple d'un disque IDE
$ sudo hdparm -I /dev/sda |head -10
/dev/sda:
ATA device, with non-removable media
Model Number: IC25N060ATMR04-0
Serial Number: MRG309K3H2GZSK
Firmware Revision: MO3OAD1A
Standards:
Used: ATA/ATAPI-6 T13 1410D revision 3a
Supported: 6 5 4
Le disque est utilisé selon la norme ATA/ATAPI-6 : ATA-6
Cas d'un disque dur rotatif
$ sudo hdparm -I /dev/sdb |grep Rotation
Nominal Media Rotation Rate: 5400
Les vitesses usuelles sont 5400 ou 7200 tours par minute.
Cas d'un disque ssd (solid state device)
$ sudo hdparm -I /dev/sda |grep Rotation
Nominal Media Rotation Rate: Solid State Device
Le mode d'accès direct mémoire est indiqué dans la ligne dma des caractéristiques détaillées :
$ sudo hdparm -I /dev/sda |grep dma
DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 udma5 *udma6
Le mode de fonctionnement est indiqué par une étoile, ici il s'agit de udma6 (ultra dma mode 6).
L'APM (Advanced Power Management) a pour but de réduire la consommation du disque, en particulier en jouant sur la vitesse de la rotation du disque. Le gain sur la consommation s'effectue au détriment de la performance d'entrée / sortie. Cette fonction est utilisée par les gestionnaires de consommation (laptop-mode-tools par exemple). L'APM est noté entre 1 et 255 :
APM = 1 - Max power management - Min IO efficiency
APM = 254 - Min power management - Max IO efficiency
A partir de 128 le ralentissement de la vitesse de rotation n'est plus autorisé
APM = 255 - APM disabled
Les caractéristiques APM supportées sont indiquées par :
$ sudo hdparm -I /dev/sdb |grep -i "power management"
Advanced power management level: 128
* Power Management feature set
* Advanced Power Management feature set
* Host-initiated interface power management
* Device-initiated interface power management
$ sudo hdparm -B /dev/sdb
/dev/sda:
APM_level = 128
Note : la valeur est modifiable, mais n'est pas mémorisée en cas de redémarrage. Par exemple, pour charger la valeur 1 :
$ sudo hdparm -B 1 /dev/sdb
/dev/sdb:
setting Advanced Power Management level to 0x01 (1)
Le temps d'attente (standby), avant arrêt de la rotation du disque, lorsque le disque n'est pas utilisé, est programmable entre 0 et 255 (voir man hdparm pour le détail). Exemple : programmation d'un temps d'attente de 5 secondes :
$ sudo hdparm -S 1 /dev/sr0
/dev/sr0:
setting standby to 1 (5 seconds)
Note : la valeur courante est modifiable mais n'est pas affichable ....
Certains disques supportent la gestion acoustique qui a pour but de réduire le bruit généré par la rotation du disque. Le disque ci-dessous ne supporte que deux valeurs : 128 = silencieux et 254 =rapide.
$ sudo hdparm -M /dev/sda
/dev/sda:
acoustic = 254 (128=quiet ... 254=fast)
Une valeur peut-être recommandée :
$ sudo hdparm -I /dev/sda |grep -i acoustic
Recommended acoustic management value: 128, current value: 254
* Automatic Acoustic Management feature set
Pour modifier, jusqu'au prochain redémarrage la valeur :
$ sudo hdparm -M 128 /dev/sda
des informations sur le disque et son fonctionnement (température, nombre d'heures de fonctionnement, pannes, ..)
des tests de fonctionnement du disque
Description : Contrôle et surveillance de systèmes de stockage utilisant S.M.A.R.T.
Le paquet smartmontools contient deux utilitaires (smartctl et smartd) pour contrôler et
surveiller les systèmes de stockage utilisant le système S.M.A.R.T. (Self-Monitoring,
Analysis and Reporting Technology) intégré dans les disques durs ATA et SCSI modernes. Il est
dérivé du paquet smartsuite et inclut la gestion des disque ATA/ATAPI-5. Il devrait
fonctionner sur n'importe quel système Linux moderne.
$ sudo aptitude install smartmontools
Liste des périphériques installés supportant le protocole smart
$ sudo smartctl --scan
/dev/sda -d scsi # /dev/sda, SCSI device
/dev/sdb -d sat # /dev/sdb [SAT], ATA device
/dev/sdc -d sat # /dev/sdc [SAT], ATA devic
smartcl -i fournit un récapitulatif des caractéristiques du disque :
$ sudo smartctl -i /dev/nvme0n1
smartctl 6.6 2017-11-05 r4594 [x86_64-linux-5.4.0-0.bpo.4-amd64] (local build)
Copyright (C) 2002-17, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Model Number: Samsung SSD 970 EVO 250GB
Serial Number: S465NX0KA72576V
Firmware Version: 2B2QEXE7
PCI Vendor/Subsystem ID: 0x144d
IEEE OUI Identifier: 0x002538
Total NVM Capacity: 250 059 350 016 [250 GB]
Unallocated NVM Capacity: 0
Controller ID: 4
Number of Namespaces: 1
Namespace 1 Size/Capacity: 250 059 350 016 [250 GB]
Namespace 1 Utilization: 74 967 281 664 [74,9 GB]
Namespace 1 Formatted LBA Size: 512
Namespace 1 IEEE EUI-64: 002538 5a81b3db92
Local Time is: Sat Apr 11 19:07:24 2020 CEST
Quelques informations supplémentaires intéressantes :
$ sudo smartctl -A /dev/nvme0n1 |grep Temperature
Temperature: 32 Celsius
Warning Comp. Temperature Time: 0
Critical Comp. Temperature Time: 0
Temperature Sensor 1: 32 Celsius
Temperature Sensor 2: 31 Celsius
Nombre de mise sous tension et d'heures de fonctionnement
$ sudo smartctl -A /dev/nvme0n1 |grep Power
Power Cycles: 1 266
Power On Hours: 288
Évaluation de la santé globale du disque (health) est fournie par
$ sudo smartctl -H /dev/nvme0n1 |tail -2
SMART overall-health self-assessment test result: PASSED
Des informations détaillées, reprenant les informations ci-dessus, sont disponibles :
$ sudo smartctl -A /dev/nvme0n1
smartctl 6.6 2017-11-05 r4594 [x86_64-linux-5.4.0-0.bpo.4-amd64] (local build)
Copyright (C) 2002-17, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF SMART DATA SECTION ===
SMART/Health Information (NVMe Log 0x02, NSID 0x1)
Critical Warning: 0x00
Temperature: 32 Celsius
Available Spare: 100%
Available Spare Threshold: 10%
Percentage Used: 0%
Data Units Read: 3 297 851 [1,68 TB]
Data Units Written: 4 453 899 [2,28 TB]
Host Read Commands: 67 941 535
Host Write Commands: 29 311 982
Controller Busy Time: 210
Power Cycles: 1 266
Power On Hours: 288
Unsafe Shutdowns: 167
Media and Data Integrity Errors: 0
Error Information Log Entries: 69
Warning Comp. Temperature Time: 0
Critical Comp. Temperature Time: 0
Temperature Sensor 1: 32 Celsius
Temperature Sensor 2: 32 Celsius
La réalisation d'un test "off line" s'effectue en deux temps :
Lancement du test proprement dit, le programme affiche la durée du test et l'heure de fin, puis s'effectue en arrière-plan (au niveau du disque). Les résultats des tests sont stockés au niveau du disque et ne sont pas spontanément affichés. La durée est fonction de la taille du disque et de sa vitesse et peut varier de quelques minutes (pour le test court sur un disque rapide) à plusieurs heures (pour le test long sur un disque lent).
$ sudo smartctl -t short /dev/sda
smartctl 6.4 2014-10-07 r4002 [x86_64-linux-4.7.0-0.bpo.1-amd64] (local build)
Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Short self-test routine immediately in off-line mode".
Drive command "Execute SMART Short self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 2 minutes for test to complete.
Test will complete after Wed Oct 26 11:45:31 2016
Use smartctl -X to abort test.-
$ sudo smartctl -l selftest /dev/sda
smartctl 6.4 2014-10-07 r4002 [x86_64-linux-4.7.0-0.bpo.1-amd64] (local build)
Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Short offline Completed without error 00% 318 -
# 2 Extended offline Completed without error 00% 225 -
# 3 Extended offline Completed without error 00% 62 -
# 4 Short offline Completed without error 00% 62 -
# 5 Short offline Completed without error 00% 62
Note : Nowadays the 'drivetemp' kernel module is a better alternative. It uses the
Linux Hardware Monitoring kernel API (hwmon), so the temperature is returned
the same way and using the same tools as other sensors.
Loading this module is as easy as creating a file in the /etc/modules-load.d directory:
echo drivetemp > /etc/modules-load.d/drivetemp.conf
$ sudo aptitude install hddtemp
Exemple d'un disque équipé d'un capteur de température :
$ sudo hddtemp /dev/sda
/dev/sda: KINGSTON SHSS37A240G: 34°C
Exemple d'un disque non équipé d'un capteur de température :
$ sudo hddtemp /dev/sdb
/dev/sdb: ST9750420AS: lecteur connu, mais il ne possède pas de capteur de température.
$ sudo hddtemp /dev/nvme0n1
ERREUR: /dev/nvme0n1: impossible de déterminer le type de bus (ou ce type de bus est inconnu)