# Guide des Données SMART - Santé et Vieillissement des Disques ## Introduction Le script [script_test.sh](script_test.sh) collecte automatiquement les données SMART (Self-Monitoring, Analysis and Reporting Technology) pour tous les disques physiques détectés. Ces données permettent de surveiller l'état de santé et le vieillissement des disques durs (HDD) et SSD. ## Données Collectées ### Indicateurs Communs (HDD et SSD) #### 1. État de Santé Global ```json "health_status": "PASSED" // ou "FAILED" ou null ``` - **PASSED** : Le disque passe tous les auto-tests SMART ✅ - **FAILED** : Le disque a échoué aux tests SMART 🔴 (remplacer immédiatement) - **null** : SMART non supporté ou données non disponibles #### 2. Heures de Fonctionnement ```json "power_on_hours": 12543 ``` - Nombre total d'heures pendant lesquelles le disque a été alimenté - **Interprétation** : - < 10,000h : Jeune - 10,000-30,000h : Utilisé normalement - \> 30,000h : Vieillissant (> 3.4 ans de fonctionnement continu) - \> 50,000h : Très vieux (> 5.7 ans) #### 3. Cycles d'Alimentation ```json "power_cycle_count": 1876 ``` - Nombre de fois où le disque a été allumé/éteint - Les arrêts/démarrages fréquents peuvent réduire la durée de vie #### 4. Température ```json "temperature_celsius": 42 ``` - Température actuelle du disque en degrés Celsius - **Plages recommandées** : - HDD : 25-45°C optimal, < 50°C acceptable - SSD : 30-50°C optimal, < 70°C acceptable - ⚠️ > 60°C (HDD) ou > 80°C (SSD) : Surchauffe dangereuse ### Indicateurs Critiques de Défaillance #### 5. Secteurs Réalloués ```json "reallocated_sectors": 0 ``` - Nombre de secteurs défectueux qui ont été remplacés par des secteurs de réserve - **CRITIQUE** : Ce compteur ne devrait JAMAIS augmenter sur un disque sain - **Interprétation** : - **0** : Disque sain ✅ - **1-10** : Début de défaillance ⚠️ (surveiller de près) - **> 10** : Défaillance avancée 🔴 (planifier le remplacement) - **> 100** : Défaillance critique 🔴 (remplacer immédiatement) #### 6. Secteurs en Attente de Réallocation ```json "pending_sectors": 0 ``` - Secteurs instables en attente de réallocation - **TRÈS CRITIQUE** : Indique une défaillance imminente - **Interprétation** : - **0** : Normal ✅ - **> 0** : Défaillance imminente 🔴 (sauvegarder et remplacer MAINTENANT) #### 7. Erreurs CRC UDMA ```json "udma_crc_errors": 0 ``` - Erreurs de transmission de données (câble SATA/USB ou interface défectueux) - **Interprétation** : - **0** : Connexion saine ✅ - **1-5** : Problème de câble/connexion ⚠️ (vérifier le câble) - **> 10** : Câble défectueux ou problème d'interface 🔴 ### Indicateurs Spécifiques aux SSD #### 8. Wear Leveling Count ```json "wear_leveling_count": 97 ``` - Représente le pourcentage de durée de vie restante des cellules NAND - Généralement affiché comme une valeur de 0 à 100 - **Interprétation** : - **100-80** : SSD neuf/très bon état ✅ - **79-50** : Usure normale ✅ - **49-20** : Usure avancée ⚠️ - **< 20** : Fin de vie proche 🔴 (planifier remplacement) #### 9. Total LBAs Written ```json "total_lbas_written": 45678901234 ``` - Volume total de données écrites sur le SSD (en blocs logiques) - Permet de calculer l'usure totale du SSD - **Calcul approximatif de données écrites** : - `Total_GB_Written = (total_lbas_written × 512) / 1,073,741,824` - Exemple : 45,678,901,234 LBAs ≈ 21.8 TB écrits ## Exemple de Sortie Complète ### Disque SSD Sain ```json { "device": "nvme0n1", "model": "Samsung SSD 970 EVO Plus 500GB", "size_gb": "465.8", "type": "ssd", "interface": "nvme", "serial": "S4EWNX0R123456", "smart": { "health_status": "PASSED", "power_on_hours": 8543, "power_cycle_count": 1234, "temperature_celsius": 38, "reallocated_sectors": 0, "pending_sectors": 0, "udma_crc_errors": 0, "wear_leveling_count": 95, "total_lbas_written": 12345678901 } } ``` **Diagnostic** : Disque en excellent état ✅ ### Disque HDD avec Début de Défaillance ```json { "device": "sda", "model": "WD Blue 1TB", "size_gb": "931.5", "type": "hdd", "interface": "sata", "serial": "WD-WCC1234567890", "smart": { "health_status": "PASSED", "power_on_hours": 42567, "power_cycle_count": 3456, "temperature_celsius": 41, "reallocated_sectors": 8, "pending_sectors": 0, "udma_crc_errors": 1, "wear_leveling_count": null, "total_lbas_written": null } } ``` **Diagnostic** : - ⚠️ 8 secteurs réalloués : Début de défaillance - ⚠️ 42,567 heures (4.8 ans) : Disque vieillissant - **Action** : Surveiller de près, planifier un remplacement préventif ### Disque Défaillant (À Remplacer) ```json { "device": "sdb", "model": "Seagate Barracuda 2TB", "size_gb": "1863.0", "type": "hdd", "interface": "sata", "serial": "ST2000DM001-XXXXXXX", "smart": { "health_status": "FAILED", "power_on_hours": 67890, "power_cycle_count": 5678, "temperature_celsius": 52, "reallocated_sectors": 156, "pending_sectors": 3, "udma_crc_errors": 45, "wear_leveling_count": null, "total_lbas_written": null } } ``` **Diagnostic** : - 🔴 `health_status: "FAILED"` : Test SMART échoué - 🔴 156 secteurs réalloués : Défaillance massive - 🔴 3 secteurs en attente : Défaillance active en cours - 🔴 52°C : Surchauffe - **Action** : SAUVEGARDER IMMÉDIATEMENT et remplacer le disque ## Commandes de Diagnostic Manuel ### Voir les données SMART brutes ```bash sudo smartctl -A /dev/sda ``` ### Tester la santé d'un disque ```bash sudo smartctl -H /dev/sda ``` ### Voir toutes les informations SMART ```bash sudo smartctl -a /dev/sda ``` ### Lancer un test court (5 minutes) ```bash sudo smartctl -t short /dev/sda # Attendre 5 minutes, puis vérifier les résultats sudo smartctl -l selftest /dev/sda ``` ### Lancer un test long (plusieurs heures) ```bash sudo smartctl -t long /dev/sda # Attendre la fin du test (peut prendre 2-12h selon le disque) sudo smartctl -l selftest /dev/sda ``` ## Recommandations ### Surveillance Régulière - Exécuter le script de benchmark **mensuellement** pour suivre l'évolution - Comparer les valeurs SMART d'un mois à l'autre - Toute augmentation de `reallocated_sectors` ou `pending_sectors` est un signal d'alarme ### Planification de Remplacement - **Remplacer immédiatement** si : - `health_status: "FAILED"` - `pending_sectors > 0` - `reallocated_sectors > 100` - **Planifier un remplacement** si : - `reallocated_sectors` augmente régulièrement - `power_on_hours > 50,000` sur un HDD - `wear_leveling_count < 20` sur un SSD - Température constamment > 55°C (HDD) ou > 75°C (SSD) ### Sauvegardes - **Sauvegarde 3-2-1** : - **3** copies de vos données - **2** supports différents - **1** copie hors site ## Références - [Wikipedia SMART](https://en.wikipedia.org/wiki/S.M.A.R.T.) - [Backblaze Hard Drive Stats](https://www.backblaze.com/blog/backblaze-drive-stats-for-2024/) - Statistiques de défaillance réelles - [smartmontools Documentation](https://www.smartmontools.org/)