Недавно в логах получил сообщение
The number of correctable errors associated with this memory module has exceeded acceptable levels.
Как точно определить сбойный модуль? Через fmadm faulty определяем UUID события и смотрим детали по нему:
# fmdump -v -u 3b94eb7c-598d-46ac-8667-a41a434bc8c5 TIME UUID SUNW-MSG-ID EVENT Feb 09 17:18:45.2744 3b94eb7c-598d-46ac-8667-a41a434bc8c5 GMCA-8000-YN Diagnosed 100% fault.memory.generic-x86.dimm_ce Problem in: hc://:chassis-mfg=Dell-Inc.:chassis-name=PowerEdge-R715:chassis-part=:chassis-serial=XXX/motherboard=0/chip=1/memory-controller=1/dram-channel=0/chip-select=2 Affects: hc://:chassis-mfg=Dell-Inc.:chassis-name=PowerEdge-R715:chassis-part=:chassis-serial=XXX/motherboard=0/chip=1/memory-controller=1/dram-channel=0/chip-select=2 FRU: hc://:chassis-mfg=Dell-Inc.:chassis-name=PowerEdge-R715:chassis-part=:chassis-serial=XXX/motherboard=0/chip=1 FRU Location: -
Так же, дополнительно можно посмотреть и так:
# fmdump -epV -u 3b94eb7c-598d-46ac-8667-a41a434bc8c5
Ожидалось, что в поле FRU Location будет так же, как в ссылке документации:
Location: CPU 0 DIMM 0
Но ничего, давайте разбираться:
# prtdiag | grep DDR3 DDR3 in use 1 DIMM_A1 DDR3 in use 1 DIMM_A2 DDR3 in use 2 DIMM_A3 DDR3 in use 2 DIMM_A4 DDR3 empty 3 DIMM_A5 DDR3 empty 3 DIMM_A6 DDR3 empty 4 DIMM_A7 DDR3 empty 4 DIMM_A8 DDR3 in use 5 DIMM_B1 DDR3 in use 5 DIMM_B2 DDR3 in use 6 DIMM_B3 DDR3 in use 6 DIMM_B4 DDR3 empty 7 DIMM_B5 DDR3 empty 7 DIMM_B6 DDR3 empty 8 DIMM_B7 DDR3 empty 8 DIMM_B8
Видно, что у меня планки нумеруются с 1, а в fmdump’e с 0-ля. И так, нас интересуют поля chip=1 и chip-select=2 (почему? об этом ниже). Итого, делаем вывод, что chip => DIMM_B, а chip-select => 3, то есть планка DIMM_B3. Позже, я проверил своё предположение через логи iDRAC:
# ipmitool sel elist
...
43 | 02/10/2021 | 10:03:29 | Memory Mem ECC Warning | Transition to Non-critical from OK | Asserted
44 | 02/10/2021 | 10:10:11 | Memory Mem ECC Warning | Transition to Critical from less severe | Asserted
45 | 02/10/2021 | 10:15:31 | Event Logging Disabled SBE Log Disabled | Correctable memory error logging disabled (Corr Memory Log Disabled | DIMMB3) | Asserted | OEM Data-2 0xa1 OEM Data-3 0x04
Кто-то может сказать, что это всегда можно посмотреть через iDRAC/IPMI (но, что если у вас сервер без них или они не исправны?). Здесь важно использовать встроенные инструменты самой ОС и хорошо, когда они не зависят от марки вашего железа.
Но иногда бывают ситуации, когда определить сбойную планку сложнее, особенно на мультипроцессорных системах.
hc://:chassis-mfg=Supermicro:chassis-name=H8DGU:chassis-part=To-Be-Filled-By-O.E.M.:chassis-serial=1234567890/motherboard=0/chip=1/memory-controller=0/dram-channel=0/chip-select=2
и память
DDR3 in use 0 P1_DIMM1B BANK0
DDR3 in use 0 P1_DIMM1A BANK1
DDR3 in use 0 P1_DIMM2B BANK2
DDR3 in use 0 P1_DIMM2A BANK3
DDR3 in use 0 P1_DIMM3B BANK4
DDR3 in use 0 P1_DIMM3A BANK5
DDR3 in use 0 P1_DIMM4B BANK6
DDR3 in use 0 P1_DIMM4A BANK7
DDR3 in use 0 P2_DIMM1B BANK8
DDR3 in use 0 P2_DIMM1A BANK9
DDR3 in use 0 P2_DIMM2B BANK10
DDR3 in use 0 P2_DIMM2A BANK11
DDR3 in use 0 P2_DIMM3B BANK12
DDR3 in use 0 P2_DIMM3A BANK13
DDR3 in use 0 P2_DIMM4B BANK14
DDR3 in use 0 P2_DIMM4A BANK15
Попробуем разобраться.
– chip=1 означает cpu1 (или P2_ в выводе prtdig)
– memory_controller=0 означает первый канал (или “A” в выводе prtdiag)
– chip-select=2 означает третью планку (DIMM3)
Итого, имеем P2_DIMM3A.
Если посмотреть в ipmitool sel elistMemory | Uncorrectable ECC (@DIMMFF(CPU1)) | Asserted