вторник, 19 апреля 2016 г.

Колхозный хоум-сервер с мониторингом

Волею судеб досталось мне несколько SAS HDD дисков, материнская плата Asus P5K, Xeon E5450 с переходником на LGA755, и решил я сделать из них себе NAS. Да не просто NAS, а полноценный home server - с хостом виртуализации на Hyper-V в качестве "ядра", одной виртуалкой под файлопомойку и DLNA сервер, второй - под инфраструктурные сервисы вроде обхода роскомнадзора и KMS эмулятора, третьей - с 10кой под разные извращения, и еще даже немного ресурсов в запасе осталось :)

Вот такой колхоз получился - стоит в нише в прихожей над УЗО:
Оба PCI Express слота заняли SAS контроллеры, поэтому в качестве видеокарты стоит старая, добрая S3 Trio 64v2. Плата была 1999 года выпуска, но заработала как часы, и ее понял даже 2016ый сервер. Правда, только в 640х480 и почему-то на мониторе картинка была в оттенках серого - хотя в биозе все было в цвете.

Почему именно Hyper-V с кучей виртуалок, а не развернул сразу все на хосте? Так проще.
Виртуалку легко бэкапить (благо дисков полно), можно быстро сделать снапшот и откатить, и если она повиснет - всегда есть доступ до хоста Hyper-V через который ее можно легко перезагрузить.

Собственно, о повисаниях речь и пойдет. Привык я к хорошему на брендовых серверах - тут тебе и удаленная консоль с выключателем, и ASR (ребут по вотчдогу), и мониторинг встроенный. Захотелось себе чего-то подобного.

В случае с мониторингом - попробовал HWMonitor. Всё вроде умеет, и алармы шлет, и как сервис можно "костылем", но запилить. Но именно в случае установки его как сервис - система при ребуте вешается колом, приходится идти и дергать резет. Не работает именно ребут, обычное выключение проходит на ура. Грешу на некорректность его работы с чипом от Winbond, см ниже мои эксперименты с watchdog.

Сейчас для мониторинга температуры, кулеров использую Open Hardware Monitor. Сам он почту слать не умеет, но его можно опрашивать по WMI. Так что простейший CMD скрипт - и мониторинг готов - http://pastebin.com/D7Pt0Hcp


Скрипт мониторит температуру системы выше 60 градусов, веников выше 50, ядер выше 85, и остановку кулеров. Проверка Value!=124.5 выбрасывает "кривой" датчик на материнке, который всегда выдает данную температуру. Естественно, перед запуском скрипта надо запустить Open Hardware Monitor.

Пробовал настроить Watchdog, благо имеющийся на материнской плате чип Winbond W83627DHG это позволяет. Написал на коленке простейшую утилиту http://pastebin.com/3M7J0Xy7
И она даже заработала - при одноразовом запуске, как только таймер доходит до нуля, система тут же перезагружается. А вот если ее "подергать" несколько раз - при истечении таймера система виснет наглухо вместо ребута. Причем выглядит это так же, как при использовании HWMonitor. Похоже на какую-то аппаратную недоработку, или конфликт (все-таки я порты дергаю не запрещая прерывания, и от переключения контекста в середине никто не застрахован), или что-то я недоинициализировал.

Так что пока тему с Watchdog я отпустил - благо машина работает стабильно. Но исходник выкладываю, чтобы его гугл проиндексировал, и его смог найти кто-нибудь еще, кто озадачится данным вопросом. Исходник использует драйвер WinRing0.sys из комплекта Open Hardware Monitor (берите из его сырцов, так как OHW его распаковывает и удаляет на лету). Драйвер - подписанный, есть под х86 и х64. Мой исходник проверялся под х64.

Комментариев нет:

Отправить комментарий