Содержание
В современных дата-центрах, где каждая миллисекунда счета, а потеря данных — это катастрофа, Hardware RAID остаётся незыблемым фундаментом надёжности. Контроллеры LSI MegaRAID (ныне под брендом Broadcom) — одни из самых востребованных в мире выделенных серверов, корпоративных хранилищ и облачных инфраструктур. Но есть одна тонкость, которую игнорируют 90% администраторов: обычные Linux-инструменты вроде smartctl не видят настоящего состояния дисков, если они скрыты за аппаратным RAID-контроллером.
Ваш smartctl -a /dev/sda может показывать «OK», но при этом один из дисков в массиве RAID 5 уже имеет 1200 ошибок чтения — и вы об этом не узнаете, пока массив не упадёт. Почему? Потому что диск физически доступен, но логически — нет. Именно здесь вступает в игру MegaCli — мощнейшая, но малоизвестная утилита от Broadcom, которая открывает дверь в «глубинные слои» вашего RAID-массива.
Эта статья — не сухой мануал. Это путеводитель по выживанию для администраторов, которые не хотят просыпаться в 3 часа ночи с паническим звонком от клиента: «Сайт упал!». Мы разберём всё: от установки MegaCli до интеграции с Zabbix, с примерами кода, реальными выводами и стратегиями, которые спасали десятки серверов.
Почему MegaCli — ваш незаменимый союзник в борьбе с сбоями RAID
Прежде чем углубляться в команды — давайте разберёмся, почему именно MegaCli, а не другие инструменты?
- Smartctl видит только диск как физическое устройство, но не его состояние в рамках RAID-массива. Он не знает, что диск находится в состоянии Degraded или Rebuilding.
- mdadm работает только с программным RAID (Linux Software RAID), а не с аппаратным LSI.
- lsblk и fdisk показывают логические тома, но не их здоровье, не количество переназначенных секторов, не температуру, не ошибки контроллера.
MegaCli — это единственный инструмент, который:
- Показывает реальное состояние каждого физического диска в массиве — даже если он «спрятан» под RAID-контроллером.
- Даёт доступ к SMART-атрибутам через контроллер, а не через обходные пути.
- Отображает количество ошибок чтения/записи на каждом диске — ключевой индикатор скорой поломки.
- Позволяет определить, какой именно диск вышел из строя — по номеру слота, энклоузера и серийному номеру.
- Интегрируется с системами мониторинга, превращаясь в автоматизированную систему предиктивной аналитики.
Это не просто «утилита». Это детектор ранних симптомов смерти вашего хранилища. И если вы управляете сервером с LSI RAID — вы обязаны его использовать.

Шаг 1: Загрузка MegaCli — где найти официальный пакет и как избежать вредоносных копий
Важно: LSI больше не существует как отдельная компания. С 2019 года её активы принадлежат Broadcom. Все официальные версии MegaCli теперь размещаются на сайте Broadcom. Никогда не скачивайте MegaCli с сайтов вроде SourceForge, GitHub-репозиториев без проверки или торрентов — там часто лежат модифицированные версии с троянами.
Правильный путь:
- Перейдите на официальный сайт Broadcom: https://www.broadcom.com/support/storage/raid-controllers
- Найдите раздел MegaRAID Storage Manager → Legacy Utilities → MegaCli
- Выберите последнюю стабильную версию (на момент 2025 года — 8.07.14 или выше).
- Скачайте архив
MegaCli-8.07.14-Linux.zip
Теперь — практический пример для терминала:
cd /tmp
wget https://www.broadcom.com/support/download-search?file=33542 -O MegaCli-8.07.14-Linux.zip
Важно! URL выше — пример. На практике Broadcom использует динамические ссылки. Лучше использовать curl с заголовками, чтобы избежать редиректов:
curl -A "Mozilla/5.0" -L -o MegaCli-8.07.14-Linux.zip "https://www.broadcom.com/support/download-search?file=33542"
Если вы не можете скачать с сайта — используйте официальные зеркала от крупных хостеров, таких как Hetzner, OVH или IBM, которые публикуют архивы для своих клиентов. Но всегда проверяйте хеш-сумму файла.
Шаг 2: Установка MegaCli — от RPM до DEB, без ошибок и зависимостей
После скачивания архива — распаковываем его:
Вы увидите файлы видаunzip MegaCli-8.07.14-Linux.zip cd Linux/ ls -laMegaCli-8.07.14-1.noarch.rpm. Это RPM-пакет — для Red Hat, CentOS, Rocky Linux, AlmaLinux. Для Debian/Ubuntu нужно конвертировать.
Для RHEL/CentOS/Rocky Linux
rpm -ivh MegaCli-8.07.14-1.noarch.rpm
Если возникает ошибка зависимости (например, libstdc++.so.6), установите:
yum install libstdc++ -y
# или для CentOS 8+
dnf install libstdc++ -y
Для Ubuntu/Debian
Установите alien — утилиту для конвертации RPM в DEB:
apt update
apt install alien -y
Конвертируем и устанавливаем:
Важно! Иногдаalien -i MegaCli-8.07.14-1.noarch.rpmalienне ставит правильные права. Проверьте:
ls -l /opt/MegaRAID/MegaCli/MegaCli64
Если нет исполняемых прав — добавьте их:
Теперь MegaCli установлен — но вы ещё не можете запустить его просто какchmod +x /opt/MegaRAID/MegaCli/MegaCli64megacli. Давайте исправим это.
Шаг 3: Создание симлинка — как превратить сложную команду в одну простую
По умолчанию MegaCli устанавливается в путь:
/opt/MegaRAID/MegaCli/MegaCli64
Запускать его каждый раз так — неудобно. Особенно в скриптах мониторинга. Решение — символическая ссылка.
ln -s /opt/MegaRAID/MegaCli/MegaCli64 /usr/bin/megacli
Проверим:
Если вы видите справку — всё работает. Теперь вы можете использовать любую команду MegaCli какwhich megacli # Вывод: /usr/bin/megacli megacli -hmegacli, а не длинный путь.
Дополнительно: Для удобства добавьте в .bashrc или .zshrc:
Теперь вы можете писать простоecho 'alias mega="megacli"' >> ~/.bashrc source ~/.bashrcmega -LDInfo -Lall -aAll. Это спасает время и снижает риск ошибок в скриптах.
Мастер-команды MegaCli — 5 ключевых команд, которые спасут ваш массив
В MegaCli сотни команд. Но для базового мониторинга вам достаточно этих пяти. Остальные — для продвинутых операций (перестройка массива, создание VD, сброс кэша и т.д.). Мы сосредоточимся на диагностике.
1. Информация о RAID-контроллере — ваша «пульт управления»
Это первая команда, которую вы запускаете при подозрении на сбой.
megacli -AdpAllInfo -aAll
Что вы увидите:
- Controller Model: LSI MegaRAID SAS 9361-8i
- Firmware Version: 12.15.0-0141
- Number of Physical Drives: 8
- Number of Virtual Drives: 2
- Memory Size: 1024 MB
- Cache Policy: WriteBack / ReadAhead
- BBU Status: Battery OK / Battery Failed
Критически важные пункты:
- BBU Status — если Failed или Charging, ваш кэш не защищён. При отключении питания — данные могут потеряться.
- Firmware Version — устаревшая прошивка может содержать баги, приводящие к сбоям. Всегда сверяйтесь с официальными обновлениями Broadcom.
2. Состояние логических дисков (VD) — ваш RAID-массив в одном взгляде
Логический диск — это ваш RAID-массив, который видит ОС как один диск. Проверим его состояние:
megacli -LDInfo -Lall -aAll
Пример вывода:
Adapter 0 -- Virtual Drive Information: Virtual Drive: 0 (Target Id: 0) Name : RAID Level : Primary-5, Secondary-0, RAID Level Qualifier-3 Size : 2.727 TB State : Optimal Number Of Drives : 6 Strip Size : 256 KB Number Of Spans : 1 Span Depth : 1 Default Cache Policy: WriteBack, ReadAhead, Cached, No Write Cache if Bad BBU Current Cache Policy: WriteBack, ReadAhead, Cached, No Write Cache if Bad BBU Access Policy : Read/Write Disk Cache Policy : Enabled
Что значит «Optimal»? — всё отлично. Диски работают, массив цел.
«Degraded» — один из дисков вышел из строя, массив работает в режиме восстановления (rebuild). Это критическая ситуация!
«Offline» — массив не работает. Скорее всего, два и более диска вышли из строя (для RAID 5 — это фатально).
Если у вас несколько массивов — вы увидите Virtual Drive: 1, Virtual Drive: 2 и т.д.
3. Полный список физических дисков — как найти «больного» диск
Это самая важная команда. Она показывает реальное состояние каждого физического диска, даже если он «спрятан» под RAID.
megacli -PDList -aAll
Вывод огромный — до 50 строк на диск. Чтобы не тонуть в данных — фильтруем только критичное:
megacli -PDList -aAll | grep -E "(Enclosure Device ID:|Slot Number:|Inquiry Data:|State:|Error Count:|Media Error Count:|Predictive Failure Count:|Temperature:)"
Разберём ключевые поля:
- Enclosure Device ID — номер энклоузера (корпуса с дисками). У одного сервера может быть несколько энклоузеров.
- Slot Number — номер слота в энклоузере. Это физический номер диска! Если диск в слоте 3 — значит, он третий снизу/справа/по порядку в вашем сервере.
- Inquiry Data — модель и серийный номер диска. Пример:
SEAGATE ST4000NM0035-1V4107 - State — Online (в порядке), Failed (сломан), Rebuild (в процессе замены), HotSpare (резервный).
- Error Count — общее количество ошибок чтения/записи. Если > 10 — тревога. > 100 — немедленная замена.
- Media Error Count — ошибки, связанные с повреждением поверхности диска. Любое значение > 0 — тревожный сигнал.
- Predictive Failure Count — ключевой показатель! Если > 0 — диск предсказал свою смерть через SMART. Замените немедленно.
- Temperature — температура диска. Норма — до 45°C. > 50°C — перегрев. > 55°C — опасно.
Практический пример:
Этот диск — на грани. Он уже имеет 147 ошибок, 8 повреждений поверхности и предсказал свою неисправность. Замените его сегодня!Enclosure Device ID: 32 Slot Number: 5 Inquiry Data: WD WD40EFRX-68N32N0 State: Online Error Count: 147 Media Error Count: 8 Predictive Failure Count: 1 Temperature: 52 C
4. Проверка SMART-атрибутов — сквозной мониторинг через контроллер
Многие думают, что MegaCli не показывает SMART. Это заблуждение. Он показывает SMART-данные, агрегированные контроллером — и это даже точнее, чем smartctl напрямую.
Проверим поддержку SMART:
Если вывод:megacli -AdpAllInfo -aAll | grep -i "s.m.a.r.t"S.M.A.R.T. Supported: Yes— отлично. Теперь получим SMART-статус для каждого диска:
Гдеmegacli -PDInfo -PhysDrv [32:5] -aAll[32:5]— это Enclosure:Slot из предыдущего шага. В нашем примере —32:5.
Вывод содержит все SMART-атрибуты:
- Reallocated Sectors Count — переназначенные сектора. > 0 — тревога.
- Current Pending Sector Count — сектора, ожидающие переназначения. > 0 — диск скоро умрёт.
- Uncorrectable Sector Count — неисправимые ошибки. Любое значение > 0 — катастрофа.
- Power-On Hours — часы работы. Для HDD — 50 000+ — срок службы подходит к концу.
Совет эксперта: Создайте скрипт, который автоматически сравнивает Predictive Failure Count и Media Error Count — и если хотя бы один из них > 0 — отправляет уведомление.
5. Состояние BBU (Battery Backup Unit) — спасательный пояс вашего кэша
Контроллеры LSI используют кэш для ускорения записи. Но если питание отключится — данные в кэше потеряются. Поэтому есть BBU — аккумулятор, который держит кэш при отключении электричества.
Проверьте его состояние:
megacli -AdpBbuCmd -GetBbuStatus -aAll
Возможные статусы:
- Battery Status: Optimal — всё в порядке.
- Battery Status: Failed — аккумулятор умер. Кэш не защищён.
- Battery Status: Charging — аккумулятор разряжен и заряжается. Временно безопасно, но требует замены.
- Battery Status: Not Present — BBU отсутствует. Контроллер работает в режиме WriteThrough — медленнее, но безопаснее.
Что делать, если BBU failed?
- Смените аккумулятор на новый (чаще всего — это отдельная плата).
- Или отключите WriteBack кэш:
megacli -LDSetProp WB -L0 -a0— но это снизит производительность.
Автоматизация мониторинга — как превратить MegaCli в 24/7 детектор сбоев
Проверять состояние дисков вручную — как проверять пульс пациента каждые 10 минут. Это неэффективно. Решение — автоматизация.
Создадим простой скрипт, который проверяет все ключевые параметры и выводит статус:
#!/bin/bash
# /usr/local/bin/raid_monitor.sh
echo "=== RAID MONITORING REPORT ==="
echo "Date: $(date)"
# Проверка состояния контроллера
echo "Controller Status:"
megacli -AdpAllInfo -aAll | grep -E "Model|Firmware|BBU Status"
# Проверка логических дисков
echo -e "\nVirtual Drives Status:"
megacli -LDInfo -Lall -aAll | grep -E "Virtual Drive|State"
# Проверка физических дисков с критичными ошибками
echo -e "\nCritical Physical Drives:"
megacli -PDList -aAll | grep -A 10 -B 10 -E "(State: Failed|State: Degraded|Predictive Failure Count: [1-9]|[0-9]+ Media Error Count: [1-9])"
# Проверка температуры
echo -e "\nHigh Temperature Drives (>50°C):"
megacli -PDList -aAll | grep -E "Temperature: [5-9][0-9]" | while read line; do
echo "$line"
done
# Проверка BBU
echo -e "\nBBU Status:"
megacli -AdpBbuCmd -GetBbuStatus -aAll | grep "Battery Status"
Сделаем его исполняемым:
chmod +x /usr/local/bin/raid_monitor.sh
Запустим:
Теперь вы можете добавить его в/usr/local/bin/raid_monitor.shcronдля ежедневной проверки:
crontab -e
Добавьте строку:
Это будет запускаться каждый день в 4:00 утра. Логи сохраняются в0 4 * * * /usr/local/bin/raid_monitor.sh > /var/log/raid_monitor.log 2>&1/var/log/raid_monitor.log.
Интеграция с Nagios — как настроить автоматические уведомления
Если вы используете Nagios — вы уже на шаг впереди. Но как интегрировать MegaCli?
Существует готовый плагин: check_megaraid
Установка:
Теперь в конфигурации Nagios (например, вcd /usr/lib/nagios/plugins/ wget https://raw.githubusercontent.com/tech-advantage/nagios-plugins-megaraid/master/check_megaraid chmod +x check_megaraid/etc/nagios3/conf.d/services.cfg):
define service {
use generic-service
host_name your-server.example.com
service_description RAID Status (LSI MegaCli)
check_command check_megaraid!-aAll
}
После перезагрузки Nagios — вы увидите статус в интерфейсе:
- OK: Все диски в порядке, массив Optimal.
- WARNING: Predictive Failure Count > 0, температура > 50°C.
- CRITICAL: State: Failed, Degraded, BBU Failed.
И вы получите email, SMS, Telegram-уведомление — ещё до того, как кто-то позвонит вам с просьбой «восстановить сайт».

Альтернатива: Zabbix и Icinga — мониторинг в реальном времени
Nagios — мощный, но старый. Современные администраторы выбирают Zabbix или Icinga — с визуализацией, алертами в реальном времени и историей.
Как настроить в Zabbix:
- Создайте пользовательский параметр в
/etc/zabbix/zabbix_agentd.conf:
UserParameter=raid.status,/usr/local/bin/raid_monitor.sh | grep -c "State: Failed\|Predictive Failure Count: [1-9]"
UserParameter=raid.temp, megacli -PDList -aAll | grep -oP "Temperature: \K[0-9]+" | awk '{sum += $1} END {print sum/NR}'
- Перезапустите агента:
systemctl restart zabbix-agent - В веб-интерфейсе Zabbix: Configuration → Hosts → Items → создайте два элемента данных:
- RAID Critical Errors — тип: Zabbix agent, ключ:
raid.status - Average Disk Temperature — ключ:
raid.temp
- Создайте триггеры:
- RAID Failure Detected:
{host:raid.status.last()}>0— триггер с уровнем «High» - High Disk Temperature:
{host:raid.temp.last()}>50— уровень «Warning»
Теперь вы видите:
- График температуры дисков за неделю.
- Список всех дисков с ошибками.
- Уведомления в Telegram через Zabbix-уведомления.
Это — мониторинг на уровне инженеров Google. Вы не ждёте сбоя. Вы его предотвращаете.
Практическое применение: VPS, выделенные серверы и критичные проекты
Многие считают, что MegaCli — это только для «больших» серверов. Это ошибка.
Случай 1: VPS на железе с LSI RAID
Даже если вы купили VPS у Hetzner или OVH — ваш виртуальный сервер работает на физическом сервере с RAID-контроллером LSI. Хостер использует MegaCli для мониторинга. Но вы — клиент — не видите состояние дисков.
Что делать?
- Если вы арендуете выделенный сервер — установите MegaCli самостоятельно.
- Если вы получаете VPS — запросите у хостера отчёт о состоянии RAID-массива каждый квартал.
- Если хостер отказывается — смените его. Надёжность — не роскошь, а основа.
Случай 2: Выделенный сервер с RAID 10 для интернет-магазина
У вас 1000 заказов в день. База данных MySQL на RAID 10. Что произойдёт, если один диск выйдет из строя, а вы не заметите?
- Сервер начнёт работать медленнее (из-за перестроения массива).
- Появятся ошибки записи в логах MySQL.
- Через 3 дня — второй диск выйдет из строя — и вы потеряете всё.
Решение: Установите MegaCli + Zabbix + алерты в Telegram. Проверяйте статус каждый день — не потому что «надо», а потому что вы несёте ответственность за данные клиентов.
Случай 3: Корпоративный сервер с PostgreSQL
Ваша CRM-система хранит 500 000 записей клиентов. Один сбой = потеря контрактов. Вы не можете позволить себе «дождаться сбоя».
Стратегия:
- Установите MegaCli на все серверы.
- Настройте ежедневный скрипт, который отправляет отчёт в Slack.
- Создайте чек-лист: «Проверить RAID перед каждым обновлением ОС».
- Запланируйте замену дисков с > 100 ошибками каждые 18 месяцев — даже если они «работают».
Это — проактивное администрирование. Это то, что отличает профессионалов от любителей.
Заключение: MegaCli — не инструмент. Это ваша страховка
Вы прочитали это руководство не просто так. Вы поняли: RAID — не панацея. Он спасает от сбоя одного диска. Но не от сбоя двух. Не от перегрева. Не от скрытых ошибок.
MegaCli — это ваш глаз в глубине системы. Он говорит: «Здесь есть проблема. Не завтра. Не через месяц. Сейчас. И если ты не действуешь — ты потеряешь всё».
Установка MegaCli — это не «ещё одна утилита». Это обязательная процедура безопасности, как антивирус на рабочем компьютере. И если вы управляете сервером с LSI RAID — вы обязаны его использовать.
Что делать прямо сейчас?
- Загрузите MegaCli с официального сайта Broadcom.
- Установите — даже если вы не знаете, зачем.
- Запустите
megacli -PDList -aAll— и посмотрите на Predictive Failure Count. - Настройте Zabbix или Nagios — за 1 час вы спасёте себя от 100 часов аварийного вмешательства в будущем.
Серверы не ломаются внезапно. Они умирают медленно. И MegaCli — ваш детектор, который слышит их последние стоны. Не игнорируйте их. Не откладывайте. Не думайте «а вдруг не сломается».
Сегодня — 14 ноября 2025 года. Проверьте свой RAID. Сделайте это. Сейчас.
Ваша база данных. Ваши клиенты. Ваша репутация — стоят того, чтобы вы потратили 20 минут на MegaCli.
И когда вы спасёте сервер — вы не скажете «я всё сделал». Вы скажете: «Я не позволил этому случиться».
