Мониторинг контроллера MegaRAID и подключенных к нему дисков с помощью Zabbix

огда нужно обеспечить быстродействие и надежность дисковой системы, а также возможность горячей замены дисков без выключения сервера, большую помощь окажут дисковые контроллеры с кэш памятью и защитным аккумулятором, такие как MegaRAID. Новые версии этих контроллеров есть на сайте https://www.broadcom.com/products/storage/raid-controllers.

Для надежной работы дисковой системы сервера необходимо настроить мониторинг контроллера и подключенных к ним дисков. В этой статье вы найдете практическое руководство, которое позволит вам организовать такой мониторинг для контроллера MegaRAID с помощью Zabbix.

При этом вы будете использовать программу zabbix_sender, с помощью которой, без преувеличения, можно настроить мониторинг практически чего угодно. В данном случае для получения данных мониторинга мы будем использовать программу MegaCli.

Приемы, описанные в этой статье, вы сможете использовать для мониторинга других контроллеров или устройств, если не найдете для них готовых шаблонов на сайте https://www.zabbix.com/integrations.

Установка программы MegaCli

Вы можете загрузить архив с программой MegaCli для многих платформ, включая Linux и Windows, на сайте https://www.broadcom.com, например, по этой ссылке: https://docs.broadcom.com/docs/12351587. Мы расскажем о том, как установить программу MegaCli в ОС Debian 11 из репозитория le-vert.net, где есть утилиты для различных контроллеров RAID. Также приведем инструкцию по установке для CentOS и FreeBSD.

Установка MegaCli в ОС Debian 11

Чтобы установить программу MegaCli в ОС Debian 11, нужно подключить репозиторий le-vert.net. Для этот добавьте в файл /etc/apt/ sources.list следующую строку:

deb http://hwraid.le-vert.net/debian bullseye main

После этого добавьте ключ, обновите пакеты и установите программу:

# wget -O - http://hwraid.le-vert.net/debian/hwraid.le-vert.net.gpg.key | apt-key add -
# apt update
# apt install megacli

После установки проверьте версию программы:

# megacli -v
  MegaCLI SAS RAID Management Tool  Ver 8.07.14 Dec 16, 2013
 (c)Copyright 2013, LSI Corporation, All Rights Reserved.

Обратите внимание, что мы запускаем программу megacli, а не MegaCli.

После установки можно отключить репозиторий. Для этого закройте в файле /etc/apt/sources.list символом комментария добавленную строку и обновите пакеты:

# apt update

Установка MegaCli в CentOS

Если нужно установить программу MegaCli в CentOS, прежде всего скачайте нужный пакет:

# wget --user=hetzner --password=download http://download.hetzner.de/tools/LSI/tools/MegaCLI/8.07.14_MegaCLI.zip

Далее установите утилиту unzip, если ее нет на сервере:

# yum install unzip

Распакуйте пакет и установите программу megacli следующим образом:

# unzip 8.07.14_MegaCLI.zip
# cd Linux
# rpm -i MegaCli-8.07.14-1.noarch.rpm
# ln -s /opt/MegaRAID/MegaCli/MegaCli64 /usr/bin/megacli

Проверьте версию установленной программы:

# megacli -V
MegaCLI SAS RAID Management Tool  Ver 8.07.14 Dec 16, 2013
(c)Copyright 2013, LSI Corporation, All Rights Reserved.

Установка MegaCli в ОС FreeBSD

Выполните установку MegaCli из портов ОС FreeBSD. Для этого сначала обновите порты:

# portsnap fetch update

Затем установите программу MegaCli следующим образом:

# cd /usr/ports/sysutils/megacli
# make install

Проверьте версию установленной программы:

# MegaCli -v

Обратите внимание, что в отличие от Debian и CentOS, в командном приглашении FreeBSD нужно запускать команду MegaCli, а не megacli.

Мониторинг состояния массива RAID с контроллером MegaRAID вручную

Прежде чем мы займемся настройкой мониторинга дискового массива RAID с контроллером MegaRAID с помощью Zabbix, выполним основные процедуры диагностики вручную из командной строки.

Проверка состояния массива RAID

Для проверки массива RAID, созданного контроллером как виртуальное дисковое устройство, используйте команду megacli с параметром -LDInfo (в ОС FreeBSD запустите команду MageCli):

# megacli -LDInfo -LALL -aALL

Эта команда покажет важную информацию о виртуальном дисковом устройстве (RAID-массиве):

Adapter 0 -- Virtual Drive Information:
Virtual Drive: 0 (Target Id: 0)
Name                :
RAID Level          : Primary-1, Secondary-0, RAID Level Qualifier-0
Size                : 557.861 GB
Sector Size         : 512
Mirror Data         : 557.861 GB
State               : Optimal
Strip Size          : 64 KB
Number Of Drives    : 2
Span Depth          : 1
Default Cache Policy: WriteBack, ReadAheadNone, Direct, No Write Cache if Bad BBU
Current Cache Policy: WriteBack, ReadAheadNone, Direct, No Write Cache if Bad BBU
Default Access Policy: Read/Write
Current Access Policy: Read/Write
Disk Cache Policy   : Disabled
Encryption Type     : None
Is VD Cached: No
Number of Dedicated Hot Spares: 1
    0 : EnclId - 4 SlotId - 2

В данном случае сконфигурировано зеркало из двух дисков объемом 557.861 ГБайт каждый.

Если массив находится в оптимальном состоянии, и данные останутся в сохранности при выходе из строя одного из дисков, то значение параметра State будет равно Optimal.

Также обратите внимание на параметр политики кэширования Current Cache Policy

Если ваш контроллер оснащен аккумулятором, защищающим кэш-память контроллера от внезапного отключения электропитания, то по умолчанию при нормальном заряде и емкости аккумулятора контроллер использует отложенный режим записи WriteBack. 

В этом случае контроллер сообщает о том, что данные записаны, сразу после того, как они оказываются в кэше контроллера, еще до завершения фактической записи данных на диск. Этот режим сильно ускоряет запись данных, но он безопасен только при нормальном состоянии аккумулятора.

Если аккумулятор контроллера разряжен в результате запуска периодической тренировки или в результате исчерпания ресурса, то режим отложенной записи WriteBack отключается и включается режим прямой записи WriteThrough:

Default Cache Policy: WriteBack, ReadAheadNone, Direct, No Write Cache if Bad BBU
Current Cache Policy: WriteThrough, ReadAheadNone, Direct, No Write Cache if Bad BBU

В этом режиме контроллер будет дожидаться завершения процесса записи на диск перед тем, как сообщить программе о завершении операции записи.

Политика дискового контроллера Default Cache Policy, установленная по умолчанию, предполагает отключение кэша записи при неисправном или разряженном аккумуляторе. Если кэш не отключить, что в случае аварии с электропитанием можно потерять данные, находящиеся в кэше, но еще не записанные на диск. В этом случае велика вероятность повреждения файловой системы.

Проверка состояния аккумулятора

Дисковый контроллер MegaRAID может быть оснащен блоком батарейного (на самом деле аккумуляторного)

Для проверки состояния аккумулятора используйте следующую команду:

# megacli -AdpBbuCmd -aAll

Эта команда выведет на консоль довольно обширную информацию. На что нужно обратить внимание в первую очередь?

Прежде всего, параметр Battery State должен быть равен Optimal. Если это не так, то с контроллером что-то случилось. В лучшем случае поможет запуск обучения аккумулятора, в худшем — блок аккумулятора придется заменить.

Если контроллер по какой-то причине не запустил автоматическое обучение, может появиться строка с сообщением о необходимости запуска обучения вручную:

Battery State: Degraded(Need Attention)
  A manual learn is required.

В этом случае запустите обучение с помощью такой команды:

# megacli -AdpBbuCmd -BbuLearn -aAll

Если обучение запустилось, вы увидите сообщение на консоли:

Adapter 0: BBU Learn Succeeded.

Теперь чтобы отслеживать процесс обучения, время от времени выдавайте команду «megacli -AdpBbuCmd -aAll». Контролируйте состояние заряда или разряда аккумулятора Charging Status, запрос цикла обучения Learn Cycle Requested, его активность Learn Cycle Active и текущее состояние обучения Learn Cycle Status:

Charging Status         : Discharging
  Learn Cycle Requested : Yes
  Learn Cycle Active    : Yes
  Learn Cycle Status    : OK

Заметим, что обучение может выполняться долго, не один час, так что запаситесь терпением. Со временем, после того как аккумулятор в процессе обучения полностью разрядится, начнется его зарядка.  Статус Charging Status изменится на Charging.

Еще один важный параметр аккумуляторного блока, это количество циклов обучения Cycle Count. Его можно посмотреть так:

# megacli -AdpBbuCmd -aAll | grep "Cycle Count"
  Cycle Count: 4062

Этот параметр показывает степень износа аккумуляторов. В приведенном выше примере аккумуляторный блок давно нужно было заменить.

Просмотр свойств контроллера

Следующая команда выведет на консоль информацию обо всех дисковых контроллерах MegaRAID, установленных на сервере:

# megacli -AdpAllinfo -aAll

Здесь можно увидеть название контроллера Product Name и его серийный номер Serial No, что может пригодиться при обращении в сервис.

Вы можете узнать, оснащен ли контроллер блоком аккумуляторов (поле BBU) и определить размер кэш памяти, количество и состояние сконфигурированных виртуальных дисков Virtual Drives, количество и состояние физических дисков Disks, возможности контроллера и его параметры по умолчанию.

Подробное описание этой информации выходит за рамки нашей статьи. Хорошее описание команды megacli можно найти в руководстве MegaRAID SAS Software User Guide, доступном по адресу https://docs.broadcom.com/docs/12353236.

Просмотр свойств дисков

Со временем жесткие диски, как и диски SSD, могут выходить из строя. Если на сервере установлен контроллер MegaRAID, то список подключенных физических дисков и их состояние можно легко узнать так:

# megacli -PDList -aAll

После запуска команды на консоли появится множество различных параметров и их значения. Параметр Enclosure Device ID содержит идентификатор места расположения, по которому вы сможете адресоваться к диску при выполнении с ним различных операций. Вам также потребуется номер слота Slot Number.

Ниже мы показали команды, с помощью которых можно быстро узнать упомянутый выше идентификатор и номер:

# megacli -PDList -aAll | grep "Enclosure Device ID"
Enclosure Device ID: 252
Enclosure Device ID: 252
Enclosure Device ID: 252
# megacli -PDList -aAll | grep "Slot Number"
Slot Number: 0
Slot Number: 1
Slot Number: 2

Параметр Firmware state очень важен — анализируя его, можно узнать состояние диска:

# megacli -PDList -aAll | grep "Firmware state"
Firmware state: Unconfigured(bad)
Firmware state: Online, Spun Up
Firmware state: Online, Spun Up

Здесь видно, что первый диск, для которого Enclosure Device ID равен 252, а номер слота Slot Number находится в аварийном состоянии и не сконфигурирован для работы в массиве. Остальные два диска работают нормально.

Если вам нужен новый диск на замену, то типы дисков, подключенных к контроллеру, можно узнать так:

# megacli -PDList -aAll | grep "Inquiry Data"
Inquiry Data: SEAGATE ST3600057SS     00063SL098QA
Inquiry Data: SEAGATE ST3600057SS     00063SL09XZ1
Inquiry Data: SEAGATE ST3600057SS     00063SL09EVP

Как видите, используются диски Seagate, указана модель и серийный номер. Для замены нужно приобрести такой же или совместимы диск.

Чтобы посмотреть детальную информацию о диске, укажите следующей команде идентификатор Enclosure Device ID и номер слота Slot Number:

# megacli -PDInfo -PhysDrv\[252:0] -aAll

Будет полезной информация о количестве ошибок на диске:

# megacli -PDInfo -PhysDrv\[252:0] -aAll | grep Error
Media Error Count: 3
Other Error Count: 2

Если появились такие ошибки, то диск скоро может выйти из строя.

Контроллер время от времени запускает тестовое чтение дисков (Patrol Read) с целью обнаружения потенциальных проблем.

С помощью следующих двух команд вы можете инициировать запуск тестового чтения и посмотреть его состояние:

# megacli -AdpPR Start -aAll
# megacli -AdpPR Info -aAll

Другие полезные команды

Если вы заменили вышедший из строя диск, контроллер автоматически запускает перенос на него данных. Эта операция называется CopyBack, а ее состояние можно узнать следующим образом:

# megacli -PDCpyBk -ShowProg -PhysDrv\[252:0] -aAll
Copyback Progress on Device at Enclosure 4, Slot 0 Completed 28% in 192 Minutes.

Также может оказаться полезной команда добавления диска в горячий резерв:

# megacli -PDHSP -set -PhysDrv\[252:3\] -a0

При выходе из строя одного из дисков массива его роль будет играть резервный диск, причем копирование данных на него запустится автоматически.

И, наконец, приведем еще одну полезную команду — чтение журнала контроллера:

# megacli -AdpAlILog -aAll > lsi_log.txt

Содержимое журнала будет записано в файл, который можно проанализировать или отдать для анализа в сервис.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *