本技术涉及存储,尤其涉及数据处理方法及相关装置。
背景技术:
1、非结构化数据一般以文件或者对象的形式存储在文件系统里(本地文件系统或者nas系统)。异构的文件系统,通常各自通过其访问协议来向外提供文件的读写服务,常见的访问协议例如网络文件系统(network file system,nfs),hadoop分布式文件系统(hadoopdistributed file system,hdfs),简单存储服务(simple storage service,s3),服务器信息块(server message block,smb)等。文件系统中文件的数据内容存储在存储盘中,计算设备可以通过对应的访问协议来访问存储盘中存储的文件的数据内容。
2、随着用户业务规模的增长,单一的文件系统无法满足业务的需求,用户业务的数据可能会被存储在异构的多个文件系统中。由于异构的文件系统的元数据管理和访问控制方式不同,使得存储在异构的文件系统中的数据变成了数据的孤岛,为用户的数据使用和管理带来极大的不便。
3、如何解决上述问题,是本领域技术人员正在研究的热点问题。
技术实现思路
1、本技术实施例提供了数据处理方法及相关装置,能够以统一的方式来表达异构文件系统的元数据,提升用户在数据使用和管理上的便捷性。
2、第一方面,本技术实施例提供一种数据处理方法,应用于第一计算设备,包括:
3、获取第一文件系统的第一元数据流,所述第一元数据流为流式结构且包含多条记录,所述多条记录中的每条记录包含所述第一文件系统中的一个节点的标识,所述一个节点的父节点的标识和所述一个节点的属性;
4、根据所述第一元数据流,确定所述第一文件系统中的多个节点的层次结构。
5、可选的,一个节点为一个文件或一个目录。第一文件系统中包含多个节点,这多个节点包含一个或者多个文件,和/或,一个或者多个目录。
6、流式结构是包含多条记录的一种数据结构,每一条记录包含多个值,每一个值对应了一个字段,流式结构具有以下特征:只读、只增、有序,其中“只读”是指流式结构中的记录的值只能读取而无法修改;“只增”指示流式结构中只能追加新的记录而无法删除已有的记录,但属于同一个节点的多条记录可以被合并成一条记录;“有序”是指流式结构中的记录具有逻辑顺序,追加的记录在流式结构的尾部增加。
7、可选的,流式结构中的一条记录对应一个节点。进一步的,多条记录可以对应同一个节点。
8、本技术实施例通过流式结构的元数据流,实现了以统一的方式来表达异构文件系统的元数据,该统一的表达方式能够屏蔽异构文件系统之间元数据管理和访问控制方式的差异,也能屏蔽存储异构文件系统的设备之间的差异。即,通过本技术中统一的流式结构的元数据表达方式,能够拉通异构文件系统之间的元数据,从而使得异构的文件系统中的数据不再是一个个数据孤岛,这会极大地提升用户在数据使用和管理上的便捷性。
9、并且,由于本技术中统一表达文件元数据的方式是流式结构,该流式结构的“只读”、“只增”和“有序”的特性可以反映出文件系统中的各种变更操作,即本技术中流式结构的元数据的表达方式可以动态地反映文件系统的变化。
10、在第一方面的一种可能的实施方式中,上述第一文件系统的数据存储在第一存储盘上,第一元数据流来自第二计算设备,所述第二计算设备与所述第二存储盘相连。通过这种方式,通过将异构文件系统的元数据以统一表达方式(流式结构的元数据流)在多个计算设备之间的共享流动,使得多个计算设备都可以方便地根据该流式结构的元数据流确定异构文件系统的层次结构,从而方便地实现某个文件系统的元数据在多个设备之间的互通和共享。例如,第一文件系统的数据存储在第一存储盘上,不仅第二计算设备可以确定第一文件系统的层次结构(第二计算设备与第一存储设备相连,第二计算设备可以访问该第一文件系统的数据并可以确定其层次结构),当第一计算设备获取到第一文件系统的第一元数据流时,也可以方便地基于第一元数据流确定该第一文件系统的层次结构,并可以基于此构建第一文件系统的文件视图。也就是说,该方式实现了第一文件系统的元数据在第一计算设备和第二计算设备之间的共享和流动,使得用户通过第一计算设备和第二计算设备都可以明确第一文件系统的层次结构(并可以基于此进一步明确包含第一文件系统的层次结构的文件视图),提升了用户的使用体验。
11、在第一方面的又一种可能的实施方式中,上述第一计算设备位于第一数据中心,第二计算设备和第一存储盘位于第二数据中心。也就是说,第一计算设备与第二计算设备和第一存储设备可以位于不同的数据中心,实现了第一文件系统的元数据在不同数据中心之间共享和流动,即,使得跨数据中心(跨域)的用户都可以明确第一文件系统的层次结构。
12、进一步的,跨数据中心(跨域的用户)可以基于元数据流(和/或第一文件系统的层次结构),构建包含第一文件系统的层次结构的文件视图。
13、在第一方面的又一种可能的实施方式中,所述一个节点的标识和所述一个节点的父节点的标识共同作为一组记录的索引,该一组记录是同一个父目录下的同一个节点的记录。
14、其中,节点的标识是与节点一一对应的唯一标识,且不可更改。
15、通过节点的标识和节点的父节点的标识索引元数据流中的一组记录。一方面,使用节点的标识和父节点的标识可以指示节点的层次关系,便于确定节点的层次结构,而且能够移动节点的场景下能够基于索引来体现节点的父节点的变更。另一方面,由于节点的标识与节点一一对应且不可更改,因此,即便在节点的名称、大小、存放位置改变的情况下,依然可以通过索引找到节点对应的记录,提高了查找效率和结果准确性,进一步提升了元数据的稳定性和高可用性。
16、在第一方面的一种可能的实施方式中,所述节点的属性包含指示信息,所述指示信息用于指示对所述节点执行的变更操作。
17、其中,指示信息可以直接包含变更操作的名称,也可以通过标识、编号等间接指示变更操作。
18、可选的,变更操作可以包含新增(或创建)、更新、删除或移动等中的一项或者多项。
19、示例性地,指示信息可以通过字段的不同取值来描述。即,节点的属性中包含以下字段:对节点执行的变更操作。以字段名称为action字段为例,当action字段的值为create时,指示新增节点;当action字段的值为update时,指示更新节点。当然,字段的值与变更操作的对应关系、字段的名称、字段的顺序等,可以根据实际需求进行设置。
20、通过变更字段,可以记录节点变更,不仅可以提升元数据的准确性,且有利于实现元数据的共享和流动,进一步还有利于实现文件系统在多个设备上的视图更新。
21、在第一方面的一种可能的实施方式中,所述节点的属性包含与所述节点相关的事务的标识。示例性地,与所述节点相关的事务的标识可以通过字段的不同取值来描述。
22、其中,事务的标识可以用于指示某一次事务,从而可以将一次事务相关的多条记录进行关联,使得元数据具有了可以返回失效事务的能力,有利于保证在元数据共享和流动过程中文件系统的一致性。
23、在第一方面的一种可能的实施方式中,所述节点的属性包含所述记录的序列号。示例性地,记录的序列号可以通过字段的不同取值来描述。
24、通过序列号,可以支持队列消息的顺序和多方修改的排序,也便于系统实现数据完整性检测与恢复。
25、在第一方面的一种可能的实施方式中,所述节点的属性包含节点的存储布局信息。示例性地,记录的序列号可以通过字段的不同取值来描述。
26、这样一来,在节点的数据内容存储到多种设备的情况下,存储布局信息可以指示存储了节点的数据内容的设备信息,辅助其他设备从节点的实际存储设备获取数据内容。
27、在第一方面的一种可能的实施方式中,所述节点的属性包含所述节点的扩展属性。示例性地,所述节点的扩展属性可以通过字段的不同取值来描述。
28、扩展属性是根据不同的业务场景,对元数据进行扩展得到的属性。通过支持属性扩展,可以让用户根据实际使用需求定义节点新的属性,提高元数据的灵活性和可扩展性。
29、在第一方面的一种可能的实施方式中,所述节点的属性还包含名称(name)、类型(type)、权限(mode)、快照标识(snapid)、用户标识(uid)、用户组标识(gid)、大小(size)、软链接(linkto)、创建时间(ctime)、修改时间(mtime)、访问控制列表(acl)、扩展属性(attr)、等中的一项或者多项。
30、在第一方面的一种可能的实施方式中,所述方法还包括:
31、构建文件视图(便于区分称为文件视图v1),该文件视图v1包含所述第一文件系统中的多个节点的层次结构。
32、通过文件视图,用户或应用可以方便地获取到节点的层次结构以及节点的属性,满足了对文件系统层级结构及节点的属性的可视化需求,提升了用户体验。
33、在第一方面的一种可能的实施方式中,所述方法还包括:
34、在所述第一元数据流的末端追加第一记录,所述第一记录中包含所述第一节点的标识,所述第一节点的父节点的标识和所述第一节点的第一属性,所述第一属性包括变更操作的类型。
35、其中,第一属性为了便于区分其他属性(其他记录中的属性、同一记录中的其他属性)所做出的示例性的描述,并不限定第一属性与其他属性的顺序、重要程度等的不同。
36、上述实施方式中,可以实现通过第一计算设备对第一文件系统进行变更,即,可以实现跨数据中心或跨域对第一文件系统进行变更。并且,对第一文件系统中的数据的变更操作可以以添加记录的方式追加到元数据流中,而其他设备通过获取元数据流的变化(追加的记录),即可获知第一文件系统中发生的变更操作,相应的可以更新第一文件系统在本地的文件的层次结构或节点的属性,从而实现了文件视图在多个设备上的同步。
37、在一种可能的实施方式中,所述方法还包括:
38、获取第一输入输出(inputoutput,io)请求,所述第一io请求指示对第一节点执行变更操作。在这种方式中,对文件系统的变更通过元数据io来实现,便于实现节点变更和上层应用之间的解耦,提升系统(包含文件系统和上层应用的系统)的灵活性和可扩展性。
39、在第一方面的一种可能的实施方式中,所述变更操作的类型为新增,所述第一节点是在所述第一文件系统中的新增的文件或目录。
40、在第一方面的一种可能的实施方式中,所述变更操作的类型为更新、删除或移动。此时,第一节点是所述第一文件系统中已经存在的文件或目录。
41、可选的,由于第一节点是第一文件系统中已经存在的文件或者目录,则第一元数据流中已经包含该第一文件对应的记录。
42、示例性的,第一元数据流中包含第二记录,所述第二记录包含所述第一节点的标识、所述第一节点的父节点的标识和所述第一节点的第二属性。所述第二记录产生于所述第一记录之前。
43、在第一方面的又一种可能的实施方式中,所述第一记录还包含所述第一记录的序列号,所述第二记录还包含所述第二记录的序列号,所述第一记录的序列号和所述第二记录的序列号用于指示所述第一记录产生在所述第二记录之后。
44、在第一方面的一种可能的实施方式中,所述方法还包括:
45、向所述第二计算设备发送消息,所述消息指示所述第一元数据流发生变化,以使得所述第二计算设备根据所述第一元数据流中的所述第一记录对所述第一节点执行所述变更操作。
46、在第一方面的一种可能的实施方式中,所述方法还包括:
47、在所述第一元数据流的末端出现新增加的记录的情况下,根据更新后的所述第一元数据流,更新文件视图(例如文件视图v1),更新后的文件视图包含更新后的第一文件系统中的多个节点的层次结构。
48、在该实施方式中,第一计算设备在任何时候都可以根据第一元数据流的变化(新增加的记录)来获知第一文件系统中的变更,并据此更新第一文件系统的层次结构/文件属性,并更新文件视图。
49、在第一方面的一种可能的实施方式中,所述第一元数据流中包含第三记录,所述第三记录包含所述第一文件系统中的第二节点的属性,所述第二节点为文件,所述第二节点的属性包含所述第二节点的存储布局信息,所述第二节点的存储布局信息指示所述第一存储盘所属的存储设备;
50、所述方法还包括:
51、获取第二io请求,所述第二io请求指示读取所述第二节点的数据;
52、从所述第一存储盘获取所述第二节点的数据。
53、上述实施方式中,可以实现通过第一计算设备读取第一文件系统的数据,即,可以实现跨数据中心或跨域读取第一文件系统的数据。
54、在第一方面的一种可能的实施方式中,所述方法还包括:
55、对所述第一元数据流执行合并操作,所述合并操作指示对所述第一元数据流中的同一个节点对应的多条记录合并为一条记录。通过该实施方式,可以减小第一元数据流的占用空间,从而降低方案对存储的消耗。
56、在第一方面的一种可能的实施方式中,所述方法还包括:
57、获取第二文件系统的第二元数据流,所述第二文件系统的数据存储在第二存储盘,其中,所述第二元数据流来自与所述第二存储盘连接的所述第二计算设备,或来自与所述第二设备存储盘连接的第三计算设备,所述第二计算设备不同于所述第三计算设备;
58、所述第二元数据流为流式结构且包含多条记录,所述第二元数据流的多条记录中的每条记录包含所述第二文件系统中的一个节点的标识、所述第二文件系统中的所述一个节点的父节点的标识和所述第二文件系统中的所述一个节点的属性;
59、构建文件视图(便于区分称为文件视图v2),所述文件视图v2包含所述第一文件系统中的多个节点的层次结构和所述第二文件系统中的多个节点的层次结构,所述第二文件系统中的多个节点的层次结构基于所述第二元数据流得到。
60、在该实施方式中,第一计算设备可以获取多个文件系统的元数据流,据此确定多个文件系统的层次结构,进而能够构建包括多个文件系统的层次结构的文件视图。
61、可选的,文件视图v2可以是更新文件视图v1所得到的文件视图。具体的,文件视图v1包含第一文件系统的多个节点的层次结构,而第一计算设备可以在文件视图v1中加入第二文件系统中的多个节点的结构层次,从而更新文件视图v1得到文件视图v2。在第一方面的一种可能的实施方式中,所述方法还包括:
62、扫描第三文件系统的多个节点的层次结构,所述第三文件系统的数据存储在与所述第一计算设备连接的第三存储盘上;
63、根据所述第三文件系统的多个节点的层次结构,构建第三元数据流,所述第三元数据流为流式结构且包含多条记录,所述多条记录中的每条记录包含所述第三文件系统中的一个节点的标识、所述第三文件系统中的所述一个节点的父节点的标识和所述第三文件系统中的所述一个节点的属性;
64、向所述第二计算设备发送所述第三元数据流,以使得所述第二计算设备根据所述第三元数据流确定所述第三文件系统中的多个节点的层次结构。
65、在该实施方式中,第一计算设备还可以基于本地的文件系统(第三文件系统,存储第三文件系统的存储设备与第一计算设备相连)构建第三元数据流,并将第三元数据流发送给其他计算设备,从而让其他计算设备上确定第三文件系统的层次结构,并进而可以让用户通过其他计算设备访问该第三文件系统的数据。
66、在第一方面的一种可能的实施方式中,所述第三文件系统中存在硬链接节点,所述根据所述第三文件系统的多个节点的层次结构,构建第三元数据流,包括:
67、根据所述第三文件系统的多个节点的层次结构和数据采集状态(ingestorstate),构建第三元数据流,所述数据采集状态用于指示存在硬链接的节点以及存在硬链接的节点的父节点列表。
68、由于文件系统中的节点较多,逐一检查文件系统中的节点是否为硬链接节点需要耗费较多的计算能力和时间。因此,通过ingestor state来记录存在硬链接的节点以及存在硬链接的节点的父节点列表,可以节约构建数据流的时间并减少计算消耗,提升元数据流中的信息的准确性,提升用户在数据使用和管理上的便捷性。
69、在第一方面的一种可能的实施方式中,所述方法还包括:
70、构建文件视图(便于区分称为文件视图v3),所述文件视图v3包括所述第三文件系统中的多个节点的层次结构。
71、可选的,该文件视图v3还可以包含所述第一文件系统中的多个节点的层次结构。进一步的,文件视图v3可以是更新文件视图v1所得到的更新后的文件视图。具体的,文件视图v1包含第一文件系统的多个节点的层次结构,而第一计算设备可以在文件视图v1中加入第三文件系统中的多个节点的结构层次,从而更新文件视图v1得到文件视图v3。
72、或者可选的,该文件视图v3可以包含所述第二文件系统中的多个节点的层次结构。进一步的,文件视图v3可以是更新文件视图v2所得到的更新后的文件视图。示例性的,文件视图v2包含第一文件系统的多个节点的层次结构和第二文件系统中多个节点的结构层次,而第一计算设备可以在文件视图v2中加入第三文件系统中的多个节点的结构层次,从而更新文件视图v2得到文件视图v3。在第一方面的一种可能的实施方式中,存储第一文件系统和第三文件系统的存储系统可以是异构的。
73、在第一方面的又一种可能的实施方式中,所述第一计算设备和所述第三存储盘包含于第一存储设备,所述第二计算设备和所述第一存储盘包含于第二存储设备,所述第一存储设备和所述第二存储设备是异构的存储设备。
74、在第一方面的一种可能的实施方式中,所述第一计算设备通过第一协议访问所述第三存储盘,第二计算设备通过第二协议访问所述第一存储盘,所述第一协议与所述第二协议不同。即,第一文件系统和第三文件系统可以异构的文件系统。
75、在第一方面的一种可能的实施方式中,所述第一数据流中包含第四记录,所述第四记录包含节点标识字段、父节点标识字段和所述第三节点的属性,其中,所述第四记录中的节点标识字段为第三节点的标识,所述第四记录中父节点标识字段为第四节点的标识,所述第四节点为目录;
76、所述方法还包括:
77、获取第三io请求,所述第三io请求指示在第五节点下创建所述第三节点的硬链接节点,所述第五节点为目录;
78、在所述第一元数据流的末端追加第五记录、第六记录和第七记录,其中:
79、所述第五记录包含节点标识字段、父节点标识字段和所述第三节点的属性,其中,所述第五记录中节点标识字段为所述第三节点的标识,所述第五记录中父节点标识字段为所述第三节点的标识;
80、所述第六记录包含节点标识字段和父节点标识字段,其中,所述第六记录中节点标识字段为所述第三节点的标识,所述第六记录中父节点标识字段为所述第四节点的标识;
81、所述第七记录包含节点标识字段和父节点标识字段,其中,所述第七记录中节点标识字段为所述第三节点的标识,所述第六记录中父节点标识字段为所述第五节点的标识。
82、可选的,节点标识字段为inode,父节点标识字段为pinode。在前述实施方式中,pinode的值通常为节点的父节点的标识,但是在创建硬链接的场景下,通过pinode与inode的值相同的方式来表示某一节点存在硬链接节点。
83、可以看出,元数据流可以兼容包含硬链接的文件系统,实现了以统一的方式来表达文件系统中硬链接节点的元数据,进一步提升了用户在数据使用和管理上的便捷性。
84、在第一方面的一种可能的实施方式中,所述方法还包括:
85、获取第四io请求,所述第四io请求指示删除所述在第五节点下的所述第三节点的硬链接节点;
86、在所述第一元数据流的末端追加第八记录,其中:
87、所述第八记录包含节点标识字段、父节点标识字段和所述第三节点的属性,其中,所述第八记录中节点标识字段为所述第三节点的标识,所述第八记录中父节点标识字段为所述第五节点的标识,所述第八记录中所述第三节点的属性包含指示删除操作的标识。
88、上述实施方式说明了在删除硬链接场景下元数据流的变更,通过在元数据流中追加记录的方式即可表示删除硬链接的操作,可以方便地实现某个文件系统的元数据在多个设备之间的互通和共享,极大地提升用户在数据使用和管理上的便捷性。
89、在第一方面的一种可能的实施方式中,所述方法还包括:
90、若不存在所述第三节点的硬链接节点,则在所述第一数据流的末端追加第九记录和第十记录;
91、所述第九记录中包含节点标识字段、父节点标识字段和所述第三节点的属性,所述第九记录中节点标识字段为所述第三节点的标识,所述第九记录中父节点标识字段为所述第四节点的标识;
92、所述第十记录中包含节点标识字段、父节点标识字段和所述第三节点的属性,所述第十记录中节点标识字段为所述第三节点的标识,所述第十记录中父节点标识字段为所述第三节点的标识,所述第十记录中的所述第三节点的属性包含指示删除操作的标识。
93、上述实施方式说明了将存在硬链接的节点恢复为普通节点(区别存在硬链接的节点)的场景下元数据流的变更,通过在元数据流中追加记录的方式即可表示将存在硬链接的节点恢复为普通节点,从而可以方便地实现某个文件系统的元数据在多个设备之间的互通和共享,进一步提升用户在数据使用和管理上的便捷性。
94、第二方面,本身实施例提供一种元数据共享系统,该元数据共享系统包含第一计算设备和第二计算设备,所述第二计算设备与第一存储盘相连,所述第一存储盘上存储第一文件系统的数据;所述第一计算设备用于实现前述第一方面任一项所描述的方法。
95、在第二方面的一种可能的实施方式中,所述第二计算设备,用于:
96、扫描第一文件系统的多个节点的层次结构;
97、根据所述第一文件系统的多个节点的层次结构,构建第一元数据流,所述第一元数据流为流式结构且包含多条记录,每条记录包含所述第一文件系统中的一个节点的标识、所述第一文件系统中的所述一个节点的父节点的标识和所述第一文件系统中的所述一个节点的属性;
98、向所述第一计算设备发送所述第一数据流;
99、所述第一计算设备,用于:
100、获取来自所述第二计算设备的第一数据流;
101、根据所述第一元数据流,确定所述第一文件系统中的多个节点的层次结构。
102、在第二方面的一种可能的实施方式中,所述第一计算设备,还用于构建文件视图(便于区分称为文件视图v1),所述文件视图v1包含所述第一文件系统中的多个节点的层次结构。
103、在第二方面的一种可能的实施方式中,所述第二计算设备还用于构建文件视图(便于区分称为文件视图v4),所述文件视图v4包含所述第一文件系统中的多个节点的层次结构。
104、在第二方面的一种可能的实施方式中,所述第一计算设备,还用于:
105、获取第一输入输出io请求,所述第一io请求指示对第一节点执行变更操作;
106、在所述第一元数据流的末端追加第一记录,所述第一记录中包含所述第一节点的inode,所述第一节点的pinode,和变更后的所述第一节点的第一属性,所述变更后的所述第一节点的第一属性包括所述变更操作的类型;
107、所述第二计算设备,还用于:
108、获取所述第一元数据流中的所述第一记录;
109、根据所述第一元数据流中的所述第一记录对所述第一节点执行变更操作。
110、在第二方面的一种可能的实施方式中,所述第一计算设备,还用于:
111、向所述第二计算设备发送消息,所述消息指示所述第一元数据流发生变化;
112、所述第二计算设备,还用于:
113、获取所述消息。
114、在第二方面的一种可能的实施方式中,所述第一计算设备,还用于:
115、在所述第一元数据流的末端出现新增加的记录的情况下,根据更新后的所述第一元数据流,更新文件视图,更新后的文件视图包含更新后的所述第一文件系统中的多个节点的层次结构;
116、所述第二计算设备,还用于:
117、在所述第一元数据流的末端出现新增加的记录的情况下,根据更新后的所述第一元数据流,更新文件视图v4,更新的文件视图v4包含更新后的所述第一文件系统中的多个节点的层次结构。
118、在第二方面的一种可能的实施方式中,所述元数据流中包含第二记录,所述第二记录包含所述第二文件系统中的第二节点的属性,所述第二节点为文件;
119、所述第二节点的属性包含所述第二节点的存储布局信息,所述第二节点的存储布局信息指示所述第一存储盘所属的存储设备;
120、所述第一计算设备还用于,还用于:
121、获取第二io请求,所述第二io请求指示读取所述第二节点的数据;
122、从所述第一存储盘获取所述第二节点的数据。
123、在第二方面的一种可能的实施方式中,所述方法还包括:
124、将所述第二节点的数据内容响应给所述第二io请求。
125、在第二方面的一种可能的实施方式中,所述第一计算设备,还用于:
126、对所述第一元数据流执行合并操作,所述合并操作指示对所述第一元数据流中的同一个节点对应的多条记录合并为一条记录。
127、在第二方面的一种可能的实施方式中,所述第二计算设备,还用于:
128、对所述第一元数据流执行合并操作,所述合并操作指示对所述第一元数据流中的同一个节点对应的多条记录合并为一条记录。
129、在第二方面的一种可能的实施方式中,所述元数据共享系统还包含第三计算设备,所述第三计算设备,用于:
130、向所述第一计算设备发送第二文件系统的第二元数据流,所述第二文件系统的数据存储在与所述第三计算设备连接的第二存储盘上,
131、所述第二元数据流为流式结构且包含多条记录,所述第二元数据流的多条记录中的每条记录包含所述第二文件系统中的一个节点的标识、所述第二文件系统中的所述一个节点的父节点的标识和所述第二文件系统中的所述一个节点的属性;
132、所述第一计算设备,还用于:
133、获取所述第二元数据流,
134、构建文件视图(便于区分称为文件视图v2),所述文件视图v2包含所述第一文件系统中的多个节点的层次结构和所述第二文件系统中的多个节点的层次结构,所述第二文件系统中的多个节点的层次结构基于所述第二元数据流得到。
135、可选的,该文件视图v2可以是更新文件视图v1得到的,或者更新文件视图v3得到的。
136、在第二方面的一种可能的实施方式中,所述第一计算设备,还用于:
137、扫描第三文件系统的多个节点的层次结构,所述第三文件系统的数据存储在第三存储盘上,所述第一计算设备与所述第三存储盘相连;
138、根据所述第三文件系统的多个节点的层次结构,构建第三元数据流;
139、向所述第二计算设备发送所述第三元数据流;
140、所述第二计算设备,还用于:
141、获取来自所述第一计算设备的第三数据流;
142、根据所述第三元数据流,确定所述第三文件系统中的多个节点的层次结构。
143、在第二方面的一种可能的实施方式中,所述第一计算设备还用于:
144、构建文件视图(便于区分称为文件视图v3),所述文件视图v3包含所述第一文件系统的结构层次和所述第三文件系统的结构层次。
145、可选的,该文件视图v3可以是更新文件视图v2或更新文件系统v2得到的。
146、在第二方面的一种可能的实施方式中,所述第二计算设备还用于:
147、构建文件视图(便于区分称为文件视图v5),所述文件视图v5包括第一文件系统中的多个节点的层次结构和所述第三文件系统中的多个节点的层次结构。
148、可选的,该文件视图v5可以是更新文件视图v4得到的。
149、在第二方面的一种可能的实施方式中,
150、所述第二计算设备和所述第一存储盘包含于第一存储设备,所述第一计算设备和所述第三存储盘包含于第二存储设备,所述第一存储设备和所述第二存储设备是异构的。
151、在第二方面的一种可能的实施方式中,所述第一文件系统通过第一访问协议被主机访问,所述第三文件系统通过第二访问协议被主机访问,所述第一访问协议与所述第二访问协议不同。
152、第三方面,本技术实施例提供一种计算装置,所述计算装置包含通信模块和处理模块,所述计算装置用于实现第一方面任一项所描述的方法。
153、在第三方面的一种可能的实施方式中,所述通信模块,用于获取第一文件系统的第一元数据流,所述第一元数据流来自第二计算设备,所述第一元数据流为流式结构且包含多条记录,每条记录包含所述第一文件系统中的一个节点的标识、所述第一文件系统中的一个节点的父节点的标识和所述第一文件系统中的一个节点的属性;
154、所述处理模块,还用于根据所述第一元数据流,确定所述第一文件系统中的多个节点的层次结构。
155、在第三方面的又一种可能的实施方式中,所述处理模块,还用于:
156、构建文件视图(便于区分称为文件视图v1),该文件视图v1包含所述第一文件系统中的多个节点的层次结构。
157、在第三方面的又一种可能的实施方式中,所述处理模块和所述通信模块,还用于:
158、在所述第一元数据流的末端追加第一记录,所述第一记录中包含所述第一节点的标识,所述第一节点的父节点的标识和所述第一节点的第一属性,所述第一属性包括变更操作的类型。
159、在第三方面的又一种可能的实施方式中,所述通信模块,还用于:
160、获取第一输入输出(inputoutput,io)请求,所述第一io请求指示对第一节点执行变更操作。
161、在第三方面的又一种可能的实施方式中,所述通信模块,还用于:
162、向所述第二计算设备发送消息,所述消息指示所述第一元数据流发生变化,以使得所述第二计算设备根据所述第一元数据流中的所述第一记录对所述第一节点执行所述变更操作。
163、在第三方面的又一种可能的实施方式中,所述通信模块和所述处理模块,还用于:
164、在所述第一元数据流的末端出现新增加的记录的情况下,根据更新后的所述第一元数据流,更新文件视图(例如文件视图v1),更新后的文件视图包含更新后的第一文件系统中的多个节点的层次结构。
165、在第三方面的又一种可能的实施方式中,所述通信模块和所述处理模块,还用于:
166、获取第二io请求,所述第二io请求指示读取第二节点的数据,所述第二节点属于所述第一文件系统;
167、从所述第一存储盘获取所述第二节点的数据。
168、在第三方面的又一种可能的实施方式中,所述第一元数据流中包含第三记录,所述第三记录包含所述第一文件系统中的第二节点的属性,所述第二节点为文件,所述第二节点的属性包含所述第二节点的存储布局信息,所述第二节点的存储布局信息指示所述第一存储盘所属的存储设备。
169、在第三方面的又一种可能的实施方式中,所述处理模块和所述通信模块,还用于:
170、对所述第一元数据流执行合并操作,所述合并操作指示对所述第一元数据流中的同一个节点对应的多条记录合并为一条记录。通过该实施方式,可以减小第一元数据流的占用空间,从而降低方案对存储的消耗。
171、在第三方面的又一种可能的实施方式中,所述通信模块,还用于:
172、获取第二文件系统的第二元数据流,所述第二文件系统的数据存储在第二存储盘,其中,所述第二元数据流来自与所述第二存储盘连接的所述第二计算设备,或来自与所述第二设备存储盘连接的第三计算设备,所述第二计算设备不同于所述第三计算设备;
173、所述第二元数据流为流式结构且包含多条记录,所述第二元数据流的多条记录中的每条记录包含所述第二文件系统中的一个节点的标识、所述第二文件系统中的所述一个节点的父节点的标识和所述第二文件系统中的所述一个节点的属性;
174、所述处理模块,还用于构建文件视图(便于区分称为文件视图v2),所述文件视图v2包含所述第一文件系统中的多个节点的层次结构和所述第二文件系统中的多个节点的层次结构,所述第二文件系统中的多个节点的层次结构基于所述第二元数据流得到。
175、在第三方面的又一种可能的实施方式中,所述处理模块,还用于:
176、扫描第三文件系统的多个节点的层次结构,所述第三文件系统的数据存储在与所述第一计算设备连接的第三存储盘上;
177、根据所述第三文件系统的多个节点的层次结构,构建第三元数据流,所述第三元数据流为流式结构且包含多条记录,所述多条记录中的每条记录包含所述第三文件系统中的一个节点的标识、所述第三文件系统中的所述一个节点的父节点的标识和所述第三文件系统中的所述一个节点的属性;
178、所述通信模块,还用于:
179、向所述第二计算设备发送所述第三元数据流,以使得所述第二计算设备根据所述第三元数据流确定所述第三文件系统中的多个节点的层次结构。
180、在第三方面的又一种可能的实施方式中,所述第三文件系统中存在硬链接节点,所述处理模块,还用于:
181、根据所述第三文件系统的多个节点的层次结构和数据采集状态(ingestorstate),构建第三元数据流,所述数据采集状态用于指示存在硬链接的节点以及存在硬链接的节点的父节点列表。
182、在第三方面的又一种可能的实施方式中,所述第一数据流中包含第四记录,所述第四记录包含节点标识字段、父节点标识字段和所述第三节点的属性,其中,所述第四记录中的节点标识字段为第三节点的标识,所述第四记录中父节点标识字段为第四节点的标识,所述第四节点为目录。所述通信模块,还用于:
183、获取第三io请求,所述第三io请求指示在第五节点下创建所述第三节点的硬链接节点,所述第五节点为目录;
184、在所述第一元数据流的末端追加第五记录、第六记录和第七记录,其中:
185、所述第五记录包含节点标识字段、父节点标识字段和所述第三节点的属性,其中,所述第五记录中节点标识字段为所述第三节点的标识,所述第五记录中父节点标识字段为所述第三节点的标识;
186、所述第六记录包含节点标识字段和父节点标识字段,其中,所述第六记录中节点标识字段为所述第三节点的标识,所述第六记录中父节点标识字段为所述第四节点的标识;
187、所述第七记录包含节点标识字段和父节点标识字段,其中,所述第七记录中节点标识字段为所述第三节点的标识,所述第六记录中父节点标识字段为所述第五节点的标识。
188、在第三方面的又一种可能的实施方式中,所述通信模块,还用于:
189、获取第四io请求,所述第四io请求指示删除所述在第五节点下的所述第三节点的硬链接节点;
190、在所述第一元数据流的末端追加第八记录,其中:
191、所述第八记录包含节点标识字段、父节点标识字段和所述第三节点的属性,其中,所述第八记录中节点标识字段为所述第三节点的标识,所述第八记录中父节点标识字段为所述第五节点的标识,所述第八记录中所述第三节点的属性包含指示删除操作的标识。
192、在第三方面的又一种可能的实施方式中,所述通信模块,还用于:
193、若不存在所述第三节点的硬链接节点,则在所述第一数据流的末端追加第九记录和第十记录;
194、所述第九记录中包含节点标识字段、父节点标识字段和所述第三节点的属性,所述第九记录中节点标识字段为所述第三节点的标识,所述第九记录中父节点标识字段为所述第四节点的标识;
195、所述第十记录中包含节点标识字段、父节点标识字段和所述第三节点的属性,所述第十记录中节点标识字段为所述第三节点的标识,所述第十记录中父节点标识字段为所述第三节点的标识,所述第十记录中的所述第三节点的属性包含指示删除操作的标识。
196、第四方面,本技术实施例提供一种节点的元数据(其中,节点为文件系统中的文件或目录),所述节点的元数据包含所述节点的标识、所述节点的父节点标识和所述节点的属性,其中,所述节点的属性包含以下字段中的一项或者多项:
197、对所述节点执行的变更操作、与所述节点相关的事务的标识、所述节点的元数据的序列号、所述节点的存储布局信息、所述节点的扩展属性。
198、第五方面,本技术实施例提供一种文件系统的元数据流,所述元数据流为流式结构且包含多条记录,所述多条记录中的每条记录包含所述文件系统中的一个节点的标识、所述一个节点的父节点的标识和所述一个节点的属性,所述一个节点为一个文件或一个目录。
199、其中,流式结构是包含多条记录的一种数据结构,每一条记录包含多个值,每一个值对应了一个字段,流式结构具有以下特征:只读、只增、有序,其中“只读”是指流式结构中的记录的值只能读取而无法修改;“只增”指示流式结构中只能追加新的记录而无法删除已有的记录,但属于同一个节点的多条记录可以被合并成一条记录;“有序”是指流式结构中的记录具有逻辑顺序,追加的记录在流式结构的尾部增加。
200、在第五方面的又一种可能的实施方式中,所述一个节点的标识和所述一个节点的父节点的标识共同作为一组记录的索引,该一组记录是同一个父目录下的同一个节点的记录。
201、在第五方面的又一种可能的实施方式中,所述节点的属性包含以下字段中的一项或者多项:
202、对所述节点执行的变更操作、与所述节点相关的事务的标识、所述节点的元数据的序列号、所述节点的存储布局信息、所述节点的扩展属性。
203、在第五方面的又一种可能的实施方式中,所述元数据流被多个设备共享,当某一设备在元数据流末端追加新的记录时,共享元数据流的多个设备可以从元数据流中读取新增加的记录,从而获取文件系统的变更,实现文件系统的变更同步。
204、在第五方面的又一种可能的实施方式中,元数据流中包含基线(checkpoint)和cdc流。
205、在checkpoint中,一个节点只对应一条记录。即,checkpoint中每条记录的索引是唯一的。
206、cdc流是在checkpoint的基础上追加记录得到的。
207、第五方面的又一种可能的实施方式中,元数据流可以被合并,合并操作可以将同一个节点对应的多条记录合并为一条记录。
208、第六方面,本技术实施例提供一种计算设备,该计算设备包括处理器和存储器;所述处理器用于执行存储器中存储的指令,以使得所述计算设备实现前述第一方面任一项所描述的方法。
209、可选的,所述计算设备还包括通信接口,所述通信接口用于接收和/或发送数据,和/或,所述通信接口用于为所述处理器提供输入和/或输出。
210、需要说明的是,上述实施例是以通过调用计算机指定来执行方法的处理器(或称通用处理器)为例进行说明。具体实施过程中,处理器还可以是专用处理器,此时计算机指令已经预先加载在处理器中。可选的,处理器还可以既包括专用处理器也包括通用处理器。
211、可选的,处理器和存储器还可能集成于一个器件中,即处理器和存储器还可以被集成在一起。
212、第七方面,本技术实施例还提供一种计算设备集群,该计算设备集群包含至少一个计算设备,每个计算设备包括处理器和存储器;
213、所述至少一个计算设备的处理器用于执行所述至少一个计算设备的存储器中存储的指令,以使得所述计算设备集群执行第一方面任一项所述的方法。
214、第八方面,本技术实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在至少一个处理器上运行时,实现前述第一方面任一项所描述的方法。
215、第九方面,本技术提供了一种计算机程序产品,计算机程序产品包括计算机指令,当所述指令在至少一个处理器上运行时,实现前述第一方面任一项所描述的方法。
216、可选的,该计算机程序产品可以为一个软件安装包或镜像包,在需要使用前述方法的情况下,可以下载该计算机程序产品并在计算设备上执行该计算机程序产品。
217、本技术第二至第九方面所提供的技术方案,其有益效果可以参考第一方面的技术方案的有益效果,此处不再赘述。