采用位映像表算法处理存储设备快照的方法技术

技术编号:2837056 阅读:217 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种采用位映像表算法处理存储设备快照的方法,通过多级动态位映像表算法处理原区块设备与快照设备之间数据的对应关系。位映像表结构包含状态数据变量、总数数据变量、当前数数据变量以及起始位置数据变量。多级动态位映像表结构的级数依照原区块设备的大小和级数确定原则计算出来,通过读取位映像表结构对应的位记录的信息可以确定原区块设备和快照设备之间数据的对应关系。采用位映像表结构可以减少占用的系统内存空间,大大提高查找效率。

【技术实现步骤摘要】

本专利技术涉及一种存储设备的快照处理方法,特别是涉及一种。
技术介绍
为满足当前人们存储大量数据的需要,存储设备的数据容量越来越大,而且对数据安全的要求也越来越高。针对在某一时刻在线备份大量数据或在线保护数据的需要,出现了设备快照的技术。快照技术为一种针对包括硬盘、逻辑磁盘等区块设备的备份方式,创建快照的设备称作原区域设备,创建出的快照是与原区块设备相关联的区块设备,称作快照设备。原区块设备可以有多个快照设备,每个快照设备都记录在原区块设备的结构中。原区块设备和快照设备的描述结构都保存在系统随机存取内存(Random-access memory,简称RAM)中,快照设备本身也需要使用一定的实体存储空间。一般创建快照时需要指定原区块设备、快照实际容量大小以及快照设备本身使用的存储设备,快照设备的逻辑存储容量为原区块设备的大小。快照设备上存储数据并划分空间的最小单位为数据块,一般大小为64k。创建快照设备时需计算出所有可以用来存储原区块设备上数据的数据块数,并使用以下结构描述每个数据块[原区块设备(org_dev),原区块设备的偏移位置(org_offset),快照设备(snap_dev),快照的偏移位置(snap_offset)],我们称为数据块描述chunk_des。快照设备已经使用的数据块个数标记为当前数据块数cur_chunk,所有的数据块个数标记为总数据块数total_chunk,并标记快照设备关于所有数据块的描述表为chunk_table。在写入数据至原区块设备时,需要判断原区块设备上数据是否应该先读出并写入至快照设备中,并在所有快照设备处理完成之后,才将数据写入原区块设备,进而通过此种方式可以将快照创建前原区块设备上的数据保留在快照设备中。对于上述原区块设备上数据是否应该先读出并写入至快照设备中的判断,目前现有技术一般采用以下方式1、为了便于查询,每个数据块的描述修改为[链表指针,chunk_des],称为数据块描述修改chunk_des_new。2、创建快照设备时计算出可用于保存原区块设备上数据的数据块个数,创建出数据块描述表chunk_table,初始化chunk_des,将每个chunk_des_new中的链表指针赋值为空。3、采用哈希(hash)算法,将所有快照上已经保存有原区块设备上数据的chunk_des_new加入哈希表中。4、写入数据至原区块设备时,从哈希表中查找是否原区块设备上此位置的数据已经写入快照设备上(通过在哈希表中查找chunk_table中是否有原区块设备对应的org_dev和org_offset的chunk_des_new存在而实现);如果已经写入,则不用从原区块设备上读出对应位置的数据写入至快照设备上;否则需要从原区块设备上读出对应位置的数据写入快照设备上,并将快照设备当前的chunk_des写入快照设备相应位置;最后将chunk_des_new加入到哈希表中并将快照设备当前的数据块使用数加1。因此现有技术的主要缺点如下1、每个chunk_des_new结构需要至少16个字节,这样对一个稍大规模的快照设备需要消耗的系统RAM过多,如果快照可以自动扩容,具有较大容量的快照设备中用以描述数据块的chunk_table很大,进而占用的RAM将会很大。2、对于较大的快照设备,需要的chunk_des_new的个数较多,对其按照哈希算法的查找效率并不高,即每次查找原区块设备的数据是否存在于快照的chunk_table中时会耗费较多时间,进而查找速度比较慢,效率不高。3、由于RAM的限制,快照设备的个数不能太多,并且每个快照设备的规模不能太大。4、此外,因以上限制,数据块大小不能太小,进而导致每次写入数据至原区块设备时,需要从原区块设备上读出数据块大小的数据写入到快照设备上,这样降低了快照设备的有效使用率。
技术实现思路
本专利技术所要解决的问题与缺陷在于,提供一种,通过一个多级动态位映像(bitmap)表算法处理一个原区块设备与一个快照设备之间数据的对应关系。本专利技术所提供的一种,包括以下步骤a)创建快照设备,并从操作系统获取系统页的大小作为快照设备存储数据并划分空间的最小单位的数据区块大小;b)启始化包含状态数据变量、总数数据变量、当前数数据变量以及起始位置数据变量的第一级位映像表结构,并添加第一级位映像表结构的指针至快照设备的描述结构中,其中,状态数据变量为列举数据型态,此列举数据型态包含未分配数据变量、未写满数据变量以及已写满数据变量,总数数据变量为原区块设备的大小除以原区块设备计数的基本单位的值,起始位置数据变量为指针数据型态;c)当需要将数据写入原区块设备时,判断指针所指向的当前位映像表结构的状态数据变量的值;d)当状态数据变量的值为未分配时,依照级数确定原则判断当前位映像表结构是否为最后一级位映像表结构;e)当前位映像表结构为最后一级位映像表结构时,为当前位映像表结构的起始位置数据变量分配与当前位映像表结构的总数数据变量的值相等数目位的内存空间,将每个内存空间赋值为0,将当前位映像表结构的状态数据变量赋值为未写满,并执行步骤j);f)当前位映像表结构不为最后一级位映像表结构时,按以下公式为当前位映像表结构的起始位置数据变量分配内存空间该当前位映像表结构的总数数据变量的值×本级每一位映像表结构的大小,并将当前位映像表结构的状态数据变量赋值为未写满;g)依照级数确定原则计算出当前位映像表结构的下一级位映像表结构的总数数据变量的值,并依照数据写入到该原区块设备的位置确定当前位映像表结构的起始位置数据变量的值,将指针指向当前位映像表结构的起始位置数据变量的值所对应的位映像表结构,并执行步骤c);h)当状态数据变量的值为未写满时,判断当前位映像表结构是否为最后一级位映像表结构,当前位映像表结构为最后一级位映像表结构时,执行步骤j);i)当前位映像表结构不为最后一级位映像表结构时,依照数据写入到原区块设备的位置确定当前位映像表结构的起始位置数据变量的值,将指针指向当前位映像表结构的起始位置数据变量的值所对应的位映像表结构,并执行步骤c);j)判断当前位映像表结构的起始位置数据变量对应的位是否为1,当前位映像表结构的起始位置数据变量的值对应的位为1时,则将数据写入原区块设备;k)当前位映像表结构的起始位置数据变量的值对应的位为0时,从原区块设备的对应位置读取数据并将读取的数据写入快照设备的对应位置,并将当前位映像表结构的起始位置数据变量的值对应的位赋值为1,且将当前位映像表结构的当前数数据变量的值加1,并执行步骤1);l)判断当前位映像表结构的当前数数据变量的值是否等于当前位映像表结构的总数数据变量的值,当前位映像表结构的当前数数据变量的值不等于当前位映像表结构的总数数据变量的值时,将数据写入原区块设备,否则,执行步骤m);m)释放当前位映像表结构所占用的内存空间,将当前位映像表结构的状态数据变量的值赋值为已写满,将指针指向上一级位映像表结构,并将上一级位映像表结构的当前数数据变量的值加1,执行步骤1);以及n)当状态数据变量的值为已写满时,将数据写入原区块设备。所述的方法还包括输入该原区块设备的名称、该快照设备使用的实体区块设备的名称以及该快照设备的大小的参数;以及本文档来自技高网
...

【技术保护点】
一种采用位映像表算法处理存储设备快照的方法,通过一多级动态位映像表算法处理一原区块设备与一快照设备之间数据的对应关系,其特征在于,该方法包含以下步骤:a)创建一快照设备,并从操作系统获取系统页的大小作为该快照设备存储数据并划分空间的 最小单位的数据区块大小;b)启始化一包含一状态数据变量、一总数数据变量、一当前数数据变量以及一起始位置数据变量的第一级位映像表结构,并添加该第一级位映像表结构的指针至该快照设备的描述结构中,其中,该状态数据变量为一列举数据型态,该列 举数据型态包含一未分配数据变量、一未写满数据变量以及一已写满数据变量,该总数数据变量为该原区块设备的大小除以该原区块设备计数的基本单位的值,该起始位置数据变量为一指针数据型态;c)当需要将一数据写入该原区块设备时,判断指针所指向的一 当前位映像表结构的该状态数据变量的值;d)当该状态数据变量的值为未分配时,依照一级数确定原则判断该当前位映像表结构是否为最后一级位映像表结构;e)当该当前位映像表结构为最后一级位映像表结构时,为该当前位映像表结构的起始位置数 据变量分配与该当前位映像表结构的总数数据变量的值相等数目位的内存空间,将每个内存空间赋值为0,将该当前位映像表结构的状态数据变量赋值为未写满,并执行步骤j);f)当该当前位映像表结构不为最后一级位映像表结构时,按以下公式为该当前位映 像表结构的起始位置数据变量分配内存空间:该当前位映像表结构的总数数据变量的值×本级每一位映像表结构的大小,并将该当前位映像表结构的状态数据变量赋值为未写满;g)依照该级数确定原则计算出该当前位映像表结构的下一级位映像表结构的总数数据 变量的值,并依照该数据写入到该原区块设备的位置确定该当前位映像表结构的起始位置数据变量的值,将指针指向该当前位映像表结构的起始位置数据变量的值所对应的位映像表结构,并执行步骤c);h)当该状态数据变量的值为未写满时,判断该当前位映像 表结构是否为最后一级位映像表结构,当该当前位映像表结构为最后一级位映像表结构时,执行步骤j);i)当该当前位映像表结构不为最后一级位映像表结构时,依照该数据写入到该原区块设备的位置确定该当前位映像表结构的起始位置数据变量的值,将指针 指向该当前位映像表结构的起始位置数据变量的值所对应的位映像表结构,并执行步骤c);j)判断该当前位映像表结构的起始位置数据变量...

【技术特征摘要】
1.一种采用位映像表算法处理存储设备快照的方法,通过一多级动态位映像表算法处理一原区块设备与一快照设备之间数据的对应关系,其特征在于,该方法包含以下步骤a)创建一快照设备,并从操作系统获取系统页的大小作为该快照设备存储数据并划分空间的最小单位的数据区块大小;b)启始化一包含一状态数据变量、一总数数据变量、一当前数数据变量以及一起始位置数据变量的第一级位映像表结构,并添加该第一级位映像表结构的指针至该快照设备的描述结构中,其中,该状态数据变量为一列举数据型态,该列举数据型态包含一未分配数据变量、一未写满数据变量以及一已写满数据变量,该总数数据变量为该原区块设备的大小除以该原区块设备计数的基本单位的值,该起始位置数据变量为一指针数据型态;c)当需要将一数据写入该原区块设备时,判断指针所指向的一当前位映像表结构的该状态数据变量的值;d)当该状态数据变量的值为未分配时,依照一级数确定原则判断该当前位映像表结构是否为最后一级位映像表结构;e)当该当前位映像表结构为最后一级位映像表结构时,为该当前位映像表结构的起始位置数据变量分配与该当前位映像表结构的总数数据变量的值相等数目位的内存空间,将每个内存空间赋值为0,将该当前位映像表结构的状态数据变量赋值为未写满,并执行步骤j);f)当该当前位映像表结构不为最后一级位映像表结构时,按以下公式为该当前位映像表结构的起始位置数据变量分配内存空间该当前位映像表结构的总数数据变量的值×本级每一位映像表结构的大小,并将该当前位映像表结构的状态数据变量赋值为未写满;g)依照该级数确定原则计算出该当前位映像表结构的下一级位映像表结构的总数数据变量的值,并依照该数据写入到该原区块设备的位置确定该当前位映像表结构的起始位置数据变量的值,将指针指向该当前位映像表结构的起始位置数据变量的值所对应的位映像表结构,并执行步骤c);h)当该状态数据变量的值为未写满时,判断该当前位映像表结构是否为最后一级位映像表结构,当该当前位映像表结构为最后一级位映像表结构时,执行步骤j);i)当该当前位映像表结构不为最后一级位映像表结构时,依照该数据写入到该原区块设备的位置确定该当前位映像表结构的起始位...

【专利技术属性】
技术研发人员:郭建锋陈玄同刘文涵
申请(专利权)人:英业达股份有限公司
类型:发明
国别省市:71[中国|台湾]

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

1