S.M.A.R.T. (часть 4). Мониторинг SCSI дисков под HP/Compaq Smart Array контроллером

hp_logo_150В предыдущей статье шла речь о мониторинге физических дисков под LSI 2108 Megaraid контроллером. Теперь хочу навести инструкцию по мониторингу физических дисков под Hewlett-Packard Company Smart Array контроллером под дистрибутивом Ubuntu 12.04. Эта инструкция подойдет под любой дистрибутив линукс, отличается только процесс установки утилиты мониторинга hpacucli.

Мониторинг дисков используя hpacucli

Для начала убедимся, что у нас HP контроллер. Для этого есть очень удобный и распространенный способ – просмотр имеющихся pci-устройств командой lspci.

root@s02:~# lspci | grep -i RAID
04:00.0 RAID bus controller: Hewlett-Packard Company Smart Array G6 controllers (rev 01)

Так же признаком HP-raid контроллера есть наличие символьного устройства hpilo.

root@s02:~# cat /proc/devices | grep hp
250 hpilo

Так же можно воспользоваться утилитами smartctl и lshw чтобы узнать тип подключенных дисков, но это не многообещающий вывод. Он только даст нам направление, в котором нужно копать.

root@s02:~# smartctl -i /dev/sda
smartctl 5.41 2011-06-09 r3365 [x86_64-linux-3.8.0-26-generic] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net

Vendor:               HP
Product:              LOGICAL VOLUME
Revision:             5.70
User Capacity:        600,093,712,384 bytes [600 GB]
Logical block size:   512 bytes
Logical Unit id:      0x600508b1001c5aac8a914351b4dead47
Serial number:        50123456789ABCDE
Device type:          disk
Local Time is:        Mon Mar  3 20:23:12 2014 IST
Device does not support SMART

root@s02:~# lshw -c disk
  *-disk:0
       description: SCSI Disk
       product: LOGICAL VOLUME
       vendor: HP
       physical id: 0.0.1
       bus info: scsi@0:0.0.1
       logical name: /dev/sda
       version: 5.70
       serial: 50123456789ABCDE
       size: 558GiB (600GB)
       capabilities: 15000rpm partitioned partitioned:dos
       configuration: ansiversion=5 signature=000b5306
  *-disk:1
       description: SCSI Disk
       product: LOGICAL VOLUME
       vendor: HP
       physical id: 0.0.0
       bus info: scsi@0:0.0.0
       logical name: /dev/sdb
       version: 5.70
       serial: 50123456789ABCDE
       size: 279GiB (299GB)
       capabilities: 15000rpm partitioned partitioned:dos
       configuration: ansiversion=5 signature=000ab3ca
  *-disk:2
       description: SCSI Disk
       product: LOGICAL VOLUME
       vendor: HP
       physical id: 0.0.2
       bus info: scsi@0:0.0.2
       logical name: /dev/sdc
       version: 5.70
       serial: 50123456789ABCDE
       size: 1676GiB (1800GB)
       capabilities: 15000rpm partitioned partitioned:dos
       configuration: ansiversion=5 signature=0003c4be

После того, как мы убедились в наличии HP/Compaq Smart Array Controller — первым делом установим специализированную (заточенную под HP рейд контроллеры) утилиту hpacucli.

echo 'deb http://hwraid.le-vert.net/ubuntu precise main' > /etc/apt/sources.list.d/raid.list
wget -O - http://hwraid.le-vert.net/debian/hwraid.le-vert.net.gpg.key | sudo apt-key add -
apt-get update
apt-get install hpacucli

Теперь проверяем работу утилиты. Для начала посмотрим конфигурацию контроллера.

root@s02:~#hpacucli ctrl all show config

Smart Array P410i in Slot 0 (Embedded)    (sn: 50123456789ABCDE)

   array A (SAS, Unused Space: 0 MB)

      logicaldrive 1 (279.4 GB, RAID 1, OK)

      physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SAS, 300 GB, OK)
      physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SAS, 300 GB, OK)

   array B (SAS, Unused Space: 0 MB)

      logicaldrive 2 (558.9 GB, RAID 1, OK)

      physicaldrive 1I:1:3 (port 1I:box 1:bay 3, SAS, 600 GB, OK)
      physicaldrive 1I:1:4 (port 1I:box 1:bay 4, SAS, 600 GB, OK)

   array C (SAS, Unused Space: 0 MB)

      logicaldrive 3 (1.6 TB, RAID 5, OK)

      physicaldrive 2I:1:5 (port 2I:box 1:bay 5, SAS, 600 GB, OK)
      physicaldrive 2I:1:6 (port 2I:box 1:bay 6, SAS, 600 GB, OK)
      physicaldrive 2I:1:7 (port 2I:box 1:bay 7, SAS, 600 GB, OK)
      physicaldrive 2I:1:8 (port 2I:box 1:bay 8, SAS, 600 GB, OK)

   SEP (Vendor ID PMCSIERA, Model  SRC 8x6G) 250 (WWID: 50123456789ABCED)

Как видим, у нас есть три логических диска, которые являют собой два RAID1 и один RAID 5. В первых два рейда входит по два физических диска, в третий – 4 физических диска. Контроллер подключен к слоту с номером 0 (Slot 0). Команда hpacucli может и не найти ни единого контроллера, даже если он действительно подключен и нормально работает. Если вы столкнулись с такой проблемой…

root@s02:~#hpacucli ctrl all show config

Error: No controllers detected.

… и при этом вы точно уверены в том, что у вас HP контроллер – нужно установить дополнительную утилиту uname26. Дело в том, что некоторые программы заточены под ядро 2.6, и их нужно запускать в режиме совместимости с ядрами 3.0 и выше. hpacucli утилита не исключение и для корректной работы (в отдельных случаях) ее нужно запускать в режиме совместимости (в контексте ядра 2.6). Для этого качаем утилиту uname26 и компилируем.

wget http://mirror.linux.org.au/linux/kernel/people/ak/uname26/uname26.c
gcc -o uname26 uname26.c

Теперь запускаем нашу команду в контексте 2.6 ярда.

root@s02:~/test# ./uname26 hpacucli ctrl all show config

Smart Array P410i in Slot 0 (Embedded)    (sn: 50123456789ABCDE)

   array A (SAS, Unused Space: 0 MB)

      logicaldrive 1 (279.4 GB, RAID 1, OK)

      physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SAS, 300 GB, OK)
      physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SAS, 300 GB, OK)

   array B (SAS, Unused Space: 0 MB)

      logicaldrive 2 (558.9 GB, RAID 1, OK)

      physicaldrive 1I:1:3 (port 1I:box 1:bay 3, SAS, 600 GB, OK)
      physicaldrive 1I:1:4 (port 1I:box 1:bay 4, SAS, 600 GB, OK)

   array C (SAS, Unused Space: 0 MB)

      logicaldrive 3 (1.6 TB, RAID 5, OK)

      physicaldrive 2I:1:5 (port 2I:box 1:bay 5, SAS, 600 GB, OK)
      physicaldrive 2I:1:6 (port 2I:box 1:bay 6, SAS, 600 GB, OK)
      physicaldrive 2I:1:7 (port 2I:box 1:bay 7, SAS, 600 GB, OK)
      physicaldrive 2I:1:8 (port 2I:box 1:bay 8, SAS, 600 GB, OK)

   SEP (Vendor ID PMCSIERA, Model  SRC 8x6G) 250 (WWID: 50123456789ABCED)

Проблема решена. Если по прежнему осталась — попробуйте установить самую последнюю версию программы.

#echo "deb http://downloads.linux.hp.com/SDR/downloads/MCP/ubuntu precise/current non-free" >> /etc/apt/sources.list.d/hp.list
#wget -qO - http://downloads.linux.hp.com/SDR/downloads/MCP/GPG-KEY-mcp | sudo apt-key add -
#apt-get update
#apt-get install hpacucli

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

root@s02:~# hpacucli ctrl all show config detail | grep -E "(Controller Status|Battery/Capacitor Status)"
   Controller Status: OK
   Battery/Capacitor Status: OK

Теперь можно словить статус рейда.

root@s02:~# hpacucli ctrl all show config detail | grep -A3 Array:
   Array: A
      Interface Type: SAS
      Unused Space: 0  MB
      Status: OK
--
   Array: B
      Interface Type: SAS
      Unused Space: 0  MB
      Status: OK
--
   Array: C
      Interface Type: SAS
      Unused Space: 0

Всю нужную информацию мы получили. Можно также написать маленький скрипт, который будет нам выводить общий статус здоровья дисков под HP/Compaq Smart Array Controller.

root@s02:~# cat hpraid.sh
#!/bin/bash
ERROR_COUNT=0
get_status() {
if [ -z "$1" -o -z "$2" ]; then echo "Couldn't parse hpacucli output"
else
    case "$2" in
    "array")
        device_type='array'; regex='array [a-Z]'
        ;;
    "ld")
        device_type='logicaldrive'; regex='logicaldrive [0-9]'
        ;;
    "pd")
        device_type='physicaldrive'; regex='physicaldrive [0-9][a-Z]:[0-9]:[0-9]'
        ;;
    esac
    while read device_id
    do
        status=`hpacucli ctrl slot=$1 $device_id show status | grep -oP '(?<=: ).*'`
        #echo "$device_id, Status: $status"
        if [ "$status" != "OK" ]
        then
            failed_item="${device_type}=${device_id}\n${failed_item}"
            let "ERROR_COUNT += 1"
        fi
    done < <(hpacucli ctrl slot=$1 $device_type all show status | grep -Eo "$regex")
fi
}

error_message() {
echo -e "$1" | while read line
do
    d_type=`echo $line | cut -d= -f1`
    d_id=`echo $line | cut -d= -f2-`
    case "$d_type" in
    "logicaldrive")
        hpacucli ctrl slot=0 $d_id show detail | grep -oE 'Disk Name:.*|Mount Points:.*' | sed ':a;N;$!ba;s/\n/<br>/g'
        echo '<br>===<br>'
        ;;
    "physicaldrive")
        hpacucli ctrl slot=0 $d_id show detail | grep -oE 'Status:.*|Serial Number:.*|Model:.*|Size:.*' | sed ':a;N;$!ba;s/\n/<br>/g'
        echo '<br>===<br>'
        ;;
    esac
done
}

for slot in `hpacucli ctrl all show | awk '{ print $6 }'`
do 
    # Controller status
    controller_status=`hpacucli ctrl slot=${slot} show detail | grep -oP '(?<=Controller Status: ).*'`
    #echo "Slot: $slot, Controller Status: $controller_status"

    # Other devices status
    for device in array ld pd
    do
        get_status "$slot" "$device"
    done
done

if [[ -n $1 ]] && [ $1 == 'log' ]
then
    error_message "$failed_item"
else
        echo ${ERROR_COUNT}
fi
exit 0

Немного разъясню скрипт. Вначале я ловлю статусы всех контроллеров, рейдов, батареи, физических и логических дисков. Очевидно, что если с ними нет проблем, то последние два символа каждой словленной строки – «ОК». Таким образом, была написана функция read_stat, которая выводит последние два символа строки состояния каждого элемента (т.е. слово «ОК»), и если эти символы не совпадают с «ОК» — проблема с одним из элементов, следовательно, ловим эту ошибку и увеличиваем счетчик на 1. Чтобы увидеть лог ошибок – скрипт нужно запустить с аргументом log.

root@s02:~#./hpraid.sh
0
root@s02:~#./hpraid.sh log

Как видим, проблем с HP контроллером нет. Теперь запустим скрипт на сервере, где есть проблема.

root@s14:~# ./hpraid.sh
3
root@s14: ~# ./hpraid.sh log
Status: Failed
Size: 60 GB
Serial Number: FED10759099902589732
Model: ATA     Patriot Blaze   
===
Disk Name: /dev/sdb
Mount Points: /var/lib/mysql 55.9 GB
===

Список полезные команд для проверки дисков под CCISS (HP/Compaq Smart Array Controller) контроллером используя утилиту hpacucli.

# Краткая информация об контроллере
hpacucli ctrl all show config
# Полная информация об контроллере
hpacucli ctrl all show config detail
# Показать статус кеша, контроллера и батареи
hpacucli ctrl all show status
# Выключить/включить кэш
hpacucli ctrl slot=0 modify dwc=disable
hpacucli ctrl slot=0 modify dwc=enable
# Просканировать на новые устройства (добавленные)
hpacucli rescan
# Краткая информация о физических дисках
hpacucli ctrl slot=0 pd all show
# Полная информация о конкретном физическом диском
hpacucli ctrl slot=0 pd 2:3 show detail
# Статус всех физических дисков
hpacucli ctrl slot=0 pd all show status
# Статус конкретного диска
hpacucli ctrl slot=0 pd 2:3 show status
# Стереть физический диск
hpacucli ctrl slot=0 pd 2:3 modify erase
# Включить/отключить индикатор на физическом диске
hpacucli ctrl slot=0 pd 2:3 modify led=on
hpacucli ctrl slot=0 pd 2:3 modify led=off
# Полная информация о всех логических дисках
hpacucli ctrl slot=0 ld all show
# Полная информация о конкретном логическом диске
hpacucli ctrl slot=0 ld 4 show
# Статус всех логических дисков
hpacucli ctrl slot=0 ld all show status
# Статус конкретного логического диска
hpacucli ctrl slot=0 ld 4 show status
# Реактивация логического диска после изменений
hpacucli ctrl slot=0 ld 4 modify reenable forced
# Создание логического диска с RAID 0 включающего один физический диск
hpacucli ctrl slot=0 create type=ld drives=1:12 raid=0
# Создание логического диска с RAID 1 с двух физических дисков
hpacucli ctrl slot=0 create type=ld drives=1:13,1:14 size=300 raid=1
# Создание логического диска с RAID 5 с пяти физических дисков
hpacucli ctrl slot=0 create type=ld drives=1:13,1:14,1:15,1:16,1:17 raid=5
# Удалить логический диск
hpacucli ctrl slot=0 ld 4 delete
# Добавление дополнительного физического диска к логическому
hpacucli ctrl slot=0 ld 4 add drives=2:3
# Увеличение размера логического диска, после добавление нового физического
hpacucli ctrl slot=0 ld 4 modify size=500 forced
# Добавление двух запасных дисков
hpacucli ctrl slot=0 array all add spares=1:5,1:7

Замена BBU для Write Back cache

Что такое Write Back cache я уже объяснял в предыдущих статьях. К примеру, в megaraid контроллерах политика записи на диск может включаться для отдельного виртуального диска, в HP рейдах, она включается для всего контроллера. Что нам нужно сделать, это заменить (или убедиться что работает) BBU и включить. Проверяем что у нас на данный момент.

root@il-nv-s01:~# hpacucli ctrl all show config detail | grep -E "(Drive Write Cache|Total Cache Size|No-Battery Write Cache|Battery/Capacitor Count|Battery/Capacitor Status)"
   Drive Write Cache: Disabled
   Total Cache Size: 512 MB
   No-Battery Write Cache: Disabled
   Battery/Capacitor Count: 1
   Battery/Capacitor Status: OK

Как видим, кэш выключен, но с BBU все в порядке, по этому можно свободно включить политику кэширования.

root@il-nv-s01:~# hpacucli ctrl slot=0 modify dwc=enable

Warning: Without the proper safety precautions, use of write cache on physical 
         drives could cause data loss in the event of power failure.  To ensure
         data is properly protected, use redundant power supplies and
         Uninterruptible Power Supplies. Also, if you have multiple storage
         enclosures, all data should be mirrored across them. Use of this
         feature is not recommended unless these precautions are followed.
         Continue? (y/n) y

И проверяем статус после.

root@il-nv-s01:~# hpacucli ctrl all show config detail | grep -E "(Drive Write Cache|Total Cache Size|No-Battery Write Cache|Battery/Capacitor Count|Battery/Capacitor Status)"
   Drive Write Cache: Enabled
   Total Cache Size: 512 MB
   No-Battery Write Cache: Disabled
   Battery/Capacitor Count: 1
   Battery/Capacitor Status: OK

Вот, в принципе, и все.

Мониторинг дисков используя smartctl

Так же можно использовать smartctl для мониторинга дисков за HP/Compaq Smart Array контроллером. У нас есть 8 физических дисков. Поэтому можно запустить проверку всех параметров первых 8-ми дисков задав тип устройства CCISS (HP/Compaq Smart Array Controller). На практики, тип логического устройства не имеет никакого значения ТОЛЬКО для HP контроллеров под дистрибутивом Ubuntu 12.04. На остальных такой зависимости не проверял, так что сначала проверьте или совпадает модель физического диска при разных комбинациях логических устройств. К примеру

root@02:~# smartctl -i -d cciss,0 /dev/sda | grep "Serial number:"
Serial number:        S0K058TJ
root@02:~# smartctl -i -d cciss,0 /dev/sdb | grep "Serial number:"
Serial number:        S0K058TJ
root@02:~# smartctl -i -d cciss,0 /dev/sdc | grep "Serial number:"
Serial number:        S0K058TJ

Как видим при смене логического устройства(sda, sdb, sdc), но при неизменном порте устройства (cciss,0) – мы получаем информацию об одном и том же устройстве. Так что можно смело запускать скрипт такого типа, для проверки состояния дисков.

root@s02:~# cat smart.sh
#!/bin/bash
for port in {0..7}
do
        smartctl -a -d cciss,$port /dev/sda
done

Мониторинг дисков используя smartd

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

root@s02:~# cat /etc/default/smartmontools
start_smartd=yes
smartd_opts="--interval=3600"

Так же было добавлено интервал запуска проверок. Далее нам нужно добавить диски на мониторинг, для чего служит файл smartd.conf.

root@s02:~# cat /etc/smartd.conf
#Диски, которые нужно мониторить
/dev/sda -d cciss,0 -o on -S on -m your@emailaddress.com -M diminishing -a -s (S/../.././00|L/../../7/03)
/dev/sda -d cciss,1 -o on -S on -m your@emailaddress.com -M diminishing -a -s (S/../.././00|L/../../7/03)
/dev/sda -d cciss,2 -o on -S on -m your@emailaddress.com -M diminishing -a -s (S/../.././00|L/../../7/03)
/dev/sda -d cciss,3 -o on -S on -m your@emailaddress.com -M diminishing -a -s (S/../.././00|L/../../7/03)
/dev/sdа -d cciss,4 -o on -S on -m your@emailaddress.com -M diminishing -a -s (S/../.././00|L/../../7/03)
/dev/sdа -d cciss,5 -o on -S on -m your@emailaddress.com -M diminishing -a -s (S/../.././00|L/../../7/03)
/dev/sdа -d cciss,6 -o on -S on -m your@emailaddress.com -M diminishing -a -s (S/../.././00|L/../../7/03)
/dev/sdа -d cciss,7 -o on -S on -m your@emailaddress.com -M diminishing -a -s (S/../.././00|L/../../7/03)
root@s02:~# /etc/init.d/smartd restart

Немного расшифрую вывод. Для все дисков включено запуск офлайн тестов (-o on) для обновление и сохранения значений атрибутов (-S on). Так же добавлена проверка всех текущих параметров (-а) и назначено запуск дополнительных коротких тестов каждый день в полночь (S/../.././00) и долгих тестов каждое воскресенье с 3 часов ночи (L/../../7/03). Если будет проблема хотя бы с одной из метрик — будет отправлено письмо на соответствующий адрес (-m your@emailaddress.com). При этом, письма будут отправляться систематически — 1,2,4,8,16,… дни (-M diminishing), пока проблема не будет устранена.
В следующей статье пойдет речь о настройке монитороинга дисков за Adaptec AACRaid контроллером

Автор: admin, 4 марта 2014
Рубрики: Системы мониторинга
Метки: ,
2 комментария к сообщению: “S.M.A.R.T. (часть 4). Мониторинг SCSI дисков под HP/Compaq Smart Array контроллером”
  1. lioncub:

    Помоему тут стоит уделить внимание еще одной утилите доступной в репозитариях (Debian, Ubuntu…) — cciss_vol_status

Написать комментарий

Последние статьи

Яндекс.Метрика
?>