03.12.2011

Управление хардверным RAID-контроллером LSI MegaSAS

Начну с того, что очень не рекомендую пользоваться контроллерами этого производителя даже не смотря на то, что он показывает неплохие результаты бенчмарков на фоне конкурентов. Причина: полное отсутсвие документации на сайте. Даже опция -help выглядит как издевательство:
...
MegaCli -PdMarkMissing -physdrv[E0:S0,E1:S1,...] -aN|-a0,1,2|-aALL
MegaCli -PdGetMissing -aN|-a0,1,2|-aALL
MegaCli -PdReplaceMissing -physdrv[E0:S0] -arrayA, -rowB -aN
MegaCli -PdPrpRmv [-UnDo] -physdrv[E0:S0] -aN|-a0,1,2|-aALL
MegaCli -EncInfo -aN|-a0,1,2|-aALL
MegaCli -EncStatus -aN|-a0,1,2|-aALL
MegaCli -PhyInfo -phyM -aN|-a0,1,2|-aALL
MegaCli -PhySetLinkSpeed -phyM -speed -aN|-a0,1,2|-aALL
...

Так впечатление, что писать документацию отдали на аутсурс в ЦРУ :)
Так что будем пытаться допереть научным тыком - благо он не раз нас спасал.


Существуют следующие утилиты:
MegaCLI - (CLI - command line interface). Основная управляющая утилита для просмотра состояния и конфигурирования работы контроллера.
MegaRC -  устаревшая текстовая утилита для управления контроллером.
MegaMon - (Mon - monitoring). Демон + клиент для мониторинга.
MegaSM - (SM - storage manager). Какая-то неведомая GUI-ёвая херня на Java. Весит как ядро Linux и требует иксов, что на сервере неприемлемо (не знаю для кого писали, не уж то для десктопов с адаптерами по несколько сотен долларов...).

В официальных репозиториях основных дистрибутивов, видимо, утилиты не распространяются, но скачать их можно тут: LSI public downloads.

Но для Linux там есть только .rpm пакет и неподходящая по битности библиотека lybsysfs.
Пользователи Debian x64 могут воспользоваться собранным мной .deb-пакетиком для 64-битных ОС из всего этого.

Итак следующие команды помогут облегчить жизнь:



Структура расположения объектов такая:
Адаптеры:
сервер может иметь некоторое количество адаптеров. В командах обозначается буквой -a и либо номером, либо все сразу ALL: -aALL или -a0. (как правило адаптер один и установлен в нулевой слот, а значит можно смело писать -a0 ).
Корзины:
Каждый адаптер может иметь одну или несколько корзин (Enclosure), а каждая корзина имеет слоты (Slot).
Обозначаются как [E:S]. Например диск вставленный в слот 3 корзины 252 обозначается так: [252:3]
В один слотов вставляется один визический диск. Обозначается как -PhysDrv [E:S]
MegaCli64 -PDList -aALL | egrep -i 'Enclosure Dev|Slot|^Firmware'
Проблема только в том, что не видно серийника дисков и тяжело определить какой конкретно диск нужно переводить например в оффлайн. А его уже можно отсюда:
MegaCli64 -ShowSummary -a0 | egrep 'Connector|Product Id'
Логическое деление происходит по виртуальным дискам (обозначается в командах как -L и имеет нумерацию с единички или ALL) и массивами (-Array0)



*******************
Просмотр всех данных и настроек адаптера:
MegaCli64 -AdpAllInfo -a0

Просмотр структуры дисков и корзин:
MegaCli64 -ShowSummary -a0

Изменение настроек(пропертей) адаптера:
MegaCli64 -AdpSetProp свойство значение_свойства адаптер
например:
MegaCli64 -AdpSetProp -DsblCacheBypass -1 -a0

Эта команда переводит значение опции DisableCacheBypass в единичку, то есть включает. Правда не у всех сработает - поддержка функции зависит от модели адаптера.

*******************
Просмотр существующих корзин(Enclosure). Чтобы ничего не пропустить, напишем не только наш адаптер -a0, а все -aALL:
MegaCli64 -EncInfo -aALL

Просмотр логических дисков (грубо говоря RAID-массивов):
MegaCli64 -LDInfo -LALL -a0
Просмотер физических дисков:
MegaCli64  -PDList -a0
Просмотр конкретного физического диска. Здесь 252:1 - номер корзины и номер слота в ней:
MegaCli64 -PDInfo -PhysDrv [252:2] -a0
А теперь просмотр физических, разбитых по группам логических (самое удобное):
MegaCli64 -LdPdInfo -a0

Работа с конфигурационным файлом.
Просмотреть конфиг:
MegaCli64 -CfgDsply -a0
Сохранить конфиг:
MegaCli64 -CfgSave -f raid_config.conf -a0
Восстановить из конфига (у меня не восстановилось, пишет ошибку без подробностей):
MegaCli64 -CfgRestore -f raid_config.conf -a0

Работа с логами.
Почитать логи (для warning, debug, error нужно ставить соответствующий уровнь вместо -info )
MegaCli64 -AdpEventLog -GetEvents -info -a0

Работа с ребилдом.
Регулирование скорости ребилда. Просмотр текущей скорости:
MegaCli64 -AdpGetProp -RebuildRate -aALL
Установка нужной:
MegaCli64 -AdpSetProp {RebuildRate -60} -aALL
Запустить ребилд физического диска:
MegaCli64 -PDRbld -Start -PhysDrv [252:3] -a0
Посмотреть прогресс сколько уже проребилдилось:
MegaCli64 -PDRbld -ShowProg -PhysDrv [252:3] -a0

Тоже проресс, только покрасивее:
MegaCli64 -PDRbld -ProgDsply -physdrv [252:3] -a0
Просмотреть включена ли опция автоматического ребилда:
MegaCli64 -AdpAutoRbld -Dsply -a0
Включить его:
MegaCli64 -AdpAutoRbld -Enbl -a0



Работа с виртуальными дисками.
Далее идут команды, вводя которые нужно 1000 раз подумать. Они уничтожают данные.
ВНИМАНИЕ: не делайте этого на серверах с ценными данными!!!

А теперь, прежде, чем вводить команду, проверьте точно ли Вы ее вводите на нужном сервере, а не на сервере, с которого копируете раздел.


И еще раз перечитайте предыдущий абзац. Какой бы Вы ни были профессионал, эти слова не просто так. Еще раз проверяйте!


Удалить виртуальный диск (RAID-массив):
 MegaCli64 -CfgLdDel -L0 -a0
Создать виртуальный диск (-r - тип RAID, все кроме составных на подобнее 10):
MegaCli64 -CfgLdAdd -r1 [252:0, 252:1] -a0

Работа с физическими дисками.
Перевести физический диск в состояние Offline:
MegaCli64 -PDOffline -PhysDrv [252:2] -a0
Перевести физический диск в состояние Online:
MegaCli64 -PDOnline  -PhysDrv [252:2] -a0
Пометить физический диск как сломанный:
MegaCli64 -PDMarkMissing -PhysDrv [252:2] -a0
Подготовить физический диск к удалению из виртуального (необходимо сначала его в Offline переложить, затем пометить как сломанный и уже потом это):
MegaCli64 -PdPrpRmv -PhysDrv [252:2] -a0
Добавить нововставленный диск:
 MegaCli64 -PdReplaceMissing -PhysDrv [252:2] -Array1 -row0 -a0
здесь:
-Array1 - номер Virtual Drive.
Так как у нас были виртуальные диски 0 (с физическими 252:0,252:1) и 1 (с физическими 252:2,252:3), то в нашем случае это второй виртуальный диск.
-row0 - это порядковый номер физического диска в этом массиве.Как правило именно этот слот, в котором меняли диск, будет помечен
всего лишь одной строкой PD: 0 Information и никакой больше информации о нем не будет.
И то и другое добывается из команды MegaCli64 -LdPdInfo -a0


Заставить мелькать LED-ом заданный физический диск (для легкости его нахождения).
Включаем настройку адаптера, чтобы он вообще разрешил подобное действо:
MegaCli64 -AdpSetProp \{UseDiskActivityforLocate -1\} -a0
И помечаем нужный диск (чтобы выключть лампочку, просто поменяйте -start на -stop):
MegaCli64 -PdLocate -start -physdrv [252:2] -a0




















Комментариев нет:

Отправить комментарий