本发明涉及掉电保护技术领域,特别是涉及一种存储系统的掉电保护方法、系统、计算机设备及存储介质。
背景技术:
对于大型数据存储系统,通常是包含数量较多的硬盘,这些硬盘中,有的硬盘存储的数据可能长期保持不变,而有的硬盘存储的数据可能在一段时间内一直处于读写状态,当存储系统突然掉电时,如果不采取任何掉电保护措施,那么正在读写的数据会丢失,造成系统数据异常,通常对于带有掉电保护的系统,都会在检测到系统掉电后,通过有大容值电容或电池来维持最后一段的数据读写,但是对于硬盘数量太多的存储系统,比如1个机械硬盘待机是2w,那么100个硬盘待机会达到200w,如果电池的没有足够多的电量,则会由于掉电过快无法完成数据保护。
在相关技术中内置电容或电池设备由于电量有限,无法应用于大盘位存储系统的掉电保护,外置不间断电源(ups)电源的大盘位存储系统,由于硬盘功耗大,数量多,对于不间断电源(ups)选型的规格要求很高。
技术实现要素:
基于此,有必要针对相关技术中内置电容或电池设备由于电量有限,无法应用于大盘位存储系统的掉电保护,外置不间断电源(ups)电源的大盘位存储系统,由于硬盘功耗大,数量多,对于不间断电源(ups)选型的规格要求很高的问题,提供了一种存储系统的掉电保护方法、系统、计算机设备及存储介质。
根据本发明实施例的一个方面,提供了一种存储系统的掉电保护方法,包括:
实时获取存储系统中各个硬盘输出的读写指示信号,根据所述读写指示信号获取各个所述硬盘的读写状态信号;
当检测到所述存储系统掉电时,根据所述读写状态信号确定正在读写的硬盘,对所述正在读写的硬盘进行供电。
在一个实施例中,所述实时获取存储系统中各个硬盘输出的读写指示信号,根据所述读写指示信号获取各个所述硬盘的读写状态信号,包括:
实时检测所述读写指示信号的边沿,根据所述边沿判断各个所述硬盘的读写状态,其中,所述边沿包括上升沿或下降沿;
若所述边沿表示当前硬盘的读写状态为正在读写,生成所述当前硬盘的目标读写状态信号,并根据所述目标读写状态信号对所述当前硬盘进行标志置位。
在一个实施例中,并根据所述目标读写状态信号对所述当前硬盘进行标志置位之后,包括:
从对所述当前硬盘进行标志置位开始,判断在第一预设时间内是否再次生成所述当前硬盘的目标读写状态信号;
若否,则对所述当前硬盘进行标志复位。
在一个实施例中,并根据所述目标读写状态信号对所述当前硬盘进行标志置位之后,还包括:
统计所述存储系统开机到所述存储系统掉电时的总时间;
分别统计各个所述硬盘进行标志置位的次数;
分别用各个所述硬盘进行标志置位的次数除以所述总时间,得到各个所述硬盘的读写频率。
在一个实施例中,存储系统的掉电保护方法还包括:
当检测到所述存储系统掉电时,获取所述存储系统中各个所述硬盘的读写频率;
根据未读写的硬盘的读写频率,对所述读写频率高于第一预设值的所述未读写的硬盘进行供电。
在一个实施例中,还包括:
对所述读写频率低于所述第一预设值的硬盘进行断电或休眠操作。
根据本发明实施例的又一个方面,还提供了一种存储系统的掉电保护系统,包括:
读写状态检测模块,用于实时获取存储系统中各个硬盘输出的读写指示信号,根据所述读写指示信号获取各个所述硬盘的读写状态信号;
电源控制模块,用于当检测到所述存储系统掉电时,根据所述读写状态信号确定正在读写的硬盘,对所述正在读写的硬盘进行供电。
在一个实施例中,所述读写状态检测模块包括:
读写信号检测模块,用于实时检测所述读写指示信号的边沿,根据所述边沿输出所述当前硬盘的读写状态信号,其中,所述边沿包括上升沿或下降沿;
标志模块,用于接收所述读写状态信号,根据所述读写状态信号判断所述硬盘是否正在读写,若是,则对所述当前硬盘进行标志置位,并输出所述当前硬盘的目标读写状态信号;
计数模块,用于接收所述当前硬盘的目标读写状态信号,从对所述当前硬盘进行标志置位开始,判断在第一预设时间内是否再次生成所述当前硬盘的目标读写状态信号,若否,则控制所述标志模块对所述当前硬盘进行标志复位。
在一个实施例中,还包括读写频率统计模块,其中,所述硬盘读写频率统计模块包括统计模块和计时模块;
所述计时模块,用于统计所述存储系统开机到所述存储系统掉电时的总时间;
所述统计模块,用于分别统计各个所述硬盘进行标志置位的次数,以及获取所述计时模块统计所述存储系统开机到所述存储系统掉电时的总时间,分别用各个所述硬盘进行标志置位的次数除以所述总时间,得到各个所述硬盘的读写频率。
在一个实施例中,所述电源控制模块还用于当检测到所述存储系统掉电时,获取所述存储系统中各个所述硬盘的读写频率;根据未读写的硬盘的读写频率,对所述读写频率高于第一预设值的所述未读写的硬盘进行供电。
在一个实施例中,所述电源控制模块包括处理器模块和/或上下电模块,所述处理器模块用于对所述读写频率低于所述第一预设值的硬盘进行休眠,所述上下电控制模块用于对所述读写频率低于所述第一预设值的硬盘进行断电。
在一个实施例中,所述读写状态检测模块为复杂可编程逻辑器件,所述读写信号检测模块为读写信号检测器,所述标志模块为标志位数组寄存器,所述计数模块为计数器,所述计时模块为计时器,所述统计模块为统计器,所述电源控制模块为电源控制器,所述电源控制器包括处理器和/或上下电控制器,其中,所述复杂可编程逻辑器件包括:串行解串器,所述串行解串器用于对串行通用输入或输出的接口输入的所述读写指示信号进行解串行化操作,再将所述读写指示信号输出到所述读写信号检测器中,所述处理器用于对所述读写频率低于所述第一预设值的硬盘进行休眠,所述上下电控制器用于对所述读写频率低于所述第一预设值的硬盘进行断电。
根据本发明实施例的再一个方面,还提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的一种存储系统的掉电保护方法。
根据本发明实施例的又一个方面,还提供了计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述的一种存储系统的掉电保护方法。
与相关技术相比,本发明实施例所提供的一种存储系统的掉电保护方法、系统、计算机设备及存储介质,采用了实时获取存储系统中各个硬盘输出的读写指示信号,根据读写指示信号获取各个硬盘的读写状态信号,当检测到存储系统掉电时,根据读写状态信号确定正在读写的硬盘,对正在读写的硬盘进行供电的方式,解决了相关技术中内置电容或电池设备由于电量有限,无法应用于大盘位存储系统的掉电保护,外置不间断电源(ups)电源的大盘位存储系统,由于硬盘功耗大,数量多,对于不间断电源(ups)选型的规格要求很高的问题,实现了对正在读写的硬盘的掉电保护,保证了数据不会因备用电源电量或功耗不足而导致丢失或异常。
附图说明
为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是一个实施例中的一种存储系统的掉电保护方法的流程图;
图2是一个实施例中的一种存储系统的掉电保护系统的结构示意图;
图3是另一个实施例中的读写检测模块的结构示意图;
图4是再一个实施例中的读写频率统计模块的结构示意图;
图5是又一个实施例中的电源控制模块的结构示意图;
图6是另一个实施例中的一种的存储系统的掉电保护的系统示意图;
图7是再一个实施例中的一种读写状态检测模块的工作流程示意图;
图8是又一个实施例中的一种读写频率统计模块的工作流程示意图;
图9是另一个实施例中的一种由外部不间断电源供电的存储系统中的电源控制模块的工作流程示意图;
图10是又一个实施例中的一种由内置电容电池供电的存储系统中的电源控制模块的工作流程示意图;
图11是再一个实施例中的一种由内置电容电池供电的存储系统中的电源控制模块的工作流程示意图;
图12是另一个优选实施例中的一种存储系统的掉电保护系统的结构示意图;
图13是又一个实施例中的复杂可编程逻辑器件的结构示意图;
图14是另一个实施例中的复杂可编程逻辑器件的结构示意图;
图15是再一个实施例中的一种存储系统的掉电保护系统结构示意图;
图16是又一个实施例中的电源控制器的结构示意图;
图17是另一个实施例中的一种存储系统的掉电保护的系统电路图。
具体实施例方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
需要说明的是,本发明实施例所涉及的术语“第一/第二/第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一/第二/第三”在允许的情况下可以互换特定的顺序或先后次序。应该理解“第一/第二/第三”区分的对象在适当情况下可以互换,以使这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。
在一个实施例中提供了一种存储系统的掉电保护方法。图1是本发明实施例的一种存储系统的掉电保护方法的流程图,如图1所示,该流程包括:
步骤102:实时获取存储系统中各个硬盘输出的读写指示信号,根据读写指示信号获取各个硬盘的读写状态信号。
步骤104:当检测到存储系统掉电时,根据读写状态信号确定正在读写的硬盘,对正在读写的硬盘进行供电。
在本实施例中的一种存储系统的掉电保护方法,采用了实时获取存储系统中各个硬盘输出的读写指示信号,根据读写指示信号获取各个硬盘的读写状态信号,当检测到存储系统掉电时,根据读写状态信号确定正在读写的硬盘,对正在读写的硬盘进行供电的方式,解决了相关技术中内置电容或电池设备由于电量有限,无法应用于大盘位存储系统的掉电保护,外置不间断电源(ups)电源的大盘位存储系统,由于硬盘功耗大,数量多,对于不间断电源(ups)选型的规格要求很高的问题,实现了对正在读写的硬盘的掉电保护,保证了数据不会因备用电源电量或功耗不足而导致丢失或异常。
在一个实施例中,根据读写指示信号获取各个硬盘的读写状态信号,包括:
实时检测读写指示信号的边沿,根据边沿判断硬盘的读写状态,其中,边沿包括上升沿或下降沿;
若边沿表示当前硬盘的读写状态为正在读写,生成当前硬盘的目标读写状态信号,并根据目标读写状态信号对当前硬盘进行标志置位。
在本实施例中,可以用上升沿表示正在读写状态或未读写状态,也可以用下降沿表示正在读写状态或未读写状态,可根据用户进行设定。
以下由上升沿表示正在读写状态进行举例说明,实时检测各个硬盘的读写指示信号的边沿,并判断各个硬盘的读写指示信号的边沿是否为上升沿,若有硬盘的读写指示信号的边沿为上升沿,则生成与读写指示信号的边沿为上升沿的硬盘一一对应的目标读写状态信号,再根据目标读写状态信号,对目标读写状态信号一一对应的硬盘进行标志置位,通过该方式可以实时确定各个硬盘是否处于正在读写状态,进而实现对正在读写的硬盘进行供电。
在一个实施例中,并根据目标读写状态信号对当前硬盘进行标志置位之后,包括:
从对当前硬盘进行标志置位开始,判断在第一预设时间内是否再次生成当前硬盘的目标读写状态信号;若否,则对当前硬盘进行标志复位。
在本实施例中,当对正在读写的硬盘进行标志置位时,开始计时,判断在第一预设时间内是否再次生成当前硬盘的目标读写状态信号,若是,则计时清零,并重新开始计时,若否,则对当前硬盘进行标志复位,其中,第一预设可根据用户实际情况进行设定,例如20s、40s、60s等。通过该方式避免了硬盘在一次系统读写中,连续读写了很长时间,但是后面长时间内都未操作的问题,延长了备用电源的使用时间,降低了备用电源的选型规格。
在一个实施例中,并根据目标读写状态信号对当前硬盘进行标志置位之后包括:
统计存储系统开机到存储系统掉电时的总时间;分别统计各个硬盘进行标志置位的次数;分别用各个硬盘进行标志置位的次数除以总时间,得到各个硬盘的读写频率。
在本实施例中,每次检测到对硬盘进行标志置位之后,都会对该硬盘进行标志置位的次数进行相应的统计,每检测到一次对该硬盘进行标志置位,对应的统计数量加一,在存储系统掉电的时候,再获取存储系统开机到存储系统掉电时的总时间,最后用该硬盘统计的标志置位的总数除以总时间,来得到各个硬盘的读写频率,通过该方式,为实现存储系统的掉电保护提供了各个硬盘的读写频率。
在一个实施例中,当检测到存储系统掉电时,获取存储系统中各个硬盘的读写频率;根据未读写的硬盘的读写频率,对所述读写频率高于第一预设值的所述未读写的硬盘进行供电。
在本实施例中,在检测到存储系统掉电时,还可以通过获取各个硬盘的读写频率,同时还根据硬盘的读写状态信号获取未读写的硬盘,再对读写频率高于第一预设值(可由用户进行设定)的未读写硬盘进行供电。通过该方式选择性的维护了高读写频率的硬盘的可用性,实现了使用最低功耗来最大程度地保证大多数应用。
基于上述实施例,需要说明的是,存储系统在掉电时,一般分为由外部不间断电源供电或内置电容电池供电。
在本发明实施例中,当检测存储系统掉电且由外部不间断电源供电时,由于外部不间断电源电量大,会选择对正在读写的硬盘以及读写频率高于用户设定的第一预设值的硬盘进行供电,对读写频率低于第一预设值的硬盘进行断电或者休眠。在一般情况下当检测存储系统掉电且由内置电容电池供电时,会优先对正在读写的硬盘的进行供电,对未正在读写的硬盘进行断电或者休眠,但是当内置内容电池的电量大于用户设定的电量值,则也会对未正在读写的硬盘的读写频率进行判断,若未正在读写的硬盘的读写频率高于第一预设值则也会进行供电,进而对读写频率低于第一预设值的硬盘进行断电或者休眠。
在一个实例中,对读写频率低于第一预设值的硬盘进行断电或休眠操作。
在本实施例中,在检测到存储系统掉电时,对掉电瞬间读写频率低于第一预设值的硬盘进行休眠或者断电操作,其中,休眠和断电操作可由用户预先设定,从而降低系统功耗,降低了不间断电源的选型规格、延长不间断电源使用时间和寿命。
其中,不间断电源(uninterruptiblepowersystem/uninterruptiblepowersupply,简称ups),是将蓄电池(多为铅酸免维护蓄电池)与主机相连接,通过主机逆变器等模块电路将直流电转换城市电的系统设备。主要用于给单台计算机、计算机网络系统或其它电力电子设备如电磁阀、压力变送器等提供稳定、不间断的电力供应。当市电输入正常时,ups将市电稳压后供应给负载使用,此时的ups就是一台交流式电稳压器,同时它还向机内电池充电;当市电中断(事故停电)时,ups立即将电池的直流电能,通过逆变器切换转换的方法向负载继续供应220v交流电,使负载维持正常工作并保护负载软、硬件不受损坏。ups设备通常对电压过高或电压过低都能提供保护。
在又一个实施例中提供了一种存储系统的掉电保护系统。图2是本发明实施例的一种存储系统的掉电保护系统的结构示意图,如图2所示,该系统包括:
读写状态检测模块210,用于实时获取存储系统中各个硬盘输出的读写指示信号,根据读写指示信号获取各个硬盘的读写状态信号;
电源控制模块220,用于当检测到存储系统掉电时,根据读写状态信号确定正在读写的硬盘,对正在读写的硬盘进行供电。
在另一个实施例中,还提供了读写检测模块的结构示意图,如图3所示,该读写状态检测模块210包括:
读写信号检测模块212,用于实时检测读写指示信号的边沿,根据边沿输出当前硬盘的读写状态信号,其中,边沿包括上升沿或下降沿;
标志模块214,用于接收读写状态信号,根据读写状态信号判断硬盘是否正在读写,若是,则对当前硬盘进行标志置位,并输出当前硬盘的目标读写状态信号;
计数模块216,用于接收当前硬盘的目标读写状态信号,从对当前硬盘进行标志置位开始,判断在第一预设时间内是否再次生成当前硬盘的目标读写状态信号,若否,则控制标志模块214对当前硬盘进行标志复位。
在再一个实施例中,还提供了读写频率统计模块的结构示意图,如图4所示,该系统还包括读写频率统计模块230,其中,读写频率统计模块230包括统计模块232和计时模块234;
计时模块232,用于统计存储系统开机到存储系统掉电时的总时间;
统计模块234,用于分别统计各个硬盘进行标志置位的次数,以及获取计时模块232统计存储系统开机到存储系统掉电时的总时间,分别用各个硬盘进行标志置位的次数除以总时间,得到各个硬盘的读写频率。
在一个实施例中,电源控制模块220还用于当检测到存储系统掉电时,获取存储系统中各个硬盘的读写频率;根据未读写的硬盘的读写频率,对所述读写频率高于第一预设值的所述未读写的硬盘进行供电。
在又一个实施例中,还提供了电源控制模块的结构示意图,如图5所示,该电源控制模块220包括处理器模块和/或上下电模块,处理器模块222用于对读写频率低于第一预设值的硬盘进行休眠,上下电控制模块224用于对读写频率低于第一预设值的硬盘进行断电。
在本实施例中,当电源控制模块220包括处理器模块222和上下电控制模块224两者时,可以根据用户的选择对读写频率低于第一预设值的硬盘进行休眠或下电。
在一个实施例中,读写状态检测模块210为复杂可编程逻辑器件,读写信号检测模块212为读写信号检测器,标志模块214为标志位数组寄存器,计数模216块为计数器,计时模块232为计时器,统计模块234为统计器,电源控制模块220为电源控制器,电源控制器包括处理器、上下电控制器,其中,复杂可编程逻辑器件包括:串行解串器,串行解串器用于对串行通用输入或输出的接口输入的读写指示信号进行解串行化操作,再将读写指示信号输出到读写信号检测器中,处理器用于对读写频率低于第一预设值的硬盘进行休眠,上下电控制器用于对读写频率低于第一预设值的硬盘进行断电。
下面结合附图和优选实施方式,对本发明实施例的系统进行描述和说明。
在一个实施例中,还提供了一种的存储系统的掉电保护的系统示意图,如图6所示,该系统包括:读写状态检测模块310、读写频率统计模块320和电源控制模块330。
读写信号检测模块310包括读写信号检测模块312、标志模块314和计数模块316,读写信号检测模块312用于检测硬盘实时的读写状态,并将该状态传递给标志模块314,标志模块314用于标志单位时间内硬盘是否处于读写状态,计数模块316是来对统计单位时间。
读写频率统计模块320包括统计模块322和计时模块324,统计模块322通过统计标志模块314的标记位变化次数和计时模块324的计时时间,来计算开机后被监测的硬盘访问频率。
电源控制模块330包括系统电源监测模块332、上下电控制模块334和处理器模块336,当系统电源监测模块332监测到系统主电源电压发生跌落时,通知处理器模块336和上下电控制模块334,上下电控制模块334根据所监测的硬盘读写标志位信息和硬盘读写频率统计信息,来判断是否对该硬盘进行下电操作,或者处理器模块336根据所检测的硬盘读写频率统计信息,来判断是否对该硬盘进行休眠操作。
在再一个实施例中还提供了一种读写状态检测模块的工作流程示意图,如图7所示,其中,读写状态检测模块包括:读写信号检测模块、标志模块、计数模块,该流程包括:
对于硬盘电源控制器、硬盘pm芯片及硬盘本身都有用于表示硬盘active状态的硬盘读写信号,当硬盘处于读写状态时,该信号输出一定频率的周期性信号,硬盘读写信号检测模块用于检测该硬盘的读写信号的边沿,其中,边沿包括上升沿或下降沿,当检测到读写信号的上升沿(或下降沿)时,标志模块的标志位置位,同时,计数模块开始进行单位时间的计时,若在单位时间内读写信号检测模块再次检测到信号上升沿(或下降沿)时,对计数模块进行清零,计数模块重新开始计时,若计数模块的计数时间已经达到了单位时间,读写信号检测模块仍未检测到读写信号的上升沿(或下降沿),则标志模块的标志位复位,计数模块的计数器清零并停止计时,继续检测硬盘读写信号的上升沿(或下降沿),当检测到硬盘读写信号的上升沿(或下降沿)后,开始按照上述流程重新执行。
在又一个实施例中,还提供了一种读写频率统计模块的工作流程示意图,如图8所示,其中,硬盘读写频率统计模块包括统计模块和计时模块,该流程包括:
统计模块用于监测标志模块输出标志位信号边沿,即上升沿(或者下降沿),每次检测到一个信号上升沿(或者下降沿),则统计模块计数值加一,同时读取计时模块的统计时间,即开机到掉电时的总时间,最后刷新硬盘的读写频率数据,即用该硬盘的最新的统计模块计数值总数除以统计时间。
在另一个实施例中,还提供了一种由外部不间断电源供电的存储系统中的电源控制模块的工作流程图,如图9所示,其中,电源控制模块包括:系统电源检测模块、上下电模块、处理器模块,该流程包括:
对于外部ups供电的存储系统,当系统电源监测模块监测到系统主电源电压跌落时,通知上下电模块立即判断所控制的硬盘是否是正在读写的硬盘,若不是正在读写的硬盘,则上下电模块和处理器模块从统计模块中获取该硬盘的读写频率,如果为高频读写硬盘(高低频率的级别定义可由用户来设置),则保持硬盘供电,如果为低频读写硬盘,则处理器模块对其进行休眠操作或者上下电模块进行下电操作(可根据用户设置来执行),直到市电恢复后,再重新将所有硬盘上电或唤醒,从而降低系统功耗和ups电源的选型规格、延长其使用时间和寿命。
在一个实施例中,还提供了一种由内置电容电池供电的存储系统中的电源控制模块的工作示意流程图,如图10所示,其中,电源控制模块包括:系统电源检测模块、上下电模块、处理器模块,该流程包括:
对于内置电容电池的系统,当系统电源监测模块监测到系统主电源电压跌落时,通知处理器模块停止所有硬盘的读写操作及其他正在运行的业务,同时通知上下电模块立即判断所控制的硬盘是否是正在读写的硬盘,上下电控制模块读取标志模块的标志位信息,若为复位状态,则此时硬盘未进行读写,若为置位状态,则此时硬盘处于读写状态。所以若获取到标志模块的标志位为复位状态,则对该硬盘进行断电或休眠操作(可根据用户设置来执行)。处理器模块完成所有正在读写硬盘的读写操作后,执行系统关机操作,来保证内置电容电池有足够的电量来保证关机前的数据完整性。
在再一个实施例中,还提供了一种由内置电容电池供电的存储系统中的电源控制模块的工作流程示意图,如图11所示,其中电源控制模块包括:系统电源检测模块、上下电模块、处理器模块,该流程包括:
对于内置电容电池的系统,当系统电源监测模块监测到系统主电源电压跌落时,判断内置电容电池的电量是否大于用户设定的预设电量值,若是,通知上下电模块立即判断所控制的硬盘是否是正在读写的硬盘,若不是正在读写的硬盘,则上下电模块和处理器模块从统计模块中获取该硬盘的读写频率,如果为高频读写硬盘(高低频率的级别定义可由用户来设置),则保持硬盘供电,如果为低频读写硬盘,则处理器模块对其进行休眠操作或者上下电模块进行下电操作(可根据用户设置来执行)。
下面结合附图和优选实施例来对该系统进行描述和说明。
在另一个实施例中提供了一种存储系统的掉电保护系统。图12是本发明优选实施例的一种存储系统的掉电保护系统的结构示意图,如图12所示,该系统包括:
复杂可编程逻辑器件410,用于实时获取存储系统中各个硬盘输出的读写指示信号,根据读写指示信号获取各个硬盘的读写状态信号;
电源控制器420,用于当检测到存储系统掉电时,根据读写状态信号确定正在读写的硬盘,对正在读写的硬盘进行供电。
在又一个实施例中,还提供了复杂可编程逻辑器件的结构示意图,如图13所示,复杂可编程逻辑器件410包括:
读写信号检测器412,用于实时检测读写指示信号的边沿,根据边沿输出当前硬盘的读写状态信号,其中,边沿包括上升沿或下降沿;
标志位数组寄存器414,用于接收读写状态信号,根据读写状态信号判断硬盘是否正在读写,若是,则对当前硬盘进行标志置位,并输出当前硬盘的目标读写状态信号;
计时器416,用于接收当前硬盘的目标读写状态信号,从对当前硬盘进行标志置位开始,判断在第一预设时间内是否再次生成当前硬盘的目标读写状态信号,若否,则控制标志位数组寄存器414对当前硬盘进行标志复位。
在另一个实例中,还提供了复杂可编程逻辑器件的结构示意图,如图14所示,复杂可编程逻辑器件410还包括:
串行解串器418,用于对串行通用输入或输出的接口输入的读写指示信号进行解串行化操作,再将读写指示信号输出到读写信号检测器412中。
在再一个实施例中,还提供了一种存储系统的掉电保护系统结构示意图,如图15所示,该系统还包括:
计时器430,用于计算统计存储系统开机到存储系统掉电时的总时间;
统计器440,用于分别统计各个硬盘进行标志置位的次数,以及获取计时器统计存储系统开机到存储系统掉电时的总时间,分别用各个硬盘进行标志置位的次数除以总时间,得到各个硬盘的读写频率。
在一个实施例中,电源控制器420还用于当检测到存储系统掉电时,获取存储系统中各个硬盘的读写频率;根据未读写的硬盘的读写频率,对所述读写频率高于第一预设值的所述未读写的硬盘进行供电。
在又一个实施例中,还提供了电源控制器的结构示意图,如图16所示,该电源控制器420包括处理器422和/或上下电控制器424,处理器422用于对读写频率低于第一预设值的硬盘进行休眠,上下电控制器424用于对读写频率低于第一预设值的硬盘进行断电。
在本实施例中,当电源控制器420包括处理器422和上下电控制器424两者时,可以根据用户的选择对读写频率低于第一预设值的硬盘进行休眠或下电。
下面结合附图和优选实施方式,对本发明实施例的系统进行描述和说明。
在另一个实施例中,还提供了一种存储系统的掉电保护的系统电路图,如图17所示,该电路图工作如下:
结合图6,对本发明实施例的系统电路图进行描述和说明。
读写信号检测模块312主要由cpld内部的串行解串器和读写信号检测器组成,对于sata电源控制器、sata扩展芯片或者硬盘,其sata读写信号的输出方式为芯片输出的sgpio(serialgpio)、芯片输出的gpio或者硬盘的pin11脚,无论是哪种输出方式,其输出的内容都是硬盘的读写指示信号,当有数据读写时,对应的信号为周期性的高低电平,当没有数据读写时,对应的型号为固定的高电平或低电平,这些信号与cpld连接,如果是sgpio接口需要在cpld内部先进行解串行化操作,再输出到读写信号检测器,如果是gpio或硬盘的pin11脚,则直接输出到读写信号检测器,串行解串器的原理和功能是将串行输入格式的数据转换为并行输出。读写信号检测器的输入信号为n个硬盘对应的n个硬盘读写指示信号,输出为硬盘读写状态信号,当该读写信号检测器检测到读写指示信号的上升沿时,输出高电平硬盘状态信号,表示该硬盘正处于读写状态。标志模块314包括cpld器件内部的标志位数组寄存器flag[n:1],其输入为读写信号检测输出的硬盘读写状态信号,该硬盘状态信号将对应的硬盘是否正处于硬盘读写状态的信息保存到标志位数组中,如果硬盘正在读写,对应的标志位flag为1,否则为0。计数模块316包括n个计数器,其输入为标志位数组寄存器中对应的flag标志位信息以及读写信号检测器输出的经过计数器透传的硬盘读写指示信号,当flash标志位置1时,计数器开始计数,当检测到硬盘读写状态信号为1时,进行清零并重新开始计数,当计数器计满到单位时间比如1分钟后,将flag标志位置0。系统电源监测模块332可以是分立器件搭建的电路也可以是集成ic,其功能是监测系统的主电源供电电压,当其电压跌落到80%时,控制器输出的电源监测状态信号为低电平。计时模块324,为外部的rtc芯片或者控制器内部的实时时钟模块,也可以是其他用于计时的模块,其与cpu连接。统计模块322可以与系统的cpu共用,或者是独立的mcu,其输入为flag标志位信息、rtc模块的计时信息以及系统电源监测模块输出的电源监测状态信号,当监测到flag信息由0变为1时,其内部的计数器加1,同时通过i2c总线读取当期的系统时间,得出开机到当前时间的硬盘读写频率,当电源监测状态信号为低时,根据系统类型以及用户设置,执行掉电保护操作,当系统为内置电池模块或者电容时,cpu停止所有硬盘的读写操作及其他正在运行的业务,对于flag标志位为0的硬盘,根据用户的设定执行下电或休眠操作,其中下电操作可以通过拉低cpu输出的硬盘电源控制信号来关闭硬盘的供电,休眠操作可以通过存储总线接口发送特定的命令来实现,当cpu完成所有正在读写硬盘的读写操作后,执行系统关机操作,但是在有些情况下,例如当内置内容电池的电量大于用户设定的电量值时,则也会对未正在读写的硬盘的读写频率进行判断,若未正在读写的硬盘的读写频率高于第一预设值则也会进行供电,进而对读写频率低于第一预设值的硬盘通过处理器模块336对其进行休眠操作或者上下电模块334进行下电操作(可根据用户设置来执行)。当系统为外部ups电源时,对于flag标志位为0的硬盘,则获取该硬盘的读写频率,如果为高频读写硬盘(高低频率的级别定义可由用户来设置),则保持硬盘供电,如果为低频读写硬盘,则处理器模块336对其进行休眠操作或者上下电模块334进行下电操作(可根据用户设置来执行)。
以下由优选的实施例来说明掉电保护的流程。
sata控制器、sata扩展芯片如果输出的硬盘读写指示信号的总线形式为sgpio信号,该信号连接到cpld内部的串行解串器,进行解串行化操作后得到active[n:1]输出到cpld内部的读写信号检测器,如果sata控制器、sata扩展芯片及硬盘输出的硬盘读写指示信号的总线形式为gpio[n:1]信号,则该信号直接连接到cpld内部的读写信号检测器。当读写信号检测器检测到硬盘a(1<=a<=n)的解串行化模块输出上升沿时,则输出status[a]=1,同时对应的flag标志位flag[a]置1,同时,输出begin[a]=1使得cpld内部的计数器count[a]开始计数,若在单位时间1min内再次检测到status[a]=1时,对计数器count[a]进行清零,计数器count[a]重新开始计数,若count[a]的计数时间已经达到了单位时间1min,在这段时间内cpu检测到的status[a]保持0,则计数器输出reset[a]=0将flag标志位置0,计数器清零并停止计数,当读写信号检测器检测到硬盘读写指示信号上升沿后,开始按照上述流程重新执行。
上述过程中,cpu监测标志位数组寄存器flag[n:1]对应的输出信号interrupt[n:1]上升沿,每次检测到一个信号上升沿,则统计器计数值加1,同时通过i2c总线读取rtc的时间,计算出从开机到读取时刻的总时间,最后刷新硬盘的读写频率数据,即用最新的统计器的计数值除以计时器的统计时间。
对于内置电容电池的系统,当系统电源监测芯片或电路输出的电源监测状态信号pwrgood为低时,通知cpu停止所有硬盘的读写操作及其他正在运行的业务,同时通知cpu去获取所有硬盘对应的flag标志位信息,如果为0,则此时硬盘未进行读写,如果为1,则此时硬盘处于读写状态。对于所有flag标志位为0的硬盘集合,拉低硬盘的供电控制信号hdd_pwr_en或者通过存储总线发送休眠命令(可根据用户设置来执行)。当cpu完成所有正在读写硬盘的读写操作后,执行系统关机操作,来保证内置电容电池有足够的电量来保证关机前的数据完整性。但是在有些情况下,例如当内置内容电池的电量大于用户设定的电量值时,则也会对未正在读写的硬盘的读写频率进行判断,若未正在读写的硬盘的读写频率高于第一预设值则也会进行供电,进而对读写频率低于第一预设值的硬盘通过处理器模块336对其进行休眠操作或者上下电模块334进行下电操作(可根据用户设置来执行)。
对于外部ups供电的存储系统,当系统电源监测芯片或电路输出的电源监测状态信号pwrgood为低时,通知cpu立即获取所有硬盘对应的flag标志位信息,对于flag标志位为0的硬盘集,则cpu继续调用硬盘的读写频率信息,对于高频读写硬盘(高低频率的级别定义可由用户来设置),保持硬盘供电,如果为低频读写硬盘,则拉低硬盘的供电控制信号hdd_pwr_en或者通过存储总线发送休眠命令(可根据用户设置来执行),从而降低系统功耗和ups电源的选型规格、延长其使用时间和寿命。
本发明实施例的一种存储系统的掉电保护系统与上述一种存储系统的掉电保护方法一一对应,在上述一种存储系统的掉电保护系统的实施例阐述的技术特征及其有益效果均适用于一种存储系统的掉电保护方法的实施例中。
在本实施例中还提供了一种计算机设备,包括存储器和处理器,存储器存储有可执行程序,处理器执行可执行程序时实现上述的一种存储系统的掉电保护方法的步骤。
本领域普通技术人员可以理解实现上述实施例用于一种存储系统的掉电保护方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,程序可存储于一非易失性的计算机可读存储介质中,如实施例中,该程序可存储于计算机系统的存储介质中,并被该计算机系统中的至少一个处理器执行,以实现包括如上述一种存储系统的掉电保护方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。