LINUX.ORG.RU
решено ФорумAdmin

Чем можно разобрать до атрибутов HEX-дамп S.M.A.R.T. с диска?

 , , ,


0

1

Машина с аппаратным RAID, на ней установлен ESXi.
Хочется посмотреть а может даже замониторить текущие значения некоторых S.M.A.R.T. атрибутов.

Проблема в том, что для VMWare нет полноценного smartmontools, который на Linux-based умеет получать smart непосредственно с дисков в RAID-массиве.

Максимум до чего получилось добраться - до «вроде как» HEX-дампа S.M.A.R.T.

Есть что-то готовое чтобы вытащить значения атрибутов?

[root@ESXI:/opt/lsi/storcli] ./storcli /c0/e252/s0 show smart
CLI Version = 007.0504.0000.0000 Nov 22, 2017
Operating system = VMkernel 6.5.0
Controller = 0
Status = Success
Description = Show Drive Smart Info Succeeded.

Smart Data Info /c0/e252/s0 =
10 00 01 2f 00 64 64 01 00 00 00 00 00 00 05 32
00 64 64 01 00 00 00 00 00 00 09 32 00 64 64 08
52 00 00 00 00 00 0c 32 00 64 64 1f 00 00 00 00
00 00 aa 33 00 64 64 01 00 00 00 00 00 00 ab 32
00 64 64 00 00 00 00 00 00 00 ac 32 00 64 64 00
00 00 00 00 00 00 ad 32 00 60 60 43 01 00 00 00
00 00 ae 32 00 64 64 18 00 00 00 00 00 00 b7 32
00 64 64 00 00 00 00 00 00 00 b8 32 00 64 64 00
00 00 00 00 00 00 bb 32 00 64 64 00 00 00 00 00
00 00 bc 32 00 64 64 3b 00 00 00 00 00 00 c2 22
00 45 36 1f 00 0f 00 2e 00 00 c3 32 00 64 64 00
00 00 00 00 00 00 c4 32 00 64 64 01 00 00 00 00
00 00 c5 32 00 64 64 00 00 00 00 00 00 00 c6 30
00 64 64 00 00 00 00 00 00 00 c7 32 00 64 64 00
00 00 00 00 00 00 ca 30 00 60 60 04 00 00 00 00
00 00 ce 0e 00 64 64 00 00 00 00 00 00 00 f6 32
00 64 64 bc 69 ee dd f2 00 00 f7 32 00 64 64 b4
03 38 e8 07 00 00 f8 32 00 64 64 ff 62 5f db 0f
00 00 b4 33 00 00 00 4d aa 00 00 00 00 00 d2 32
00 64 64 02 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 05 f9 56 1f 00 7b
03 00 01 00 02 18 03 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 09

Чому не хочешь поставить management tools для контроллера ?

Deleted
()

Машина с аппаратным RAID
Проблема в том, что для VMWare нет полноценного smartmontools, который на Linux-based умеет получать smart непосредственно с дисков в RAID-массиве.

WmWare тут не причем. К дискам в аппаратном массиве имеет доступ только firmware массива. И все, что могут сделать системные утилиты - это запросить у нее состояние SMART дисков. А вот поддерживает и firmaware такие запросы, остается целиком на совести разработчика.

В общем, смотрите документацию на свой контроллер и прилагаемый производителем софт управления и конфигурирования контроллера.

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

Serge10 ★★★★★
()
Ответ на: комментарий от Serge10

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

Deleted
()
Ответ на: комментарий от Deleted

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

Ну да. Я примерно это и посоветовал автору темы - разобраться с софтом, который идет в комплекте с контроллером.

Правда, остается вопрос - зачем вообще это нужно?

Serge10 ★★★★★
()
Ответ на: комментарий от Bloody

Спасибо! Накидали то что нужно на базе этого скрипта

import os
import sys
import re
import struct
import subprocess

drive = sys.argv[1]
attr_id = int(sys.argv[2])
data = []

smart_output = subprocess.run(["/opt/lsi/storcli/storcli","{d} show smart".format(d=drive)], stdout=subprocess.PIPE).stdout.decode('utf-8').splitlines()

for i in range(len(smart_output)):
    line = smart_output[i].rstrip()
    match = re.search(r'^(\S\S\s){15}\S\S$', line)
    if match:
        for c in line.split(' '):
            data.append(int(c, 16))
data = data[2:]
for attr_index in range(0, len(data) // 12):
    attr, value = struct.unpack('<BxxBxxxxxxxx', bytearray(data[attr_index * 12:(attr_index + 1) * 12]))
    if (attr != 0 and attr == attr_id):
        print(value)

oxumorron
() автор топика
Ответ на: комментарий от Serge10

storcli - как раз и есть эта утилита, а тащить ради мониторинга нескольких атрибутов что-то работающее отдельным сервисом - такое себе.

Чуть более усложнённая конструкция со скриптом из предыдущего поста и Zabbix позволяет мониторить, например, wearout SSD-дисков без дополнительной машинерии.

В случае с SSD в RAID5-массивах об износе лучше сильно заранее знать - можно не успеть поменять.

oxumorron
() автор топика
Ответ на: комментарий от oxumorron

storcli - как раз и есть эта утилита, а тащить ради мониторинга нескольких атрибутов что-то работающее отдельным сервисом - такое себе.

поставить vib пакет с софтом, который предоставит данные о здоровье железа в vc - это как раз и есть правильный путь. а писать костыль для вывода данных в консоль, который ещё и перестанет работать после обновления прошивки - такое себе

имхо

router ★★★★★
()
Ответ на: комментарий от router

А после установки lsiprovider где-то в VC можно получить доступ к значению атрибутов или надо просто ждать алерта о вылетевшем диске?

Точно перестанет работать кстати?

oxumorron
() автор топика
Ответ на: комментарий от oxumorron

В случае с SSD в RAID5-массивах об износе лучше сильно заранее знать - можно не успеть поменять.

Поставьте hot-spare. Даже 100% износ ссд не говорит о его смерти.

Deleted
()
Ответ на: комментарий от Deleted

На Samsung при 17% оставшихся замечали скачки latency при интенсивном IO. Для нашей нагрузки это критично.

oxumorron
() автор топика
Ответ на: комментарий от oxumorron

В случае с SSD в RAID5-массивах об износе лучше сильно заранее знать - можно не успеть поменять.

IMHO, SMART имеет очень относительное отношение к реальном износу дисков. Более того, контроллер самостоятельно мониторит SMART-параметры и при выходе их за допустимые пределы (SMART status is bad) просто выкидывает диск из массива с отсылкой соответствующего уведомления.

В случае с SSD в RAID5-массивах об износе лучше сильно заранее знать - можно не успеть поменять.

Разумеется, всегда лучше знать об износе заранее. Но к сожалению SMART не дает такой информации :(. Гораздо эффективнее иметь hotspare диск. В этом случае массив автоматически запустит восстановление с использованием резервного диска, а админу останется только заменить вылетевший диск на новый.

Serge10 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.