CN110569221B - 具有版本功能的文件系统管理方法、装置、设备和存储介质 - Google Patents
具有版本功能的文件系统管理方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN110569221B CN110569221B CN201910848235.9A CN201910848235A CN110569221B CN 110569221 B CN110569221 B CN 110569221B CN 201910848235 A CN201910848235 A CN 201910848235A CN 110569221 B CN110569221 B CN 110569221B
- Authority
- CN
- China
- Prior art keywords
- version
- write operation
- file system
- operation information
- block
- 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.)
- Active
Links
Images
Classifications
-
- 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/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- 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
-
- 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/1873—Versioning file systems, temporal file systems, e.g. file system supporting different historic versions of files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种具有版本功能的文件系统管理方法、装置、设备和存储介质,所述管理方法包括:接收到查看版本N‑m的虚拟文件系统的命令;按照顺序从第一个区块的第一条写操作信息开始遍历当前区域链,直至遍历完第N个区块的第m条写操作信息,生成版本N‑m的虚拟文件系统。本发明的方案提供的具有版本功能的分布式文件系统管理方法,使文件系统具有可追溯性,易于监管,更加安全。
Description
技术领域
本发明属于文件存储领域,具体涉及一种具有版本功能的文件系统管理方法、装置、设备和存储介质。
背景技术
分布式文件系统可伸缩性好,性能较高,是目前广泛使用的一种文件系统。分布式文件系统一般用在服务系统的后端,为前端的服务器(如Web Server等)提供文件支持,并不直接面对用户,所以通常只有很少的安全防护措施。然而分布式文件系统中难免会存在漏洞和陷门,仍然有被劫持的可能。一旦系统的某部分被劫持,其中的信息就可能被篡改。
但现有的分布式文件系统无法实现对文件的溯源,文件被篡改后无法查看篡改前的内容,为此需要提出一种更加安全、具有版本功能的分布式文件系统管理方法。
发明内容
本发明的一个目的是提供一种具有版本功能的文件系统管理方法、装置、设备和存储介质。
为实现上述发明目的之一,本发明一实施方式提供了一种具有版本功能的文件系统管理方法,所述方法包括:
接收到查看版本N-m的虚拟文件系统的命令;
按照顺序从第一个区块的第一条写操作信息开始遍历当前区域链,直至遍历完第N个区块的第m条写操作信息,生成版本N-m的虚拟文件系统。
作为本发明一实施方式的进一步改进,所述“按照顺序从第一个区块的第一条写操作信息开始遍历当前区域链,直至遍历完第N个区块的第m条写操作信息,生成版本N-m的虚拟文件系统”,具体包括:
按照顺序从第一个区块的第一条写操作信息开始到第N个区块的第m条写操作信息结束,逐一读取各个区块记录的写操作信息;
对初始版本的虚拟文件系统执行所述写操作信息中记录的写操作,生成版本N-m的虚拟文件系统。
为实现上述发明目的之一,本发明一实施方式提供了一种具有版本功能的文件系统管理方法,所述方法包括:
接收到查看版本号为N-m的虚拟文件系统的命令;
获取缓存版本,所述缓存版本的版本号X-Y,所述缓存版本为N-m版本之前的版本;
按照顺序从第X个区块的第Y条写操作信息的下一条写操作信息开始遍历当前区域链,直至遍历完第N个区块的第m条操作记录,在所述缓存版本的基础上生成版本号为N-m的虚拟文件系统。
作为本发明一实施方式的进一步改进,所述“获取缓存版本”具体包括:
查找到多个N-m版本之前的缓存版本;
选取离所述N-m版本最接近的缓存版本作为需要的缓存版本。
为实现上述发明目的之一,本发明一实施方式提供了一种文件系统管理装置,所述装置包括:
接口层,配置为对外提供查看版本N-m的虚拟文件系统的接口;
区块链,配置为以多个区块相连的形式存储所有的对虚拟文件系统的写操作信息;
缓存模块,配置以按照顺序从第一个区块的第一条写操作信息开始遍历当前区域链,直至遍历完第N个区块的第m条写操作信息,生成版本N-m的虚拟文件系统。
作为本发明一实施方式的进一步改进,所述缓存模块还用于:
按照顺序从第一个区块的第一条写操作信息开始到第N个区块的第m条写操作信息结束,逐一读取各个区块记录的写操作信息;
对初始版本的虚拟文件系统执行所述写操作信息中记录的写操作,生成版本N-m的虚拟文件系统。
为实现上述发明目的之一,本发明一实施方式提供了一种文件系统管理装置,所述装置包括:
接口层,配置为对外提供查看版本N-m的虚拟文件系统的接口;
区块链,配置为以多个区块相连的形式存储所有的对虚拟文件系统的写操作信息;
缓存模块,配置以获取缓存版本,所述缓存版本的版本号X-Y,所述缓存版本为N-m版本之前的版本;同时按照顺序从第X个区块的第Y条写操作信息的下一条写操作信息开始遍历当前区域链,直至遍历完第N个区块的第m条操作记录,在所述缓存版本的基础上生成版本号为N-m的虚拟文件系统。
作为本发明一实施方式的进一步改进,所述缓存模块还用于:
查找到多个N-m版本之前的缓存版本;
选取离所述N-m版本最接近的缓存版本作为需要的缓存版本。
为实现上述发明目的之一,本发明一实施方式提供了一种电子设备,包括存储器和处理器,所述存储器存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述任一文件系统管理方法中的步骤。
为实现上述发明目的之一,本发明一实施方式提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述任一文件系统管理方法中的步骤。
本发明的优点:
1、本实施例提供的具有版本功能的分布式文件系统管理方法,使文件系统具有可追溯性,易于监管,更加安全。
附图说明
图1是本发明的第四实施例中文件系统管理装置的功能模块图。
图2是本发明的分布式文件系统的网络部署的组网示意图。
图3是本发明的第一实施例中文件系统管理方法的流程示意图。
图4是本发明的分布式文件系统的区块链的结构示意图。
图5是本发明的第二实施例中文件系统管理方法的流程示意图。
图6是本发明的第三实施例中文件系统管理方法的流程示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不限于下面公开的具体实施例的限制。
如图1所示,根据本发明的一个实施例,本发明的分布式文件系统的系统架构包括接口层、缓存模块、处理模块和存储模块。
其中,接口层用于对外提供文件系统的功能,文件系统中的文件和文件夹可以看作一个资源,接口层可以对外提供以下操作的接口:查询一个资源(后续简称读操作)、增加一个资源、删除一个资源、修改一个资源等(增加、删除和修改资源的操作后续统称为写操作)。接口层还可以对外提供查询不同版本的虚拟文件系统的接口。
缓存模块用于读取区块链中存储的写操作信息,并且在内存中构建出文件系统的树形结构,形成目录-文件的典型的文件系统结构视图。同时还接受接口层下发的读操作请求。同时,缓存模块还用于缓存一些文件系统常用的版本。
处理模块用于将接口层下发的写操作请求转换成区块。
存储模块以区块链的形式存储了所有对文件系统的写操作信息,后续存储模块也称为区块链。
如图2所示,根据本发明的一个实施例,本发明的分布式文件系统可以进行如下网络部署:所述网络包括复数个能够相互通信的节点(所述节点可以是一台计算机),所述节点可以都包括有文件系统的接口层、缓存模块、处理模块和存储模块,也可以只包括文件系统的部分模块,所有节点就构成了基于区块链技术的文件管理系统。另外,所述文件系统还可以包括客户端,客户端可以布置在上述节点上,也可以不布置在上述节点上,客户端能够通过某个节点上的接口层,访问或修改文件系统。
本发明的分布式文件系统,是基于区块链技术实现的,为了便于理解本发明的技术方案,这里先介绍区块链的区块的结构,区块包括区块头和区块体。
请参见表1,区块头主要包括三组数据。首先是一组引用父区块哈希值的数据,这组数据用于将该区块与区块链中前一区块相连接。第二组数据包括计算本区块有效哈希值的难度目标、时间戳和随机值。第三组数据Merkle根与区块体中具体交易相关。
表1
区块体用于记录了该区块存储的交易数量以及交易数据。区块中每笔交易都可以包括有OP_RETURN字段,这个字段用来承载额外的交易信息的,就像我们在日常转账过程中的备注信息。在本发明的基于区块链的分布式文件系统,主要是利用这个字段来存储对文件的写操作记录。
另外,区块链中的每个区块都相当有两个识别区块的标识符,第一个标识符是该区块的哈希值,区块哈希值可以唯一、明确地标识一个区块,并且任何节点通过简单地对区块头进行哈希计算都可以独立地获取该区块哈希值。第二个标识符该区块在区块链中的位置,即“区块高度(block height)”。第一个区块,其区块高度为0。因此,区块可以通过两种方式被识别:区块哈希值或者区块高度。每一个随后被存储在第一个区块之上的区块在区块链中都比前一区块“高”出一个位置,就像箱子一个接一个堆叠在其他箱子之上。
实施例一
本实施例提供一种文件系统管理方法,如图3所示,所述方法包括:
接收到写操作信息,生成一条交易,将所述写操作信息记录到所述交易中;
将所述交易写入未挂载区块中;
将所述未挂载区块挂载至当前区块链的末端。
区块可以包括很多交易,每个交易都有OP_RETURN字段,本发明的技术方案中,交易的OP_RETURN字段用来存储对文件系统的写操作信息,即接收到写操作信息时,生成一条交易,将写操作信息记录到交易的OP_RETURN字段中(因此区块的交易号与区块的写操作信息的编号是等同的)。因此整个区块链可以看成如图4所示的链表,整个区块链包括N个区块,每个区块包括X条操作信息(每个区块包括的操作信息数目X不是固定的)。
在本实施例中,当一个节点的接口层接收到写操作信息时,生成一条交易,将写操作信息记录到这条交易中,然后将交易发送给此节点对应的处理模块,并广播给其它节点的处理模块。
处理模块将这些记录有写操作信息的交易写入未挂载区块中,并尝试将所述未挂载区块挂载至当前区块链的末端。这个过程具体包括:
每个处理模块都会记录这些未确认的交易,并基于当前区块链,生成包括有这些未确认交易的区块(新生成的区块包括有当前区块链末端区块的哈希值,也叫父哈希值),然后每个包括有处理模块和区块链的节点,都尝试将新生成的区块(或者称未挂载区块)挂载到当前区块链的末端。
挂载的具体过程为反复修改未挂载区块中的一个随机变量,计算所述区块的哈希值,直到计算出有效的哈希值,当有效的哈希值计算出来后,这个区块即被认为是成功挂载在当前区块链的末端,此时此区块中包括的未确认交易全部改成已确认,并将挂载成功的区块广播给其它的节点。但是,如果这个区块还未挂载成功,并且其它节点上生成的区块挂载成功(即当前的区块链发生改变),则撤销这个区块,基于最新的区块链,重新生成一个包括有未确认交易的区块(如果当前不存在未确认交易,则生成一个空区块),然后重复上述挂载过程。
需要说明的是,每一条交易的写操作信息都对应文件系统的一个版本号N-m,N为区块号,m为在区块N中的第m条交易。同理,一个文件系统的版本号对应一条交易(或者一条写操作信息)。
本实施例的文件系统管理方法,通过区块链存储所有对此文件系统的写操作的详细信息,使文件系统具有可追溯性,易于监管,更加安全。
具体的OP_RETURN中数据OP_RETURN_DATA的定义可以参见表2,OP_RETURN_DATA::=BYTE ARG ARG…,BYTE表示操作类型,ARG可以是字符串STRING,也可以是非负整数INT,还可以是二进制数据DATA。当BYTE为1时表示创建目录mkdir,后面只需要跟一个表示目录路径的字符串STRING就可以。当BYTE为3时表示将数据写入指定文件的指定位置writefile,后面跟这个文件的文件路径STRING、写入数据的起始位置INT和写入文件的数据。
操作 | BYTE | ARG1 | ARG2 | ARG3 |
mkdir | 1 | 目录路径STRING | ||
deldir | 2 | 目录路径STRING | ||
writefile | 3 | 文件路径STRING | 起始位置INT | 写入文件的数据DATA |
resizefile | 4 | 文件路径STRING | 文件大小INT | |
delfile | 5 | 文件路径STRING |
表2
上述的写操作可以调用现有的系统接口函数进行实现,系统函数如下:
mkdir(dirpath):新建目录。
deldir(dirpath):删除目录。
writefile(filepath,startpos,data):写数据至文件的指定位置,新建文件也用这个接口。
resizefile(filepath,size):重设文件大小,多余的部分被删除,不足的部分填充0。
delfile(filepath):删除文件。另外,可以根据本发明的技术方案的网络状态,或者区块链部署的节点数等,调整本发明区块链的区块生成的周期,典型的可以选择1s~30s不等,从而增长区块的增长速度,这样能够提高系统的操作性能。减少交易的确认时间。当下发一个写操作命令时,我们需要等待记录这个命令对应的写操作信息的交易为已确认状态,才能接收到回复,此回复带有版本号。
优选的,本实施例的文件系统管理方法还包括:
按照顺序遍历当前区块链的所有区块的所有交易,生成虚拟文件系统。具体的生成虚拟文件系统的方式可以是:从区块链的第一个区块开始,读取每个区块的交易记录的写操作信息,并记录这些写操作信息的顺序,全部区块读取完成后,按照记录的顺序,对初始文件系统执行这些写操作信息中记录的写操作。初始文件系统可以是空白文件系统,也可以是有具体内容的文件系统。当初始文件系统不是空白的文件系统时,可以将初始文件系统的内容记录在创世块的创世交易里(第一个区块的第一条交易)。
当然,具体的生成虚拟文件系统的方式也可以是:从区块链的第一个区块开始,读取这个区块记录的写操作信息,然后对初始文件系统执行这些写操作信息中记录的写操作。然后依次对区块链的后续区块重复上述操作,重复的过程不再是对初始文件系统执行写操作,而是对上一个区块生成的文件系统执行写操作。
需要说明的是,在对文件系统执行写操作时,为了节约存储空间,当该写操作是针对文件夹的,对文件系统进行相应的写操作;当该写操作是针对文件的,只需要在该文件系统中记录该写操作对应的版本号(即如果版本1-3、版本3-2、版本M-X中的包括有对针对这一文件的写操作,则在该文件系统中记录这一文件对应的版本号1-3、3-2和M-X)。可以理解的是,当想要访问某个文件时,依据该文件对应的版本的编号,得到对应的区块号下写操作信息记录的写操作,就可以得到该文件中的数据。
为了保证区块链中记载的写操作信息的合法性,优选的,在接口模块接收到写操作信息时,先发送给缓存模块判断此写操作信息的合法性,如果写操作合法,再将写操作信息发送给此节点对应的处理模块。
实施例二
本实施例提供一种具有版本功能的文件系统管理方法,如图5所示,所述方法包括:
接收到查看版本号为N-m的虚拟文件系统的命令;
按照顺序从第一个区块的第一条写操作信息开始遍历当前区域链,直至遍历完第N个区块的第m条操作记录,生成版本号为N-m的虚拟文件系统。
本实施例提供了一种具有版本功能的文件系统管理方法,本实施例在实施例一的基础上,对文件系统的版本功能进行详细说明。当一个区块成功挂载在当前版本的区块链的末端时,所述区块与所述当前版本的区块链的末端区块相连,形成最新版本的区块链,所述成功挂载的区块编号为N,所述区块内包括m条交易记录,分别对应m个文件系统的版本号N-1至N-m。即每一条交易的写操作信息都对应文件系统的一个版本号N-m,N为区块号,m为在区块N中的第m条交易。同样,版本号也对应有一个区块号和交易号。
优选的,“按照顺序从第一个区块的第一条写操作信息开始遍历当前区域链,直至遍历完第N个区块的第m条操作记录,生成版本号为N-m的虚拟文件系统”具体包括:
按照顺序从第一个区块的第一条写操作信息开始到编号第N的个区块的第m条写操作信息结束,逐一读取各个区块记录的写操作信息,并记录这些写操作信息的顺序,第N个区块的第m条写操作信息读取完成后,按照记录的顺序,对初始版本的虚拟文件系统执行所述写操作信息中记录的写操作,生成版本N-m的虚拟文件系统。
初始文件系统可以是空白文件系统,也可以是有具体内容的文件系统。当初始文件系统不是空白的文件系统时,可以将初始文件系统的内容记录在创世块的创世交易里(第一个区块的第一条交易)。
当然,“生成版本号为N-m的虚拟文件系统”也可以是:从区块链的第一个区块的第一条写操作信息开始至第N个区块的第m条写操作信息结束,每读取一条或者多条写操作信息,就执行这些写操作信息中记录的写操作。
另外,在查询时,可以针对具体的版本进行查询。当一个节点的接口层接收到读操作信息,即需要对文件系统进行查询时,可以调用如下接口:
stat(path,version):查询目录、文件属性。
lsdir(dirpath,version):罗列出目录中的子目录和文件。readfile(filepath,starpos,size,version):读取文件内容
上述查询都是基于版本号的,即根据version版本号获得对应版本的相关信息,如果version为空,则获得最新版本的相关信息。由于每个区块都有时间戳,即区块的生成时间,因此当我们发现在某个时间文件系统遭到攻击、导致文件被篡改后,可以对比在攻击发生前的文件系统的版本与攻击后的版本,找出篡改的地方,对篡改的地方执行逆操作,就可以将文件系统恢复正常。
本实施例提供的具有版本功能的分布式文件系统管理方法,使文件系统具有可追溯性,易于监管,更加安全。
实施例三
本实施例提供一种具有版本功能的文件系统管理方法,所述方法是对实施例二的方法的一个优化,如图6所示,所述方法包括:
接收到查看版本号为N-m的虚拟文件系统的命令;
获取缓存版本,所述缓存版本的版本号X-Y,所述缓存版本为N-m版本之前的版本;
按照顺序从第X个区块的第Y条写操作信息的下一条写操作信息开始遍历当前区域链,直至遍历完第N个区块的第m条操作记录,在所述缓存版本的基础上生成版本号为N-m的虚拟文件系统。
由于一些版本会比较常用,为了提高查询的速度,可以在缓存模块将这些常用版本进行缓存。在本实施例中,就是在这些缓存版本的基础上,生成版本号为N-m的虚拟文件系统。这样能够提高查询的效率。当然,前提是缓存版本是N-m之前的版本(之前的版本是指缓存版本的区块号比N-m版本的区块号小,或者缓存版本与N-m版本的区块号相同,但是交易号比N-m版本的交易号小)。
具体的,按照顺序从第X个区块的第Y条写操作信息的下一条写操作信息开始遍历当前区域链,直至遍历完第N个区块的第m条操作记录,在所述缓存版本X-Y的基础上生成版本号为N-m的虚拟文件系统。即在缓存版本X-Y的基础上,依次执行第X个区块的第Y条交易的下一条交易、至第N个区块的第m条交易所记录的写操作信息包含的写操作,生成版本号为N-m的虚拟文件系统。
比如缓存的文件系统的版本为5-7(第五个区块的第7条写操作信息),需要生成最新版本N-m的虚拟文件系统时,就可以在5-7的文件系统的基础上,依次执行5-8、5-9…N-1、N-2…N-m的操作(N-m的操作是指第N个区块的第m条写操作信息中记录的写操作)。
在一个优选的实施例中,所述“获取缓存版本”具体包括:
查找到多个N-m版本之前的缓存版本;
选取离所述N-m版本最接近的缓存版本作为需要的缓存版本。
在存在多个符合要求(N-m版本之前)的缓存版本时,选取最接近的缓存版本作为需要的缓存版本。在选取最接近的缓存版本时,可以先比较缓存版本的区块号,选择与N差距最小的区块号所在的缓存版本,如果存在区块号相同的缓存版本,可以再比较交易号。
比如需要查看版本号为10-5的虚拟文件系统,现在获取到的缓存版本有2-8、7-9、和7-5,按照上述方法,选取7-9版本作为最接近的缓存版本。
实施例四
如图1所示,本实施例提供了一种文件系统的管理装置,可适用于上述第一实施例至第三实施例中的管理方法。
本申请为了描述清晰简洁,仅采用了一幅附图,所述管理装置包括接口层11、缓存模块13、处理模块15和区块链17。当然,对应的管理方法中并未使用到的模块,可以从本管理装置中移除。
其中,当所述管理装置对应于上述第一实施例的管理方法时,所述管理装置包括:
区块链17,配置为以多个区块相连的形式存储所有的写操作信息;
接口层11,配置为对外提供写操作的接口,并将写操作转换为写操作信息;
处理模块15,配置为将写操作信息记录到交易中,并将一条或多条交易生成区块并将所述区块挂载在所述区块链的末端;
缓存模块13,配置为通过遍历所述区块链的所有区块,生成虚拟文件系统。
优选的,所述缓存模块13还用于:
按照区块号的顺序,逐一读取各个区块所记录的写操作信息;
若所述写操作信息记录的对象是某个文件,将所述写操作信息对应的版本号记录在所述文件的版本集合中;
若所述写操作的对象是文件夹,执行所述写操作。
优选的,所述缓存模块13还用于:
在接收到对某个文件的读操作时,获取所述文件的版本集合;
按照所述版本集合中版本号的顺序,依次执行所述版本号对应的写操作信息中记录的写操作,从而生成所述文件。
优选的,所述接口层还用于在接收到写操作时,将所述写操作发送给所述缓存模块;
所述缓存模块还用于判断所述写操作是否可实施。
其中,当所述管理装置对应于上述第二实施例的管理方法时,所述管理装置包括:
接口层11,配置为对外提供查看版本N-m的虚拟文件系统的接口;
区块链17,配置为以多个区块相连的形式存储所有的对虚拟文件系统的写操作信息;
缓存模块13,配置以按照顺序从第一个区块的第一条写操作信息开始遍历当前区域链,直至遍历完第N个区块的第m条写操作信息,生成版本N-m的虚拟文件系统。
优选的,所述缓存模块13还用于:
按照顺序从第一个区块的第一条写操作信息开始到第N个区块的第m条写操作信息结束,逐一读取各个区块记录的写操作信息;
对初始版本的虚拟文件系统执行所述写操作信息中记录的写操作,生成版本N-m的虚拟文件系统。
其中,当所述管理装置对应于上述第三实施例的管理方法时,所述管理装置包括:
接口层11,配置为对外提供查看版本N-m的虚拟文件系统的接口;
区块链17,配置为以多个区块相连的形式存储所有的对虚拟文件系统的写操作信息;
缓存模块13,配置以获取缓存版本,所述缓存版本的版本号X-Y,所述缓存版本为N-m版本之前的版本;同时按照顺序从第X个区块的第Y条写操作信息的下一条写操作信息开始遍历当前区域链,直至遍历完第N个区块的第m条操作记录,在所述缓存版本的基础上生成版本号为N-m的虚拟文件系统。
优选的,所述缓存模块13还用于:
查找到多个N-m版本之前的缓存版本;
选取离所述N-m版本最接近的缓存版本作为需要的缓存版本。
本发明还提供一种电子设备,包括存储器和处理器,所述存储器存储有可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现实施例一或实施例二所述文件系统管理方法中的步骤。
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现实施例一或实施例二所述文件系统管理方法中的步骤。
以上仅为本发明的优选实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (6)
1.一种具有版本功能的文件系统管理方法,其特征在于,所述方法包括:
接收到查看版本N-m的虚拟文件系统的命令;
按照顺序从第一个区块的第一条写操作信息开始遍历当前区域链,直至遍历完第N个区块的第m条写操作信息,生成版本N-m的虚拟文件系统,具体包括:按照顺序从第一个区块的第一条写操作信息开始到第N个区块的第m条写操作信息结束,逐一读取各个区块记录的写操作信息;
对初始版本的虚拟文件系统执行所述写操作信息中记录的写操作,生成版本N-m的虚拟文件系统;
若所述写操作信息的对象是文件夹,对所述文件系统进行相应的写操作;
若所述写操作信息的对象是某个文件,在所述文件系统中记录所述写操作对应的版本号。
2.一种具有版本功能的文件系统管理方法,其特征在于,所述方法包括:
接收到查看版本号为N-m的虚拟文件系统的命令;
获取缓存版本,所述缓存版本的版本号X-Y,所述缓存版本为N-m版本之前的版本,其中,所述“获取缓存版本”具体包括:查找到多个N-m版本之前的缓存版本;
选取离所述N-m版本最接近的缓存版本作为需要的缓存版本;
按照顺序从第X个区块的第Y条写操作信息的下一条写操作信息开始遍历当前区域链,直至遍历完第N个区块的第m条操作记录,在所述缓存版本的基础上生成版本号为N-m的虚拟文件系统;
若所述写操作信息的对象是文件夹,对所述文件系统进行相应的写操作;
若所述写操作信息的对象是某个文件,在所述文件系统中记录所述写操作对应的版本号。
3.一种文件系统管理装置,其特征在于,所述装置包括:
接口层,配置为对外提供查看版本N-m的虚拟文件系统的接口;
区块链,配置为以多个区块相连的形式存储所有的对虚拟文件系统的写操作信息;
缓存模块,配置以按照顺序从第一个区块的第一条写操作信息开始遍历当前区域链,直至遍历完第N个区块的第m条写操作信息,生成版本N-m的虚拟文件系统;
还用于:按照顺序从第一个区块的第一条写操作信息开始到第N个区块的第m条写操作信息结束,逐一读取各个区块记录的写操作信息;
对初始版本的虚拟文件系统执行所述写操作信息中记录的写操作,生成版本N-m的虚拟文件系统;
若所述写操作信息的对象是文件夹,对所述文件系统进行相应的写操作;
若所述写操作信息的对象是某个文件,在所述文件系统中记录所述写操作对应的版本号。
4.一种文件系统管理装置,其特征在于,所述装置包括:
接口层,配置为对外提供查看版本N-m的虚拟文件系统的接口;
区块链,配置为以多个区块相连的形式存储所有的对虚拟文件系统的写操作信息;
缓存模块,配置以获取缓存版本,所述缓存版本的版本号X-Y,所述缓存版本为N-m版本之前的版本;查找到多个N-m版本之前的缓存版本;选取离所述N-m版本最接近的缓存版本作为需要的缓存版本
还用于:按照顺序从第X个区块的第Y条写操作信息的下一条写操作信息开始遍历当前区域链,直至遍历完第N个区块的第m条操作记录,在所述缓存版本的基础上生成版本号为N-m的虚拟文件系统;
若所述写操作信息的对象是文件夹,对所述文件系统进行相应的写操作;
若所述写操作信息的对象是某个文件,在所述文件系统中记录所述写操作对应的版本号。
5.一种电子设备,包括存储器和处理器,所述存储器存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1-2任意一项所述文件系统管理方法中的步骤。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-2任意一项所述文件系统管理方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910848235.9A CN110569221B (zh) | 2019-09-09 | 2019-09-09 | 具有版本功能的文件系统管理方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910848235.9A CN110569221B (zh) | 2019-09-09 | 2019-09-09 | 具有版本功能的文件系统管理方法、装置、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110569221A CN110569221A (zh) | 2019-12-13 |
CN110569221B true CN110569221B (zh) | 2022-06-10 |
Family
ID=68778528
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910848235.9A Active CN110569221B (zh) | 2019-09-09 | 2019-09-09 | 具有版本功能的文件系统管理方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110569221B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116541468B (zh) * | 2023-07-05 | 2023-09-29 | 苏州浪潮智能科技有限公司 | 快照数据同步方法、存储主端、电子设备和存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8732427B2 (en) * | 2009-08-03 | 2014-05-20 | Quantum Corporation | Systems and methods for collapsing a derivative version of a primary storage volume |
US11074220B2 (en) * | 2017-01-06 | 2021-07-27 | Oracle International Corporation | Consistent file system semantics with cloud object storage |
CN107240017B (zh) * | 2017-07-20 | 2021-08-03 | 捷德(中国)科技有限公司 | 区块链交易管理系统及方法 |
CN108681558B (zh) * | 2018-04-10 | 2021-08-06 | 创新先进技术有限公司 | 一种数据回滚方法、装置、及终端 |
-
2019
- 2019-09-09 CN CN201910848235.9A patent/CN110569221B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110569221A (zh) | 2019-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4155966A1 (en) | Blockchain data indexing method, and blockchain data storage method | |
US10229011B2 (en) | Log-structured distributed storage using a single log sequence number space | |
US10437721B2 (en) | Efficient garbage collection for a log-structured data store | |
US8214334B2 (en) | Systems and methods for distributed system scanning | |
CN103020315B (zh) | 一种基于主从分布式文件系统的海量小文件存储方法 | |
CN113986873B (zh) | 一种海量物联网数据模型化的处理、存储与共享方法 | |
US20160364407A1 (en) | Method and Device for Responding to Request, and Distributed File System | |
JPS63201743A (ja) | データ処理システム・ネットワークのためのキャッシング方法 | |
EP0663641A1 (en) | Summary catalogs | |
CN105550371A (zh) | 一种面向大数据环境的元数据组织方法和系统 | |
CN108021717B (zh) | 一种轻量级嵌入式文件系统的实现方法 | |
CN104408111A (zh) | 一种删除重复数据的方法及装置 | |
WO2013188168A1 (en) | Elimination of duplicate objects in storage clusters | |
CN101923571B (zh) | 管理终端数据记录的方法及装置 | |
US11151081B1 (en) | Data tiering service with cold tier indexing | |
CN104184812A (zh) | 一种基于私有云的多点数据传输方法 | |
CN104899161A (zh) | 一种基于云存储环境的连续数据保护的缓存方法 | |
CN112965939A (zh) | 一种文件合并方法、装置和设备 | |
CN110569221B (zh) | 具有版本功能的文件系统管理方法、装置、设备和存储介质 | |
CN114116612B (zh) | 一种基于b+树索引归档文件的存取方法 | |
US20110302213A1 (en) | Storage system | |
US7668846B1 (en) | Data reconstruction from shared update log | |
CN116756253B (zh) | 关系型数据库的数据存储、查询方法、装置、设备和介质 | |
CN103905512A (zh) | 一种数据处理方法和设备 | |
CN109032526A (zh) | 用于分布式文件系统的数据处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |