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 --humanEl campo
badblocksmuestra 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
nmem0está 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_iddel NVDIMM roto:# ndctl list --dimms --humanPor el ejemplo anterior, sabes que
nmem0es el NVDIMM roto. Por lo tanto, encuentra el atributophys_iddenmem0.Ejemplo 5.8. Los atributos phys_id de los módulos NVDIMM
En el siguiente ejemplo, el
phys_ides0x10:# 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:
# dmidecodeEn la salida, busque la entrada en la que el identificador
Handlecoincida con el atributophys_iddel NVDIMM roto. El campoLocatorenumera la ranura de memoria utilizada por el NVDIMM roto.Ejemplo 5.9. Listado de ranuras de memoria NVDIMM
En el siguiente ejemplo, el dispositivo
nmem0coincide con el identificador0x0010y 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-numberEjemplo 5.10. Listado de espacios de nombres NVDIMM
En el siguiente ejemplo, el dispositivo
nmem0contiene los espacios de nombrenamespace0.0ynamespace0.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)