首页 / 专利库 / 软件 / 逻辑文件 / 基于指纹的文件备份方法

基于指纹的文件备份方法

阅读:218发布:2024-02-18

专利汇可以提供基于指纹的文件备份方法专利检索,专利查询,专利分析的服务。并且基于指纹的文件备份方法,属于计算机存储备份技术领域,目的在于减少重复数据的备份,节省备份所需的网络带宽和存储开销,提高备份效率。本 发明 包括备份过程和恢复过程;本发明采用基于锚的文件分 块 技术识别备份文件的冗余数据,具有 修改 稳定性 ,计算开销小;文件的数据分块以其指纹为标识存储在存储 服务器 的块卷上,避免了重复数据的备份,并便于数据分块被不同文件共享;文件元数据和文件分块索引存储在存储服务器的存储卷上,便于用户组织存储池,实现逻辑对象的个性化管理。,下面是基于指纹的文件备份方法专利的具体信息内容。

1.一种基于指纹的文件备份方法,包括备份过程和恢复过程,在分布式网络中,在每一个需要备份数据的主机上安装备份代理,在数据备份的目的机上安装存储服务器;备份时由备份代理将文件分并计算其指纹,把数据分块或指纹通过网络送往存储服务器,恢复时备份代理则通过网络从存储服务器接收数据并写到所在主机指定的目录下;存储服务器负责存储卷及块卷的管理、并建立一个目录数据库记录作业的运行信息,备份时负责数据分块的索引和存储,恢复时重构文件以向备份代理提供完整的文件数据;
(1)所述备份过程包括:
(1.1)初始化步骤,备份代理为文件序号赋初值0,并向存储服务器传送备份作业名称、备份作业所使用的存储池名称;
(1.2)认证步骤,存储服务器对备份代理进行认证,认证包括核对登录密码、作业定义是否合法、作业是否有权访问所指定的存储池;认证通过则进行下一步;认证未通过则退出;
(1.3)作业标识步骤,存储服务器为此备份作业分配一个作业标识符和一个会话标识符;
(1.4)存储池判断步骤,存储服务器判断备份代理所指定的存储池中是否有可用的存储卷,有则进行下一步;否则向备份代理返回要求标识存储卷的信息后退出;
(1.5)分配存储资源步骤,存储服务器从备份代理所指定的存储池中取出一个可用的存储卷,在存储卷中创建存储块块头和存储块,存储块块头中写入作业标识符和会话标识符,在存储块中创建一个会话头和会话,并把存储池名称、存储池类型、作业标识符、作业名称、备份代理名称、文件集名称、作业级别写入会话头中;
(1.6)文件集判断步骤,备份代理判断作业文件集是否为空,如为空则转步骤(1.16);否则进行下一步;
(1.7)读取文件步骤,将文件序号累增1,并从作业文件集中读取一个文件F;
(1.8)备份文件元数据步骤,备份代理把文件序号的值和文件F的元数据传送给存储服务器;存储服务器在会话中创建第一个记录,记录由记录头和记录体组成,记录头由文件序号字段、文件流字段和记录长度字段构成;为该记录的记录头文件序号字段赋值文件序号、文件流字段赋值1,把文件F元数据存入该记录的记录体中,把文件F元数据长度存入该记录的记录头记录长度字段;然后创建第二个记录,为该记录的记录头文件序号字段赋值文件序号、文件流字段赋值10,准备接收文件数据;
(1.9)文件分块步骤,备份代理对文件F的数据进行基于锚的文件分块,得到文件F的一个分块队列,包括下述子步骤:
(1.9.1)判断文件长度,如果文件小于48字节,则整个文件为一个数据分块,结束文件分块步骤;否则进行下一步;
(1.9.2)以文件的开头48字节b1,b2,...,b48为一个窗口,以式H1=(b1×p47+b2×p46+...+b48)mod M计算文件的第一个窗口的哈希值,存储在变量H1中,式中p为素数,其值大于等于13,M为大于等于32位的二进制常数;
(1.9.3)向后滑动一个字节,以式H2=(p×H1+b49-b1×p48)mod M计算文件第二个窗口b2,b3,...,b49的哈希值,存储在变量H2中;
(1.9.4)以此类推,计算文件的所有窗口的哈希值;
(1.9.5)对每个窗口的哈希值,取其低13位组成一个二进制数,如果此数等于预定值,则确定其相应的窗口为一个锚,预定值为0~8×1024-1之间的整数;
(1.9.6)以锚为边界把文件分成大小不一的数据分块,除文件末尾的数据分块外,当数据分块小于2KB时,则舍弃该数据分块的锚,用下一个锚作为数据分块的边界,直至该数据分块不小于2KB;在连续64KB的文件长度中都没有锚,则取此64KB为一个数据分块;
(1.10)分块队列判断步骤,备份代理判断文件F的分块队列是否为空,如为空则转步骤(1.15);否则,进行下一步;
(1.11)计算指纹步骤,备份代理从分块队列中取出一个数据分块C,计算该分块的SHA-1哈希值H(C)作为C的指纹,并把H(C)传送给存储服务器;
(1.12)分块查询步骤,存储服务器接受到H(C)后,以H(C)为关键字在分块索引数据库中进行分块查询,如果在数据库中查找到相同指纹的数据分块,进行下一步;否则转步骤(1.14);
(1.13)存储分块索引步骤,存储服务器向备份代理返回查找成功信息,同时把数据库中该分块的引用计数加1,在作业会话记录头的文件序号字段=文件序号、文件流字段=10的文件记录中写入本数据分块的索引信息;备份代理接收到查找成功信息,返回步骤(1.10)处理文件的下一个数据分块;
(1.14)存储分块数据步骤,存储服务器向备份代理返回查询失败信息,同时等待备份代理传送数据分块C;备份代理接收到查询失败的信息时,向存储服务器传送数据分块C;存储服务器接收到数据分块C后,向备份代理返回就绪信息,同时把收到的数据分块C存入块卷中,并在分块索引数据库中建立数据分块C的索引信息,在作业会话记录头的文件序号字段=文件序号、文件流字段=10的文件记录中追加本数据分块的索引,处理完后,等待备份代理发送下一个数据分块的处理请求;备份代理接收到存储服务器返回的就绪信息后,返回步骤(1.10)处理文件的下一个数据分块;
(1.15)结束文件备份步骤,备份代理向存储服务器传送文件F的备份结束信息,并返回步骤(1.6)处理文件集中的下一个文件;
(1.16)结束作业备份步骤,备份代理向存储服务器发送作业结束信息;存储服务器接收到作业结束信息后向备份代理返回OK信息,同时把本作业的相关管理信息,包括作业标识符、会话标识符以及会话的存储位置存入目录数据库中,会话的存储位置包括存储池标识符、存储池中存储卷的名称、存储卷中的块号;然后创建一个会话尾,把作业所包含的文件数、作业所包含的字节数、作业的起始存储块编号、结束存储块编号、作业完成状态信息写入会话尾中,结束本作业;
(2)所述恢复过程包括:
(2.1)初始化步骤,备份代理向存储服务器传送待恢复作业的标识符;
(2.2)认证步骤,存储服务器对备份代理进行认证,认证包括核对登录密码、要恢复的作业的标识符是否存在;认证通过则进行下一步;认证未通过则退出;
(2.3)定位作业数据步骤,存储服务器以待恢复作业的标识符为关键字从目录数据库中取得待恢复作业的会话标识符以及会话的存储位置,包括存储池的标识符、存储池中存储卷的名称、存储卷中的存储块编号;
(2.4)作业验证步骤,存储服务器给文件序号赋初值1,给元数据标志赋初值1,并从存储卷上的作业会话中读取会话头记录,用会话头记录对作业进行验证,即检查作业的相关信息和会话头记录中记载的信息是否一致,如果一致,进行下一步;否则向备份代理返回出错信息后退出;
(2.5)读取记录步骤,存储服务器从存储卷上的作业会话中读取下一个记录;
(2.6)会话尾判断步骤,存储服务器读取记录的文件序号字段,如果文件序号字段等于-2则转步骤(2.13);否则,进行下一步;
(2.7)文件序号判断步骤,如果文件序号字段等于文件序号,则进行下一步;否则,向备份代理返回出错信息后退出;
(2.8)文件元数据判断步骤,存储服务器读取记录的文件流字段,如果元数据标志为1并且文件流字段=1,则进行下一步;否则,转步骤(2.10);
(2.9)恢复文件元数据步骤,存储服务器为元数据标志赋值0,并读取记录中的文件元数据传送给备份代理;备份代理接收到文件元数据后,向存储服务器返回OK信息,并在所在主机的指定目录下创建文件,准备接收文件数据;存储服务器接收到备份代理返回的OK信息后,转步骤(2.5);
(2.10)文件索引判断步骤,如果元数据标志为0并且文件流字段=10,则进行下一步,否则,向备份代理返回出错信息后退出;
(2.11)文件重构步骤,存储服务器为元数据标志赋值1,将文件序号累增1,并读取记录中文件的分块索引,由分块索引从相应的块卷中读取组成文件的所有数据分块并按顺序拼接成文件,然后向备份代理传送文件数据;
(2.12)恢复文件数据步骤,备份代理接收到文件数据后,向存储服务器返回OK信息,并把接收到的数据写到所在主机的指定目录下新创建的同名文件中;存储服务器接收到备份代理返回的OK信息后,转步骤(2.5);
(2.13)结束作业恢复步骤,存储服务器向备份代理发送恢复作业结束信息同时结束作业运行;
所述块卷由系统管理员标识,块卷由块卷卷标和大小一致的块组成,块卷卷标记录块卷的名称、块卷所包含的块数、空闲块数、块卷卷标标志、块卷的标识时间信息;空闲块数记录块卷中未被使用的块的数量,对块卷进行更新操作时,空闲块数改变;所述块卷的块由块头和块体组成,块头用于管理开销,块体用于存储数据分块;
所述存储卷由用户标识,存储卷由存储卷卷标和大小一致的存储块组成,存储卷卷标记录存储卷的名称、存储卷所属的存储池名称、存储池类型、存储卷的媒体类型、存储卷所包含的数据块数、存储卷卷标标志以及存储卷卷标识的时间信息;所述存储块由存储块块头和大小不一的记录组成,所述记录分为会话头记录、文件记录和会话尾记录;所述会话头记录记录此作业会话所属的存储池名称、存储池类型、作业标识符、作业名称、备份代理名称、文件集名称、作业类型、作业级别信息,存储在作业会话的第一个存储块的第一个记录中;所述文件记录存储作业包含的文件信息,每个文件占用两个文件记录,其中一个存储文件元数据,另一个存储文件的分块索引;所述会话尾记录记录作业所包含的文件数、字节数、作业的起始存储块编号、结束存储块编号、作业完成状态信息,存储在作业会话的最后一个存储块的最后一个记录中;所述会话头记录、多个文件记录和会话尾记录构成作业会话。

说明书全文

技术领域

发明属于计算机存储技术,具体涉及一种基于指纹的文件备份方法

背景技术

在数据量越来越庞大的今天,备份数据所占用的存储空间以及消耗的网络带宽也越来越大。在备份相同信息量的情况下,如何节省网络带宽、减少备份数据所占用的存储空间就是一个富有挑战性的课题。传统的备份技术在备份文件时,由于不能识别文件内部以及文件之间的数据相似性,因而会备份大量的重复数据。而且随着备份次数的增多,重复数据量会迅速增加。作全量备份时,会把所有的文件都备份一次,而不管这些文件在存储服务器上是否存在相同的副本。增量备份虽然只备份修改过的文件,也是把整个修改过的文件备份一次,而不管文件内部修改数据量的大小。由于文件的粒度有大有小,极端情况下,对一个大文件(几MB到几GB都有可能),仅仅修改了数个字节,作增量备份时也必须再把整个文件备份一次,这样就会把大量重复的数据备份到存储服务器上,不仅浪费存储空间而且无端增加了网络负担。为了兼顾数据备份/恢复的性能和存储迅速增加的备份数据,传统的技术使用磁盘作为在线备份介质并在后台使用磁盘到光盘(D2O)、磁盘到磁带(D2T)等技术把数据转储到海量磁带库或光盘库上。由于磁带库和光盘库存在备份/恢复性能差、管理麻烦、数据容易丢失或出错等缺点,难以满足高连续性、高可用性应用环境下的数据备份/恢复需求,目前基于磁盘的备份技术正在成为业界的热点。使用基于磁盘的备份技术的一个关键就是消除备份中的重复数据,提高存储资源利用率。使用传统备份技术容易产生海量备份数据的一个主要原因就是备份了大量重复的数据,这种重复数据的增长速度很容易超过磁盘存储技术的发展所新增的存储容量。研究表明,文件内部或文件之间包含大量的相似数据,每年新增的数据中有超过半数的引用数据。所谓的引用数据就是包含大量重复内容且具有较长保存周期的数据,据IBM公司的一份研究报告,引用数据正在以每年68%的速度增长。

发明内容

本发明提出一种基于指纹的文件备份方法,针对传统的文件备份技术容易备份大量重复数据的缺点,采用基于锚的文件分技术,识别文件内部和文件之间的数据相似性,以减少重复数据的备份,节省备份所需的网络带宽和存储开销,提高备份效率。
本发明的一种基于指纹的文件备份方法,包括备份过程和恢复过程,在分布式网络中,在每一个需要备份数据的主机上安装备份代理,在数据备份的目的机上安装存储服务器;备份时由备份代理将文件分块并计算其指纹,把数据分块或指纹通过网络送往存储服务器,恢复时备份代理则通过网络从存储服务器接收数据并写到所在主机指定的目录下;存储服务器负责存储卷及块卷的管理、并建立一个目录数据库记录作业的运行信息,备份时负责数据分块的索引和存储,恢复时重构文件以向备份代理提供完整的文件数据;
(1)所述备份过程包括:
(1.1)初始化步骤,备份代理为文件序号赋初值0,并向存储服务器传送备份作业名称、备份作业所使用的存储池名称;
(1.2)认证步骤,存储服务器对备份代理进行认证,认证包括核对登录密码、作业定义是否合法、作业是否有权访问所指定的存储池;认证通过则进行下一步;认证未通过则退出;
(1.3)作业标识步骤,存储服务器为此备份作业分配一个作业标识符和一个会话标识符;
(1.4)存储池判断步骤,存储服务器判断备份代理所指定的存储池中是否有可用的存储卷,有则进行下一步;否则向备份代理返回要求标识存储卷的信息后退出;
(1.5)分配存储资源步骤,存储服务器从备份代理所指定的存储池中取出一个可用的存储卷,在存储卷中创建存储块块头和存储块,存储块块头中写入作业标识符和会话标识符,在存储块中创建一个会话头和会话,并把存储池名称、存储池类型、作业标识符、作业名称、备份代理名称、文件集名称、作业级别写入会话头中;
(1.6)文件集判断步骤,备份代理判断作业文件集是否为空,如为空则转步骤(1.16);否则进行下一步;
(1.7)读取文件步骤,将文件序号累增1,并从作业文件集中读取一个文件F;
(1.8)备份文件元数据步骤,备份代理把文件序号的值和文件F的元数据传送给存储服务器;存储服务器在会话中创建第一个记录,记录由记录头和记录体组成,记录头由文件序号字段、文件流字段和记录长度字段构成;为该记录的记录头文件序号字段赋值文件序号、文件流字段赋值1,把文件F元数据存入该记录的记录体中,把文件F元数据长度存入该记录的记录头记录长度字段;然后创建第二个记录,为该记录的记录头文件序号字段赋值文件序号、文件流字段赋值10,准备接收文件数据;
(1.9)文件分块步骤,备份代理对文件F的数据进行基于锚的文件分块,得到文件F的一个分块队列;
(1.10)分块队列判断步骤,备份代理判断文件F的分块队列是否为空,如为空则转步骤(1.15);否则,进行下一步;
(1.11)计算指纹步骤,备份代理从分块队列中取出一个数据分块C,计算该分块的SHA-1哈希值H(C)作为C的指纹,并把H(C)传送给存储服务器;
(1.12)分块查询步骤,存储服务器接受到H(C)后,以H(C)为关键字在分块索引数据库中进行分块查询,如果在数据库中查找到相同指纹的数据分块,进行下一步;否则转步骤(1.14);
(1.13)存储分块索引步骤,存储服务器向备份代理返回查找成功信息,同时把数据库中该分块的引用计数加1,在作业会话记录头的文件序号字段=文件序号、文件流字段=10的文件记录中写入本数据分块的索引信息;备份代理接收到查找成功信息,返回步骤(1.10)处理文件的下一个数据分块;
(1.14)存储分块数据步骤,存储服务器向备份代理返回查询失败信息,同时等待备份代理传送数据分块C;备份代理接收到查询失败的信息时,向存储服务器传送数据分块C;存储服务器接收到数据分块C后,向备份代理返回就绪信息,同时把收到的数据分块C存入块卷中,并在分块索引数据库中建立数据分块C的索引信息,在作业会话记录头的文件序号字段=文件序号、文件流字段=10的文件记录中追加本数据分块的索引,处理完后,等待备份代理发送下一个数据分块的处理请求;备份代理接收到存储服务器返回的就绪信息后,返回步骤(1.10)处理文件的下一个数据分块;
(1.15)结束文件备份步骤,备份代理向存储服务器传送文件F的备份结束信息,并返回步骤(1.6)处理文件集中的下一个文件;
(1.16)结束作业备份步骤,备份代理向存储服务器发送作业结束信息;存储服务器接收到作业结束信息后向备份代理返回OK信息,同时把本作业的相关管理信息,包括作业标识符、会话标识符以及会话的存储位置存入目录数据库中,会话的存储位置包括存储池标识符、存储池中存储卷的名称、存储卷中的存储块编号;然后创建一个会话尾,把作业所包含的文件数、作业所包含的字节数、作业的起始存储块编号、结束存储块编号、作业完成状态等信息写入会话尾中,结束本作业。
(2)所述恢复过程包括:
(2.1)初始化步骤,备份代理向存储服务器传送待恢复作业的标识符;
(2.2)认证步骤,存储服务器对备份代理进行认证,认证包括核对登录密码、要恢复的作业的标识符是否存在;认证通过则进行下一步;认证未通过则退出;
(2.3)定位作业数据步骤,存储服务器以待恢复作业的标识符为关键字从目录数据库中取得待恢复作业的会话标识符以及会话的存储位置,包括存储池的标识符、存储池中存储卷的名称、存储卷中的存储块编号;
(2.4)作业验证步骤,存储服务器给文件序号赋初值1,给元数据标志赋初值1,并从存储卷上的作业会话中读取会话头记录,用会话头记录对作业进行验证,即检查作业的相关信息和会话头记录中记载的信息是否一致,如果一致,进行下一步;否则向备份代理返回出错信息后退出;
(2.5)读取记录步骤,存储服务器从存储卷上的作业会话中读取下一个记录;
(2.6)会话尾判断步骤,存储服务器读取记录的文件序号字段,如果文件序号字段等于-2则转步骤(2.13);否则,进行下一步;
(2.7)文件序号判断步骤,如果文件序号字段等于文件序号,则进行下一步;否则,向备份代理返回出错信息后退出;
(2.8)文件元数据判断步骤,存储服务器读取记录的文件流字段,如果元数据标志为1并且文件流字段=1,则进行下一步;否则,转步骤(2.10);
(2.9)恢复文件元数据步骤,存储服务器为元数据标志赋值0,并读取记录中的文件元数据传送给备份代理;备份代理接收到文件元数据后,向存储服务器返回OK信息,并在所在主机的指定目录下创建文件,准备接收文件数据;存储服务器接收到备份代理返回的OK信息后,转步骤(2.5);
(2.10)文件索引判断步骤,如果元数据标志为0并且文件流字段=10,则进行下一步,否则,向备份代理返回出错信息后退出;
(2.11)文件重构步骤,存储服务器为元数据标志赋值1,将文件序号累增1,并读取记录中文件的分块索引,由分块索引从相应的块卷中读取组成文件的所有数据分块并按顺序拼接成文件,然后向备份代理传送文件数据;
(2.12)恢复文件数据步骤,备份代理接收到文件数据后,向存储服务器返回OK信息,并把接收到的数据写到所在主机的指定目录下新创建的同名文件中;存储服务器接收到备份代理返回的OK信息后,转步骤(2.5);
(2.13)结束作业恢复步骤,存储服务器向备份代理发送恢复作业结束信息同时结束作业运行。
所述的一种基于指纹的文件备份方法,其特征在于:所述备份过程的文件分块步骤,包括下述过程:
(1)判断文件长度,如果文件小于48字节,则整个文件为一个数据分块,结束文件分块步骤;否则进行下一步;
(2)以文件的开头48字节b1,b2,...,b48为一个窗口,以式H1=(b1×p47+b2×p46+...+b48)mod M计算文件的第一个窗口的哈希值,存储在变量H1中,式中p为素数,其值大于等于13,M为大于等于32位的二进制常数;
(3)向后滑动一个字节,以式H2=(p×H1+b49-b1×p48)mod M计算文件第二个窗口b2,b3,...,b49的哈希值,存储在变量H2中;
(4)以此类推,计算文件的所有窗口的哈希值;
(5)对每个窗口的哈希值,取其低13位组成一个二进制数,如果此数等于预定值,则确定其相应的窗口为一个锚,预定值为0~8×1024-1之间的整数;
(6)以锚为边界把文件分成大小不一的数据分块,除文件末尾的数据分块外,当数据分块小于2KB时,则舍弃该数据分块的锚,用下一个锚作为数据分块的边界,直至该数据分块不小于2KB;在连续64KB的文件长度中都没有锚,则取此64KB为一个数据分块。
所述的一种基于指纹的文件备份方法,其特征在于:所述块卷由系统管理员标识,块卷由块卷卷标和大小一致的块组成,块卷卷标记录块卷的名称、块卷所包含的块数、空闲块数、块卷卷标标志、块卷的标识时间信息;空闲块数记录块卷中未被使用的块的数量,对块卷进行更新操作时,空闲块数改变;所述块卷的块由块头和块体组成,块头用于管理开销,块体用于存储数据分块。
所述的一种基于指纹的文件备份方法,其特征在于:所述存储卷由用户标识,存储卷由存储卷卷标和大小一致的存储块组成,存储卷卷标记录存储卷的名称、存储卷所属的存储池名称、存储池类型、存储卷的媒体类型、存储卷所包含的存储块数、存储卷卷标标志以及存储卷卷标识的时间信息;所述存储块由存储块块头和大小不一的记录组成,所述记录分为会话头记录、文件记录和会话尾记录;所述会话头记录记录此作业会话所属的存储池名称、存储池类型、作业标识符、作业名称、备份代理名称、文件集名称、作业类型、作业级别信息,存储在作业会话的第一个存储块的第一个记录中;所述文件记录存储作业包含的文件信息,每个文件占用两个文件记录,其中一个存储文件元数据,另一个存储文件的分块索引;所述会话尾记录记录作业所包含的文件数、字节数、作业的起始存储块号、结束存储块号、作业完成状态信息,存储在作业会话的最后一个存储块的最后一个记录中;所述会话头记录、多个文件记录和会话尾记录构成作业会话。
本发明文件分块步骤中基于锚的文件分块具有如下两个特点:(1)具有修改稳定性,也就是说对一个文件的修改仅仅影响修改区域内相邻的数据分块,其他数据分块的边界不会发生移动。这样在对一个文件进行增量备份时,仅仅修改过的几个数据分块需要备份,其他的数据分块可以和以前的备份文件进行共享。修改稳定性还保证了文件内部以及文件之间的数据相似性不因比特偏移而被遗漏,从而最大限度地检测出文件的重复数据。(2)滑动窗口具有计算方便的优点,其下一个窗口的哈希值可以很容易从前一个窗口的哈希值的基础上计算出来,因而使得基于锚的文件分块具有计算开销小的优点,整个算法的时间复杂度为O(n),其中n为文件包含的字节数。
本发明采用基于锚的文件分块技术识别备份文件的冗余数据,具有修改稳定性,计算开销小;文件的数据分块以其指纹为标识存储在存储服务器的块卷上,避免了重复数据的备份,并便于数据分块被不同文件共享;文件元数据和文件分块索引存储在存储服务器的存储卷上,便于用户组织存储池,实现逻辑对象的个性化管理。
附图说明
图1为本发明的备份过程流程图
图2为本发明的恢复过程流程图;
图3为本发明的文件分块示意图;
图4为本发明的块卷格式示意图;
图5为本发明的块卷块头格式示意图;
图6为本发明的分块索引数据库记录格式;
图7为本发明的存储卷格式示意图;
图8为本发明的存储块格式示意图;
图9为本发明的存储块块头格式示意图;
图10为本发明的记录头格式示意图;
图11为本发明的文件分块索引格式示意图。

具体实施方式

下面结合附图和实施例对本发明进一步详细说明。
图1为本发明的备份过程流程图;图2为本发明的恢复过程流程图。
图3所示为一个文件分块后再对文件编辑时其分块的变化情况,从图示可以看出,基于锚的文件分块具有修改稳定性,也就是说对一个文件的修改仅仅影响修改区域内相邻的数据分块,其他数据分块的边界不会发生移动。A行所示为一个文件被锚分成了大小不一的8块,每一块的边界带纹齿的部分为48字节的锚。b、c、d行显示对文件进行修改后,数据分块的变化情况,带阴影的部分为被修改过的部分。b行:对文件的修改发生在块B4内,修改后并没有产生新的块,仅仅使块B4变成了块B9,其它的块都没有发生改变。这时候的文件备份就只需要把块B9备份过去替代原来的块B4就可以了。c行:对文件的修改发生在块B5内,修改后产生了新的锚,把块B5分成了两块B10和B11,其它的块都没有发生改变。这时候的文件备份就只需要把块B10和B11备份过去代替原来的块B5就行了。d行:对文件的修改发生在块B2和B3的分界处,结果使B2和B3之间的锚丢失,两块合并成为一个块B12。这时候的文件备份只需把块B12备份过去代替原来的块B2和B3。
图1中存储分块数据步骤,把文件的数据分块存储在存储服务器的块卷上;图2中文件重构步骤,由分块索引从相应的块卷中读取组成文件的所有数据分块并按顺序拼接成文件;所述块卷由系统管理员标识,块卷的格式如图4所示:
块卷由块卷卷标(ChunkVolume label)和大小一致的块(Chunk)组成。块卷卷标记录了块卷的名称、块卷所包含的块数、空闲块数、块卷卷标标志、块卷标识时间等信息。其中空闲块数记录了块卷中未被使用的块(块的引用计数为0)的数量,对块卷进行更新操作时,空闲块数会发生改变;
块卷上的块大小一致,每块由36字节的块头(Chunk head)和2KB的块体(Chunk body)组成,块体用于存储数据分块。块卷的块头用于管理开销,其结构如图5所示:
块编号(ChunkNumber):块在块卷中的编号,块卷中的块从1开始编号;
指纹(Fingerprint):块所存储的数据分块的指纹,每个数据分块都采用SHA-1算法计算哈希值(160bit)作为其指纹;
数据分块长度(DataChunkSize):块所存储的数据分块的大小,DataChunkSize为正数时表示此块为数据分块的第一个块,数据分块的第一个块后续的所有块的DataChunkSize值为负数;
引用计数(Count):块所存储的数据分块的引用计数,数据分块可能被多个文件共享,Count记录了共享此数据分块的文件个数;
后续块编号(NextChunk):组成数据分块的下一个块的编号,数据分块的最后一个块的NextChunk值为0。
数据分块不能跨块卷存储,也就是说,一个数据分块所包含的所有块都存储在一个块卷上。
图5、图6、图9、图10、图11中,括号内所示为字段的存储类型,其意义为:
uint8_t:无符号字符;
uint32_t:无符号32位整数;
int32_t:32位整数;
char[6]:6个字符;
char[255]:255个字符;
160bit:160比特的二进制串。
图1中分块查询步骤,以数据分块的指纹为关键字在分块索引数据库中进行分块查询;分块索引数据库记录的格式如图6所示:
指纹(Fingerprint):记录的关键字,也是本数据库记录所指示的数据分块的指纹。
块卷名(VolumeName):数据分块所在的块卷的名称;
首块编号(FirstChunkNumber):数据分块的第一个块在块卷上的块编号;
引用计数(Count):数据分块的引用计数。
图1的备份流程和图2的恢复流程都涉及到了存储服务器的存储卷;
本发明把文件元数据和文件的分块索引存储在存储服务器的存储卷上,存储卷的数据组织如图7所示:
存储卷由存储卷卷标(StorageVolume label)和大小一致的存储块(Block)组成;存储卷卷标记录了存储卷的名称、存储卷所属的存储池名称、存储池类型、存储卷的媒体类型(磁带、磁盘文件)、存储卷所包含的存储块数、以及存储卷卷标标志、存储卷标识的时间信息;存储卷上的存储块大小一致,默认的存储块大小是64512字节,用户在标识存储卷时可以指定存储块的大小;
如图8所示,每个存储块由存储块块头(Block head)和一个个大小不一的记录(Record)组成。
如图9所示,存储块块头的结构为:
校验和(CheckSum):存储块的所有数据(包括存储块块头,但不包括CkeckSum自身)的32位校验和;
存储块块头标志(“HB_001”):存储块块头的标志;
存储块大小(BlockSize):存储块的大小(字节),包括存储块块头;
存储块编号(BlockNumber):存储块在存储卷中的编号,存储卷的存储块从1开始编号;
存储块序号(BlockIndex):存储块在会话(Session)中的序号,会话中的存储块从1开始编号;
会话标识符(SessionId):存储块所属会话的会话标识符;
作业标识符(JobId):存储块所属作业的作业标识符;
会话结束标志(EndSession):布尔值,指明此存储块是否会话中的最后一块;
JobId在一个备份代理中是唯一的,但在存储服务器中就不一定是唯一的,因为可能有多个备份代理在访问同一个存储服务器;为了区分不同作业的数据,存储服务器为每个作业分配了一个会话标识符(SessionId),会话标识符在存储服务器上是唯一的;每个作业的文件元数据和文件分块索引都存储在存储服务器上唯一的一个会话中,一个会话包含一个或多个存储块,这些存储块可能分布在存储池中的多个存储卷中,每个存储块只能属于一个会话;
记录(Record)由记录头(Record head)和记录体(Record body)组成,记录头不能跨存储块存储,但是记录体可以跨存储块存储,甚至可以跨越不同的存储卷存储。不管记录体在那里存储,记录体的前面必须有记录头,也就是说,无记录头的记录体不能在一个存储块中存在;一个记录总是属于某个会话或者说作业,作业中的文件元数据和文件分块索引就存储在记录体中;
如图10所示,记录头的结构为:    
文件序号(FileIndex):如果FileIndex为正整数,就表明此记录为一个文件记录,记录体中存储的是文件元数据或文件分块索引,FileIndex指明了文件在作业中的序号(一个作业中包含的文件按处理顺序从1开始编号);如果FileIndex为-1,表明此记录是一个会话头,会话头存储在会话的第一个存储块的第一个记录中,会话头中记录了此会话所属的存储池名称、存储池类型、作业标识符、作业名称、备份代理名称、文件集名称、作业级别信息;如果FileIndex为-2,表明此记录是一个会话尾,会话尾存储在会话的最后一个存储块的最后一个记录中,会话尾记录不跨存储块存储,如果存储块的最后部分不够存放一个会话尾记录的空间,则此存储块的EndSession标志置0,另取一存储块存放会话尾记录,并置其EndSession标志为1,会话尾中记录了作业所包含的文件数、作业所包含的字节数、作业的起始存储块编号、结束存储块编号、作业完成状态信息;
文件流(Stream):如果FileIndex为正数,Stream就表示此记录存储的数据类型,Stream=1表示存储的是文件元数据,Stream=10表示存储的是文件的分块索引,Stream一般是正数,如果是负数,就表明此记录体是和本存储块具有相同的SessionId的另一存储块上和本记录具有相同的FileIndex的某个记录体的延续;如果FileIndex为负数,Stream就表示本会话对应的作业标识符;
记录大小(RecordSize):记录体所包含的字节数。记录体可能跨多个存储块存储,这里的RecordSize记录的是整个记录体的大小,包括跨多个存储块的部分。如果存储服务器读记录时读到了存储块的结尾,发觉并没有读够RecordSize的大小,它就会在具有相同SessionId且BlockIndex递增1的存储块上寻找具有相同FileIndex和|Stream|且Stream为负数的记录,把它作为原记录的延续继续读取,如此进行下去直到读够RecordSize字节为止;
本发明的上述存储卷结构考虑到了实际备份系统的不同应用需要;实际的备份系统可能有多个备份作业运行,每个作业包含着一个或多个文件;作业的数据可能属于不同的用户,每个用户为了管理自己的数据需要定义自己的存储池,然后在存储池中标识存储卷用于备份数据的存储。用户可以在存储池中标识一个或多个存储卷,作业的数据(本发明中指文件元数据和文件分块索引)就存储在存储卷上;由于存储卷是由用户事先标识的,它的容量在标识时已经确定,而一个作业所包含的数据量是动态变化的(由应用服务器对文件集的在线更新引起的),用户事先无从得知,故一个作业的数据应当可以存储在存储池中的多个存储卷上,甚至作业中的一个文件也应可以跨多个存储卷存储,反之,一个存储卷当然可以包含多个作业的数据;本发明的存储卷结构恰好可以满足用户备份数据的上述需要。
图1的备份流程和图2的恢复流程都涉及到了文件的分块索引,文件的分块索引结构如图11所示:
指纹(Fingerprint):  数据分块的指纹;
块卷名(VolumeName):数据分块所在的块卷名称;
首块编号(FirstChunkNumber):数据分块的第一个块在块卷上的块编号;
序号(Index):数据分块在文件中的序号。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈