До основного вмісту

ECC-пам'ять у сервері: навіщо потрібна і як перевірити

Виділені сервери · 24.09.2026
Ілюстрація до статті «ECC-пам'ять у сервері: навіщо потрібна і як перевірити»

ECC-пам'ять у сервері: навіщо потрібна і як перевірити

ECC-пам'ять зберігає додатковий контрольний код до кожних 64 бітів даних. Це дозволяє виправити однобітову помилку на льоту й виявити двобітову, зупинивши машину замість тихого псування даних. На звичайній пам'яті така помилка просто змінює значення в оперативній пам'яті, і ніхто про це не дізнається — поки не розвалиться база.

  • Схема SECDED: одиночна помилка виправляється, подвійна — виявляється й призводить до аварійної зупинки.
  • Виправлені помилки називаються CE (correctable), невиправні — UE (uncorrectable). Рахує їх підсистема EDAC.
  • Без ECC пошкодження біта має вигляд випадкового збою застосунку, який неможливо відтворити.
  • У всіх конфігураціях виділених серверів ZevsHost стоїть DDR4 ECC: від 16 до 64 GB.
  • ECC працює лише зв'язкою: модуль, чипсет і процесор мають підтримувати її одночасно.

Як це працює

До 64 бітів корисних даних модуль додає 8 бітів контрольного коду — звідси 72-бітова шина і дев'ятий чип на планці. Контролер пам'яті під час кожного читання перераховує код і порівнює зі збереженим. Розбіжність в одному біті він виправляє прозоро для застосунку й збільшує лічильник CE.

Помилка у двох бітах виправленню не піддається. Контролер повідомляє про UE, і ядро зупиняє систему: краще падіння зі зрозумілим записом у журналі, ніж запис зіпсованого значення у файл бази. Підтримку має давати і процесор — у серверних лінійок вона є, див. вибір процесора для сервера.

Типи модулів

ТипКорекціяДе застосовуєтьсяОсобливість
UDIMM non-ECCНемаєНастільні ПК, ноутбукиПомилка лишається непоміченою
UDIMM ECCSECDEDОдносокетні сервери початкового рівняОбмеження за обсягом на канал
RDIMM (registered)SECDEDСервери Xeon E5, Scalable, EPYCБуфер адреси, більше модулів на канал
LRDIMMSECDEDКонфігурації від 256 GBБуферизація даних, вищі затримки

Змішувати регістрові та небуферизовані модулі в одній машині не можна: платформа просто не стартує. Обсяг на канал теж обмежений, тому апгрейд планують за документацією на материнську плату, а не за вільними слотами.

Що ламається без корекції

  • База даних. Зіпсований байт потрапляє на диск разом зі сторінкою InnoDB; перевірка цілісності виявить його через тижні.
  • Резервні копії. Архів збирається з даних у пам'яті, і побитий біт переїжджає в копію, з якої ви потім відновлюєтеся.
  • Гіпервізор. Одна помилка в сторінці пам'яті хоста валить гостьову машину, і налагодження йде в пошук неіснуючої вади в застосунку.
  • Шифрування. Пошкодження блоку під час роботи з ключем робить розшифрування неможливим без резервної копії ключа.

Як перевірити ECC на живому сервері

Наявність ECC-планок ще не означає, що корекція увімкнена. Перевіряйте три речі: тип пам'яті, активність EDAC і лічильники помилок.

# Тип, обсяг і частота встановлених модулів
dmidecode -t memory | grep -E 'Size|Type:|Speed|Locator'

# Чи завантажені драйвери EDAC (Debian/Ubuntu і RHEL однаково)
lsmod | grep -i edac

# Лічильники виправлених і невиправних помилок за контролерами
grep . /sys/devices/system/edac/mc/mc*/ce_count
grep . /sys/devices/system/edac/mc/mc*/ue_count

# Зведення за модулями через rasdaemon, зі збереженням у файл
ras-mc-ctl --error-count > /root/ecc-$(date +%F).txt 2>&1

У Debian і Ubuntu утиліта ставиться пакетом rasdaemon, у родині RHEL — rasdaemon з базового репозиторію. Якщо dmidecode показує тип без слова ECC, корекції немає незалежно від того, що написано в описі тарифу: це перше, що варто перевірити під час приймання виділеного сервера.

Зростаючий лічильник CE — це не «все гаразд, помилки виправляються». Одиночні виправлені помилки означають деградацію конкретної планки. За CE зазвичай приходить UE, а UE на продуктивній машині — це позапланова зупинка посеред робочого дня.

Знімайте ce_count раз на добу й порівнюйте з минулим значенням. Зростання на десятки одиниць за добу на одному модулі — привід запросити заміну планки, а не чекати аварії. Як завести ці лічильники в моніторинг разом із температурою та станом дисків, описано у статті про моніторинг заліза сервера.

Коли потрібен memtest, а коли EDAC

EDAC показує помилки на працюючій системі й вказує на конкретний модуль за номером слота. Він не навантажує пам'ять спеціально і бачить лише те, що сталося під час звичайної роботи.

Повний прохід memtest86+ навантажує всі адреси шаблонами і ловить дефекти, які в робочому профілі не проявляються. Його запускають під час приймання машини та після заміни модулів; процедуру розібрано у статті про перевірку оперативної пам'яті сервера.

ECC у конфігураціях ZevsHost

Пам'ять DDR4 з корекцією встановлена в усіх виділених серверах: 16 GB у тарифах Start (від $49 на місяць у Німеччині), 32 GB у Pro і 64 GB у Dedicated Enterprise US за $149. Окремої опції «пам'ять без ECC дешевше» в лінійці немає — на сервері це економія, яка окупається рівно один раз, до першого псування даних. Конфігурації перелічено на сторінці оренди виділених серверів.

Коротко

  • ECC виправляє однобітові помилки й зупиняє систему на двобітових, не даючи зіпсованим даним дійти до диска.
  • Перевірка займає хвилину: dmidecode -t memory, завантажений EDAC і лічильники ce_count.
  • Зростаючий CE — сигнал до заміни модуля, а не ознака нормальної роботи.
  • Регістрові та небуферизовані модулі не змішуються; обсяг на канал обмежений платформою.
  • У всіх серверах ZevsHost стоїть DDR4 ECC обсягом від 16 до 64 GB.
← Назад до бази знань Поставити питання підтримці