Блог / Статьи

Полезная информация для вашего хостинга

MegaCli Linux: Установка, команды и интеграция с Nagios/Zabbix для мониторинга LSI RAID-массивов — пошаговое руководство 2025

MegaCli Linux: Установка, команды и интеграция с Nagios/Zabbix для мониторинга LSI RAID-массивов — пошаговое руководство 2025

Содержание

В современных дата-центрах, где каждая миллисекунда счета, а потеря данных — это катастрофа, 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 — вы обязаны его использовать.

megacli04

Шаг 1: Загрузка MegaCli — где найти официальный пакет и как избежать вредоносных копий

Важно: LSI больше не существует как отдельная компания. С 2019 года её активы принадлежат Broadcom. Все официальные версии MegaCli теперь размещаются на сайте Broadcom. Никогда не скачивайте MegaCli с сайтов вроде SourceForge, GitHub-репозиториев без проверки или торрентов — там часто лежат модифицированные версии с троянами.

Правильный путь:

  1. Перейдите на официальный сайт Broadcom: https://www.broadcom.com/support/storage/raid-controllers
  2. Найдите раздел MegaRAID Storage ManagerLegacy UtilitiesMegaCli
  3. Выберите последнюю стабильную версию (на момент 2025 года — 8.07.14 или выше).
  4. Скачайте архив 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 -la
Вы увидите файлы вида MegaCli-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.rpm
Важно! Иногда alien не ставит правильные права. Проверьте:

ls -l /opt/MegaRAID/MegaCli/MegaCli64
Если нет исполняемых прав — добавьте их:

chmod +x /opt/MegaRAID/MegaCli/MegaCli64
Теперь MegaCli установлен — но вы ещё не можете запустить его просто как megacli. Давайте исправим это.

Шаг 3: Создание симлинка — как превратить сложную команду в одну простую

По умолчанию MegaCli устанавливается в путь:


/opt/MegaRAID/MegaCli/MegaCli64
Запускать его каждый раз так — неудобно. Особенно в скриптах мониторинга. Решение — символическая ссылка.

ln -s /opt/MegaRAID/MegaCli/MegaCli64 /usr/bin/megacli
Проверим:

which megacli
# Вывод: /usr/bin/megacli

megacli -h
Если вы видите справку — всё работает. Теперь вы можете использовать любую команду MegaCli как megacli, а не длинный путь.

Дополнительно: Для удобства добавьте в .bashrc или .zshrc:


echo 'alias mega="megacli"' >> ~/.bashrc
source ~/.bashrc
Теперь вы можете писать просто mega -LDInfo -Lall -aAll. Это спасает время и снижает риск ошибок в скриптах.
megacli03

Мастер-команды 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
  • StateOnline (в порядке), Failed (сломан), Rebuild (в процессе замены), HotSpare (резервный).
  • Error Count — общее количество ошибок чтения/записи. Если > 10 — тревога. > 100 — немедленная замена.
  • Media Error Count — ошибки, связанные с повреждением поверхности диска. Любое значение > 0 — тревожный сигнал.
  • Predictive Failure Countключевой показатель! Если > 0 — диск предсказал свою смерть через SMART. Замените немедленно.
  • Temperature — температура диска. Норма — до 45°C. > 50°C — перегрев. > 55°C — опасно.

Практический пример:

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
Этот диск — на грани. Он уже имеет 147 ошибок, 8 повреждений поверхности и предсказал свою неисправность. Замените его сегодня!

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.sh
Теперь вы можете добавить его в cron для ежедневной проверки:

crontab -e
Добавьте строку:

0 4 * * * /usr/local/bin/raid_monitor.sh > /var/log/raid_monitor.log 2>&1
Это будет запускаться каждый день в 4:00 утра. Логи сохраняются в /var/log/raid_monitor.log.

Интеграция с Nagios — как настроить автоматические уведомления

Если вы используете Nagios — вы уже на шаг впереди. Но как интегрировать MegaCli?

Существует готовый плагин: check_megaraid

Установка:


cd /usr/lib/nagios/plugins/
wget https://raw.githubusercontent.com/tech-advantage/nagios-plugins-megaraid/master/check_megaraid
chmod +x check_megaraid
Теперь в конфигурации Nagios (например, в /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-уведомление — ещё до того, как кто-то позвонит вам с просьбой «восстановить сайт».

megacli05

Альтернатива: Zabbix и Icinga — мониторинг в реальном времени

Nagios — мощный, но старый. Современные администраторы выбирают Zabbix или Icinga — с визуализацией, алертами в реальном времени и историей.

Как настроить в Zabbix:

  1. Создайте пользовательский параметр в /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}'
  1. Перезапустите агента: systemctl restart zabbix-agent
  2. В веб-интерфейсе Zabbix: Configuration → Hosts → Items → создайте два элемента данных:
  • RAID Critical Errors — тип: Zabbix agent, ключ: raid.status
  • Average Disk Temperature — ключ: raid.temp
  1. Создайте триггеры:
  • 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 — вы обязаны его использовать.

Что делать прямо сейчас?

  1. Загрузите MegaCli с официального сайта Broadcom.
  2. Установите — даже если вы не знаете, зачем.
  3. Запустите megacli -PDList -aAll — и посмотрите на Predictive Failure Count.
  4. Настройте Zabbix или Nagios — за 1 час вы спасёте себя от 100 часов аварийного вмешательства в будущем.

Серверы не ломаются внезапно. Они умирают медленно. И MegaCli — ваш детектор, который слышит их последние стоны. Не игнорируйте их. Не откладывайте. Не думайте «а вдруг не сломается».

Сегодня — 14 ноября 2025 года. Проверьте свой RAID. Сделайте это. Сейчас.

Ваша база данных. Ваши клиенты. Ваша репутация — стоят того, чтобы вы потратили 20 минут на MegaCli.

И когда вы спасёте сервер — вы не скажете «я всё сделал». Вы скажете: «Я не позволил этому случиться».