megacli:无法为IOCTL分配内核SGL缓冲区

今天,我的一台服务器开始向我发送有关非最佳RAID状态的警报。 这些是由cron运行的一个非常简单的脚本触发的 – 如果它检测到并非所有磁盘都报告“最佳”状态,则会发送警报。

现在,问题是RAID似乎没有问题,但由脚本调用的megacli -LDInfo -Lall -aALL命令失败,在syslog中重复出现一个隐含的错误消息: megacli: Failed to alloc kernel SGL buffer for IOCTL 。 奇怪的是,命令有时会起作用,并返回输出,但大部分时间它只返回两个空行和退出代码:

  #megacli -LDInfo -Lall -aALL


退出代码:0x00 

megacli -AdpAllInfo -aAll等其他参数一样。 每次命令失败时,所述错误都会出现在syslog中。

据我所知,这从来没有发生过。 最近在服务器上没有改变。 该适配器是PERC 6/i Integrated ,服务器在Debian Wheezy下运行。

可能是什么问题,我在哪里开始解决这个问题?

编辑:

  #megacli -v


       MegaCLI SAS RAIDpipe理工具版本5.00.12 2009年5月8日

     (c)版权所有2009,LSI Corporation,保留所有权利。

退出代码:0x00 

至less这个命令每次都不会触发错误;)我刚刚意识到这是megacli的旧版本。 不过,不要紧,因为同样的设置已经工作了几十个月没有问题,现在突然决定疯了。

有关于这个问题的debian bug报告,请看:

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=703356

目前似乎还没有解决办法,最近的内核也是如此。 我个人怀疑是Xen。 你在这台主机上运行Xen吗?