248 lines
7.1 KiB
Markdown
Executable File
248 lines
7.1 KiB
Markdown
Executable File
# 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/)
|