Подробный гайд по Memory Mirroring в BIOS серверов DDR4 - Часть 1
1. Что такое Memory Mirroring
Memory Mirroring — режим работы памяти, при котором данные одновременно записываются в два независимых набора модулей DIMM. Если один набор выходит из строя (ошибка канала, неисправность DIMM, сбой на линии контроллер–память), система продолжает работу, используя второй набор.
По аналогии с RAID 1, только на уровне контроллера памяти:
Контроллер памяти
│
├── Набор A (рабочий/основной)
└── Набор B (зеркало)
Запись идёт в оба набора. Чтение обычно выполняется из одного набора, но при ошибке контроллер переключается на зеркало.
2. Зачем это нужно
Зеркалирование памяти применяется в сценариях, где критична непрерывность работы:
- базы данных с высокими требованиями к uptime;
- финансовые и транзакционные системы;
- телеком и сетевые сервисы;
- промышленные и медицинские серверы;
- системы, где простой дороже потери ёмкости/производительности.
Главная цель — защитить не от единичных битовых ошибок (это делает ECC), а от:
- отказа целого DIMM;
- деградации канала памяти;
- ошибок сигнализации;
- проблем с рангами/банкам;
- частичного выхода из строя контроллера памяти, если архитектура позволяет.
3. Как это работает на аппаратном уровне
В серверных платформах с DDR4 память обычно подключается к контроллеру памяти CPU по нескольким каналам. Например, у Intel Xeon Scalable первого/второго поколения часто 6 каналов на сокет.
В режиме зеркалирования контроллер использует два независимых набора каналов/рангов:
- Primary set — основной набор;
- Mirror set — зеркальный набор.
Оба набора должны быть:
- одинакового объёма;
- одинакового типа (RDIMM/LRDIMM);
- одинаковой частоты и таймингов;
- одинаковой ранговости;
- установлены симметрично по правилам платформы.
При записи контроллер дублирует данные. При чтении может использоваться один набор, но при обнаружении неисправности система переключается на зеркальный.
4. Что защищает и чего не защищает
Защищает
| Тип отказа | Защищает? | Комментарий |
|---|---|---|
| Отказ одного DIMM | Да | Если он входит в зеркальную пару |
| Ошибка канала памяти | Да | Зеркало использует другой канал/набор |
| Неисправность ранга | Частично/да | Зависит от реализации |
| Единичные битовые ошибки | Да | Но обычно это уже покрывает ECC |
| Полный отказ памяти сервера | Нет | Требуются другие решения |
| Ошибка самого CPU memory controller | Частично | Зависит от архитектуры |
Не защищает
- от ошибок прошивки/логического сбоя ОС;
- от физического повреждения обоих зеркальных наборов;
- от неправильной установки модулей;
- от несовместимых DIMM;
- от потери питания без резервирования.
5. Требования к оборудованию
5.1. Поддержка платформой
Не каждый сервер поддерживает Memory Mirroring.
Опция зависит от:
- модели CPU;
- поколения платформы;
- BIOS/UEFI версии;
- чипсета/системной логики;
- разводки слотов памяти на плате.
Чаще поддержка встречается в серверах верхнего и среднего класса на Intel Xeon.
На некоторых платформах вместо классического зеркалирования предлагаются:
- ADDDC;
- Memory Sparing;
- Patrol Scrub;
- Chipkill/DDDC;
- Fault Resilient Mode;
- Rank Sparing.
Важно:
На новых платформах и в части серверов с большим числом каналов DDR4 полноценное Memory Mirroring может быть ограничено или заменено другими RAS-механизмами. Всегда проверяйте документацию конкретной модели сервера.
5.2. Требования к модулям памяти
Для зеркалирования обычно требуется:
- Одинаковый объём модулей в зеркальных наборах.
- Одинаковый тип: только RDIMM или только LRDIMM. Смешивать нельзя.
- Одинаковая частота.
- Одинаковая ранговость.
- Одинаковый вендор и ревизия желательны, но не всегда обязательны.
- Установка по правилам слотов: обычно симметрично по каналам/группам.
Пример плохой конфигурации:
Channel A: 32 GB RDIMM
Mirror Channel: 16 GB RDIMM
Такая схема либо не включится, либо зеркало будет работать только в пределах общего объёма.
5.3. Требования к заполнению слотов
Большинство серверов требуют:
- чётное количество идентичных наборов;
- симметричную установку по каналам;
- заполнение определённых групп слотов;
- одинаковую конфигурацию на оба сокета в 2-сокетных системах.
Например, если платформа требует зеркалирование парами каналов, установка только в один канал может сделать опцию недоступной.
6. Влияние на ёмкость и производительность
Ёмкость
Эффективная доступная память уменьшается примерно вдвое:
| Установлено | После включения Mirroring |
|---|---|
| 64 GB | ~32 GB |
| 128 GB | ~64 GB |
| 512 GB | ~256 GB |
Это нормальное поведение.
Производительность
Влияние зависит от реализации, но обычно:
- задержки записи растут;
- пропускная способность может снизиться;
- часть каналов перестаёт работать как независимые;
- возможно ухудшение латентности из-за синхронной записи.
В среднем потеря производительности может быть от нескольких процентов до заметной в задачах, чувствительных к пропускной способности памяти.
Где особенно заметна деградация
- HPC и in-memory аналитика;
- крупные базы данных с интенсивной записью;
- виртуализация с высокой плотностью;
- системы с высокой частотой аллокаций/деаллокаций;
- приложения с интенсивным обменом между NUMA-узлами.
7. Сравнение с другими RAS-технологиями
| Технология | Что делает | Плюсы | Минусы |
|---|---|---|---|
| ECC | Исправляет единичные ошибки, обнаруживает множественные | Базовая защита, без потери ёмкости | Не защищает от отказа DIMM целиком |
| ADDDC / Adaptive Double Device Data Correction | Улучшенная защита от ошибок на уровне чипов/устройств | Хороший баланс надёжности и ёмкости | Зависит от CPU/BIOS |
| Memory Sparing | Резервный ранг/модуль подменяет деградировавший | Не требует постоянного полного зеркалирования | Ограниченный запас замены |
| Patrol Scrub | Фоновая очистка памяти от накопленных ошибок | Уменьшает риск невосстановимых ошибок | Не заменяет аппаратную защиту |
| Memory Mirroring | Полное дублирование данных в двух наборах | Высокая отказоустойчивость | Потеря ~50% ёмкости, снижение производительности |
| Chipkill/DDDC | Исправление ошибок на уровне нескольких битов/чипов | Защита от деградации чипов | Зависит от платформы |
8. Подготовка перед настройкой
Перед включением зеркалирования выполните следующее.
8.1. Проверьте поддержку
- Откройте документацию сервера.
- Найдите разделы:
- Memory Configuration
- RAS Features
- Memory Mirroring
- Fault Resilient Memory
- Убедитесь, что ваш CPU поддерживает функцию.
- Проверьте, что версия BIOS/UEFI актуальна.
8.2. Проверьте модули
Убедитесь, что:
- все DIMM из официального списка совместимости;
- одинаковые по типу и объёму;
- нет модулей с разными ревизиями SPD, если платформа чувствительна к этому;
- контакты чистые;
- модули установлены до щелчка/фиксации.
8.3. Обновите BIOS и BMC
Иногда опция отсутствует в старых прошивках или работает некорректно. Обновите:
- BIOS/UEFI;
- iDRAC/iLO/XClarity/IPMI BMC firmware;
- CPLD/ME/BIOS-related firmware при наличии.
8.4. Сбросьте настройки при необходимости
Если ранее применялись экспериментальные настройки памяти, перед включением зеркалирования полезно:
- загрузить BIOS Default Settings;
- затем заново включить нужные функции.
9. Настройка в BIOS/UEFI
Пути отличаются у разных вендоров и зависят от версии прошивки. Ниже — типовые схемы.
9.1. Общая логика
Обычно нужно:
- Войти в BIOS/UEFI Setup.
- Перейти в раздел:
- Advanced
- Chipset
- Memory Settings
- Processor Configuration
- RAS Features
- Найти параметр:
- Memory Mirroring
- Mirroring Mode
- Channel Mirroring
- Memory Mirror Mode
- Выбрать:
- Enabled
- или конкретный режим: Channel / Slot / Inter-Socket
- Сохранить настройки и перезагрузиться.
9.2. Пример для Dell PowerEdge
Типовой путь:
System BIOS Settings
→ Memory Settings
→ Memory Mirroring
→ Enabled
Или:
System BIOS Settings
→ Processor Settings
→ Memory Mirroring
В некоторых поколениях встречается вариант выбора режима:
- None
- Address Range Mirroring
- Channel Mirroring
- Socket Mirroring
Уточнение:
Точные названия зависят от поколения сервера, например 13G, 14G, 15G. На ряде платформ опция может быть недоступна, если не выполнены требования к установке DIMM.
После включения проверьте:
- iDRAC → System → Memory;
- Lifecycle Controller → System Information;
- доступный объём памяти в ОС.
9.3. Пример для HPE ProLiant
Типовой путь через BIOS/RBSU:
System Configuration
→ BIOS/Platform Configuration (RBSU)
→ Advanced System Options
→ Processor Options
→ Memory Mirroring
→ Enabled
Или:
Advanced Memory Protection
→ Memory Mirroring
У HPE также встречаются термины:
- Advanced ECC Support
- Online Spare Memory
- Mirrored Memory
Важно:
Если установлена неподходящая конфигурация DIMM, BIOS может автоматически заблокировать зеркалирование или скрыть опцию.
9.4. Пример для Lenovo ThinkSystem
Типовой путь:
System Settings
→ Processors
→ Memory Mirroring
→ Enabled
Или:
System Settings
→ Memory
→ Memory Mirroring
В Lenovo XClarity Controller можно дополнительно проверить:
- Server configuration → Memory;
- Event logs;
- Memory health status.
9.5. Пример для Supermicro
Типовой путь:
Advanced
→ Chipset Configuration
→ North Bridge
→ Memory Configuration
→ Memory Mirroring
→ Enabled
Или:
Advanced
→ Memory Configuration
→ Memory RAS Configuration
→ Mirroring
В зависимости от платы может быть выбор:
- Disable
- Enable
- Auto
- Specific channel pair
9.6. Пример для Intel-платформ
На серверных платах и платформах Intel путь часто выглядит так:
Advanced
→ Memory Configuration
→ Memory RAS Configuration
→ Memory Mirroring
Или:
Processor Configuration
→ Memory Controller Configuration
→ Mirroring Mode
Встречающиеся значения:
- Disabled
- Enabled
- Inter-socket Mirroring
- Intra-socket Mirroring
10. Возможные режимы зеркалирования
В зависимости от платформы режимы могут называться по-разному.
10.1. Channel Mirroring
Зеркалируются пары каналов памяти.
Пример:
Канал 0 ↔ Канал 1
Канал 2 ↔ Канал 3
Наиболее частый вариант для систем с несколькими каналами.
10.2. Socket Mirroring / Inter-Socket Mirroring
Зеркалирование между сокетами. Обычно требует двух идентичных конфигураций памяти в каждом сокете.
Пример:
Socket 0 Memory Set ↔ Socket 1 Memory Set
Используется в системах, где важна защита от отказа, связанного с одним сокетом/контроллером.
10.3. Rank Mirroring
Зеркалируются ранги внутри одного канала или между каналами. Встречается реже и сильно зависит от платформы.
10.4. Address Range Mirroring
Зеркалируется не вся память, а только определённый адресный диапазон. Это более гибкий вариант, но не всегда доступен в серверных BIOS.
Мы делимся этой технической информацией, чтобы помочь вам в решении задач — используйте её с пониманием. Статья носит рекомендательный характер, поэтому, пожалуйста, применяйте описанные методы осмотрительно.