Возможно вы искали:
#Dell
#Blade
#HP
#RAID-контроллеры
Проверка серверной памяти через dmidecode
20 Марта 2024

Проверка серверной памяти через dmidecode

Проверка серверной памяти через dmidecode



Проверка серверной памяти через dmidecode


Инструкция для инженеров | Ubuntu Linux

1. Что такое dmidecode

dmidecode — утилита Linux, которая читает DMI/SMBIOS таблицу из BIOS сервера. Показывает информацию о каждом модуле памяти: производитель, серийный номер, part number, скорость, ранг, слот.

Главное применение: выявление SPD-клонов (поддельной HPE SmartMemory). Если два модуля имеют одинаковый серийный номер в SPD — это 100% подделка.

2. Установка

На Ubuntu обычно уже установлена. Если нет:

sudo apt install dmidecode

3. Основные команды

3.1 Полная информация о памяти

sudo dmidecode -t memory

Показывает всё: массив памяти (максимальная ёмкость, количество слотов, тип коррекции) и каждый установленный модуль.

3.2 Только модули (самое полезное)

sudo dmidecode -t 17

Type 17 = Memory Device. Показывает информацию по каждому DIMM отдельно.

3.3 Быстрая проверка на клоны (дубли серийников)

sudo dmidecode -t 17 | grep "Serial Number" | sort | uniq -c | sort -rn

Как читать результат:

·         • Каждая строка показывает количество модулей с одинаковым серийником

·         • Все числа должны быть "1" — каждый серийник уникален

·         • Если число > 1 — найдены дубли = SPD-клоны (подделка)

Пример нормального результата:

      1       Serial Number: 9223B300D8J
      1       Serial Number: 4J4FF131A0D6
      1       Serial Number: 161VJPR8P02Y
      1       Serial Number: RWSTVC43KEB5RE

Пример подозрительного результата (клоны!):

      4       Serial Number: 9223B300D8J    ← 4 модуля с одним серийником!
      1       Serial Number: 161VJPR8P02Y

3.4 Компактная таблица всех модулей

sudo dmidecode -t 17 | grep -E "Locator:|Size:|Speed:|Manufacturer:|Part Number:|Serial Number:|Rank:" | grep -v "Bank Locator"

Показывает ключевые поля для каждого модуля в удобном формате.

3.5 Только модули от не-HPE производителей

sudo dmidecode -t 17 | grep -B2 -A10 "Manufacturer:" | grep -v "HPE\|Hewlett" | grep -E "Locator:|Manufacturer:"

4. Расшифровка вывода

Пример вывода для одного DIMM на HPE DL380 Gen10:

Memory Device
    Total Width: 72 bits
    Data Width: 64 bits
    Size: 32768 MB
    Form Factor: DIMM
    Locator: PROC 1 DIMM 1
    Type: DDR4
    Type Detail: Synchronous Registered (Buffered)
    Speed: 2933 MT/s
    Manufacturer: HPE
    Serial Number: 9223B300D8J
    Part Number: P03052-091
    Rank: 2
    Configured Memory Speed: 2933 MT/s
    Configured Voltage: 1.2 V

Значение ключевых полей:

Поле

Что означает

На что обращать внимание

Serial Number

Серийный номер из SPD EEPROM

Должен быть УНИКАЛЕН. Дубли = SPD-клон

Manufacturer

Производитель / бренд

HPE = брендировано HPE. Samsung/Hynix/Micron без HPE = не SmartMemory

Part Number

Assembly Part Number HPE

Должен быть валидный HPE PN (840757-091, P03052-091 и т.д.)

Total Width

72 bits = с ECC, 64 bits = без

64 bits = НЕ серверная память!

Type Detail

Тип модуля

"Registered (Buffered)" = RDIMM. "Unbuffered" = десктопная

Speed vs Configured

Заявленная vs реальная

Если Configured < Speed — память понижена из-за несовместимости

Rank

Кол-во рангов (1, 2, 4)

Влияет на производительность и совместимость

Size

Объём модуля

Должен соответствовать маркировке на плашке


5. Скрипт для полного аудита памяти

Сохранить как файл memory-audit.sh, запускать с правами root.

#!/bin/bash
# HPE Memory Audit Script
# Запуск: sudo bash memory-audit.sh

echo "=== MEMORY AUDIT $(hostname) $(date '+%Y-%m-%d %H:%M') ==="
echo ""

# Общая информация
echo "--- Physical Memory Array ---"
sudo dmidecode -t 16 | grep -E "Maximum Capacity|Number Of Devices|Error Correction"
echo ""

# Таблица всех модулей
echo "--- Installed DIMMs ---"
sudo dmidecode -t 17 | awk '
/^Memory Device$/ { slot=""; size=""; speed=""; mfr=""; pn=""; sn=""; rank="" }
/Locator:/ && !/Bank/ { gsub(/.*Locator: /, ""); slot=$0 }
/Size:/ { gsub(/.*Size: /, ""); size=$0 }
/^\tSpeed:/ { gsub(/.*Speed: /, ""); speed=$0 }
/Manufacturer:/ { gsub(/.*Manufacturer: /, ""); mfr=$0 }
/Part Number:/ { gsub(/.*Part Number: /, ""); pn=$0 }
/Serial Number:/ { gsub(/.*Serial Number: /, ""); sn=$0 }
/Rank:/ { gsub(/.*Rank: /, ""); rank=$0 }
/Configured Memory Speed:/ {
    if (size != "" && size != "No Module Installed")
        printf "%-18s | %-10s | %-12s | %-10s | %-14s | %-16s | %s\n", \
            slot, size, speed, mfr, pn, sn, rank
}'

# Проверка дублей
echo ""
echo "--- Проверка SPD-клонов (дубли серийников) ---"
dupes=$(sudo dmidecode -t 17 | grep "Serial Number" \
    | grep -v "Not Specified\|NO DIMM" | sort | uniq -d)
if [ -z "$dupes" ]; then
    echo "Дубли НЕ найдены — ОК"
else
    echo "ВНИМАНИЕ! Обнаружены дублирующиеся серийники:"
    sudo dmidecode -t 17 | grep "Serial Number" \
        | grep -v "Not Specified" | sort | uniq -c | sort -rn
fi

echo ""
echo "=== END ==="

6. Альтернатива: decode-dimms (прямое чтение SPD)

dmidecode читает данные из BIOS (который уже интерпретировал SPD). Для прямого чтения SPD EEPROM с плашки:

sudo apt install i2c-tools
sudo modprobe ee1004           # для DDR4
sudo decode-dimms

decode-dimms показывает сырые данные из SPD EEPROM, включая тайминги, CRC, vendor ID. На серверах HPE доступ к SMBus может быть ограничен — dmidecode надёжнее.

7. Практический план проверки памяти

1.       1. Установить модули памяти в сервер HPE

2.       2. Загрузить Ubuntu (Live USB или установленная)

3.       3. Выполнить команду проверки дублей серийников:

sudo dmidecode -t 17 | grep "Serial Number" | sort | uniq -c | sort -rn

4.       4. Если есть дубли — модули являются SPD-клонами (Класс 2)

5.       5. Сохранить полный отчёт для документации:

sudo dmidecode -t memory > memory-audit-$(hostname)-$(date +%Y%m%d).txt

6.       6. Сверить Serial Number из dmidecode с CT номером на наклейке модуля — у оригинала они должны коррелировать

Источники: Ubuntu manpages (dmidecode, decode-dimms), Baeldung, Linux Audit, HPE Community Forums, Stack Overflow.