LINUX:SmartMonTools
But
Ce logiciel sert à surveiller l'état des disques durs qui supportent la technologie Smart. En cas de défaillance, son service vous avertit par mail.
Installation
Par défaut, il est installé.
Sinon exécutez la commande suivante:
dnf install smartmontools
Service
Si vous voulez être avertis, il faut lancer le service Smartd:
systemctl enable smartd systemctl start smartd
Consultation
On peut consulter à tout moment un grand nombre d'informations sur l'état du disque via son nom de device.
Pour obtenir la totalité des informations, utilisez les options "-a" ou "-x". Par exemple pour de device "/dev/sda", premier disque répertorié:
smartctl -a /dev/sda smartctl -x /dev/sda
Voici un exemple de sortie pour la première commande:
smartctl 7.4 2023-08-01 r5530 [x86_64-linux-6.11.5-200.fc40.x86_64] (local build) Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org === START OF INFORMATION SECTION === Model Family: Western Digital Blue Device Model: WDC WD5000AAKX-001CA0 Serial Number: WD-WCAYUHL91712 LU WWN Device Id: 5 0014ee 2067f4155 Firmware Version: 15.01H15 User Capacity: 500.107.862.016 bytes [500 GB] Sector Size: 512 bytes logical/physical Device is: In smartctl database 7.3/5528 ATA Version is: ATA8-ACS (minor revision not indicated) SATA Version is: SATA 3.0, 6.0 Gb/s (current: 3.0 Gb/s) Local Time is: Sun Nov 3 12:56:00 2024 CET SMART support is: Available - device has SMART capability. SMART support is: Enabled === START OF READ SMART DATA SECTION === SMART overall-health self-assessment test result: PASSED General SMART Values: Offline data collection status: (0x82) Offline data collection activity was completed without error. Auto Offline Data Collection: Enabled. Self-test execution status: ( 0) The previous self-test routine completed without error or no self-test has ever been run. Total time to complete Offline data collection: ( 7860) seconds. Offline data collection capabilities: (0x7b) SMART execute Offline immediate. Auto Offline data collection on/off support. Suspend Offline collection upon new command. Offline surface scan supported. Self-test supported. Conveyance Self-test supported. Selective Self-test supported. SMART capabilities: (0x0003) Saves SMART data before entering power-saving mode. Supports SMART auto save timer. Error logging capability: (0x01) Error logging supported. General Purpose Logging supported. Short self-test routine recommended polling time: ( 2) minutes. Extended self-test routine recommended polling time: ( 80) minutes. Conveyance self-test routine recommended polling time: ( 5) minutes. SCT capabilities: (0x3037) SCT Status supported. SCT Feature Control supported. SCT Data Table supported. SMART Attributes Data Structure revision number: 16 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x002f 200 200 051 Pre-fail Always - 0 3 Spin_Up_Time 0x0027 144 140 021 Pre-fail Always - 3775 4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 760 5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0 7 Seek_Error_Rate 0x002e 200 200 000 Old_age Always - 0 9 Power_On_Hours 0x0032 021 021 000 Old_age Always - 57893 10 Spin_Retry_Count 0x0032 100 100 000 Old_age Always - 0 11 Calibration_Retry_Count 0x0032 100 100 000 Old_age Always - 0 12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 758 192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 85 193 Load_Cycle_Count 0x0032 200 200 000 Old_age Always - 674 194 Temperature_Celsius 0x0022 095 090 000 Old_age Always - 48 196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0 197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 0 198 Offline_Uncorrectable 0x0030 200 200 000 Old_age Offline - 0 199 UDMA_CRC_Error_Count 0x0032 200 200 000 Old_age Always - 0 200 Multi_Zone_Error_Rate 0x0008 200 200 000 Old_age Offline - 0 SMART Error Log Version: 1 No Errors Logged SMART Self-test log structure revision number 1 No self-tests have been logged. [To run self-tests, use: smartctl -t] SMART Selective self-test log data structure revision number 1 SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS 1 0 0 Not_testing 2 0 0 Not_testing 3 0 0 Not_testing 4 0 0 Not_testing 5 0 0 Not_testing Selective self-test flags (0x0): After scanning selected spans, do NOT read-scan remainder of disk. If Selective self-test is pending on power-up, resume after 0 minute delay. The above only provides legacy SMART information - try 'smartctl -x' for more
Scripts
On peut créer des scripts pour en extraire les information désirées afin de faciliter la lecture.
Le premier permet d'extraire les informations générales:
#!/bin/bash liste=`ls /dev/sd?` echo -e "Disque \tTaille\tFirme-Modèle" echo "=============================================================================" for disque in $liste do FIRME=`/usr/sbin/smartctl -a $disque | /usr/bin/grep "Model Family" | /usr/bin/awk -F':' '{printf("\t%s\n",$2)}' | /usr/bin/sed -r "s/( )+//g" ` MODEL=`/usr/sbin/smartctl -a $disque | /usr/bin/grep "Device Model" | /usr/bin/awk -F':' '{printf("\t%s\n",$2)}' | /usr/bin/sed -r "s/( )+//g" ` TAILLE=`/usr/sbin/smartctl -a $disque | /usr/bin/grep "User Capacity" | /usr/bin/awk -F'[' '{printf("\t%s\t",$2)}' | /usr/bin/awk -F']' '{printf("\t%s\t",$1)}' | /usr/bin/sed -r "s/( )+//g" ` echo -n $disque echo -n -e "\t" echo -n $TAILLE echo -n -e "\t" echo -n $FIRME echo -n -e "\t" echo $MODEL done
Si nous l'exécutons, nous obtenons ce style de sortie:
Disque Taille Firme-Modèle ============================================================================= /dev/sda 500 GB Western Digital Blue WDC WD5000AAKX-001CA0 /dev/sdb 500 GB Western Digital Blue WDC WD5000AAKX-603CA0 /dev/sdc 500 GB Seagate Barracuda ES.2 ST3500320NS /dev/sdd 1,00 TB Western Digital Blue WDC WD10EALX-009BA0
Le second permet d'extraire la température des disques:
#!/bin/bash echo " " echo "Désignation des colonnes:" echo A. Température actuelle echo B. Power Cycle Min/Max Temperature echo C. Lifetime Min/Max Temperature echo D. Température recommandée Min/Max echo E. Température limite Min/Max echo " " echo -e "Disque \tTempératures" echo " A B C D E" echo "================================================================" liste=`ls /dev/sd?` for disque in $liste do TEMP1=`/usr/sbin/smartctl -x $disque | /usr/bin/grep "Power Cycle Min/Max Temperature" | /usr/bin/awk -F' ' '{printf("\t%s\n",$5)}' | /usr/bin/sed -r "s/( )+//g" ` TEMP2=`/usr/sbin/smartctl -x $disque | /usr/bin/grep "Lifetime Min/Max Temperature" | /usr/bin/awk -F' ' '{printf("\t%s\n",$4)}' | /usr/bin/sed -r "s/( )+//g" ` TEMP3=`/usr/sbin/smartctl -x $disque | /usr/bin/grep "Min/Max recommended Temperature" | /usr/bin/awk -F' ' '{printf("\t%s\n",$4)}' | /usr/bin/sed -r "s/( )+//g" ` TEMP4=`/usr/sbin/smartctl -x $disque | /usr/bin/grep "Min/Max Temperature Limit" | /usr/bin/awk -F' ' '{printf("\t%s\n",$4)}' | /usr/bin/sed -r "s/( )+//g" ` TEMP=`/usr/sbin/smartctl -x $disque | /usr/bin/grep "Temperature_Celsius" | /usr/bin/awk -F' ' '{printf("\t%s\n",$8)}' | /usr/bin/sed -r "s/( )+//g" ` if [ "$TEMP" == "" ] then TEMP=`/usr/sbin/smartctl -x $disque | /usr/bin/grep "Current Temperature:" | /usr/bin/awk -F' ' '{printf("\t%s\t",$3)}' | /usr/bin/sed -r "s/( )+//g" ` fi echo -n $disque echo -n -e "\t" echo -n $TEMP echo -n -e "\t" echo -n $TEMP1 echo -n -e "\t" echo -n $TEMP2 echo -n -e "\t" echo -n $TEMP3 echo -n -e "\t" echo -n $TEMP4 echo -n -e "\t" echo " Celcius" done
Si nous l'exécutons, nous obtenons ce style de sortie:
Désignation des colonnes: A. Température actuelle B. Power Cycle Min/Max Temperature C. Lifetime Min/Max Temperature D. Température recommandée Min/Max E. Température limite Min/Max Disque Températures A B C D E ================================================================ /dev/sda 48 24/51 0/53 0/60 -41/85 Celcius /dev/sdb 49 24/52 0/55 0/60 -41/85 Celcius /dev/sdc 41 22/42 18/50 0/ 0/ Celcius /dev/sdd 48 24/52 47/55 0/60 -41/85 Celcius
On peut remarquer que certaines valeurs ne sont pas disponibles pour certains disques selon les fonctions supportées de Smart du matériel.
Note: Nous verrons dans d'autres articles diverses commandes de lignes fournissant aussi la température des disques (Surveiller la température).
On peut adapter facilement ces scripts afin d'extraire d'autres informations.