КАРТА САЙТА
Мы рады видеть Вас на Нашем сайте.

Добавленные услуги для организаций

  • logo-ulmart-ru
  • menshealth_door_1x
  • squarespace2
  • shot (1)
  • illustration_for_singularex_1-2_1x
  • truck
  • netvirus_dribble
  • phone_shot16
  • Print
Все услуги

Календарь

Сентябрь 2018
Пн Вт Ср Чт Пт Сб Вс
« Апр    
 12
3456789
10111213141516
17181920212223
24252627282930

Звонок с сайта

... и многое, многое, другое ...
BUTNET |RU

Мониторинг дисков используя megacli на RAID LSI

28.03.2016 автор в категории Linux с 0 и 0
Home > Blog > Мониторинг дисков используя megacli на RAID LSI

Смотрим какие у нас есть диски.

root@il-nv-s06:~# lshw -c disk
*-disk:0
description: SCSI Disk
product: SMC2108
vendor: SMC
physical id: 2.0.0
bus info: scsi@0:2.0.0
logical name: /dev/sda
version: 2.90
serial: 0074df64060b7e521510538600800403
size: 2791GiB (2996GB)
capabilities: gpt-1.00 partitioned partitioned:gpt
configuration: ansiversion=5 guid=02712922-3f89-4077-8a1b-2ed197f3c54c
*-disk:1
description: SCSI Disk
product: SMC2108
vendor: SMC
physical id: 2.1.0
bus info: scsi@0:2.1.0
logical name: /dev/sdb
version: 2.90
serial: 00405d940d100d0a1810538600800403
size: 54GiB (58GB)
capabilities: gpt-1.00 partitioned partitioned:gpt
configuration: ansiversion=5 guid=992168b5-1ecd-4e43-ab0f-f2e0b945ab27
*-disk:2
description: SCSI Disk
product: SMC2108
vendor: SMC
physical id: 2.2.0
bus info: scsi@0:2.2.0
logical name: /dev/sdc
version: 2.90
serial: 00074cce4a116a071810538600800403
size: 7446GiB (7995GB)
capabilities: gpt-1.00 partitioned partitioned:gpt
configuration: ansiversion=5 guid=92c542ab-7199-4525-89e3-057744b8397d

SMC2108 – означает, что у нас Supermicro MC2108 контроллер. Так же можно убедиться, что у нас Megaraid контроллер используя эту команду.

root@il-nv-s06:~# cat /proc/devices | grep mega
250 megaraid_sas_ioctl

Как видим, у нас LSI SAS MegaRAID контроллер, диски которого можно мониторить используя smartctl или же используя специализированную утилиту megacli. Для начала присмотримся к megacli. В стандартных репозиториях ее нет, но можно скачать с официального сайта и собрать с исходников. Но я рекомендую использовать специальный репозиторий (за который хочу сказать ОГРОМНОЕ спасибо) в котором есть почти весь набор специализированных утилиты под любой тип аппаратных рейдов.

root@il-nv-s06:~# echo 'deb http://hwraid.le-vert.net/ubuntu precise main' > /etc/apt/sources.list.d/raid.list
root@il-nv-s06:~# wget -O - http://hwraid.le-vert.net/debian/hwraid.le-vert.net.gpg.key | sudo apt-key add -
root@il-nv-s06:~# apt-get update
root@il-nv-s06:~# apt-get install megacli

Перечень всех доступных в репозитории утилит наведен здесь
Проверяем на ошибки физический диск megaraid используя megacli.

root@il-nv-s06:~# megacli -pdinfo -physdrv [4:0] -aALL

Enclosure Device ID: 4
Slot Number: 0
Drive's position: DiskGroup: 0, Span: 0, Arm: 0
Enclosure position: 1
Device Id: 0
WWN: 5000C5002130CD08
Sequence Number: 2
Media Error Count: 38
Other Error Count: 0
Predictive Failure Count: 0
Last Predictive Failure Event Seq Number: 0
PD Type: SAS

Raw Size: 931.512 GB [0x74706db0 Sectors]
Non Coerced Size: 931.012 GB [0x74606db0 Sectors]
Coerced Size: 930.390 GB [0x744c8000 Sectors]
Sector Size: 0
Firmware state: Online, Spun Up
Device Firmware Level: 0005
Shield Counter: 0
Successful diagnostics completion on : N/A
SAS Address(0): 0x5000c5002130cd09
SAS Address(1): 0x0
Connected Port Number: 0(path0)
Inquiry Data: SEAGATE ST31000424SS 00059WK1D042
FDE Capable: Not Capable
FDE Enable: Disable
Secured: Unsecured
Locked: Unlocked
Needs EKM Attention: No
Foreign State: None
Device Speed: 6.0Gb/s
Link Speed: 6.0Gb/s
Media Type: Hard Disk Device
Drive: Not Certified
Drive Temperature :29C (84.20 F)
PI Eligibility: No
Drive is formatted for PI information: No
PI: No PI
Port-0 :
Port status: Active
Port's Linkspeed: 6.0Gb/s
Port-1 :
Port status: Active
Port's Linkspeed: Unknown
Drive has flagged a S.M.A.R.T alert : No

Как видим, на первом физическом диске есть “Media Error Count: 38″. Это означает, что запасные(зарезервированные) сектора для remap(замены) битых секторов диска – закончились. И нужно проводить замену диска.
Так же нужно мониторить следующие параметры используя команду:

root@il-nv-s06:~# megacli -LdPdInfo -aALL | grep -E "(Id|State |Bad Blocks|Firmware state|Error Count|Predictive Failure Count)"
# Первый виртуальный диск - он же /dev/sda
Virtual Drive: 0 (Target Id: 0)
# Статус RAID-a (Degraded - если проблема с одним из дисков; Optimal - нормальный статус)
State : Degraded
# Наличие бедблоков на виртуальном диске
Bad Blocks Exist: No
# ID физического диска
Device Id: 14
# Количество ошибок, которые нет возможности исправить - самый важный компонент
Media Error Count: 0
# Количество иных ошибок не связанных с бедблоками
Other Error Count: 0
# Определение количества возможных ошибок
Predictive Failure Count: 0
# Статус физического диска (Rebuild - добавляется в RAID; Online - в RAID-e)
# Также есть "Failed", "Online, Spun Up", "Online, Spun Down", "Unconfigured(bad)", "Unconfigured(good), Spun down","Hotspare, Spun down", "Hotspare, Spun up" or "not Online".
Firmware state: Rebuild
Device Id: 1
Media Error Count: 0
Other Error Count: 0
Predictive Failure Count: 0
Firmware state: Online, Spun Up
Device Id: 2
Media Error Count: 0
Other Error Count: 0
Predictive Failure Count: 0
Firmware state: Online, Spun Up
Device Id: 3
Media Error Count: 0
Other Error Count: 0
Predictive Failure Count: 0
Firmware state: Online, Spun Up
Virtual Drive: 1 (Target Id: 1)
State : Optimal
Bad Blocks Exist: No
Device Id: 13
Media Error Count: 0
Other Error Count: 0
Predictive Failure Count: 0
Firmware state: Online, Spun Up
Media Type: Solid State Device
Device Id: 12
Media Error Count: 0
Other Error Count: 0
Predictive Failure Count: 0
Firmware state: Online, Spun Up
Media Type: Solid State Device

Теперь напишем маленький скрипт для мониторинга всех нужных параметров включая BBU.

root@il-nv-s06:~# cat megaraid.sh
#!/bin/bash
#Вся информация по физическим и логическим дискам
VD_PDID_ERRORS=`megacli -ldpdinfo -aALL | grep -E "(Id|State |Media Error|Firmware state)"`
#Вся информация по батарее
BBU_OUT=`megacli -AdpBbuCmd -aAll | grep -E "(Full Charge|^Max Error|Battery State)"`
while read line
do
#Ловим название (ID) логического диска
VD=`echo ${line} | grep -Eo "Virtual Drive: [0-9]"`
#Ловим название (ID) физического диска
PD_ID=`echo ${line} | grep -E "Device Id:"`
#Ловим важные ошибки физических дисков
PD_ERRORS=`echo ${line} | grep -E "(Media Error)"`
#Ловим статус рейда
RAID_STAT=`echo ${line} | grep -E "State"`
#Ловим статус прошивки
PD_FIRMWARE=`echo ${line} | grep -E "Firmware"`
if [ -n "${VD}" ]
then
DRIVE="${VD} ==> "
elif [ -n "${RAID_STAT}" ]
then
VD_RAID_STAT=`echo "${RAID_STAT}" | awk '{print $3}'`
VD_RAID="${DRIVE}${RAID_STAT} ==> "
#Если статус рейда отличается от нормального - число ошибок растет
if [ ${VD_RAID_STAT} != 'Optimal' ]
then
#echo "Raid with problem"
VDRIVE_WITH_FAIL="${VD_RAID}
${VDRIVE_WITH_FAIL}"
let "ERROR_COUNT += 1"
fi
elif [ -n "${PD_ID}" ]
then
PD_DRIVE="${DRIVE}${PD_ID} ==> "
elif [ -n "${PD_ERRORS}" ]
then
#Если есть ошибка - ловим их количество
PD_ERR=${PD_DRIVE}${PD_ERRORS}
let "ERROR_COUNT +=`echo ${PD_ERRORS} | awk '{print $4}'`"
TRAP=`echo ${PD_ERRORS} | awk '{print $4}'`
if [ ${TRAP} -ne 0 ]
then
DISK_WITH_FAIL="${PD_ERR}
${DISK_WITH_FAIL}"
fi
elif [ -n "${PD_FIRMWARE}" ]
then
#Проверяем или прошивка в порядке, если нет - число ошибок растет
PD_FIRM_STATUS=`echo "${PD_FIRMWARE}" | cut --delimiter=":" -f2 | sed 's/ //g'`
PD_FIRM=${PD_DRIVE}${PD_FIRMWARE}
if [ ${PD_FIRM_STATUS} != "Online,SpunUp" ]
then
#echo "PD firmware with problem"
PDFIRM_WITH_FAIL="${PD_FIRM}
${PDFIRM_WITH_FAIL}"
let "ERROR_COUNT += 1"
fi
fi
done <<< "${VD_PDID_ERRORS}"

while read bbu_log
do
BBU_STATE=`echo ${bbu_log} | grep -E "Battery State"`
BBU_ERROR=`echo ${bbu_log} | grep -E "Max Error"`
BBU_CHARGE=`echo ${bbu_log} | grep -E "Full Charge"`
if [ -n "${BBU_STATE}" ]
then
BBU_ST=`echo "${BBU_STATE}" | awk '{print $3}'`
#echo ${BBU_ST}
if [ ${BBU_ST} = "Unknown" ]
then
#echo "Battery status is Unknown"
let "ERROR_COUNT = 250"
BBUSU_WITH_FAIL="${BBU_STATE}"
elif [ ${BBU_ST} != "Optimal" ]
then
#echo "Battery STATUS is BAD"
BBUS_WITH_FAIL="${BBU_STATE}"
let "ERROR_COUNT = 251"

fi
elif [ -n "${BBU_ERROR}" ]
then
BBU_ER=`echo ${BBU_ERROR} | awk '{print $4}'`
#echo ${BBU_ER}
if [ "${BBU_ER}" -ge "11" ]
then
#echo "Battery has ERRORS"
BBUE_WITH_FAIL="${BBU_ERROR}"
let "ERROR_COUNT = 252"
fi
elif [ -n "${BBU_CHARGE}" ]
then
BBU_CHAR=`echo ${BBU_CHARGE} | awk '{print $4}'`
#echo ${BBU_CHAR}
if [ "${BBU_CHAR}" -lt "675" ]
then
#echo "Battery has low CHARGE"
BBUC_WITH_FAIL="${BBU_CHARGE}"
let "ERROR_COUNT = 253"
fi
fi
done <<< "${BBU_OUT}"

if [[ -n $1 ]] && [ $1 == 'log' ]
then
echo "${VDRIVE_WITH_FAIL}
${DISK_WITH_FAIL}
${PDFIRM_WITH_FAIL}
${BBUS_WITH_FAIL}
${BBUSU_WITH_FAIL}
${BBUE_WITH_FAIL}
${BBUC_WITH_FAIL} "
else
echo $ERROR_COUNT
fi
exit 0

Данный скрипт проверяет все диски на наличие проблем с прошивкой,состояние рейда,ошибки физических дисков и состояние батареи. Если есть проблема с батареей – код выхода скрипта будет больше 250, если проблемы с остальными устройствами, то будет выведено только количество ошибок. Скрипт запускается без аргументов. Если добавить аргумент log, будет выведено текст с указанием проблемного элемента. Проверяем работу скрипта:

root@il-nv-s06:~# ./megaraid.sh
252
root@il-nv-s06:~# ./megaraid.sh log
Max Error = 14 %

Как видим у нас проблема с батареей (BBU) и ее нужно заменить.
По роботе с magacli есть целая книга-руководство.
Из полезных команд:

# Просмотр журнала событий BBU, где можно найти информацию по проверкам и автоисправлению битых секторов
megacli -fwtermlog -dsply -aall > /tmp/ttylog.txt
# Полная информация о всех адаптеров контроллера
megacli -AdpAllInfo -aALL
# Полная информация о настройках и дисках
megacli -CfgDsply -aALL
# Информация о последних событиях, где можно найти информацию о сбои в работе дисков
megacli -AdpEventLog -GetLatest 4000 -f events.log -aALL
megacli -AdpEventLog -GetEvents -f events.log -aALL
# Информация о всех доступных корпусах контроллера
megacli -EncInfo -aALL
# Список всех логических дисков и типе RAID-а в котором они собраны
megacli -LDInfo -Lall -aALL
# Список всех физических дисков
megacli -PDList -aALL
# Информация о конкретном физическом диске
# Типовая комманда megacli -pdinfo -physdrv [E1:S2] -aALL
# E1 - Enclosure Device ID: 1, S2 - Slot Number: 2
# To get it need to run - megacli -LdPdInfo -aALL | grep -E "ID|Slot"
megacli -pdinfo -physdrv [4:2] -aALL
# Засветить диск
#Start blinking
megacli -PdLocate -start -physdrv\[4:3\] -aALL
megacli -PdLocate -start -physdrv\[4:2\] -aALL
megacli -PdLocate -start -physdrv\[4:1\] -aALL
#Stop blinking
megacli -PdLocate -stop -physdrv\[4:1\] -aALL
megacli -PdLocate -stop -physdrv\[4:2\] -aALL
megacli -PdLocate -stop -physdrv\[4:3\] -aALL

# Проверка состояния BBU (Battery Backup Unit)
megacli -adpbbucmd -aall
# Посмотреть прогресс добавления диска в RAID
megacli -pdrbld -showprog -physdrv[4:0] -aAll

Добавить коментарий

САЙТ СОЗДАН Владимир Ш. ~ СПЕЦИАЛЬНО ДЛЯ BUTNET.RU