Red Hat Training
A Red Hat training course is available for RHEL 8
5.8.3. Detección y sustitución de un dispositivo NVDIMM roto
Si encuentra mensajes de error relacionados con NVDIMM reportados en el registro del sistema o por S.M.A.R.T., podría significar que un dispositivo NVDIMM está fallando. En ese caso, es necesario:
- Detectar qué dispositivo NVDIMM está fallando
- Haz una copia de seguridad de los datos almacenados en él
- Sustituir físicamente el dispositivo
Procedimiento
Para detectar el dispositivo roto, utilice el siguiente comando:
# ndctl list --dimms --regions --health --media-errors --human
El campo
badblocks
muestra qué NVDIMM está roto. Anote su nombre en el campodev
.Ejemplo 5.7. Estado de salud de los dispositivos NVDIMM
En el siguiente ejemplo, el NVDIMM llamado
nmem0
está roto:# ndctl list --dimms --regions --health --media-errors --human ... "regions":[ { "dev":"region0", "size":"250.00 GiB (268.44 GB)", "available_size":0, "type":"pmem", "numa_node":0, "iset_id":"0xXXXXXXXXXXXXXXXX", "mappings":[ { "dimm":"nmem1", "offset":"0x10000000", "length":"0x1f40000000", "position":1 }, { "dimm":"nmem0", "offset":"0x10000000", "length":"0x1f40000000", "position":0 } ], "badblock_count":1, "badblocks":[ { "offset":65536, "length":1, "dimms":[ "nmem0" ] } ], "persistence_domain":"memory_controller" } ] }
Utilice el siguiente comando para encontrar el atributo
phys_id
del NVDIMM roto:# ndctl list --dimms --human
Por el ejemplo anterior, sabes que
nmem0
es el NVDIMM roto. Por lo tanto, encuentra el atributophys_id
denmem0
.Ejemplo 5.8. Los atributos phys_id de los módulos NVDIMM
En el siguiente ejemplo, el
phys_id
es0x10
:# 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 } ]
Utilice el siguiente comando para encontrar la ranura de memoria del NVDIMM roto:
# dmidecode
En la salida, busque la entrada en la que el identificador
Handle
coincida con el atributophys_id
del NVDIMM roto. El campoLocator
enumera la ranura de memoria utilizada por el NVDIMM roto.Ejemplo 5.9. Listado de ranuras de memoria NVDIMM
En el siguiente ejemplo, el dispositivo
nmem0
coincide con el identificador0x0010
y utiliza la ranura de memoriaDIMM-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) ...
Haga una copia de seguridad de todos los datos de los espacios de nombre del NVDIMM. Si no hace una copia de seguridad de los datos antes de sustituir el NVDIMM, los datos se perderán cuando retire el NVDIMM del sistema.
AvisoEn algunos casos, como cuando el NVDIMM está completamente roto, la copia de seguridad podría fallar.
Para evitarlo, supervise regularmente sus dispositivos NVDIMM utilizando el S.M.A.R.T. como se describe en Sección 5.8.2, “Supervisión del estado de los NVDIMM mediante S.M.A.R.T.” y sustituya los NVDIMM que fallen antes de que se rompan.
Utilice el siguiente comando para listar los espacios de nombres en el NVDIMM:
# ndctl list --namespaces --dimm=DIMM-ID-number
Ejemplo 5.10. Listado de espacios de nombres NVDIMM
En el siguiente ejemplo, el dispositivo
nmem0
contiene los espacios de nombrenamespace0.0
ynamespace0.2
, de los que hay que hacer una copia de seguridad:# 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 } ]
- Reemplace el NVDIMM roto físicamente.
Recursos adicionales
-
La página de manual
ndctl-list(1)
-
La página de manual
dmidecode(8)