воскресенье, 23 сентября 2018 г.

Сборка RAID-массива на контроллере LSI MegaSAS в Linux

В прошлом я уже писал ряд заметок про RAID-контроллеры семейства LSI MegaSAS - Intel RS2WC040 и Intel RSBL040, которые используются у меня на работе:
Иногда приходится менять диски, подключенные к аппаратным RAID-контроллерам. Замену диска при помощи mfiutil во FreeBSD я уже описывал, а аналогичная задача в Linux решается при помощи утилиты megacli, которая доступна в стороннем репозитории. Процедура замены дисков у меня до автоматизма не доведена, т.к. менять их приходится не часто. Поэтому я завёл для себя страницу в wiki, в которой делал заметки, чтобы не пришлось вспоминать команды и последовательность действий в следующий раз. Несколько раз я исправлял ошибки в заметке и даже дополнил её описанием решения проблемы с добавлением диска, который ранее уже состоял в другом RAID-массиве. Наконец, заметка дозрела до состояния, пригодного к публикации.

Установка утилиты

Установить утилиту megacli в Debian можно из неофициального репозитория HwRAID. Например, чтобы подключить репозиторий в Debian Stretch, нужно добавить в файл /etc/apt/sources.list такую строчку:
deb http://hwraid.le-vert.net/debian stretch main
Установим в систему GPG-ключ для проверки подлинности репозитория при помощи команды:
# wget -O - https://hwraid.le-vert.net/debian/hwraid.le-vert.net.gpg.key | apt-key add -
Теперь можно обновить список пакетов, доступных для установки из репозиториев:
# apt-get update
И установить утилиту mecacli для управления RAID-контроллером:
# apt-get install megacli

Просмотр информации о RAID-контроллере

Чтобы просмотреть модель, серийный номер, настройки RAID-контроллера:
# megacli -AdpAllInfo -aAll

Диагностика

Смотрим список и состояние RAID-массивов в поле Sate:
# megacli -LdInfo -Lall -aALL
Если там Degraded, значит массив развалился. Смотрим, есть ли строчки Firmware state с состоянием Failed:
# megacli -PdList -a0
Если есть, можно посмотреть состояние диск по SMART. Для этого в выводе команды смотрим идентификаторы дисков в поле Device Id. Дальше указывая эти идентификаторы можно увидеть состояние SMART каждого из дисков и определить его серийный номер:
# smartctl -a -d megaraid,4 /dev/sda
# smartctl -a -d megaraid,5 /dev/sda
# smartctl -a -d megaraid,7 /dev/sda
# smartctl -a -d megaraid,6 /dev/sda

Диск исправен - запуск перестроения массива

Если диск исправен, можно попробовать перестроить массив. Для этого находим значения полей Enclosure Device ID и Slot Number у неисправного диска и выполняем для него команду запуска перестроения массива. В примере ниже используются значения 252 и 3:
# megacli -PdRbld -Start -PhysDrv[252:3] -a0
Наблюдать за состоянием перестроения массива можно при помощи команды:
# megacli -PdRbld -ShowProg -PhysDrv [252:3] -a0

Диск неисправен - замена диска

Если диск неисправен, его нужно заменить. Помечаем его как отключенный:
# megacli -PdOffline -PhysDrv [252:3] -a0
Затем - как отсутствующий в массиве:
# megacli -PdMarkMissing -PhysDrv [252:3] -a0
И теперь - как подготовленный к удалению из системы:
# megacli -PdPrpRmv -PhysDrv [252:3] -a0
Неисправный диск можно подсветить светодиодом:
# megacli -PdLocate -start -PhysDrv [252:3] -a0
Если индикация не заработала, можно попробовать починить её при помощи следующей команды:
# megacli -AdpSetProp \{UseDiskActivityforLocate -1\} -aALL
Заменяем диск (в случае SAS это можно сделать на горячую, если по светодиодным индикаторам видно, какой из дисков неактивен).

Когда новый диск вставлен, убираем подсветку светодиодом:
# megacli -PdLocate -stop -PhysDrv [252:3] -a0
После замены диска смотрим, каких дисков не хватает в RAID-массиве:
# megacli -PdGetMissing -a0
                                     
    Adapter 0 - Missing Physical drives

    No.   Array   Row   Size Expected
    0     1       1     428199 MB

Exit Code: 0x00
Вставляем новый диск в пустующее место в массиве:
# megacli -PdReplaceMissing -PhysDrv [252:3] -array1 -row1 -a0
Если диск не вставляется и выводится ошибка следующего вида:
Adapter: 0: Failed to replace Missing PD at Array 1, Row 1.

FW error description: 
 The specified device is in a state that doesn't support the requested command.  

Exit Code: 0x32
То можно проверить текущее состояние прошивки диска:
# megacli -PdInfo -PhysDrv [252:3] -a0
Если в строке Firmware state отображается состояние JBOD, то исправить это состояние можно следующим образом:
# megacli -PdMakeGood -PhysDrv[252:3] -Force -a0
Если же в строке Firmware state отображается состояние Unconfigured(good), Spun Up, но в строке Foreign State отображается состояние Foreign, то надо просканировать наличие дисков, переставленных из других RAID-контроллеров и снять у таких дисков отметку о других контроллерах:
# megacli -CfgForeign -Scan -aALL
# megacli -CfgForeign -Сlear -aALL
Включаем новый диск в работу массива:
# megacli -PdRbld -Start -PhysDrv [252:3] -a0
Посмотреть продвижение процесса перестроения можно так:
# megacli -PdRbld -ShowProg -PhysDrv [252:3] -a0

Подробнее:

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