不需要被迀移到高速设备层中。这里暂时只讨论副本O被迀移至高速设备层的故障域O的情况。
[0067]存储设备110继续对磁盘阵列125中各个数据块的访问频率进行监控,当发现已迀移至高速设备层的故障域O的数据块又变冷时,需要将副本O所在的数据块又迀回至低速设备层中。为了防止副本O和副本I存储在同一个故障域,可以根据预设的关联关系确定副本O所在的数据块将迀回的低速设备层的故障域。
[0068]数据迀移的方法
[0069]下面介绍本发明实施例提供的数据迀移的方法,如图5所示,为本发明实施例提供的数据迀移的方法的流程图,所述方法可以应用于图1所示的存储系统以及图2所示的存储设备中;所述存储设备至少包括第一层级磁盘集合和第二层级磁盘集合,所述第一层级磁盘集合包括第一层级故障域,所述第二层级磁盘集合包括至少两个第二层级故障域,其中,所述第一层级故障域是指所述第一层级磁盘集合中的一段故障隔离的逻辑存储区域,所述第二层级故障域是指所述第二层级磁盘集合中的一段故障隔离的逻辑存储区域;所述存储设备中保存有N份目标数据,N为大于I的正整数,所述N小于第一层级故障域的个数,并且所述N小于第二层级故障域的个数。需要说明的是,本实施例中的第一层级磁盘集合也是图3所示的低速设备层,本实施例中的第二层级磁盘集合也是图3所示的高速设备层。那么,第一层级故障域是低速设备层包含的故障域,可能是一个HDD,也可能是一个RAID,或者其他故障隔离的逻辑存储区域;第二层级故障域是高速设备层包含的故障域,可能是一个SSD,也可能是一个RAID,或者其他故障隔离的逻辑存储区域。
[0070]所述方法包括如下步骤:
[0071]步骤S201:处理器118统计所述第一层级故障域中的数据块的访问频率,所述数据块包括第i份目标数据,其中i为大于或等于零的整数,并且,i〈N。
[0072]在本实施例中,存储设备中共保存了 N份目标数据,也就是前面描述的数据副本。并且需要对N份目标数据进行编号,例如第O份目标数据(副本O)、第I份目标数据(副本I)、第2份目标数据(副本2)……第N-1份目标数据(副本N-1)。其中,第i份目标数据保存在第一层级故障域中的一个数据块中。
[0073]处理器118可以定时统计第一层级故障域中各个数据块的访问频率,当发现所述第i份目标数据所在的数据块的访问频率达到预设阈值时,执行步骤S202。需要说明的是,对于统计各个数据块的访问频率,可以是由定时器触发,也可以是人工触发,或者其他方式触发,本实施例不对此做限定。
[0074]步骤S202:当所述数据块的访问频率达到预设阈值时,处理器118在所述第二层级磁盘集合中确定待存储所述数据块的第二层级故障域,所述确定出的第二层级故障域没有保存所述N份目标数据的其中一份。
[0075]当步骤S201中处理器118统计出的所述数据块的访问频率达到预设阈值时,说明该数据块中包含的数据成为热数据,为了提高访问效率,可以将其迀移至第二层级磁盘集合(例如,多个SSD)中。
[0076]进一步地,由于第二层级磁盘集合中包含多个第二层级故障域,处理器118需要确定将所述数据块迀移至多个第二层级故障域中的哪个故障域中。
[0077]一种实施方式是,依次判断第二层级磁盘集合中的各个第二层级故障域是否保存有目标数据,若没有,则可以将该第二层级故障域确定为待存储所述数据块的第二层级故障域;若有,则继续判断下一个第二层级故障域是否保存有目标数据,直至找到没有保存所述目标数据的第二层级故障域。需要说明的是,对于这种实施方式,确定出待存储所述数据块的第二层级故障域之后,可以保存所述第二层级故障域与所述数据块迀出的第一层级故障域之间的对应关系。当所述数据块的访问频率低于预设阈值时,说明所述数据块变冷,可以根据保存的对应关系将所述数据块迀回至原来的第一层级故障域。
[0078]另一种实施方式是,利用设定的关联关系确定待存储所述数据块的第二层级故障域。所述设定的关联关系是指所述目标数据保存在存储设备110中的份数“N”、所述数据块中保存的目标数据的编号“i”与第二层级故障域的编号之间的关系。具体来说,所述第二层级故障域的编号等于所述N与一个随机数的乘积再加上所述i,从而获得的和,其中,所述随机数不超过所述存储设备所包含的第二层级故障域的个数除以所述N从而获得的商。下面将举例说明所述关联关系:
[0079]假设N = 3,i = 0,也就是说,所述目标数据保存在存储设备110中保存了 3份,每份目标数据的编号分别是O、1、2。其中,所述数据块中保存的目标数据是第O份目标数据。那么,待存储所述数据块的第二层级故障域的编号就等于3与随机数的乘积再加上0,从而获得的和。当随机数取O时,待存储所述数据块的第二层级故障域的编号为O ;当随机数取I时,待存储所述数据块的第二层级故障域的编号为3 ;当随机数取2时,待存储所述数据块的第二层级故障域的编号为6…然而,随机数不能超过第二层级故障域的个数除以所述N从而获得的商。假设第二层级故障域的个数为7,那么7除以3所得的商为2,因此随机数须小于或等于2。
[0080]因此,对于第O份目标数据,可以迀移至编号为O或者3或者6的第二层级故障域中。
[0081]可选的,对于这种实施方式,在确定出待存储所述数据块的第二层级故障域之后,可以不保存所述第二层级故障域与所述数据块迀出的第一层级故障域之间的对应关系。当所述数据块的访问频率低于预设阈值(所述数据块变冷)时,可以根据与前面类似的关联关系将所述数据块迀回至第一层级磁盘集合的一个第一层级故障域中。此时,第一层级故障域的编号等于所述N与一个随机数的乘积再加上所述i,从而获得的和,其中,所述随机数不超过所述存储设备所包含的第一层级故障域的个数除以所述N从而获得的商。例如,所述目标数据的编号不变,仍然是第O份目标数据,所述目标数据保存在存储设备110中的份数仍然是3,即i = 0,N = 3,那么根据所述关联关系获得的第一层级故障域的编号可以是O或者3或者6 (假设第一层级磁盘集合中也包含7个第一个层级故障域)。也就是说,当所述数据块需要迀回第一层级磁盘集合时,可以迀移至编号为O的第一层级故障域或者编号为3的第一层级故障域或者编号为O的第一层级故障域。
[0082]可选的,对于上述实施方式也可以在所述确定出待存储所述数据块的第二层级故障域之后,保存所述第二层级故障域与所述数据块迀出的第一层级故障域之间的对应关系。当所述数据块的访问频率低于预设阈值时,可以根据保存的对应关系将所述数据块迀回至原来的第一层级故障域。可以理解的是,根据保存的对应关系只能将所述数据块迀回至原来的第一层级故障域,与利用关联关系重新确定的第一层级故障域相比,其范围更窄。
[0083]步骤S203:处理器118将所述数据块迀移到所述确定出的第二层级故障域中。
[0084]根据步骤S202的示例,处理器118可以将所述数据块迀移至编号为O或者3或者6的第二层级故障域中。
[0085]当故障域是一个磁盘时,编号为O或者3或者6的第二层级故障域可以分别是编号为O或者3或者6的磁盘;当故障域是一个RAID时,编号为O或者3或者6的第二层级故障域可以分别是编号为O或者3或者6的RAID,此时,将所述数据块迀移到所述确定出的第二层级故障域中具体可以是将所述数据块条带化写入所述RAID中。
[0086]本发明实施例统计所述第一层级故障域中的数据块的访问频率,所述数据块包括多份目标数据中的其中一份,当第一层级故障域中的数据块的访问频率达到预设阈值时,将所述数据块迀移至第二层级故障域,并且所述第二层级故障域没有保存所述目标数据,这就避免了在执行分级存储操作时将多份目标数据迀移至同一个故障域中,保证了数据的可靠性。
[0087]在上述实施例中,还可以包括:
[0088]步骤204:处理器118接收所述目标数据,根据预设的规则确定所述目标数据在所述存储设备中保存的份数为N ;对所述目标数据进行复制,生成N份所述目标数据。
[0089]处理器118可以接收主机100发送的数据写入请求,所述数据写入请求中携带所述目标数据。这里的预设的规则是指所述目标数据的重要性与所述目标数据需要保存的份数之间的对应关系。例如,如果所述目标数据是业务数据,那么其重要性不高,可以在存储设备110中保存2份;如果所述目标数据是业务数据的元数据,那么其重要性较高,可以在存储设备110中保存3份,等等。
[0090]在确定所述目标数据在所述存储设备中保存的份数N之后,存储设备110可以对所述目标数据进行复制,生成N份目标数据。
[0091]本发明实施例的装置
[0092]本发明实施例提供一种数据迀移装置,所述数据迀移装置位于存储设备的控制器中,所述存储设备至少包括所述控制器、第一层级磁盘集合和第二层级磁盘集合,所述第一层级磁盘集合包括第一层级故障域,所述第二层级磁盘集合包括至少两个第二层级故障域;所述存储设备中保存有N份目标数据,N为大于I的正整数,所述N小于第一层级故障域的个数,并且所述N小于第二层级故障域的个数;如图6所示,所述数据迀移装置包括:
[0093]统计模块401,用于统计所述第一层级故障域中的数据块的访问频率,所述数据块包括第i份目标数据,其中i为大于或等于零的整数,并且,i〈N ;
[0094]确定模块402,用于当所述数据块的访问频率达到预设阈值时,在所述第二层级磁盘集合中确定待存储所述数据块的第二层级故障域,所述确定出的第二层级故障域没有保存所述目标数据;
[0095]迀移模块403,用于将所述数据块迀移到所述确定出的第二层级故障域中。
[0096]可选的,所述确定模块402具体用于