S.M.A.R.T. (часть 4). Мониторинг SCSI дисков под HP Compaq Smart Array контроллером
В предыдущей статье шла речь о мониторинге физических дисков под LSI 2108 Megaraid контроллером. Теперь хочу навести инструкцию по мониторингу физических дисков под Hewlett-Packard Company Smart Array контроллером под дистрибутивом Ubuntu 12.04. Эта инструкция подойдет под любой дистрибутив линукс, отличается только процесс установки утилиты мониторинга hpacucli.
Так же признаком HP-raid контроллера есть наличие символьного устройства hpilo.
Так же можно воспользоваться утилитами smartctl и lshw чтобы узнать тип подключенных дисков, но это не многообещающий вывод. Он только даст нам направление, в котором нужно копать.
После того, как мы убедились в наличии HP/Compaq Smart Array Controller – первым делом установим специализированную (заточенную под HP рейд контроллеры) утилиту hpacucli.
Теперь проверяем работу утилиты. Для начала посмотрим конфигурацию контроллера.
Как видим, у нас есть три логических диска, которые являют собой два RAID1 и один RAID 5. В первых два рейда входит по два физических диска, в третий – 4 физических диска. Контроллер подключен к слоту с номером 0 (Slot 0). Команда hpacucli может и не найти ни единого контроллера, даже если он действительно подключен и нормально работает. Если вы столкнулись с такой проблемой…
… и при этом вы точно уверены в том, что у вас HP контроллер – нужно установить дополнительную утилиту uname26. Дело в том, что некоторые программы заточены под ядро 2.6, и их нужно запускать в режиме совместимости с ядрами 3.0 и выше. hpacucli утилита не исключение и для корректной работы (в отдельных случаях) ее нужно запускать в режиме совместимости (в контексте ядра 2.6). Для этого качаем утилиту uname26 и компилируем.
Теперь запускаем нашу команду в контексте 2.6 ярда.
Проблема решена. С этого вывода мы можем наблюдать статусы логических и физических дисков, но, как мы знаем, еще нужно мониторить статус батареи (BBU), статус контроллера и статус рейда. Для этого используем детальный вывод и словим статус контроллера и батареи.
Теперь можно словить статус рейда.
Всю нужную информацию мы получили. Можно также написать маленький скрипт, который будет нам выводить общий статус здоровья дисков под HP/Compaq Smart Array Controller.
Немного разъясню скрипт. Вначале я ловлю статусы всех контроллеров, рейдов, батареи, физических и логических дисков. Очевидно, что если с ними нет проблем, то последние два символа каждой словленной строки – «ОК». Таким образом, была написана функция read_stat, которая выводит последние два символа строки состояния каждого элемента (т.е. слово «ОК»), и если эти символы не совпадают с «ОК» – проблема с одним из элементов, следовательно, ловим эту ошибку и увеличиваем счетчик на 1. Чтобы увидеть лог ошибок – скрипт нужно запустить с аргументом log.
Как видим, проблем с HP контроллером нет. Теперь запустим скрипт на сервере, где есть проблема с BBU.
Список полезные команд для проверки дисков под CCISS (HP/Compaq Smart Array Controller) контроллером используя утилиту hpacucli.
Как видим при смене логического устройства(sda, sdb, sdc), но при неизменном порте устройства (cciss,0) – мы получаем информацию об одном и том же устройстве. Так что можно смело запускать скрипт такого типа, для проверки состояния дисков.
Для начала добавим демон в автозагрузку.
Так же было добавлено интервал запуска проверок. Далее нам нужно добавить диски на мониторинг, для чего служит файл smartd.conf.
Немного расшифрую вывод. Для все дисков включено запуск офлайн тестов (-o on) для обновление и сохранения значений атрибутов (-S on). Так же добавлена проверка всех текущих параметров (-а) и назначено запуск дополнительных коротких тестов каждый день в полночь (S/../.././00) и долгих тестов каждое воскресенье с 3 часов ночи (L/../../7/03). Если будет проблема хотя бы с одной из метрик – будет отправлено письмо на соответствующий адрес (-m your@emailaddress.com). При этом, письма будут отправляться систематически – 1,2,4,8,16,… дни (-M diminishing), пока проблема не будет устранена.
Copyright
Мониторинг дисков используя hpacucli
Для начала убедимся, что у нас HP контроллер. Для этого есть очень удобный и распространенный способ – просмотр имеющихся pci-устройств командой lspci.
1
2
| root@s02:~ # lspci | grep -i RAID 04:00.0 RAID bus controller: Hewlett-Packard Company Smart Array G6 controllers (rev 01) |
1
2
| root@s02:~ # cat /proc/devices | grep hp 250 hpilo |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
| 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 |
1
2
3
4
| 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 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| 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) |
1
2
3
| root@s02:~ #hpacucli ctrl all show config Error: No controllers detected. |
1
2
| wget http: //mirror .linux.org.au /linux/kernel/people/ak/uname26/uname26 .c gcc -o uname26 uname26.c |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| 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) |
1
2
3
| root@s02:~ # hpacucli ctrl all show config detail | grep -E "(Controller Status|Battery/Capacitor Status)" Controller Status: OK Battery /Capacitor Status: OK |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| 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 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| root@s02:~ # cat hpraid.sh #!/bin/bash CON=`hpacucli ctrl slot=0 show | grep -E "(Controller Status|Battery/Capacitor Status)" ` LD=`hpacucli ctrl slot=0 logicaldrive all show status` PD=`hpacucli ctrl slot=0 pd all show status` RAID=`hpacucli ctrl all show config detail | grep -A3 Array: | grep Status` ERROR_COUNT= '0' read_stat() { while read line do if [ -n "$line" ] then RESULT=${line:${ #line} - 2} if [ ${RESULT} = "OK" ] then echo "Test result is OK" > /dev/null else #echo "Test result is FAIL" ERROR_STR= "${line} \n\r ${ERROR_STR}" let "ERROR_COUNT += 1" fi fi done <<< "$1" } read_stat "${CON}" read_stat "${LD}" read_stat "${PD}" read_stat "${RAID}" if [[ -n $1 ]] && [ $1 == 'log' ] then echo ${ERROR_STR} else echo ${ERROR_COUNT} fi exit 0 |
1
2
3
| root@s02:~ #./hpraid.sh 0 root@s02:~ #./hpraid.sh log |
1
2
3
4
| root@s14:~ # ./hpraid.sh 1 root@s14: ~ # ./hpraid.sh log Battery /Capacitor Status: Failed (Replace Batteries) |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
| # Краткая информация об контроллере 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 |
Мониторинг дисков используя smartctl
Так же можно использовать smartctl для мониторинга дисков за HP/Compaq Smart Array контроллером. У нас есть 8 физических дисков. Поэтому можно запустить проверку всех параметров первых 8-ми дисков задав тип устройства CCISS (HP/Compaq Smart Array Controller). На практики, тип логического устройства не имеет никакого значения ТОЛЬКО для HP контроллеров под дистрибутивом Ubuntu 12.04. На остальных такой зависимости не проверял, так что сначала проверьте или совпадает модель физического диска при разных комбинациях логических устройств. К примеру
1
2
3
4
5
6
| 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 |
1
2
3
4
5
6
| root@s02:~ # cat smart.sh #!/bin/bash for port in {0..7} do smartctl -a -d cciss,$port /dev/sda done |
Мониторинг дисков используя smartd
Предыдущие способы мониторинга дисков были ручными, т.е. нужно вручную запускать проверку дисков находясь на конкретном сервере, или же настроить систему мониторинга, которая будет использовать написанные выше скрипты для сбора информации о состоянии дисков. Но есть еще один способ мониторинга – это использование демона smartd, который будет отправлять нам письма о проблемных дисках. Детально о настройках демона smartd можно почитать здесьДля начала добавим демон в автозагрузку.
1
2
3
| root@s02:~ # cat /etc/default/smartmontools start_smartd= yes smartd_opts= "--interval=3600" |
1
2
3
4
5
6
7
8
9
10
11
| 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 |
Copyright
Комментарии
Отправить комментарий