hdd_icon«Предупрежден — значит вооружен».

Когда HDD на ПК выходит из строя, все процессы «стопорятся», что не есть гуд. Почему бы не предупреждать эту поломку?

К сожалению, существующие системы мониторинга, такие как PRTG могут выгружать SMART, но в полученных данных отcутствует ключевой столбец RAW. Установка стороннего ПО — бессмысленный вариант, так как необходимо будет это ПО покупать\тратить человеко-часы на обслуживание, зачем? Когда нужные данные можно получить по WMI. Тем более не все компании могут позволить себе покупку дорогостоящего ПО. Поэтому получать данные будем с помощью VBS скрипта в формате CSV, запускаемого по созданному политикой заданию в определенное время.

1. Скрипт для получения SMARTа HDD

На сайте http://www.pokatashkin.com/it/scripts/527 есть замечательный скрипт, который обладает следующим функционалом:

  • Скрипт для получения SMARTа HDD
  • Может брать SMART как с локальной так и удаленной машины с выводом результата в файл в формате CSV
  • При запуске скрипта выдается окно ввода имени(IP) машины с учетными данными
  • Если хотим получить SMART с локальной машины, то ничего не указываем, если с удаленной, указываем имя(IP) машины, и, если надо, учетные данные
  • Работает на WindowsXP(SP2,SP3), Windows2003SP2, Windows2008SP1, + Протестировано на Windows 7, Windows 8, Windows 10
  • Берет SMART через WMI, поэтому, что винда отдает, то отдает т.е. работает только со стандартно подключенными на мать HDD IDE и SATA
  • Как бы того не хотелось, НЕ РАБОТАЕТ с рэйдами.

Оригинал: HDD_Smart.zip

Я переработал его, для наших нужд, и теперь он:

  • При запуске не запускает диалоговых окон, а просто генерирует CSV файл в сетевой папке с именем %Computername%_%Date%.csv.
1
Set objTextFile = objFSO.OpenTextFile("\\server\logs$\hddsmart" & ComputerName & "_" & strSafeDate & ".csv", 2, True)
  • Изменил структуру CSV файла, для более удобного импорта.

excel

<Computer-name> и <Date> — Имя ПК и Дата соответственно.

Моя версия: Hdd_Smart_IV.zip

2. GPO. Создание задания для запуска скрипта.

Создаем Групповую политику, которая копирует скрипт и создает задание на его периодический запуск в определенную дату и время.

gpo_1 gpo_2

В данном примере мы видим, что скрипт запускается в четверг в 11 часов, каждые 2 недели.

3. Сбор полученных данных.

После отработки задания из п.2 (убедитесь что у Вас открыты сетевые доступы между рабочими станциями и сервером TCP 135-139, 445 и UDP 135-139) собираем из всех файлов один csv файл:

  • Открываем консоль — cmd.exe
  • Переходим в папку с файлами «cd C:\logs\hddsmart\»
  • Собираем все файлы в один, командой «copy *.csv all.csv»

Файл с данными готов, но как производить аналитику?

4. Аналитика

Нам поможет статья Оцениваем состояние жёстких дисков при помощи S.M.A.R.T.. А конкретно нас интересуют следующие атрибуты SMART:

Атрибут: 05 Reallocated Sector Count

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

Атрибут: 184 (B8) End-to-End Error

Описание Cодержит количество ошибок, возникших при передаче данных через кэш винчестера.

Атрибут: 187 (BB) Reported Uncorrected Sector Count (UNC Error)

Описание Cодержит количество секторов, которые были признаны кандидатами на переназначение за всю историю жизни диска. Причём если сектор становится кандидатом повторно, значение атрибута тоже увеличивается.

Атрибут: 197 (С5) Current Pending Sector Count

Описание Cодержит количество секторов-кандидатов на переназначение в резервную область.

Атрибут: 198 (С6) Offline Uncorrectable Sector Count (Uncorrectable Sector Count)

Описание Означает то же самое, что и атрибут 197, но отличие в том, что данный атрибут содержит количество секторов-кандидатов, обнаруженных при одном из видов самотестирования диска — оффлайн-тестировании, которое диск запускает в простое в соответствии с параметрами, заданными прошивкой.

200 (С8) Write Error Rate (MultiZone Error Rate)

Описание Содержит частоту возникновения ошибок при записи.

Оранжевым выделены ключевые параметры. По ним и будем оценивать состояние HDD.

Формула оценки состояния: ((Столбец RAW атрибута 5 более 40) ИЛИ (Столбец RAW атрибута 200 более 40)) И (Столбец RAW атрибута 187 более 40) И (СУММА всех показателей RAW более 10000)

Как показала практика, если с винтом что-то не так, 187 атрибут точно не нулевой, но при этом значения RAW атрибутов 5 или 200 бывают нулевыми. Таким образом мы точно считаем значение RAW атрибута 187 ненулевым, но при этом RAW одного из атрибутов 5 или 200 также должен быть ненулевым. И сумма RAW, у всех выбранных атрибутов, более 10000.

5. Техническая реализация

Вариант 1: Открыть в Excel файл CSV и применить фильтрацию по столбцам ID и RAW.

Плюсы: Простота использования.

Минусы: Неудобное визуальное представление.

Вариант 2: Импортировать данные в Mysql и посредствам PHP производить необходимую выборку.

Плюсы: Можно производить любые манипуляции с полученными данными.

Минусы: Необходимы определенные навыки по установке Web сервера + PHP + MySQL и также знание HTML PHP MySQL.

При втором варианте Вы можете установить себе локально готовый веб сервер со всем содержимым, например http://open-server.ru/, либо, если доступ к статистике нужен многим пользователям на постоянной основе, разворачиваем IIS + PHP + Mysql + Phpmyadmin на Win2k8 либо другой серверной платформе. Инструкций в интернете уйма, например Установка и настройка веб-сервера IIS + PHP + MySQL на Windows Server 2008 R2

У меня реализован второй, серверный вариант.

Скачать исходники: smarthdd.zip

Файлы внутри архива:
css — папка с файлом стилей.
images — папка с картинками
connection.php — настройки для подключения к БД.
index.php — основной файл с интерфейсом и запросами к БД.
smarthdd.sql — Файл для импорта в созданную БД. Создает таблицу SMART и наполняет ее тестовыми данными.

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

Справа — список проблемных HDD, полученных по формуле оценки состояния(п.4). При нажатии на имя ПК — внизу отображается S.M.A.R.T HDD данного диска.

Smart hdd web 1

Слева — Общий список ПК с проблемами с выборкой по ключевым параметрам атрибутов(п.4) . При нажатии на атрибут внизу отображается список ПК.

Smart hdd web 2

Импорт файла CSV из пункта 3:

Импорт можно выполнять раз в месяц. Так как показала практика данные S.M.A.R.T за месяц меняются не существенно.

1
2
3
4
LOAD DATA LOCAL INFILE 'C:\\logs\\hddsmart\\all.csv'
INTO TABLE smart
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\n'

После импорта данных, заходим в БД — таблица SMART — SQL и вставляем запросы:

screen

  • Удаляем пустые поля:
1
DELETE FROM  `smart` WHERE DATE =  '0000-00-00'
  • Удаляем записи, содержащие данные со старыми датами:
1
DELETE n1 FROM smart n1, smart n2 WHERE n1.date &lt; n2.date AND n1.pcname = n2.pcname

6. Итог

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