一种位图处理方法和装置制造方法及图纸

技术编号:36370580 阅读:71 留言:0更新日期:2023-01-18 09:28
本申请实施例公开了一种位图处理方法和装置,该方法包括:将位图划分为预设数量的位图块;将划分出的全部位图块中被程序访问命中的位图块加载到内存中。通过该实施例方案,实现了在保证细粒度的情况下,控制位图占用的内存在合理的范围内。存在合理的范围内。存在合理的范围内。

【技术实现步骤摘要】
一种位图处理方法和装置


[0001]本文涉及数据处理技术,尤指一种位图处理方法和装置。

技术介绍

[0002]异步复制技术是一种重要的数据保护技术,通过周期性的将主逻辑卷的变化数据复制到从逻辑卷上实现对业务数据的持续保护。主逻辑卷用于承接用户业务,从逻辑卷用于保护用户数据,当主逻辑卷所在系统发生灾难时,可手动切换到从逻辑卷上继续承接业务。
[0003]异步复制技术的一般实现方法为将主逻辑卷的数据修改记录到元数据中,当复制周期到来时,利用快照技术生成一个完整的主逻辑卷视图,根据元数据中的记录,将有修改的数据从生成的快照视图中复制到从逻辑卷中。而这种记录数据差异的方法不仅仅应用于异步复制技术中,在其他的数据保护特性中也有广泛应用。
[0004]一般通过位图来记录主资源上的数据变化,位图(记录数据集差异的一种实现方法)的通用实现为将逻辑卷按照规定数据块大小划分为多个块,使用位图节点来标记每块数据是否有修改,当有写操作时,计算出所写数据块对应的位图节点,将内存中对应的位图节点标记为有修改。例如,逻辑卷大小为1T,以8K的数据块大小来划分逻辑卷,那么可以将逻辑卷分成1T/8K=2^27个数据块,每个数据块对应位图中的一个位图节点,那么该逻辑卷对应的位图就有2^27个位图节点,每个位图节点用于描述对应数据块的信息(如该数据块是否被修改,该数据块是否已被传送至从端等信息),假设1个位图节点占用1字节存储空间,那么位图占用空间大小为128MB,当写操作命中第n个数据块时,将第n个位图节点中的信息置为已修改。
[0005]数据块切分粒度决定了位图的大小,切分粒度越细,位图越大,所需占用内存也就越大,随着磁盘存储容量的飞速增长,位图占用内存将会越来越大,如何降低内存占用是一个关键问题。而以粗粒度来切分时,虽然可以降低位图的内存占用,但是需要复制大量未修改的数据到从逻辑卷上,不仅会使复制的时间被拉长,影响主逻辑卷业务,还会导致用于网络传输的带宽资源的浪费。

技术实现思路

[0006]本申请实施例提供了一种位图处理方法和装置,能够在保证细粒度的情况下,控制位图占用的内存在合理的范围内。
[0007]本申请实施例提供了一种位图处理方法,所述方法可以包括:
[0008]将位图划分为预设数量的位图块;
[0009]将划分出的全部位图块中被程序访问命中的位图块加载到内存中。
[0010]在本申请的示例性实施例中,在将划分出的全部位图块中被程序访问命中的位图块加载到内存中以后,所述方法还可以包括:
[0011]采用内存中预设的最近最少使用算法lru链表将加载到内存中的位图块的位图块
对象进行连接;所述lru链表具有预设长度;
[0012]在所述lru链表的头部每插入一个新的位图块对象,所述lru链表中原来插入的位图块对象向所述lru链表的尾部进行推移;
[0013]当所述lru链表被占满时,将位于所述lru链表的尾部的位图块对象对应的位图块淘汰出内存,并将淘汰的位图块写回元数据中。
[0014]在本申请的示例性实施例中,所述lru链表可以包括:活跃对象链表;
[0015]所述方法还可以包括:在所述lru链表的头部插入新的位图块对象时,将所述新的位图块对象插入所述活跃对象链表的头部。
[0016]在本申请的示例性实施例中,所述lru链表还可以包括:不活跃对象链表;
[0017]当所述活跃对象链表被占满时,将位于所述活跃对象链表的尾部的位图块对象淘汰出所述活跃对象链表,并将淘汰的位图块对象插入所述不活跃对象链表的头部;
[0018]当所述不活跃对象链表被占满时,将位于所述不活跃对象链表的尾部的位图块对象对应的位图块淘汰出内存,并将淘汰的位图块写回元数据中。
[0019]在本申请的示例性实施例中,所述方法还可以包括:
[0020]获取需要修改的第一位图块的序号;
[0021]根据所述序号从所述lru链表中查找所述第一位图块对应的第一位图块对象;
[0022]当在所述lru链表中未查找到所述第一位图块对象时,计算所述第一位图块的序号的哈希值,根据所述哈希值从预设的哈希表中查找所述第一位图块;
[0023]当在所述哈希表中未查找到所述第一位图块时,从元数据中获取所述第一位图块加载到内存中,并将所述第一位图块对象插入所述lru链表的头部以及所述哈希表中。
[0024]在本申请的示例性实施例中,所述方法还可以包括:将所述lru链表头部第一预设长度内的位图块对象定义为活跃位图块对象,从所述lru链表中的活跃位图块对象所在区域查找所述第一位图块对象。
[0025]在本申请的示例性实施例中,所述方法还可以包括:
[0026]当在所述lru链表中查找到所述第一位图块对象,或者,在所述哈希表中查找到所述第一位图块时,对所述第一位图块中待修改的第一位图节点进行修改,并将修改后的第一位图块对象插入所述lru链表的头部。
[0027]在本申请的示例性实施例中,所述方法还可以包括:
[0028]在从元数据中获取所述第一位图块之后,对所述第一位图块中待修改的第一位图节点进行修改,并将修改后的第一位图块对应的第一位图块对象添加到所述lru链表的头部以及所述哈希表中;或者,
[0029]在从元数据中获取所述第一位图块,并将所述第一位图块对应的第一位图块对象添加到所述lru链表的头部以及所述哈希表中之后,对所述第一位图块中待修改的第一位图节点进行修改。
[0030]在本申请的示例性实施例中,所述计算所述第一位图块的序号的哈希值包括:采用预设的哈希计算式计算所述第一位图块的序号的哈希值;
[0031]所述哈希计算式包括:h(x)=(x%(k/2))*(y>>1);
[0032]其中,h(x)为哈希值;x为所述第一位图块的序号;k为最大规格位图的位图块个数,y为位图id。
[0033]在本申请的示例性实施例中,所述方法还可以包括:从所述元数据中获取所述第一位图块后,根据所述哈希计算式计算所述第一位图块的序号的哈希值,并根据计算出的所述哈希值将第一位图块对象插入所述哈希表,以实现对所述位图块的序号进行哈希映射。
[0034]在本申请的示例性实施例中,所述方法还可以包括:当计算出的哈希值冲突时,建立冲突链表。
[0035]本申请实施例还提供了一种位图处理装置,可以包括处理器和计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令被所述处理器执行时,实现上述任意一项所述的位图处理方法。
[0036]与相关技术相比,本申请实施例可以包括:将位图划分为预设数量的位图块;将划分出的全部位图块中被程序访问命中的位图块加载到内存中。通过该实施例方案,仅将命中的位图块加载到内存中,实现了在保证细粒度的情况下,控制位图占用的内存在合理的范围内。
[0037]本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种位图处理方法,其特征在于,所述方法包括:将位图划分为预设数量的位图块;将划分出的全部位图块中被程序访问命中的位图块加载到内存中。2.根据权利要求1所述的位图处理方法,其特征在于,在将划分出的全部位图块中被程序访问命中的位图块加载到内存中以后,所述方法还包括:采用内存中预设的最近最少使用算法lru链表将加载到内存中的位图块的位图块对象进行连接;所述lru链表具有预设长度;在所述lru链表的头部每插入一个新的位图块对象,所述lru链表中原来插入的位图块对象向所述lru链表的尾部进行推移;当所述lru链表被占满时,将位于所述lru链表的尾部的位图块对象对应的位图块淘汰出内存,并将淘汰的位图块写回元数据中。3.根据权利要求2所述的位图处理方法,其特征在于,所述lru链表包括:活跃对象链表;所述方法还包括:在所述lru链表的头部插入新的位图块对象时,将所述新的位图块对象插入所述活跃对象链表的头部。4.根据权利要求3所述的位图处理方法,其特征在于,所述lru链表还包括:不活跃对象链表;当所述活跃对象链表被占满时,将位于所述活跃对象链表的尾部的位图块对象淘汰出所述活跃对象链表,并将淘汰的位图块对象插入所述不活跃对象链表的头部;当所述不活跃对象链表被占满时,将位于所述不活跃对象链表的尾部的位图块对象对应的位图块淘汰出内存,并将淘汰的位图块写回元数据中。5.根据权利要求2所述的位图处理方法,其特征在于,所述方法还包括:获取需要修改的第一位图块的序号;根据所述序号从所述lru链表中查找所述第一位图块对应的第一位图块对象;当在所述lru链表中未查找到所述第一位图块对象时,计算所述第一位图块的序号的哈希值,根据所述哈希值从预设的哈希表中查找所述第一位图块;当在所述哈希表中未查找到所述第一位图块时,从元数据中获取所述第一位图块加载到内存中,并将所述第一位图块对象插入所述lru链表的头部以及所述哈希表中。6.根据权...

【专利技术属性】
技术研发人员:孔超张飞程冰冰
申请(专利权)人:西安宇视信息科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1