一种存储系统掉电数据备份方法及存储系统控制器的制造方法

文档序号:6512208阅读:214来源:国知局
一种存储系统掉电数据备份方法及存储系统控制器的制造方法
【专利摘要】本发明公开了一种存储系统掉电数据备份方法及存储系统控制器。该方法包括:当检测到掉电时,获取对存储系统中的缓存的当前刷新进度、缓存中需要备份到存储系统中的非易失性存储器中的数据在缓存中的地址、以及备份数据所需的第一时间;根据缓存的当前刷新进度和数据在缓存中的地址,计算数据自上次刷新至少还能继续保持数据不丢失的第二时间;若第二时间大于第一时间时,停止对缓存的刷新,将数据备份到非易失性存储器中。本发明在存储系统发生掉电、需要将缓存中的数据备份到非易失性存储器中时,在对要备份的数据进行再次刷新之前能将该数据备份完的情况下,停止刷新操作,可以节省不必要的刷新操作带来的电能消耗,延长备用电源的供电时间。
【专利说明】一种存储系统掉电数据备份方法及存储系统控制器
【技术领域】
[0001]本发明涉及存储【技术领域】,具体涉及一种存储系统掉电数据备份方法及存储系统控制器。
【背景技术】
[0002]为了解决存储系统掉电丢失数据的问题,现有技术中常采用备用电源进行掉电时的供电,以便存储系统将缓存中的数据进行备份。然而备用电源供电时间一般较短,依靠备用电源在掉电时供电进行数据备份存在一定的风险。
[0003]综上所述,如何在掉电发生时延长备用电源的供电时间成为业界迫切需要解决的问题。

【发明内容】

[0004]有鉴于此,本发明提供了一种存储系统掉电数据备份方法及存储系统控制器,以期在掉电发生时延长备用电源的供电时间。
[0005]第一方面,提供了一种存储系统掉电数据备份方法,包括:
[0006]当检测到掉电时,获取对存储系统中的缓存的当前刷新进度、所述缓存中需要备份到所述存储系统中的非易失性存储器中的数据在所述缓存中的地址、以及备份所述数据所需的第一时间;
[0007]根据所述缓存的当前刷新进度和所述数据在所述缓存中的地址,计算所述数据自上次刷新至少还能继续保持数据不丢失的第二时间;
[0008]若所述第二时间大于所述第一时间时,停止对所述缓存的刷新,将所述数据备份到所述非易失性存储器中。
[0009]在第一种可能的实现方式中,所述获取对所述存储系统的缓存的当前刷新进度,具体为:
[0010]从计数器获取对所述存储系统的缓存的当前刷新进度,所述当前刷新进度为所述计数器的当前计数值;
[0011]其中,所述计数器的计数值随每次向所述缓存发送一次刷新命令按设定值递增。
[0012]结合第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述根据所述缓存的当前刷新进度和所述数据在所述缓存中的地址,计算所述数据自上次刷新至少还能继续保持数据不丢失的第二时间,包括:
[0013]当所述数据在所述缓存中的最小行号pl大于或等于所述当前刷新进度对应的缓存的行号P时,计算所述数据自上次刷新至少还能继续保持数据不丢失的第二时间tl=Tl-[T2-(pl-p)*A],其中,Tl为任一行数据在刷新一次后能保持的最长时间,T2为对所述缓存进行刷新的周期,相邻两行的刷新间隔M为所述缓存的总行数。
[0014]结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述根据所述缓存的当前刷新进度和所述数据在所述缓存中的地址,计算所述数据自上次刷新至少还能继续保持数据不丢失的第二时间,包括:
[0015]当所述数据在所述缓存中的最大行号p2小于或等于所述当前刷新进度对应的缓存的行号P时,计算所述数据自上次刷新至少还能继续保持数据不丢失的第二时间tl=Tl-(p-pl)* Δ。
[0016]结合第一方面的第二种可能的实现方式或第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述根据所述缓存的当前刷新进度和所述数据在所述缓存中的地址,计算所述数据自上次刷新至少还能继续保持数据不丢失的第二时间,包括:
[0017]当所述当前刷新进度对应的缓存的行号P大于所述数据在所述缓存中的最小行号pl,且所述当前刷新进度对应的缓存的行号P小于所述数据在所述缓存中的最大行号p2时,计算所述数据自上次刷新至少还能继续保持数据不丢失的第二时间tl包括t2和t3,其中,t2为从行号P至行号p2之间的数据自上次刷新至少还能继续保持的时间,t2=Tl-T2,t3为从行号pl至行号P之间的数据自上次刷新至少还能继续保持的时间,t3=Tl-(ρ-ρ?)* Λ-t4,t4为将从行号p至行号p2之间的数据备份到所述非易失性存储器所需的时间。
[0018]结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,所述若所述第二时间大于所述第一时间时,停止对所述缓存的刷新,具体为:
[0019]若t2大于t4且t3大于将从行号pl至行号P之间的数据备份到所述非易失性存储器所需的时间t5,则停止对所述缓存的刷新。
[0020]第二方面,提供了一种存储系统控制器,包括:
[0021]获取单元,用于当检测到掉电时,获取对存储系统的缓存的当前刷新进度、所述缓存中需要备份到所述存储系统中的非易 失性存储器中的数据在所述缓存中的地址、以及备份所述数据所需的第一时间;
[0022]计算单元,用于根据所述缓存的当前刷新进度和所述数据在所述缓存中的地址,计算所述数据自上次刷新至少还能继续保持数据不丢失的第二时间;
[0023]刷新单元,用于若所述第二时间大于所述第一时间时,停止对所述缓存的刷新;
[0024]备份单元,用于将所述数据备份到所述非易失性存储器中。
[0025]在第一种可能的实现方式中,所述获取单元具体用于从计数器获取对所述存储系统的缓存的当前刷新进度,所述当前刷新进度为所述计数器的当前计数值;
[0026]其中,所述计数器的计数值随每次向所述缓存发送一次刷新命令按设定值递增。
[0027]结合第二方面或第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述计算单元具体用于:
[0028]当所述数据在所述缓存中的最小行号pl大于或等于所述当前刷新进度对应的缓存的行号P时,计算所述数据自上次刷新至少还能继续保持数据不丢失的第二时间tl=Tl-[T2-(pl-p)*A],其中,Tl为任一行数据在刷新一次后能保持的最长时间,T2为对所述缓存进行刷新的周期,相邻两行的刷新间隔Λ=Τ2/Μ,M为所述缓存的总行数。
[0029]结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述计算单元具体还用于:
[0030]当所述数据在所述缓存中的最大行号ρ2小于或等于所述当前刷新进度对应的缓存的行号P时,计算所述数据自上次刷新至少还能继续保持数据不丢失的第二时间tl=Tl-(p-pl)* Δ。
[0031]结合第二方面的第二种可能的实现方式或第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述计算单元具体还用于:
[0032]当所述当前刷新进度对应的缓存的行号P大于所述数据在所述缓存中的最小行号pl,且所述当前刷新进度对应的缓存的行号P小于所述数据在所述缓存中的最大行号p2时,计算所述数据自上次刷新至少还能继续保持数据不丢失的第二时间tl包括t2和t3,其中,t2为从行号P至行号p2之间的数据自上次刷新还能继续保持的时间,t2=Tl-T2,t3为从行号pl至行号P之间的数据自上次刷新还能继续保持的时间,t3=Tl-(ρ-ρ?)* Λ-t4,t4为将从行号p至行号p2之间的数据备份到所述非易失性存储器所需的时间。
[0033]结合第二方面的第四种可能的实现方式,在第五种可能的实现方式中,所述刷新单元具体用于:
[0034]若t2大于t4且t3大于将从行号pl至行号P之间的数据备份到所述非易失性存储器所需的时间t5,则停止对所述缓存的刷新。
[0035]本发明在存储系统发生掉电、需要将缓存中的数据备份到非易失性存储器中时,在对要备份的数据进行再次刷新之前能将该数据备份完的情况下,停止刷新操作,可以节省不必要的刷新操作带来的电能消耗,延长备用电源的供电时间。
【专利附图】

【附图说明】
[0036]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领 域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0037]图1为PCIe插卡形态的存储系统的结构示意图;
[0038]图2为分离形态的存储系统的结构示意图;
[0039]图3为固态硬盘SSD所在系统的结构示意图;
[0040]图4为本发明一种存储系统掉电数据备份方法的一个实施例的流程图;
[0041]图5为本发明一种存储系统掉电数据备份方法的另一个实施例的流程图;
[0042]图6a为缓存当前的刷新进度与待备份的数据所在位置关系的一种情况示意图;
[0043]图6b为缓存当前的刷新进度与待备份的数据所在位置关系的另一种情况示意图;
[0044]图6c为缓存当前的刷新进度与待备份的数据所在位置关系的又一种情况示意图;
[0045]图7为本发明一种存储系统控制器的一个实施例的结构不意图。
【具体实施方式】
[0046]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0047]本发明的存储系统可以是如图1所示的外设互联快速通道(PeripheralComponent Interconnect, PCIe)插卡形态的固态硬盘(Solid State Drive, SSD),也可以是如图2所示的分离形态的SSD或机械硬盘(Hard Disk Drive,HDD)。如图1所示的PCIe插卡形态的SSD,控制器与闪存介质是一体的,该存储系统即SSD,只有一个控制器,闪存介质是非易失性存储器,与缓存相连还有一外接的非易失性存储器。如图2所示的分离形态的SSD或HDD,在一个存储系统中可以有多个SSD或HDD连接一个控制器,SSD或HDD中本身也有一个控制器连接其存储介质,其存储介质是非易失性存储器,与缓存相连还有一外接的非易失性存储器,该存储系统可以是独立磁盘冗余阵列(Redundant Array of IndependentDisks, RAID)。
[0048]以图1所示的PCIe插卡形态的SSD为例,SSD是一种用闪存作为存储介质的存储设备,由于不存在机械硬盘那样的旋转部件,因此读写性能更高,环境适应性更好,功耗更低,被称为固态硬盘。SSD的数据接口一般采用PCIe,由一个控制器、缓存和闪存介质三个部分组成。闪存介质用于长期保存数据,掉电后数据不会丢失。
[0049]控制器用于从PCIe接口接收主机发来的读写命令,对命令进行解析后将数据写入闪存介质(写操作)或者从闪存介质中读取数据并返回给主机(读操作)。主机一般特指SSD所在系统的处理器小系统,包括处理器、内存和桥片,它负责运行操作系统并执行应用程序,对SSD发起读写访问。SSD所在系统可以是服务器或个人电脑,系统框图如图3所
/Jn ο
[0050]存储系统中一般设置有缓存,缓存与存储系统的控制器相连。缓存一般是由动态随机存储器(Dynamic Random Access Memory, DRAM)组成的,用于暂时保存待写入闪存介质中的数据,或者从闪存介质中读出的数据,以及地址映射表等工作参数。由于DRAM的速度比闪存介质更快,因此使用缓存可以提高SSD的读写速度,同时由于闪存介质的擦写次数是有限的,通过缓存可以减少闪存介质的擦写频度,从而延长了 SSD的使用寿命。
[0051]然而,SSD在工作过程中可能存在掉电的风险,例如它所在的服务器或个人电脑因为电源故障而掉电,SSD也会同时下电,而缓存所用的DRAM在掉电后信息会丢失,其中会包含一些尚未写入闪存介质的数据,丢失后会造成闪存介质中的数据出错。本发明采用备用电池或超级电容等备用电源进行掉电时的供电。
[0052]采用备用电池进行掉电时的供电,发生掉电后存储系统可以切换到备用电池供电,不同容量的电池可以支持不同的时间,一般可以达到几天,足以将缓存中的数据进行备份,但备用电池的体积较大,会占用较多的存储系统空间,影响存储系统的可用的非易失性存储器的数量,进而影响存储系统的存储容量,且备用电池存在环境污染且寿命短的问题。
[0053]另一种方法是将备用电池改为超级电容,在掉电之前超级电容就已充好电,掉电之后开始放电,为缓存中的数据写入非易失性存储器提供电能。超级电容是一种容量达到法拉级的新型电容器,具有体积小、充电快、循环次数高、温度特性好、无污染等优点。根据存储系统的功耗不同,超级电容能够支持的供电时间可能从几十毫秒到几秒钟。但由于供电时间较短,而且超级电容的容量会由于老化逐渐降低,环境温度的升高也会增加存储系统的功耗。
[0054]先介绍一下DRAM的刷新原理:[0055]作为缓存的DRAM是一种易失性的存储器,它是通过存储单元的寄生电容来保存数据的,由于寄生电容存在漏电现象,因此正常工作时需要周期性的刷新才能保证其中的数据不会丢失。具体来说,控制器会周期性的向DRAM发送刷新命令,而DRAM内部有一个刷新计数器,每当收到一个有效的刷新命令就会将计数器加I,这个计数值对应于DRAM内部的一行存储单元,然后对该行进行刷新。例如DRAM内部有8192行存储单元,刷新计数器有13位,它的初始值为0,控制器发送的每个刷新命令将计数器加1,累加到OxlFFF后回到O重新计数。
[0056]DRAM的刷新命令由几个信号的特定组合来定义,当同步时钟信号CLK在某时刻采样到的片选信号/CS为O、行选通信号/RAS为O、列选通信号/CAS为O、写信号/WE为I则认为收到一个有效的刷新命令。
[0057]DRAM是以行为单位按顺序、周期性刷新的,每次刷新一行,过了一个刷新间隔后再刷新下一行,直到所有行全部刷新一遍,按照DRAM规范同一行的刷新周期不超过64毫秒(当DRAM的壳温在85度以下时,高于85度需要刷新的更快),或者说将全部8192行刷新一遍最多不超过64毫秒,否则存在丢失数据的风险,由此可以算出相邻两行的刷新间隔时间为64000/8192=7.8125微秒,这个参数在规范中记为tREFI。为了保证一定的裕量,实际的刷新周期一般短于64毫秒。
[0058]在DRAM执行刷新操作的过程中以及刷新完成之后的一段时间内,不能执行任何其他操作,这段时间在规范中记为tRFC,一般在一百纳秒以上,DRAM的容量越大这个参数也越大,因此刷新操作会影响DRAM的读写性能。
[0059]DRAM刷新时的电流较大,一般在数十毫安以上,因此会增加电能的损耗。
[0060]再讨论如何保证存储系统掉电时备份数据的可靠性。
[0061]当存储系统发生掉电时需要尽快将缓存中的数据备份到非易失性存储器中,否则由于超级电容的电量不足造成电压跌落,将无法继续保存数据,造成数据丢失。根据上面的描述可知,DRAM在刷新时会消耗较多的电流,而且在刷新过程中不能执行任何操作,必须暂停数据备份,这些都会增加数据丢失的风险。
[0062]考虑到在实际应用中,并不需要将整个缓存的内容都备份出去,一方面是因为缓存的容量较大,例如1GB,全部备份需要很长的时间,超级电容的电量无法满足;另一方面是因为实际需要备份的内容较少,例如20MB,这些才是暂时还未写入闪存介质的用户数据,而缓存中的其他数据都是控制器运行所需的参数,例如地址映射表,它是可以在每次重启时重新生成的,不需要备份。在这种情况下,如果待备份的数据自从上次刷新之后还能保持足够的时间,即使在将它们全部备份到闪存介质的过程中也不会丢失,我们就可以将刷新操作停止,避免增加不必要的电能损耗。
[0063]不失一般性,假设缓存总容量是128MB,由4个DRAM芯片组成,每个芯片的数据线有8位,行地址13位对应于8K行,列地址10位对应于IK列,bank地址2位对应于4个bank,这样每个DRAM芯片的容量是8K*1K*4=32MB。每当控制器发出一个刷新命令时,4个DRAM芯片同时收到该命令并进行刷新,而每个DRAM芯片内部的4个bank也是同时进行刷新的,由同一个刷新计数器提供当前的刷新行地址,因此可以只考察某一个DRAM芯片的刷新情况。
[0064]因此,本发明提供一种存储系统掉电数据备份方法及存储系统控制器,在存储系统发生掉电、需要将缓存中的数据备份到非易失性存储器中时,在对要备份的数据进行刷新之前能将该数据备份完的情况下,停止刷新操作,可以节省不必要的刷新操作带来的电能消耗,延长备用电源的供电时间。
[0065]图4为本发明一种存储系统掉电数据备份方法的一个实施例的流程图。如图4所示,该方法包括:
[0066]步骤S101,当检测到掉电时,获取对存储系统中的缓存的当前刷新进度、所述缓存中需要备份到所述存储系统中的非易失性存储器中的数据在所述缓存中的地址、以及备份所述数据所需的第一时间。
[0067]存储系统的控制器可以连接一个电压检测电路,当它检测到系统提供的电源电压跌落到额定值以下就认为掉电了,然后产生一个指示信号给SSD的控制器,控制器检测到掉电,就可以启动掉电后的数据备份操作。
[0068]控制器控制对缓存的刷新,当控制器检测到掉电时,可以获取控制器对缓存的当前刷新进度,控制器根据地址依序地对缓存的数据进行刷新,该当前刷新进度即当前刷新到的缓存的地址。
[0069]控制器控制对缓存的读写操作,因此,可以获取缓存中需要备份到存储系统的非易失性存储器中的数据在缓存中的地址,并且能容易地计算出备份该数据到非易失性存储器的时间I。
[0070]值得说明的是,如果存储系统是如图1所示的PCIe插卡形态的SSD,则本发明的非易失性存储器可以是SSD中的闪存介质,也可以是与该SSD中的缓存连接的非易失存储器,缓存中数据的备份由SSD的控制器进行控制;如果存储系统是如图2所示的分离形态的SSD或HDD,该存储系统的控制器连接多个SSD或HDD,则本发明的非易失性存储器可以是SSD或HDD中的存储介质,也可以是与该存储系统的缓存连接的非易失存储器,缓存中数据的备份由存储系统中的控制器进行控制。
[0071]当前刷新到的缓存的地址可能小于或等于或大于待备份的数据在缓存中的起始地址,也即控制器本次刷新还未刷新到该数据、或刚刚刷新过该数据;也可能当前刷新到的缓存的地址与数据在缓存中的地址部分重合,即控制器正在刷新该数据。
[0072]步骤S102,根据所述缓存的当前刷新进度和所述数据在所述缓存中的地址,计算所述数据自上次刷新至少还能继续保持数据不丢失的第二时间。
[0073]缓存中的数据进行一次刷新能保持一定的时间以不丢失数据。根据本次刷新在缓存中的当前地址和待备份的数据在缓存中的地址,可以计算出该数据自上次刷新还能继续保持数据不丢失的时间2。
[0074]步骤S103,若所述第二时间大于所述第一时间时,停止对所述缓存的刷新,将所述数据备份到所述非易失性存储器中。
[0075]如果该数据自上次刷新还能继续保持数据不丢失的时间2大于备份该数据到存储系统的非易失性存储器的时间1,即在时间I内不进行刷新也能保持数据不丢失,则可以停止对缓存的刷新,将数据备份到存储介质中。由于停止了对缓存的刷新,可以节省不必要的刷新操作带来的电能消耗,延长备用电源的供电时间。如果时间2不大于时间1,则仍然保持刷新和备份数据。
[0076]根据本发明实施例提供的一种存储系统掉电数据备份方法,在存储系统发生掉电、需要将缓存中的数据备份到非易失性存储器中时,在对要备份的数据进行刷新之前能将该数据备份完的情况下,停止刷新操作,可以节省不必要的刷新操作带来的电能消耗,延长备用电源的供电时间。
[0077]图5为本发明一种存储系统掉电数据备份方法的另一个实施例的流程图。如图5所示,该方法包括:
[0078]步骤S201,检测掉电是否发生,如果是,则转至步骤S202 ;否则,转至步骤S201,继续检测。
[0079]控制器不停地检测是否收到存储系统上的电压检测电路发送的掉电指示信号,当电压检测电路检测到系统提供的电源电压跌落到额定值以下就认为掉电了,然后产生一个指示信号给SSD的控制器,于是控制器可以启动掉电后的数据备份操作。
[0080]步骤S202,确定 Τ1、Τ2、Λ、t、pl 和 p2。
[0081]在本发明中,缓存一般为DRAM,DRAM中的数据是按行列存储、按行刷新的,控制器获取数据存储的行号。在这里,Tl为任一行数据在刷新一次后能保持的最长时间,T2为对所述缓存进行刷新的周期,T2〈T1。相邻两行的刷新间隔Λ=Τ2/Μ,Μ为所述缓存的总行数。t为备份缓存中的数据到存储介质中所需的时间。Pl和P2分别为该待备份的数据在缓存中的最小行号和最大行号。
[0082]需要说明的是,缓存备份数据的时候都是按地址从低到高的顺序进行的,也就是与刷新的顺序一致。
[0083]按照当前的刷新进度与待备份的数据所在位置的关系,可以分为三种情况:如图6a所示,第一种情况是待备份的数据的位置在当前刷新位置以上;如图6b所示,第二种情况是待备份的数据的位置在当前刷新位置以下;如图6c所示,第三种情况是当前刷新位置在待备份的数据中间。下面针对每种情况分别进行描述:
[0084]步骤S203,确定当前刷新行号P与pl、p2的大小关系,若P≤pl,则转至步骤S204 ;若P≤p2,则转至步骤S205 ;若pl〈p〈p2,则转至步骤S206。
[0085]当前刷新位置即当前刷新行号P,若P < pl,即第一种情况;若P ^ p2,即第二种情况;若pl〈p〈p2,即第三种情况。
[0086]在本发明实施例中,可以在控制器内部集成一个计数器,也可以控制器连接一个独立的计数器,该计数器类似于DRAM内部的刷新计数器,上电复位后的初始值为0,每当控制器发出刷新命令时,计数器增值,用于记录当前的刷新进度,并与DRAM中的刷新计数器保持同步。
[0087]步骤S204,判断是否满足t〈Tl-[T2_ (pl-p) * Λ ],若是,则转至步骤S208 ;否则,转至步骤S209。
[0088]如图6a所示,P≤pl,待备份的数据的位置在当前刷新位置以上,由于pl行以上各行的数据在上次刷新时比它刷新的更晚一些,可以保持相对更长的时间,因此更不会丢失了,因此,只需考虑最小行号Pl还能继续保持的时间与备份Pl至P2行的数据到存储介质中所需的时间的关系。相对行Pl来说,自上次刷新完成一个刷新周期还需要的时间为(Ρ1-Ρ)*Λ,因此自从上次刷新以来已经过去的时间是Τ2-(ρ1_ρ)*Λ,而行pl保证不丢失数据的最长时间是Tl,一般为64ms,所以T1-[T2-(pl-p) * Δ ]是表示行pl还能继续保持数据不丢失的时间。[0089]如果t〈Tl-[T2-(pl_p)*A],则可以停止刷新,将pl行至P2行的数据全部备份到非易失性存储器中;否则,继续保持刷新。
[0090]步骤S205,判断是否满足t〈Tl-(p_pl)*A,若是,则转至步骤S208 ;否则,转至步骤 S209。
[0091]如图6b所示,P≥ p2,待备份的数据的位置在当前刷新位置以下,当前位置P在Pi之上,相当于行Pi刚被刷新过(因为刷新方向是从下到上),所以可以直接得出刷新之后已经过去的时间是(ρ-ρ1)*Λ,于是Τ1-(ρ-ρ1)*Λ就是行Pl还能继续保持数据不丢失的时间。
[0092]如果t〈Tl-(p_pl)*A,则可以停止刷新,将pl行至Ρ2行的数据全部备份到非易失性存储器中;否则,继续保持刷新。
[0093]步骤S206,确定 t4 和 t5。
[0094]步骤S207,判断是否满足t4〈Tl_T2和t5〈Tl_(p-pl) * Λ-t4,若是,则转至步骤S208 ;否则,转至步骤S209。
[0095]如图6c所示,pl〈p〈p2,当前刷新位置在待备份的数据中间,备份P行至p2行的数据到非易失性存储器所需的时间为t4,t4=t*(p2-p)/(p2-pl),t为将从行号pl至行号p2之间的数据备份到所述非易失性存储器总共所需的时间。对于P行至P2行的数据,当前控制器正好刷新至P行,因此,从行号P至行号P2之间的数据自上次刷新至少还能继续保持的时间t2=Tl-T2,t4应该满足t4〈Tl-T2。
[0096]备份PI行至P行的数据到非易失性存储器所需的时间为t5,t5=t* (p-pl) /(p2-pl)。对于pl行至P行的数据,其情况与第二种情况类似,因此,从行号Pl至行号P之间的数据自上次刷新至少还能继续保持的时间t3=Tl-(p-pl)*A-t4, t5应该满足t5〈Tl_(p-pl)* Δ-t4。
[0097]当t4〈Tl_T2且t5〈Tl-(p_pl)*A-t4则可以停止刷新,将pl行至p2行的数据备份到非易失性存储器,否则,转至步骤S209和S210,保持刷新和备份数据。
[0098]步骤S208,停止刷新。
[0099]步骤S209,保持刷新。
[0100]步骤S210,备份数据。
[0101]对于第一种和第二种情况,将pl行至p2行的数据顺序备份到非易失性存储器中;对于第三种情况,则首先将P行至p2行的数据备份到非易失性存储器,然后将Pl行至P行的数据备份到非易失性存储器。对于上述三种情况中如果数据自上次刷新至少还能继续保持数据不丢失的时间不大于备份所述数据所需的时间的情况,则需要保持刷新并备份数据。根据本发明实施例提供的一种存储系统掉电数据备份方法,在存储系统发生掉电、需要将缓存中的数据备份到非易失性存储器中时,在对要备份的数据进行刷新之前能将该数据备份完的情况下,停止刷新操作,可以节省不必要的刷新操作带来的电能消耗,延长备用电源的供电时间,缩短数据备份的时间。
[0102]图7为本发明一种存储系统控制器的一个实施例的结构示意图。如图7所示,该存储系统控制器1000包括:
[0103]获取单元11,用于当检测到掉电时,获取对存储系统中的缓存的当前刷新进度、所述缓存中需要备份到所述存储系统中的非易失性存储器中的数据在所述缓存中的地址、以及备份所述数据所需的第一时间。
[0104]计算单元12,用于根据所述缓存的当前刷新进度和所述数据在所述缓存中的地址,计算所述数据自上次刷新至少还能继续保持数据不丢失的第二时间。
[0105]刷新单元13,用于若所述第二时间大于所述第一时间时,停止对所述缓存的刷新。
[0106]备份单元14,用于将所述数据备份到所述非易失性存储器中。
[0107]根据本发明实施例提供的一种存储系统控制器,在存储系统发生掉电、需要将缓存中的数据备份到非易失性存储器中时,在对要备份的数据进行刷新之前能将该数据备份完的情况下,停止刷新操作,可以节省不必要的刷新操作带来的电能消耗,延长备用电源的供电时间。
[0108]在一些实施例中,获取单元具体用于从计数器获取对所述存储系统的缓存的当前刷新进度,所述当前刷新进度为所述计数器的当前计数值;其中,所述计数器的计数值随每次向所述缓存发送一次刷新命令按设定值递增。`
[0109]在本发明实施例中,可以在控制器内部集成一个计数器,也可以控制器连接一个独立的计数器,该计数器类似于DRAM内部的刷新计数器,上电复位后的初始值为0,每当控制器发出刷新命令时,计数器增值,用于记录当前的刷新进度,并与DRAM中的刷新计数器保持同步。
[0110]计算单元具体用于:
[0111]当所述数据在所述缓存中的最小行号Pl大于或等于所述当前刷新进度对应的缓存的行号P时,计算所述数据自上次刷新至少还能继续保持数据不丢失的第二时间tl=Tl-[T2-(pl-p)*A],其中,Tl为任一行数据在刷新一次后能保持的最长时间,T2为对所述缓存进行刷新的周期,相邻两行的刷新间隔M为所述缓存的总行数。
[0112]计算单元具体还用于:
[0113]当所述数据在所述缓存中的最大行号p2小于或等于所述当前刷新进度对应的缓存的行号P时,计算所述数据自上次刷新至少还能继续保持数据不丢失的第二时间tl=Tl-(p-pl) * Δ。
[0114]计算单元具体还用于:
[0115]当所述当前刷新进度对应的缓存的行号P大于所述数据在所述缓存中的最小行号pl,且所述当前刷新进度对应的缓存的行号P小于所述数据在所述缓存中的最大行号p2时,计算所述数据自上次刷新至少还能继续保持数据不丢失的第二时间tl包括t2和t3,其中,t2为从行号P至行号p2之间的数据自上次刷新还能继续保持的时间,t2=Tl-T2,t3为从行号pl至行号P之间的数据进行上次刷新以来还能继续保持的时间,t3=Tl-(ρ-ρ?)* Λ-t4,t4为将从行号p至行号p2之间的数据备份到所述非易失性存储器所需的时间。
[0116]刷新单元具体用于:
[0117]若t2大于t4且t3大于将从行号pl至行号P之间的数据备份到所述非易失性存储器所需的时间t5,则停止对所述缓存的刷新。
[0118]对于数据在缓存中的最小行号pl大于或等于当前刷新进度对应的缓存的行号P的情况,以及数据在缓存中的最大行号P2小于或等于当前刷新进度对应的缓存的行号P的情况,将Pl行至P2行的数据顺序备份到非易失性存储器中;对于当前刷新进度对应的缓存的行号P大于数据在缓存中的最小行号pl,且当前刷新进度对应的缓存的行号P小于数据在缓存中的最大行号p2的情况,则首先将P行至P2行的数据备份到非易失性存储器,然后将Pl行至P行的数据备份到非易失性存储器。对于上述三种情况中如果数据自上次刷新至少还能继续保持数据不丢失的时间不大于备份所述数据所需的时间的情况,则需要保持刷新并备份数据。
[0119]根据本发明实施例提供的一种存储系统控制器,在存储系统发生掉电、需要将缓存中的数据备份到非易失性存储器中时,在对要备份的数据进行刷新之前能将该数据备份完的情况下,停止刷新操作,可以节省不必要的刷新操作带来的电能消耗,延长备用电池的供电时间,缩短数据备份的时间。
[0120]所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。
[0121]在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个设备中,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0122]所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部,模块来实现本实施例方案的目的。
[0123]另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
[0124]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件设备的形式体现出来,该计算机软件设备可以存储在计算机可读存储介质中,如R0M/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0125]以上所述的实施方式,并不构成对该技术方案保护范围的限定。任何在上述实施方式的精神和原则之内所作的修改、等同替换和改进等,均应包含在该技术方案的保护范围之内。
【权利要求】
1.一种存储系统掉电数据备份方法,其特征在于,包括: 当检测到掉电时,获取对存储系统中的缓存的当前刷新进度、所述缓存中需要备份到所述存储系统中的非易失性存储器中的数据在所述缓存中的地址、以及备份所述数据所需的第一时间; 根据所述缓存的当前刷新进度和所述数据在所述缓存中的地址,计算所述数据自上次刷新至少还能继续保持数据不丢失的第二时间; 若所述第二时间大于所述第一时间时,停止对所述缓存的刷新,将所述数据备份到所述非易失性存储器中。
2.如权利要求1所述的方法,其特征在于,所述获取对存储系统中的缓存的当前刷新进度,具体为: 从计数器获取对所述存储系统的缓存的当前刷新进度,所述当前刷新进度为所述计数器的当前计数值; 其中,所述计数器的计数值随每次向所述缓存发送一次刷新命令按设定值递增。
3.如权利要求1或2所述的方法,其特征在于,所述根据所述缓存的当前刷新进度和所述数据在所述缓存中的地址,计算所述数据自上次刷新至少还能继续保持数据不丢失的第二时间,包括: 当所述数据在所述缓存中的最小行号Pi大于或等于所述当前刷新进度对应的缓存的行号P时,计算所述数据自上次刷新至少还能继续保持数据不丢失的第二时间tl=Tl-[T2-(pl-p)*A],其中,Tl为任一行数据在刷新一次后能保持的最长时间,T2为对所述缓存进行刷新的周期,相邻两行的刷新间隔M为所述缓存的总行数。
4.如权利要求3所述的方法,其特征在于,所述根据所述缓存的当前刷新进度和所述数据在所述缓存中的地址,计算所述数据自上次刷新至少还能继续保持数据不丢失的第二时间,包括: 当所述数据在所述缓存中的最大行号P2小于或等于所述当前刷新进度对应的缓存的行号P时,计算所述数据自上次刷新至少还能继续保持数据不丢失的第二时间tl=Tl- (p-pl)* Δ。
5.如权利要求3或4所述的方法,其特征在于,所述根据所述缓存的当前刷新进度和所述数据在所述缓存中的地址,计算所述数据自上次刷新至少还能继续保持数据不丢失的第二时间,包括: 当所述当前刷新进度对应的缓存的行号P大于所述数据在所述缓存中的最小行号pl,且所述当前刷新进度对应的缓存的行号P小于所述数据在所述缓存中的最大行号P2时,计算所述数据自上次刷新至少还能继续保持数据不丢失的第二时间tl包括t2和t3,其中,t2为从行号P至行号P2之间的数据自上次刷新至少还能继续保持的时间,t2=Tl-T2,t3为从行号Pl至行号P之间的数据自上次刷新至少还能继续保持的时间,t3=Tl-(ρ-ρ?)*Λ-t4,t4为将从行号p至行号p2之间的数据备份到所述非易失性存储器所需的时间。
6.如权利要求5所述的方法,其特征在于,所述若所述第二时间大于所述第一时间时,停止对所述缓存的刷新,具体为: 若t2大于t4且t3大于将从行号pl至行号P之间的数据备份到所述非易失性存储器所需的时间t5,则停止对所述缓存的刷新。
7.—种存储系统控制器,其特征在于,包括: 获取单元,用于当检测到掉电时,获取对存储系统中的缓存的当前刷新进度、所述缓存中需要备份到所述存储系统中的非易失性存储器中的数据在所述缓存中的地址、以及备份所述数据所需的第一时间; 计算单元,用于根据所述缓存的当前刷新进度和所述数据在所述缓存中的地址,计算所述数据自上次刷新至少还能继续保持数据不丢失的第二时间; 刷新单元,用于若所述第二时间大于所述第一时间时,停止对所述缓存的刷新; 备份单元,用于将所述数据备份到所述非易失性存储器中。
8.如权利要求7所述的存储系统控制器,其特征在于,所述获取单元具体用于从计数器获取对所述存储系统的缓存的当前刷新进度,所述当前刷新进度为所述计数器的当前计数值; 其中,所述计数器的计数值随每次向所述缓存发送一次刷新命令按设定值递增。
9.如权利要求7或8所述的存储系统控制器,其特征在于,所述计算单元具体用于: 当所述数据在所述缓存中的最小行 号Pi大于或等于所述当前刷新进度对应的缓存的行号P时,计算所述数据自上次刷新至少还能继续保持数据不丢失的第二时间tl=Tl-[T2-(pl-p)*A],其中,Tl为任一行数据在刷新一次后能保持的最长时间,T2为对所述缓存进行刷新的周期,相邻两行的刷新间隔Λ=Τ2/Μ,M为所述缓存的总行数。
10.如权利要求9所述的存储系统控制器,其特征在于,所述计算单元具体还用于: 当所述数据在所述缓存中的最大行号Ρ2小于或等于所述当前刷新进度对应的缓存的行号P时,计算所述数据自上次刷新至少还能继续保持数据不丢失的第二时间tl=Tl-(p-pl)* Δ。
11.如权利要求9或10所述的存储系统控制器,其特征在于,所述计算单元具体还用于: 当所述当前刷新进度对应的缓存的行号P大于所述数据在所述缓存中的最小行号pl,且所述当前刷新进度对应的缓存的行号P小于所述数据在所述缓存中的最大行号P2时,计算所述数据自上次刷新至少还能继续保持数据不丢失的第二时间tl包括t2和t3,其中,t2为从行号P至行号P2之间的数据自上次刷新还能继续保持的时间,t2=Tl-T2,t3为从行号Pl至行号P之间的数据自上次刷新至少还能继续保持的时间,t3=Tl-(ρ-ρ?)* Λ-t4,t4为将从行号P至行号P2之间的数据备份到所述非易失性存储器所需的时间。
12.如权利要求11所述的存储系统控制器,其特征在于,所述刷新单元具体用于: 若t2大于t4且t3大于将从行号pl至行号P之间的数据备份到所述非易失性存储器所需的时间t5,则停止对所述缓存的刷新。
【文档编号】G06F11/16GK103500131SQ201310428560
【公开日】2014年1月8日 申请日期:2013年9月18日 优先权日:2013年9月18日
【发明者】李延松 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1