Мониторинг RAID из командной строки

Основа взята здесь: http://www.lissyara.su/articles/freebsd/file_system/raid_monitoring/
Автор оригинала - mvalery

1. Как определить тип используемого RAID

Для нашего случая оказалось достаточно просмотреть директорию /dev. Это связано с тем, что в системе FreeBSD одинаковые имена получают устройства, идентичные с точки зрения управляемости. Чаще всего единое имя получает группа устройств построенная на базе общего набора чипов.

Для простоты изложения, в большинстве случаев я полагаю, что в системе установлен один RAID - контроллер. Наличие нескольких контроллеров потребует вспомогательных ключей. Будет необходимо разбирательство - каких именно.

И так, далее мы поговорим о следующих типах RAID:

  • /dev/mirror/gm0 - программный RAID gmirror
  • /dev/twa0 или /dev/twe0 или /dev/tws0 - RAID контроллер компании AMCC 3ware (напр. 9650SE)
  • /dev/hptrr - RAID контроллер компании HighPoint (напр. RocketRAID 2340)
  • /dev/mfi0 - либо Dell Perc 5/i (чип LSI MegaRAID SAS 8408E), либо Dell PERC 6/i (чип LSI SAS1078), либо LSI MegaRAID 92xx

Существует несколько других способов, позволяющие определить характеристики вашего железа.

В частности, вы можете:

  1. просмотреть файл /var/run/dmesg.boot :
    less /var/run/dmesg.boot

  2. воспользоваться утилитой dmidecode :

    dmidecode

  3. или воспользоваться утилитой pciconf :

    pciconf

Попробуйте. Узнаете много интересного.

2. Программный RAID gmirror (/dev/mirror/gm0)

Программный RAID не нуждается в установке специальной утилиты. Чтобы убедиться, что RAID исправен даем команду:

gmirror status

Этот тип RAID отлично документирован. В многочисленной литературе или в man gmirror вы найдете дополнительные команды управления.

3. AMCC 3ware (/dev/twa0 или /dev/twe0 или /dev/tws0)

Ставим утилиту мониторинга из портов:

cd /usr/ports/sysutils/tw_cli/ && make install clean

Доступны следующие команды:

  1. Статус RAID и отдельных дисков массива узнаем так:
    tw_cli /c0 show

  2. Общие сведения о контроллере RAID:

    tw_cli show

  3. Лог аварийных сообщений:

    tw_cli show alarms

  4. Лог диагностических сообщений:

    tw_cli show diag

  5. Развернутая информация о типах контроллеров, поддерживаемых утилитой и сведения о некоторых дополнительных командах:

    man tw_cli

4. HighPoint (/dev/hptrr)

В портах подходящая утилита отсутствует. Но можно скачать с сайта производителя и установить готовый пакет.

  1. Создаем временную директорию:
    mkdir RocketRAID && cd RocketRAID

  2. Скачиваем архив:

    wget \ 
    http://www.highpoint-tech.com/BIOS_Driver/HRM/FreeBSD/CLI-FreeBSD-3.2-081224.tar.gz

  3. Распаковываем:

    tar zxf CLI-FreeBSD-3.2-081224.tar.gz && cd CLI-FreeBSD-3.2-081224

    В текущую директорию распаковываются 4 файла:
    hptsvr-3.13-4.tbz ; hptraidconf-3.2-1.tbz ; HPT_CLI_Guide.pdf ; README.txt

  4. Устанавливаем серверную часть (демона):

    pkg_add hptsvr-3.13-4.tbz

  5. Устанавливаем клиентскую часть:

    pkg_add hptraidconf-3.2-1.tbz

  6. Переносим на рабочую станцию файл HPT_CLI_Guide.pdf.
    Документ содержит подробный перечень команд, в котором на первых порах тяжеловато разобраться.
    После установки, демон запускается автоматически. Далее его можно останавливать и снова запускать как всякий обычный демон командами:

    /usr/local/etc/rc.d/hptdaemon.sh stop
    /usr/local/etc/rc.d/hptdaemon.sh start


    Увы, нет даже намека как сделать, чтобы этот демон запускался автоматически при старте системы, хотя /etc/rc.local еще никто не отменял :-)

  7. Командная строка для всех команд будет начинаться одинаково:

    hptraidconf -u RAID -p hpt <команда>

    Здесь ключи -u RAID -p hpt - это username и password соответственно. Вы не можете их менять.

  8. А теперь подробнее поговорим о командах:
    1. Получить список RAID - контроллеров :

      hptraidconf -u RAID -p hpt query controllers

      Первая колонка - номера контроллера. Нумерация начинается с единицы.

    2. Получить статус всех RAID, построенных на этих контроллерах:

      hptraidconf -u RAID -p hpt query arrays

      Номер RAID совпадает с номером контроллера, однако некоторые RAID - составные. Например RAID10, состоящий из четырех дисков на первом контроллере, имеет номер 1, а входящие в него зеркала, каждый из двух дисков имеют номера 1-1 и 1-2 соответственно.

    3. Получить информацию о RAID по его номеру:

      hptraidconf -u RAID -p hpt query arrays 1

      (Получаем статус 1-го RAID). Если же вас интересует дополнительная информация, о входящих в него RAID, тогда делаем так:

      hptraidconf -u RAID -p hpt query arrays 1-2

      (Получаем статус 2-го RAID, вложенного в 1-й RAID)

    4. Получить статус всех дисков:

      hptraidconf -u RAID -p hpt query devices

      Диски нумеруются через дробь в формате номер_контроллера/номер_диска. Например 1/3 - это 3-й диск на 1-м контроллере.

    5. Соответственно, указав этот ID, вы можете получить еще более детальную информацию об этом диске:

      hptraidconf -u RAID -p hpt query devices 1/3

    6. Контроллер ведет свой лог событий, который вам доступен по команде:

      hptraidconf -u RAID -p hpt events

    7. Если вы заменили испорченный диск на новый, его необходимо инициировать:

      hptraidconf -u RAID -p hpt init 1/3

    8. Добавить инициированный диск в RAID:

      hptraidconf -u RAID -p hpt rebuild 1 1/3

      (добавить в 1-й RAID 3-й диск)

    9. Далее читайте HPT_CLI_Guide.pdf. Документ довольно подробный и корректный.

5. LSI MegaRaid SAS и LSI SAS

А теперь перечень самых необходимых команд:

  1. Информация обо всех RAID контроллерах данного типа, присутствующих в системе:
    MegaCli -AdpAllInfo -aALL

  2. Статус всех логических дисков, присутствующих в системе. Все они должны быть в состоянии “optimal”:

    megacli -LDInfo -LALL -aALL | grep "State"

  3. Статус всех физических жестких дисков для всех адаптеров. Все они должны быть в состоянии “Online”:

    megacli -PDList -aALL | grep "Firmware state"

  4. Получить внутренний лог всех адаптеров:

    megacli  -AdpEventLog -GetEvents -f events.log -aALL && cat events.log

  5. список важнейших команд (только на английском) вы можете найти здесь: http://tools.rapidsoft.de/perc/perc-cheat-sheet.html

6. Общий скрипт для контроля за состоянием всех типов RAID

Создайте скрипт типа того, что приведен ниже. Автор оригинала свой назвал raid-status.sh и раскопировал по всем серверам. Теперь на любом из его серверов, команда

~/raid-status.sh

сообщает о состоянии массива на сервере. Итак:

#!/bin/sh
 
# -- for gmirror
if [ -r /dev/mirror/gm0 ] ; then
echo gmirror
gmirror status
 
# -- for HighPoint RocketRAID 2310
elif [ -r /dev/hptrr ] ; then
echo "HighPoint RocketRAID 2310"
hptraidconf -u RAID -p hpt query arrays
 
# -- for AMCC 3ware 9650SE-4LP
elif [ -r /dev/twa0 ] ; then
echo "AMCC 3ware 9650SE"
tw_cli /c0 show
 
# -- For Dell PowerAge 1950 (Perc 5/i, Perc 6/i)
elif [ -r /dev/mfi0 ] ; then
echo "Dell PowerAge 1950 (Perc 5/i, Perc 6/i)"
echo RAID status:
megacli -LDInfo -LALL -aALL | grep "State"
echo DISKS status:
megacli -PDList -aALL | grep "Firmware state"
rm MegaSAS.log
else
echo "unnown RAID or doesn't present anyone"
fi

7. Контроллеры /dev/amr, типа Tekram/Areca

см. man 4 amr

freebsd/raid_monitor_cli.txt · Last modified: 2014/08/24 21:25 (external edit)
About this template
CC Attribution-Share Alike 4.0 International
Powered by PHP Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 Valid HTML5