背景技术
随着数据的***性增长,存储海量数据的集群应运而生。因为集群中存储的数据量很大,有的已达PB级,同一时刻可能会有大量的数据访问。因此,数据的存放位置是否合理,直接影响到数据的访问延迟。
数据迁移,是指不同的存储介质之间的数据移动。要完成数据迁移,***需要消耗一定的资源(包括硬件资源、带宽等)。
在存储海量数据的集群中,需要数据迁移的情形,主要有***的升级换代、数据的备份/恢复,以及分级存储***中数据的动态调整等。其中***的升级换代是大规模的、一次性的;数据的备份/恢复是基于安全考虑的;通常情况下,这两类迁移发生的次数很少,而且多是在某一时刻必须完成的。
但是分级存储***中的数据动态调整,其目的是为了使得数据的位置得到合理化的配置。分级存储,是依据数据活跃度的“二八原则”:即20%的数据处于活跃状态,而80%的数据处于不活跃状态,将服务器按硬件性能分成不同存储层次,存储层次越高,性能越好。分级存储***的目标是将活跃数据存储于层次高的存储上,但是数据的活跃度会随着时间的变化而变化,所以即便某一次的数据配置是合理的,但是过一段时间后,这种配置也会因数据活跃度的变化而显得不合时宜,因此为了达到数据合理化配置的目标,就需要进行数据迁移。
但迁移是需要耗费资源的,如果迁移次数过少,就无法充分发挥分级存储***的优势,如果迁移次数过多,***会有过多的资源用于内耗,有可能降低***对其他业务的服务质量。因此迁移的时机选择很重要,既要确保能够发挥分级存储***的优势,又不能有过多的资源用于内耗。
目前,有两种确定迁移时机的方法。一种是固定周期法,即分级存储***会在一定时间之后,进行数据迁移,而不考虑其他情况;另一种是剩余空间监视法,即监视一级存储的剩余空间,如果剩余空间不足,则启动迁移。
但是这两种方法都有不足:固定周期法所设置的周期,若过长,难以发挥分级存储的优势;若过短,***的资源会频繁用于内耗。而集群的负载处于动态变化中,不同的应用访问数据的情况不同,一个适应所有应用场景的合理周期,是不存在的,也就是说,固定周期法难以适应***负载的动态变化。
剩余空间监视法,在集群中有大量数据写入的情况下可以发挥功效,但是很多情况下,集群中会不再有数据写入而拥有频繁的数据读取,但数据的活跃度却在不断发生变化。这种情形下,分级存储***就不能进行数据迁移,也做不到合理的数据配置,发挥不了它应有的作用。
因此,需定迁移时机的方法需要合理化,一方面要能适应***负载的动态变化,另一方面,又能使得数据能在合适的节点上存放,使得***在处理活跃数据时的效率提高,最终使得数据的访问性能提高,而整体的访问延迟降低。
发明内容
本发明实施例提供一种确定数据迁移时机的方法和装置,旨在解决当前无法动态选择合适的数据迁移时机,既确保能够发挥分级存储***的优势,又不会有过多的资源用于内耗的问题。
为此,本发明实施例提供了如下技术方案:
一种确定数据迁移时机的装置,包括:
监视模块,与判断模块相连接,用于启动双线程,分别监视分级存储***中一级存储的空间使用率和数据迁移周期;
判断模块,分别与所述监视模块和数据迁移模块相连接,用于通过所述双线程,定期判断所述数据迁移条件是否已满足;
数据迁移模块,用于执行所述数据迁移;
调整模块,与所述数据迁移模块相连接,用于调整所述数据迁移周期。
本发明实施例还提供了一种确定数据迁移时机的方法,包括:
A:启动双线程,分别监视分级存储***中一级存储的空间使用率和数据迁移周期;
B:所述双线程,定期判断所述数据迁移条件是否已满足,若否,则等待相同的时间后再判断,直至判断所述数据迁移条件已满足,若是,则执行步骤C;
C:执行所述数据迁移;
D:根据所述迁移的情况,调整所述数据迁移周期;
E:所述数据迁移周期调整后,所述双线程重新读取参数,继续下一轮监视。
与现有技术相比,本发明的实施例具有如下优点:
本发明实施例通过启动双线程,分别监视分级存储***中一级存储的空间使用率和数据迁移周期,并且定期判断所述数据迁移条件是否已满足,并根据满足迁移条件的原因,调整所述数据迁移周期。确保了选择的数据迁移时机,从而不但能够充分利用分级存储***中的一级存储的空间,也能保证***及时的调整数据位置,使得***的访问性能达到最佳。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明第一实施例提供的确定数据迁移时机的方法流程图,为了便于说明,仅示出了与本发明实施例相关的部分。
如图1所示,该方法包括以下步骤:
步骤101,启动双线程,分别监视分级存储***中一级存储的空间使用率和数据迁移周期。
步骤102,所述双线程,定期判断所述数据迁移条件是否已满足,若否,则等待相同的时间后再判断,直至判断所述数据迁移条件已满足,若是,则执行步骤103。
具体的,所述的所述数据迁移条件,包括所述分级存储***中一级存储的空间使用率超过设定阈值或者,数据迁移周期到达。
具体的,当判断分级存储***中一级存储的空间使用率未超过设定阈值,数据迁移周期也未到达时,则不触发数据迁移,等到相同的时间间隔后再判断。当判断分级存储***中一级存储的空间使用率超过设定阈值,或者,数据迁移周期到达时,则触发迁移。
步骤103,执行所述数据迁移。
优选的,若触发迁移,***会记录是由哪种后台线程触发的迁移,并选择好迁移对象,完成迁移。
步骤104,根据所述迁移的情况,调整所述数据迁移周期。
具体的,当触发迁移的原因是分级存储***中一级存储的空间使用率超过设定阈值时,即:由于一级存储剩余空间不足引发的迁移,说明此时有大量的数据写入,要对数据位置做出及时调整,缩短所述数据迁移周期,作为新的所述数据迁移周期。
具体的,由于迁移周期时间消耗殆尽引发的迁移,但是却没有实际的数据移动发生,说明***在该周期内没有显著的读写操作,延长迁移周期,作为新的所述数据迁移周期。
具体的,由于迁移周期消耗殆尽引发的迁移,有正常的数据移动发生,则原有的迁移周期不变。
优选的,为所述数据迁移周期,设置上限值和下限值。当缩短所述数据迁移周期的结果低于所述下限值时,将所述下限值作为新的所述数据迁移周期,或者,当延长所述数据迁移周期的结果高于所述上限值时,将所述上限值作为新的所述数据迁移周期。
步骤105,所述数据迁移周期调整后,所述双线程重新读取参数,继续下一轮监视。
优选的,数据迁移周期调整后,所述双线程重新读取更新后的数据迁移周期参数,重新监视数据迁移条件是否达到。
基于相同的构思,本发明第二实施例还提供一种确定数据迁移时机的装置,如图2所示,该装置包括监视模块201、判断模块202、数据迁移模块203及调整模块204。
监视模块201与判断模块202相连接,用于启动双线程,分别监视分级存储***中一级存储的空间使用率和数据迁移周期。
判断模块202分别与所述监视模块201和数据迁移模块203相连接,用于通过所述双线程,定期判断所述数据迁移条件是否已满足。
具体的,所述数据迁移条件包括所述分级存储***中一级存储的空间使用率超过设定阈值或者,数据迁移周期到达。
具体的,当判断分级存储***中一级存储的空间使用率未超过设定阈值,数据迁移周期也未到达时,则不触发数据迁移,等到相同的时间间隔后再判断。当判断分级存储***中一级存储的空间使用率超过设定阈值,或者,数据迁移周期到达时,则触发迁移。
数据迁移模块203用于执行所述数据迁移。
优选的,若触发迁移,***会记录是由哪种后台线程触发的迁移,并选择好迁移对象,完成迁移。
调整模块204与所述数据迁移模块203相连接,用于调整所述数据迁移周期。
具体的,当触发迁移的原因是分级存储***中一级存储的空间使用率超过设定阈值时,即:由于一级存储剩余空间不足引发的迁移,说明此时有大量的数据写入,要对数据位置做出及时调整,缩短所述数据迁移周期,作为新的所述数据迁移周期。
具体的,由于迁移周期时间消耗殆尽引发的迁移,但是却没有实际的数据移动发生,说明***在该周期内没有显著的读写操作,延长迁移周期,作为新的所述数据迁移周期。
具体的,由于迁移周期消耗殆尽引发的迁移,有正常的数据移动发生,则原有的迁移周期不变。
优选的,为所述数据迁移周期,设置上限值和下限值。当缩短所述数据迁移周期的结果低于所述下限值时,将所述下限值作为新的所述数据迁移周期,或者,当延长所述数据迁移周期的结果高于所述上限值时,将所述上限值作为新的所述数据迁移周期。
优选的,所述调整模块204与所述监视模块201相连接,用于所述双线程重新读取参数后,启动双线程,分别监视分级存储***中任一级存储的空间使用率和数据迁移周期,即返回第一实施例中的步骤101。
优选的,数据迁移周期调整后,所述双线程重新读取更新后的数据迁移周期参数,重新监视数据迁移条件是否达到。
本发明实施例提供一种确定数据迁移时机的方法和装置,旨在解决当前无法动态选择合适的数据迁移时机,既确保能够发挥分级存储***的优势,又不会有过多的资源用于内耗的问题,不但能够充分利用分级存储***中的一级存储的空间,也能保证***及时的调整数据位置,使得***的访问性能达到最佳。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。