# 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/)
