Что такое аппаратный RAID-контроллер и когда он нужен
Аппаратный RAID-контроллер - это плата в слоте PCIe с собственным процессором (ROC), буфером кэша DDR3/DDR4 объёмом от 512 МБ до 8 ГБ и модулем защиты кэша от сбоя питания. Операционная система видит готовый логический том, а расчётом чётности и зеркалированием занимается железо. Типичные представители: LSI/Broadcom MegaRAID 9361-8i, Adaptec SmartRAID 3154-8i, Dell PERC H740P.
Выбирайте аппаратный RAID, когда нужны предсказуемые IOPS на случайной записи (СУБД, виртуализация), защищённый кэш, горячая замена дисков, работа через SAS-экспандеры и перенос массива на другой сервер. Программный RAID (mdadm, ZFS, Storage Spaces) закрывает файловые хранилища, бэкапные полки, домашние сборки и сценарии, где важны контрольные суммы и отсутствие привязки к вендору.
Разница, которая определяет всё остальное, в одном: у программного RAID нет энергозависимого кэша под защитой батареи. Каждая запись либо сразу ложится на диск, либо рискует потеряться. Аппаратный контроллер с исправным BBU подтверждает запись хосту из кэша и гарантирует её сохранение после отключения питания. Именно поэтому база данных на 20 000 IOPS случайной записи на аппаратном RAID 10 с кэшем 2 ГБ и рабочей батареей выдаёт в разы больше, чем тот же набор дисков под mdadm с политикой write-through.
Аппаратный RAID vs программный: что выбрать
| Параметр | Аппаратный RAID | Программный RAID (mdadm, ZFS) |
|---|---|---|
| Расчёт чётности | Процессор контроллера (ROC) | CPU сервера |
| Кэш записи | DDR3/DDR4 1-8 ГБ с защитой BBU или CacheVault | Только ОЗУ сервера, при сбое питания теряется |
| Загрузка CPU | Близка к нулю | 5-20% одного ядра при интенсивной записи |
| Горячая замена и rebuild | Автоматически, с настройкой скорости rebuild | Зависит от реализации, rebuild идёт через CPU |
| Перенос на другой сервер | Импорт foreign configuration, диск можно переставить | Переносится вместе с ОС, требует ручной сборки |
| Контроль целостности | Patrol read и consistency check по расписанию | ZFS scrub проверяет контрольные суммы каждого блока |
| Стоимость | От 300 до 1500 USD плюс модуль защиты кэша | 0 USD, только диски и CPU |
Практическое правило: ZFS и RAIDZ2 требуют прямого доступа к дискам, поэтому контроллер переводят в режим HBA (JBOD) или IT, а не собирают на нём RAID. Если планируется PostgreSQL на RAID 10, VMware с десятком виртуалок или файловый сервер на RAID 6, аппаратный контроллер с BBU даёт больше стабильности. Сравнение уровней RAID и готовые сценарии для SQL Server, VMware и TrueNAS собраны в руководстве по выбору и настройке RAID-массивов.
Как выбрать RAID-контроллер под конкретную задачу
Сначала определите нагрузку, потом считайте параметры. Для случайной записи в СУБД критичны объём кэша и наличие защищённого write-back. Для файлового сервера важнее число портов и уровень RAID 6. Для виртуализации - пропускная способность шины и поддержка SSD-кэша.
Что проверить в спецификации:
- Интерфейс: PCIe 3.0 x8 даёт около 6 ГБ/с, PCIe 4.0 x8 - около 12 ГБ/с. Для 12-гигабитных SAS SSD и NVMe пропускная способность шины становится узким местом.
- Число портов: 8 для небольшого сервера, 16 для хранилища, 24 и экспандеры для полок до 240 дисков.
- Кэш: 1-2 ГБ для файлов и бэкапов, 4-8 ГБ для СУБД, VDI и смешанной нагрузки.
- Защита кэша: BBU на Li-Ion или суперконденсатор (CacheVault, ZMCP).
- Уровни RAID: 0, 1, 5, 6, 10, 50, 60. Для массивов из дисков 8 ТБ и выше RAID 6 практически обязателен.
- SSD-кэш: CacheCade Pro 2.0 у LSI/Broadcom, maxCache 4.0 у Adaptec.
- Совместимость с бэкплейном сервера, ОС и наличие CLI для мониторинга.
| Линейка | Интерфейс | Кэш | Ключевая особенность |
|---|---|---|---|
| LSI MegaRAID 93xx (9361-8i) | PCIe 3.0, SAS 12 Гбит/с | 1-2 ГБ | CacheVault, классика для RAID 10 |
| LSI MegaRAID 94xx (9460-16i) | PCIe 3.0/4.0, SAS 12 Гбит/с | 2-4 ГБ | Больше портов, выше пропускная способность |
| LSI MegaRAID 95xx (9560-16i) | PCIe 4.0, тримод | 4-8 ГБ | SAS, SATA и NVMe на одном контроллере |
| Adaptec SmartRAID 3100 | PCIe 3.0, SAS 12 Гбит/с | 1-4 ГБ | ZMCP, maxCache 4.0 |
| Adaptec SmartRAID 3200 | PCIe 4.0 | до 8 ГБ | PCIe 4.0 и SSD-кэш |
| Dell PERC H730P | PCIe 3.0, SAS 12 Гбит/с | 2 ГБ | Управление через iDRAC |
| Dell PERC H740P | PCIe 3.0 | 8 ГБ | Статистика и алерты без агента ОС |
LSI/Broadcom: серии и особенности
MegaRAID 93xx (например, 9361-8i) работает на SAS 12 Гбит/с, несёт 1-2 ГБ кэша и поддерживает CacheVault CVPM02: суперконденсатор плюс NAND-память вместо литиевой батареи. Серия 94xx (9460-16i) добавляет порты и пропускную способность, а 95xx (9560-16i) переходит на PCIe 4.0 и тримод, то есть умеет работать с NVMe напрямую. Управление ведётся утилитой storcli64, для старых карт остаётся MegaCli64, плюс есть WebBIOS в UEFI и LSI Storage Authority.
Для PostgreSQL и MySQL берите модель с 2-4 ГБ кэша и CacheVault: модуль заряжается за несколько минут и не требует циклов калибровки батареи. Для файлового сервера хватает 9361-8i в RAID 6.
Adaptec: серии и особенности
SmartRAID 3100 и 3200 поддерживают SSD-кэш maxCache 4.0 (до 4 SSD в роли кэша чтения и записи), ZMCP (Zero-Maintenance Cache Protection, суперконденсатор) и утилиты arcconf и maxView Storage Manager. Линейка SmartRAID 3200 идёт на PCIe 4.0, что даёт запас под SAS SSD и NVMe. В парке ещё встречаются Series 7 и 8: ASR-71605 (16 портов, PCIe 3.0, 1 ГБ), ASR-8805 (8 портов, 1 ГБ) - они рабочие, но обновления прошивок для них выходят редко, поэтому под новые 4Kn-диски больших объёмов такие карты берут реже.
Dell PERC: серии и особенности
H330, H730, H730P, H740P, H750 и H755 - это контроллеры на чипах LSI/Broadcom с прошивкой Dell. H730P несёт 2 ГБ кэша, H740P - 8 ГБ, H750 и H755 идут на PCIe 4.0. Настройка Dell PERC выполняется утилитой perccli, штатными средствами OMSA (omconfig) и через интерфейс iDRAC. Ключевое удобство: iDRAC пишет события о деградации массива в лог и рассылает алерты по email без агента в ОС.
Важно: прошивку PERC обновляют пакетами Dell (через iDRAC, Lifecycle Controller или .efi с флешки). Прошивка Broadcom на PERC не подходит, несмотря на одинаковое железо. Обратная замена тоже ломает контроллер.
Настройка кэша и battery backup unit (BBU)
Режимы кэша: write-back vs write-through
| Режим | Поведение | Риск | Когда применять |
|---|---|---|---|
| Write-back | Запись подтверждается из кэша, на диски уходит позже | Потеря до нескольких секунд записей при сбое питания без рабочего BBU | СУБД, виртуализация, любые задачи с интенсивной случайной записью |
| Write-through | Запись подтверждается после записи на диск | Нет, при условии исправного массива | Файловые серверы без BBU, журналы, разовые операции |
| Always write back | Игнорирует отсутствие или неисправность BBU | Высокий: кэш не переживёт отключение питания | Только лаборатория и тесты |
Правило без исключений: write-back включают только тогда, когда BBU или CacheVault исправен и статус модуля Optimal. При разряженной или отсутствующей батарее контроллер по умолчанию переводит логические тома в write-through, и производительность случайной записи падает в разы.
storcli64 /c0 set cache=wb storcli64 /c0/v0 set wrcache=wb perccli64 /c0 set cache=wb arcconf setcache 1 writeback
Отдельно настраиваются политики чтения и ввода-вывода: No read ahead для последовательных потоков, Read ahead для файлов, Adaptive read ahead для смешанной нагрузки; Direct IO для СУБД и Cached IO для файловых серверов. Практические комбинации под конкретные СУБД и гипервизоры разобраны в статье про настройку контроллера, кэширование и мониторинг.
Настройка BBU и CacheVault
Батарейный модуль (BBU) держит кэш при отключении питания 12-24 часа, но требует обслуживания: литий-ионная ячейка живёт 1-3 года, а контроллер раз в 90 дней запускает learn cycle. Калибровка занимает от 4 до 24 часов, и на это время write-back отключается. Поэтому learn cycle планируют на окно обслуживания, а не на пик нагрузки.
Суперконденсатор (CacheVault у LSI, ZMCP у Adaptec) не требует калибровки, заряжается за 5-7 минут и переносит остаток кэша в NAND при пропадании питания. Ресурс модуля - 3-5 лет, после чего он заменяется целиком.
storcli64 /c0/bbu show all storcli64 /c0/cv show all perccli64 /c0/bbu show all arcconf getconfig 1 AD
Что смотреть в выводе: статус модуля, наличие заряда, количество циклов перезарядки, дату последней калибровки и текущую политику кэша. Если статус отличается от Optimal, переводите тома в write-through до замены модуля.
Безопасная замена вышедшего из строя диска в массиве
Порядок действий при замене диска
- Определите отказавший диск по статусу Failed или Degraded и проверьте физическую идентификацию подсветкой слота.
- Пометить диск как offline, затем как missing. Без этой операции контроллер считает, что диск вынули аварийно, и может пометить его как foreign.
- Извлечь диск из hot-swap корзины.
- Установить новый диск того же типа и объёма (допускается больше, но не меньше).
- Пометить новый диск как good и запустить rebuild, если он не стартовал автоматически.
- Проверить прогресс rebuild и статус массива после завершения.
storcli64 /c0/e252/s2 show all storcli64 /c0/e252/s2 start locate storcli64 /c0/e252/s2 set offline storcli64 /c0/e252/s2 set missing storcli64 /c0/e252/s2 set good storcli64 /c0/e252/s2 start rebuild storcli64 /c0/e252/s2 show rebuild
Замена диска на Dell PERC выполняется теми же шагами через perccli64, а также мышью в интерфейсе iDRAC: Storage, Physical Disks, Assign as Global Hot Spare или Rebuild.
Что учитывать по времени и риску:
- Rebuild диска 4 ТБ SAS 7.2K при ограничении rebuild rate 30% идёт 6-12 часов, для 12-ТБ дисков в RAID 5 счёт идёт на сутки.
- Скорость rebuild задаётся отдельно: storcli64 /c0 set rebuildrate=30. Значения выше 60% заметно бьют по отзывчивости рабочей нагрузки.
- Не перезагружайте сервер во время rebuild и не вынимайте второй диск. Потеря второго диска в RAID 5 до окончания rebuild означает потерю массива.
- После завершения rebuild запустите consistency check или patrol read, чтобы убедиться в отсутствии ошибок чётности.
- RAID 5 из дисков 8 ТБ и больше повышает риск неустранимой ошибки чтения при rebuild. В таких конфигурациях выбирайте RAID 6 или RAID 10.
Что такое foreign configuration и как с ней работать
Foreign configuration - это конфигурация массива, найденная на дисках, которые текущий контроллер не считает своими. Причины три: перенос дисков из другого сервера, замена контроллера и диск, вынутый из массива без пометки offline и missing. Пока конфигурация foreign, диски недоступны для ввода-вывода.
storcli64 /c0/foreign show storcli64 /c0/foreign import perccli64 /c0/foreign show perccli64 /c0/foreign import arcconf getconfig 1
Импорт возвращает массив в работу, но меняет текущую конфигурацию контроллера: логические тома могут получить другие номера, а часть настроек кэша сбросится в значения по умолчанию. Перед импортом сохраните вывод storcli64 /c0 show all в файл. Очистка (clear foreign config) удаляет метаданные с диска безвозвратно, поэтому применяется только к дискам, данные которых точно не нужны.
Ситуация, знакомая многим: администратор вставил диск из старого сервера в свободный слот, контроллер увидел foreign config и при перезагрузке предложил импорт. Нажатие «Import» в WebBIOS на рабочем сервере может перестроить нумерацию томов и сбить загрузку. Правильное действие - вынуть диск до перезагрузки либо очистить foreign config на неиспользуемом диске.
Действия при отказе контроллера и миграция массива
Признаки отказа: массив не виден в BIOS контроллера, в логе iDRAC или IPMI есть события Adapter error, сервер не находит загрузочный том, вентилятор или спикер выдаёт код ошибки, карта не определяется в lspci. Логика действий простая: не инициализировать диски, не создавать новые тома, не запускать clear configuration. Данные на дисках остаются нетронутыми, пока метаданные не перезаписаны.
Миграция массива на новый контроллер
- Проверить совместимость: тот же вендор, та же или следующая серия, прошивка не старше той, что стояла на вышедшей карте.
- Сделать полный бэкап, если массив ещё читается хотя бы на деградированном уровне.
- Снять питание, заменить контроллер, подключить диски и кабели бэкплейна.
- Записать порядок дисков до разборки и собрать в том же порядке. Метаданные DDF позволяют импортировать массив при другом порядке, но так меньше поводов для сюрпризов.
- Включить сервер, войти в BIOS контроллера (Ctrl+R для MegaRAID, Ctrl+A для Adaptec) и импортировать foreign configuration.
- Проверить статус массива, режим кэша и версию прошивки, затем загрузить ОС.
Миграция с LSI 9260-8i на 9361-8i и с Dell PERC H730 на H740P обычно проходит с импортом foreign config: обе пары используют совместимые метаданные. Исключения касаются массивов с шифрованием (нужен тот же ключ или passphrase) и конфигураций с SSD-кэшем CacheCade, который после переноса настраивают заново. Держите под рукой холодный spare-контроллер той же модели с той же версией прошивки: это снижает простой с часов до десятков минут. Подробный порядок работ с проверками на каждом шаге описан в статье про пошаговую миграцию массива на новый контроллер.
Несовпадение прошивок: риски и решения
Если прошивка нового контроллера старше той, что была на старом, импорт может завершиться ошибкой или массив определится как неполный. Номера пакетов у поколений различаются, поэтому сравнивать нужно не цифры, а требования release notes к совместимости метаданных. Практический порядок: сначала обновить прошивку нового контроллера до самой свежей версии, поддерживаемой вендором, затем импортировать конфигурацию. Проверить текущую версию можно так:
storcli64 /c0 show perccli64 /c0 show arcconf getconfig 1 AD
Отдельный риск - потеря «грязного» кэша. Если старый контроллер отказал в момент активной записи, содержимое кэша утрачено, и после импорта массив может оказаться логически несогласованным. После переноса запустите проверку файловой системы или scrub на стороне ОС, не полагаясь на целостность данных.
Обновление прошивки RAID-контроллера
Подготовка к обновлению прошивки
Прошивку обновляют по трём причинам: исправление ошибок в работе с новыми дисками, поддержка накопителей больших объёмов и исправления в обработке сбоев питания. Перед обновлением:
- Сделать и проверить бэкап данных. Проверить - значит восстановить хотя бы часть файлов на тестовом стенде.
- Зафиксировать текущую версию и настройки: storcli64 /c0 show all, storcli64 /c0/eall/sall show all.
- Скачать прошивку и BIOS контроллера только с официального сайта вендора под конкретную модель.
- Прочитать release notes: там указано, обновляется ли прошивка поверх текущей или нужен промежуточный шаг.
- Убедиться, что нет активных операций: rebuild, patrol read, consistency check, инициализации.
- Скопировать файл прошивки на локальный диск сервера или флешку с UTIL и подключить ИБП.
Процесс обновления и типичные ошибки
Обновление выполняют из ОС или из UEFI Shell. Для LSI/Broadcom пакет включает файл .rom и утилиту storcli; для Adaptec используется arcconf romupdate с файлом .ufi; для Dell PERC штатный путь - iDRAC или Lifecycle Controller.
storcli64 /c0 download file=firmware.rom perccli64 /c0 download file=firmware.rom arcconf romupdate 1 firmware.ufi
Процесс занимает от двух до десяти минут. Прерывание питания в этот момент делает контроллер неработоспособным: восстановление возможно только программатором или заменой карты. После обновления сервер перезагружается, версия проверяется тем же storcli64 /c0 show, затем проверяются статус массива, политика кэша и состояние BBU: настройки кэша после прошивки часто возвращаются к write-through.
Частые ошибки: прошивка от другой модели или от PERC вместо Broadcom, обновление во время rebuild, отсутствие бэкапа, работа старой версией MegaCli с новым контроллером. Если после обновления массив не поднялся, не запускайте initialize: сначала посмотрите foreign config и логи событий контроллера. Алгоритм разбора логов и локализации неисправности по симптомам описан в материале про диагностику и устранение неполадок RAID-контроллера.
Типичные ошибки при работе с аппаратным RAID и чек-лист перед операцией
Опасные ошибки, которые повторяются из года в год: несовпадение прошивок при миграции, забытый порядок дисков, проигнорированная foreign configuration, отсутствие бэкапа перед операцией, извлечение диска без пометки offline и missing, включённый write-back без рабочей батареи, а также попытка «починить» массив командой initialize. Каждая из них приводит к одному результату: данные недоступны, а восстановление стоит денег и времени.
Ещё одна привычка, которая дорого обходится: обновление прошивки сразу на всём парке оборудования без тестового прогона. Сначала обновляется один сервер, проверяется загрузка, статус массива, кэш и совместимость с дисками, потом остальные. Для разбора многомегабайтных логов MegaRAID и событий iDRAC удобно подключать LLM через API, например AiTunnel: единый доступ к GPT, Gemini и Claude с оплатой в рублях и без VPN, логи остаются в вашем контуре в виде текста для анализа.
Чек-лист перед любой операцией с RAID
- Бэкап данных сделан и проверен восстановлением.
- Выгружена текущая конфигурация: storcli64 /c0 show all, storcli64 /c0/eall/sall show all в файл.
- Записан порядок дисков с указанием enclosure, slot и серийных номеров.
- Проверены версии прошивки контроллера и бэкплейна, совместимость подтверждена release notes.
- Проверен статус массива: Optimal, без Degraded и без foreign config.
- Проверено состояние BBU или CacheVault, learn cycle не запущен.
- Нет активных операций: rebuild, patrol read, consistency check, initialize.
- Подготовлен совместимый spare-контроллер или диск и оригинальные кабели.
- Согласовано окно обслуживания, есть ИБП и план отката.
- После операции настроен мониторинг: алерты в Zabbix или Prometheus по статусу массива, SMART и температуре.
Если в планах расширение уже работающего массива, добавление полки или переезд на новое шасси, порядок действий и расчёт объёмов разобраны в руководстве по расширению системы хранения без простоя. Тестовый стенд удобно поднимать на облачных серверах с оплатой по факту, например в Timeweb Cloud, и держать внешнюю копию бэкапа вне того же шасси, где стоит RAID.
Перед следующей операцией с массивом сохраните вывод storcli64 /c0 show all в тикет, отметьте версию прошивки и статус BBU, а сам диск помечайте offline и missing до физического извлечения. Эти три действия закрывают большинство сценариев, в которых администраторы теряют данные.