CN105760116A - 一种多网盘下的增量纠删码存储方法及系统 - Google Patents
一种多网盘下的增量纠删码存储方法及系统 Download PDFInfo
- Publication number
- CN105760116A CN105760116A CN201610137334.2A CN201610137334A CN105760116A CN 105760116 A CN105760116 A CN 105760116A CN 201610137334 A CN201610137334 A CN 201610137334A CN 105760116 A CN105760116 A CN 105760116A
- Authority
- CN
- China
- Prior art keywords
- blocks
- files
- file
- dropbox
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/1824—Distributed file systems implemented using Network-attached Storage [NAS] architecture
- G06F16/183—Provision of network file services by network file servers, e.g. by using NFS, CIFS
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
Abstract
一种多网盘下的增量纠删码存储方法及系统。多网盘下的增量纠删码存储方法包括:文件首先划分为若干“文件块”,并对“文件块”采用纠删码算法转化为若干“纠删数据块”,最后将全部“纠删数据块”分散存储在多个网盘中,并提供“文件块”级别的去冗余存储。多网盘下的增量纠删码存储系统包括:“网盘”装置,负责存储文件的数据内容;“文件系统元服务器”装置,负责存储文件系统的元数据及“文件块”去冗余管理;“文件系统客户端”装置,负责“文件块”的分解与合成、“纠删数据块”的编码与解码、“纠删数据块”的网盘上传与下载、去冗余、及对外提供文件访问服务。本发明能够有效地提高基于多网盘存储系统的可靠性、访问效率及空间利用率。
Description
技术领域
本发明属于计算机领域,主要关注提高基于多网盘的文件可靠性、存储空间高效利用、且可高效率访问的装置系统和方法。
背景技术
在公有存储云情况下,基于多网盘的文件存储能够有效防止公有存储云的服务商对用户文件的非法访问,同时基于多网盘的文件纠删码存储还能有效降低对特定存储云服务商的绝对依赖问题。目前已有的解决方案是用户将文件整体进行纠删码编码后将纠删码文件存储到不同的网盘上,这种方案的缺点是:即便用户只想读取该文件的部分内容,也需要用户将多个网盘上的纠删码文件全部下载到本地,然后再采用纠删码解码生成整个原文件,最后读取该文件的指定部分内容,这种解决方案下对文件的访问效率极低,因为用户不得不下载整个文件;并且在用户拥有大量相似文件时也大大浪费了用户在存储云上的空间利用率。
发明内容
本发明目的是解决现有公有存储云解决方案下对文件的可靠性低、访问效率极低以及存储云空间的无效浪费问题,提供一种多网盘下的增量纠删码存储系统和方法。本发明针对文件先进行分块、然后针对文件块进行纠删码编码并把纠删码数据块存放到不同网盘上,这样既提高了用户文件的可靠性、提高了用户存储云空间的利用率,也提高了用户访问文件的访问效率。
本发明给出的多网盘下的增量纠删码存储系统至少由一个或多个网盘以及“文件系统元服务器”装置和“文件系统客户端”装置组成;本发明给出的多网盘下的增量纠删码存储方法,采用对文件先进行分块、再针对每个文件块进行纠删码编码,并把多个纠删码数据块上传到多个网盘的方法。
本发明技术方案
1.一种多网盘下的增量纠删码存储系统,所述系统包括“文件系统元服务器”装置、“文件系统客户端”装置和“网盘”装置;“文件系统元服务器”装置,主要是用来管理及存储文件系统的元数据,并对文件提供“文件”级别和“文件块”级别去冗余管理;“文件系统客户端”装置,主要是用来管理系统配置信息库、“文件块”的分解与合成、“纠删数据块”的编码与解码、“纠删数据块”的网盘上传与下载、去冗余以及对外提供文件的透明访问;“网盘”装置,主要是用来存储文件数据内容即“纠删数据块”,“网盘”装置包括各种公有云中的网盘、私有云中的网盘以及其它能够提供文件存取服务的文件服务器;“文件系统客户端”装置与“网盘”装置通过网络连接,“文件系统客户端”装置与“文件系统元服务器”装置既可以通过网络连接也可以本地直接连接;
其中,
“文件系统元服务器”装置包括:用户元信息管理模块、文件基本元信息管理模块、“文件块”元信息管理模块、“文件块纠删”元信息管理模块、“纠删数据块”元信息管理模块、网络传输模块和本地存储介质;用户元信息管理模块负责管理用户的基本信息,用户的基本信息包括用户编号、用户名称、用户访问口令、用户根目录文件编号和文件块默认大小;文件基本元信息管理模块负责管理文件的基本元信息,文件基本元信息包括文件编号、文件名称、文件大小、文件指纹摘要、所属父目录文件编号、文件块默认大小和默认“纠删码参数对”,所述“纠删码参数对”即“编码后片数”n和“编码前片数”k,其中n>=k,文件编号是文件的唯一标识;“文件块”元信息管理模块负责管理“文件块”的基本元信息管理和文件的“文件块序列”信息管理;“文件块”基本元信息包括文件块编号、文件块大小、文件块指纹摘要、“纠删码参数对”和当前引用数,其中,文件块编号是文件块的唯一标识,引用数为当前包含该“文件块”的不同文件的总数;文件的“文件块序列”信息包括文件编号、文件块序号、文件块编号和起始偏移量组成的四元组序列,其中文件块序号为“文件块”在该文件中的顺序编号;“文件块纠删”元信息管理模块负责管理文件块所包含的“纠删数据块”集合,“文件块纠删”元信息是由文件块编号和纠删数据块编号组成的二元组;“纠删数据块”元信息管理模块负责管理纠删数据块的基本元信息,“纠删数据块”基本元信息包括纠删数据块编号、纠删数据块大小、纠删数据块指纹摘要、网盘编号、网盘路径和当前引用数,其中,纠删数据块编号是纠删数据块的唯一标识,引用数为当前包含该“纠删数据块”的不同“文件块”的总数;本地存储介质负责存储“文件系统元服务器”装置中所管理的上述各种元数据信息;网络传输模块负责“文件系统元服务器”装置中其它模块与“文件系统客户端”装置以及“网盘”装置的网络通信;
“文件系统元服务器”装置中,用户元信息管理模块通过文件基本元信息管理模块获得给定文件的文件基本元信息;文件基本元信息管理模块通过“文件块”元信息管理模块获得给定文件的“文件块序列”信息以及该文件所包含“文件块”的“文件块”的基本元信息;“文件块”元信息管理模块通过“文件块纠删”元信息管理模块获得给定“文件块”的“文件块纠删”元信息;“文件块纠删”元信息管理模块通过“纠删数据块”元信息管理模块获得给定“纠删数据块”的“纠删数据块”基本元信息。
“文件系统客户端”装置包括:应用程序、文件访问接口模块、文件块信息管理模块、文件块分解与合成模块、纠删码编码与解码模块、网盘访问模块、网络传输模块、系统管理模块和本地存储介质;应用程序为进行文件访问的各种第三方计算机程序,即调用者;文件访问接口模块负责调用者的文件访问操作,包括将调用者的文件访问操作所要访问的文件区域转化为“文件块”编号序列,将调用者写访问文件区域的新数据合并到所属文件中,以及将调用者读访问文件区域从所属文件中读取到调用者所指定的空间;文件块信息管理模块负责对文件、“文件块”、“纠删数据块”的元信息及对应关系的检索和更新;文件块分解与合成模块负责对指定文件进行“文件块”的分解以及将“文件块”合成为文件的功能;纠删码编码与解码模块负责将指定的“文件块”采用纠删码算法进行编码运算生成“纠删数据块”集合,以及将一组“纠删数据块”集合采用纠删码算法进行解码运算合成“文件块”;网盘访问模块负责与外部各种网盘数据的访问操作,访问操作包括对“纠删数据块”的上传、下载和删除;网络传输模块负责通过外部网络与各种网盘和“文件系统元服务器”装置的数据通信;系统管理模块负责用户信息、网盘信息以及系统全局配置信息的管理;用户信息包括用户编号、用户名称、用户根目录文件编号和文件系统元服务器的访问口令;网盘信息包括网盘编号、网盘名称、网盘用户名、网盘访问口令、网盘网络地址、网盘路径用户根目录以及网盘容量限制,其中网盘编号是网络的标识;系统全局配置信息包括用户信息存储位置、网盘信息存储位置、默认文件块大小和默认“纠删码参数对”;本地存储介质负责长期或者临时存储“文件系统客户端”装置中其它模块所处理的各种数据;
“文件系统客户端”装置中,网盘访问模块通过调用网络传输模块来访问各个网盘;文件块信息管理模块通过调用网盘访问模块对网盘上的文件数据进行去冗管理的;文件块分解与合成模块通过调用网盘访问模块来访问各个网盘;文件块分解与合成模块通过调用纠删码编码与解码模块来实现文件块与纠删数据块之间的转换;文件块信息管理模块通过调用网络传输模块来访问“文件系统元服务器”装置从而实现文件系统各种信息的检索和更新;文件块信息管理模块通过访问系统管理模块、文件块分解与合成模块以及纠删码编码与解码模块来实现文件数据的本地处理,并向上层的文件访问接口模块提供“文件块”级别的文件访问操作。
所述的多网盘下的增量纠删码存储系统中,文件的数据内容以“文件块”为对外提供文件访问服务的最小访问单元,针对每个“文件块”采用纠删码算法转化为一组“纠删数据块”,以“纠删数据块”为最小的存储单位,全部“纠删数据块”分散存储在多个“网盘”装置中;文件的基本元信息、文件的“文件块序列”信息、“文件块”的基本元信息、“文件块纠删”元信息和“纠删数据块”基本元信息均最终存储在“文件系统元服务器”装置中,“文件系统客户端”装置中可以缓存上述元信息。
所述纠删码算法,“文件系统客户端”装置依据“文件块”对应的“纠删码参数对”采用纠删码算法编码运算将该“文件块”编码转化为n个“纠删数据块”,“文件系统客户端”装置可以通过获取上述n个“纠删数据块”中的k个“纠删数据块”并采用纠删码算法进行解码运算恢复出原“文件块”;同一个文件内的每个“文件块”的“纠删码参数对”即可以相同也可以不同,每个“文件块”的“纠删码参数对”存放在该“文件块”的基本元信息中;不同文件的各个“文件块”的“纠删码参数对”即可以相同也可以不同,每个文件的“纠删码参数对”存放在该文件的基本元信息中;所有文件的全部“文件块”可共用相同的“纠删码参数对”,由“文件系统客户端”装置中系统全局配置的默认“纠删码参数对”来决定。
所述的“文件系统元服务器”装置提供“文件”级别和“文件块”级别去冗余管理是指,“文件系统客户端”装置需要将新创建或者修改的文件的最新“文件指纹摘要”更新到“文件系统元信息服务器”装置中,“文件系统元信息服务器”装置将判断该文件的“文件指纹摘要”是否与已有文件的“文件指纹摘要”相同,如果该文件与已有文件的“文件指纹摘要”相同,则“文件系统元信息服务器”装置将直接用已有文件的“文件块序列”更新该文件的“文件块序列”,从而减少该文件的数据内容的重复存储;“文件系统客户端”装置需要将新创建或者修改的“文件块”最新“文件块指纹摘要”更新到“文件系统元信息服务器”装置中,“文件系统元信息服务器”装置将判断该“文件块”的“文件块指纹摘要”是否与已有“文件块”的“文件块指纹摘要”相同,如果该“文件块”与已有“文件块”的“文件块指纹摘要”相同,“文件系统元信息服务器”装置将直接用已有“文件块”的“文件块纠删元信息”更新该“文件块”的对应“文件块纠删元信息”,从而减少该“文件块”的对应“纠删数据块”的重复存储;“文件系统元服务器”装置负责提供“纠删数据块”的当前引用数的查询,“文件系统客户端”装置负责对零引用数的“纠删数据块”从其所属的网盘中删除;“文件系统元服务器”装置负责提供“文件块”的当前引用数的查询,“文件系统元服务器”装置也负责对零引用数的“文件块”的文件块元信息和文件块纠删元信息进行删除。
所述的“文件系统客户端”装置访问网络上的多个网盘所需要的“网盘信息”均存储在“文件系统客户端”装置中;“文件系统元信息服务器”装置无权访问网络中的多个网盘上用户所拥有的文件的对应“纠删数据块”;“文件系统元信息服务器”装置中所管理的元信息既可以存储在“文件系统元信息服务器”装置中的“本地存储介质”上,也可以存储在网络中的一个或者多个网盘上;当“文件系统元信息服务器”装置中所管理的元信息存储在网络中的一个或者多个网盘上时,“文件系统元信息服务器”装置需要拥有属于自己的网盘信息。
2.一种基于上述多网盘的增量纠删码存储系统的读方法,所述方法包括具体步骤如下:
第1、所述系统通过“文件系统客户端”装置中的“文件访问接口”模块获取调用者“读操作请求”文件的所要读操作区域,即读操作的文件偏移量和长度;
第2、“文件访问接口”模块获取系统全局配置信息、用户信息以及网盘信息;
第3、“文件访问接口”模块调用“文件块信息管理”模块,将第1步中读操作区域转化为所要读的“文件块”编号序列,具体步骤如下:
第3.1、“文件块信息管理”模块从“文件系统元信息服务器”装置中或者本地缓存中获取第1步中文件的文件基本元信息;
第3.2、“文件块信息管理”模块从“文件系统元信息服务器”装置中或者本地缓存中获取第1步中文件的“文件块序列”信息;
第3.3、“文件块信息管理”模块根据第1步中读操作区域以及第3.2步中“文件块序列”信息,计算出第1步中的读操作区域所对应的“文件块”编号序列;
第4、“文件块信息管理”模块从“文件系统元信息服务器”装置中或者本地缓存中获取第3.3步中“文件块”编号序列所对应的“文件块”基本元信息、“文件块纠删”元信息以及“纠删数据块”元信息;
第5、针对第4步中每个“文件块”,“文件块信息管理”模块依据该文件块的“纠删码参数对”信息调用“网盘访问模块”来获取n个中的k个纠删数据块的集合;若全部下载成功则执行第6步,否则执行第7步;
第6、“纠删数据块”集合下载全部成功,执行以下操作,具体步骤:
第6.1、针对第4步中每个“文件块”,“文件块信息管理”模块调用“纠删码编码与解码”模块,将该文件块所对应的第5步中已下载“纠删数据块”集合采用纠删码算法进行解码运算并生成对应的“文件块”;
第6.2、“文件块信息管理”模块调用“文件块分解与合成”模块,将第6.1步中已经过纠删码算法的解码生成的多个“文件块”按照文件块序号排序并进一步合成为本地“文件”副本;
第6.3、“文件访问接口”模块根据第1步中读操作区域从第6.2步中的本地“文件”副本中抽取出所要读操作区域的内容到调用者指定的空间中;
第6.4、设置读操作结果为成功;并执行第8步;
第7、“纠删数据块”集合下载失败,执行以下操作,具体步骤是:
第7.1、在本地存储中删除所有第5步中已下载的“纠删数据块”;
第7.2、设置读操作结果为失败;并执行第8步;
第8、返回读操作结果,程序执行结束。
3.一种基于上述多网盘的增量纠删码存储系统的写方法,所述方法包括具体步骤如下:
第1、所述系统通过“文件系统客户端”装置中的“文件访问接口”模块获取调用者“写操作请求”文件的所要写操作区域,即写操作的文件偏移量和长度;
第2、“文件访问接口”模块获取系统全局配置信息、用户信息以及网盘信息;
第3、“文件访问接口”模块调用“文件块信息管理”模块将第1步中的写操作区域转化为所要写的“文件块”编号序列,具体步骤如下:
第3.1、“文件块信息管理”模块从“文件系统元信息服务器”装置中或者本地缓存中获取第1步中文件的文件基本元信息;
第3.2、“文件块信息管理”模块从“文件系统元信息服务器”装置中或者本地缓存中获取第1步中文件的“文件块序列”信息和该文件的所有“文件块”的文件块基本元信息;
第3.3、“文件块信息管理”模块根据第1步中写操作区域以及第3.1步中文件基本元信息的文件块大小,计算出第1步中的写操作区域所对应的“文件块”编号序列;
第4、“文件块信息管理”模块调用“文件块分解与合成”模块,“文件块分解与合成”模块依次遍历第3.3步中“文件块”编号序列,对第3.2步中每个“文件块”编号所对应的已有“文件块”采用第1步中调用者提供的最新写区域数据进行覆盖合并从而生成对应的最新已修改“文件块”;若覆盖合并成功则执行第5步,否则执行第9步;
第5、针对第4步生成的最新已修改“文件块”序列,“文件块信息管理”模块计算出每个“文件块”的“文件块指纹摘要”;进一步“文件块信息管理”模块计算出第1步中文件的“文件指纹摘要”;“文件块信息管理”模块将第1步中文件的“文件指纹摘要”和第4步生成的最新已修改“文件块”序列所对应的“文件块指纹摘要”序列上传到“文件系统元服务器”装置;
第6、“文件块信息管理”模块等待“文件系统元服务器”装置的判断冗余与否的回复,具体处理步骤如下:
第6.1、“文件系统元服务器”装置回复第5步中的“文件指纹摘要”已重复存在,则执行第8步;
第6.2、“文件系统元服务器”装置回复第5步中上传的“文件块指纹摘要”序列在文件系统中已重复存在的“文件块指纹摘要及文件块编号”集合,若该“文件块指纹摘要及文件块编号”集合为空,则执行第7步;
第6.3、把第6.2步中已重复存在的“文件块指纹摘要及文件块编号”集合从第4步中最新已修改“文件块”序列中去除掉即建立最新已修改且不冗余的“文件块”序列,并进一步执行第7步;
第7、针对第6.3中最新已修改且不冗余的“文件块”序列,“文件块信息管理”模块分别对每个“文件块”进行纠删码处理和存储,具体步骤如下:
第7.1、“文件块信息管理”模块调用“纠删码编码与解码”模块,依据该“文件块”的“纠删码参数对”并采用纠删码算法进行编码运算,生成对应的“纠删数据块”集合;
第7.2、针对第7.1步骤中“纠删数据块”集合,“文件块信息管理”模块分别计算出每个“纠删数据块”的元信息;
第7.3、“文件块信息管理”模块对该“文件块”计算生成“文件块纠删”元信息和“文件块”基本元信息;
第7.4、“文件块信息管理”模块通过“网盘访问模块”将第7.1步中的“纠删数据块”集合的各个“纠删数据块”上传到各自的网盘编号的“网盘”装置中;若全部上传成功则执行第8步,否则执行第9步;
第8、针对第6.3中最新已修改且不冗余的“文件块”序列,该“文件块”序列中每个“文件块”的所有“纠删数据块”全部上传成功,执行以下操作,具体步骤是:
第8.1、“文件块信息管理”模块将第6.3中最新已修改且不冗余的“文件块”序列中每个“文件块”所包含的“纠删数据块”的元信息更新到“文件系统元服务器”装置中;
第8.2、“文件块信息管理”模块将第6.3中最新已修改且不冗余的“文件块”序列中每个“文件块”的“文件块纠删”的元信息和“文件块”基本元信息更新到“文件系统元服务器”装置中,“文件系统元服务器”装置做进一步的“文件块”级别冗余处理;
第8.3、“文件块信息管理”模块根据第3.2步中“文件块序列”信息和第4步最新已修改“文件块”序列重新计算生成第1步中文件的最新“文件块序列”信息;“文件块信息管理”模块进一步将该最新“文件块序列”信息更新到“文件系统元服务器”装置中;
第8.4、“文件块信息管理”模块根据第3.1步中文件基本元信息和第1步中写操作区域重新计算生成第1步中文件的最新文件基本元信息;“文件块信息管理”模块进一步将该最新文件基本元信息更新到“文件系统元服务器”装置中,“文件系统元服务器”装置做进一步的“文件”级别冗余处理;
第8.5、设置写操作结果为成功;并执行第10步;
第9、针对第6.3中最新已修改且不冗余的“文件块”序列,该“文件块”序列中每个“文件块”的所有“纠删数据块”部分或者全部上传失败,执行以下操作,具体步骤:
第9.1、针对第7步所有已上传的“纠删数据块”分别删除本地和在对应的“网盘”装置中的数据;
第9.2、设置写操作结果为失败;并执行第10步;
第10、返回写操作结果,程序执行结束。
本发明系统和写方法中所述文件的“文件指纹摘要”的计算可采用如下方法:首先对文件的各个“文件块”单独采用通常的指纹算法计算“文件块”指纹摘要,然后在将这些“文件块”指纹摘要按照“文件块”的序号排序生成“文件块”指纹摘要序列,最后对该“文件块”指纹摘要序列采用通常的指纹算法计算出一个新的指纹摘要并将该新的指纹摘要作为该文件的“文件指纹摘要”。
所述的“基于多网盘的增量纠删码存储系统的写方法”中,第4步中采用调用者提供的最新写区域数据进行覆盖合并从而生成对应的最新“文件块”的方法如下:
方法1是首先调用本发明所述的“多网盘的增量纠删码存储系统的读方法”,将所述读方法第3.3步中所指“文件块”编号序列所对应的“纠删数据块”全部下载到本地并采用纠删码算法的解码运算生成本地的“文件块”,然后再用调用者提供的最新写区域数据进行覆盖合并;或者,
方法2是首先判断调用者提供的最新写区域所涉及的已有“文件块”是否已被全覆盖,若是已被全覆盖则直接用调用者提供的对应的最新写区域数据覆盖,若已有“文件块”未被全覆盖则调用本发明所述的“多网盘的增量纠删码存储系统的读方法”将所对应的“纠删数据块”全部下载到本地并采用纠删码算法的解码运算生成本地的“文件块”,然后再用调用者提供的对应的最新写区域数据进行覆盖合并。
本发明所涉及的具体内容及所述术语的含义是:
(1)“纠删码参数对”,即包括“编码后片数”n和“编码前片数”k的二元组,其中n>=k;对于一段数据,采用纠删码算法按照“纠删码参数对”进行编码操作生成n个纠删码数据块,其中只需要获得k个而不是n个纠删码数据块即可解码恢复原来的数据;具体的纠删码算法可采用阵列纠删码、LDPC纠删码、RS纠删码或范德蒙RS纠删码等算法,但不限于上述纠删码算法。
(2)文件基本元信息,指包括文件编号、文件名称、文件大小、文件指纹摘要、所属父目录文件编号、文件块默认大小和默认“纠删码参数对”等在内的信息。
(3)“文件块”,是指文件中一段连续区域的数据内容。
(4)文件的“文件块序列”,是指文件的数据内容划分为若干个“文件块”、这些“文件块”的按照文件偏移量地址的顺序排列称之为“文件块序列”。
(5)“纠删数据块”,是指针对“文件块”进行纠删编码生成的数据块,一个“文件块”将根据纠删编码参数生成对应一组“纠删数据块”。
(6)“网盘信息”,指包括网盘编号、网盘名称、网盘用户名、网盘访问口令、网盘网络地址、网盘路径用户根目录以及网盘容量限制等在内的信息。
(7)“网盘路径”,是指文件存储在各种公有云和私有云下的具体网盘地址以及在网盘中具体的文件路径,也可以是其它文件服务器的具体服务器地址以及具体文件路径。
本发明的优点和积极效果:
本发明给出的多网盘下的增量纠删码存储至少由一个或多个网盘以及“文件系统元服务器”装置和“文件系统客户端”装置组成;本发明给出的多网盘下的增量纠删码存储方法,采用对文件先进行分块、再针对每个文件块进行纠删码编码,并把多个纠删码数据块上传到多个网盘的方法。
本发明提高了现有公有存储云解决方案下用户文件的可靠性,本发明首先将文件先进行分块、再针对每个文件块进行纠删码编码、并把多个纠删码数据块上传到多个网盘,这样用户文件的内容分散在多个网盘上且只需获得部分网盘上的该文件内容数据就能恢复该文件,因此提高了用户文件的存储可靠性问题。
本发明提高了现有公有存储云解决方案下用户文件的访问效率,因为本发明不是将整个文件进行纠删码算法处理,而是将文件先进行分块然后再针对每个文件块进行纠删码编码,这样当访问该文件的某段区域时,只需获取该段区域所在的一个或者若干个“文件块”的部分纠删数据块即可。而现有方案需要获取整个文件的全部内容或者全部数据块才能访问到该段区域。
本发明提高了现有公有存储云解决方案下存储空间的利用率,因为本发明提高了“文件”级别和“文件块”级别的去冗余存储,当多个文件的内容相同或者多个文件存在相同内容的“文件块”时,无需再重复存储这些文件或者文件块的“纠删数据块”。
本发明提高了现有公有存储云解决方案下用户文件的安全性,因为本发明中无论是云服务商还是“文件系统元服务器”装置提供商都无法访问或者访问到足够的某用户的“纠删数据块”从而恢复出用户的原始文件。
附图说明
图1是本发明中系统架构示意图。
图2是本发明中一种基于多网盘的增量纠删码存储系统的读方法流程图。
图3是本发明中一种基于多网盘的增量纠删码存储系统的写方法流程图。
图4是文件1的文件块布局示意图。
图5是文件块i与其对应的纠删数据块集合关系示意图。
具体实施方式
本发明提供了一种基于多网盘下的增量纠删码存储系统及读写方法。为能进一步了解本发明的技术内容、特点及功效,兹列举以下应用实例,并配合附图详细说明如下。
实施例1、基于多网盘下的增量纠删码存储系统
本发明所提供的基于多网盘下的增量纠删码存储系统包括如下:
“文件系统元服务器”装置200、“文件系统客户端”装置100和“网盘”装置300。“文件系统元服务器”装置200,主要是用来管理及存储文件系统的元数据,并对文件提供“文件”级别和“文件块”级别去冗余管理。
“文件系统客户端”装置100,主要是用来管理系统配置信息库、“文件块”的分解与合成、“纠删数据块”的编码与解码、“纠删数据块”的网盘上传与下载、去冗余以及对外提供文件的透明访问。
“网盘”装置300,主要是用来存储文件数据内容即“纠删数据块”,“网盘”装置包括各种公有云中的网盘、私有云中的网盘、以及其它能够提供文件存取服务的文件服务器。
例如:公有云中的网盘包括百度网盘、微软OneDrive、新浪网盘、Dropbox网盘等;私有云中的网盘包括seafile网盘等;文件服务器包括ftp服务器、NFS服务器、sshd服务器等。
“文件系统客户端”装置100与“网盘”装置300通过网络400连接,“文件系统客户端”装置100与“文件系统元服务器”装置200既可以通过网络400连接也可以本地直接连接。
其中,
“文件系统元服务器”装置200包括用户元信息管理模块210、文件基本元信息管理模块220、“文件块”元信息管理模块230、“文件块纠删”元信息管理模块240、“纠删数据块”元信息管理模块250、网络传输模块280和本地存储介质290;
用户元信息管理模块210负责管理用户的基本信息,用户的基本信息包括用户编号、用户名称、用户访问口令、用户根目录文件编号和文件块默认大小。
文件基本元信息管理模块220负责管理文件的基本元信息,文件基本元信息包括文件编号、文件名称、文件大小、文件指纹摘要、所属父目录文件编号、文件块默认大小和默认“纠删码参数对”(即“编码后片数”n和“编码前片数”k,其中n>=k),其中,文件编号是文件的唯一标识。
“文件块”元信息管理模块230负责管理“文件块”的基本元信息管理和文件的“文件块序列”信息管理;“文件块”基本元信息包括文件块编号、文件块大小、文件块指纹摘要、“纠删码参数对”和当前引用数,其中,文件块编号是文件块的唯一标识,引用数为当前包含该“文件块”的不同文件的总数;文件的“文件块序列”信息包括文件编号、文件块序号、文件块编号和起始偏移量组成的四元组序列,其中文件块序号为“文件块”在该文件中的顺序编号。
“文件块纠删”元信息管理模块240负责管理文件块所包含的“纠删数据块”集合,“文件块纠删”元信息是由文件块编号和纠删数据块编号组成的二元组。
“纠删数据块”元信息管理模块250负责管理纠删数据块的基本元信息,“纠删数据块”基本元信息包括纠删数据块编号、纠删数据块大小、纠删数据块指纹摘要、网盘编号、网盘路径和当前引用数,其中,纠删数据块编号是纠删数据块的唯一标识,引用数为当前包含该“纠删数据块”的不同“文件块”的总数。
本地存储介质290负责存储“文件系统元服务器”装置中所管理的上述各种元数据信息。
网络传输模块280负责“文件系统元服务器”装置200中其它模块与“文件系统客户端”装置100以及“网盘”装置300的网络通信。
“文件系统元服务器”装置200中,用户元信息管理模块210通过文件基本元信息管理模块220获得给定文件的文件基本元信息;文件基本元信息管理模块220通过“文件块”元信息管理模块230获得给定文件的“文件块序列”信息以及该文件所包含“文件块”的“文件块”的基本元信息;“文件块”元信息管理模块230通过“文件块纠删”元信息管理模块240获得给定“文件块”的“文件块纠删”元信息;“文件块纠删”元信息管理模块240通过“纠删数据块”元信息管理模块250获得给定“纠删数据块”的“纠删数据块”基本元信息。
“文件系统客户端”装置100包括应用程序101、文件访问接口模块110、文件块信息管理模块120、文件块分解与合成模块160、纠删码编码与解码模块150、网盘访问模块170、网络传输模块180、系统管理模块140和本地存储介质190。
应用程序101为进行文件访问的各种第三方计算机程序,即调用者;
文件访问接口模块110负责调用者的文件访问操作,包括将调用者的文件访问操作所要访问文件区域转化为“文件块”编号序列,将调用者写访问文件区域的新数据合并到所属文件中,以及将调用者读访问文件区域从所属文件中读取到调用者所指定的空间。
例如:调用者的文件读访问操作一般为ssize_tread(intfd,void*buf,size_tcount),此时欲读取从当前偏移量指针开始的count个字节;如图4所示,需要将调用者的文件读访问操作转换为读若干个“文件块”的操作。
文件块信息管理模块120负责对文件、“文件块”、“纠删数据块”的元信息及对应关系的检索和更新。
文件块分解与合成模块160负责对指定文件进行“文件块”的分解以及将“文件块”合成为文件的功能。
纠删码编码与解码模块150负责将指定的“文件块”采用纠删码算法进行编码运算生成“纠删数据块”集合,以及将一组“纠删数据块”集合采用纠删码算法进行解码运算合成“文件块”。
网盘访问模块170负责与外部各种网盘数据的访问操作,访问操作包括对“纠删数据块”的上传、下载和删除。
网络传输模块180负责通过外部网络与各种网盘和“文件系统元服务器”装置的数据通信。
系统管理模块140负责用户信息、网盘信息以及系统全局配置信息的管理;用户信息包括用户编号、用户名称、用户根目录文件编号和文件系统元服务器的访问口令;网盘信息包括网盘编号、网盘名称、网盘用户名、网盘访问口令、网盘网络地址、网盘路径用户根目录以及网盘容量限制,其中网盘编号是网络的标识;系统全局配置信息包括用户信息存储位置、网盘信息存储位置、默认文件块大小和默认“纠删码参数对”。
本地存储介质190负责长期或者临时存储“文件系统客户端”装置中其它模块所处理的各种数据。
“文件系统客户端”装置100中,网盘访问模块170通过调用网络传输模块180来访问各个网盘;文件块信息管理模块120通过调用网盘访问模块170对网盘上的文件数据进行去冗管理的;文件块分解与合成模块160通过调用网盘访问模块170来访问各个网盘;文件块分解与合成模块160通过调用纠删码编码与解码模块150来实现文件块与纠删数据块之间的转换;文件块信息管理模块120通过调用网络传输模块180来访问“文件系统元服务器”装置从而实现文件系统各种信息的检索和更新;文件块信息管理模块120通过访问系统管理模块140、文件块分解与合成模块160、以及纠删码编码与解码模块150来实现文件数据的本地处理,并向上层的文件访问接口模块110提供“文件块”级别的文件访问操作。
所述的基于多网盘下的增量纠删码存储系统中,文件的数据内容以“文件块”为对外提供文件访问服务的最小访问单元,针对每个“文件块”采用纠删码算法转化为一组“纠删数据块”,以“纠删数据块”为最小的存储单位,全部“纠删数据块”分散存储在多个“网盘”装置中;文件的基本元信息、文件的“文件块序列”信息、“文件块”的基本元信息、“文件块纠删”元信息和“纠删数据块”基本元信息均最终存储在“文件系统元服务器”装置中,“文件系统客户端”装置中可以缓存上述元信息。
例如:图4中文件1共有10个“文件块”,每个“文件块”的大小为1MB,共10MB;图5中文件块i通过纠删码算法转化为N个“纠删数据块”,事实上各个“网盘”装置中分散存储的不是“文件块”、而是“纠删数据块”。
所述纠删码算法,“文件系统客户端”装置依据“文件块”对应的“纠删码参数对”采用纠删码算法编码运算将该“文件块”编码转化为n个“纠删数据块”,“文件系统客户端”装置可以通过获取上述n个“纠删数据块”中的k个“纠删数据块”并采用纠删码算法进行解码运算恢复出原“文件块”;同一个文件内的每个“文件块”的“纠删码参数对”即可以相同也可以不同,每个“文件块”的“纠删码参数对”存放在该“文件块”的基本元信息中;不同文件的各个“文件块”的“纠删码参数对”即可以相同也可以不同,每个文件的“纠删码参数对”存放在该文件的基本元信息中;所有文件的全部“文件块”可共用相同的“纠删码参数对”,由“文件系统客户端”装置中系统全局配置的默认“纠删码参数对”来决定。
例如:针对图4文件1中的第i个文件块,图5中将该文件块i通过纠删码算法转化为N个“纠删数据块”,当要读取文件1的第i个文件块时,只需要获取分散在多个“网盘”装置中这N个“纠删数据块”中的K个,即可通过纠删码算法的解码运算重新恢复出文件1的第i个文件块;多网盘下的增量纠删码存储系统中,在系统全局配置存储“纠删码参数对”值,作为所有文件的默认“纠删码参数对”;若某个文件的基本元信息中设置了“纠删码参数对”值,则其作为该文件的实际“纠删码参数对”值。
所述的“文件系统元服务器”装置提供“文件”级别和“文件块”级别去冗余管理是指,“文件系统客户端”装置需要将新创建或者修改的文件的最新“文件指纹摘要”更新到“文件系统元信息服务器”装置中,“文件系统元信息服务器”装置将判断该文件的“文件指纹摘要”是否与已有文件的“文件指纹摘要”相同,如果该文件与已有文件的“文件指纹摘要”相同,则“文件系统元信息服务器”装置将直接用已有文件的“文件块序列”更新该文件的“文件块序列”,从而减少该文件的数据内容的重复存储;“文件系统客户端”装置需要将新创建或者修改的“文件块”最新“文件块指纹摘要”更新到“文件系统元信息服务器”装置中,“文件系统元信息服务器”装置将判断该“文件块”的“文件块指纹摘要”是否与已有“文件块”的“文件块指纹摘要”相同,如果该“文件块”与已有“文件块”的“文件块指纹摘要”相同,“文件系统元信息服务器”装置将直接用已有“文件块”的“文件块纠删元信息”更新该“文件块”的对应“文件块纠删元信息”,从而减少该“文件块”的对应“纠删数据块”的重复存储;“文件系统元服务器”装置负责提供“纠删数据块”的当前引用数的查询,“文件系统客户端”装置负责对零引用数的“纠删数据块”从其所属的网盘中删除;“文件系统元服务器”装置负责提供“文件块”的当前引用数的查询,“文件系统元服务器”装置也负责对零引用数的“文件块”的文件块元信息和文件块纠删元信息进行删除。
所述的“文件系统客户端”装置访问网络上的多个网盘所需要的“网盘信息”均存储在“文件系统客户端”装置中;“文件系统元信息服务器”装置无权访问网络中的多个网盘上用户所拥有的文件的对应“纠删数据块”;“文件系统元信息服务器”装置中所管理的元信息既可以存储在“文件系统元信息服务器”装置中的“本地存储介质”上,也可以存储在网络中的一个或者多个网盘上;当“文件系统元信息服务器”装置中所管理的元信息存储在网络中的一个或者多个网盘上时,“文件系统元信息服务器”装置需要拥有属于自己的网盘信息。
为了确保用户在使用公有云时保护用户文件的保密性,用户文件的每个“文件块”所对应的所有“纠删数据块”将分散存储在多个“网盘”装置中,这样提供“网盘”装置的公有云服务商无法在其自己存储的部分“纠删数据块”来恢复出用户文件的某个“文件块”;而“文件系统元信息服务器”装置的提供商虽然知道用户文件的所有元信息,但是“文件系统元信息服务器”装置的提供商因为没有访问“网盘”装置的用户“网盘信息”,因此无法搜集到某个“文件块”所对应的足够多的“纠删数据块”,因此保证了用户文件在公有云中存储的保密安全;事实上用户还可以对文件的“文件块”进行加密或者对“纠删数据块”进行加密处理,这样更加增强了用户文件在公有云中存储的保密安全;
文件系统元信息服务器”装置的提供商也可以将其管理的所有文件的各类元信息保存在公有云“网盘”装置中,此时需要文件系统元信息服务器”装置的提供商拥有属于自己的且能够访问该公有云“网盘”装置的网盘信息。
实施例2、基于多网盘的增量纠删码存储系统的读方法
本发明所提供的基于多网盘的增量纠删码存储系统的读方法,包括具体步骤如下:
第1、“文件访问接口”模块获取调用者“读操作请求”文件的所要读操作区域,即读操作的文件偏移量和长度;
例如:如图4所示实例,读取文件1的具体读操作read(intfd,void*buf,size_tcount)中count为1048577字节(即1MB+1字节),当前偏移量为0的实例:那么则文件偏移量为0和长度为1048577字节。
第2、“文件访问接口”模块获取系统全局配置信息、用户信息以及网盘信息;
例如:
系统全局配置信息实例:用户信息存储位置(/usr/ecfs/user.xml)、网盘信息存储位置(/usr/ecfs/netdisk.xml)、默认文件块大小(1MB)和默认“纠删码参数对”({5,3});
用户信息实例:用户编号(001)、用户名称(xiaoming)、用户根目录文件编号(1001)和文件系统元服务器的访问口令(mimas);
网盘信息实例1:网盘编号(01)、网盘名称(百度网盘)、网盘用户名(usrxm)、网盘访问口令(mimabaidu)、网盘网络地址(http://pan.baidu.com)、网盘路径用户根目录(/data)以及网盘容量限制(2TB);
网盘信息实例2:网盘编号(02)、网盘名称(新浪网盘)、网盘用户名(usrxmxl)、网盘访问口令(mimaxl)、网盘网络地址(http://pan.sina.com)、网盘路径用户根目录(/data2)以及网盘容量限制(1TB);
网盘信息实例3:网盘编号(03)、网盘名称(华为网盘)、网盘用户名(usrxmhw)、网盘访问口令(mimahw)、网盘网络地址(http://pan.hw.com)、网盘路径用户根目录(/data)以及网盘容量限制(500MB);
网盘信息实例4:网盘编号(04)、网盘名称(dropbox)、网盘用户名(usrxmdb)、网盘访问口令(mimadb)、网盘网络地址(http://www.dropbox.com)、网盘路径用户根目录(/mydata)以及网盘容量限制(1TB);
网盘信息实例5:网盘编号(05)、网盘名称(onedrive)、网盘用户名(usrxmod)、网盘访问口令(mimaod)、网盘网络地址(http://onedrive.com)、网盘路径用户根目录(/files)以及网盘容量限制(2TB);
网盘信息实例6:网盘编号(06)、网盘名称(aliyun)、网盘用户名(usrxmal)、网盘访问口令(mimaal)、网盘网络地址(http://www.aliyun.com)、网盘路径用户根目录(/myfiles)以及网盘容量限制(2TB)。
第3、“文件访问接口”模块调用“文件块信息管理”模块,将第1步中读操作区域转化为所要读的“文件块”编号序列,具体步骤如下:
第3.1、“文件块信息管理”模块从“文件系统元信息服务器”装置中或者本地缓存中获取第1步中文件的文件基本元信息;
例如:如图4所示文件1的文件基本元信息:文件编号(20001)、文件名称(file1)、文件大小(10MB)、文件指纹摘要(fp123)、所属父目录文件编号(1001)、文件块默认大小(1MB)和默认“纠删码参数对”({5,4})。
第3.2、“文件块信息管理”模块从“文件系统元信息服务器”装置中或者本地缓存中获取第1步中文件的“文件块序列”信息;
例如:如图4所示文件1的“文件块序列”信息:
{
{文件编号(20001)、文件块序号(0)、文件块编号(300001)和起始偏移量(0)},
{文件编号(20001)、文件块序号(1)、文件块编号(300002)和起始偏移量(1MB)},
…
{文件编号(20001)、文件块序号(9)、文件块编号(300009)和起始偏移量(9MB)}
}
第3.3、“文件块信息管理”模块根据第1步中读操作区域以及第3.2步中“文件块序列”信息,计算出第1步中的读操作区域所对应的“文件块”编号序列;
例如:如图4所示文件1,根据第1步中读操作区域是要读文件1的前两个“文件块”,因此第1步中的读操作区域所对应的“文件块”编号序列为:{300001,300002};
第4、“文件块信息管理”模块从“文件系统元信息服务器”装置中或者本地缓存中获取第3.3步中“文件块”编号序列所对应的“文件块”基本元信息、“文件块纠删”元信息以及“纠删数据块”元信息;
例如:
“文件块”300001的“文件块”基本元信息:文件块编号(300001)、文件块大小(1MB)、文件块指纹摘要(fpb001)、“纠删码参数对”({5,4})和当前引用数(1);
“文件块”300001的“文件块纠删”元信息:
{
{文件块编号(300001),纠删数据块编号(410001)},
{文件块编号(300001),纠删数据块编号(410002)},
{文件块编号(300001),纠删数据块编号(410003)},
{文件块编号(300001),纠删数据块编号(410004)},
{文件块编号(300001),纠删数据块编号(410005)}
}
“文件块”300001中的“纠删数据块”(410001)的“纠删数据块”元信息:纠删数据块编号(410001)、纠删数据块大小(1MB)、纠删数据块指纹摘要(fpec001)、网盘编号(02)、网盘路径(/300001/ec410001)和当前引用数(1);
“文件块”300001中的其它“纠删数据块”的“纠删数据块”元信息与上述类似,限于篇幅不赘述。
“文件块”300002的上述元信息限于篇幅不赘述。
第5、针对第4步中每个“文件块”,“文件块信息管理”模块依据该文件块的“纠删码参数对”信息调用“网盘访问模块”来获取n个中的k个纠删数据块的集合;若全部下载成功则执行第6步,否则执行第7步;
例如:如图4所示文件1,因为要读取第0和第1个“文件块”,以要读取第0“文件块”300001为例,根据该“文件块”的最接近的“纠删码参数对”({5,4}),只需要下载“文件块”300001的任意4个“纠删数据块”即可恢复出“文件块”300001;因此根据“文件块”300001的“文件块纠删”元信息随机选取4个“纠删数据块”,并分别根据这些“纠删数据块”元信息来获取其对应的网盘编号和网盘路径,并进一步对应“网盘信息”的网盘用户名和网盘访问口令来从对应“网盘”装置中下载“纠删数据块”。
第6、“纠删数据块”集合下载全部成功,执行以下操作,具体步骤:
第6.1、针对第4步中每个“文件块”,“文件块信息管理”模块调用“纠删码编码与解码”模块,将该文件块所对应的第5步中已下载“纠删数据块”集合采用纠删码算法进行解码运算并生成对应的“文件块”;
例如:如图5所示,可由4个“纠删数据块”通过采用纠删码算法进行解码运算并生成对应的“文件块”300001。
第6.2、“文件块信息管理”模块调用“文件块分解与合成”模块,将第6.1步中已经过纠删码算法的解码生成的多个“文件块”按照文件块序号排序并进一步合成为本地“文件”副本;
例如:同理,也可采用纠删码算法进行解码运算生成“文件块”300002;因此第1步中读操作区域即文件1的第0和第1个“文件块”全部生成,在进一步合成为本地“文件”副本;该本地“文件”副本未必是文件1的全部内容,该本地“文件”副本只需要包含要读取的“文件块”即可。
第6.3、“文件访问接口”模块根据第1步中读操作区域从第6.2步中的本地“文件”副本中抽取出所要读操作区域的内容到调用者指定的空间中;
例如:本案例中从偏移量为0的位置要读取1048577字节(即1MB+1字节),因此要读取第0块“文件块”全部数据和第1块“文件块”的第1个字节,将上述1048577字节复制到调用者指定的空间buf中。
第6.4、设置读操作结果为成功;并执行第8步;
第7、“纠删数据块”集合下载失败,执行以下操作,具体步骤是:
第7.1、在本地存储中删除所有第5步中已下载的“纠删数据块”;
第7.2、设置读操作结果为失败;并执行第8步;
第8、返回读操作结果,程序执行结束。
实施例3、基于网盘的增量纠删码存储系统的写方法
本发明所提供的基于网盘的增量纠删码存储系统的写方法,包括具体步骤如下:
第1、“文件访问接口”模块获取调用者“写操作请求”文件的所要写操作区域,即写操作的文件偏移量和长度;
例如:如图4所示实例,写文件1的具体写操作write(intfd,void*buf,size_tnbyte)中nbyte为1048577字节(即1MB+1字节),当前偏移量为0的实例:那么则文件偏移量为0和长度为1048577字节;
第2、“文件访问接口”模块获取系统全局配置信息、用户信息以及网盘信息;
例如:同实施例2,故不赘述。
第3、“文件访问接口”模块调用“文件块信息管理”模块将第1步中的写操作区域转化为所要写的“文件块”编号序列,具体步骤如下:
第3.1、“文件块信息管理”模块从“文件系统元信息服务器”装置中或者本地缓存中获取第1步中文件的文件基本元信息;
例如:同实施例2,故不赘述。
第3.2、“文件块信息管理”模块从“文件系统元信息服务器”装置中或者本地缓存中获取第1步中文件的“文件块序列”信息和该文件的所有“文件块”的文件块基本元信息;
例如:同实施例2,故不赘述。
第3.3、“文件块信息管理”模块根据第1步中写操作区域以及第3.1步中文件基本元信息的文件块大小,计算出第1步中的写操作区域所对应的“文件块”编号序列;
例如:同实施例2,第1步中的写操作区域所对应的“文件块”编号序列为{300001,300002}。
第4、“文件块信息管理”模块调用“文件块分解与合成”模块,“文件块分解与合成”模块依次遍历第3.3步中“文件块”编号序列,对第3.2步中每个“文件块”编号所对应的已有“文件块”采用第1步中调用者提供的最新写区域数据进行覆盖合并从而生成对应的最新已修改“文件块”;若覆盖合并成功则执行第5步,否则执行第9步;
例如:本实施例中,对文件1的第1个“文件块”进行写区域完全覆盖;对文件1的第2个“文件块”进行写区域部分覆盖,事实上只覆盖了1个字节,其它字节都需要保留。
第5、针对第4步生成的最新已修改“文件块”序列,“文件块信息管理”模块计算出每个“文件块”的“文件块指纹摘要”;进一步“文件块信息管理”模块计算出第1步中文件的“文件指纹摘要”;“文件块信息管理”模块将第1步中文件的“文件指纹摘要”和第4步生成的最新已修改“文件块”序列所对应的“文件块指纹摘要”序列上传到“文件系统元服务器”装置;
例如:第1个“文件块”300001的最新“文件块指纹摘要”为(fpb00X),而不是原来的(fpb001);第2个“文件块”300002的最新“文件块指纹摘要”为(fpb00Y),而不是原来的(fpb002);文件1的最新文件指纹摘要(fp12X),而不是原来的(fp123);
第6、“文件块信息管理”模块等待“文件系统元服务器”装置的判断冗余与否的回复,具体处理步骤如下:
第6.1、“文件系统元服务器”装置回复第5步中的“文件指纹摘要”已重复存在,则执行第8步;
例如:假如“文件系统元服务器”装置已有文件指纹摘要(fp12X)的文件2,那么文件1只需将其“文件块序列”信息更新为文件2的即可,即第8步所执行的功能;本实施例中假设“文件系统元服务器”装置不存在文件指纹摘要(fp12X)。
第6.2、“文件系统元服务器”装置回复第5步中上传的“文件块指纹摘要”序列在文件系统中已重复存在的“文件块指纹摘要及文件块编号”集合,若该“文件块指纹摘要及文件块编号”集合为空,则执行第7步;
例如:即“文件系统元服务器”装置不存在“文件块指纹摘要”为(fpb00X)和“文件块指纹摘要”为(fpb00Y)的已有“文件块”。
第6.3、把第6.2步中已重复存在的“文件块指纹摘要及文件块编号”集合从第4步中最新已修改“文件块”序列中去除掉即建立最新已修改且不冗余的“文件块”序列,并进一步执行第7步;
例如:假如“文件系统元服务器”装置已有重复存在的“文件块指纹摘要”为(fpb00Y),那么“文件系统元服务器”装置将回复已重复存在的“文件块指纹摘要及文件块编号”集合为{{fpb00Y,320011}},其中320011为已有重复存在的“文件块指纹摘要”为(fpb00Y)对应的已存在“文件块”的文件块编号;则进一步可得最新已修改且不冗余的“文件块”序列为{300001}。
第7、针对第6.3中最新已修改且不冗余的“文件块”序列,“文件块信息管理”模块分别对每个“文件块”进行纠删码处理和存储,具体步骤如下:
第7.1、“文件块信息管理”模块调用“纠删码编码与解码”模块,依据该“文件块”的“纠删码参数对”并采用纠删码算法进行编码运算,生成对应的“纠删数据块”集合;
例如:按本实施例第6.3中示例,只需对“文件块”300001采用文件1的“纠删码参数对”重新生成对应的“纠删数据块”集合。
第7.2、针对第7.1步骤中“纠删数据块”集合,“文件块信息管理”模块分别计算出每个“纠删数据块”的元信息;
例如:每个“纠删数据块”的元信息如实施例2中所示示例,主要是给出每个“纠删数据块”所需要存储的“网盘”装置的网盘编号和网盘路径,不赘述。
第7.3、“文件块信息管理”模块对该“文件块”计算生成“文件块纠删”元信息和“文件块”基本元信息;
例如:同实施例2中所示示例,不赘述。
第7.4、“文件块信息管理”模块通过“网盘访问模块”将第7.1步中的“纠删数据块”集合的各个“纠删数据块”上传到各自的网盘编号的“网盘”装置中;若全部上传成功则执行第8步,否则执行第9步;
例如:按第7.2中给出的网盘编号和网盘路径,将对应的“纠删数据块”上传到各自的“网盘”装置中。
第8、针对第6.3中最新已修改且不冗余的“文件块”序列,该“文件块”序列中每个“文件块”的所有“纠删数据块”全部上传成功,执行以下操作,具体步骤是:
第8.1、“文件块信息管理”模块将第6.3中最新已修改且不冗余的“文件块”序列中每个“文件块”所包含的“纠删数据块”的元信息更新到“文件系统元服务器”装置中;
例如:更新“文件块”300001的所有“纠删数据块”的元信息到“文件系统元服务器”装置中。
第8.2、“文件块信息管理”模块将第6.3中最新已修改且不冗余的“文件块”序列中每个“文件块”的“文件块纠删”的元信息和“文件块”基本元信息更新到“文件系统元服务器”装置中,“文件系统元服务器”装置做进一步的“文件块”级别冗余处理;
例如:更新“文件块”的300001的文件块纠删”的元信息和“文件块”基本元信息到“文件系统元服务器”装置中。
第8.3、“文件块信息管理”模块根据第3.2步中“文件块序列”信息和第4步最新已修改“文件块”序列重新计算生成第1步中文件的最新“文件块序列”信息;“文件块信息管理”模块进一步将该最新“文件块序列”信息更新到“文件系统元服务器”装置中;
例如:更新“文件1”的最新已修改“文件块”序列到“文件系统元服务器”装置中,其中按本实施例中“文件1”的最新的第2个“文件块”已经改为与其“文件块指纹摘要”为(fpb00Y)的已有“文件块”的文件块编号320011。
第8.4、“文件块信息管理”模块根据第3.1步中文件基本元信息和第1步中写操作区域重新计算生成第1步中文件的最新文件基本元信息;“文件块信息管理”模块进一步将该最新文件基本元信息更新到“文件系统元服务器”装置中,“文件系统元服务器”装置做进一步的“文件”级别冗余处理;
例如:按本实施例中“文件1”的最新的第2个“文件块”存在与其“文件块指纹摘要”为(fpb00Y)的已有“文件块”,因此“文件1”的原有的第2个“文件块”300002将在此过程的冗余处理中可能被处理掉,如果该“文件块”300002的当前引用数为0。
第8.5、设置写操作结果为成功;并执行第10步;
第9、针对第6.3中最新已修改且不冗余的“文件块”序列,该“文件块”序列中每个“文件块”的所有“纠删数据块”部分或者全部上传失败,执行以下操作,具体步骤:
第9.1、针对第7步所有已上传的“纠删数据块”分别删除本地和在对应的“网盘”装置中的数据;
第9.2、设置写操作结果为失败;并执行第10步;
第10、返回写操作结果,程序执行结束。
所述的计算文件的“文件指纹摘要”可采用如下方法:首先对文件的各个“文件块”单独采用通常的指纹算法计算“文件块”指纹摘要,然后在将这些“文件块”指纹摘要按照“文件块”的序号排序生成“文件块”指纹摘要序列,最后对该“文件块”指纹摘要序列采用通常的指纹算法计算出一个新的指纹摘要并将该新的指纹摘要作为该文件的“文件指纹摘要”。
例如:如图4中文件1的10个文件块的指纹摘要分别为Fi(0=<i<10),则文件1的文件指纹摘要可用如下公式:F=Sha1(F0||F1||…||F9),其中Sha1为传统指纹摘要算法,||为字符串连接操作。
所述的“基于多网盘的增量纠删码存储系统的写方法”中,第4步中采用调用者提供的最新写区域数据进行覆盖合并从而生成对应的最新“文件块”的方法如下:
方法1是首先调用本发明所述的“多网盘的增量纠删码存储系统的读方法”,将所述读方法第3.3步中所指“文件块”编号序列所对应的“纠删数据块”全部下载到本地并采用纠删码算法的解码运算生成本地的“文件块”,然后再用调用者提供的最新写区域数据进行覆盖合并;
例如:若使用方法1,本实施例中文件1有10个“文件块”,需要先将这10个“文件块”的所有“纠删数据块”从各自的“网盘”装置下载到本地并且进行纠删码算法解码,这个方法事实上造成了不必要的处理时间浪费;
或者,
方法2是首先判断调用者提供的最新写区域所涉及的已有“文件块”是否已被全覆盖,若是已被全覆盖则直接用调用者提供的对应的最新写区域数据覆盖,若已有“文件块”未被全覆盖则调用本发明所述的“多网盘的增量纠删码存储系统的读方法”将所对应的“纠删数据块”全部下载到本地并采用纠删码算法的解码运算生成本地的“文件块”,然后再用调用者提供的对应的最新写区域数据进行覆盖合并。
例如:若使用方法2,本实施例中文件1,要对第0块和第1块进行覆盖合并改写,因此只需先把第0块和第1块“文件块”所对应的所有“纠删数据块”从各自的“网盘”装置下载到本地并且进行纠删码算法解码;如果第0“文件块”此前已经下载到本地,则不必要重复下载。针对覆盖合并的实例:该写案例将第0块完全覆盖、将第1块的第一个字节覆盖且本块的其余字节保留。
考虑到在此公开的对本发明的描述和特例的实施例,本发明的其他实施例对于本领域的技术人员来说是显而意见的。这些说明和实施例仅作为例子来考虑,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种多网盘下的增量纠删码存储系统,其特征在于,所述系统包括“文件系统元服务器”装置、“文件系统客户端”装置和“网盘”装置;“文件系统元服务器”装置,主要是用来管理及存储文件系统的元数据,并对文件提供“文件”级别和“文件块”级别去冗余管理;“文件系统客户端”装置,主要是用来管理系统配置信息库、“文件块”的分解与合成、“纠删数据块”的编码与解码、“纠删数据块”的网盘上传与下载、去冗余以及对外提供文件的透明访问;“网盘”装置,主要是用来存储文件数据内容即“纠删数据块”,“网盘”装置包括各种公有云中的网盘、私有云中的网盘以及其它能够提供文件存取服务的文件服务器;“文件系统客户端”装置与“网盘”装置通过网络连接,“文件系统客户端”装置与“文件系统元服务器”装置既可以通过网络连接也可以本地直接连接;
其中,
“文件系统元服务器”装置包括:用户元信息管理模块、文件基本元信息管理模块、“文件块”元信息管理模块、“文件块纠删”元信息管理模块、“纠删数据块”元信息管理模块、网络传输模块和本地存储介质;用户元信息管理模块负责管理用户的基本信息,用户的基本信息包括用户编号、用户名称、用户访问口令、用户根目录文件编号和文件块默认大小;文件基本元信息管理模块负责管理文件的基本元信息,文件基本元信息包括文件编号、文件名称、文件大小、文件指纹摘要、所属父目录文件编号、文件块默认大小和默认“纠删码参数对”,所述“纠删码参数对”即“编码后片数”n和“编码前片数”k,其中n>=k,文件编号是文件的唯一标识;“文件块”元信息管理模块负责管理“文件块”的基本元信息管理和文件的“文件块序列”信息管理;“文件块”基本元信息包括文件块编号、文件块大小、文件块指纹摘要、“纠删码参数对”和当前引用数,其中,文件块编号是文件块的唯一标识,引用数为当前包含该“文件块”的不同文件的总数;文件的“文件块序列”信息包括文件编号、文件块序号、文件块编号和起始偏移量组成的四元组序列,其中文件块序号为“文件块”在该文件中的顺序编号;“文件块纠删”元信息管理模块负责管理文件块所包含的“纠删数据块”集合,“文件块纠删”元信息是由文件块编号和纠删数据块编号组成的二元组;“纠删数据块”元信息管理模块负责管理纠删数据块的基本元信息,“纠删数据块”基本元信息包括纠删数据块编号、纠删数据块大小、纠删数据块指纹摘要、网盘编号、网盘路径和当前引用数,其中,纠删数据块编号是纠删数据块的唯一标识,引用数为当前包含该“纠删数据块”的不同“文件块”的总数;本地存储介质负责存储“文件系统元服务器”装置中所管理的上述各种元数据信息;网络传输模块负责“文件系统元服务器”装置中其它模块与“文件系统客户端”装置以及“网盘”装置的网络通信;
“文件系统客户端”装置包括:应用程序、文件访问接口模块、文件块信息管理模块、文件块分解与合成模块、纠删码编码与解码模块、网盘访问模块、网络传输模块、系统管理模块和本地存储介质;应用程序为进行文件访问的各种第三方计算机程序,即调用者;文件访问接口模块负责调用者的文件访问操作,包括将调用者的文件访问操作所要访问的文件区域转化为“文件块”编号序列,将调用者写访问文件区域的新数据合并到所属文件中,以及将调用者读访问文件区域从所属文件中读取到调用者所指定的空间;文件块信息管理模块负责对文件、“文件块”、“纠删数据块”的元信息及对应关系的检索和更新;文件块分解与合成模块负责对指定文件进行“文件块”的分解以及将“文件块”合成为文件的功能;纠删码编码与解码模块负责将指定的“文件块”采用纠删码算法进行编码运算生成“纠删数据块”集合,以及将一组“纠删数据块”集合采用纠删码算法进行解码运算合成“文件块”;网盘访问模块负责与外部各种网盘数据的访问操作,访问操作包括对“纠删数据块”的上传、下载和删除;网络传输模块负责通过外部网络与各种网盘和“文件系统元服务器”装置的数据通信;系统管理模块负责用户信息、网盘信息以及系统全局配置信息的管理;用户信息包括用户编号、用户名称、用户根目录文件编号和文件系统元服务器的访问口令;网盘信息包括网盘编号、网盘名称、网盘用户名、网盘访问口令、网盘网络地址、网盘路径用户根目录以及网盘容量限制,其中网盘编号是网络的标识;系统全局配置信息包括用户信息存储位置、网盘信息存储位置、默认文件块大小和默认“纠删码参数对”;本地存储介质负责长期或者临时存储“文件系统客户端”装置中其它模块所处理的各种数据;
“文件系统客户端”装置中,网盘访问模块通过调用网络传输模块来访问各个网盘;文件块信息管理模块通过调用网盘访问模块对网盘上的文件数据进行去冗管理的;文件块分解与合成模块通过调用网盘访问模块来访问各个网盘;文件块分解与合成模块通过调用纠删码编码与解码模块来实现文件块与纠删数据块之间的转换;文件块信息管理模块通过调用网络传输模块来访问“文件系统元服务器”装置从而实现文件系统各种信息的检索和更新;文件块信息管理模块通过访问系统管理模块、文件块分解与合成模块以及纠删码编码与解码模块来实现文件数据的本地处理,并向上层的文件访问接口模块提供“文件块”级别的文件访问操作。
2.根据权利要求1所述的多网盘下的增量纠删码存储系统,其特征在于,文件的数据内容以“文件块”为对外提供文件访问服务的最小访问单元,针对每个“文件块”采用纠删码算法转化为一组“纠删数据块”,以“纠删数据块”为最小的存储单位,全部“纠删数据块”分散存储在多个“网盘”装置中;文件的基本元信息、文件的“文件块序列”信息、“文件块”的基本元信息、“文件块纠删”元信息和“纠删数据块”基本元信息均最终存储在“文件系统元服务器”装置中,“文件系统客户端”装置中可以缓存上述元信息。
3.根据权利要求1或2所述的多网盘下的增量纠删码存储系统,其特征在于,所述纠删码算法是指,“文件系统客户端”装置依据“文件块”对应的“纠删码参数对”采用纠删码算法编码运算将该“文件块”编码转化为n个“纠删数据块”,“文件系统客户端”装置可以通过获取上述n个“纠删数据块”中的k个“纠删数据块”并采用纠删码算法进行解码运算恢复出原“文件块”;同一个文件内的每个“文件块”的“纠删码参数对”即可以相同也可以不同,每个“文件块”的“纠删码参数对”存放在该“文件块”的基本元信息中;不同文件的各个“文件块”的“纠删码参数对”即可以相同也可以不同,每个文件的“纠删码参数对”存放在该文件的基本元信息中;所有文件的全部“文件块”可共用相同的“纠删码参数对”,由“文件系统客户端”装置中系统全局配置的默认“纠删码参数对”来决定。
4.根据权利要求1或2所述的多网盘下的增量纠删码存储系统,其特征在于,所述的“文件系统元服务器”装置提供“文件”级别和“文件块”级别去冗余管理是指,“文件系统客户端”装置需要将新创建或者修改的文件的最新“文件指纹摘要”更新到“文件系统元信息服务器”装置中,“文件系统元信息服务器”装置将判断该文件的“文件指纹摘要”是否与已有文件的“文件指纹摘要”相同,如果该文件与已有文件的“文件指纹摘要”相同,则“文件系统元信息服务器”装置将直接用已有文件的“文件块序列”更新该文件的“文件块序列”,从而减少该文件的数据内容的重复存储;“文件系统客户端”装置需要将新创建或者修改的“文件块”最新“文件块指纹摘要”更新到“文件系统元信息服务器”装置中,“文件系统元信息服务器”装置将判断该“文件块”的“文件块指纹摘要”是否与已有“文件块”的“文件块指纹摘要”相同,如果该“文件块”与已有“文件块”的“文件块指纹摘要”相同,“文件系统元信息服务器”装置将直接用已有“文件块”的“文件块纠删元信息”更新该“文件块”的对应“文件块纠删元信息”,从而减少该“文件块”的对应“纠删数据块”的重复存储;“文件系统元服务器”装置负责提供“纠删数据块”的当前引用数的查询,“文件系统客户端”装置负责对零引用数的“纠删数据块”从其所属的网盘中删除;“文件系统元服务器”装置负责提供“文件块”的当前引用数的查询,“文件系统元服务器”装置也负责对零引用数的“文件块”的文件块元信息和文件块纠删元信息进行删除。
5.根据权利要求1或2所述的多网盘下的增量纠删码存储系统,其特征在于,“文件系统客户端”装置访问网络上的多个网盘所需要的“网盘信息”均存储在“文件系统客户端”装置中;“文件系统元信息服务器”装置无权访问网络中的多个网盘上用户所拥有的文件的对应“纠删数据块”;“文件系统元信息服务器”装置中所管理的元信息既可以存储在“文件系统元信息服务器”装置中的“本地存储介质”上,也可以存储在网络中的一个或者多个网盘上;当“文件系统元信息服务器”装置中所管理的元信息存储在网络中的一个或者多个网盘上时,“文件系统元信息服务器”装置需要拥有属于自己的网盘信息。
6.一种基于权利要求1所述多网盘的增量纠删码存储系统的读方法,其特征在于,所述方法包括具体步骤如下:
第1、所述系统通过“文件系统客户端”装置中的“文件访问接口”模块获取调用者“读操作请求”文件的所要读操作区域,即读操作的文件偏移量和长度;
第2、“文件访问接口”模块获取系统全局配置信息、用户信息以及网盘信息;
第3、“文件访问接口”模块调用“文件块信息管理”模块,将第1步中读操作区域转化为所要读的“文件块”编号序列,具体步骤如下:
第3.1、“文件块信息管理”模块从“文件系统元信息服务器”装置中或者本地缓存中获取第1步中文件的文件基本元信息;
第3.2、“文件块信息管理”模块从“文件系统元信息服务器”装置中或者本地缓存中获取第1步中文件的“文件块序列”信息;
第3.3、“文件块信息管理”模块根据第1步中读操作区域以及第3.2步中“文件块序列”信息,计算出第1步中的读操作区域所对应的“文件块”编号序列;
第4、“文件块信息管理”模块从“文件系统元信息服务器”装置中或者本地缓存中获取第3.3步中“文件块”编号序列所对应的“文件块”基本元信息、“文件块纠删”元信息以及“纠删数据块”元信息;
第5、针对第4步中每个“文件块”,“文件块信息管理”模块依据该文件块的“纠删码参数对”信息调用“网盘访问模块”来获取n个中的k个纠删数据块的集合;若全部下载成功则执行第6步,否则执行第7步;
第6、“纠删数据块”集合下载全部成功,执行以下操作,具体步骤:
第6.1、针对第4步中每个“文件块”,“文件块信息管理”模块调用“纠删码编码与解码”模块,将该文件块所对应的第5步中已下载“纠删数据块”集合采用纠删码算法进行解码运算并生成对应的“文件块”;
第6.2、“文件块信息管理”模块调用“文件块分解与合成”模块,将第6.1步中已经过纠删码算法的解码生成的多个“文件块”按照文件块序号排序并进一步合成为本地“文件”副本;
第6.3、“文件访问接口”模块根据第1步中读操作区域从第6.2步中的本地“文件”副本中抽取出所要读操作区域的内容到调用者指定的空间中;
第6.4、设置读操作结果为成功;并执行第8步;
第7、“纠删数据块”集合下载失败,执行以下操作,具体步骤是:
第7.1、在本地存储中删除所有第5步中已下载的“纠删数据块”;
第7.2、设置读操作结果为失败;并执行第8步;
第8、返回读操作结果,程序执行结束。
7.一种基于权利要求1所述多网盘的增量纠删码存储系统的写方法,其特征在于,所述方法包括具体步骤如下:
第1、所述系统通过“文件系统客户端”装置中的“文件访问接口”模块获取调用者“写操作请求”文件的所要写操作区域,即写操作的文件偏移量和长度;
第2、“文件访问接口”模块获取系统全局配置信息、用户信息以及网盘信息;
第3、“文件访问接口”模块调用“文件块信息管理”模块将第1步中的写操作区域转化为所要写的“文件块”编号序列,具体步骤如下:
第3.1、“文件块信息管理”模块从“文件系统元信息服务器”装置中或者本地缓存中获取第1步中文件的文件基本元信息;
第3.2、“文件块信息管理”模块从“文件系统元信息服务器”装置中或者本地缓存中获取第1步中文件的“文件块序列”信息和该文件的所有“文件块”的文件块基本元信息;
第3.3、“文件块信息管理”模块根据第1步中写操作区域以及第3.1步中文件基本元信息的文件块大小,计算出第1步中的写操作区域所对应的“文件块”编号序列;
第4、“文件块信息管理”模块调用“文件块分解与合成”模块,“文件块分解与合成”模块依次遍历第3.3步中“文件块”编号序列,对第3.2步中每个“文件块”编号所对应的已有“文件块”采用第1步中调用者提供的最新写区域数据进行覆盖合并从而生成对应的最新已修改“文件块”;若覆盖合并成功则执行第5步,否则执行第9步;
第5、针对第4步生成的最新已修改“文件块”序列,“文件块信息管理”模块计算出每个“文件块”的“文件块指纹摘要”;进一步“文件块信息管理”模块计算出第1步中文件的“文件指纹摘要”;“文件块信息管理”模块将第1步中文件的“文件指纹摘要”和第4步生成的最新已修改“文件块”序列所对应的“文件块指纹摘要”序列上传到“文件系统元服务器”装置;
第6、“文件块信息管理”模块等待“文件系统元服务器”装置的判断冗余与否的回复,具体处理步骤如下:
第6.1、“文件系统元服务器”装置回复第5步中的“文件指纹摘要”已重复存在,则执行第8步;
第6.2、“文件系统元服务器”装置回复第5步中上传的“文件块指纹摘要”序列在文件系统中已重复存在的“文件块指纹摘要及文件块编号”集合,若该“文件块指纹摘要及文件块编号”集合为空,则执行第7步;
第6.3、把第6.2步中已重复存在的“文件块指纹摘要及文件块编号”集合从第4步中最新已修改“文件块”序列中去除掉即建立最新已修改且不冗余的“文件块”序列,并进一步执行第7步;
第7、针对第6.3中最新已修改且不冗余的“文件块”序列,“文件块信息管理”模块分别对每个“文件块”进行纠删码处理和存储,具体步骤如下:
第7.1、“文件块信息管理”模块调用“纠删码编码与解码”模块,依据该“文件块”的“纠删码参数对”并采用纠删码算法进行编码运算,生成对应的“纠删数据块”集合;
第7.2、针对第7.1步骤中“纠删数据块”集合,“文件块信息管理”模块分别计算出每个“纠删数据块”的元信息;
第7.3、“文件块信息管理”模块对该“文件块”计算生成“文件块纠删”元信息和“文件块”基本元信息;
第7.4、“文件块信息管理”模块通过“网盘访问模块”将第7.1步中的“纠删数据块”集合的各个“纠删数据块”上传到各自的网盘编号的“网盘”装置中;若全部上传成功则执行第8步,否则执行第9步;
第8、针对第6.3中最新已修改且不冗余的“文件块”序列,该“文件块”序列中每个“文件块”的所有“纠删数据块”全部上传成功,执行以下操作,具体步骤是:
第8.1、“文件块信息管理”模块将第6.3中最新已修改且不冗余的“文件块”序列中每个“文件块”所包含的“纠删数据块”的元信息更新到“文件系统元服务器”装置中;
第8.2、“文件块信息管理”模块将第6.3中最新已修改且不冗余的“文件块”序列中每个“文件块”的“文件块纠删”的元信息和“文件块”基本元信息更新到“文件系统元服务器”装置中,“文件系统元服务器”装置做进一步的“文件块”级别冗余处理;
第8.3、“文件块信息管理”模块根据第3.2步中“文件块序列”信息和第4步最新已修改“文件块”序列重新计算生成第1步中文件的最新“文件块序列”信息;“文件块信息管理”模块进一步将该最新“文件块序列”信息更新到“文件系统元服务器”装置中;
第8.4、“文件块信息管理”模块根据第3.1步中文件基本元信息和第1步中写操作区域重新计算生成第1步中文件的最新文件基本元信息;“文件块信息管理”模块进一步将该最新文件基本元信息更新到“文件系统元服务器”装置中,“文件系统元服务器”装置做进一步的“文件”级别冗余处理;
第8.5、设置写操作结果为成功;并执行第10步;
第9、针对第6.3中最新已修改且不冗余的“文件块”序列,该“文件块”序列中每个“文件块”的所有“纠删数据块”部分或者全部上传失败,执行以下操作,具体步骤:
第9.1、针对第7步所有已上传的“纠删数据块”分别删除本地和在对应的“网盘”装置中的数据;
第9.2、设置写操作结果为失败;并执行第10步;
第10、返回写操作结果,程序执行结束。
8.根据权利要求1所述的系统和根据权利要求7所述的写方法,其特征在于,文件的“文件指纹摘要”的计算可采用如下方法:首先对文件的各个“文件块”单独采用通常的指纹算法计算“文件块”指纹摘要,然后在将这些“文件块”指纹摘要按照“文件块”的序号排序生成“文件块”指纹摘要序列,最后对该“文件块”指纹摘要序列采用通常的指纹算法计算出一个新的指纹摘要并将该新的指纹摘要作为该文件的“文件指纹摘要”。
9.根据权利要求7所述的写方法,其特征在于,第4步中所述采用调用者提供的最新写区域数据进行覆盖合并从而生成对应的最新“文件块”的方法如下:
方法1是首先调用权利要求6所述的“多网盘的增量纠删码存储系统的读方法”,将所述读方法第3.3步中所指“文件块”编号序列所对应的“纠删数据块”全部下载到本地并采用纠删码算法的解码运算生成本地的“文件块”,然后再用调用者提供的最新写区域数据进行覆盖合并;或者,
方法2是首先判断调用者提供的最新写区域所涉及的已有“文件块”是否已被全覆盖,若是已被全覆盖则直接用调用者提供的对应的最新写区域数据覆盖,若已有“文件块”未被全覆盖则调用权利要求6所述的“多网盘的增量纠删码存储系统的读方法”将所对应的“纠删数据块”全部下载到本地并采用纠删码算法的解码运算生成本地的“文件块”,然后再用调用者提供的对应的最新写区域数据进行覆盖合并。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610137334.2A CN105760116B (zh) | 2016-03-10 | 2016-03-10 | 一种多网盘下的增量纠删码存储方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610137334.2A CN105760116B (zh) | 2016-03-10 | 2016-03-10 | 一种多网盘下的增量纠删码存储方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105760116A true CN105760116A (zh) | 2016-07-13 |
CN105760116B CN105760116B (zh) | 2018-11-23 |
Family
ID=56333050
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610137334.2A Active CN105760116B (zh) | 2016-03-10 | 2016-03-10 | 一种多网盘下的增量纠删码存储方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105760116B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106446263A (zh) * | 2016-10-18 | 2017-02-22 | 北京航空航天大学 | 一种多媒体文件云存储平台及使用该云存储平台去冗的方法 |
CN106657266A (zh) * | 2016-11-10 | 2017-05-10 | 南京云创大数据科技股份有限公司 | 一种基于公有云的安全可靠的公有云存储系统的架构及方法 |
CN107608820A (zh) * | 2017-09-26 | 2018-01-19 | 郑州云海信息技术有限公司 | 一种基于纠删码的文件写入方法及相关装置 |
WO2018166526A1 (zh) * | 2017-03-17 | 2018-09-20 | 杭州海康威视数字技术股份有限公司 | 数据存储、分散、重构、回收方法、装置及数据处理系统 |
CN110389855A (zh) * | 2018-04-19 | 2019-10-29 | 浙江宇视科技有限公司 | 磁带库数据校验方法、装置、电子设备和可读存储介质 |
CN110515555A (zh) * | 2019-05-27 | 2019-11-29 | 杭州前云数据技术有限公司 | 基于多路对象存储服务的高可靠性企业级存储系统及读写方法 |
CN111614720A (zh) * | 2020-04-13 | 2020-09-01 | 厦门大学 | 针对集群存储系统单点失效修复的跨集群流量优化方法 |
CN112835538A (zh) * | 2020-03-27 | 2021-05-25 | 威盛电子股份有限公司 | 数据存储系统及其全局去重复方法 |
CN113360315A (zh) * | 2020-03-06 | 2021-09-07 | 科大国盾量子技术股份有限公司 | 一种数据中心 |
CN114896099A (zh) * | 2022-04-29 | 2022-08-12 | 中国人民解放军93216部队 | 用于泛在存储系统的网络环境自适应编码方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040264309A1 (en) * | 2003-04-21 | 2004-12-30 | Stolowitz Michael C | Disk array controller with reconfigurable data path |
CN102594899A (zh) * | 2011-12-31 | 2012-07-18 | 成都市华为赛门铁克科技有限公司 | 一种存储服务方法以及应用该方法的存储服务器 |
CN103810061A (zh) * | 2014-01-28 | 2014-05-21 | 河南科技大学 | 一种高可用云存储方法 |
CN104754055A (zh) * | 2015-04-03 | 2015-07-01 | 易云捷讯科技(北京)有限公司 | 一种多云环境下的安全云存储方法 |
-
2016
- 2016-03-10 CN CN201610137334.2A patent/CN105760116B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040264309A1 (en) * | 2003-04-21 | 2004-12-30 | Stolowitz Michael C | Disk array controller with reconfigurable data path |
CN102594899A (zh) * | 2011-12-31 | 2012-07-18 | 成都市华为赛门铁克科技有限公司 | 一种存储服务方法以及应用该方法的存储服务器 |
CN103810061A (zh) * | 2014-01-28 | 2014-05-21 | 河南科技大学 | 一种高可用云存储方法 |
CN104754055A (zh) * | 2015-04-03 | 2015-07-01 | 易云捷讯科技(北京)有限公司 | 一种多云环境下的安全云存储方法 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106446263A (zh) * | 2016-10-18 | 2017-02-22 | 北京航空航天大学 | 一种多媒体文件云存储平台及使用该云存储平台去冗的方法 |
CN106446263B (zh) * | 2016-10-18 | 2020-06-09 | 北京航空航天大学 | 一种多媒体文件云存储平台及使用该云存储平台去冗的方法 |
CN106657266A (zh) * | 2016-11-10 | 2017-05-10 | 南京云创大数据科技股份有限公司 | 一种基于公有云的安全可靠的公有云存储系统的架构及方法 |
WO2018166526A1 (zh) * | 2017-03-17 | 2018-09-20 | 杭州海康威视数字技术股份有限公司 | 数据存储、分散、重构、回收方法、装置及数据处理系统 |
US11010072B2 (en) | 2017-03-17 | 2021-05-18 | Hangzhou Hikvision Digital Technology Co., Ltd. | Data storage, distribution, reconstruction and recovery methods and devices, and data processing system |
CN107608820B (zh) * | 2017-09-26 | 2020-08-21 | 苏州浪潮智能科技有限公司 | 一种基于纠删码的文件写入方法及相关装置 |
CN107608820A (zh) * | 2017-09-26 | 2018-01-19 | 郑州云海信息技术有限公司 | 一种基于纠删码的文件写入方法及相关装置 |
CN110389855B (zh) * | 2018-04-19 | 2021-12-28 | 浙江宇视科技有限公司 | 磁带库数据校验方法、装置、电子设备和可读存储介质 |
CN110389855A (zh) * | 2018-04-19 | 2019-10-29 | 浙江宇视科技有限公司 | 磁带库数据校验方法、装置、电子设备和可读存储介质 |
CN110515555A (zh) * | 2019-05-27 | 2019-11-29 | 杭州前云数据技术有限公司 | 基于多路对象存储服务的高可靠性企业级存储系统及读写方法 |
CN110515555B (zh) * | 2019-05-27 | 2023-03-14 | 杭州前云数据技术有限公司 | 基于多路对象存储服务的高可靠性企业级存储系统及读写方法 |
CN113360315A (zh) * | 2020-03-06 | 2021-09-07 | 科大国盾量子技术股份有限公司 | 一种数据中心 |
CN112835538A (zh) * | 2020-03-27 | 2021-05-25 | 威盛电子股份有限公司 | 数据存储系统及其全局去重复方法 |
CN111614720A (zh) * | 2020-04-13 | 2020-09-01 | 厦门大学 | 针对集群存储系统单点失效修复的跨集群流量优化方法 |
CN111614720B (zh) * | 2020-04-13 | 2022-02-18 | 厦门大学 | 针对集群存储系统单点失效修复的跨集群流量优化方法 |
CN114896099A (zh) * | 2022-04-29 | 2022-08-12 | 中国人民解放军93216部队 | 用于泛在存储系统的网络环境自适应编码方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105760116B (zh) | 2018-11-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105760116A (zh) | 一种多网盘下的增量纠删码存储方法及系统 | |
JP6778795B2 (ja) | データを記憶するための方法、装置及びシステム | |
US20220327103A1 (en) | Using a Dispersed Index in a Storage Network | |
US10013444B2 (en) | Modifying an index node of a hierarchical dispersed storage index | |
US11093466B2 (en) | Incremental out-of-place updates for index structures | |
Liu et al. | Implementing WebGIS on Hadoop: A case study of improving small file I/O performance on HDFS | |
US9465861B2 (en) | Retrieving indexed data from a dispersed storage network | |
Quinlan et al. | Venti: A new approach to archival data storage | |
US9542239B2 (en) | Resolving write request conflicts in a dispersed storage network | |
US9304858B2 (en) | Analyzing found data in a distributed storage and task network | |
CN103944981B (zh) | 一种基于纠删码技术改进的云存储系统及实现方法 | |
US20150039934A1 (en) | Accounting for data that needs to be rebuilt or deleted | |
US9146810B2 (en) | Identifying a potentially compromised encoded data slice | |
JP2012098934A (ja) | 文書管理システム、文書管理システムの制御方法、プログラム | |
US11455100B2 (en) | Handling data slice revisions in a dispersed storage network | |
WO2016130091A1 (en) | Methods of encoding and storing multiple versions of data, method of decoding encoded multiple versions of data and distributed storage system | |
CN105718808A (zh) | 一种基于多网盘的文件加密存储系统及方法 | |
CN105046162A (zh) | 在内容可寻址存储系统中维护并使用子对父映射的缓存 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |