CN103246585B - 一种存储控制器故障检测方法 - Google Patents
一种存储控制器故障检测方法 Download PDFInfo
- Publication number
- CN103246585B CN103246585B CN201310165207.XA CN201310165207A CN103246585B CN 103246585 B CN103246585 B CN 103246585B CN 201310165207 A CN201310165207 A CN 201310165207A CN 103246585 B CN103246585 B CN 103246585B
- Authority
- CN
- China
- Prior art keywords
- storage control
- logical device
- data
- heart beating
- cpu
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明提供一种检测存储控制器故障的方法,该方法应用于双存储控制单元,其中第一存储控制器包括第一CPU以及第一逻辑器件,第二存储控制器包括第二CPU以及第二逻辑器件,该方法包括:第一CPU周期性的发送心跳指令,第一逻辑器件根据所述指令修改内部心跳寄存器的数据,并将修改后的数据通过背板同步给所述第二逻辑器件;第二逻辑器件将第一逻辑器件同步过来的数据更新到内部的心跳寄存器中;第二CPU定时读取第二逻辑器件内部心跳寄存器的数据,如果读取的数据有变化,判定第一存储控制器存活,如果读取的数据无变化,则判定第一存储控制器故障。本发明拥有更高的可靠性,可以很大程度地避免现有技术的误判。
Description
技术领域
本发明属于计算机存储技术领域,具体涉及双控环境下存储控制器故障的检测方法。
背景技术
存储系统作为网络后台的核心设备,为各类信息应用提供网络存储、高可用数据库集群、高性能计算、数据备份、复制、容灾、迁移等各类服务,实现数据高可用是存储系统最根本的要求。监控系统的存储设备同样需要具备上述大部分要求。当前流行的网络存储设备均采用双控的结构。图1是一个双存储控制器的基本框架图。1个存储控制单元(SCU,storage control unit)中包含两个存储控制器:SC0和SC1。每个存储控制器上都有管理口、业务口、串口、USB口、SAS扩展口。当其中一个存储控制器发生故障,如业务接口Down、内部关键服务不可用,控制器故障或掉电,后端存储故障等时,另一个存储控制器会将对方下电,然后接替其承载的所有业务,保证业务不中断。
一个存储控制器在接手对方存储控制器工作前,首先要判断对方存储控制器是否出现故障。现有技术中,一种故障检测的方法为:通过SCU内部的网口、串口进行心跳信号的发送和接收来判断存储控制器是否正常工作。参图1,通过软件的方式,SC0周期性的通过内部的网口(未图示)发送心跳信号给SC1,SC1在预设的时间内检测是否收到SC0发送的信号,如果收到,就认为SC0正常工作,否则判断SC0出现了异常。SC0用同样的方法判断SC1是否出现异常。但是该方法存在一个问题:如果出现存储控制器屏蔽了CPU的全部中断,但是网口却依赖该中断来传输数据,这样就会导致心跳信号无法被发送或者接收,从而对存储控制器的故障与否出现误判。
发明内容
有鉴于此,本发明提供1、一种检测存储控制器故障的方法,该方法应用于双存储控制单元,该双存储控制单元包括:第一存储控制器和第二存储控制器,其中该第一存储控制器包括第一CPU以及第一逻辑器件,该第二存储控制器包括第二CPU以及第二逻辑器件,其中该方法包括:
第一CPU周期性的发送心跳指令,该周期性的心跳指令使得第一逻辑器件内部的心跳寄存器交替写入0和1;将该第一逻辑器件内部心跳寄存器中的数据通过背板同步给第二逻辑器件;第二逻辑器件将第一逻辑器件同步过来的数据更新到自身内部的心跳寄存器中;第二逻辑器件内部的计数器在第二逻辑器件内部心跳寄存器数据变化时执行累加操作;第二CPU定时读取所述计数器的值,如果读取的计数器的值有变化,判定第一存储控制器存活,如果读取的计数器的值无变化,则判定第一存储控制器故障。
本发明还提供另一种检测存储控制器故障的方法,该方法应用于双存储控制单元,该双存储控制单元包括:第一存储控制器和第二存储控制器,其中该第一存储控制器包括第一CPU以及第一逻辑器件,该第二存储控制器包括第二CPU以及第二逻辑器件,其中该方法包括:
第一CPU周期性的发送心跳指令,第一逻辑器件根据所述指令修改内部心跳寄存器的数据,并将修改后的数据通过背板同步给所述第二逻辑器件;第二逻辑器件将第一逻辑器件同步过来的数据更新到内部的心跳寄存器中;第二CPU定时读取第二逻辑器件内部心跳寄存器的数据,如果读取的数据有变化,判定第一存储控制器存活,如果读取的数据无变化,则判定第一存储控制器故障。
相对于现有技术而言,本发明在检测判断上拥有更高的可靠性,可以很大程度地避免现有技术的误判。
附图说明
图1是一种双存储控制器的基本框架图。
图2是实施例一流程图。
图3是实施例二流程图。
图4是一种硬件结构示意图。
具体实施方式
以下结合具体实施方法来阐述本发明。
图2是本发明实施例一流程图。该第一实施例提供的检测存储控制器故障的方法应用于双存储控制单元,该双存储控制单元包括:第一存储控制器和第二存储控制器,其中该第一存储控制器包括第一CPU以及第一逻辑器件,该第二存储控制器包括第二CPU以及第二逻辑器件。具体步骤如下:
S21、第一CPU周期性的发送心跳指令,该周期性的心跳指令使得第一逻辑器件内部心跳寄存器交替写入0和1。
比如第0ms给出一个心跳指令,第一逻辑器件的心跳寄存器写入0;第一个5ms时又给出一个心跳指令,第一逻辑器件的心跳寄存器写入1;第二个5ms时又给出一个心跳指令,第一逻辑器件的心跳寄存器写入0,如此,按照每5ms间隔的周期给出心跳指令,第一逻辑器件的心跳寄存器交替的写入0和1。这里,心跳指令,心跳寄存器是为了描述方便从功能角度进行的命名,所以凡是执行相同功能的指令和寄存器都属于本实施例的范畴。
S22、将该第一逻辑器件内部心跳寄存器中的数据通过背板同步给第二逻辑器件。
S23、第二逻辑器件将第一逻辑器件同步过来的数据更新到自身内部的心跳寄存器中。
本实施例的双存储控制单元在硬件结构上第一和第二存储控制器通过背板连接在一起,该硬件结构方便地将第一存储控制器的心跳寄存器中的数据从背板同步到第二存储控制器的心跳寄存器中。由于第一逻辑器件内部心跳寄存器交替地写入0和1,所以同步过来的数据正常情况下也是交替的0和1,第二逻辑器件内部的心跳寄存器正常情况下也将交替地写入0和1。
S24、第二逻辑器件内部的计数器在第二逻辑器件内部心跳寄存器数据变化时执行累加操作。
由于正常情况下,第二逻辑器件内部的心跳寄存器将交替的写入0和1,所以第二逻辑器件内部的计数器在每一个周期时都将执行加1的操作。比如第1ms时,第二逻辑器件内部的心跳寄存器写入了0;假设一个周期为5ms,所以第6ms时,第二逻辑器件内部的心跳寄存器中存入的数据为1,此时,计数器加1;第11ms时,第二逻辑器件内部的心跳寄存器中存入的数据为0,此时计数器再加1;如果第16ms时,第二逻辑器件内部的心跳寄存器中的数据为0,计数器不执行加1的操作。
S25、第二CPU定时读取所述计数器的值,如果读取的计数器的值有变化,判定第一存储控制器存活,如果读取的计数器的值无变化,则判定第一存储控制器故障。
由于计数器执行的是累加操作,如果连续两个周期获得的计数器的值有变化,则说明第一逻辑器件内部的心跳寄存器按照预设的周期交替的写入0和1,所以确定第一存储控制器存活;如果连续两个周期获得的计数器的值没有变化的话,则认为第一存储控制器故障。为了防止因为信号冲突或是其他原因导致某次计数失败,可以以连续几个周期计数值有无变化作为依据来判定。比如如果第二CPU连续4个周期所获得的计数器的值均没有变化,则判定第一存储控制器故障。因为4个周期计数器的值均没有变化,最大的可能应该就是第一存储控制器中的心跳寄存器在交替执行0和1写入时出现了故障。
图3是本发明又一实施例流程图。该实施例提供的检测存储控制器故障的方法仍应用于双存储控制单元,该双存储控制单元包括:第一存储控制器和第二存储控制器,其中该第一存储控制器包括第一CPU以及第一逻辑器件,该第二存储控制器包括第二CPU以及第二逻辑器件。该又一实施例的具体步骤如下:
S31、第一CPU周期性的发送心跳指令,第一逻辑器件根据所述指令修改内部心跳寄存器的数据。
和第一实施例一样,由第一CPU周期性的发送心跳指令,该心跳指令用于修改第一逻辑器件内部心跳寄存器的数据。该数据的取值为N种,也可以理解为心跳寄存器具有m位。比如说心跳寄存器具有3位,那心跳寄存器的取值就有8种(000、001、010、011、100、101、110、111),心跳寄存器有4位,那心跳寄存器的取值就有16种。在第一CPU周期性发送心跳指令时,第一逻辑器件每次修改数据将心跳寄存器原数据取值加1,当该数据取值到达最大值时,将该数据取值清零。比如说,第0ms第一CPU发送了心跳指令,第一逻辑器件的心跳寄存器写入000;以5ms一个周期为例,第5ms第一CPU发送心跳指令,第一逻辑器件的心跳寄存器写入了1(001);类似的,第10ms,写入了2(010),第15ms,写入了3(011),以此类推,到第40ms时,到达最大值8,清零,写入0(000)。
S32、将修改后的数据通过背板同步给所述第二逻辑器件。
S33、第二逻辑器件将第一逻辑器件同步过来的数据更新到内部的心跳寄存器中。
第二逻辑器件的心跳寄存器具有的位数应大于等于第一逻辑器件心跳寄存器的位数。步骤S32和S33和实施例一中的步骤S22和S23一样,通过背板进行心跳寄存器数据的同步。
S34、第二CPU定时读取第二逻辑器件内部心跳寄存器的数据,如果读取的数据有变化,判定第一存储控制器存活,如果读取的数据无变化,则判定第一存储控制器故障。
第二CPU定时读取的是第二逻辑器件内部心跳寄存器的数据。比如以5ms为一个周期,第1ms,读到的数据是0,第6ms读到的数据是1,第11ms读到的数据是2,以此类推。如果当前读到的数据和前一个周期读到的数据有变化,则第一存储控制器存活;如果当前读到的数据和前一个周期读到的数据没有变化,则认为第一存储控制器故障。比如,如果第6ms读到的数据是1,那前一个周期读到的数据,即第1ms读到数据为0时,表明第一存储控制器存活;如果第6ms读取的数据是0,前一个周期第1ms读取的数据也是0的化,则认为第一存储控制器故障。
为了防止信号冲突或者其他原因导致读取的数据没有变化,可以在第二CPU定时读取的所述第二逻辑器件内部心跳寄存器的数据连续n(n≧2)次没有变化时,才判定第一存储控制器故障。这样的判定方式更可靠,更科学。假设以n=3为例,在第6ms读取的数据是0时,不立即判断第一存储控制器故障,继续在下一周期,第11ms时再次判断,如果第11ms读取的数据是2,则认为第一存储控制器存活,如果第11ms读取的数据还是0,继续在下一周期,即第16ms读取数据再判断,如果第16ms读取的数据还是0,则认为第一存储控制器故障。
本实施例直接利用从第一存储控制器同步到第二存储控制器的逻辑器件内部心跳寄存器中的数据作为判断第一存储控制器是否存活的依据。相比第一实施例,不需要计数器的计数,实施方式更为简单。但,需要占用寄存器更多的位数。第一逻辑器件和第二逻辑器件内部的心跳寄存器至少需要2位。而第一实施例中,由于在第一逻辑器件的心跳寄存器中交替的写入0和1,所以实际上只需占用1位。第二逻辑器件的内部心跳寄存器同步的数据是交替的0和1,所以也只需占用1位。从这个角度来讲,第一实施例的心跳寄存器比第二实施例占用更少的资源。另外,1位数据的同步技术比多位数据的同步简单。因此,在选择使用第一实施例的方式还是第二实施例的方式时,可以结合具体的硬件资源、具体的设备情况进行考虑。
通过上述两个实施例可以看出,本发明解决双SCU中存储控制器故障的方法是通过较为底层的技术来实现的。和现有的一些通过上层协议封装心跳报文,发送接收心跳报文,上层协议解封装心跳报文属于不同的设计构思,其拥有更高的可靠性,可以很大程度地避免现有技术的误判。
图4是本发明一种简单的硬件结构示意图。结合该图,进一步阐述下实施例一的技术流程。SC0周期发送心跳指令,然后CPU套片通过LPC BUS控制器CPLD的寄存器,进行0/1高低位的写入,然后CPU套片通过SMB连接背板,通过背板同步信号到SC1的寄存器,若SC1的寄存器有0/1高低位的写入变化,SC1的CPLD的计数器就会进行加一操作。SC1只需查看两次计数器里的数值有无变化即可判断对端SC0是否“活着”,若出现信号冲突或是其他原因导致某次心跳计数失败,可容许连续几次查询计数变化,每隔一定周期再进行查看,若几次查看的结果都无变化,才认为对端SC0故障,SC1会接管SC0。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (5)
1.一种检测存储控制器故障的方法,该方法应用于双存储控制单元,该双存储控制单元包括:第一存储控制器和第二存储控制器,其中该第一存储控制器包括第一CPU以及第一逻辑器件,该第二存储控制器包括第二CPU以及第二逻辑器件,其特征在于,该方法包括:
第一CPU周期性的发送心跳指令,该周期性的心跳指令使得第一逻辑器件内部的心跳寄存器交替写入0和1;将该第一逻辑器件内部心跳寄存器中的数据通过背板同步给第二逻辑器件;第二逻辑器件将第一逻辑器件同步过来的数据更新到自身内部的心跳寄存器中;第二逻辑器件内部的计数器在第二逻辑器件内部心跳寄存器数据变化时执行累加操作;第二CPU定时读取所述计数器的值,如果读取的计数器的值有变化,判定第一存储控制器存活;在第二CPU定时读取的所述计数器的值连续n次没有变化时,判定第一存储控制器故障,所述n大于等于2。
2.如权利要求1所述的方法,其特征在于,所述第一和第二逻辑器件为CPLD。
3.一种检测存储控制器故障的方法,该方法应用于双存储控制单元,该双存储控制单元包括:第一存储控制器和第二存储控制器,其中该第一存储控制器包括第一CPU以及第一逻辑器件,该第二存储控制器包括第二CPU以及第二逻辑器件,其特征在于,该方法包括:
第一CPU周期性的发送心跳指令,第一逻辑器件根据所述指令修改内部心跳寄存器的数据,并将修改后的数据通过背板同步给所述第二逻辑器件;第二逻辑器件将第一逻辑器件同步过来的数据更新到内部的心跳寄存器中;第二CPU定时读取第二逻辑器件内部心跳寄存器的数据,如果读取的数据有变化,判定第一存储控制器存活;在第二CPU定时读取的所述第二逻辑器件内部心跳寄存器的数据连续n次没有变化时,判定第一存储控制器故障,所述n大于等于2。
4.如权利要求3所述的方法,其特征在于,所述第一逻辑器件的心跳寄存器至少具有2位,第一逻辑器件每次修改数据时,将心跳寄存器原数据取值加1。
5.如权利要求3所述的方法,其特征在于,所述第一和第二逻辑器件为CPLD。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310165207.XA CN103246585B (zh) | 2013-05-06 | 2013-05-06 | 一种存储控制器故障检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310165207.XA CN103246585B (zh) | 2013-05-06 | 2013-05-06 | 一种存储控制器故障检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103246585A CN103246585A (zh) | 2013-08-14 |
CN103246585B true CN103246585B (zh) | 2017-04-19 |
Family
ID=48926115
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310165207.XA Active CN103246585B (zh) | 2013-05-06 | 2013-05-06 | 一种存储控制器故障检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103246585B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103984618A (zh) * | 2014-06-05 | 2014-08-13 | 浪潮电子信息产业股份有限公司 | 一种linux服务器硬盘活动状态的监控方法 |
CN104077424A (zh) * | 2014-07-24 | 2014-10-01 | 北京京东尚科信息技术有限公司 | 一种实现硬盘在线热切换的方法及装置 |
CN105426276A (zh) * | 2015-11-03 | 2016-03-23 | 山东超越数控电子有限公司 | 双控存储控制器的故障检测方法及存储控制器 |
CN109143954B (zh) * | 2018-07-26 | 2021-09-17 | 郑州云海信息技术有限公司 | 一种实现控制器复位的系统及方法 |
CN111801656B (zh) * | 2018-10-29 | 2023-12-22 | 深圳配天机器人技术有限公司 | 机器人控制系统、心跳监测方法及监测模块、存储介质 |
CN113821383A (zh) * | 2020-06-19 | 2021-12-21 | 华为技术有限公司 | 一种存储系统 |
CN112460053A (zh) * | 2020-11-12 | 2021-03-09 | 山东云海国创云计算装备产业创新中心有限公司 | 一种风扇的控制方法、系统、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1787410A (zh) * | 2004-12-08 | 2006-06-14 | 中兴通讯股份有限公司 | 一种单板故障检测方法 |
CN101207408A (zh) * | 2006-12-22 | 2008-06-25 | 中兴通讯股份有限公司 | 一种用于主备倒换的综合故障检测装置和方法 |
CN101382872A (zh) * | 2008-10-21 | 2009-03-11 | 浪潮电子信息产业股份有限公司 | 一种通过检测心跳对sas与sata信号进行双控存储切换控制方法 |
CN101465769A (zh) * | 2009-01-16 | 2009-06-24 | 华中科技大学 | 双控制器磁盘阵列的动态故障检测系统 |
CN101957786A (zh) * | 2010-09-30 | 2011-01-26 | 中兴通讯股份有限公司 | 双控系统中实现启动及故障切换控制的方法和装置 |
-
2013
- 2013-05-06 CN CN201310165207.XA patent/CN103246585B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1787410A (zh) * | 2004-12-08 | 2006-06-14 | 中兴通讯股份有限公司 | 一种单板故障检测方法 |
CN101207408A (zh) * | 2006-12-22 | 2008-06-25 | 中兴通讯股份有限公司 | 一种用于主备倒换的综合故障检测装置和方法 |
CN101382872A (zh) * | 2008-10-21 | 2009-03-11 | 浪潮电子信息产业股份有限公司 | 一种通过检测心跳对sas与sata信号进行双控存储切换控制方法 |
CN101465769A (zh) * | 2009-01-16 | 2009-06-24 | 华中科技大学 | 双控制器磁盘阵列的动态故障检测系统 |
CN101957786A (zh) * | 2010-09-30 | 2011-01-26 | 中兴通讯股份有限公司 | 双控系统中实现启动及故障切换控制的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103246585A (zh) | 2013-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103246585B (zh) | 一种存储控制器故障检测方法 | |
CN106341454B (zh) | 跨机房多活分布式数据库管理系统和方法 | |
US5568471A (en) | System and method for a workstation monitoring and control of multiple networks having different protocols | |
KR100858997B1 (ko) | 네트워크 데이터의 포착을 트리거하기 위한 장치 간의 신호전파 | |
CN106407083B (zh) | 故障检测方法及装置 | |
CN103516571B (zh) | 一种双can总线保证数据通信可靠性的系统架构及其方法 | |
CN102739435B (zh) | 作为服务的故障检测与恢复 | |
CN107395396A (zh) | 基于fpga的冗余双网口可配置以太网ip核 | |
CN103995764B (zh) | 一种具有串行总线协议连续触发功能的逻辑分析仪 | |
CN104932978B (zh) | 一种系统运行故障自检测及自修复的方法和系统 | |
CN105807722B (zh) | 具备内部寄存器自复位功能的数值控制系统 | |
CN107870832A (zh) | 基于多维度健康诊断方法的多路径存储设备 | |
CN105306235B (zh) | 一种列车编组数量识别方法 | |
CN109491946A (zh) | 一种用于i2c总线扩展的芯片和方法 | |
CN107505883A (zh) | 一种基于微控制器的高可靠双冗余集成控制模块 | |
CN103490914A (zh) | 一种网络应用设备多机热备的切换系统及方法 | |
CN105099762B (zh) | 一种系统运维功能的自检方法及自检系统 | |
CN101667953B (zh) | 一种快速环网物理链路状态的上报方法及装置 | |
CN114490152A (zh) | 一种双机整机级热备系统的建立方法 | |
CN104639358B (zh) | 批量网络端口切换方法及切换系统 | |
CN103631739B (zh) | 嵌入式系统的定位分析方法和嵌入式系统 | |
CN103279404B (zh) | 一种基于心跳状态字的多机系统同步及可靠性检测方法 | |
CN105045532B (zh) | 动态可重构总线监听系统的三级缓冲存储装置与方法 | |
CN109688017A (zh) | 一种双星型冗余拓扑架构系统及架构实现方法 | |
CN103269288A (zh) | 一种对交换机端口的检测方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |