N8000添加NFS共享时提示无License

发布时间:  2013-08-28 浏览次数:  298 下载次数:  0
问题描述
客户在导入license、完成对N8300的初始化后,系统可以正常提供业务。但使用一段时间,客户希望添加nfs共享时,系统提示没有license。
告警信息
系统提示无license
处理过程
在线程A和线程B中操作该全局变量之前,对该全局变量增加互斥锁,使用完后再释放锁。    
根因
由于该局点使用的10节点环境,首先分析日志,发现其中有一些发送消息失败。由于Hima在节点较多的情况下,之前出现过消息通信异常的情况。沿着该思路分析Hima的日志,看客户现场环境是否有问题,以及hima 主备管理等模块是否有问题。在日志量大、节点多的环境下,一直未分析出原因。
最后分析与ISM通信的通道模块sf_agent的日志,该模块将会获取license的有效性,进而判断对应功能模块是否有license、有权限执行。从该日志中发现了问题,日志一直正常,仅在客户执行添加nfs共享时报错,提示没有license。在执行完该命令后的日志也都正常。
根据该思路去分析sf_agent的代码,终于找到问题的根因。Sf_agent模块中有两个线程都会使用一个全局变量,线程A会周期性写全局变量,线程B会在下发命令时,读取该全局变量以判断该命令是否有执行权限。问题在于这两个线程使用该全局变量时没有相应的互斥机制。
客户在下发命令添加nfs共享之前,写全局变量的线程A周期性的初始化该全局变量。当线程B读取全局变量时,此时线程A尚未把获取到的数据更新到全局变量中,从而导致线程B读取的全局变量信息不正确,系统提示无license。
建议与总结
在V100R002C00SPC002B017及之前的版本都有该问题,建议打补丁或者使用后续版本升级解决此问题。

END