21.10. 检测和替换断开问题的 NVDIMM 设备
如果您发现与系统日志中报告的 Non-Volatile Dual In-line Memory Modules (NVDIMM) 相关的错误消息,或者 S.M.A.R.T.,这可能意味着 NVDIMM 设备失败。在这种情况下,需要:
- 检测哪个 NVDIMM 设备失败
- 备份保存的数据
- 物理替换该设备
流程
检测有问题的设备:
# 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, [...] } [...] }
查找有问题的 NVDIMM 的
phys_id
属性:# ndctl list --dimms --human
在上例中,您知道
nmem0
是有问题的 NVDIMM。因此,查找nmem0
的phys_id
属性。例 21.7. NVDIMM 的 phys_id 属性
在以下示例中,
phys_id
是0x10
:# 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 } ]
查找有问题的 NVDIMM 的内存插槽:
# dmidecode
在输出中,找到 Handle 标识符与有问题的 NVDIMM 的
phys_id
属性匹配的条目。Locator 字段列出了有问题的 NVDIMM 使用的内存插槽。例 21.8. NVDIMM 内存插槽列表
在以下示例中,
nmem0
设备与0x0010
标识符匹配,并使用DIMM-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) ...
备份 NVDIMM 命名空间中的所有数据。如果您在替换 NVDIMM 前没有备份数据,当您从系统中删除 NVDIMM 时数据将会丢失。
警告在某些情况下,比如 NVDIMM 完全无法正常工作,备份可能会失败。
要防止这种情况,请使用 S.M.A.R.T.T 定期监控 NVDIMM 设备,如 使用 S.M.A.R.T.T 监控 NVDIMM 健康状况 中所述,并在它们中断前替换失败的 NVDIMM。
列出 NVDIMM 上的命名空间:
# ndctl list --namespaces --dimm=DIMM-ID-number
例 21.9. NVDIMM 命名空间列表
在以下示例中,
nmem0
设备包含namespace0.0
和namespace0.2
命名空间,您需要备份:# 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 } ]
- 以物理方式替换失效的 NVDIMM。
其他资源
-
ndctl-list (1)
和dmidecode (8)
man page