К основному содержимому

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.
← Назад в базу знаний Задать вопрос поддержке