我需要定期从我的 Windows 应用程序检查英特尔 Controller 上 RAID 阵列的状态(或收到有关状态更改的通知)。具体来说,我需要的是找出 RAID 5 阵列是否健康或其中一个磁盘丢失。
我尝试解析 raidcfg32
的输出(可从英特尔网站获得,请参阅 this readme ),但它仅适用于我的应用程序需要监控的服务器之一。在其他服务器上,raidcfg32
报告“不支持的硬件”错误。我也试过 CmdTool2
,但完全找不到 Controller 。
英特尔提供的 RAID 阵列监控的唯一剩余选项是一堆 GUI 应用程序(英特尔矩阵存储管理控制台、英特尔快速存储技术)。
有问题的 Controller 是:ESB2、631xESB/632xESB。
我相信我已经阅读了 Stack Overflow 上与我的问题相关的几篇文章,但没有一篇包含答案。例如,在对“Can I get Raid disk status by using PS?”问题的回答中,所建议的实际上允许检查 Controller 而不是阵列是否健康(它始终是)。
我正在寻找的是一种访问状态信息的自动化方式(具体来说,来自 .NET 应用程序)。任何选项都是好的,无论是通过 WMI、.NET 还是 native API、控制台输出解析或其他方式。
我发现监控 RAID 状态的建议方法是通过 GUI 应用程序令人困惑。在具有数十台服务器的企业部署中使用哪些方法以编程方式执行此操作?
最佳答案
我也一直在找这个。我有 ICHxxx 系列 Controller ,正在尝试与英特尔联系,以回应有关公共(public) API 的存在,但我并不乐观。
这是我为短期提出的建议。英特尔将 RAID 事件记录到“IAANTmon”下的 Windows 事件日志中。所以你可以使用 System.Diagnostics.EventLog, Hook 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")
{
...
}
}
关于windows - 如何从 Windows 应用程序监控英特尔 Controller 上 RAID 阵列的状态?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3478204/