Quantcast
Channel: Системы мониторинга —Системное администрирование и мониторинг Linux/Windows серверов и видео CDN
Viewing all 12 articles
Browse latest View live

S.M.A.R.T. (часть 2). Мониторинг BBU RAID контроллеров

$
0
0

qgpucbВ предыдущей статье шла речь об установки megacli для мониторинга дисков под LSI 2108 Megaraid контроллеров. Сейчас же я хочу немного описать мониторинг батареи (BBU) для RAID контроллеров в целом. Какие шаги нужно предпринимать и как не наделать лишних проблем для себя при возникновении ошибок или неполадок с BBU (Battery Backup Unit).
Состояние батареи нужно периодически проверять. Для RAID контроллеров этот компонент вообще может отсутствовать, так как его основное предназначение – это держать в кэше данные, которые еще не записались на диск, т.е. сохранение целостности данных при сбое питания (внезапное отключения подачи электричества).
На данный момент, почти все рейд контроллеры поддерживают кэширование данных на уровне контроллера. Т.е. каждый физический диск имеет свой кэш плюс кэш контроллера. Такой подход повышает производительность системы при сохранение большого количества данных или же при очень высоком уровне отдачи контента конечным пользователям.
Если рейд контроллер умеет кэшировать данные, то на нем можно настроить политику считывания, записи и буферизации данных.

Read Policy: Политика считывания указывает каким образом контроллеру нужно считывать сектора логических устройств при поиске нужной информации.

  • Read-Ahead. Когда используется политика упреждающего (на перед) чтение, контроллер включает режим последовательного считывания секторов с логических дисков при поиске данных. Производительность повышается, если данных записаны последовательно, сектор за сектором на логические диски.
  • No-Read-Ahead. Режим отключения политика последовательного считывания данных на контроллере.
  • Adaptive Read-Ahead. Когда включена адаптивная политика упреждающего чтение, контроллер инициализирует упреждающее чтение только если пришел запрос на очень часто считываемые данные, которые записаны последовательно на логический диск. Если же запрашиваются рендомные(записанные в случайной последовательности) данные – контроллер переходит в режим no-read-ahead.

Про политику записи и буферизации лучше читать в оригинале.
Write Policy: The write policies specify whether the controller sends a write-request completion signal as soon as the data is in the cache or after it has been written to disk.

  • Write-Back. When using write-back caching, the controller sends a write-request completion signal as soon as the data is in the controller cache but has not yet been written to disk. Write-back caching may provide improved performance since subsequent read requests can more quickly retrieve data from the controller cache than they could from the disk. Write-back caching also entails a data security risk, however, since a system failure could prevent the data from being written to disk even though the controller has sent a write-request completion signal. In this case, data may be lost. Other applications may also experience problems when taking actions that assume the data is available on the disk.

В этом режиме как только данные попали в кэш – контроллер говорит, что данные уже сохранены. Это повышает производительность но ставит под угрозу целостность данных.

  • Write-Through. When using write-through caching, the controller sends a write-request completion signal only after the data is written to the disk. Write-through caching provides better data security than write-back caching, since the system assumes the data is available only after it has been safely written to the disk.

В этом режиме данные попадать в кэш, записываются на дик и только тогда контроллер отвечает, что данные сохранены. Это повышает целостность данных, но уменьшает производительность.

Cache Policy: The Direct I/O and Cache I/O cache policies apply to reads on a specific virtual disk. These settings do not affect the read-ahead policy. The cache policies are as follows:

  • Cache I/O. Specifies that all reads are buffered in cache memory.

Все считанные данные буферизируются в кэше.

  • Direct I/O. Specifies that reads are not buffered in cache memory. When using direct I/O, data is transferred to the controller cache and the host system simultaneously during a read request. If a subsequent read request requires data from the same data block, it can be read directly from the controller cache. The direct I/O setting does not override the cache policy settings. Direct I/O is also the default setting.

Данные не буферизируются в кэше.

Теперь перейдем к практике на примере мегарейд контроллера.
Для начала нужно проверить логи:

root@il:~# megacli -fwtermlog -dsply -aall

Если вывелась куча строк типа:

02/13/14  6:30:57: EVT#715494-02/13/14  6:30:57: 150=Battery needs replacement - SOH Bad
02/13/14  6:32:02: Not enough charge capacity left in battery for expeded data retention duration
02/13/14  6:32:02: Battery needs replacement
02/13/14  6:32:02: EVT#715495-02/13/14  6:32:02: 150=Battery needs replacement - SOH Bad
02/13/14  6:33:07: Not enough charge capacity left in battery for expeded data retention duration
02/13/14  6:33:07: Battery needs replacement
02/13/14  6:33:07: EVT#715496-02/13/14  6:33:07: 150=Battery needs replacement - SOH Bad
02/13/14  6:34:12: Not enough charge capacity left in battery for expeded data retention duration
02/13/14  6:34:12: Battery needs replacement
02/13/14  6:34:12: EVT#715497-02/13/14  6:34:12: 150=Battery needs replacement - SOH Bad
02/13/14  6:35:17: Not enough charge capacity left in battery for expeded data retention duration
02/13/14  6:35:17: Battery needs replacement
02/13/14  6:35:17: EVT#715498-02/13/14  6:35:17: 150=Battery needs replacement - SOH Bad
02/13/14  6:36:22: Not enough charge capacity left in battery for expeded data retention duration
02/13/14  6:36:22: Battery needs replacement
02/13/14  6:36:22: EVT#715499-02/13/14  6:36:22: 150=Battery needs replacement - SOH Bad
02/13/14  6:37:27: Not enough charge capacity left in battery for expeded data retention duration
02/13/14  6:37:27: Battery needs replacement
02/13/14  6:37:27: EVT#715500-02/13/14  6:37:27: 150=Battery needs replacement - SOH Bad
02/13/14  6:38:32: Not enough charge capacity left in battery for expeded data retention duration
02/13/14  6:38:32: Battery needs replacement
02/13/14  6:38:32: EVT#715501-02/13/14  6:38:32: 150=Battery needs replacement - SOH Bad
02/13/14  6:39:37: Not enough charge capacity left in battery for expeded data retention duration

… первым делом проверяем статус BBU установленной тулзой:

root@il:~# megacli -adpbbucmd -aall

BBU status for Adapter: 0

BatteryType: iBBU
Voltage: 4008 mV
Current: 0 mA
Temperature: 26 C
Battery State: Failed
BBU Firmware Status:

  Charging Status              : None
  Voltage                                 : OK
  Temperature                             : OK
  Learn Cycle Requested                   : No
  Learn Cycle Active                      : No
  Learn Cycle Status                      : OK
  Learn Cycle Timeout                     : No
  I2c Errors Detected                     : No
  Battery Pack Missing                    : No
  Battery Replacement required            : Yes
  Remaining Capacity Low                  : Yes
  Periodic Learn Required                 : No
  Transparent Learn                       : No
  No space to cache offload               : No
  Pack is about to fail & should be replaced : No
  Cache Offload premium feature required  : No
  Module microcode update required        : No

GasGuageStatus:
  Fully Discharged        : No
  Fully Charged           : Yes
  Discharging             : Yes
  Initialized             : Yes
  Remaining Time Alarm    : No
  Discharge Terminated    : No
  Over Temperature        : No
  Charging Terminated     : No
  Over Charged            : No
  Relative State of Charge: 96 %
  Charger System State: 49168
  Charger System Ctrl: 0
  Charging current: 0 mA
  Absolute state of charge: 5161 %
  Max Error: 19 %
  Battery backup charge time : 0 hours

BBU Capacity Info for Adapter: 0

  Relative State of Charge: 96 %
  Absolute State of charge: 5161 %
  Remaining Capacity: 62706 mAh
  Full Charge Capacity: 65467 mAh
  Run time to empty: Battery is not being charged.
  Average time to empty: Battery is not being charged.
  Estimated Time to full recharge: Battery is not being charged.
  Cycle Count: 119
Max Error = 19 %
Remaining Capacity Alarm = 120 mAh
Remining Time Alarm = 10 Min

BBU Design Info for Adapter: 0

  Date of Manufacture: 12/01, 2010
  Design Capacity: 1215 mAh
  Design Voltage: 3700 mV
  Specification Info: 33
  Serial Number: 3241
  Pack Stat Configuration: 0x64a0
  Manufacture Name: LS1121001A
  Firmware Version   :
  Device Name: 3150301
  Device Chemistry: LION
  Battery FRU: N/A
  Transparent Learn = 0
  App Data = 0

BBU Properties for Adapter: 0

  Auto Learn Period: 30 Days
  Next Learn time: Thu Feb 20 06:33:27 2014
  Learn Delay Interval:0 Hours
  Auto-Learn Mode: Enabled

Убеждаемся, что проблема есть по параметрам – Battery Replacement required : Yes и Battery State: Failed. Перед паникой и заменой, нужно дополнительно посмотреть параметр Run time to empty: Battery is not being charged. – Это означает, что нужно ее зарядить, так как она еще ни разу не заряжалась и состояние заряда :
Relative State of Charge: 96 %
Absolute State of charge: 5161 %

Значит первым делом нужно попробовать зарядить BBU и если не помогло – проверить все ли правильно подсоединено. Если проблема не решилась – нужно проводить замену.
Можно пользоваться этими шагами для определения и решения проблемы с BBU:

Num Type Description Indication Actions
2 F Unable to recover cache data from TBBU A,B 1
10 F Controller cache discarded due to memory/battery problems A,B 1
11 F Unable to recover cache data due to configuration mismatch A,B,C 1
146 W Battery voltage low N/A 1,2
162 W Current capacity of the battery is below threshold B 1,2
150 F Battery needs replacement – SOH Bad D 1,2
154 W Battery relearn timed out D 1,2
161 W Battery removed D 1,2
200 C Battery/charger problems detected: SOH Bad D 1,2
211 C BBU Retention test failed! G 1,2
142 W Battery Not Present N/A 1,2
253 W Battery requires reconditioning: please initiate a LEARN cycle N/A 3
307 W Periodic Battery Relearn is pending. Please initiate manual leam cycle as Automatic leam is not enabled H 3
195 W BBU disabled: changing WB to WT E, F 4,5
330 W Detected error with the remote battery connector cable N/A 6

Type:
F= Fatal. W=Warning. C=Critical.

Indication:
A) Sudden power loss or system hang, when BBU is not fully charged and Write Back mode is forcefully enabled
B) The extended power loss to the system has resulted in the BBU being thoroughly discharged before power recovery.
C) The specific virtual drive configuration may have changed, so that previous virtual drive information cannot be recovered from BBU data
D) BBU failure or it is installed or connected incorrectly.
E) BBU not connected or not fully charged.
F) If WB mode was enabled before BBU charge, then it will be automatically re-enabled after the charge
G) BBU not able to keep cache data long enough during system power off.
H) The battery requires a relearn cycle to re-calibrate itself.

Action
1) Check the BBU status to see if the BBU should be charged or replaced.
2) Check the cable, power connection, backplane, SATA/SAS port, and make sure the BBU is installed and connected correctly.
3) Use RAID Web Console 2 or RAID BIOS Console to initiate a battery re-learn cycle.
4) Wait until the BBU is fully charged before rebooting the system.
5) WB can still be used through Bad BBU mode under RAID Web Console 2 but unexpected
power failure may cause data loss.
6) Check if the remote battery connector cable is properly connected and functional.


S.M.A.R.T. (часть 3). Расшифровка и понимание SMART атрибутов

$
0
0

check-drive-health-macМаленький рассказ об S.M.A.R.T. атрибутах, их важности и понимании. В статье пойдет речь об расшифровке всех smart атрибутов ATA дисков. В предыдущих статьях речь шла об мониторинге BBU и жестких SCSI дисков и их атрибутов под Megaraid контроллером. Теперь хочу немного описать атрибуты обычных АТА дисков на примере Seagate Barracuda ES.2 (ST31000340NS). Так же определим самые важные атрибуты, на которые нужно обращать внимание при мониторинге дисков используя smartctl. Для начала, можно убедиться, что наш диск поддерживает смарт

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

=== START OF INFORMATION SECTION ===
Model Family:     Seagate Barracuda ES.2
Device Model:     ST31000340NS
Serial Number:    9QJ2ADVC
…
ATA Version is:   8
ATA Standard is:  ATA-8-ACS revision 4
Local Time is:    Fri Feb 21 16:18:35 2014 CET
…
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

Две последние строки свидетельствуют о том, что диск поддерживает smart и можно посмотреть значение всех его атрибутов и их интерпретация будет корректной(интерпретация RAW_VALUE) . В данном случаи тип интерфейса (устройства) не указывался явно (не было указанно атрибут «-d»), по этому smartctl автоматически определил тип устройства и сказал, что «SMART support is: Enabled». Но если используются, к примеру массивы дисков (RAID контроллер), то smartctl может сказать, что смарт не поддерживается:

root@s06:~# 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:               SMC
Product:              SMC2108
Revision:             2.90
User Capacity:        2,996,997,980,160 bytes [2.99 TB]
Logical block size:   512 bytes
Logical Unit id:      0x600304800086531015527e0b0664df74
Serial number:        0074df64060b7e521510538600800403
Device type:          disk
Local Time is:        Fri Feb 21 17:32:27 2014 IST
Device does not support SMART

Но на самом деле, нужно просто знать (или подбирать) какие дисковые массивы используются, и тогда можно получить желаемый результат явно указав тип устройства:

root@s06:~# smartctl -d megaraid,14 -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:               SEAGATE
Product:              ST1000NM0001
Revision:             0002
User Capacity:        1,000,204,886,016 bytes [1.00 TB]
Logical block size:   512 bytes
Logical Unit id:      0x5000c50041080343
Serial number:        Z1N0TV980000C2157TYR
Device type:          disk
Transport protocol:   SAS
Local Time is:        Fri Feb 21 17:34:45 2014 IST
Device supports SMART and is Enabled
Temperature Warning Enabled

Также может быть проблема в версии smartctl ибо не все жесткие диски добавляются в базу SMART сразу после выхода в мир нового HDD или RAID контроллера. Или же в BIOS отключено поддержку (нужно включить). Так же может быть проблема в прошивке (firmware) самого жесткого диска. Можете также стоит для начала попытаться включить SMART командой:

root@s01:~# smartctl -s on /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

=== START OF ENABLE/DISABLE COMMANDS SECTION ===
SMART Enabled.

Следующая, интересующая нас часть вывода покажет суммарный результат проверки статуса здоровья диска (Если не Passed – нужно проводить замену диска). Так же выводится дополнительные характеристики диска и предполагаемое время выполнения коротких и длинных тестов.

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

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x82) Offline data collection activity
                                        was completed without error.
                                        Auto Offline Data Collection: Enabled.
Self-test execution status:      (  41) The self-test routine was interrupted
                                        by the host with a hard or soft reset.
Total time to complete Offline
data collection:                (  634) 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:        (   1) minutes.
Extended self-test routine
recommended polling time:        ( 226) minutes.
Conveyance self-test routine
recommended polling time:        (   2) minutes.
SCT capabilities:              (0x003d) SCT Status supported.
                                        SCT Error Recovery Control supported.
                                        SCT Feature Control supported.
                                        SCT Data Table supported.

В нашем случаи тип устройства определился автоматически и теперь можно вывести самое интересное – список атрибутов.

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

=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   068   059   044    Pre-fail  Always       -       130449727
  3 Spin_Up_Time            0x0003   099   099   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       23
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       4
  7 Seek_Error_Rate         0x000f   063   039   030    Pre-fail  Always       -       549998464474
  9 Power_On_Hours          0x0032   052   052   000    Old_age   Always       -       42335
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   037   020    Old_age   Always       -       63
184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
188 Command_Timeout         0x0032   100   093   000    Old_age   Always       -       4295032870
189 High_Fly_Writes         0x003a   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   076   049   045    Old_age   Always       -       24 (Min/Max 18/26)
194 Temperature_Celsius     0x0022   024   051   000    Old_age   Always       -       24 (0 17 0 0)
195 Hardware_ECC_Recovered  0x001a   041   021   000    Old_age   Always       -       130449727
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0

Используя SMART можно предугадать с довольно большой вероятностью проблемы связанные с:

  • Магнитными головками диска
  • Физическими повреждениями диска
  • Логическими ошибками
  • Механическими проблемами (проблемы привода, системы позиционирования)
  • Подачей питания (платы)
  • Температурой

Расшифруем полученный вывод.

smart-attr
Каждый атрибут имеет группу значений:

  • ID# – идентификационный номер атрибуты (детали здесь). Каждый атрибуты имеет свой уникальный ID, который должен быть одинаковым для всех фирм производителей дисков.
  • ATTRIBUTE_NAME – название атрибута. Так как разные фирмы производители дисков могут называть атрибуты по своему (сокращать, синонимы), лучше всего ориентироваться по ID атрибута.
  • FLAG (Status flag) – каждый атрибут имеет определенный флаг, назначенный фирмой разработчиком диска. В ОС с графическим интерфейсом значения этого флага предоставляется в виде набора буквенных обозначений – w,p,r,c,o,s (расшифровка ниже). И эти наборы предоставляются в виде шестнадцатеричного числа которые вы видели выше.
  1. Warranty: Указывает на жизненно важный атрибут диска и покрывается гарантией. Если этот флаг установлен и значение атрибута с этим флагом достигнет порогового (threshold) значения, в то время, когда диск еще на гарантии, то фирма должна будет заменить диск бесплатно.
  2. Performance: Указывает на атрибут, который представляет показатель производительности диска – не критический.
  3. Error Rate: Атрибут с частотой ошибок.
  4. Count of occurrences: Атрибут-счетчик происшествий.
  5. Online test: Атрибут, который обновляет значения только через on-line тесты. Если не указан, то обновляется через off-line тесты.
  6. Self preserving: Указывает на атрибут который может собирать и сохранять данные о диска, даже если S.M.A.R.T. отключен.
  • Value – Текущее значение атрибута(оценка атрибута диска на основе Raw_value). Низкое значение говорит о быстрой деградации диска или о возможном скором сбое. т.е. чем выше значение Value атрибута, тем лучше. Это значение атрибута нужно сравнивать с пороговым (threshold) значением. Если это критический атрибут и значение ниже порогового – нужно проводить замену диска.
  • Worst – Самое низкое значение атрибута за жизненный цикл диска. Значение может изменяться на протяжении жизни диска, и не должно быть ниже или равным пороговому значению (threshold).
  • Thresh (Threshold) – Пороговое значения атрибута назначенное создателем диска. Значение не меняется за жизненный цикл диска. Если значение Value атрибута станет равным или меньше порогового – появиться уведомление в колонке WHEN_FAILED. И диск нужно заменить.
  • Type – тип атрибута. Может быть критическим (pre-fail), который указывает на предстоящий отказ диска из-за ошибок или не критический, указывающий на достижение конца жизненного цикла диска.
  • Raw_value – Объективное значения атрибута, которое показывается в десятичном формате (вычисляется firmware диска) и известных только производителю единицах (имеет связь с Value, Threshold и Worst значениями).
  • WHEN_FAILED – Указывает на проблемы с атрибутом.

Атрибут диска примет значение failed, в случаи:

Value = f(Raw_value) <= Threshold

Здесь:

  • f(Raw_value) – функция вычисления деградации (уменьшения) значения параметра Value в зависимости от значения Raw_value.

Недостатки такого подхода к вычислению деградации диска:

  • Для каждого производителя дисков и даже модели диска функция f(Raw_value) вычисляется по-разному.
  • Оценка каждого атрибута подсчитывается независимо друг от друга – т.е. игнорируются связи между атрибутами.

Теперь хочу представить таблицу с перечисленными всех атрибутов. Те атрибуты, которые выделены розовым – относятся к атрибутам критическим. К тому же, указано тип параметра в зависимости от величины значения. Т.е. чем больше значение параметра, тем лучше состояние здоровья диска или наоборот.

Чем выше значение Value, тем лучше состояние диска.
Чем ниже значение Value, тем лучше состояние диска.
Критический атрибут В ближайшие время диск выйдет из строя – нужна смена диска

Теперь приступим к атрибутам:

#ID HEX Имя атрибута Лучше если… Описание
01 01 Raw Read Error Rate
Частота ошибок при чтении данных с жёсткого диска. Происхождение их обусловлено аппаратной частью винчестера.
02 02 Throughput Performance
Общая производительность накопителя. Если значение атрибута уменьшается перманентно, то велика вероятность проблем с винчестером.
03 03 Spin-Up Time
Время раскрутки шпинделя из состояния покоя (0 rpm) до рабочей скорости. В поле Raw_value содержится время в миллисекундах/секундах в зависимости от производителя
04 04 Start/Stop Count * Полное число запусков, остановок шпинделя. Иногда в том числе количество включений режима энергосбережения. В поле raw value хранится общее количество запусков/остановок жёсткого диска.
05 05 Reallocated Sectors Count
Число операций переназначения секторов. При обнаружении повреждённого сектора на винчестере, информация из него помечается и переносится в специально отведённую зону, происходит утилизация bad блоков, с последующим консервированием этих мест на диске. Этот процесс называют remapping. Чем больше значение Reallocated Sectors Count, тем хуже состояние поверхности дисков — физический износ поверхности. Поле raw value содержит общее количество переназначенных секторов.
07 07 Seek Error Rate
Частота ошибок при позиционировании блока магнитных головок. Чем больше значение, тем хуже состояние механики, или поверхности жёсткого диска.
08 08 Seek Time Performance
Средняя производительность операции позиционирования. Если значение атрибута уменьшается, то велика вероятность проблем с механической частью.
09 09 Power-On Hours (POH)
Время, проведённое устройством, во включенном состоянии. В качестве порогового значения для него выбирается паспортное время наработки на отказ.
10 0A Spin-Up Retry Count
Число повторных попыток раскрутки дисков до рабочей скорости в случае, если первая попытка была неудачной.
11 0B Recalibration Retries
Количество повторов рекалибровки в случае, если первая попытка была неудачной.
12 0C Device Power Cycle Count Число циклов включения-выключения винчестера.
13 0D Soft Read Error Rate
Число ошибок при чтении, по вине программного обеспечения, которые не поддались исправлению.
187 BB Reported UNC Errors
Неустранимые аппаратные ошибки.
190 BE Airflow Temperature
Температура воздуха внутри корпуса жёсткого диска. Целое значение, либо значение по формуле 100 — Airflow Temperature
191 BF G-sense error rate
Количество ошибок, возникающих в результате ударов.
192 C0 Power-off retract count
Число циклов аварийных выключений.
193 C1 Load/Unload Cycle
Количество циклов перемещения блока головок в парковочную зону.
194 C2 HDA temperature
Показания встроенного термодатчика накопителя.
195 C3 Hardware ECC Recovered
Число коррекции ошибок аппаратной частью диска (ошибок чтения, ошибок позиционирования, ошибок передачи по внешнему интерфейсу).
196 C4 Reallocation Event Count
Число операций переназначения в резервную область, успешные и неудавшиеся попытки.
197 C5 Current Pending Sector Count
Число секторов- кандидатов на перенос в резервную зону. Помечены как не надёжные. При последующих корректных операциях атрибут может быть снят.
198 C6 Uncorrectable Sector Count
Число некорректируемых ошибок при обращении к сектору.
199 C7 UltraDMA CRC Error Count
Число ошибок при передаче данных по внешнему интерфейсу.
200 C8 Write Error Rate /Multi-Zone Error Rate
Общее количество ошибок при заполнения сектора информацией. Показатель качества накопителя.
201 C9 Soft read error rate
Частота появления «программных» ошибок при чтении данных с диска, а не аппаратной части HDD.
202 Ca Data Address Mark errors
Число ошибок адресно помеченной информации (Data Address Mark (DAM)).Если автоматически не корректируется — заменить устройство.
203 CB Run out cancel
Количество ошибок ECC данных, присоединяемые к передаваемому сигналу, позволяющие принимающей стороне определить факт сбоя или исправить несущественную ошибку.
204 CC Soft ECC correction
Количество ошибок ECC, скорректированных программным способом.
205 CD Thermal asperity rate (TAR)
Число ошибок в следствии температурных колебаний.
206 CE Flying height * Высота между головкой и поверхностью диска компьютера.
209 D1 Offline seek performance * Drive’s seek performance during offline operations.
220 DC Disk Shift
Дистанция смещения блока дисков относительно шпинделя. В основном возникает из-за удара или падения.
221 DD G-Sense Error Rate
Число ошибок, возникших из-за внешних нагрузок и ударов. Атрибут хранит показания встроенного crash датчика.
222 DE Loaded Hours * Время, проведённое блоком магнитных головок между выгрузкой из парковочной области в рабочую область диска и загрузкой блока обратно в парковочную область.
223 DF Load/Unload Retry Count * Количество новых попыток выгрузок/загрузок блока магнитных головок винчестера в/из парковочной области после неудачной попытки.
224 E0 Load Friction
Величина силы трения блока магнитных головок при его выгрузке из парковочной области.
225 E1 Load Cycle Count
Число циклов вход-выход в парковочную зону.
226 E2 Load ‘In’-time * Время, за которое привод выгружает магнитные головки из парковочной области на рабочую поверхность диска.
227 E3 Torque Amplification Count
Количество попыток скомпенсировать вращающий момент.
228 E4 Power-Off Retract Cycle
Количество повторов автоматической парковки блока магнитных головок в результате выключения питания.
230 E6 GMR Head Amplitude * Амплитуда «дрожания» (расстояние повторяющегося перемещения блока магнитных головок).
231 E7 Temperature
Температура жёсткого диска.
240 F0 Head flying hours * Время позиционирования головки.
250 FA Read error retry rate
Число ошибок во время чтения жёсткого диска.

Атрибуты дисков нужно смотреть в целом и самостоятельно прогнозировать замену, не только опираясь на smart атрибуты. Нужно дополнительно проводить тесты на бедблоки и запускать fscheck и smart тесты, о которых пойдет речь в следующих статьях.

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

$
0
0

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

Мониторинг дисков используя 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 контроллером

S.M.A.R.T. (часть 5). Мониторинг дисков под Adaptec AAC-Raid контроллером

$
0
0

Basic CMYKМы уже познакомились с мониторингом дисков под Hewlett-Packard Company Smart Array контроллером, LSI 2108 Megaraid контроллером и познакомились с мониторингом SMART атрибутов. Продолжим знакомство с мониторингом жестких дисков и возьмемся за мониторинг HDD за Adaptec RAID контроллером под дистрибутивом Ubuntu 12.04.
Для мониторинга дисков под Adaptec AACRaid контролером можно использовать бесплатную утилиту arcconf, утилиты aacraid-status, afacli, aaccli или графическую утилиту adaptec-storage-manager-gui или просто юзать smartctl или smartd. В данной инструкции я опишу работу с arcconf утилитой, smartctl и smartd так как остальные утилиты выдают очень мало информации, а с графическим интерфейсом я не люблю играться.

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

Для начала нужно убедиться, что у нас именно Adaptec AAC-Raid

root@s05:~# lspci | grep -i raid
04:00.0 RAID bus controller: Adaptec AAC-RAID (Rocket) (rev 02)

Вывод может быть и такого типа

RAID bus controller [0104]: Adaptec AAC-RAID
RAID bus controller [0104]: Dell PowerEdge Expandable RAID Controller 3/Di
RAID bus controller [0104]: Adaptec AAC-RAID (Rocket)

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

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

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

root@s05:~#arcconf GETCONFIG 1
Controllers found: 1
----------------------------------------------------------------------
Controller information
----------------------------------------------------------------------
   Controller Status                        : Optimal
   Channel description                      : SAS/SATA
   Controller Model                         : IBM ServeRAID 8k
   Controller Serial Number                 : 11AE500
   Physical Slot                            : 0
   Installed memory                         : 256 MB
   Copyback                                 : Disabled
   Background consistency check             : Enabled
   Automatic Failover                       : Enabled
   Stayawake period                         : Disabled
   Spinup limit internal drives             : 0
   Spinup limit external drives             : 0
   Defunct disk drive count                 : 0
   Logical devices/Failed/Degraded          : 2/0/0
   --------------------------------------------------------
   Controller Version Information
   --------------------------------------------------------
   BIOS                                     : 5.2-0 (11835)
   Firmware                                 : 5.2-0 (11835)
   Driver                                   : 1.2-0 (29801)
   Boot Flash                               : 5.1-0 (11835)
   --------------------------------------------------------
   Controller Battery Information
   --------------------------------------------------------
   Status                                   : Optimal
   Over temperature                         : No
   Capacity remaining                       : 100 percent
   Time remaining (at current draw)         : 4 days, 15 hours, 11 minutes

----------------------------------------------------------------------
Logical device information
----------------------------------------------------------------------
Logical device number 0
   Logical device name                      : OS
   RAID level                               : 1
   Status of logical device                 : Optimal
   Size                                     : 953690 MB
   Read-cache mode                          : Enabled
   Write-cache mode                         : Enabled (write-back)
   Write-cache setting                      : Enabled (write-back) when protected by battery/ZMM
   Partitioned                              : Yes
   Protected by Hot-Spare                   : No
   Bootable                                 : Yes
   Failed stripes                           : No
   Power settings                           : Disabled
   --------------------------------------------------------
   Logical device segment information
   --------------------------------------------------------
   Segment 0                                : Present (Controller:1,Enclosure:0,Slot:0) 9WK1J5H8
   Segment 1                                : Present (Controller:1,Enclosure:0,Slot:1) 9WK5S550

Logical device number 1
   Logical device name                      : DATA
   RAID level                               : 5
   Status of logical device                 : Optimal
   Size                                     : 2861090 MB
   Stripe-unit size                         : 256 KB
   Read-cache mode                          : Enabled
   Write-cache mode                         : Enabled (write-back)
   Write-cache setting                      : Enabled (write-back) when protected by battery/ZMM
   Partitioned                              : Yes
   Protected by Hot-Spare                   : No
   Bootable                                 : No
   Failed stripes                           : No
   Power settings                           : Disabled
   --------------------------------------------------------
   Logical device segment information
   --------------------------------------------------------
   Segment 0                                : Present (Controller:1,Channel:0,Device:2)
   Segment 1                                : Present (Controller:1,Enclosure:0,Slot:3) 9WK1J37S
   Segment 2                                : Present (Controller:1,Enclosure:0,Slot:4) 9WK0KN2E
   Segment 3                                : Present (Controller:1,Enclosure:0,Slot:5) 9WK1J547

----------------------------------------------------------------------
Physical Device information
----------------------------------------------------------------------
      Device #0
         Device is a Hard drive
         State                              : Online
         Supported                          : Yes
         Transfer Speed                     : SAS 3.0 Gb/s
         Reported Channel,Device(T:L)       : 0,0(0:0)
         Reported Location                  : Enclosure 0, Slot 0
         Reported ESD(T:L)                  : 2,0(0:0)
         Vendor                             : IBM-ESXS
         Model                              : ST31000424SS
         Firmware                           : BC21
         Serial number                      : 9WK1J5H8
         World-wide name                    : 5000C50021389DDC
         Size                               : 953869 MB
         Write Cache                        : Enabled (write-back)
         FRU                                : 49Y1880
         S.M.A.R.T.                         : No
         S.M.A.R.T. warnings                : 0
      Device #1
         Device is a Hard drive
         State                              : Online
         Supported                          : Yes
         Transfer Speed                     : SAS 3.0 Gb/s
         Reported Channel,Device(T:L)       : 0,1(1:0)
         Reported Location                  : Enclosure 0, Slot 1
         Reported ESD(T:L)                  : 2,0(0:0)
         Vendor                             : IBM-ESXS
         Model                              : ST31000424SS
         Firmware                           : BC29
         Serial number                      : 9WK5S550
         World-wide name                    : 5000C5004164ABFC
         Size                               : 953869 MB
         Write Cache                        : Enabled (write-back)
         FRU                                : 49Y1880
         S.M.A.R.T.                         : No
         S.M.A.R.T. warnings                : 0
      Device #2
         Device is a Hard drive
         State                              : Online
         Supported                          : Yes
         Transfer Speed                     : SAS 3.0 Gb/s
         Reported Channel,Device(T:L)       : 0,2(2:0)
         Vendor                             : IBM-ESXS
         Model                              : ST31000424SS
         Firmware                           : BC21
         World-wide name                    : 5000C50021388F60
         Size                               : 953869 MB
         Write Cache                        : Enabled (write-back)
         FRU                                : None
         S.M.A.R.T.                         : No
         S.M.A.R.T. warnings                : 0
      Device #3
         Device is a Hard drive
         State                              : Online
         Supported                          : Yes
         Transfer Speed                     : SAS 3.0 Gb/s
         Reported Channel,Device(T:L)       : 0,3(3:0)
         Reported Location                  : Enclosure 0, Slot 3
         Reported ESD(T:L)                  : 2,0(0:0)
         Vendor                             : IBM-ESXS
         Model                              : ST31000424SS
         Firmware                           : BC21
         Serial number                      : 9WK1J37S
         World-wide name                    : 5000C5002138E354
         Size                               : 953869 MB
         Write Cache                        : Enabled (write-back)
         FRU                                : 49Y1880
         S.M.A.R.T.                         : No
         S.M.A.R.T. warnings                : 0
      Device #4
         Device is a Hard drive
         State                              : Online
         Supported                          : Yes
         Transfer Speed                     : SAS 3.0 Gb/s
         Reported Channel,Device(T:L)       : 0,4(4:0)
         Reported Location                  : Enclosure 0, Slot 4
         Reported ESD(T:L)                  : 2,0(0:0)
         Vendor                             : IBM-ESXS
         Model                              : ST31000424SS
         Firmware                           : BC21
         Serial number                      : 9WK0KN2E
         World-wide name                    : 5000C5002103D428
         Size                               : 953869 MB
         Write Cache                        : Enabled (write-back)
         FRU                                : 49Y1880
         S.M.A.R.T.                         : No
         S.M.A.R.T. warnings                : 0
      Device #5
         Device is a Hard drive
         State                              : Online
         Supported                          : Yes
         Transfer Speed                     : SAS 3.0 Gb/s
         Reported Channel,Device(T:L)       : 0,5(5:0)
         Reported Location                  : Enclosure 0, Slot 5
         Reported ESD(T:L)                  : 2,0(0:0)
         Vendor                             : IBM-ESXS
         Model                              : ST31000424SS
         Firmware                           : BC21
         Serial number                      : 9WK1J547
         World-wide name                    : 5000C50021388B6C
         Size                               : 953869 MB
         Write Cache                        : Enabled (write-back)
         FRU                                : 49Y1880
         S.M.A.R.T.                         : No
         S.M.A.R.T. warnings                : 0
      Device #6
         Device is an Enclosure services device
         Reported Channel,Device(T:L)       : 2,0(0:0)
         Enclosure ID                       : 0
         Type                               : SES2
         Vendor                             : IBM-ESXS
         Model                              : VSC7160
         Firmware                           : 1.06
         Status of Enclosure services device

Command completed successfully.

Из всего полученного вывода нам нужны только такие параметра как состояние контроллера (Controller Status), статус батареи BBU (Controller Battery Information), статус логических дисковых масивов (Status of logical device) и статус каждого физического диска (Device #*). Для этого я написал маленький скрипт, подобный скрипту в предыдущей статье.

root@s05:~# cat aacraid.sh
#!/bin/bash
ERROR_COUNT=0
LOG="/tmp/aacraid.log"
arcconf GETCONFIG 1 > $LOG
if [ "$?" -ne "0" ]
then
        ERROR_STR="Cannot write to log"
        let "ERROR_COUNT += 1"
fi
CONTROLLER=`cat $LOG | grep -E 'Controller Status' | awk '{ print $4 }'`
BATTERY=`cat $LOG | grep -A 2 'Controller Battery Information' | grep Status | awk '{print $3}'`
LOGICAL_DEVICE=`cat $LOG | grep -E 'Status of logical device' | awk '{print $6}'`
PHISICAL_DEVICE=`cat $LOG | grep -A 2 -E 'Device #[0-9]' | grep State | awk '{print $3}'`
get_status() {
while read line ; do
if [ -n "$line" ]
then
        if [ "$line" = "Optimal" ] || [ "$line" = "Online" ]
                then
                        echo "Test result is OK" > /dev/null
                else
                        #echo "Test result is FAIL"
                        ERROR_STR="Some poblem with ACC-raid. Please check $LOG file
"
                        let "ERROR_COUNT += 1"
                fi
        fi
done <<< "$1"
}
get_status "${CONTROLLER}"
get_status "${BATTERY}"
get_status "${LOGICAL_DEVICE}"
get_status "${PHISICAL_DEVICE}"

if [ -n "$1" ] && [ "$1" = "log" ]
then
        echo ${ERROR_STR}
		echo "Controller Status is ${CONTROLLER}"
		echo "Controller Battery Status is ${BATTERY}"
		echo "Status of LDs are ${LOGICAL_DEVICE}"
		echo "Status of PDs are:" && cat $LOG | grep -A 2 -E 'Device #[0-9]'
else
        echo ${ERROR_COUNT}
fi

Опишу немного данный скрипт. Сначала мы сохраняем всю информацию о здоровье контроллера в файл /tmp/aacraid.log. Далее вытаскиваем значение статуса контроллера, батареи, логических и физических дисков. В функции get_status перебираются все полученные значения и сравниваются со статусами Optimal и Online. Если значения отличны от нормальных, значит есть проблема и число ошибок растет. Если скрипт запустить без аргументов, то мы получим число ошибок, если добавить аргумент log – узнаем с чем именно у нас проблемы.
Проверяем.

root@s05:~# ./aacraid.sh
0
root@s05:~# ./aacraid.sh log
Controller Status is Optimal
Controller Battery Status is Optimal
Status of LDs are
Optimal
Optimal
Status of PDs are:
      Device #0
         Device is a Hard drive
         State                              : Online
--
      Device #1
         Device is a Hard drive
         State                              : Online
--
      Device #2
         Device is a Hard drive
         State                              : Online
--
      Device #3
         Device is a Hard drive
         State                              : Online
--
      Device #4
         Device is a Hard drive
         State                              : Online
--
      Device #5
         Device is a Hard drive
         State                              : Online

Полезные команды утилиты arcconf

# Получить информацию только об адаптере(включая батарею и прошивку)
ARCCONF GETCONFIG 1 AD
# Получить информацию только о логических устройствах
ARCCONF GETCONFIG 1 LD
# Получить информацию только о логическом устройстве с номером 0
ARCCONF GETCONFIG 1 LD 0
# Получить информацию только о физических устройствах
ARCCONF GETCONFIG 1 PD
# Получить информацию только о логических устройствах
ARCCONF GETCONFIG 1 LD
# Поставить/удалить Secure Erase пароль на диск с каналом 0 и ID 0
# Узнать нужны канал и ID диска можно так - arcconf GETCONFIG 1 PD | grep 'Reported Channel,Device'
ARCCONF ATAPASSWORD 1 SET uR8ryx 0 1
ARCCONF ATAPASSWORD 1 CLEAR uR8ryx 0 1
# Создание логического диска с размером блока 64КБ(STRIPESIZE 64) с максимально допустимым размером(MAX), с нулевым рейдом (RAID# = 0) состоящим из дисков (CHANNEL# DRIVE# = 0 1, 0 2, 0 3) без задания лишних вопросов (NOPROMPT)
ARCCONF CREATE 1 LOGICALDRIVE STRIPESIZE 64 MAX 0 0 1 0 2 0 3 NOPROMPT
# Проверка целостности контроллера с номером 1 каждые 30 дней
ARCCONF DATASCRUB 1 PERIOD 30
# Выключить проверку целостности
ARCCONF DATASCRUB 1 OFF
# Удалить логические устройства 1,2 и 3
ARCCONF DELETE 1 LOGICALDRIVE 1 2 3
# Получить лог по ошибках дисков (DEVICE), по умерших устройствах (DEAD), по последних событиях (EVENT) и статистику использования контроллера (STATS) в читабельном формате (Tabular)
ARCCONF GETLOGS 1 DEVICE Tabular
ARCCONF GETLOGS 1 DEAD Tabular
ARCCONF GETLOGS 1 EVENT Tabular
ARCCONF GETLOGS 1 STATS Tabular
# Засветить LED к котором подсоединены логические или физические диски контроллера с номером 1
ARCCONF IDENTIFY 1 DEVICE 0 0
ARCCONF IDENTIFY 1 DEVICE 0 1
ARCCONF IDENTIFY 1 ALL
ARCCONF IDENTIFY 1 LOGICALDRIVE 0
ARCCONF IDENTIFY 1 LOGICALDRIVE 1
# Установка режима кэширования
# Для логических устройств есть режимы
#• RON - read cache on
#• ROFF - read cache off
#• WT - write through disabled
#• WB - write back enabled
#• WBB - write back enabled (when protected by battery or flash backup module)
# Для физических устройств
#• WT - write through disabled
#• WB - write back enabled
ARCCONF SETCACHE LOGICALDRIVE 1 RON
ARCCONF SETCACHE DEVICE 0 0 WB

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

Так же статус Adaptec AAC-RAID можно проверять используя smartctl утилиту. Adaptec контроллер дает возможность прямого доступа к физическим дискам, которые к нему подключены. В операционной системе эти диски представлены в виде /dev/sg* символьных устройств. Проверяем, какие у нас есть устройства

root@s05:~# ls -l /dev/sg*
crw-rw---- 1 root cdrom 21, 0 Dec 27 23:33 /dev/sg0
crw-rw---- 1 root disk  21, 1 Dec 27 23:33 /dev/sg1
crw-rw---- 1 root disk  21, 2 Dec 27 23:33 /dev/sg2
crw-rw---- 1 root disk  21, 3 Dec 27 23:33 /dev/sg3
crw-rw---- 1 root disk  21, 4 Dec 27 23:33 /dev/sg4
crw-rw---- 1 root disk  21, 5 Dec 27 23:33 /dev/sg5
crw-rw---- 1 root disk  21, 6 Dec 27 23:33 /dev/sg6
crw-rw---- 1 root disk  21, 7 Dec 27 23:33 /dev/sg7
crw-rw---- 1 root disk  21, 8 Dec 27 23:33 /dev/sg8
crw------- 1 root root  21, 9 Dec 27 23:33 /dev/sg9

Как видим, у нас 10 таких устройств, первое из которых – это cdrom, а последнее – тоже не наше. Значит дисков у нас выходит 8, хотя реально физических дисков мы нашли 6 используя утилиту arcconf. Причина в том, что среди этих символьных устройств есть еще и два логических диска нашего контроллера и по этому в сумме как раз выходит 8. Теперь проверяем где у нас логические диски (по которым мы не получим полной smart информации) и физические диски.

root@s05:~# 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

Vendor:               ServeRA
Product:              OS
Revision:             V1.0
User Capacity:        1,000,016,445,440 bytes [1.00 TB]
Logical block size:   512 bytes

root@s05:~# smartctl -a /dev/sg2
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:               ServeRA
Product:              DATA
Revision:             V1.0
User Capacity:        3,000,070,307,840 bytes [3.00 TB]
Logical block size:   512 bytes

Здесь мы получили информацию о наших логических дисках, которые назывались при создании – OS и DATA соответственно /dev/sda и /dev/sdb.

Теперь проверим статус физических дисков

root@s05:~# smartctl -a /dev/sg3
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:               IBM-ESXS
Product:              ST31000424SS
Revision:             BC21
User Capacity:        1,000,204,886,016 bytes [1.00 TB]
Logical block size:   512 bytes
Logical Unit id:      0x5000c50021389ddf
Serial number:        9WK1J5H80000C1051XEY
Device type:          disk
Transport protocol:   SAS
Local Time is:        Wed Mar 19 13:05:17 2014 IST
Device supports SMART and is Enabled
Temperature Warning Enabled
SMART Health Status: OK

Current Drive Temperature:     25 C
Drive Trip Temperature:        65 C
Elements in grown defect list: 0
Vendor (Seagate) cache information
  Blocks sent to initiator = 0
Vendor (Seagate/Hitachi) factory information
  number of hours powered up = 14468.02
  number of minutes until next internal SMART test = 45

Error counter log:
           Errors Corrected by           Total   Correction     Gigabytes    Total
               ECC          rereads/    errors   algorithm      processed    uncorrected
           fast | delayed   rewrites  corrected  invocations   [10^9 bytes]  errors
read:   3457914044      828         0  3457914872   3457914872      87421.760           0
write:         0        0         0         0          0     206663.684           0
verify: 3950043166       50         0  3950043216   3950043216     115859.741           0

Non-medium error count:        7

SMART Self-test log
Num  Test              Status                 segment  LifeTime  LBA_first_err [SK ASC ASQ]
     Description                              number   (hours)
# 1  Background short  Completed                   -       0                 - [-   -    -]

Long (extended) Self Test duration: 13596 seconds [226.6 minutes]

Таким образом мы получим информацию о каждом физическом диске.

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

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

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

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

root@s05:~# cat /etc/smartd.conf
#Диски, которые нужно мониторить
/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)
/dev/sg5 -o on -S on -m your@emailaddress.com -M diminishing -a -s (S/../.././00|L/../../7/03)
/dev/sg6 -o on -S on -m your@emailaddress.com -M diminishing -a -s (S/../.././00|L/../../7/03)
/dev/sg7 -o on -S on -m your@emailaddress.com -M diminishing -a -s (S/../.././00|L/../../7/03)
/dev/sg8 -o on -S on -m your@emailaddress.com -M diminishing -a -s (S/../.././00|L/../../7/03)
root@s05:~# /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), пока проблема не будет устранена.

В следующей статье пойдет речь о мониторинге дисков под LSI Fusion-MPT SAS контроллером

S.M.A.R.T. (часть 6). Мониторинг дисков под LSI Fusion-MPT SAS контроллером

$
0
0

LSISAS1064EВ предыдущих статьях шла речь о настройке мониторинга физических дисков под 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 демон.

S.M.A.R.T. (часть 7). Настройка smartd демона для мониторинга дисков под Ubuntu 12.04

$
0
0

imagesВ этой статье хотел немного углубиться в настройки smartd демона для мониторинга физических дисков. В предыдущих статьях речь шла о настройке мониторинга дисков за LSI Fusion-MPT SAS, Adaptec AACRaid, HP/Compaq Smart Array, LSI 2108 RAID контроллерами и с обычным SCSI,SAT,ATA интерфейсом используя атрибуты под дистрибутивом Ubuntu 12.04 используя специализированные утилиты и smartctl.
Т.е. мы мониторили диски за RAID-контроллерами, используя ручные скрипты и команды, которые можно прицепить к любой системе мониторинга, но на много удобней автоматизировать отправку сообщений о проблемах с дисками через почту именно в тот момент, когда она реально назревает или уже возникла. Для этих нужд и предназначен демон smartd.
Для начала советую вам ознакомиться с мануалом smartd, где все детально расписано.

root@s12:~# man smartd

Вся инструкция сводиться до трех конфигурационных файлов, т.е. нужно добавить нужные настройки и рестартануть демоны.

root@s12:~# cat /etc/rsyslog.d/60-smart.conf
local3.*                         /var/log/smard.log
root@s12:~# cat /etc/default/smartmontools
start_smartd=yes
smartd_opts="--interval=3600 --logfacility=local3"
root@s12:~# cat /etc/smartd.conf
#Диски, которые нужно мониторить
/dev/sda -d sat -o on -S on -m support@support.com -M diminishing -a -s (S/../.././01|L/../../6/03)
/dev/sdb -d sat -o on -S on -m support@support.com -M diminishing -a -s (S/../.././01|L/../../6/03)
/dev/sdc -d sat -o on -S on -m support@support.com -M diminishing -a -s (S/../.././01|L/../../6/03)
root@s12:~# /etc/init.d/rsyslog restart
root@s12:~# /etc/init.d/smartd restart

Теперь давайте поэтапно разберем что это было.

Настройка запуска smartd демона

По умолчанию, smartd пишет логи в /var/log/syslog, так как это системный журнал событий – в нем может писаться очень много информации, что затрудняет поиски нужного вывода. Для этого, после краткого осмотра документации по smartd, первым делом добавим свой лог-файл в который будет писаться вся информация о работе smartd демона. Редактируем rsyslog.

root@s12:~# vim /etc/rsyslog.d/50-default.conf
...
local3.*                        /var/log/smard.log
...

Здесь,

  • local3.* – включить все уровни логирования для объекта local3;
  • /var/log/smard.log – файл, куда записать весь полученный вывод.

Ман по rsyslog.conf говорит, что можно брать любую не занятую facility в диапазоне local0 – local7.
priority можно подставить любой из debug, info, notice, warning, warn (same as warning), err, error (same as err), crit, alert, emerg, panic (same as emerg) или просто символ – “*”, который включает все.
Т.е. в данном случаи у local3 объекта мы ловим сообщения с любым приоритетом (*) и записываем в файл. Так же можно все сообщения записывать в БД, передавать на другой хост или на локальный скрипт. Если передаем на локальный скрипт, то тело сообщения будет в arg[1] скрипта.
После внесения изменений в rsyslog делаем рестарт демона.

root@s12:~# /etc/init.d/rsyslog restart
root@s12:~# initctl status rsyslog
rsyslog start/running, process 5662

После рестарта у нас должен создаться файлик smard.log

root@s12:~# ls -l /var/log/smard.log
-rw-r----- 1 syslog adm 0 Mar 29 18:01 /var/log/smard.log

Теперь при запуске демона smard нужно добавлять аргумент “-l locatl3”, что мы и сделаем отредактировав файл /etc/default/smartmontools.

root@s12:~# cat /etc/default/smartmontools
# uncomment to start smartd on system startup
start_smartd=yes

# uncomment to pass additional options to smartd on startup
smartd_opts="--interval=3600 --logfacility=local3"

Также было добавлено запуск демона smartd при старте системы (start_smartd=yes) и выставил интервал между проверками дисков в 1 час (–interval=3600).

Настройка мониторинга дисков

Мы разобрались с настройками запуска (аргументами и лог-файлами) smartd демона. Теперь же нужно правильно настроить проверку дисков. Ниже приведены самые употребляемые опции для мониторинга дисков через smartd.conf.

Опция

Значение опции

Описание

-d ata Мониторинг дисков с ATA интерфейсом
scsi Мониторинг дисков с SCSI интерфейсом
sat Мониторинг дисков с ATA интерфейсом, которые подключены через переходник SCSI
marvell Мониторинг дисков за Marvell контроллером
megaraid,N Мониторинг дисков за Megaraid RAID контроллером
3ware,N Мониторинг дисков за 3ware контроллером
areca,N Мониторинг дисков за Areca SATA контроллером
hpt,L/M/N Мониторинг дисков за HighPoint RocketRAID контроллером
cciss,N Мониторинг дисков за cciss RAID контроллером
-o on Включение SMART Automatic Offline тестов для обновления статуса атрибутов
-S on Включить автосохранение атрибутов
Проверить только здоровье диска (если значение Prefailure атрибута меньше за threshold – увидим, что диск не здоров)
-l-l error Уведомлять, если количество ошибок диска растет или тести заканчиваются с печальным результатом
selftest
-s T/MM/DD/d/HH T – тип теста (S – short, L – long, O – offline Immediate)MM – месяц (две цифры в диапазон 01-12)DD – день месяца (две цифры в диапазоне 01-31)d – день недели (одна цифра в диапазоне 1-7)

HH – время в часах (две цифры в диапазоне 00-23)

“.” – любой единичный символ

(A|B|C) – любой из трех вариантов

Пример:

-s (O/../.././(00|06|12|18)|S/../.././01|L/../../6/03)

-m your@mail.com Кому отправлять письма о проблеме
-M test Идет только в сочетании с “–m” (–m root –M test). Отправить тестовое письмо при старте демона smartd.
diminishing Периодически отсылать письма о проблеме ( 2*N период. Т.е. 1-го числа, второго, четвертого, восьмого и т.п. кратно двум )
exec script.sh Запустить скрипт, вместо обычной отправки письма. Демон smartd будет ждать, пока скрипт не завершит свою работу. Эта опция полезна, когда нужно провести некие действия с сообщением или выбрать другой почтовый клиент (по умолчанию /usr/bin/mail).
-f [ATA  only]Мониторинг Usage(Old_age) атрибутов на статус “failure”, связано с -H
-p [ATA  only]Мониторинг Prefail атрибутов
-u [ATA  only]Мониторинг Usage(Old_age) атрибутов
-t [ATA  only]Включение обоих проверок -p и –u
-f -i ID [ATA  only]Игнорировать атрибут с номером ID при проверке Usage(Old_age) атрибута на статус “failure”
-I ID [ATA  only]Игнорировать смену значений атрибута с номером ID(только в сочетании с одним из -t,-u,-p)
-R ID [ATA  only]Мониторинг изменений Raw value атрибута с номером ID. Автоматом включает -r опцию
ID [ATA  only]Мониторинг количества секторов, которые помечены как pending, т.е. те, которые система обозначит как bad-сектора и переназначит (-C 197)
-U ID [ATA  only]Мониторинг неисправимых(битых) секторов атрибута с номером ID(-U 198)
-W d,i,c Мониторинг температуры. Уведомляет, если измениться на d градусов или будет больше за INFO(i) или CRIT(c) градусов (-W 5,40,50)
Мониторинг, который включает в себе опции -H, -f, -t, -l selftest, -l error, -C 197,-U 198

Исходя из таблицы, настроим мониторинг трех SAT дисков.
Мы запускаем Short test каждый день в 1 час ночи и Long test тест каждую субботу в 3 часа ночи (-s). Уведомление об ошибках будет слаться на почтовый ящик(-m). Мониторинг включает стандартный набор атрибутов (–а), так же включено автоматического обновление атрибутов (-o) и их автосохранение (-S on). Так же, добавлена опция –M test, которая позволит отправить тестовое сообщение при старте демона.

root@s12:~# vim /etc/smartd.conf
…
/dev/sda -d sat -o on -S on -m frodo10@gmail.com -M test -a -s (S/../.././01|L/../../6/03)
/dev/sdb -d sat -o on -S on -m frodo10@gmail.com -M test -a -s (S/../.././01|L/../../6/03)
/dev/sdc -d sat -o on -S on -m frodo10@gmail.com -M test -a -s (S/../.././01|L/../../6/03)
…

Теперь рестартуем демон и смотрим на логи и в свой почтовый ящик.

root@s12:~# /etc/init.d/smartd restart
Stopping S.M.A.R.T. daemon: smartd.
Starting S.M.A.R.T. daemon: smartd.
root@s12:~# cat /var/log/smard.log
Mar 31 14:34:33 s12 smartd[14930]: smartd 5.41 2011-06-09 r3365 [x86_64-linux-3.8.0-29-generic] (local build)
Mar 31 14:34:33 s12 smartd[14930]: Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net
Mar 31 14:34:33 s12 smartd[14930]: Opened configuration file /etc/smartd.conf
Mar 31 14:34:33 s12 smartd[14930]: Configuration file /etc/smartd.conf parsed.
Mar 31 14:34:33 s12 smartd[14930]: Device: /dev/sda [SAT], opened
Mar 31 14:34:33 s12 smartd[14930]: Device: /dev/sda [SAT], ST31000340NS, S/N:9QJ2ADVC, WWN:5-000c50-00dd5f99b, FW:SN05, 1.00 TB
Mar 31 14:34:33 s12 smartd[14930]: Device: /dev/sda [SAT], found in smartd database.
Mar 31 14:34:33 s12 smartd[14930]: Device: /dev/sda [SAT], WARNING: There are known problems with these drives,
Mar 31 14:34:33 s12 smartd[14930]: see the following Seagate web pages:
Mar 31 14:34:33 s12 smartd[14930]: http://seagate.custkb.com/seagate/crm/selfservice/search.jsp?DocId=207931
Mar 31 14:34:33 s12 smartd[14930]: http://seagate.custkb.com/seagate/crm/selfservice/search.jsp?DocId=207963
Mar 31 14:34:33 s12 smartd[14930]: Device: /dev/sda [SAT], enabled SMART Attribute Autosave.
Mar 31 14:34:33 s12 smartd[14930]: Device: /dev/sda [SAT], enabled SMART Automatic Offline Testing.
Mar 31 14:34:33 s12 smartd[14930]: Device: /dev/sda [SAT], is SMART capable. Adding to "monitor" list.
Mar 31 14:34:33 s12 smartd[14930]: Device: /dev/sda [SAT], state read from /var/lib/smartmontools/smartd.ST31000340NS-9QJ2ADVC.ata.state
Mar 31 14:34:33 s12 smartd[14930]: Device: /dev/sdb [SAT], opened
Mar 31 14:34:33 s12 smartd[14930]: Device: /dev/sdb [SAT], ST31000340NS, S/N:9QJ5HB9J, WWN:5-000c50-019998158, FW:SN06, 1.00 TB
Mar 31 14:34:33 s12 smartd[14930]: Device: /dev/sdb [SAT], found in smartd database.
Mar 31 14:34:33 s12 smartd[14930]: Device: /dev/sdb [SAT], enabled SMART Attribute Autosave.
Mar 31 14:34:33 s12 smartd[14930]: Device: /dev/sdb [SAT], enabled SMART Automatic Offline Testing.
Mar 31 14:34:34 s12 smartd[14930]: Device: /dev/sdb [SAT], is SMART capable. Adding to "monitor" list.
Mar 31 14:34:34 s12 smartd[14930]: Device: /dev/sdc [SAT], opened
Mar 31 14:34:34 s12 smartd[14930]: Device: /dev/sdc [SAT], WDC WD1003FBYX-01Y7B0, S/N:WD-WCAW30367458, WWN:5-0014ee-2affa9695, FW:01.01V01, 1.00 TB
Mar 31 14:34:34 s12 smartd[14930]: Device: /dev/sdc [SAT], found in smartd database.
Mar 31 14:34:34 s12 smartd[14930]: Device: /dev/sdc [SAT], enabled SMART Attribute Autosave.
Mar 31 14:34:34 s12 smartd[14930]: Device: /dev/sdc [SAT], enabled SMART Automatic Offline Testing.
Mar 31 14:34:34 s12 smartd[14930]: Device: /dev/sdc [SAT], is SMART capable. Adding to "monitor" list.
Mar 31 14:34:34 s12 smartd[14930]: Monitoring 3 ATA and 0 SCSI devices
Mar 31 14:34:34 s12 smartd[14930]: Executing test of mail to frodo10@gmail.com ...
Mar 31 14:34:35 s12 smartd[14930]: Test of mail to frodo10@gmail.com: successful
Mar 31 14:34:35 s12 smartd[14930]: Device: /dev/sda [SAT], SMART Prefailure Attribute: 1 Raw_Read_Error_Rate changed from 79 to 80
Mar 31 14:34:35 s12 smartd[14930]: Device: /dev/sda [SAT], SMART Usage Attribute: 195 Hardware_ECC_Recovered changed from 48 to 47
Mar 31 14:34:35 s12 smartd[14930]: Device: /dev/sda [SAT], previous self-test was interrupted by the host with a reset
Mar 31 14:34:35 s12 smartd[14930]: Executing test of mail to frodo10@gmail.com...
Mar 31 14:34:37 s12 smartd[14930]: Test of mail to frodo10@gmail.com: successful
Mar 31 14:34:37 s12 smartd[14930]: Executing test of mail to frodo10@gmail.com  ...
Mar 31 14:34:37 s12 smartd[14930]: Test of mail to frodo10@gmail.com: successful
Mar 31 14:34:37 s12 smartd[14930]: Device: /dev/sdc [SAT], offline data collection was suspended by an interrupting command from host (auto:on)
Mar 31 14:34:37 s12 smartd[14930]: Device: /dev/sda [SAT], state written to /var/lib/smartmontools/smartd.ST31000340NS-9QJ2ADVC.ata.state
Mar 31 14:34:37 s12 smartd[14930]: Device: /dev/sdb [SAT], state written to /var/lib/smartmontools/smartd.ST31000340NS-9QJ5HB9J.ata.state
Mar 31 14:34:37 s12 smartd[14930]: Device: /dev/sdc [SAT], state written to /var/lib/smartmontools/smartd.WDC_WD1003FBYX_01Y7B0-WD_WCAW30367458.ata.state
Mar 31 14:34:37 s12 smartd[14989]: smartd has fork()ed into background mode. New PID=14989.
Mar 31 14:34:37 s12 smartd[14989]: file /var/run/smartd.pid written containing PID 14989

На почту должны прийти сообщения следующее типа:

This email was generated by the smartd daemon running on:

   host name: server01.homecorp.com
  DNS domain: homecorp.com
  NIS domain: (none)

The following warning/error was logged by the smartd daemon:

TEST EMAIL from smartd for device: /dev/sda [SAT]

For details see host's SYSLOG.

Если письмо не пришло, то смотрите логи. Если все ок, то опцию “-M test” можно заменить на -M diminishing, которое постоянно напоминать об ошибке (через каждых 2*N дней, т.е. 1-го числа, второго, четвертого, восьмого и т.д.) или вообще ее убрать, тогда письмо о проблеме придет только один раз, так что будьте осторожны и не потеряйте его.

Пример мониторинга дисков за Megaraid LSI 2108 RAID контроллером, которые не поддерживают атрибуты.

root@s09:~# vim /etc/smartd.conf
…
/dev/sda -d megaraid,0 -m frodo10@gmail.com -a -s (S/../.././01|L/../../6/03)
/dev/sda -d megaraid,1 -m frodo10@gmail.com -a -s (S/../.././01|L/../../6/03)
…

И последний пример с игнорированием неважных атрибутов.

root@s09:~# vim /etc/smartd.conf
…
/dev/sda -o on -S on -H -f -t -l error -l selftest -C 197 -U 198 -W 40,50 -R 5 -I 190 -I 194 -m test@gmail.com -s (S/../.././02|L/../../7/04)
…

Здесь проверяется статус здоровья диска (-H), с мониторингом статуса Usage(Old_age) атрибутов на статус “failure” (-f) и изменением значений Usage(Old_age) и Prefail атрибутов (-t), но игнорируются смена значений атрибутов связанных с температурой 190,194 (но приходит уведомление если значение температуры больше 40,50 – “-W”). Так же мониторим значение переназначенных (-R), помеченных битыми(-C) и неисправимых (-U) секторов. Кроме этого проверяется журнал ошибок и пройденных тестов (-l error -l selftest). Краткие тесты запускаются каждый день в 2 ночи, долгие – каждое воскресенье в 4 ночи (-s). Информация об ошибка шлется на почту (-m).

Тестируем работу smartd демона

smartd можно запустить в debug режиме для проверки настроек.

root@s12:~# smartd -d
smartd 5.41 2011-06-09 r3365 [x86_64-linux-3.8.0-29-generic] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net

Opened configuration file /etc/smartd.conf
Configuration file /etc/smartd.conf parsed.
Device: /dev/sda, type changed from 'scsi' to 'sat'
Device: /dev/sda [SAT], opened
Device: /dev/sda [SAT], ST31000340NS, S/N:9QJ2ADVC, WWN:5-000c50-00dd5f99b, FW:SN05, 1.00 TB
Device: /dev/sda [SAT], found in smartd database.
Device: /dev/sda [SAT], WARNING: There are known problems with these drives,
see the following Seagate web pages:

http://seagate.custkb.com/seagate/crm/selfservice/search.jsp?DocId=207931


http://seagate.custkb.com/seagate/crm/selfservice/search.jsp?DocId=207963

Device: /dev/sda [SAT], enabled SMART Attribute Autosave.
Device: /dev/sda [SAT], enabled SMART Automatic Offline Testing.
Device: /dev/sda [SAT], is SMART capable. Adding to "monitor" list.
Device: /dev/sda [SAT], state read from /var/lib/smartmontools/smartd.ST31000340NS-9QJ2ADVC.ata.state
Monitoring 1 ATA and 0 SCSI devices
Executing test of mail to virmagnavi2010@gmail.com ...
Test of mail to virmagnavi2010@gmail.com: successful
Device: /dev/sda [SAT], opened ATA device
Device: /dev/sda [SAT], SMART Usage Attribute: 195 Hardware_ECC_Recovered changed from 49 to 48
Device: /dev/sda [SAT], offline data collection was completed without error (auto:on)
Device: /dev/sda [SAT], previous self-test was interrupted by the host with a reset
Device: /dev/sda [SAT], state written to /var/lib/smartmontools/smartd.ST31000340NS-9QJ2ADVC.ata.state

В этом режиме можно проверить или правильно был настроен конфигурационный файл и проверить отправляется ли почта. Чтобы выйти с этого режима нужно нажать Ctrl+\. Используя Ctrl+C – файл конфигурации будет перечитан в реальном времени.
Так же можно запустить один раз проверку настроек использую директиву “-q onecheck” с указанием пути к конфигурационному файлу, или без него.

root@s12:~# smartd -c /path/to/smartd.conf -q onecheck

Можно также проверить настройку без конфигурационного файла, передавая нужную строку на STDIN smartd демона.

root@s12:~# echo "/dev/sda -a -m user@home,vir@gmail.com -M test" | smartd -c - -q onecheck

Вот и все.

S.M.A.R.T. (часть 8). Создание нового RAID6 под LSI 2108 Megaraid контроллером

$
0
0

SC847E16-R1K28LPB_specВ предыдущих статьях шла речь о настройка мониторинга различных рейд контроллеров используя специализированные утилиты, стандартный демон smard и его утилиту smartctl. Было рассмотрено не только мониторинг различными способами, но и приводились полезные команды для работы с RAID-ами(просмотр логов, создание нового рейда, подсветка диодов и тп.). Теперь хочу написать очень краткую заметку о добавлении нового RAID6 в уже существующий LSI 2108 (megaraid) контроллер.
Ситуация следующая: у нас есть супер сервер (SuperServer 6047R-E1R36N) в котором 36 HDD-разъёмов. Когда купили сервер – денег хватило только на 20 дисков по 4ТБ в связи с чем было создано два рейда – один на операционную систему из 2-х дисков в RAID1, все остальное на хранение файлов в RAID6. С созданием RAID1 и RAID6 при первой установке сервера проблем нет – там есть интуитивно понятный интерфейс для работы с megaraid контроллером – только кликай и выбирай мышкой нужный параметры. После успешной настройки и полгода стабильной работы – заканчивается место и нужно добавлять еще дисков. Пришли к двум решениям или расширять существующий RAID6 или же создавать новый. Обратились в Supermicro за советом – те сказали, что безопасней будет второй вариант (но очень хотелось испробовать первый).

Приступаем.Первым делом нужно установить megacli(если еще не установлено) – инструкция здесь. Далее узнаем какой номер адаптера, на котором будем создавать новый RAID.

root@sto# megacli Adpallinfo -aall | grep '^Adapter'
Adapter #0

Теперь, имея номер адаптера (их может бить несколько в зависимости от сервера), нужно узнать на какой плате(корпусе) у нас остались пустые разъёмы и номера этих разъёмов.

root@sto# megacli -PDlist -aall | grep -e '^Enclosure Device ID:' -e '^Slot Number:' -e 'Firmware state'
Enclosure Device ID: 20
Slot Number: 0
Firmware state: Online, Spun Up

Enclosure Device ID: 20
Slot Number: 1
Firmware state: Online, Spun Up

Enclosure Device ID: 20
Slot Number: 2
Firmware state: Online, Spun Up

Enclosure Device ID: 20
Slot Number: 3
Firmware state: Online, Spun Up

Enclosure Device ID: 20
Slot Number: 4
Firmware state: Online, Spun Up

Enclosure Device ID: 20
Slot Number: 5
Firmware state: Online, Spun Up

Enclosure Device ID: 20
Slot Number: 6
Firmware state: Online, Spun Up

Enclosure Device ID: 20
Slot Number: 7
Firmware state: Online, Spun Up

Enclosure Device ID: 20
Slot Number: 8
Firmware state: Online, Spun Up

Enclosure Device ID: 20
Slot Number: 9
Firmware state: Online, Spun Up

Enclosure Device ID: 20
Slot Number: 10
Firmware state: Online, Spun Up

Enclosure Device ID: 20
Slot Number: 11
Firmware state: Online, Spun Up

Enclosure Device ID: 20
Slot Number: 12
Firmware state: Online, Spun Up

Enclosure Device ID: 20
Slot Number: 13
Firmware state: Online, Spun Up

Enclosure Device ID: 20
Slot Number: 14
Firmware state: Online, Spun Up

Enclosure Device ID: 20
Slot Number: 15
Firmware state: Online, Spun Up

Enclosure Device ID: 20
Slot Number: 16
Firmware state: Online, Spun Up

Enclosure Device ID: 20
Slot Number: 17
Firmware state: Online, Spun Up

Enclosure Device ID: 20
Slot Number: 18
Firmware state: Online, Spun Up

Enclosure Device ID: 20
Slot Number: 19
Firmware state: Online, Spun Up

Enclosure Device ID: 20
Slot Number: 20
Firmware state: Hotspare, Spun down

Enclosure Device ID: 20
Slot Number: 21
Firmware state: Hotspare, Spun down

Enclosure Device ID: 20
Slot Number: 22
Firmware state: Hotspare, Spun down

Enclosure Device ID: 20
Slot Number: 23
Firmware state: Hotspare, Spun down

Enclosure Device ID: 21
Slot Number: 0
Firmware state: Hotspare, Spun down

Enclosure Device ID: 21
Slot Number: 1
Firmware state: Hotspare, Spun down

Enclosure Device ID: 21
Slot Number: 2
Firmware state: Hotspare, Spun down

Enclosure Device ID: 21
Slot Number: 3
Firmware state: Hotspare, Spun down

Enclosure Device ID: 21
Slot Number: 4
Firmware state: Hotspare, Spun down

Enclosure Device ID: 21
Slot Number: 5
Firmware state: Hotspare, Spun down

Enclosure Device ID: 21
Slot Number: 6
Firmware state: Hotspare, Spun down

Enclosure Device ID: 21
Slot Number: 7
Firmware state: Hotspare, Spun down

Enclosure Device ID: 21
Slot Number: 8
Firmware state: Hotspare, Spun down

Enclosure Device ID: 21
Slot Number: 9
Firmware state: Hotspare, Spun down

Enclosure Device ID: 21
Slot Number: 10
Firmware state: Hotspare, Spun down

Enclosure Device ID: 21
Slot Number: 11
Firmware state: Hotspare, Spun down

 

Везде где написано Firmware state: Hotspare, Spun down – это нужные адреса наших слотов, в которые добавлены новые 16 дисков. Теперь мы имеем всю нужную информацию для создания новых рейдов. В нашем случаи команда буде выглядеть так

root@sto# megacli -CfgLdAdd -r6 [20:20,20:21,22:22,22:23,21:0,21:1,21:2,21:3,21:4,21:5,21:6,21:7,21:8,21:9,21:10,21:11] -a0

Т.е. создается новый RAID6 на 0-м адаптере из списка дисков. Таким же способом можно создать RAID1,RAID5,RAID6 и остальные типы рейдов под LSI megaraid контроллером – требуется только адреса слотов.
После этого у нас появиться новый диск в папочке /dev, который можно форматировать в нужную файловую систему и маунтить.

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

root@sto# megacli -CfgLdAdd -r6 [20:20,20:21,22:22,22:23,21:0,21:1,21:2,21:3,21:4,21:5,21:6,21:7,21:8,21:9,21:10,21:11] -a0

Adapter 0: Configure Adapter Failed

FW error description: 
 The current operation is not allowed because the controller has data in cache for offline or missing virtual disks.  

Exit Code: 0x54

Чтобы исправить эту ошибку, нужно посмотреть кэш конфигураций контроллера.

root@sto# megacli -GetPreservedCacheList -a0
                                     
Adapter #0

Virtual Drive(Target ID 03): Missing.

Exit Code: 0x00

Как видим, у нас закэшировался логический диск с номером 3. Удаляем кэшированую запись.

root@sto# megacli -DiscardPreservedCache -L3 -a0
                                     
Adapter #0

Virtual Drive(Target ID 03): Preserved Cache Data Cleared.

Exit Code: 0x00

Еще раз проверяем или все гуд.

root@sto# megacli -GetPreservedCacheList -a0    
                                     
Adapter 0: No Virtual Drive has Preserved Cache Data.

Exit Code: 0x00

Теперь проблема создания нового устройства должна решиться.

Несколько раз проделывал такие махинации на megaraid контроллере и не было никаких проблем ни с сервером, ни с загрузкой сервера – все делалось на лету без бекапов и каких-то лишних манипуляций с существующим контентом. Т.е. сборка нового рейда не влияет на работоспособность и производительность сервера. В следующей статье пойдет речь о сборке рейда под HP/Compaq Smart Array контроллером.

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

$
0
0

raid-hp-logoВ продолжение знакомства с RAID-контроллерами, решил написать короткую статью о создании нового логического диска больше 2ТБ под HP raid контроллером используя hpacucli. Если данная тулза не установлена, пройдитесь по этой статье.

Для начала посмотрим какие у нас есть диски.

root@sto:~# hpacucli ctrl all show config

Smart Array P410 in Slot 1                (sn: PACCR0L9VZ31Q7S)

   array A (SATA, Unused Space: 0  MB)

      logicaldrive 1 (2.7 TB, RAID 1, OK)
          physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SATA, 3 TB, OK)
          physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SATA, 3 TB, OK)

   unassigned
      physicaldrive 1I:1:3 (port 1I:box 1:bay 3, SATA, 3 TB, OK)
      physicaldrive 1I:1:4 (port 1I:box 1:bay 4, SATA, 3 TB, OK)
      physicaldrive 1I:1:5 (port 1I:box 1:bay 5, SATA, 3 TB, OK)
      physicaldrive 1I:1:6 (port 1I:box 1:bay 6, SATA, 3 TB, OK)
      physicaldrive 1I:1:7 (port 1I:box 1:bay 7, SATA, 3 TB, OK)
      physicaldrive 1I:1:8 (port 1I:box 1:bay 8, SATA, 3 TB, OK)
      physicaldrive 1I:1:9 (port 1I:box 1:bay 9, SATA, 3 TB, OK)
      physicaldrive 1I:1:10 (port 1I:box 1:bay 10, SATA, 3 TB, OK)

Как видим, у нас есть 8 дисков по 3ТВ каждый, из которых можно слепить один серьезный диск. С этого вывода нам нужен номер слота(Slot 1) и идентификаторы дисков(1I:1:3, 1I:1:4,… т.п.).
Создаем новый RAID5 (по аналогии можно создавать любой тип рейдов) из всех дисков.

root@sto:~# hpacucli ctrl slot=1 create type=ld drives=1I:1:3,1I:1:4,1I:1:5,1I:1:6,1I:1:7,1I:1:8,1I:1:9,1I:1:10 raid=5

Все интуитивно понятно: создать логическое устройство type=ld на контроллере со слотом slot= из дисков drives= в конфигурации raid=5.

Теперь у нас появиться новое блочное устройство, которое нужно разметить и смонтировать. Так как размер диска превышает 2TB – MBR с ним не справиться. Тулза fdisk в данном случаи может ругаться, что размер диска очень большой, так что обрежу ка я его до максимально возможного, т.е. 2ТВ. Проверяем.

root@sto:~# fdisk /dev/sdb

WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted.

WARNING: The size of this disk is 21.0 TB (21003913093120 bytes).
DOS partition table format can not be used on drives for volumes
larger than (2199023255040 bytes) for 512-byte sectors. Use parted(1) and GUID
partition table format (GPT).

The device presents a logical sector size that is smaller than
the physical sector size. Aligning to a physical sector (or optimal
I/O) size boundary is recommended, or performance may be impacted.

Command (m for help): p

Disk /dev/sdb: 21003.9 GB, 21003913093120 bytes
255 heads, 63 sectors/track, 2553580 cylinders, total 41023267760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
Using default value 1
First sector (2048-4294967295, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-4294967294, default 4294967294):
Using default value 4294967294

Command (m for help): p

Disk /dev/sdb: 21003.9 GB, 21003913093120 bytes
255 heads, 63 sectors/track, 2553580 cylinders, total 41023267760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048  4294967294  2147482623+  83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Здесь мы создали один раздел, который оккупирует все место размером в 21ТВ и увидели предупреждение, в котором пишут, что нужно использовать утилиту parted(еще успеем).

Далее форматируем полученный раздел и маунтим.


root@sto:~# mkfs.ext4 /dev/sdb1
mke2fs 1.42 (29-Nov-2011)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
134217728 inodes, 536870655 blocks
26843532 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
16384 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
        102400000, 214990848, 512000000

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

root@sto:~# mount /dev/sdb1 /mnt/
root@sto:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       2.8T   43G  2.6T   2% /
udev             32G  4.0K   32G   1% /dev
tmpfs            13G  236K   13G   1% /run
none            5.0M     0  5.0M   0% /run/lock
none             32G     0   32G   0% /run/shm
/dev/sdb1       2.0T   31G  1.9T   2% /mnt

Таки да. Как видим, размер смонтированого диска – 2ТВ. Чтобы исправить эту проблему – нужно использовать… правильно вы говорите – parted.
Отмонтируем диск и спустим на него parted тулзу.

root@sto:~# umount /mnt
root@sto:~# parted /dev/sdb
GNU Parted 2.3
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
     (parted) rm 1
     (parted) mklabel gpt
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue?
Yes/No? yes
     (parted) mkpart primary 0GB 21.0TB
     (parted) print
Model: HP LOGICAL VOLUME (scsi)
Disk /dev/sdb: 21.0TB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  21.0TB  21.0TB  ext4         primary

     (parted) quit
Information: You may need to update /etc/fstab.

Здесь мы создали новый раздел без всяких предупреждений, где нас вежливо попросили обновить fstab после завершения. Теперь проверяем, что получилось.

root@sto:~# fdisk -l

WARNING: GPT (GUID Partition Table) detected on '/dev/sda'! The util fdisk doesn't support GPT. Use GNU Parted.

Disk /dev/sda: 3000.6 GB, 3000559427584 bytes
255 heads, 63 sectors/track, 364797 cylinders, total 5860467632 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1  4294967295  2147483647+  ee  GPT
Partition 1 does not start on physical sector boundary.

WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted.

Disk /dev/sdb: 21003.9 GB, 21003913093120 bytes
255 heads, 63 sectors/track, 2553580 cylinders, total 41023267760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1  4294967295  2147483647+  ee  GPT
Partition 1 does not start on physical sector boundary.

fdisk говорит, что есть еще один диск на 21ТВ. Теперь создадим файловую систему и замаунтим.

root@sto:~# mkfs.ext4 /dev/sdb1
mke2fs 1.42 (29-Nov-2011)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
320495616 inodes, 5127908096 blocks
256395404 blocks (5.00%) reserved for the super user
First data block=0
156492 block groups
32768 blocks per group, 32768 fragments per group
2048 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
        102400000, 214990848, 512000000, 550731776, 644972544, 1934917632,
        2560000000, 3855122432

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

root@sto:~# mount /dev/sdb1 /mnt/
root@sto:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       2.8T   43G  2.6T   2% /
udev             32G  4.0K   32G   1% /dev
tmpfs            13G  236K   13G   1% /run
none            5.0M     0  5.0M   0% /run/lock
none             32G     0   32G   0% /run/shm
/dev/sdb1        20T   75G   19T   1% /mnt

Теперь все в порядке. Спасибо за внимание. Пробуйте на практике.


S.M.A.R.T. (часть 10). Улучшенный мониторинг дисков под LSI MegaRAID контроллером

$
0
0

LSIВ предыдущий статье шла речь о настройке мониторинга дисков за LSI MegaRAID контроллером используя megacli и smartctl утилиты. Основной недостаток использования этих инструментов – это невозможность определить название логического диска и его соответствие виртуальному диску в MegaRAID-e. Т.е. если возникла проблема с физическим диском под MegaRAID контроллером – нам нужно запускать megacli, смотреть к какому виртуальному устройству он принадлежит, и потом искать в самой ОС – какой это логический диск.
Чтобы избежать всей этой рутины удальцы Adam Cecile и Vincent S. Cojot написали python скрипт, который парсит вывод megacli и выводит форматированный вывод о статусе логических и физических дисков и информацией о их принадлежности. Скрипт можно скачать здесь.
Для его нормальной работы – нужна megacli утилите. Для установки megacli сомой последней версии можно перейти на сайт разработчика, ввести в поиску “megacli” и скачать архив с готовым бинарником. После этого закинуть к исполняемым скриптам (в моем случаи – /usr/sbin/megacli). Осталось прописать путь к megacli в скрипте.

root@s19:~# less megaraid_status.py | grep megacli
…
def_megaclipath = "/usr/sbin/megacli"
…

Теперь запускаем скрипт.

root@s19:~# python megaraid_status.py
-- Controller information --
-- ID | H/W Model         | RAM    | Temp | Firmware
c0    | LSI MegaRAID ROMB | 1024MB | 57C  | FW: 23.18.0-0013

-- Array information --
-- ID | Type   |    Size |  Strpsz |   Flags | DskCache |   Status |  OS Path | InProgress
c0u0  | RAID-1 |    278G |   64 KB |   RA,WT |  Default |  Optimal | /dev/sda | None
c0u1  | RAID-0 |    930G |   64 KB |   RA,WB |  Enabled |  Optimal | /dev/sdb | None
c0u2  | RAID-5 |   2725G |   64 KB |   RA,WT |  Default |  Optimal | /dev/sdc | None
c0u3  | RAID-0 |    111G |   64 KB | ADRA,WB |  Enabled |  Optimal | /dev/sdd | None

-- Disk information --
-- ID   | Type | Drive Model                                        | Size     | Status          | Speed    | Temp | Slot ID  | Device ID
c0u0p0  | HDD  | SEAGATE ST300MM0026 0001S0K263T8                   | 278.4 Gb | Online, Spun Up | 6.0Gb/s  | 31C  | [252:0]  | 12
c0u0p1  | HDD  | SEAGATE ST300MM0026 0001S0K23LQQ                   | 278.4 Gb | Online, Spun Up | 6.0Gb/s  | 30C  | [252:1]  | 13
c0u1p0  | SSD  | S21CNXAG506746T Samsung SSD 850 EVO 1TB EMT01B6Q   | 930.3 Gb | Online, Spun Up | 6.0Gb/s  | N/A  | [252:3]  | 0
c0u2p0  | HDD  | SEAGATE ST91000640SS 00049XG5VT6F                  | 930.3 Gb | Online, Spun Up | 6.0Gb/s  | 30C  | [252:4]  | 8
c0u2p1  | HDD  | SEAGATE ST91000640SS 00049XG5VYP6                  | 930.3 Gb | Online, Spun Up | 6.0Gb/s  | 30C  | [252:5]  | 11
c0u2p2  | HDD  | SEAGATE ST91000640SS 00049XG690HG                  | 930.3 Gb | Online, Spun Up | 6.0Gb/s  | 31C  | [252:6]  | 10
c0u2p3  | HDD  | SEAGATE ST91000640SS 00049XG690W8                  | 930.3 Gb | Online, Spun Up | 6.0Gb/s  | 33C  | [252:7]  | 9
c0u3p0  | SSD  | S1FZNEAG514429 SAMSUNG MZ7WD120HCFV-00003 DXM9203Q | 110.8 Gb | Online, Spun Up | 6.0Gb/s  | N/A  | [252:2]  | 2

Как видим, скрипт выводит всю нужную информацию о логический и физических дисков. Видно, какой тип физического диска, его модель и серийный номер, статус, слот, ID и к какому логическому диску он принадлежит. По логическим дискам видно политику кэша, статус, тип рейда, размер и название блочного устройства, как видно в операционной системе.
Покажу также пример вывода с проблемным диском.

root@s11:~# python megaraid_status.py
-- Controller information --
-- ID | H/W Model          | RAM    | Temp | Firmware
c0    | Supermicro SMC2108 | 512MB  | N/A  | FW: 12.9.0-0033

-- Array information --
-- ID | Type   |    Size |  Strpsz | Flags | DskCache |   Status |  OS Path | InProgress
c0u0  | RAID-5 |   2725G |   64 KB | RA,WT |  Default | Degraded | /dev/sda | None
c0u1  | RAID-6 |   7271G |   64 KB | RA,WT |  Default |  Optimal | /dev/sdb | None
c0u2  | RAID-1 |     55G |   64 KB | RA,WT |  Default |  Optimal | /dev/sdc | None

-- Disk information --
-- ID   | Type | Drive Model                               | Size     | Status          | Speed    | Temp | Slot ID  | Device ID
c0u0p0  | HDD  | IBM-ESXSST31000424SS BC219WK18XWW0128BC21 | 930.3 Gb | Online, Spun Up | 6.0Gb/s  | 30C  | [4:0]    | 16
c0u0p1  | HDD  | IBM-ESXSST31000424SS BC219WK1E4RT0128BC21 | 930.3 Gb | Online, Spun Up | 6.0Gb/s  | 29C  | [4:1]    | 17
c0u0p2  | HDD  | SEAGATE ST1000NM0001 0002Z1N4K2PY         | 930.3 Gb | Failed          | 6.0Gb/s  | 29C  | [4:2]    | 15
c0u0p3  | HDD  | SEAGATE ST31000424SS 00059WK16RV7         | 930.3 Gb | Online, Spun Up | 6.0Gb/s  | 28C  | [4:3]    | 2
c0u1p0  | HDD  | SEAGATE ST2000NM0001 0002Z1P2TNGP         | 1.817 TB | Online, Spun Up | 6.0Gb/s  | 32C  | [4:6]    | 12
c0u1p1  | HDD  | SEAGATE ST2000NM0001 0002Z1P2TNPA         | 1.817 TB | Online, Spun Up | 6.0Gb/s  | 32C  | [4:7]    | 13
c0u1p2  | HDD  | SEAGATE ST2000NM0001 0002Z1P2TD37         | 1.817 TB | Online, Spun Up | 6.0Gb/s  | 30C  | [4:8]    | 14
c0u1p3  | HDD  | SEAGATE ST2000NM0001 0002Z1P2T63H         | 1.817 TB | Online, Spun Up | 6.0Gb/s  | 34C  | [4:9]    | 9
c0u1p4  | HDD  | SEAGATE ST2000NM0001 0002Z1P2TML0         | 1.817 TB | Online, Spun Up | 6.0Gb/s  | 32C  | [4:10]   | 10
c0u1p5  | HDD  | SEAGATE ST2000NM0001 0002Z1P2E4KH         | 1.817 TB | Online, Spun Up | 6.0Gb/s  | 32C  | [4:11]   | 11
c0u2p0  | SSD  | OCZ-2TF2WV2T3068D9B1OCZ-AGILITY3 2.22     | 54.9 Gb  | Online, Spun Up | 6.0Gb/s  | N/A  | [4:4]    | 7
c0u2p1  | SSD  | OCZ-FF73P3DT9GPQD2B5OCZ-AGILITY3 2.22     | 54.9 Gb  | Online, Spun Up | 6.0Gb/s  | N/A  | [4:5]    | 8

There is at least one disk/array in a NOT OPTIMAL state.

Если для мониторинга вы используете Nagios, то скрипт может запускаться в режиме Nagios.

root@s11:~# python megaraid_status.py --nagios
RAID ERROR - Arrays: OK:2 Bad:1 - Disks: OK:11 Bad:1

Если этого вывода в мониторинг системе вам не достаточно, то можете подредактировать python скрипт. Или же написать маленький bash скрипт для парсинга вывода. К примеру такой.

root@s19:~# cat megaraid.sh
#!/bin/bash
ERROR_COUNT=0
get_disk_errors() {
while read deviceid_with_errors_count
do
    disk_id=$(echo "$deviceid_with_errors_count" | awk "{if(\$2 > 20) print \$1}")
    if [ -n "$disk_id" ]
    then
        #echo "Disk with Device ID: $disk_id has more then 20 bad blocks"
        failed_item="Disk with Device ID: $disk_id has more then 20 bad blocks\n${failed_item}"
        let "ERROR_COUNT += 1"
    fi
done < <(megacli -ldpdinfo -aALL | grep -E '^Media Error|Device Id:' | awk '{print $NF}' | paste -d' ' - -)
}

get_vdpd_status() {
    stat=`/path/to/megaraid_status.py`
    VD_status_headers=`echo "$stat" | grep -A 1 'Array information'`
    PD_status_headers=`echo "$stat" | grep -A 1 'Disk information'`
    VD_status=`echo "$stat" | grep -E '^c[0-9]u[0-9] ' | grep -v 'Optimal'`
    PD_status=`echo "$stat" | grep -E '^c[0-9]u[0-9]p[0-9] ' | grep -v 'Online, Spun Up'`
    if [ -n "$VD_status" -o -n "$PD_status" ]
    then
        failed_item="\n$VD_status_headers\n$VD_status\n$PD_status_headers\n$PD_status\n${failed_item}"
        let "ERROR_COUNT += 1"
    fi
}

# Get status of all Virtual and Physical drives
get_vdpd_status
# Get Media errors count for each Physical drive
get_disk_errors

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

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

root@s11:~# bash megaraid.sh
1

root@s19:~# bash megaraid.sh
0

Если запустить с опцией “log”, то мы увидим проблемные диски.

root@s11:~# bash megaraid.sh log

-- Array information --
-- ID | Type   |    Size |  Strpsz | Flags | DskCache |   Status |  OS Path | InProgress
c0u0  | RAID-5 |   2725G |   64 KB | RA,WT |  Default | Degraded | /dev/sda | None
-- Disk information --
-- ID   | Type | Drive Model                               | Size     | Status          | Speed    | Temp | Slot ID  | Device ID
c0u0p2  | HDD  | SEAGATE ST1000NM0001 0002Z1N4K2PY         | 930.3 Gb | Failed          | 6.0Gb/s  | 29C  | [4:2]    | 15

Также, в этот bash скрипт добавлена проверка на bad блоки дисков под MegaRAID котроллером: если их количество больше 20-ти, то мы увидим ID проблемного диска.
На этом все. Пробуйте.

Установка и настройка cacti с нуля

$
0
0

cactiПомню время, когда мне поставили таск – установить и настроить cacti с 95th Percentile графиками и возможностью агрегирования графиков. И эти воспоминания нагнали на меня печаль… Сначала пробовал установить и настроить cacti через ppa репы – вылезла куча проблем с симлинками, правами и т.п. Потом ставил напрямую с официальных реп – проблем меньше, но нужно было поиграться с патчами, так как версия программы немного устаревшая. Искал инструкции по установке с исходников, но под Ubuntu все было очень сыро и сталкивался с теми же проблемами. И тогда решился взяться за официальная документация, которая писала о том, что нужно ставить в целом независимо от дистрибутива.
Решил поделиться набранным опытом по установке cacti 0.8.8f (последняя на данный момент версия) под дистрибутивом Ubuntu 12.04.
Устанавливаем нужные пакеты.

root@cacti:~# apt-get install apache2 php5 php5-mysql php5-snmp snmp php5-gd rrdtool mysql-server php5-ldap zip unzip

Далее проверяем, или у нас есть все нужные для роботы cacti php модули. Их должно быть, как минимум семь.

root@cacti:~# php -m | egrep '^(mysql|snmp|xml|session|sockets|ldap|gd)$'
gd
ldap
mysql
session
snmp
sockets
xml

Все нужные модули есть. Теперь качаем исходный код cacti и распакуем в локальную папку. На данный момент – это версия 0.8.8f.

root@cacti:~# wget http://www.cacti.net/downloads/cacti-0.8.8f.tar.gz
root@cacti:~# tar xzvf cacti-0.8.8f.tar.gz

Переходим к подготовки mysql базы данных. Для начала создадим БД.

root@cacti:~# mysqladmin -p -u root create cacti
Enter password:

Следующим делом нужно заполнить структуру новосозданной cacti базы.

root@cacti:~# mysql -p -u root cacti < cacti-0.8.8f/cacti.sql  
Enter password: 

И добавить юзера с правами на администрирование.

 
root@cacti:~# mysql -p -u root -e 'GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY "your_password"; flush privileges;'    
Enter password: 

Работа с базой данных завершена, теперь осталось прописать настройки коннекта к БД в конфигурации cacti.

 
root@cacti:~# vim cacti-0.8.8f/include/config.php 
… 
$database_type = "mysql"; 
$database_default = "cacti"; 
$database_hostname = "localhost"; 
$database_username = "cactiuser"; 
$database_password = "your_password"; 
$database_port = "3306"; 
$database_ssl = false; 
… 

Далее переносим странички cacti в папку /var/www (в папку, где будут храниться исходники сайта) и выставляем владельца и группу www-data (пользователь, от которого запущен веб-сервер).

 
root@cacti:~# rsync -aP cacti-0.8.8f/ /var/www/cacti/ root@cacti:~# chown -R www-data:www-data /var/www/cacti 

Еще нужно добавить cron для работы poller-a и поставить ему права на исполнение.

 
root@cacti:~# echo '*/5 * * * * www-data php /var/www/cacti/poller.php > /dev/null 2>&1' > /etc/cron.d/cacti
root@cacti:~# chmod +x /var/www/cacti/poller.php

Последним штрихом перезагружаем веб-сервер.

root@cacti:~# /etc/init.d/apache2 restart
 * Restarting web server apache2                                                ... waiting                                                            [ OK ]

Последующая установка cacti будет проходить через веб-интерфейс по ссылке http://server_ip/cacti/.
При переходе, вы должны увидеть следующею картину (рис. 1).

cacti1
Рисунок 1 – Первый запуск cacti через Веб-интерфейс

Читаем и жмем Далее. Теперь у нас спрашивают, чего мы хотим сделать – обновить или установить cacti (рис. 2). В нашем случаи – установить. Выбираем и жмем Далее.

cacti2
Рисунок 2 – Выбор типа инсталляции

Теперь вы должны увидеть и подредактировать (если нужно) пути к rrdtool, php, snmp и т.п. (рис. 3).

cacti3
Рисунок 3 – Настройка вспомогательных программ

Если все гуд – жмем Далее и смотрим на удачное завершение установки cacti (рис. 4).

cacti4
Рисунок 4 – Веб-интерфейс cacti по завершению установки

Теперь вводим логин и пароль установленный по умолчанию – admin/admin, и вам сразу понадобиться изменить пароль по умолчанию (рис. 5).

cacti5
Рисунок 5 – Запрос на смену пароля

После введения нового пароля вы попадете в cacti GUI. Теперь cacti готов к работе.
Далее установим spine поллер под cacti 0.8.8f. Качаем и распаковуем в локальную папку.

root@cacti:~# wget http://www.cacti.net/downloads/spine/cacti-spine-0.8.8f.tar.gz
root@cacti:~# tar xzvf cacti-spine-0.8.8f.tar.gz

Устанавливаем нужные для компиляции и работы пакеты.

root@cacti:~# apt-get install libmysqlclient-dev libsnmp-dev automake libtool make

Компилируем.

root@cacti:~# cd cacti-spine-0.8.8f
root@cacti:~/cacti-spine-0.8.8f# aclocal
root@cacti:~/cacti-spine-0.8.8f# libtoolize --force
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, `config'.
libtoolize: linking file `config/ltmain.sh'
libtoolize: putting macros in AC_CONFIG_MACRO_DIR, `m4'.
libtoolize: linking file `m4/libtool.m4'
libtoolize: linking file `m4/ltoptions.m4'
libtoolize: linking file `m4/ltsugar.m4'
libtoolize: linking file `m4/ltversion.m4'
libtoolize: linking file `m4/lt~obsolete.m4'
libtoolize: Consider adding `-I m4' to ACLOCAL_AMFLAGS in Makefile.am.
root@cacti:~/cacti-spine-0.8.8f# autoheader
root@cacti:~/cacti-spine-0.8.8f# autoconf
root@cacti:~/cacti-spine-0.8.8f# automake
root@cacti:~/cacti-spine-0.8.8f# ./configure
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
…
…
checking for Solaris/Irix gethostbyname_r... no
checking for HP-UX gethostbyname_r... no
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config/config.h
config.status: executing depfiles commands
config.status: executing libtool commands

root@cacti:~/cacti-spine-0.8.8f# make
source='sql.c' object='sql.o' libtool=no \
        DEPDIR=.deps depmode=none /bin/bash ./config/depcomp \
        gcc -DHAVE_CONFIG_H -I. -I./config     -I/usr/include/mysql -g -O2 -c sql.c
source='spine.c' object='spine.o' libtool=no \
        DEPDIR=.deps depmode=none /bin/bash ./config/depcomp \
        gcc -DHAVE_CONFIG_H -I. -I./config     -I/usr/include/mysql -g -O2 -c spine.c
source='util.c' object='util.o' libtool=no \
…
…
        DEPDIR=.deps depmode=none /bin/bash ./config/depcomp \
        gcc -DHAVE_CONFIG_H -I. -I./config     -I/usr/include/mysql -g -O2 -c error.c
/bin/bash ./libtool --tag=CC   --mode=link gcc  -I/usr/include/mysql -g -O2  -lpthread -lm  -o spine sql.o spine.o util.o snmp.o locks.o poller.o nft_popen.o php.o ping.o keywords.o error.o  -lnetsnmp -lmysqlclient_r
libtool: link: gcc -I/usr/include/mysql -g -O2 -o spine sql.o spine.o util.o snmp.o locks.o poller.o nft_popen.o php.o ping.o keywords.o error.o  -lpthread -lm /usr/lib/libnetsnmp.so -lmysqlclient_r

root@cacti:~/cacti-spine-0.8.8f# make install
make[1]: Entering directory `/home/vagrant/cacti-spine-0.8.8f'
test -z "/usr/local/spine/bin" || /bin/mkdir -p "/usr/local/spine/bin"
  /bin/bash ./libtool   --mode=install /usr/bin/install -c spine '/usr/local/spine/bin'
libtool: install: /usr/bin/install -c spine /usr/local/spine/bin/spine
test -z "/usr/local/spine/etc" || /bin/mkdir -p "/usr/local/spine/etc"
 /usr/bin/install -c -m 644 spine.conf.dist '/usr/local/spine/etc'
make[1]: Leaving directory `/home/vagrant/cacti-spine-0.8.8f'

Из полученного вывода видно, что бинарник spin-a лежит по пути /usr/local/spine/bin/spine, а конфигурация находиться здесь – /usr/local/spine/etc/spine.conf.dist. Чтобы cacti мог его использовать, нужно переименовать и отредактировать spine.conf и прописать путь к spine в GUI. Для начала переименуем файл конфигураций и добавим доступ к базе.

root@cacti:~/cacti-spine-0.8.8f# mv /usr/local/spine/etc/{spine.conf.dist,spine.conf}
root@cacti:~/cacti-spine-0.8.8f# vim /usr/local/spine/etc/spine.conf
…
DB_Host         localhost
DB_Database     cacti
DB_User         cactiuser
DB_Pass         your_password
DB_Port         3306
…

Теперь сразу проверим spine конфигурацию с консоли.

root@cacti:/usr/local/spine/bin# cd /usr/local/spine/bin/
root@cacti:/usr/local/spine/bin# ./spine -V 5 -R

Если вы не получите ни единой строчки вывода – значит проблемы с доступом к базе (пересмотрите конфигурацию spine.conf).
Теперь осталось прописать путь к spine и выбрать в качестве поллера по умолчанию. Логинимся в веб-интерфейс cacti и переходим в Configuration -> Settings -> Paths или по прямой ссылке http://server_ip/cacti/settings.php?tab=path, прописываем путь к spine (в нашем случаи /usr/local/spine/bin/spine) и Сохраняем все (рис. 6).

cacti6
Рисунок 6 – Добавление Spine Path через Веб-интерфейс

Осталось активировать новый тип поллера. Идем во вкладку Poller и выбираем spine (рис.7).

cacti7
Рисунок 7 – Установка Spine поллером по умолчанию

Сохраняем, ждем 5-10 минут и смотрим логи на наличие ошибок Utilities -> System Utilities -> View Cacti Log File (рис. 8).

cacti8
Рисунок 8 – Вид cacti логов в Веб-интерфейсе

Как видно, проблем нет – и все данные нормально обновляться новым методом spine.
В cacti версии 0.8.8f продолжает присутствовать проблема с 64 битными счетчиками для 95th Percentile и Total Bandwidth графиков. Чтобы ее исправить, нужно добавить новый темплейт. Я его когда-то нашел и скачал на cacti форуме, но где точно – уже не могу найти. Можете его скачать здесь.
Теперь его просто нужно добавить в cacti. Переходим в Import/Export -> Import Templates или по ссылке http://server_ip/cacti/templates_import.php, выбираем файл и жмем Import (рис. 9).

cacti9
Рисунок 9 – Добавление темплейта с 64-битными счетчиками

И получаем такой результат (рис. 10).

cacti10
Рисунок 10 – Успешная импортация нового темплейта

Теперь, при создании графиков по статистике сетевых интерфейсов у нас появится In/Out Bits with 95th Percentile (64-bit Counters) и In/Out Bits with Total Bandwidth (64-bit Counters) (рис. 11).

cacti11
Рисунок 11 – Вид новых 64-битных счетчиков

На последок добавим aggregate и weathermap плагины.
Aggregate. Этот плагин используется в cacti для объединения нескольких графиком в один. К примеру, если нужно увидеть сколько входящего и исходящего трафика генерирует весь CDN в целом, а не его отдельный сервер.
Переходим в папку с cacti плагинами и качаем aggregate последней версии.

root@cacti:~/cacti-spine-0.8.8f# cd /var/www/cacti/plugins/
root@cacti:/var/www/cacti/plugins# wget http://docs.cacti.net/_media/plugin:aggregate-v0.75.tgz -O aggregate-v0.75.tgz

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

root@cacti:/var/www/cacti/plugins# tar xzvf aggregate-v0.75.tgz
aggregate/
aggregate/setup.php
aggregate/aggregate_functions.php
aggregate/color_templates_items.php
aggregate/aggregate.php
aggregate/color_templates.php
aggregate/README
aggregate/aggregate_manual.pdf
aggregate/LICENSE
aggregate/color_html.php

root@cacti:/var/www/cacti/plugins# rm aggregate-v0.75.tgz
root@cacti:/var/www/cacti/plugins# chown -R www-data:www-data aggregate/

Теперь осталось перейти в веб-интерфейс, установить и активировать плагин.
Идем в Configuration -> Plugin Management и нажимаем на стрелочку в поле Actions напротив Aggregate плагина для установки (рис. 12).

cacti12
Рисунок 12 – Установка aggregate плагина через Веб-интерфейс

После чего нужно нажать на зеленую стрелочку для активации (рис. 13).

cacti13
Рисунок 13 – Активация aggregate плагина

Плагин активирован. Как им пользоваться можете посмотреть в прилагаемом с исходниками мануале.

Weathermap. Этот плагин используется в cacti для построения карты сети с визуализацией всех сетевых хопов и загрузки каналов. Есть много статей с описанием и примерами, поэтому рассмотрим только установку и активацию.
Переходим в папку с cacti плагинами и качаем weathermap архив.

root@cacti:/var/www/cacti/plugins# wget http://network-weathermap.com/files/php-weathermap-0.97c.zip

Распаковуем и удаляем архив.

root@cacti:/var/www/cacti/plugins# unzip php-weathermap-0.97c.zip
root@cacti:/var/www/cacti/plugins# rm php-weathermap-0.97c.zip

Меняем владельца и группу для всех файлов и включаем визуальный редактор weathermap.

root@cacti:/var/www/cacti/plugins# chown -R www-data:www-data weathermap/
root@cacti:/var/www/cacti/plugins# vim weathermap/editor.php
...
$ENABLED=true;
...

Теперь только осталось перейти в веб-интерфейс и активировать плагин.
Идем в Configuration -> Plugin Management и нажимаем на стрелочку в поле Actions напротив Weathermap плагина для активации (рис. 14).

cacti15
Рисунок 14 – Активация weathermap плагина

Плагин активирован. Как им пользоваться можете посмотреть на официальных страничках проекта.
Осталось только добавить хосты для мониторинга – удачи.

Cacti. Обновление до последней версии

$
0
0

cacti2На продакшине у нас неплохо работал cacti 0.8.8b. Так как он использовался для мониторинга наших серверов все было отлично. Но пришел таск по добавлению мониторинга трафика для клиентских машин. Проблем с добавлением не было, но когда мониторинг нода падала – мы теряли информацию. Если раньше нам не столь важны были графики, то после добавления клиентских серверов – это стало необходимо. Пришлось создавать кластер из нескольких cacti серверов и решили заодно перейти на последнею на данный момент версию – 0.8.8f. О кластере мы поговорив в следующей статье, сейчас же речь пойдет об обновлении cacti до последней версии 0.8.8f под дистрибутивом Ubuntu 14.04 (аналогичные действия идут под Ubuntu 12.04).

1 Входные данные

В статье будут использоваться следующие переменные (значения у каждого свои).

Имя переменной

Значение переменной

cacti_mysqldb_name cacti
cacti_mysql_username cactiuser
cacti_mysql_pass %cacti2016
mysql_ip_address localhost
mysql_port 3306
cacti_old_sources_path /usr/share/cacti
cacti_new_sources_path /var/www/cacti_new

2 Настройка и обновление cacti

2.1 Подготовка

Временно выключаем поллер. Переходим в веб-интерфейс и убираем галочку.
cacti2_1

Делаем бекап базы и страниц старой cacti системы.

root@cacti-main:~# mysqldump --max_allowed_packet=512M -u${cacti_mysql_username} -p${cacti_mysql_pass} ${cacti_mysqldb_name} | gzip > `date +cacti.sql.%Y-%m-%d.gz`
root@cacti-main:~# tar -czf `date +cacti.site.%Y-%m-%d.tar.gz` ${cacti_old_sources_path}
root@cacti-main:~# ls -l
-rw-r--r-- 1 root         root         40453046 Mar 17 15:10 cacti.site.2016-03-17.tar.gz
-rw-r--r-- 1 root         root           121028 Mar 17 15:12 cacti.sql.2016-03-17.gz

Далее качаем исходники последней cacti системы (0.8.8f на данный момент) и распаковуем архив.

root@cacti-main:~# wget http://www.cacti.net/downloads/cacti-0.8.8f.tar.gz
root@cacti-main:~# tar -xzvf cacti-0.8.8f.tar.gz

У нас есть два варианта деплоя (выбирайте нужный в зависимости от вашей ситуации).

2.1.1 Мониторинг система находиться на том же сервере

Создаем папку для нового сайта и копируем туда исходники последней cacti 0.8.8f системы.

root@cacti-main:~# mkdir ${cacti_new_sources_path}
root@cacti-main:~# rsync -avP cacti-0.8.8f/ ${cacti_new_sources_path}/

Далее нужно скопировать scripts, resource, plugins и rra папки со старой системы в новую.

root@cacti-main:~# for folder in scripts resource plugins rra; do rsync -avP ${cacti_old_sources_path}/site/${folder}/ ${cacti_new_sources_path}/${folder}/; done

Убеждаемся, что права на файлы и модификаторы доступа такие как нужно по новому пути.

root@cacti-main:~# chmod +x ${cacti_new_sources_path}/poller.php
root@cacti-main:~# chown -R www-data:www-data ${cacti_new_sources_path}

База данных осталась та же с теми же доступами, так что там делать нечего.
Качаем новый spine поллер.

root@cacti-main:~# wget http://www.cacti.net/downloads/spine/cacti-spine-0.8.8f.tar.gz
root@cacti-main:~# tar xzvf cacti-spine-0.8.8f.tar.gz

Для компиляции нам нужны дополнительные пакеты.

root@cacti-main:~# apt-get install libmysqlclient-dev libsnmp-dev automake libtool make

Компилируем spine.

root@cacti-main:~# cd cacti-spine-0.8.8f
root@cacti-main:~/cacti-spine-0.8.8f# aclocal
root@cacti-main:~/cacti-spine-0.8.8f# libtoolize --force
root@cacti-main:~/cacti-spine-0.8.8f# autoheader
root@cacti-main:~/cacti-spine-0.8.8f# autoconf
root@cacti-main:~/cacti-spine-0.8.8f# automake
root@cacti-main:~/cacti-spine-0.8.8f# ./configure --prefix=/opt/spine
root@cacti-main:~/cacti-spine-0.8.8f# make
root@cacti-main:~/cacti-spine-0.8.8f# make install

Новый spine у нас находиться в папке /opt/spine. Нам нужно скопировать старую конфигурацию (или прописать новую) в новую spine папку и поменять путь через Веб-интерфейс или заменить старую spine папку новой. Я сделаю второй вариант.

root@cacti-main:~# mv /usr/local/{spine,spine_old}
root@cacti-main:~# mv /opt/spine /usr/local/spine
root@cacti-main:~# rsync -avP /usr/local/spine_old/etc/ /usr/local/spine/etc/

Продолжение в главе 2.2.

2.1.2 Мониторинг система находиться на другом сервере

В этом случаи созданные бекапы нужно синкануть на удаленный сервер.

root@cacti-main:~# rsync -avP cacti.site.2016-03-17.tar.gz cacti.sql.2016-03-17.gz cacti-backup:/home/alex/

Если на удаленном сервере уже стоит cacti система, то возвращаемся к пункту 2.1, если на удаленном сервере чистая система, то нужно полностью установить cacti 0.8.8f как написано здесь.
После полной установки нужно развернуть дамп базы.

root@cacti-backup:~# gunzip -c cacti.sql.2016-03-17.gz | mysql -u${cacti_mysql_username} -p${cacti_mysql_pass}

Далее нужно скопировать scripts, resource, plugins и rra папки.

root@cacti-backup:~# tar -xzvf cacti.site.2016-03-17.tar.gz
root@cacti-backup:~# for folder in scripts resource plugins rra; do rsync -avP usr/share/cacti/site/${folder}/ ${cacti_new_sources_path}/${folder}/; done

Продолжение в главе 2.2.

2.2 Завершение установки

Вне зависимости какой тип деплоя – завершение установки одинаковое.
Меняем пути в cron файле cacti.

root@cacti-main:~# cat /etc/cron.d/cacti
*/5 * * * * www-data php ${cacti_new_sources_path}/poller.php > /dev/null 2>&1

Теперь переходим в веб-интерфейс по новому пути (Веб-сервер должен указывать на папку ${cacti_new_sources_path} по дефолту или через новый виртуальный хост) и нам предложат обновить cacti.

cacti2_2

После обновления активируем поллер и смотрим все ли в порядке.
cacti2_3

Возможно, нужно будет исправить пути к нужным бинарникам и rrd графикам.
Вот и все.

Cacti. Отказоустойчивый кластер

$
0
0

cactiПосле установки и обновления cacti мониторинг системы осталось настроить маленький кластер для повышения отказоустойчивости. Если мониторинг система нужна исключительно для мониторинга своих собственных серверов и никаких графиков и статистики не нужно для клиентов, то это делать не обязательно. Но в этом случаи если сервер упадет – быть беде. Чтобы себя немного подстраховать нужно установить и настроить как минимум один дополнительный cacti сервер для бекапа. Но в этом случаи у нас будет два отдельных cacti сервера, что тоже не очень удобно, ибо если нужно будет добавлять дополнительный хост или менять настройки – все нужно будет проделывать на всех cacti серверах. Во избежание таких проблем – я решил настроить master-master mysql репликацию между cacti серверами.
В данной статье пойдет речь о настройке отказоустойчивого cacti кластера используя Master-Master mysql репликацию.

1 Входные данные

У нас есть два geo-распределённых cacti сервера версии 0.8.8f под Ubuntu 16.04, которые мониторят одну и ту же ферму серверов.
cacti3

Рисунок 1.1 – Схема сети

Информация о серверах и сервисах наведена в таблице.
Таблица 1.1 – Входные данные.

Cacti-US Cacti-EU
Mysql root пользователь root root
Mysql root пароль 55db6f2cf739144c90530a3d 55db6f2cf739144c90530a3d
Mysql replication пользователь replica replica
Mysql replication пароль 55a245d1f7391425c38dd68d 55a245d1f7391425c38dd68d
Mysql cacti база cactidb cactidb
IP адрес 98.158.96.99 87.239.191.99

Теперь можно приступать к практике.

2 Настройка кластера

2.1 Подготовка Cacti-US сервера

Для настройки Master-Master репликации, нужно отредактировать конфигурацию mysql сервера. Переходим на первый cacti сервер и добавляем следующею конфигурацию.

root@cacti-us:~# cat /etc/mysql/conf.d/replica.cnf 
[mysqld]
server-id       = 1
log-bin         = /var/lib/mysql/server-mysql-bin
log-bin-index   = /var/lib/mysql/server-mysql-bin.index
relay-log       = /var/lib/mysql/slave-mysql-relay-bin-1
relay-log-index = /var/lib/mysql/slave-mysql-relay-bin-1.index
replicate-do-db = cactidb
replicate-ignore-table = cactidb.poller_output
replicate-ignore-table = cactidb.poller_command
replicate-ignore-table = cactidb.poller_time
replicate-ignore-table = cactidb.poller_reindex
replicate-ignore-table = cactidb.user_log
replicate-ignore-table = cactidb.poller
replicate-ignore-table = cactidb.settings
binlog-ignore-db = information_schema
binlog-ignore-db = mysql
binlog-ignore-db = performance_schema
auto_increment_increment = 5
auto_increment_offset = 1
log_bin_trust_function_creators = 1

Если Вы читали мою статью о настройке Мастер-Мастер mysql репликации – все опции будут понятны, если нет – то советую почитать, чтобы могли ориентироваться. Главное в этой конфигурации – это БД которую нужно реплицировать (replicate-do-db). replicate-ignore-table – это таблицы, которые нужно исключить из репликации, так как будут проблемы с работой cacti системы.
Далее добавляем пользователя, который будет собственно заниматься репликацией.

root@cacti-us:~# mysql -u root -p55db6f2cf739144c90530a3d -e 'CREATE USER "replica"@"%" IDENTIFIED BY "55a245d1f7391425c38dd68d";'
root@cacti-us:~# mysql -u root -p55db6f2cf739144c90530a3d -e 'GRANT replication slave ON *.* TO "replica"@"%";'
root@cacti-us:~# mysql -u root -p55db6f2cf739144c90530a3d -e 'flush privileges;'

Осталось рестартануть mysql.

root@cacti-us:~# /etc/init.d/mysql restart

Первый сервер готов.

2.2 Подготовка Cacti-EU сервера

Теперь переходим на второй сервер и добавляем mysql конфигурацию.

root@cacti-eu:~# cat /etc/mysql/conf.d/replica.cnf 
[mysqld]
server-id       = 2
log-bin         = /var/lib/mysql/server-mysql-bin
log-bin-index   = /var/lib/mysql/server-mysql-bin.index
relay-log       = /var/lib/mysql/slave-mysql-relay-bin-2
relay-log-index = /var/lib/mysql/slave-mysql-relay-bin-2.index
replicate-do-db = cactidb
replicate-ignore-table = cactidb.poller_output
replicate-ignore-table = cactidb.poller_command
replicate-ignore-table = cactidb.poller_time
replicate-ignore-table = cactidb.poller_reindex
replicate-ignore-table = cactidb.user_log
replicate-ignore-table = cactidb.poller
replicate-ignore-table = cactidb.settings
binlog-ignore-db = information_schema
binlog-ignore-db = mysql
binlog-ignore-db = performance_schema
auto_increment_increment = 5
auto_increment_offset = 2
log_bin_trust_function_creators = 1

Заметьте, что increment_offset у второго сервера уже 2 – это поможет избежать конфликтам при репликации (детали в статье о репликации).
Добавляем пользователя для репликации.

root@cacti-eu:~# mysql -u root -p55db6f2cf739144c90530a3d -e 'CREATE USER "replica"@"%" IDENTIFIED BY "55a245d1f7391425c38dd68d";'
root@cacti-eu:~# mysql -u root -p55db6f2cf739144c90530a3d -e 'GRANT replication slave ON *.* TO "replica"@"%";'
root@cacti-eu:~# mysql -u root -p55db6f2cf739144c90530a3d -e 'flush privileges;'

Осталось рестартануть mysql.

root@cacti-eu:~# /etc/init.d/mysql restart

Второй сервер готов.

2.3 Настройка репликации

Теперь нужно настроить саму репликацию.
В идеале, нужно снять дамп базы на одном из серверов и развернуть на втором, и только после этого приступать к настройке репликации. В моем случаи оба сервера имеют одинаковые настройки, т.е. mysql база данных у них почти идентичная и для репликации нужно только настроить и стартануть слейвы.
Переходим на первый сервер и смотрим настройки mysql мастера.

root@cacti-us:~# mysql -e 'show master status;'
+-------------------------+----------+--------------+---------------------------------------------+
| File                    | Position | Binlog_Do_DB | Binlog_Ignore_DB                            |
+-------------------------+----------+--------------+---------------------------------------------+
| server-mysql-bin.000013 | 86918999 |              | information_schema,mysql,performance_schema |
+-------------------------+----------+--------------+---------------------------------------------+

Запомнив позицию и название бин-лог файла, переходим на второй сервер, настраиваем мастер и стартуем репликацию.

root@cacti-eu:~# mysql -u root -p55db6f2cf739144c90530a3d -e "CHANGE MASTER TO MASTER_HOST = '98.158.96.99', MASTER_USER = 'replica', MASTER_PASSWORD = '55a245d1f7391425c38dd68d', MASTER_LOG_FILE = 'server-mysql-bin.000013', MASTER_LOG_POS = 86918999;"
root@cacti-eu:~# mysql -u root -p55db6f2cf739144c90530a3d -e 'start slave;'

Европейский сервер готов. Теперь снимаем позицию мастера для Штатовского.

root@cacti-eu:~# mysql -e 'show master status;'
+-------------------------+----------+--------------+---------------------------------------------+
| File                    | Position | Binlog_Do_DB | Binlog_Ignore_DB                            |
+-------------------------+----------+--------------+---------------------------------------------+
| server-mysql-bin.000016 | 42563451 |              | information_schema,mysql,performance_schema |
+-------------------------+----------+--------------+---------------------------------------------+

Запоминаем, переходим на первый сервер и проделываем те же действия.

root@cacti-us:~# mysql -u root -p55db6f2cf739144c90530a3d -e "CHANGE MASTER TO MASTER_HOST = '87.239.191.99', MASTER_USER = 'replica', MASTER_PASSWORD = '55a245d1f7391425c38dd68d', MASTER_LOG_FILE = 'server-mysql-bin.000016', MASTER_LOG_POS = 42563451;"
root@cacti-us:~# mysql -u root -p55db6f2cf739144c90530a3d -e 'start slave;'

Ну вот и все. Можно теперь проверить статус слейвов на обоих серверах.

root@cacti-eu:~# mysql -u root -p55db6f2cf739144c90530a3d -e 'show slave status \G;' | grep -E 'Seconds_Behind_Master|Slave_IO_State'
               Slave_IO_State: Waiting for master to send event
        Seconds_Behind_Master: 0

root@cacti-us:~# mysql -u root -p55db6f2cf739144c90530a3d -e 'show slave status \G;' | grep -E 'Seconds_Behind_Master|Slave_IO_State'
               Slave_IO_State: Waiting for master to send event
        Seconds_Behind_Master: 0 

Репликация работает.

2.4 Тестируем работу кластера

Осталось провести тест. Логинимся в Веб-интерфейс первого cacti сервера и добавляем новое устройство.
cacti3.1

И, к примеру, добавим графики загруженности сетевых интерфейсов.
Смотрим на график через некоторое время.
cacti3.2

График построился, все ок.
Теперь, переходим на второй сервер и проверяем добавился ли новый хост и все ли хорошо с графиками. Все, что нужно, это поменять домен (IP) в URL-е и Вы должны попасть на этот же график, только с другого хоста.
cacti3.3
Как видим, все ок. Так как cacti сервера снимают показатели с ферм по отдельности, то графики могут немного отличатся.
Теперь если один из хостов cacti кластера падает – ми просто мониторим с любого другого. Когда хост подымается – все что нужно сделать – это синкануть папку rra с рабочего хоста на проблемный и графики будут в норме.

Viewing all 12 articles
Browse latest View live