В предыдущих статьях шла речь о настройке мониторинга физических дисков под Megaraid, Adaptec AAC-Raid и HP/Compaq Smart Array контроллерами. Теперь же хочу завершить сагу о мониторинге дисков под рейд контроллерами на инструкции по SCSI контролере – LSI Logic / Symbios Logic RAID. Если столкнусь с новыми типами рейд контроллеров по работе – то продолжу антологию.
У нас есть Ubuntu 12.04 сервер с LSI Logic / Symbios Logic SAS1064ET контроллером.
Мониторинг дисков используя mpt-status
Так как этому серверу и к предыдущим я физического доступа не имел – пришлось догадываться какой тип рейд контроллера на нем запилен. В этом мне помогли пару команд. Для начала посмотрел, сколько видно в системе физических дисков.
root@s04:~# lshw -c disk *-disk:0 UNCLAIMED description: ATA Disk product: WDC WD2500AAKX-7 vendor: Western Digital physical id: 0.0.0 bus info: scsi@4:0.0.0 version: 1H19 serial: WD-WMAYV0112956 capacity: 232GiB (250GB) capabilities: 15000rpm configuration: ansiversion=5 *-disk:1 UNCLAIMED description: ATA Disk product: WDC WD2500AAJS-7 vendor: Western Digital physical id: 0.1.0 bus info: scsi@4:0.1.0 version: 3E02 serial: WD-WMAV2EY37680 capacity: 232GiB (250GB) capabilities: 15000rpm configuration: ansiversion=5 *-disk:2 UNCLAIMED description: ATA Disk product: GB1000EAFJL physical id: 0.2.0 bus info: scsi@4:0.2.0 version: HPGA serial: 9QJ1FCHW capacity: 931GiB (1TB) capabilities: 15000rpm configuration: ansiversion=5 *-disk:3 UNCLAIMED description: ATA Disk product: GB1000EAFJL physical id: 0.3.0 bus info: scsi@4:0.3.0 version: HPGA serial: 9QJ20J5C capacity: 931GiB (1TB) capabilities: 15000rpm configuration: ansiversion=5 *-disk:4 description: SCSI Disk product: Logical Volume vendor: LSILOGIC physical id: 1.3.0 bus info: scsi@4:1.3.0 logical name: /dev/sda version: 3000 size: 931GiB (999GB) capacity: 931GiB (999GB) capabilities: 15000rpm partitioned partitioned:dos configuration: ansiversion=2 signature=000bec8f *-disk:5 description: SCSI Disk product: Logical Volume vendor: LSILOGIC physical id: 1.0.0 bus info: scsi@4:1.0.0 logical name: /dev/sdb version: 3000 size: 231GiB (248GB) capacity: 231GiB (248GB) capabilities: 15000rpm partitioned partitioned:dos configuration: ansiversion=2 signature=000892e2 *-cdrom description: DVD reader product: DVD-ROM GDR-R10N vendor: HL-DT-ST physical id: 0.0.0 bus info: scsi@0:0.0.0 logical name: /dev/cdrom logical name: /dev/dvd logical name: /dev/sr0 version: 2.02 capabilities: removable audio dvd configuration: ansiversion=5 status=nodisc
Как видно, физических дисков у нас четыре ATA Disk без logical name и только два SCSI Disk с logical name /dev/sda и /dev/sdb. Это значит, что у нас явно рейд контроллер, только нужно узнать какой. Для этого проверяем, какие у нас есть PCI шины и какие устройства к ним подключены и ловим SCSI, так как у нас логические диски именно засветились на них.
root@s04:~# lspci | grep controller | grep –i scsi 0a:00.0 SCSI storage controller: LSI Logic / Symbios Logic SAS1064ET PCI-Express Fusion-MPT SAS (rev 08)
Как видим, у нас LSI Fusion-MPT SAS контроллер. Как мы знаем, они поддерживают только RAID0 и RAID1 конфигурацию. Для мониторинга статуса LSI Fusion MPT SAS рейд контроллера я использовал утилиту mpt-status. Она очень проста и имеет очень маленький набор ключей и параметров, но дает все нужную информацию о статусе здоровья контроллера. Установка.
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 mpt-status
Также для нормальной работы утилиты нужно добавить модуль ядра в автозагрузку.
root@s04:~# modprobe mptctl root@s04:~# echo mptctl >> /etc/modules
Первым делом просканируем на наличие контроллеров.
root@s04:~# mpt-status -p Checking for SCSI ID:0 Found SCSI id=0, use ''mpt-status -i 0`` to get more information.
Как видим, утилита нашла на SCSI с ID:0 массив дисков и предложила посмотреть детальную информацию.
root@s04:~# mpt-status -i 0 ioc0 vol_id 0 type IM, 2 phy, 231 GB, state OPTIMAL, flags ENABLED ioc0 phy 3 scsi_id 1 ATA WDC WD2500AAKX-7 1H19, 232 GB, state ONLINE, flags NONE ioc0 phy 2 scsi_id 2 ATA WDC WD2500AAJS-7 3E02, 232 GB, state ONLINE, flags NONE
Как видно, на SCSI ID:0 у нас два диска в нормальном состоянии и статус логического диска тоже в порядке.
Можно также вывести только статус логического и физических дисков.
root@s04:~# mpt-status -s -i 0 log_id 0 OPTIMAL phys_id 3 ONLINE phys_id 2 ONLINE
У нас есть два SCSI диска. ID SCSI диска можно узнать из предыдущей команды
root@s04:~# lshw -c disk | grep -A 4 SCSI | grep 'physical id' physical id: 1.3.0 physical id: 1.0.0
В данном случаи ID дисков у нас – это вторая цифра из вывода. Проверяем
root@s04:~# mpt-status -i 0 ioc0 vol_id 0 type IM, 2 phy, 231 GB, state OPTIMAL, flags ENABLED ioc0 phy 3 scsi_id 1 ATA WDC WD2500AAKX-7 1H19, 232 GB, state ONLINE, flags NONE ioc0 phy 2 scsi_id 2 ATA WDC WD2500AAJS-7 3E02, 232 GB, state ONLINE, flags NONE root@s04:~# mpt-status -i 3 ioc0 vol_id 3 type IM, 2 phy, 931 GB, state OPTIMAL, flags ENABLED ioc0 phy 1 scsi_id 9 ATA GB1000EAFJL HPGA, 931 GB, state ONLINE, flags NONE ioc0 phy 0 scsi_id 4 ATA GB1000EAFJL HPGA, 931 GB, state ONLINE, flags NONE
Теперь можно написать маленький скрипт для мониторинга статуса дисков.
root@s04:~# cat lsisymbiosraid.sh #!/bin/bash ERROR_COUNT=0 #mpt-status -i 0 | grep -oE 'state [a-Z]+' get_raid_status() { STATUS=`mpt-status -s -i $1 | awk '{print $3}'` while read line do if [ -n "${line}" ] then if [ "${line}" = "ONLINE" ] || [ "${line}" = "OPTIMAL" ] then echo "Test result is OK" > /dev/null else #echo "Test result is FAIL" ERROR_STR="Some poblem with LSI Symbios Logic raid. Please check it using \"mpt-status -i $1\" command " let "ERROR_COUNT += 1" fi fi done <<< "${STATUS}" } get_raid_status 0 get_raid_status 3 if [ -n "$1" ] && [ "$1" = "log" ] then echo ${ERROR_STR} else echo ${ERROR_COUNT} fi exit 0
Ну я думаю, что тут все понятно. Мы ловим статус OPTIMAL и ONLINE и если статус отличный от них, то проблема с одним из дисков и количество ошибок растет. Проверяем
root@s04:~# ./lsisymbiosraid.sh 0 root@s04:~# ./lsisymbiosraid.sh log root@s04:~#
Мониторинг дисков используя smartctl
Диски за LSI Fusion-MPT SAS можно так же мониторить используя smartctl. Для этого нам нужно посмотреть или загружены нужные модули ядра, если нет – добавить.
root@s04:~# modprobe sg root@s04:~# echo sg >> /etc/modules
Теперь посмотрим, какие у нас есть sg устройства в системе.
root@s04:~# ls -l /dev/sg* crw-rw---- 1 root cdrom 21, 0 Dec 27 23:15 /dev/sg0 crw-rw---- 1 root disk 21, 1 Dec 27 23:15 /dev/sg1 crw-rw---- 1 root disk 21, 2 Dec 27 23:15 /dev/sg2 crw-rw---- 1 root disk 21, 3 Dec 27 23:15 /dev/sg3 crw-rw---- 1 root disk 21, 4 Dec 27 23:15 /dev/sg4 crw-rw---- 1 root disk 21, 5 Dec 27 23:15 /dev/sg5 crw-rw---- 1 root disk 21, 6 Dec 27 23:15 /dev/sg6
Как видим первое устройство это cdrom. Теперь проверим, что являют собой остальные устройства. Это можно сделать все той же утилитой smartctl.
root@s04:~# ls /dev/sg* | while read device; do echo "Device $device is " ; smartctl -i $device | grep -E '(Vendor|Product|Device Model|Serial Number)' ; done Device /dev/sg0 is Vendor: HL-DT-ST Product: DVD-ROM GDR-R10N Device /dev/sg1 is Device Model: WDC WD2500AAKX-753CA1 Serial Number: WD-WMAYV0112956 Device /dev/sg2 is Device Model: WDC WD2500AAJS-75M0A0 Serial Number: WD-WMAV2EY37680 Device /dev/sg3 is Device Model: GB1000EAFJL Serial Number: 9QJ1FCHW Device /dev/sg4 is Device Model: GB1000EAFJL Serial Number: 9QJ20J5C Device /dev/sg5 is Vendor: LSILOGIC Product: Logical Volume Device /dev/sg6 is Vendor: LSILOGIC Product: Logical Volume
Как видим, у нас показаны все физические диски и два логических, которые и есть SCSI массивами.
Ситуация такая же как и с Adaptec AAC-Raid дисками, которые тоже видно как /dev/sg* устройства.
root@il-bi-s04:~# smartctl -a /dev/sg1 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 === START OF INFORMATION SECTION === Model Family: Western Digital Caviar Blue Serial ATA Device Model: WDC WD2500AAKX-753CA1 Serial Number: WD-WMAYV0112956 LU WWN Device Id: 5 0014ee 0584c6ea7 Firmware Version: 19.01H19 User Capacity: 250,059,350,016 bytes [250 GB] Sector Size: 512 bytes logical/physical Device is: In smartctl database [for details use: -P show] ATA Version is: 8 ATA Standard is: Exact ATA specification draft version not indicated Local Time is: Thu Mar 27 14:09:06 2014 IST SMART support is: Available - device has SMART capability. SMART support is: Enabled === START OF READ SMART DATA SECTION === SMART overall-health self-assessment test result: PASSED General SMART Values: Offline data collection status: (0x84) Offline data collection activity was suspended by an interrupting command from host. Auto Offline Data Collection: Enabled. Self-test execution status: ( 0) The previous self-test routine completed without error or no self-test has ever been run. Total time to complete Offline data collection: ( 4380) seconds. Offline data collection capabilities: (0x7b) SMART execute Offline immediate. Auto Offline data collection on/off support. Suspend Offline collection upon new command. Offline surface scan supported. Self-test supported. Conveyance Self-test supported. Selective Self-test supported. SMART capabilities: (0x0003) Saves SMART data before entering power-saving mode. Supports SMART auto save timer. Error logging capability: (0x01) Error logging supported. General Purpose Logging supported. Short self-test routine recommended polling time: ( 2) minutes. Extended self-test routine recommended polling time: ( 47) minutes. Conveyance self-test routine recommended polling time: ( 5) minutes. SCT capabilities: (0x3037) SCT Status supported. SCT Feature Control supported. SCT Data Table supported. SMART Attributes Data Structure revision number: 16 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x002f 200 200 051 Pre-fail Always - 0 3 Spin_Up_Time 0x0027 144 141 021 Pre-fail Always - 3775 4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 35 5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0 7 Seek_Error_Rate 0x002e 200 200 000 Old_age Always - 0 9 Power_On_Hours 0x0032 079 079 000 Old_age Always - 15847 10 Spin_Retry_Count 0x0032 100 253 000 Old_age Always - 0 11 Calibration_Retry_Count 0x0032 100 253 000 Old_age Always - 0 12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 33 192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 26 193 Load_Cycle_Count 0x0032 200 200 000 Old_age Always - 8 194 Temperature_Celsius 0x0022 117 100 000 Old_age Always - 26 196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0 197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 0 198 Offline_Uncorrectable 0x0030 200 200 000 Old_age Offline - 0 199 UDMA_CRC_Error_Count 0x0032 200 200 000 Old_age Always - 6 200 Multi_Zone_Error_Rate 0x0008 200 200 000 Old_age Offline - 0 240 Head_Flying_Hours 0x0032 080 080 000 Old_age Always - 14835 241 Total_LBAs_Written 0x0032 200 200 000 Old_age Always - 14052650556 242 Total_LBAs_Read 0x0032 200 200 000 Old_age Always - 9139482693 SMART Error Log Version: 1 No Errors Logged SMART Self-test log structure revision number 1 No self-tests have been logged. [To run self-tests, use: smartctl -t] SMART Selective self-test log data structure revision number 1 SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS 1 0 0 Not_testing 2 0 0 Not_testing 3 0 0 Not_testing 4 0 0 Not_testing 5 0 0 Not_testing Selective self-test flags (0x0): After scanning selected spans, do NOT read-scan remainder of disk. If Selective self-test is pending on power-up, resume after 0 minute delay.
Для настройки рейда, замены дисков и т.п. операций используется утилита lsiutil которая имеет интерактивный интерфейс.
root@s04:~# lsiutil LSI Logic MPT Configuration Utility, Version 1.56, March 19, 2008 1 MPT Port found Port Name Chip Vendor/Type/Rev MPT Rev Firmware Rev IOC 1. /proc/mpt/ioc0 LSI Logic SAS1064E B3 105 01172700 0 Select a device: [1-1 or 0 to quit] 1 1. Identify firmware, BIOS, and/or FCode 2. Download firmware (update the FLASH) 4. Download/erase BIOS and/or FCode (update the FLASH) 8. Scan for devices 10. Change IOC settings (interrupt coalescing) 13. Change SAS IO Unit settings 16. Display attached devices 20. Diagnostics 21. RAID actions 22. Reset bus 23. Reset target 42. Display operating system names for devices 43. Diagnostic Buffer actions 45. Concatenate SAS firmware and NVDATA files 60. Show non-default settings 61. Restore default settings 69. Show board manufacturing information 97. Reset SAS link, HARD RESET 98. Reset SAS link 99. Reset port e Enable expert mode in menus p Enable paged mode w Enable logging Main menu, select an option: [1-99 or e/p/w or 0 to quit]
Детали по утилите можно найти в Инете, так как я с ней толком не работал.
Мониторинг дисков используя smartd
Предыдущие способы мониторинга дисков были ручными, т.е. нужно вручную запускать проверку дисков находясь на конкретном сервере, или же настроить систему мониторинга, которая будет использовать написанные выше скрипты для сбора информации о состоянии дисков. Но есть еще один способ мониторинга — это использование демона smartd, который будет отправлять нам письма о проблемных дисках. Детально о настройках демона smartd можно почитать здесь
Для начала добавим демон в автозагрузку.
root@s04:~# cat /etc/default/smartmontools start_smartd=yes smartd_opts="--interval=3600"
Так же было добавлено интервал запуска проверок. Далее нам нужно добавить диски на мониторинг, для чего служит файл smartd.conf.
root@s04:~# cat /etc/smartd.conf #Диски, которые нужно мониторить /dev/sg1 -o on -S on -m your@emailaddress.com -M diminishing -a -s (S/../.././00|L/../../7/03) /dev/sg2 -o on -S on -m your@emailaddress.com -M diminishing -a -s (S/../.././00|L/../../7/03) /dev/sg3 -o on -S on -m your@emailaddress.com -M diminishing -a -s (S/../.././00|L/../../7/03) /dev/sg4 -o on -S on -m your@emailaddress.com -M diminishing -a -s (S/../.././00|L/../../7/03) root@s04:~# /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), пока проблема не будет устранена.
В следующей статье пойдет речь о детальном разборе мониторинга дисков используя smartd демон.