一种异构存储环境下多版本文件视图管理方法和装置与流程

文档序号:15020073发布日期:2018-07-25 00:29阅读:191来源:国知局
本发明属于分布存储与容灾备份领域,具体涉及的是一种异构存储环境下多版本文件视图管理方法和装置。
背景技术
:随着大数据技术与应用的迅猛发展,数据已成为各个行业中最为宝贵的资源。数据的损毁将导致不可估量的损失。例如,2017年五月份,WannaCry勒索病毒席卷全球,超过一百多个国家和地区被攻击和感染,大量企业、校园和医疗机构受到了病毒感染。该病毒将受感染用户的数据进行加密并勒索,致全球经济损失高达550亿元。数据容灾技术已经成为防止人为操作失误、病毒攻击、系统故障导致的数据丢失或毁坏的最后一道防线。随着云存储技术的深入发展,越来越多的备份业务开始通过整合本地存储资源与云存储资源,形成一个即满足数据本地化快速读写,同时支持备份数据的云化存储的异构存储环境。然而如何有效整合分布在不同存储位置、异构存储资源的多版本备份数据、为用户提供统一、便捷、灵活的多版本文件视图管理方法,成为云存储环境下,多版本备份数据管理面临的挑战问题。在数据多版本管理方面,目前主要有三个研究方向:1)多版本索引技术:MultiversionB-tree(OhlerT,OhlerT,OhlerT,etal.AnasymptoticallyoptimalmultiversionB-tree[J].VldbJournal,1996,5(4):264-275.)利用用户自定义的key和时间戳来唯一确定文件的版本。由于MVBTree是partiallypersistent结构,因此只能在当前key基础上进行更新或删除的操作,无法提供任意历史时刻,统一的文件视图功能,缺少面向历史任意时刻下完整文件tree的管理方法。2)多版本文件系统:CVFS(SoulesCAN,GoodsonGR,StrunkJD,etal.MetadataEfficiencyinVersioningFileSystems[C]//UsenixConferenceonFile&StorageTechnologies.2003:43--58.)利用Journal-basedmetadata管理元数据和目录索引结构,极大的减少了元数据的存储量。Ext3cow(PetersonZ,BurnsR.Ext3cow:atime-shiftingfilesystemforregulatorycompliance[J].AcmTransactionsonStorage,2005,1(2):190-212.)文件系统是在ext3的基础上完成的,提供了快照功能和多版本文件控制功能。但是这两种技术必须在特定的文件系统中才能起到多版本文件控制,不适合应用于多个文件系统组成的异构资源存储环境(如本地文件系统ext3+云存储系统GlusterFS)。文献“BhattacherjeeS,ChavanA,HuangS,etal.Principlesofdatasetversioning:exploringtherecreation/storagetradeoff[J].ProceedingsoftheVldbEndowment,2015,8(12):1346-1357.”进一步提出了一种平衡存储空间和增量文件恢复时间的算法,但是该算法只是处理离线、静态的数据集,不能在线实时处理数据集,因此无法为增量备份提供快速的元数据管理组织方法。3)云环境下的多版本管理技术:CloudVS(TangCP,LeePPC,WongTY.TunableVersionControlSystemforVirtualMachinesinanOpen-SourceCloud[J].IEEETransactionsonServicesComputing,2015,8(1):155-168.)是在云环境下对虚拟机的版本控制和管理系统,利用数据去重技术产生增量的快照,然后将此增量快照传输到存储节点并生成新的版本。虽然每次传输都是增量快照文件,降低了传输的数量量,但是每次计算增量文件都需要很长时间。综上,目前的多版本技术提供单一数据项或单一文件的历史版本管理与控制方法,但是缺少面向整个文件目录树的文件视图版本管理技术,缺少针对历史版本灵活的访问控制与版本筛选技术,因此无法为异构存储环境下的多版本数据提供有效的文件视图管理与灵活的访问接口。技术实现要素:本发明的目的在于提出一种多版本文件视图管理方法和装置,可以针对异构存储环境(例如本地存储+云存储),针对不同备份策略(包括增量备份、差量备份、全量备份),实现高性能的多版本文件视图管理。本发明采用的技术方案如下:一种异构存储环境下多版本文件视图管理方法,包括以下步骤:抽取异构存储环境下的多版本数据的元数据信息,利用元数据信息形成关系表结构,并利用关系型数据库对元数据进行集中存储;通过逻辑卷整合分布在不同存储位置的多版本数据,实现介质无关的多版本数据的管理与组织;利用SQL语法规则实现对元数据的访问控制与选择过滤,并在文件视图中以目录树的形式展示和管理异构存储环境下的多版本数据。进一步地,所述异构存储环境包括本地存储端、云存储端。进一步地,所述关系表结构包括:a)File表:用来存文件的相关信息,每个文件都有一个唯一的FileId来标识;b)Path表:用来存目录的路径,每个路径都有一个唯一的PathId来标识;c)Job表:用来存每个作业的信息,每个作业都有一个唯一的JobId来标识;d)JobMedia表:用来存每个作业的存储信息;e)Fileset表:用来存每个文件集的信息,里面包含需要备份的路径和文件,每个Fileset都有一个唯一的FilesetId来标识;f)PathHierarchy表:用来存目录路径与父目录路径之间的映射关系;g)Filename表:用来存文件名,每个文件名都有一个唯一的FilenameId来标识;h)PathVisibility表:用来存备份作业与目录路径之间的映射关系,即备份作业的标识符JobId与路径标识符PathId之间的映射关系。进一步地,所述通过逻辑卷整合分布在不同存储位置的多版本数据,是将多版本备份数据存储于一个存储池中,存储池为其分配一个Volume,每个卷中包含有多个Block,每个Block包含多个Record,每个Block和Record都有一个头部,Record记录文件的数据或文件属性;一个Block最多只记录一个Job,Job能够跨多个Block存储。进一步地,卷的存储格式中包括以下字段:校验和、Block的大小、Block序号、标识号、会话ID、会话时间、Block中的文件序号、定义record存的是文件的哪些信息、以及Record的数据大小;并定义三个特殊的Record,分别为卷标记、会话标记和会话结束时的附加字段。进一步地,步骤3)利用SQL语句,通过两个过程构造多版本文件视图:查询相关JobId和查询子目录和文件。进一步地,所述SQL语句包括:SQL1语句,其目的是查询所选源客户端所定义的FileSetId号最大的所有ID集合,即返回整个源客户端所有备份路径、备份文件名对应的ID;SQL2语句,其目的是先创建一个临时表,然后查询指定FilesetId中最近一次全备份的JobId并存入临时表,再查询最近一次全备份到参数JobId之间的所有JobId并插入到临时表中;根据FilesetId的个数循环查询所有的JobId并放入列表JobIds;SQL3语句,其目的是根据参数JobIds和PathId查询PathId对应路径下的子目录;SQL4语句,其目的是根据参数JobIds和PathId查询PathId对应路径下的文件。一种异构存储环境下多版本文件视图管理装置,其包括:元数据存储单元,用于抽取异构存储环境下的多版本数据的元数据信息,利用元数据信息形成关系表结构,并利用关系型数据库对元数据进行集中存储;备份数据整合单元,用于通过逻辑卷整合分布在不同存储位置的多版本数据,实现介质无关的多版本数据的管理与组织;文件视图展示单元,用于利用SQL语法规则实现对元数据的访问控制与选择过滤,并在文件视图中以目录树的形式展示和管理异构存储环境下的多版本数据。本发明的有益效果如下:本发明在异构存储环境下,面向多版本备份数据管理系统,提出了一种多版本文件视图(文件的目录树结构)管理与展示方法。该方法可以对分散存储在本地磁盘、云存储系统等不同位置的数据提供统一的文件视图管理。该方法能够有效管理全量备份、增量备份、差量备份等多种备份策略下的元数据组织结构,同时充分兼容了WebUI访问接口,可以为分散存储在不同位置、不同备份策略下多版本数据,提供统一文件视图管理,同时为用户提供了交互式的历史版本选择与过滤等功能,为高性能的基于云存储的多版本备份数据管理,提供了更为灵活便捷的视图查询、管理、访问与操作方法。附图说明图1.系统整体结构图。图2.数据库中部分元数据的ER图。图3.卷的存储格式示意图。图4.三种特殊Record的格式示意图。图5.SOS和EOS在Block中的位置示意图。图6.查询相关JobId的流程图。图7.查询子目录和文件的流程图。图8.整合本地存储与云存储端的数据的示意图。具体实施方式下面通过具体实施例和附图,对本发明做进一步详细说明。本发明的多版本文件视图管理方法,可以针对异构存储环境(例如本地存储+云存储),针对不同备份策略(包括增量备份、差量备份、全量备份),通过元数据集中管理、历史版本融合呈现,为多版本备份数据管理系统提供版本管理、查询、展示、过滤等功能,为进一步基于云存储的多版本备份系统提供友好的界面与接口支持。本发明的关键技术点如下:1)集中式的文件元数据管理方法。本发明设计了基于关系数据库的文件视图元数据管理方法,对存储在本地系统、云存储系统等不同位置的多版本数据,抽取其元数据信息(元数据可以理解为是数据的数据,利用元数据管理数据),设计成多个二维关系表结构,并利用关系型数据库对文件视图的元数据进行集中存储、统一访问,并利用SQL语法规则对元数据实现访问控制与选择过滤功能。2)介质无关的备份数据管理方法。为了有效整合分布在不同存储位置的历史版本数据,提出基于逻辑卷的多版本备份数据管理与组织方法。逻辑卷是独立于物理存储设备之上的抽象层,通过逻辑卷定义各种备份数据属性,为提供存储环境无关的统一文件视图提供了灵活性和可扩展性。3)灵活的版本选择与过滤方法。设计了面向多版本备份数据管理逻辑的SQL语句集,可以为任意的历史版本数据提供版本融合、版本选择以及版本过滤等功能,最终根据用户选择的条件,统一以目录树的形式展示、管理“本地存储+分布式存储”异构存储环境下的多版本备份数据,也为历史版本数据恢复提供更加便捷的恢复手段。本发明的基于多版本文件视图的管理系统如图1所示。其中备份数据的存储采用“本地存储+云存储”混合模式。WebUI,console以及API等用户访问工具基于本发明的多版本文件视图管理方法提供灵活的访问控制与备份恢复请求,同时该多版本文件视图管理方法可以对目前的各种备份策略下产生的备份数据进行有效的管理。图1中,“备份源”是指产生备份数据的客户端;“备份恢复逻辑数据管理”是指备份恢复文件选择管理和元数据转发;“全量”是指全量备份,“增量”是指增量备份,“差量”是指差量备份;“属性+数据”中的属性是指文件属性,数据是指文件数据。下面具体描述本发明的内容。1.集中式的文件元数据管理方法在本发明中利用PostgreSQL数据库存储管理多版本元数据信息,主要考虑其有如下优点:(a)PostgreSQL的特性覆盖了SQL-2/SQL-92和SQL-3/SQL-99,具有丰富的数据类型支持;(b)PostgreSQL提供强大的访问控制、并发控制功能,并具有大量丰富的web访问工具,ETL工具等。根据业界典型的备份恢复系统的业务逻辑,在数据库中定义了基本的表结构,灵活的记录备份存储位置信息、数据集版本信息、以及存储介质信息等,能够快速查找到分布于本地存储端和云存储端的历史版本数据,以便于恢复操作。集中式的文件元数据管理所依赖的关系表设计如图2所示的ER图(EntityRelationshipDiagram,实体联系图)所示,对其说明如下:File表:用来存文件的相关信息,比如所属用户和组、文件权限属性和修改时间等等。每个文件都有一个唯一的FileId(文件标识符)来标识。图2中的File表中,FileIndex为文件序号,JobId为作业标识符,PathId为路径标识符,FilenameId为文件名标识符,LStat为文件属性。Path表:用来存目录的路径,每个路径都有一个唯一的PathId来标识,Path为具体的路径,如/usr/local/。这里每个路径都是不重复的,若同一路径下的文件都存一份相同的路径,那就会造成大量的冗余。Job表:用来存每个作业的信息,每个作业都有一个唯一的JobId来标识。图2中的Job表中,Job为“作业名+时间戳”,Name为作业名,Level为备份等级:全量、增量、差量,ClientId为客户端标识符,StartTime为开始时间,EndTime为结束时间,JobTDate为64位的Unix格式的开始时间,FilesetId为文件集标识符,Type为作业类型。JobMedia表:用来存每个作业的存储信息,如存储在哪个Volume的哪些Block中。图2中的JobMedia表中,JobMediaId为作业介质标识符,MediaId为介质标识符,FirstIndex为第一个文件的序号,LastIndex为最后一个文件的序号,StartBlock为作业开始块,EndBlock为作业结束块,VolIndex为卷序号。Fileset表:用来存每个Fileset(文件集)的信息,里面包含需要备份的路径和文件。每个Fileset都有一个唯一的FilesetId来标识。PathHierarchy表:用来存目录路径与父目录路径之间的映射关系,PPathId为父目录的PathId。Filename表:用来存文件名,每个文件名都有一个唯一的FilenameId来标识。PathVisibility表:用来存备份作业与目录路径之间的映射关系,即备份作业的标识符JobId与路径标识符PathId之间的映射关系。上述表的更新过程,主要体现在执行一次备份过程中。当系统运行一个备份作业时,上述各数据表的写入过程为:1)在Job表创建一条Job记录,写入Job的相关信息,如StartTime,JobId等;2)在Client表中根据备份源客户端检查是否有该客户端的记录,若无,则创建一条Client记录,Client表是用来存备份源客户端的信息,如客户端的唯一标识ClientId,客户端的系统版本,客户端的名称等;3)在Filename表中根据文件名检查是否有该文件的Filename记录,若无,则创建一条记录;4)在Path表中根据文件路径检查是否有该路径的Path记录,若无,则创建一条记录;5)在File表中创建一条File记录,写入文件的相关信息,如JobId、FilenameId、PathId等;6)重复步骤3到步骤5,写入每个文件和路径的信息;7)在JobMedia表中创建关于该Job的JobMedia记录,写入文件的存储信息;8)更新1)中的Job记录,将作业的结束时间EndTime写入到Job表中。当运行一个迁移作业将位于本地存储端的某一个备份作业的数据迁移到云存储端时,数据库中的元数据做如下操作:1)在Job表中创建一个新的Job记录,分配一个新的JobId,其StartTime和EndTime与要迁移的Job记录相等。2)将被迁移的Job的类型type改为“M”,表示该作业已被迁移。3)根据被迁移的JobId从File表中选出被迁移的文件,将所有选出的文件的JobId改为新的JobId。2.介质无关的备份数据管理方法下面介绍介质无关的备份数据管理方法。备份存储数据时需要先指定一个存储池,存储池会为其分配一个卷(Volume),存储池和卷都是物理存储设备上通过软件定义的的逻辑结构。每个卷中包含有多个块(Block),每个Block包含多个记录(Record),每个Block和Record都有一个头部,Record记录文件的数据或文件属性。一个Block最多只记录一个Job,Job可以跨多个Block存储。其中卷的最大值的默认值是没有限制,除非达到物理存储介质的最大值,可以在配置文件中设置大小。每个Block的默认最大值为63KB,也可以在配置文件中设置Block的最大值和最小值。卷的存储格式如图3所示,其中各个字段的说明如表1所示。表1头部各字段解析表除此之外还定义了三个特殊的Record,分别为VolumeLabel(卷标记)、SessionLabel(会话标记)和AdditionalfieldsinEndofSessionLabel(会话结束时的附加字段),具体格式如图4所示。VolumeLabel为每个卷的第一个Record,记录了卷的相关信息,如JobId、ClientName、Job的类型和Job的状态等等。SessionLabel分为theStartofSession(SOS,会话开始标记)和theEndofSession(EOS,会话结束标记),分别位于每个Session(即Job)的开头和结尾。SOS的结构和SessionLabel一样,EOS的结构为SessionLabel加上AdditionfieldsinEndofSessionLabel。假设某一Job存储在一个Block中,那么存储的格式如图5所示,其中SOS和EOS头文件中的的FileIndex的值为负数,用以区别其他RecordHeader。图4中三个Record的各字段的含义表2、表3和表4所示。表2VolumeLabel各字段解析表表3SessionLabel各字段解析表表4AdditionalfieldsinEndofSessionLabel各字段解析表JobFiles(uint32_t)作业有多少文件JobBytes(uint32_t)作业数据有多大JobId(uint32_t)作业标识符Start_block(uint32_t)作业起始BlockEnd_block(uint32_t)作业末尾BlockStart_file(uint32_t)作业第一个文件End_file(uint32_t)作业最后一个文件JobErrors(uint32_t)作业的错误JobStatus(uint32_t)VerNum11作业的状态由于元数据中存储了每个Job存储在哪个备份存储端的某一个卷中的起始Block和结束Block,再根据上述头文件包含的信息就能够快速查找到某个Job的存储位置而不需要扫描其他Block。然后根据RecordHeader中的FileIndex参数查找到具体需要恢复的文件,而不需要扫描RecordData,提高了恢复效率。3.灵活的版本选择与过滤方法接下来介绍如何利用集中式元数据将不同版本不同存储位置的备份数据统一以目录树的形式展示。构造多版本文件视图分为两个过程:查询相关JobId和查询子目录和文件。分别如图6、图7所示,其中DB表示关系型数据库。对图6、图7中的流程说明如下:用户输入可选参数为:(1)Client,源客户端;(2)JobId,源客户端某一具体备份作业;(3)mergefilesets,表示合并显示所选客户端的所有Job;(4)mergejobs,表示所选Job到最近一次全备份的所有Job合并显示。■SQL1语句的目的是查询所选源客户端(ClientId)的所定义的FileSetId号最大的所有Id集合,即返回整个源客户端所有备份路径+备份文件名对应的Id;■SQL2语句的目的是先创建一个临时表,然后查询指定FilesetId中最近一次全备份的JobId并存入临时表,再查询最近一次全备份到参数JobId之间的所有JobId并插入到临时表中。系统根据传入FilesetId的个数循环查询所有的JobId并放入列表JobIds返回。■SQL3语句的目的是根据参数JobIds和PathId查询PathId对应路径下的子目录。■SQL4语句的目的是根据参数JobIds和PathId查询PathId对应路径下的文件。每次在文件视图上点击具体目录,都会自动转换成上述查询,从而实现查询该目录下的子目录和文件,达到动态、交互式的展示版本融合后的文件视图目标。同时,用户根据参数的选择,过滤掉不需要的备份数据。而且多版本文件视图以目录树的形式展示,用户可以在文件或目录前面的选择框勾选需要恢复的文件或目录+文件,更加地灵活的支持任意历史版本数据的恢复。表5典型的多版本查询对应的SQL语句为了更加清楚本发明的优点,下面以一个具体实例来对本发明进行进一步的阐述和说明。该实例在三台物理机上进行了测试实验,其中一台安装Cbackup系统,另外两台安装GlusterFS作为云存储端。将全备份数据存储在云存储系统GlusterFS,利用云存储的冗余机制提供了高可靠性;利用了本地文件系统作为近期数据存储介质,提供高性能的备份数据存储环境。在WebUI上的多版本文件视图上可以看到图8所示结构,其中V1_Full文件存放在GlusterFs云存储系统上,V2_Inc文件存储在本地高速存储介质上。虽然备份数据分布在不同存储位置,但是本发明依然打破存储位置的限制,将位于不同存储位置的多版本数据统一在文件视图上以目录树的形式统一展示,而且能够让用户任意选择文件进行恢复,更加灵活简便。1)实验环境:在6台虚拟机上进行文件查询效率试验。实验分别在Ext3文件系统、直接用GlusterFS文件系统和多版本文件视图管理原型系统,在同一数据集中进行相同的文件查询操作。2)数据与方法数据集描述如下:1)10m-3g文件夹中每个文件大小为10M,共3G。2)1m-3g文件夹中每个文件大小为1M,共3G。3)etc文件夹为red-hat5.5系统根目录下的etc文件夹,共103M。4)usr文件夹为red-hat5.5系统根目录下的usr文件夹,共2.8G。5)四个文件夹都放在pat-test文件夹下,数据大小为8.9G,共有文件111179个,平均文件大小为83.94KB,文件夹有9794个,最大深度为13。由于GlusterFS可以通过mount命令挂载到/mnt/glusterfs文件夹下,然后就可以直接操作GlusterFS上的数据了,因此GlusterFS上的操作命令和Ext3文件系统上的操作命令相同。每个查询在Ext3文件系统、GlusterFS和Cbackup上的命令或SQL如表6所示。表6各个系统上的查询命令或SQL3)测试结果表7查询的实验结果由表7可以看出本发明提出的多版本管理技术在版本元数据的查询效率上比Ext3文件系统和GlusterFS要高,其中GlusterFS由于的查询效率最低,效率相比其它二者差距较大。由此可得,本发明的集中式的文件元数据管理方法可以高效的以多种查询条件查询文件,这使得用户使用多版本文件视图能有极快的响应时间和流畅的操作。本发明另一实施例提供一种异构存储环境下多版本文件视图管理装置,其包括:元数据存储单元,用于抽取异构存储环境下的多版本数据的元数据信息,利用元数据信息形成关系表结构,并利用关系型数据库对元数据进行集中存储;备份数据整合单元,用于通过逻辑卷整合分布在不同存储位置的多版本数据,实现介质无关的多版本数据的管理与组织;文件视图展示单元,用于利用SQL语法规则实现对元数据的访问控制与选择过滤,并在文件视图中以目录树的形式展示和管理异构存储环境下的多版本数据。以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1