2010-08-13 1 views
3

Мне нужно периодически проверять состояние RAID-массива на контроллере Intel из моего приложения Windows (или получать уведомление о изменении состояния). В частности, мне нужно выяснить, здоров ли массив RAID 5 или отсутствует один из его дисков.Как контролировать состояние RAID-массива на контроллере Intel из приложения Windows?

Я попытался разобрать вывод raidcfg32 (доступен с сайта Intel, см. this readme), но он работает только с одним из серверов, которые мне нужно контролировать. На других серверах raidcfg32 сообщает об ошибке «неподдерживаемого оборудования». Я также попробовал CmdTool2, но он вообще не смог найти контроллер.

Единственная оставшаяся опция мониторинга массивов RAID, поставляемая Intel, - это набор графических приложений (Intel Matrix Storage Management Console, технология Intel Rapid Storage).

Контроллеры, о которых идет речь, являются: ESB2, 631xESB/632xESB.

Я считаю, что прочитал несколько сообщений здесь о переполнении стека, которые имеют отношение к моей проблеме, и ни один из них не содержит ответа. В ответе на вопрос «Can I get Raid disk status by using PS?», например, то, что предлагается, фактически позволяет проверить, является ли контроллером, а не массивом, является здоровым (он всегда есть).

Что я ищу - это автоматический способ доступа к информации о статусе (из конкретного приложения .NET, если быть конкретным). Любой вариант хорош, будь то через WMI, .NET или собственный API, разводку вывода на консоль или что-то еще.

Я сбиваю с толку, что предлагаемый способ мониторинга состояния RAID - через приложение графического интерфейса. Какие подходы используются в развертываниях предприятия с десятками серверов для этого программно?

ответ

5

Я тоже искал это. У меня есть контроллеры серии ICHxxx, и я пытаюсь связаться с Intel, чтобы ответить на вопрос о существовании публичного API, но я не оптимист.

Вот что я нашел в краткосрочной перспективе. Intel записывает события RAID в журнал событий Windows в разделе «IAANTmon». Таким образом, вы можете использовать System.Diagnostics.EventLog, подключая EventWrittenEventHandler, затем фильтруя для «IAANTmon».

 EventLog eLog = new EventLog("Application"); 
     eLog.EntryWritten += new EntryWrittenEventHandler(OnEntryWrittenEvent); 
     eLog.EnableRaisingEvents = true; 

и

public static void OnEntryWrittenEvent(object source, EntryWrittenEventArgs e) 
    { 
     if (e.Entry.Source == "IAANTmon") 
     { 
     ... 
     } 
    } 
Смежные вопросы