20.10. Détection et remplacement d'un dispositif NVDIMM cassé
Si vous trouvez des messages d'erreur relatifs aux modules de mémoire non volatile double en ligne (NVDIMM) dans votre journal système ou par S.M.A.R.T., cela peut signifier qu'un périphérique NVDIMM est défaillant. Dans ce cas, il est nécessaire de :
- Détecter le périphérique NVDIMM défaillant
- Sauvegarder les données qui y sont stockées
- Remplacer physiquement le dispositif
Procédure
Détecter le dispositif cassé :
# ndctl list --dimms --regions --health { "dimms":[ { "dev":"nmem1", "id":"8089-a2-1834-00001f13", "handle":17, "phys_id":32, "security":"disabled", "health":{ "health_state":"ok", "temperature_celsius":35.0, [...] } [...] }
Trouvez l'attribut
phys_id
du NVDIMM cassé :# ndctl list --dimms --human
D'après l'exemple précédent, vous savez que
nmem0
est le NVDIMM cassé. Par conséquent, trouvez l'attributphys_id
denmem0
.Exemple 20.7. Les attributs phys_id des NVDIMM
Dans l'exemple suivant, l'adresse
phys_id
est0x10
:# ndctl list --dimms --human [ { "dev":"nmem1", "id":"XXXX-XX-XXXX-XXXXXXXX", "handle":"0x120", "phys_id":"0x1c" }, { "dev":"nmem0", "id":"XXXX-XX-XXXX-XXXXXXXX", "handle":"0x20", "phys_id":"0x10", "flag_failed_flush":true, "flag_smart_event":true } ]
Trouvez l'emplacement de mémoire du NVDIMM cassé :
# dmidecode
Dans le résultat, recherchez l'entrée dont l'identifiant Handle correspond à l'attribut
phys_id
du NVDIMM cassé. Le champ Locator indique l'emplacement de mémoire utilisé par le NVDIMM cassé.Exemple 20.8. Liste des emplacements de mémoire NVDIMM
Dans l'exemple suivant, le périphérique
nmem0
correspond à l'identifiant0x0010
et utilise l'emplacement de mémoireDIMM-XXX-YYYY
:# dmidecode ... Handle 0x0010, DMI type 17, 40 bytes Memory Device Array Handle: 0x0004 Error Information Handle: Not Provided Total Width: 72 bits Data Width: 64 bits Size: 125 GB Form Factor: DIMM Set: 1 Locator: DIMM-XXX-YYYY Bank Locator: Bank0 Type: Other Type Detail: Non-Volatile Registered (Buffered) ...
Sauvegardez toutes les données contenues dans les espaces de noms du NVDIMM. Si vous ne sauvegardez pas les données avant de remplacer le NVDIMM, elles seront perdues lorsque vous retirerez le NVDIMM de votre système.
AvertissementDans certains cas, par exemple lorsque le NVDIMM est complètement cassé, la sauvegarde peut échouer.
Pour éviter cela, surveillez régulièrement vos périphériques NVDIMM à l'aide de S.M.A.R.T. comme décrit dans la section Surveillance de l'état des NVDIMM à l'aide de S.M.A.R.T. et remplacez les NVDIMM défaillants avant qu'ils ne se cassent.
Dressez la liste des espaces de noms sur le NVDIMM :
# ndctl list --namespaces --dimm=DIMM-ID-number
Exemple 20.9. Liste des espaces de noms NVDIMM
Dans l'exemple suivant, le périphérique
nmem0
contient les espaces de nomsnamespace0.0
etnamespace0.2
, que vous devez sauvegarder :# ndctl list --namespaces --dimm=0 [ { "dev":"namespace0.2", "mode":"sector", "size":67042312192, "uuid":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "raw_uuid":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "sector_size":4096, "blockdev":"pmem0.2s", "numa_node":0 }, { "dev":"namespace0.0", "mode":"sector", "size":67042312192, "uuid":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "raw_uuid":"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", "sector_size":4096, "blockdev":"pmem0s", "numa_node":0 } ]
- Remplacer physiquement le NVDIMM cassé.
Ressources supplémentaires
-
Les pages de manuel
ndctl-list(1)
etdmidecode(8)