利用多协议数据访问的一致实体标记的制作方法

文档序号:33507186发布日期:2023-03-18 03:11阅读:37来源:国知局
利用多协议数据访问的一致实体标记的制作方法
利用多协议数据访问的一致实体标记
1.相关申请的交叉引用
2.本技术要求于2020年9月2日提交的题为“consistent entity tags with multiple protocol data access”的美国非临时申请号17/010,353的优先权,其全部内容并入本文。
技术领域
3.本技术整体涉及使用多个计算机存储协议来在计算机文件系统上执行计算机存储操作。


背景技术:

4.计算机文件系统可以对其存储的数据执行操作,诸如打开新的或现有的文件、向打开的文件写入数据、从打开的文件读取数据以及关闭打开的文件。在文件系统中,不同的数据片段(以及关于所存储数据的元数据)可以被存储为文件,并且文件可以被存储在目录的分层结构中。另一类型的计算机存储系统可以是对象存储。
5.在对象存储系统中,数据可以被存储为对象,对象包括被存储的数据、关于被存储数据的元数据以及相对于对象存储系统中的其他对象的对象的唯一标识符。即,文件系统存储和对象系统存储的区别在于,利用文件系统存储,数据可以被分层存储,而利用对象系统存储,数据可以被存储在平面地址空间中。
附图说明
6.结合附图考虑以下详细描述,本实施例的多个方面、实施例、对象和优点将是显而易见的,其中,贯穿附图,相同的附图标记旨代相同的部分,并且其中:
7.图1图示了根据本公开的某些实施例的可以利用多协议数据访问来促进维持一致实体标记的示例系统架构;
8.图2图示了根据本公开的某些实施例的可以利用多协议数据访问来促进维持一致实体标记的另一示例系统架构;
9.图3图示了根据本公开的某些实施例的利用多协议数据访问来维持一致实体标记的示例处理流程;
10.图4图示了根据本公开的某些实施例的利用多协议数据访问来维持一致实体标记的另一示例处理流程;
11.图5图示了根据本公开的某些实施例的利用多协议数据访问来维持一致实体标记的另一示例处理流程;
12.图6图示了根据本公开的某些实施例的在处理包括哈希值的put对象存储操作时,利用多协议数据访问来维持一致实体标记的示例处理流程;
13.图7图示了根据本公开的某些实施例的在处理省略哈希值的put对象存储操作时,利用多协议数据访问来维持一致实体标记的示例处理流程;
14.图8图示了根据本公开的某些实施例的在处理get对象存储操作时,利用多协议数据访问来维持一致实体标记的示例处理流程;
15.图9图示了根据本公开的某些实施例的在处理get对象存储操作时,利用多协议数据访问来维持一致实体标记的另一示例处理流程;
16.图10图示了根据本公开的某些实施例的用于在确定对象的新哈希值时,利用多协议数据访问来维持一致实体标记的示例处理流程;
17.图11图示了根据本公开的某些实施例的在更新指示对象的哈希值是否有效的元数据时,利用多协议数据访问来维持一致实体标记的示例处理流程;
18.图12图示了可操作来执行本公开的某些实施例的计算机的示例框图。
具体实施方式
19.概述
20.计算机系统可以在文件系统存储(诸如isilon onefs文件系统存储)之上实现对象存储协议堆栈。在这样的示例中,客户端计算机可以向指定诸如get对象操作的对象存储操作的计算机系统发送数据操作(检索对象内容和元数据)、put对象操作(创建或替换对象)、copy对象操作(将现有对象复制到另一对象)和delete对象操作(删除现有对象)。
21.协议堆栈可以接收这些对象存储操作并将它们中的每个转换为一个或多个对应的文件系统操作,诸如open文件操作(创建新文件或访问现有文件)、read文件操作(读取文件的内容)、write文件操作(写入文件内容)、close文件操作(关闭打开的针对文件的文件句柄)以及unlink文件操作(删除文件)。然后,协议堆栈可以将这些对应的文件系统操作发送到计算机系统的文件系统驱动程序,并且文件系统驱动程序可以在计算机系统的文件系统上实现这些文件系统操作。
22.通过这种方式,客户端可以向实现文件系统的计算机系统指定对象存储操作,并且这些对象存储操作可以在文件系统上实现。
23.与文件存储协议结合工作的对象存储协议可以针对对象返回一致实体标记(etag)值,同时还能够维持检测由另一协议所做的改变(这可能会影响对应的对象的etag值)的能力。在客户端针对对象提供与put对象操作有关的值(诸如哈希值或md5值)的情况下,实现对象存储协议和文件系统协议两者的示例服务器可以将该值存储到文件系统的用户空间扩展属性(以及将对象数据存储为文件)并且可以设置标志,标志指示对象具有可以被用作etag值的有效值(该标记可以是md5_valid位)。
24.当与对象相对应的文件被文件系统操作修改时,标志可以被清除(诸如通过将其设置为等于零),以指示对象缺少可以用作etag值的有效值。
25.在客户端在put对象操作中没有为对象提供值的一个示例中,对应的标志可以被设置(或者被允许保持)为false或零。在与对象相对应的标志被设置为false的情况下,这样的示例服务器可以利用服务器生成的值(诸如与对象的索引节点相对应的64位逻辑索引节点号(lin)的联接)和标识与对象相对应的文件的修改时间的64位值(诸如某些系统架构上的mtime值))来响应get对象操作。
26.在另一示例中,客户端计算设备使用put对象操作来将对象存储在服务器上。客户端可以在超文本传输协议(http)报头中的content-md5字段中为该对象提供消息摘要
(md5)值。在为对象提供md5的情况下,该值可以由服务器作为对应的文件系统文件的用户空间扩展属性存储,并且文件的内部md5_valid位可以被设置为true。对文件的任何数据修改都可以清除md5_valid位。在put对象操作中没有提供md5值的情况下,或者md5_valid位通过另一协议(诸如网络文件系统(nfs)协议或服务器消息块(smb)协议)响应于操纵文件被清除,则响应于客户端发送get对象操作,服务器可以在响应中利用服务器生成的值作为etag值进行响应。在某些示例中,该服务器生成的值可以是64位lin值和64位mtime值的组合。
27.使用这些技术,客户端可以经由etag值而了解对象是否已经由另一put对象操作改变或由文件系统操作改变。即,当文件存储协议修改文件时,可以实现etag值中的一致行为,因为响应于get对象操作,文件存储修改导致服务器返回新的etag值,这指示在前一个etag值被设置之后,对象已被修改。换言之,本技术可以实现避免在文件修改之后返回过时的etag值,部分原因是md5_value可以在文件存储事务中由文件系统层清除。
28.示例架构
29.图1图示了根据本公开的某些实施例的可以利用多协议数据访问来促进维持一致实体标记的示例系统架构100。如图所示,系统架构100包括客户端计算机102a、客户端计算机102b、通信网络104和服务器106。进而,服务器106可以包括用户空间108a和内核空间108b。服务器106还可以包括在用户空间108a中操作的对象存储协议堆栈110和文件存储协议堆栈116。服务器106还可以包括实体标记感知感知文件系统驱动程序112以及在内核空间108b中操作的文件系统存储114。
30.内核空间108b通常可以包括由操作系统内核利用的服务器106的存储器区域和服务器106的一些设备驱动程序,其中这些设备驱动程序利用计算机可读指令来实现。然后,用户空间108a通常可以包括由服务器106的其他组件利用的服务器106的存储器区域,其中这些其他组件利用计算机可读指令来实现。
31.客户端计算机102a、客户端计算机102b和服务器106中的每个可以利用图12中的计算机1202的一个或多个实例来实现。在一些示例中,服务器106包括分布式存储系统,分布式存储系统包括图12中的计算机1202的多个实例。
32.通信网络104可以包括诸如互联网的计算机通信网络,或者隔离的专用计算机通信网络。
33.客户端计算机102a和客户端计算机102b中的每个可以向服务器106发送请求以对数据执行对象存储操作(例如,get对象操作和/或put对象操作),以及可以向服务器106发送请求以对数据执行文件系统操作(例如,read文件操作和/或write文件操作)。客户端计算机102a和客户端计算机102b可以经由通信网络104将这些请求发送到服务器106。
34.服务器106可以被配置为存储和操作文件系统存储中的数据。因此,在涉及对象存储操作时,服务器106可以从客户端计算机102a和客户端计算机102b接收这些对象存储操作,并实现对应的文件系统操作。服务器106可以在对象存储协议堆栈110处从客户端计算机102a和客户端计算机102b接收这些对象存储操作。
35.对象存储协议堆栈110可以接收对象存储操作并将其转换为一个或多个文件存储操作。然后,对象存储协议堆栈110可以在输入/输出(i/o)请求分组(irp)中一次发送这些文件存储操作,输入/输出(i/o)请求分组(irp)被定向到实体标记感知感知文件系统驱动
程序112(其可以提供对文件系统存储114的访问)。
36.在实体标记感知感知文件系统驱动程序112处理包括实体标记的put对象操作时,实体标记感知感知文件系统驱动程序112可以将实体标记存储在与由put操作标识的对象相对应的文件的扩展属性中。此外,实体标记感知感知文件系统驱动程序112可以将md5_valid标志设置为true。
37.当实体标记感知文件系统驱动程序112处理不包括实体标记的put对象操作时,实体标记感知文件系统驱动程序112可以将对应的md5_valid标志设置为false,或者当md5_valid标志存在并且被设置为false时保持不变。
38.当实体标记感知感知文件系统驱动程序112处理文件存储协议操作时,实体标记感知文件系统驱动程序112可以将对应的md5_valid标志设置为false,或者当md5_valid标志存在并且被设置为false时保持不变。
39.当实体标记感知文件系统驱动程序112处理get对象操作时,实体标记感知文件系统驱动程序112可以确定对应的md5_valid标记是否为true。如果对应的md5_valid标志为true,则实体标记感知文件系统驱动程序112可以包括对应的实体标记,作为对get对象操作的响应的部分。如果对应的md5_valid标记为false,则实体标记感知文件系统驱动程序112可以生成新的实体标记值,并返回该新的实体标记值作为响应get对象操作的部分。
40.相似于对象存储协议堆栈110,文件存储协议堆栈116可以接收文件存储操作,并在被引导到实体标记感知文件系统驱动程序112的irp中将其发送(实体标记感知文件系统驱动程序112可以提供对文件系统存储114的访问)。
41.图2图示了根据本公开的某些实施例的可以利用多协议数据访问来促进维持一致实体标记的另一示例系统架构200。
42.如图所示,系统架构200包括对象存储协议堆栈210、实体标记感知文件系统驱动程序212、文件系统存储214和文件存储协议堆栈216。在一些示例中,对象存储协议堆栈210可以相似于图1中的对象存储协议堆栈110;实体标记感知文件系统驱动程序212可以相似于图1中的实体标记感知文件系统驱动程序112;文件系统存储214可以相似于图1中的文件系统存储214;以及文件存储协议堆栈216可以相似于图1的文件存储协议堆栈116。
43.系统架构200的示例可以示出如何由系统架构200在相同文件上处理对象存储操作和文件存储操作,以及系统架构200如何在给定文件上处理对象存储操作和文件存储操作时维持一致实体标记行为。
44.在图2的示例中,通信218-1包括请求执行对象存储操作,该请求由对象存储协议堆栈210从客户端计算机并跨越通信网络(诸如图1中的客户端计算机102a和通信网络104)接收。作为响应,对象存储协议堆栈208发送irp 218-2,irp 218-2指示被引导到文件系统驱动程序212的对应的文件存储操作。然后,文件系统驱动程序212可以指令218-3文件系统存储214执行由irp 218-2指示的文件系统操作并接收确认,文件系统驱动程序212转而将该确认中继到对象存储协议堆栈210。
45.关于文件存储操作,通信220-1包括请求执行文件存储操作,该请求由文件存储协议堆栈216从客户端计算机跨越通信网络(诸如图1中的客户端计算机102a和通信网络104)接收。作为响应,文件存储协议堆栈216发送irp 220-2,irp 220-2指示被引导到文件系统驱动程序212的对应的文件存储操作。然后,文件系统驱动程序212可以指示220-3文件系统
存储214执行由irp 220-2指示的文件系统操作并接收确认,文件系统驱动程序212转而将该确认中继到文件存储协议堆栈216。
46.这些对象存储操作和文件存储操作均可以在文件系统存储214上实现,并且他们均可以在文件系统存储214中的相同文件上实现。例如,put对象存储操作可以对第一文件执行,并且在处理该操作时,可以针对该第一文件处理delete文件存储操作。
47.示例处理流程
48.图3图示了根据本公开的某些实施例的用于利用多协议数据访问来维持一致实体标记的示例处理流程300。在一些示例中,流程300的各方面可以由图1的服务器106实现或由图12的计算环境1200实现。
49.可以理解,处理流程300的操作程序是示例操作程序,并且可以存在实现比所描述的更多或更少的操作程序的实施例,或者以与所描述的不同的顺序实现所描述的操作程序的实施例。在一些示例中,流程300可以与图4的处理流程400、图5的处理流程500、图6的处理流程600、图7的处理流程700、图8的处理流程800、图9的处理流程900、图10的处理流程1000、图11的处理流程1100中的一个或多个的各方面结合来实现。
50.处理流程300从302开始,并且移动到操作304。操作304描述了从设备接收执行第一对象存储操作以从对象读取的第一请求,该对象与文件存储系统的第一文件相对应,第一文件已经经由文件存储操作创建或修改。即,系统可以支持对象存储协议和文件存储协议两者,并且将来自两种协议的数据存储在文件系统中。客户端设备可以向系统发送get对象操作,其中get对象操作标识对象,并且该对象中的数据作为文件被存储在系统的文件系统中。
51.该文件可以先前已经通过文件系统操作创建或修改,这使得系统将md5_valid标志设置为false(或者默认值是false时,一开始就没有设置为true)。即,在一些示例中,操作304可以包括在执行接收第一请求之前,接收第二请求以执行修改第一文件的文件系统操作,根据第二请求来修改第一文件,以及响应于接收第二请求,将第一值存储在第一数据结构中,第一值指示第一文件没有与有效实体标记相关联。即,可以根据文件系统操作来修改文件,并且因此不具有有效的实体标记。
52.在一些示例中,操作304还可以包括,在执行接收第一请求之前,接收第二请求以执行创建第一文件的文件系统操作,根据第二请求来创建第一文件,以及响应于接收第二请求,将第一值存储在第一数据结构中,第一值指示第一文件未与有效实体标记相关联。即,可以根据文件系统操作来创建文件,并且因此不具有有效实体标记。
53.在一些示例中,可以根据http请求来做出第一请求。即,客户端设备与系统之间的对象存储操作可以经由http通信来发送。在一些示例中,第一实体标记被指定作为http请求的报头。这可以是http请求的content-md5报头。
54.在一些示例中,操作304包括在执行接收第一请求之前,由系统接收第二请求以执行写入对象的第二对象存储操作,其中第二请求指示与第一文件相对应的第二实体标记。即,第一文件可以已经作为put对象操作的部分被创建。
55.在一些示例中,操作304包括,响应于指示第二实体标记的第二请求,存储第一文件具有有效实体标记的第一指示。即,在文件作为put对象操作的部分被创建的情况下,put对象操作可以已标识实体标记值,该实体标记值随后被存储,并且对应的md5_valid位被设
置为true。
56.在一些示例中,操作304包括响应于根据请求执行修改第一文件的文件系统操作的第三请求,存储第一文件缺乏有效实体标记的第二指示。即,在对文件执行文件系统操作的情况下,md5_valid位可以被设置为false。
57.在一些示例中,文件系统操作与网络文件系统(nfs)协议或服务器消息块(smb)协议相对应。nfs协议和smb协议可以是用于修改文件的文件系统协议的示例。
58.在一些示例中,根据代表性的状态传输(rest)web服务来接收第一对象存储操作。即,rest架构可以被用于在客户端与服务器之间发送对象操作。
59.操作306描述响应于第一请求并确定第一文件未与有效实体标记相关联,针对对象生成第一实体标记。即,第一文件可以缺少有效实体标记,原因是诸如由put对象操作创建文件后由文件系统操作进行了修改、文件是利用文件系统操作创建的或者文件是利用没有为对象指定实体标记的put对象操作创建的。在这些情况下,系统可以通过为对象创建实体标记来响应get对象操作。例如,系统可以将与对象相对应的lin和与对象相对应的mtime值组合。
60.即,在一些示例中,操作306可以包括基于与第一文件相对应的系统的逻辑索引节点号以及第一文件的文件修改时间来确定第一实体标记。此外,在一些示例中,第一标识值包括针对逻辑索引节点号的第一64位值以及针对文件修改时间的第二64位值的联接。
61.在一些示例中,操作306包括在第一文件的用户空间扩展属性中存储对象的第一实体值。即,一旦由系统确定了第一实体值,则第一实体值就可以由系统存储在与该文件的关联中(同时将md5_valid值设置为true),使得响应于后续get对象操作而返回第一实体值(只要在存储第一实体值之后没有修改对应文件)。
62.操作308描述响应于接收第三请求,将对象和第一实体标记发送到设备。即,系统可以利用对象和操作306中新创建的实体标记值来响应get对象操作。在一些示例中,操作308包括经由http通信发送对象。
63.在一些示例中,操作308包括在处理第一对象存储操作之后,处理第二对象存储操作以写入对象,并基于第二对象存储操作来将第二标识值与对象相关联。即,作为处理指定实体标记值的put对象操作的结果,针对对象(并存储在对应的文件中)的实体标记值可以被更新。
64.在一些示例中,操作308包括:响应于在对第一文件处理文件存储操作之前处理第二对象存储操作以读取对象,确定第一文件与有效身份值相关联、确定所存储的第二身份值与第一文件相关联,并且利用第二标识值来响应第二对象存储操作。即,对未修改的文件进行get对象操作,因为put对象操作从put操作返回原始实体标记值,这指示对象没有被后续的put对象操作或文件系统操作修改。
65.在一些示例中,第二标识值指示对象自它被创建或由第三对象存储操作最后修改以来,未被文件系统操作改变。即,当客户端接收与put对象操作中最初指定的相同的标识值(第二标识值)时,就可以指示对象自put对象操作以来没有被改变。
66.在一些示例中,第一标识值指示对象自从被创建或被第二对象存储操作最后修改以来,已被文件系统操作改变。即,在发送get对象操作的客户端设备接收第一标识值和创建包括第二标识值的文件的put对象操作的情况下,该不同的标识值(第一标识值)可以指
示对象自原始put对象操作以来已被改变。
67.可以理解,处理流程300的操作程序是示例操作程序,并且可以存在实现比所描述的更多或更少的操作程序的实施例,或者以与所描述的不同的顺序实现所描述的操作程序的实施例。在一些示例中,处理流程300可以与图4的处理流程400、图5的处理流程500、图6的处理流程600、图7的处理流程700、图8的处理流程800、图9的处理流程900、图10的处理流程1000、图11的处理流程1100中的一个或多个方面结合来实现。
68.图4图示了根据本公开的某些实施例的用于利用多协议数据访问来维持一致实体标记的另一示例处理流程400。在一些示例中,处理流程400的各方面可以由图1的服务器106或图12的计算环境1200实现。
69.可以理解,处理流程400的操作程序是示例操作程序,并且可以存在实现比所描述的更多或更少的操作程序的实施例,或者以与所描述的不同的顺序实现所描述的操作程序的实施例。在一些示例中,流程400可以与图3的处理流程300、图5的处理流程500、图6的处理流程600、图7的处理流程700、图8的处理流程800、图9的处理流程900、图10的处理流程1000、图11的处理流程1100中的一个或多个方面结合来实现。
70.处理流程400从402开始,并且移动到操作404。操作404描述了从设备接收第一请求以执行用于从对象读取的第一对象存储操作,对象与文件存储系统的第一文件相对应。在一些示例中,操作404可以以与图3中的操作304相似的方式来实现。
71.操作406描述了响应于第一请求以及确定第一文件未与有效实体标记相关联,针对对象生成第一实体标记。在一些示例中,操作406可以以与图3中的操作306相似的方式实现。在与对象相对应的文件缺少有效实体标记的情况下,则可以指示文件根据文件系统协议被修改或创建(或者没有作为put对象操作的部分提供有效实体标记)。在这种情况下,可以确定新的实体标记值应与对象一起返回。实现操作406的系统可以响应于从客户端设备接收get对象操作而生成实体标记值,并将新生成的实体标记值返回到客户端设备,作为对get对象操作的响应的部分。
72.操作408描述了响应于接收第三请求,向设备发送对象和第一实体标记。在一些示例中,操作408可以以与图3中的操作308相似的方式来实现。
73.图5图示了根据本公开的某些实施例的用于利用多协议数据访问来维持一致实体标记的另一示例处理流程500。在一些示例中,处理流程500的各方面可以由图1的服务器106或图12的计算环境1200来实现。
74.可以理解,处理流程500的操作程序是示例操作程序并且可以存在实现比所描述的更多或更少的操作程序的实施例,或者以与所描述的不同顺序实现所描述的操作程序的实施例。在一些示例中,处理流程500可以与图3的处理流程300、图4的处理流程400、图6的处理流程600、图7的处理流程700、图8的处理流程800、图9的处理流程900、图10的处理流程1000、图11的处理流程1100中的一个或多个方面结合来实现。
75.处理流程500从502开始并且移动到操作504。操作504描述从设备接收第一请求以执行用于从对象进行读取的第一对象存储操作,对象与文件存储系统的第一文件相对应。在一些示例中,操作504可以以与图3中的操作304相似的方式来实现。
76.操作506描述了响应于第一请求以及确定第一文件未与有效实体标记相关联,针对对象生成第一标识值。在一些示例中,操作506可以以与图3中的操作306相似的方式来实
现。
77.操作508描述了响应于接收第一请求,将对象和第一标识值发送到设备。在一些示例中,操作508可以以与图3中的操作308相似的方式来实现。
78.图6图示了根据本公开的某些实施例的在处理包括哈希值的put对象存储操作时,用于利用多协议数据访问来维持一致实体标记的示例处理流程600。在一些示例中,处理流程600的各方面可以由图1的服务器106或图12的计算环境1200来实现。
79.可以理解,处理流程600的操作程序是示例操作程序并且可以存在实现比所描述的更多或更少的操作程序的实施例或者以与所描述的不同顺序实现所描述的操作程序的实施例。在一些示例中,处理流程600可以与图3的处理流程300、图4的处理流程400、图5的处理流程500、图7的处理流程700、图8的处理流程800、图9的处理流程900、图10的处理流程1000、图11的处理流程1100中的一个或多个方面结合来实现。
80.处理流程600从602开始并且移动到604。604描述了接收执行put对象存储操作的请求。可以由图1的服务器106和客户端102a接收执行put对象存储操作的请求,客户端102a经由通信网络104传输请求。在604之后,处理流程600移动到606。
81.操作606描述了确定put对象存储操作具有对应的哈希值。在一些示例中,put对象存储操作作为http消息的部分被发送,并且对应的哈希值被包括在content-md5报头中。在这些示例中,操作606可以包括确定content-md5报头存在,以及它具有对应的值。在606之后,处理流程600移动到608。
82.操作608描述了存储哈希值。在一些示例中,图1中的实体标记感知文件系统驱动程序112可以将哈希值存储在它所存储的、与put对象操作的对象相对应的文件的扩展属性中。在608之后,处理流程600移动到610。
83.操作610描述了存储哈希值有效的指示。这可以包括图1的实体标记感知文件系统驱动程序112将md5_valid位设置为true,作为它所存储的、与put对象操作的对象相对应的文件的扩展属性。在610之后,处理流程600移动到612。
84.操作612描述了将对象存储为文件系统中的文件。这可以包括图1中的实体标记感知文件系统驱动程序112将对象的数据存储为文件系统存储114中的对象。在612之后,处理流程600移动到614,在614处处理流程600结束。
85.图7图示了根据本公开的某些实施例的在处理省略哈希值的put对象存储操作时,利用多协议数据访问来维持一致实体标记的示例处理流程700。在一些示例中,处理流程700的各方面可以由图1的服务器106或图12的计算环境1200实现。
86.可以理解,处理流程600的操作程序是示例操作程序并且可以存在实现比所描述的更多或更少的操作程序的实施例,或者以与所描述的不同的顺序实现所描述的操作程序的实施例。在一些示例中,处理流程600可以与图3的处理流程300、图4的处理流程400、图5的处理流程500、图7的处理流程700、图8的处理流程800、图9的处理流程900、图10的处理流程1000、图11的处理流程1100中的一个或多个方面结合来实现。
87.处理流程700从702开始并且移动到操作704。操作704描述了接收执行put对象存储操作的请求。在一些示例中,操作704可以以与图6中的操作604相似的方式来实现。在操作704之后,处理流程700移动到操作706。
88.操作706描述了确定put对象存储缺少对应的哈希值。在一些示例中,操作706可以
以与图6中的操作606相似的方式来实现,其中操作706包括确定存在content-md5报头或者content-md5报头没有指定值。在操作706之后,处理流程700移动到操作708。
89.操作708描述了存储不存在有效哈希值的指示。在一些示例中,操作708可以包括图1中的实体标记感知文件系统驱动程序112将与put对象操作的对象相对应的文件的md5_valid标志设置为false。在操作708之后,处理流程700移动到操作710。
90.操作710描述了将对象存储为文件系统中的文件。在一些示例中,操作710可以以与图6中的操作612相似的方式来实现。在操作710之后,处理流程700移动到712,在712处处理流程700结束。
91.图8图示了根据本公开的某些实施例的在处理get对象存储操作时,理用多协议数据访问来维持一致实体标记的示例处理流程。在一些示例中,处理流程800的各方面可以由图1的服务器106或图12的计算环境1200实现。
92.可以理解,处理流程800的操作程序是示例操作程序并且可以存在实现比所描述的更多或更少的操作程序的实施例,或者以与所描述的不同顺序实现所描述的操作程序的实施例。在一些示例中,处理流程800可以与图3的处理流程300、图4的处理流程400、图5的处理流程500、图6的处理流程600、图7的处理流程700、图9的处理流程900、图10的处理流程1000、图11的处理流程1100中的一个或多个方面结合来实现。
93.处理流程800从802开始并且移动到操作804。操作804描述了接收执行get对象存储操作的请求。在一些示例中,操作804可以以与图6中的操作604相似的方式来实现,但是使用get对象操作而不是put对象操作。在操作804之后,处理流程800移动到操作806。
94.操作806描述了确定针对get对象存储操作的哈希值是有效的。在一些示例中,操作806可以包括图1的实体标记感知文件系统驱动程序112确定与get对象操作的对象相对应的文件所对应的md5_valid标志为true。在操作806之后,处理流程800移动到操作808。
95.操作808描述了利用对象和哈希值来响应get对象存储操作。在一些示例中,这可以包括图1中的实体标记感知文件系统驱动程序112向客户端102a发送http响应,http响应包括对象并且其中在content-md5报头中指定哈希值。在操作808之后,处理流程800移动到810,在810处处理流程800结束。
96.图9图示了根据本公开的某些实施例的在处理get对象存储操作时,利用多协议数据访问来维持一致实体标记的另一示例处理流程900。在一些示例中,处理流程900的各方面可以由图1的服务器106或图12的计算环境1200来实现。
97.可以理解,处理流程900的操作程序是示例操作程序,并且可以存在实现比所描述的更多或更少的操作程序的实施例,或者以与所描述的不同顺序实现所描述的操作程序的实施例。在一些示例中,处理流程900可以与图3的处理流程300、图4的处理流程400、图5的处理流程500、图6的处理流程600、图7的处理流程700、图8的处理流程800、图10的处理流程1000、图11的处理流程1100中的一个或多个方面结合来实现。
98.处理流程900从902开始并且移动到操作904。操作904描述接收执行get对象存储操作的请求。在一些示例中,操作904可以以与图8中的操作804相似的方式来实现。在操作904之后,处理流程900移动到操作906。
99.操作906描述了确定针对get对象存储操作的哈希值是无效的。在一些示例中,操作806可以包括图1的实体标记感知文件系统驱动程序112确定与get对象操作的对象相对
应的文件所对应的md5_valid标记为false。在操作906之后,处理流程900移动到操作908。
100.操作908描述了针对对象创建新的标识值。在一些示例中,可以利用图10的处理流程1000来针对对象创建新的标识值。在操作908之后,处理流程900移动到操作910。
101.操作910描述了利用对象和新的标识值来响应get对象存储操作。在一些示例中,操作910可以以与图8中的操作808相似的方式来实现。在操作910之后,处理流程900移动到912,在912处流程900结束。
102.图10图示了根据本公开的某些实施例的在确定针对对象的新哈希值时,利用多协议数据访问来维持一致实体标记的示例处理流程1000。在一些示例中,处理流程1000的各方面可以由图1的服务器106或图12的计算环境1200实现。
103.可以理解,处理流程1000的操作程序是示例操作程序,并且可以存在实现比所描述的更多或更少的操作程序的实施例,或者以与所描述的不同的顺序实现所描述的操作程序的实施例。在一些示例中,处理流程1000可以与图3的处理流程300、图4的处理流程400、图5的处理流程500、图6的处理流程600、图7的处理流程700、图8的处理流程800、图9的处理流程900、图11的处理流程1100中的一个或多个方面结合来实现。
104.处理流程1000从1002开始并且移动到操作1004。操作1004描述了确定针对文件的逻辑索引节点值。在一些示例中,图1的文件存储系统114可以将文件存储在索引节点中(索引节点可以包括文件系统中的数据结构,数据结构包括一些文件数据的属性和磁盘块中的位置)。在这些示例中,索引节点可以通过索引节点号或值来标识,并且实体标记感知文件系统驱动程序112可以访问与对象相对应的文件的逻辑索引节点的值。在操作1004之后,处理流程1000移动到操作1006。
105.操作1006描述了确定针对文件的修改时间。修改时间(有时被称为mtime)可以被存储为图1的文件存储系统114中的文件的属性,并且由实体标记感知文件系统驱动程序112访问。在操作1006之后,处理流程1000移动到操作1008。
106.操作1008描述了将逻辑索引节点值和修改时间组合。在一些示例中,这些值中的每个值被存储为64位值,并且它们可以被联接以生成128位值。在操作1008之后,处理流程1000移动到1010,在1010处处理流程1000结束。
107.图11图示了根据本公开的某些实施例的在更新指示对象的哈希值是否有效的元数据时,利用多协议数据访问来维持一致实体标记的示例处理流程1100。在一些示例中,处理流程1100的各方面可以由图1的服务器106或图12的计算环境1200实现。
108.可以理解,处理流程1100的操作程序是示例操作程序并且可以存在实现比所描述的更多或更少的操作程序,或者以与所描述的不同的顺序实现所描述的操作程序。在一些示例中,处理流程1100可以与图3的处理流程300、图4的处理流程400、图5的处理流程500、图6的处理流程600、图7的处理流程700、图8的处理流程800、图9的处理流程900、图10的处理流程1000中的一个或多个方面结合来实现。
109.处理流程1100从1102开始并且移动到操作1104。操作1104描述了接收执行put对象存储操作的请求以及针对对象的哈希值。在一些示例中,操作1104可以以与图6中的操作604和606相似的方式来实现。在操作1104之后,处理流程1100移动到操作1106。
110.操作1106描述了存储针对对象的哈希值有效的指示。在一些示例中,操作1106可以以与图6中操作610相似的方式来实现。在操作1106之后,处理流程1100移动到操作1108。
111.操作1108描述了接收没有针对对象的哈希值的情况下执行第二put对象存储操作的请求,或对文件执行文件系统修改的请求。在一些示例中,操作1108可以以与图7中的操作704和706(针对put对象存储操作)相似的方式来实现。在其他示例中,图1的服务器106可以经由通信网络104接收来自客户端计算机102a的文件系统修改操作。在操作1108之后,处理流程1100移动到操作1110。
112.操作1110描述了存储针对对象的哈希值无效的指示。在一些示例中,操作1110可以以与图7中的操作708相似的方式来实现。在操作1110之后,处理流程1102移动到1112,在1112处处理流程1100结束。
113.示例操作环境
114.为了为本文所述的各种实施例提供附加上下文,图12和以下的讨论旨在提供可以在其中实现本文所述的实施例中的各种实施例的适当计算环境1200的简要整体描述。
115.例如,计算环境1200的各方面可以被用来实现图1中的客户端计算机102a、客户端计算机102b和/或服务器106的各方面。在一些示例中,计算环境1200可以实现图3至图11的处理流程的各方面,以促进保持对文件存储的对象访问与其他文件协议一致。
116.虽然上述实施例已在可以在一个或多个计算机上运行的计算机可执行指令的一般上下文中描述,但是本领域技术人员将认识到,实施例也可以与其他程序模块和/或作为硬件和软件的组合来实现。
117.通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构等。此外,本领域技术人员将理解,各种方法可以被用于其他计算机系统配置,包括单处理器或多处理器计算机系统、小型计算机、大型计算机、物联网(iot)设备、分布式计算系统以及个人计算机、手持计算设备、基于微处理器或可编程的消费电子产品等,其中每个均可以操作耦合到一个或多个相关联的设备。
118.本文中的实施例中所图示的实施例也可以在分布式计算环境中实践,其中某些任务由通过通信网络连接的远程处理设备来执行。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。
119.计算设备通常包括各种各样的介质,介质可以包括计算机可读存储介质、机器可读存储介质和/或通信介质,本文中使用的两个术语彼此不同。计算机可读存储介质或机器可读存储介质可以是计算机可以访问的任何可用存储介质并且包括易失性和非易失性介质、可移动和不可移动介质。作为示例但非限制,计算机可读存储介质或机器可读存储介质可以与存储信息的任何方法或技术(诸如计算机可读或机器可读指令、程序模块、结构化数据或非结构化数据)组合。
120.计算机可读存储介质可以包括但不限于:随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、闪存或其他存储器技术、光盘只读存储器(cd rom)、数字通用磁盘(dvd)、蓝光光盘(bd)或其他光盘存储装置、磁带、磁带存储装置或其他磁性存储设备、固态驱动装置或其他固态存储设备或者可用于存储所需信息的其他有形和/或非暂态介质。在该方面,本文中术语“有形”或“非暂态”在适用于存储装置、存储器或计算机可读介质时,应被理解为仅排除传播暂态信号本身作为修饰词,而不放弃对所有不仅仅传播暂态信号本身的标准存储、存储器或计算机可读介质的权利。
121.计算机可读存储介质可以由一个或多个本地或远程计算设备例如经由访问请求、
查询或其他数据检索协议来访问,以对介质所存储的信息进行各种操作。
122.通信介质通常体现计算机可读指令、数据结构、程序模块或诸如调制数据信号(例如,载波或其他传输机制)的数据信号中的其他结构化或非结构化数据,并且包括任何信息传递或传输介质。术语“调制数据信号”指代其一个或多个特性被设置或改变,从而将信息编码在一个或多个信号中的信号。例如但不限于,通信介质包括有线介质(诸如有线网络或直接有线连接)以及无线介质(诸如声波、射频、红外和其他无线介质)。
123.再次参考图12,用于实现本文所述方面的各种实施例的示例环境1200包括计算机1202,计算机1202包括处理单元1204、系统存储器1206和系统总线1208。系统总线1208将系统组件(包括但不限于系统存储器1206)耦合到处理单元1204。处理单元1204可以是各种商用处理器中的任一个。双微处理器和其他多处理器架构也可以用作处理单元1204。
124.系统总线1208可以是多种类型的总线结构中的任一个,总线结构可以使用各种商业上可用的总线架构进一步互连到存储器总线(具有或不具有存储器控制器)、外围总线和本地总线。系统存储器1206包括rom 1210和ram 1212。基本输入/输出系统(bios)可以被存储在诸如rom、可擦除可编程只读存储器(eprom)、eeprom的非易失性存储器中,其中bios包括诸如在启动期间帮助在计算机1202内的元件之间传输信息的基本例程。ram 1212还可以包括高速ram,诸如用于缓存数据的静态ram。
125.计算机1202还包括内部硬盘驱动装置(hdd)1214(例如,eide、sata)、一个或多个外部存储设备1216(例如,磁软盘驱动装置(fdd)1216、记忆棒或闪存驱动读卡器、存储卡读卡器等)以及光盘驱动装置1220(例如,可以从cd-rom磁盘、dvd、bd等进行读写)。虽然内部hdd 1214被图示为位于计算机1202内,但内部hdd 1214也可以被配置为在合适的机箱外部使用(未示出)。附加地,虽然没有在环境1200中示出,但是固态驱动装置(ssd)可以用作hdd 1214的附加或替换。hdd 1214、(多个)外部存储设备1216和光盘驱动装置1220可以分别通过hdd接口1224、外部存储接口1226和光学驱动接口1228而与系统总线1208连接。用于外部驱动实现方式的接口1224可以包括至少一种或两种通用串行总线(usb)和电气与电子工程师协会(ieee)1294接口技术。其他外部驱动连接技术在本文所述实施例的考虑范围内。
126.驱动装置及其相关联的计算机可读存储介质提供数据、数据结构、计算机可执行指令等的非易失性存储。对于计算机1202,驱动装置和存储介质适应以适当的数字格式存储任何数据。尽管上述对计算机可读存储介质的描述指代相应类型的存储设备,但是本领域技术人员应理解,计算机可读的其他类型的存储介质,无论是目前存在的还是未来开发的,也可以在示例操作环境中使用,而且,任何此类存储介质均可以包括用于执行本文所述方法的计算机可执行指令。
127.多个程序模块可以被存储在驱动装置和ram 1212中,包括操作系统1230、一个或多个应用程序1232、其他程序模块1234和程序数据1236。操作系统、应用程序、模块和/或数据的全部或部分也可以被缓存在ram 1212中。本文中描述的系统和方法可以利用各种商业上可用的操作系统或操作系统的组合来实现。
128.计算机1202可以可选地包括仿真技术。例如,管理程序(未示出)或其他中介可以仿真操作系统1230的硬件环境,并且所仿真的硬件可以可选地不同于图12所示的硬件。在这样的实施例中,操作系统1230可以包括计算机1202上托管的多个虚拟机中的一个虚拟机(vm)。此外,操作系统1230可以为应用程序1232提供运行时环境,诸如java运行时环境或
.net框架。运行时环境是一致执行环境,它允许应用程序1232在包括运行时环境的任何操作系统上运行。相似地,操作系统1230可以支持容器,而应用程序1232可以采用容器的形式,容器是轻量级的、独立的、可执行的软件包,包括例如代码、运行时间、系统工具、系统库和应用程序的设置。
129.此外,计算机1202可以启用安全模块,诸如可信处理模块(tpm)。例如,利用tpm,启动组件将哈希下次启动组件,并在加载下一个启动组件之前等待结果与安全值的匹配。该过程可以发生在计算机1202的代码执行堆栈的任何层中,例如以应用程序执行级别或操作系统(os)内核级别应用,从而在任何级别的代码执行处实现安全性。
130.用户可以通过一个或多个有线/无线输入设备向计算机1202输入命令和信息,输入设备例如是键盘1238、触摸屏1240和指点设备(诸如鼠标1242)。其他输入设备(未示出)可以包括麦克风、红外(ir)遥控器、射频(rf)遥控器或其他遥控器、操纵杆、虚拟现实控制器和/或虚拟现实耳机、游戏板、触控笔、图像输入设备(诸如(多个)相机)、手势传感器输入设备、视觉运动传感器输入设备、情感或面部检测设备、生物特征输入设备(例如指纹或虹膜扫描仪)等。这些和其他输入设备通常借助可与系统总线1208耦合的输入设备接口1244而连接到处理单元1204,但也可以通过其他接口连接,诸如并行端口、ieee 1394串行端口、游戏端口、usb端口、ir接口、游戏端口、usb端口、ir接口、接口等。
131.显示器1246或其他类型的显示设备也可以经由接口(诸如视频适配器1248)连接到系统总线1208。除了显示器1246,计算机通常还包括其他外围输出设备(未示出),诸如扬声器、打印机等。
132.计算机1202可以在联网环境中使用逻辑连接,经由到一个或多个远程计算机(诸如(多个)远程计算机1250)的有线和/或无线通信进行操作。(多个)远程计算机1250可以是工作站、服务器计算机、路由器、个人计算机、便携式计算机、基于微处理器的娱乐设备、对等设备或其他公共网络节点,通常包括与计算机1202有关的多个或所有描述的元件,但为了简洁起见,仅图示存储器/存储设备1252。所描述的逻辑连接包括到局域网(lan)1254和/或更大的网络(例如广域网(wan)1256)的有线/无线连接。这样的lan和wan联网环境在办公室和公司中很常见,并促进了企业范围的计算机网络,诸如内联网,所有这些网络可以连接到全球通信网络,例如互联网。
133.当在lan联网环境中使用时,计算机1202可以借助有线和/或无线通信网络接口或适配器1258连接到本地网络1254。适配器1258可以促进到lan 1254的有线或无线通信,lan 1254还可以包括设置在其上的无线接入点(ap)来以无线模式与适配器1258通信。
134.在wan联网环境中使用时,计算机1202可以包括调制解调器1260或者可以经由在wan 1256之上建立通信的其他方式(诸如通过互联网)连接到wan 1256上的通信服务器。调制解调器1260可以是内部的或外部的,也可以是有线或无线设备,其可以经由输入设备接口1244连接到系统总线1208。在联网环境中,相对于计算机1202或其部分描述的程序模块可以被存储在远程存储器/存储设备1252中。将理解,所示的网络连接是示例,并且可以使用其他方式在计算机之间建立通信链路。
135.当在lan或wan联网环境中使用时,计算机1202可以访问云存储系统或其他基于网络的存储系统(作为以上所述的外部存储设备1216的附加或替换)。一般而言,计算机1202和云存储系统之间的连接可以通过lan 1254或wan 1256建立,例如分别通过适配器1258或
调制解调器1260建立。在将计算机1202连接到相关联的云存储系统之后,外部存储接口1226可以通过适配器1258和/或调制解调器1260,像管理其他类型的外部存储一样管理云存储系统提供的存储。例如,外部存储接口1226可以被配置为提供对云存储源的访问,就像这些源在物理上连接到计算机1202一样。
136.计算机1202可操作为与任何无线设备或在无线通信中操作的实体进行通信,例如,打印机、扫描仪、台式计算机和/或便携式计算机、便携式数据助手、通信卫星、与无线可检测标记相关联的任何设备或位置(例如,报亭、报摊、货架等)和电话。这可以包括无线保真(wi-fi)和无线技术。因此,通信可以是与常规网络一样的预定义结构,也可以是至少两个设备之间的自组织通信。
137.结论
138.正如在主题说明书中使用的,术语“处理器”基本上可以指代任何计算处理单元或者包括但不限于包括单核处理器的设备;具有软件多线程执行能力的单处理器;多核处理器;具有软件多线程执行能力的多核处理器;利用硬件多线程技术的多核处理器;并行平台;以及在单个或多个机器中具有分布式共享存储器的并行平台。附加地,处理器可以指代集成电路、状态机、专用集成电路(asic)、数字信号处理器(dsp)、可编程门阵列(pga)(包括现场可编程门阵列(fpga))、可编程逻辑控制器(plc)、复杂可编程逻辑器件(cpld)、分离门或晶体管逻辑、分离硬件组件或者被设计用于执行本文所述功能的任何组合。处理器可以利用纳米级架构,诸如但不限于分子和量子点晶体管、开关和门,以优化空间使用或增强用户设备的性能。处理器也可以被实现为计算处理单元的组合。一个或多个处理器可以用于支持虚拟化计算环境。虚拟化计算环境可以支持表示计算机、服务器或其他计算设备的一个或多个虚拟机。在这样的虚拟化虚拟机中,诸如处理器和存储设备的组件可以被虚拟化或逻辑表示。在一个方面,当处理器执行用于执行“操作”的指令时,这可以包括处理器直接执行操作和/或促进、引导或与另一设备或组件协作来执行操作。
139.在主题说明书中,诸如“数据存储库”、“数据存储装置”、“数据库”、“高速缓存”的术语以及与组件的操作和功能有关的基本上任何其他信息存储组件均指代“存储器组件”,或者“存储器”中体现的实体或包括存储器的组件。将理解,本文所描述的存储器组件或计算机可读存储介质可以是易失性存储器或非易失性存储器,或者可以包括易失性和非易失性存储器。例如,非易失性存储器可以包括rom、可编程rom(prom)、eprom、eeprom或闪存。易失性存储器可以包括充当外部高速缓存存储器的ram。通过说明而非限制,ram可以有多种形式,诸如同步ram(sram)、动态ram(dram)、同步dram(sdram)、双数据速率sdram(ddr sdram)、增强型sdram(esdram)、同步链路dram(sldram)和直接rambus ram(drram)。附加地,本文中所公开的系统或方法的存储器组件旨在包括但不限于这些和任何其他合适类型的存储器。
140.本公开所图示的各方面可以在分布式计算环境中实践,其中某些任务由借助通信网络连接的远程处理设备来执行。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备中。
141.上述系统和过程可以体现在硬件内,硬件诸如是单个集成电路(ic)芯片、多个ic、asic等。此外,一些或所有处理框在每个处理中出现的顺序不应被视为限制。相反,应理解,一些处理框可以按照本文中可能没有全部明确图示的不同顺序来执行。
142.如在本技术中使用的,术语“组件”、“模块”、“系统”、“接口”、“集群”、“服务器”、“节点”等通常旨在指代计算机相关实体,即,硬件、硬件与软件的组合、软件或正在执行的软件、或与具有一个或多个特定功能的操作机器相关的实体。例如,组件可以是(但不限于)在处理器上运行的进程、处理器、对象、可执行文件、执行线程、(多个)计算机可执行指令、程序和/或计算机。例如,在控制器上运行的应用程序和控制器均可以是组件。一个或多个组件可以驻留在进程和/或执行线程内,并且组件可以位于一个计算机上,或者分布在两个或多于两个的计算机之间。作为另一示例,接口可以包括输入/输出(i/o)组件以及相关联的处理器、应用程序和/或api组件。
143.此外,各种实施例可以被实现为使用标准编程和/或工程技术生产用于控制计算机来实现所公开的主题的一个或多个方面的软件、固件、硬件或其任何组合的方法、设备或制品。制品可以涵盖从任何计算机可读设备或计算机可读存储/通信介质访问的计算机程序。例如,计算机可读存储介质可以包括但不限于磁存储设备(例如,硬盘、软盘、磁条等)、光盘(例如,cd、dvd等)、智能卡和闪存设备(例如,卡、磁棒、密钥驱动装置等)。当然,本领域技术人员将认识到可以在不脱离各种实施例的范围或精神的情况下,对该配置进行多种修改。
144.附加地,词语“示例”或“示例性”在本文中用于表示作为示例、实例或例示。在本文中被描述为“示例性”的任何方面或设计不一定被解释为优选或优于其他方面或设计。相反,使用词语“示例性”旨在以具体的方式呈现概念。在本技术中所使用的,术语“或者”旨在是包含性的“或者”,而不是排他性的“或者”。即,除非另有说明或从上下文中清楚,否则“x采用a或者b”是指任何自然包括的排列。即,如果x采用a;x采用b;或者x同时采用a和b,则“x采用a或b”满足上述任何情况。附加地,除非另有说明或从上下文明确指示为单一形式,否则在本技术和所附权利要求中使用的冠词“一”和“一个”一般被解释为“一个或多个”。
145.以上所描述的包括本说明书的示例。当然,为了描述当前实施例的目的,不可能描述每一种可以想象到的组件或方法的组合,但是本领域技术人员可以认识到,本说明书的许多进一步组合和排列是可能的。因此,本说明书旨在包括落入所附权利要求的精神和范围内的所有此类改变、修改和变化。此外,在术语“包含”在详细说明或权利要求中使用的情况下,该术语旨在以相似于“包括”的方式包括在内,因为“包括”在权利要求中作为过渡性词语使用时被解释。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1