一种用于数据恢复的缓存替换方法与系统技术方案

技术编号:10434053 阅读:177 留言:0更新日期:2014-09-17 11:44
本发明专利技术公开了一种用于数据恢复的缓存替换方法,包括:数据备份步骤:在数据备份过程中,按照数据块的备份顺序记录各数据块所属容器的ID,得到该数据备份的容器访问顺序;哈希表生成步骤:根据数据备份的容器访问顺序信息,建立哈希表,其中:哈希表使用容器ID作为键,相同容器ID被映射到一起,并按访问时间排序组成队列;数据恢复步骤:在数据块进行恢复时,根据恢复缓存中的容器恢复数据块,所述恢复缓存中存储有根据所述哈希表确定的最近将被访问到的N个容器,所述N为所述恢复缓存中能够存储容器的个数。本发明专利技术还提供了相应的缓存替换系统。本发明专利技术方法最优缓存替换策略的缓存命中率更高,减少了读取容器的次数,增加了恢复性能。

【技术实现步骤摘要】
一种用于数据恢复的缓存替换方法与系统
本专利技术属于计算机存储
,更具体地,涉及一种用于数据恢复的缓存替换方法与系统,用于在数据去重备份存储系统中利用数据访问模式提高恢复缓存命中率。
技术介绍
近年来,由于全球的数据信息存储量正爆炸式增长,利用数据去重技术(DataDeduplicat1n)存储和管理海量数据得到了工业界和学术界的广泛关注。数据去重作为一种通过大规模地有效地消除冗余数据的压缩技术,不仅能节省存储空间、提升存储系统性能,而且通过避免冗余数据传输可以节省网络带宽。数据去重技术目前已被IBM、HP、EMC等存储大公司应用到存储产品中,标志着数据去重技术已经成为存储领域的主流技术。 数据去重首先将数据分块,并为每个数据块计算SHA-1摘要作为数据块的唯一标识(指纹)。具有相同指纹的数据块被认为内容相同。数据去重为存储系统内的数据块的指纹建立索引,当需要存储一个数据块时,通过查询其指纹可以知道数据块是否已经存储。如果这个数据块已经被存储了,则无需再次存储该数据块,只需用指针指向磁盘上的副本。如果数据块未被存储,则将其写入容器缓冲区,当容器满时批量地写入磁盘(容器是存储管理的最小单元)。 数据去重的这种存储方式导致了数据碎片的产生,即一次备份的数据块被离散地分布在磁盘上。例如,重复的数据块存放在旧容器内,新容器只有新的数据块(这些新数据块可能在数据流上的距离很远)。当恢复一次备份数据时,需要按顺序依次恢复数据块,当需要的数据块在某个容器中时,就将整个容器预取到恢复缓存中来。恢复缓存通常使用最近最少访问替换算法(LRU)。由于新容器中的数据块并不是按顺序访问,因此需要频繁地交替访问新旧容器,对一个容器的多次访问(读取其中的数据块)可能相隔很长时间,这就为恢复缓存替换方法提出了挑战。传统的LRU并不是最有效的,较低的恢复缓存命中率导致恢复性能下降。与LRU不同的是,最优恢复缓存替换方法是根据未来的访问信息,替换掉未来最久不会被访问的元素。然而,由于最优恢复缓存替换方法需要知道未来数据的访问模式,导致难以实现。
技术实现思路
本专利技术的目的在于提供一种用于数据恢复的最优恢复缓存替换方法,用于在数据去重备份存储系统中利用数据访问模式提高恢复缓存命中率。该方法在备份的过程记录下数据块的访问顺序,恢复时利用这些信息实现最优恢复缓存替换方法。 为了实现上述目的,按照本专利技术的一个方面,提供了一种用于数据恢复的恢复缓存替换方法,包括: (I)数据备份步骤:在数据备份过程中,按照数据块的备份顺序记录各数据块所属容器的ID,得到该数据备份的容器访问顺序; (2)哈希表生成步骤:根据数据备份的容器访问顺序信息,建立哈希表,其中:哈希表使用容器ID作为键,相同容器ID被映射到一起,并按访问时间排序组成队列; (3)数据恢复步骤:在数据块进行恢复时,根据恢复缓存中的容器恢复数据块,所述恢复缓存中存储有根据所述哈希表确定的最近将被访问到的N个容器,所述N为所述恢复缓存中能够存储容器的个数。 进一步地,所述步骤(I)具体包括: (1.1)对数据流中的文件进行分块,得到多个数据块; (1.2)计算每个数据块的数据块指纹; (1.3)在备份数据块时,在指纹索引中查找数据块指纹,判断该数据块是否已经被存储;如果数据块未被存储过,则标记数据块为新数据块,写入容器缓冲区,待容器缓冲区满时一次性写入磁盘,并将该数据块所属的容器ID以访问记录的形式添加到元数据文件中;如果数据块已被存储过,则标记数据块为重复数据块,获得重复数据块所属的容器ID,并将该容器ID以访问记录的形式添加到元数据文件中。 进一步地,所述步骤(2)中根据数据备份的容器访问顺序信息,建立哈希表,具体包括: (2.1)顺序读取元数据文件中的各数据块所属容器的ID ; (2.2)将各数据块所属容器的ID组成一个哈希表,哈希表用容器ID作为键,相同容器ID被映射到一起,并按访问时间排序组成队列,队列中的元素按顺序表示该容器被访问的时间。 进一步地,所述步骤(3)中根据恢复缓存中的容器恢复数据块,具体包括: (3.1)如果请求恢复操作的数据块所属的容器已在恢复缓存中,进入步骤(3.4);否则,进入步骤(3.2); (3.2)从磁盘上读取所述数据块所属的容器,如果恢复缓存未满,将容器插入恢复缓存,进入步骤(3.4);否则,进入步骤(3.3); (3.3)查询哈希表,找到恢复缓存中每个容器的下次访问时间,将最久不会被访问的容器踢出恢复缓存,并将所述数据块所属的容器插入恢复缓存;同时,将所述数据块所属的容器在哈希表中对应队列的对头元素出队,队列的对头元素指示所述数据块所属的容器下一次被访问的时间; (3.4)从恢复缓存中读取所述数据块,恢复成功; (3.5)判断所有数据块是否都恢复完成,恢复结束;否则,进入步骤(3.1)。 按照本专利技术的另一方面,还提供了一种用于数据恢复的恢复缓存替换系统,所述系统包括: 数据备份模块,用于在数据备份过程中,按照数据块的备份顺序记录各数据块所属容器的ID,得到该数据备份的容器访问顺序; 哈希表生成模块,用于根据数据备份的容器访问顺序信息,建立哈希表,其中:哈希表使用容器ID作为键,相同容器ID被映射到一起,并按访问时间排序组成队列; 数据恢复模块,用于在数据块进行恢复时,根据恢复缓存中的容器恢复数据块,所述恢复缓存中存储有根据所述哈希表确定的最近将被访问到的N个容器,所述N为所述恢复缓存中能够存储容器的个数。 进一步地,所述数据备份模块具体包括: 数据块分块模块:用于对数据流中的文件进行分块,得到多个数据块; 指纹计算模块,用于计算上述每个数据块的数据块指纹; 容器ID获取模块,用于在备份数据块时,在指纹索引中查找数据块指纹,判断该数据块是否已经被存储;如果数据块未被存储过,则标记数据块为新数据块,写入容器缓冲区,待容器缓冲区满时一次性写入磁盘,并将该数据块所属的容器ID以访问记录的形式添加到元数据文件中;如果数据块已被存储过,则标记数据块为重复数据块,获得重复数据块所属的容器ID,并将该容器ID以访问记录的形式添加到元数据文件中。 进一步地,所述哈希表生成模块具体包括: 容器ID读取模块,用于顺序读取元数据文件中的各数据块所属容器的ID ; 哈希表生成模块,用于将容器ID读取模块读取的各数据块所属容器的ID组成一个哈希表,哈希表用容器ID作为键,相同容器ID被映射到一起,并按访问时间排序组成队列,队列中的元素按顺序表示该容器被访问的时间。 进一步地,所述数据恢复模块具体包括: 容器位于恢复缓存判断模块,用于判断请求恢复操作的数据块所属的容器是否已在恢复缓存中,如果请求恢复操作的数据块所属的容器已在恢复缓存中,转数据块读取模块;否则,转恢复缓存插入模块; 恢复缓存插入模块,用于从磁盘上读取所述数据块所属的容器,如果恢复缓存未满,将容器插入恢复缓存,转数据块读取模块;否则,转哈希表查询模块; 哈希表查询模块,用于查询哈希表,找到恢复缓存中每个容器的下次访问时间,将最久不会被访问的容器踢出恢复缓存,并将所述数据块所属的容器插入恢复缓存;同时,将本文档来自技高网
...
一种用于数据恢复的缓存替换方法与系统

【技术保护点】
一种用于数据恢复的恢复缓存替换方法,其特征在于,所述方法包括:(1)数据备份步骤:在数据备份过程中,按照数据块的备份顺序记录各数据块所属容器的ID,得到该数据备份的容器访问顺序;(2)哈希表生成步骤:根据数据备份的容器访问顺序信息,建立哈希表,其中:哈希表使用容器ID作为键,相同容器ID被映射到一起,并按访问时间排序组成队列;(3)数据恢复步骤:在数据块进行恢复时,根据恢复缓存中的容器恢复数据块,所述恢复缓存中存储有根据所述哈希表确定的最近将被访问到的N个容器,所述N为所述恢复缓存中能够存储容器的个数。

【技术特征摘要】
1.一种用于数据恢复的恢复缓存替换方法,其特征在于,所述方法包括: (1)数据备份步骤:在数据备份过程中,按照数据块的备份顺序记录各数据块所属容器的ID,得到该数据备份的容器访问顺序; (2)哈希表生成步骤:根据数据备份的容器访问顺序信息,建立哈希表,其中:哈希表使用容器ID作为键,相同容器ID被映射到一起,并按访问时间排序组成队列; (3)数据恢复步骤:在数据块进行恢复时,根据恢复缓存中的容器恢复数据块,所述恢复缓存中存储有根据所述哈希表确定的最近将被访问到的N个容器,所述N为所述恢复缓存中能够存储容器的个数。2.如权利要求1所述的方法,其特征在于,所述步骤(1)具体包括: (1.D对数据流中的文件进行分块,得到多个数据块; (1.2)计算每个数据块的数据块指纹; (1.3)在备份数据块时,在指纹索引中查找数据块指纹,判断该数据块是否已经被存储;如果数据块未被存储过,则标记数据块为新数据块,写入容器缓冲区,待容器缓冲区满时一次性写入磁盘,并将该数据块所属的容器ID以访问记录的形式添加到元数据文件中;如果数据块已被存储过,则标记数据块为重复数据块,获得重复数据块所属的容器ID,并将该容器ID以访问记录的形式添加到元数据文件中。3.如权利要求1或2所述的方法,其特征在于,所述步骤(2)中根据数据备份的容器访问顺序信息,建立 哈希表,具体包括: (2.1)顺序读取元数据文件中的各数据块所属容器的ID ; (2.2)将各数据块所属容器的ID组成一个哈希表,哈希表用容器ID作为键,相同容器ID被映射到一起,并按访问时间排序组成队列,队列中的元素按顺序表示该容器被访问的时间。4.如权利要求1或2所述的方法,其特征在于,所述步骤(3)中根据恢复缓存中的容器恢复数据块,具体包括: (3.1)如果请求恢复操作的数据块所属的容器已在恢复缓存中,进入步骤(3.4);否则,进入步骤(3.2); (3.2)从磁盘上读取所述数据块所属的容器,如果恢复缓存未满,将容器插入恢复缓存,进入步骤(3.4);否则,进入步骤(3.3); (3.3)查询哈希表,找到恢复缓存中每个容器的下次访问时间,将最久不会被访问的容器踢出恢复缓存,并将所述数据块所属的容器插入恢复缓存;同时,将所述数据块所属的容器在哈希表中对应队列的对头元素出队,队列的对头元素指示所述数据块所属的容器下一次被访问的时间; (3.4)从恢复缓存中读取所述数据块,恢复成功; (3.5)判断所有数据块是否都恢复完成,恢复结束;否则,进入步骤(3.1)。5.一种用于数据恢复的恢复缓存替换系统,其特征在于,所述系统包括: 数据备份模...

【专利技术属性】
技术研发人员:冯丹付忞华宇夏文黄方亭柳青
申请(专利权)人:华中科技大学
类型:发明
国别省市:湖北;42

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

1