CN117950575A - 基于对象跟踪和复制策略的对象访问 - Google Patents
基于对象跟踪和复制策略的对象访问 Download PDFInfo
- Publication number
- CN117950575A CN117950575A CN202310851602.7A CN202310851602A CN117950575A CN 117950575 A CN117950575 A CN 117950575A CN 202310851602 A CN202310851602 A CN 202310851602A CN 117950575 A CN117950575 A CN 117950575A
- Authority
- CN
- China
- Prior art keywords
- control interface
- store
- stores
- objects
- given
- 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.)
- Pending
Links
- 230000010076 replication Effects 0.000 title claims abstract description 111
- 230000004044 response Effects 0.000 claims abstract description 49
- 238000012217 deletion Methods 0.000 claims abstract description 22
- 230000037430 deletion Effects 0.000 claims abstract description 22
- 238000007792 addition Methods 0.000 claims abstract description 21
- 238000003860 storage Methods 0.000 claims description 154
- 238000000034 method Methods 0.000 claims description 18
- 230000001360 synchronised effect Effects 0.000 claims description 18
- 230000001052 transient effect Effects 0.000 claims description 14
- 230000002776 aggregation Effects 0.000 claims description 2
- 238000004220 aggregation Methods 0.000 claims description 2
- 238000001514 detection method Methods 0.000 claims description 2
- 230000003362 replicative effect Effects 0.000 claims description 2
- 230000008569 process Effects 0.000 description 17
- 238000004891 communication Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 8
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000002085 persistent effect Effects 0.000 description 3
- 235000008694 Humulus lupulus Nutrition 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000004931 aggregating effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/065—Replication mechanisms
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及基于对象跟踪和复制策略的对象访问。在一些示例中,一种系统在由所述系统存储的跟踪信息中跟踪多个对象存储装置中的对象添加和删除,所述多个对象存储装置与控制对所述多个对象存储装置中的所述对象的访问的相应控制接口相关联,所述跟踪信息标识存储相应对象的相应对象存储装置以及所述相应对象的复制策略,所述复制策略定义如何跨所述多个对象存储装置复制所述相应对象。所述系统从所述控制接口接收在所述多个对象存储装置中进行对象添加或删除的指示,并响应于接收到的指示在所述系统处更新所述跟踪信息。
Description
背景技术
存储系统用于为计算设备存储数据。在一些示例中,存储系统可由计算设备通过网络访问。在进一步示例中,可以通过网络访问复数个存储系统。一些存储系统可能位于不同的地理位置,而其他存储系统可能位于同一设施内。
附图说明
关于以下附图描述了本公开的一些实施方式。
图1是根据一些示例的布置的框图,所述布置包括对象访问重定向器和可由各种主机系统访问的对象存储装置。
图2A和图2B是根据一些示例的跟踪信息的框图。
图3是根据一些示例的索引过程的流程图。
图4是根据一些示例的对象访问过程的流程图。
图5是根据一些示例的从关闭的对象访问重定向器恢复的过程的流程图。
图6是根据一些示例的存储机器可读指令的存储介质的框图。
图7是根据一些示例的系统的框图。
图8是根据一些示例的过程的流程图。
在所有附图中,相同的附图标记指代相似但不一定相同的要素。附图不一定是按比例绘制的,并且一些部分的尺寸可以被放大以更清楚地图示所示的示例。此外,附图提供了与描述一致的示例和/或实施方式;然而,描述不限于附图中提供的示例和/或实施方式。
具体实施方式
在本公开中,除非上下文另外明确指示,否则使用术语“一个(a)”、“一种(an)”或“所述(the)”旨在同样包括复数形式。同样地,当在本公开中使用时,术语“包括(includes/including/comprises/comprising)”、“具有(have/having)”指明存在所述要素,但不排除存在或添加其他要素。
存储系统可以用于存储对象,其中,“对象”可以指任何单独可识别或可寻址的数据单元。例如,对象可以采用以下形式中的任何形式:文件、文件系统、数据块、图像、数据库、数据库的一部分、数据组块、数据blob、音频文件、视频文件、图像文件或任何其他数据单元。
在一些示例中,由存储系统存储的对象可以根据亚马逊网络服务(AWS)首次提供的简单存储服务(S3)标准。S3对象可以采用键值对的形式,其中,键包括指派给对象的命名以及其他相关元数据,而值包括正在存储的对象的内容。
尽管在一些示例中参考了S3对象,但应注意的是,在其他示例中,存储系统可以根据其他类型的对象访问协议来存储数据。
存储对象的存储系统可以被称为“对象存储装置”。存储系统(或对象存储装置)可以包括用于对存储在存储系统上的对象执行访问(读取或写入)的存储控制器。在一些情况下,存储系统还可以包括用于存储对象的存储介质。在其他示例中,存储介质可以与存储系统分离,但是可由存储系统的存储控制器访问。存储系统可以接收输入/输出(I/O)请求(读取请求或写入请求),并且作为响应,存储系统的存储控制器可以发出对应的命令以在对应的存储介质上读取或写入数据。
存储介质可以使用存储设备的集合(单个存储设备或复数个存储设备)来实施。存储设备可以使用以下各项中的任一项或某种组合来实施:基于磁盘的存储设备、固态驱动器或任何其他类型的存储设备。
在一些示例中,主机系统可以访问复数个对象存储装置。“主机系统”可以指能够读取和/或写入数据的任何电子设备。电子设备的示例包括以下各项中的任一项或某种组合:超级计算机、台式计算机、笔记本计算机、平板计算机、服务器计算机、存储控制器、通信节点、智能电话、游戏设备、车辆、车辆中的控制器、家用电器等。
主机系统可以发出I/O请求以访问在对象存储装置中的数据。由主机系统发出的I/O请求可以是读取对象存储装置中的数据的读取请求,或在对象存储装置中写入数据的写入请求。
在一些示例中,可以在一组对象存储装置之间实施数据冗余。一些对象存储装置可能位于远离其他对象存储装置的地理位置(例如,州或省的不同部分、国家的不同部分或世界的不同部分)。在其他情况下,一些对象存储装置可能彼此相对靠近,如在设施(例如,数据中心、云存储场、办公室环境等)内。通过将对象存储装置放置在地理上遥远的位置,可以通过允许从(多个)其他地理位置处的(多个)对象存储装置访问由第一地理位置处的对象存储装置存储的对象的副本来提供对第一地理位置处的对象存储装置的防中断保护。
数据冗余是通过将在一个对象存储装置处维护的对象复制到一个或多个其他对象存储装置来实现的。在对象存储装置之间复制对象可以基于同步复制或异步复制。在同步复制的情况下,对象到第一对象存储装置的写入会触发将对象的副本写入到一个或多个第二对象存储装置。在同步复制的情况下,直到对象到第一对象存储装置的写入完成并且对象的副本到(多个)第二对象存储装置的写入也完成,才认为对象到第一对象存储装置的写入完成。
注意,完成对象到对象存储装置的写入并不意味着对象必须被写入到对象存储装置的存储介质;在一些情况下,如果对象存储装置包括如写入缓存等非易失性缓存存储器,则在对象被写入到写入缓存的情况下可以认为写入完成。写入缓存中的对象可以在以后被写入到对象存储装置的存储介质。
在异步复制的情况下,对象到第一对象存储装置的写入会触发对象到一个或多个第二对象存储装置的复制,其中,对象到一个或多个第二对象存储装置的复制可以相对于对象到第一对象存储装置的写入异步地执行;换句话说,当写入在第一对象存储装置处完成但对象到一个或多个第二对象存储装置的复制尚未完成或甚至尚未开始时,可以认为写入完成。
根据复制策略,某些对象可能无法被复制到某些对象存储装置。例如,给定对象的复制策略可以指定给定对象到第一对象存储装置的写入将使得给定对象的副本被提供给第二对象存储装置。然而,第三对象存储装置可能不会接收到所述对象的副本。因此,如果主机系统试图从第三对象存储装置访问给定对象,则第三对象存储装置可能会返回未找到对象的错误。
如此处所使用的,“未找到对象的错误”可以指由对象存储装置返回的指示所请求的对象不存在或在对象存储装置处不可访问的任何指示。
作为另一示例,另外的对象可以与无复制策略相关联(即,不复制另外的对象)。因此,另外的对象可以被写入到对象存储装置之一,但不复制到其他对象存储装置。因此,主机系统试图从其他对象存储装置之一访问所述另外的对象将导致未找到对象的错误。
在进一步示例中,可以提供主动-主动复制,其中,主机系统可在任何主动对象存储装置处访问(例如,用于读取和写入)每个对象的复制品。主动-主动布置与主动-备用布置不同,在所述主动-备用布置中,除非主动对象存储装置变得不可用,否则主机系统可以从主动对象存储装置访问对象但无法从备用对象存储装置访问对象。当在一组对象存储装置之间执行数据复制时(如当在对象存储装置之间执行主动-主动复制或执行同步复制时),对象存储装置之一可能会关闭(或者对象存储装置之间的通信链路可能会关闭)。在这种情况下,为了保护数据一致性,试图访问其余对象存储装置的主机系统可能会被阻止,直到给定对象存储装置恢复并且对象在所述一组对象存储装置之间同步。在此期间,尝试访问其余对象存储装置的对象可能会导致未找到对象的错误。
对象存储装置“关闭”可以指对象存储装置处于对象存储装置对访问对象的请求无响应的状态。对象存储装置可能断电或处于睡眠状态,或者对象存储装置可能经历了故障(程序故障或硬件故障)从而阻止了对象存储装置的进一步操作。到对象存储装置的通信链路“关闭”可能是由与所述通信链路相关联的硬件故障或程序故障引起的。
如果主机系统响应于试图访问对象存储装置处的对象而接收到未找到对象的错误,则这可能导致主机系统停止操作或崩溃。这可能导致主机系统出现延迟或故障。
根据本公开的一些实施方式,对象访问重定向器(ORD)能够在存储于ORD的存储装置中的跟踪信息中跟踪向与相应控制接口相关联的多个对象存储装置进行的对象添加和从所述多个对象存储装置进行的对象删除。结合图2A讨论了ORD处的跟踪信息的示例。跟踪信息标识存储相应对象的相应对象存储装置以及相应对象的复制策略。跟踪信息不包含这些对象本身。因此,ORD是轻量级的,并且可以在各种平台(如交换机或其他类型的计算系统)中的任何平台上实施。ORD从控制接口接收向多个对象存储装置中的任何对象存储装置添加对象和从其中删除对象的指示,并且可以响应于接收到的指示更新跟踪信息。
由ORD存储的跟踪信息与瞬态条件下的对象相关联。当复制策略指定对象将从第一对象存储装置复制到一个或多个其他对象存储装置但根据复制策略将对象复制到一个或多个其他对象存储装置尚未完成时,对象被认为处于瞬态条件。注意,当向第一对象存储装置添加新对象时,复制策略可以指定将新对象复制到一个或多个其他对象存储装置。作为另一示例,当第一对象存储装置中的现有对象被更新时,复制策略可以指定将更新的对象复制到一个或多个其他对象存储装置。作为进一步示例,当第一对象存储装置中的现有对象被删除时,复制策略可以指定将对象的删除复制到一个或多个其他对象存储装置。因此,对象(或对象集合)的复制可以指复制新对象或更新的对象或复制对象的删除。
当根据复制策略的给定对象的复制完成时,ORD可以从ORD中移除给定对象的跟踪信息。在一些情况下,针对每个对象在ORD处维护的跟踪信息可以有几个元素。当给定对象的复制完成(被捕获)时,ORD可以选择从ORD中移除所有的跟踪信息,或者可替代地,ORD可以选择只移除跟踪信息的子集,同时保持给定对象的跟踪信息的其余部分。注意,跟踪信息可以与每个单独的对象或与对象的集合相关联。
虽然在一些示例中ORD处的跟踪信息是瞬态的,但在进一步示例中,ORD可以选择保留一些或所有跟踪信息。作为示例,所有对象存储装置之间的高级复制信息连同相关联对象的用户访问控制权限一起持久地存储在ORD中。
ORD可使用跟踪信息来处理从控制接口对控制接口在其相关联的控制接口的对象存储装置中未找到的对象的读取和写入访问。作为示例,与控制接口相关联的对象存储装置可以是由控制接口管理的本地对象存储装置。在一些示例中,存储在ORD中(例如,在持久性存储装置中)的跟踪信息的一部分可以进一步被缓存在缓存存储器中。缓存存储器中缓存的跟踪信息允许更快地访问对象,因为ORD可以比其他类型的存储装置更快地访问缓存存储器。
另外,当相关联的对象存储装置的控制接口接收到对象访问请求时,控制接口首先检查对象是否被本地存储在相关联的对象存储装置中,如果不是,则控制接口查询ORD。例如,当所请求对象可在对象存储装置处访问但尚未存储在该对象存储装置处时(例如,当对象的副本将被复制到对象存储装置但尚未到达对象存储装置时),ORD可以将控制接口重定向到与具有所请求对象的另一对象存储装置相关联的另一控制接口。
注意,实际数据(对象)不会通过ORD。ORD提供了控制接口之间的协调,如以将第一控制接口重定向到第二对象存储装置,以获得在第一对象存储装置中在本地未找到的对象。
在一些情况下,ORD可能会关闭。响应于检测到ORD关闭,对象存储装置的控制接口在本地处理来自主机系统的I/O请求。具体地,控制接口响应于读取给定对象的I/O读取请求而确定与控制接口相关联的对象存储装置中是否存在给定对象。如果是,则控制接口取得给定对象并向请求主机系统发送包括给定对象的I/O响应。如果给定对象不在对象存储装置中,则控制接口302向请求主机系统发送包括未找到对象的错误的I/O响应。
如此处所使用的,“控制接口”是指主机系统可访问以访问对象存储装置的任何类型的接口。控制接口可以是对象存储装置的存储控制器的一部分,并且在一些情况下可以是对象存储装置的存储控制器。可替代地,控制接口可以与对象存储装置的存储控制器分离。
在对象存储装置为S3对象存储装置的一些示例中,控制接口可以包括S3控制接口。在其他示例中,可以采用其他类型的控制接口协议。主机系统能够根据指定协议使用消息与控制接口进行交互,所述指定协议可以是标准化协议、开源协议或企业的专有协议。对象存储装置可以同时提供多于一个访问协议。
如果与第一对象存储装置相关联的第一控制接口接收到对象读取请求,则第一控制接口检查以确定第一对象存储装置中是否存在所请求的对象。通常,如果没有找到对象或者当对象或对应的一组对象组被阻止时,第一控制接口以未找到对象的错误来响应。在本公开的示例中,如果第一控制接口没有在相关联的对象存储装置中在本地找到对象,则第一控制接口可以向ORD发出询问以请求帮助找到所请求的对象。ORD可以(基于其跟踪信息)确定哪个对象存储装置(如果有的话)具有所请求的对象。如果ORD在第二对象存储装置中找到所请求的对象,则ORD可以向第一控制接口通知对象位置,使得第一控制接口可以重定向从与第二对象存储装置相关联的第二控制接口进行的远程读取。如果ORD确定复数个其他对象存储装置具有所请求的对象,则ORD可以决定使用哪个目标对象存储装置来取得所请求的对象。该决定基于各种标准中的任一种或某种组合,包括最不繁忙标准、或最接近请求者标准、或负载平衡标准等。
进一步地,ORD可以管理对象的复制策略,并且可以控制相应对象存储装置的对象复制。ORD是关于对象复制的知识的中心来源。作为示例,管理员可以向ORD指示新的或更新的复制策略,从而指定将复制对象、一组对象或对象存储装置。作为响应,ORD可以向相应对象存储装置的控制接口通知新的或更新的复制策略。在通知新的或更新的复制策略后,来自主机系统的对处于新的或更新的复制策略中的对象的任何后续请求可以甚至在受影响的对象的复制完成之前就被重定向到ORD,使得控制接口不必以未找到对象的错误来响应主机系统。
图1是包括多个对象存储装置102-A、102-B和102-C的示例布置的框图。尽管图1示出了包括3个对象存储装置的示例,但是在其他示例中,可以提供不同数量的对象存储装置。主机系统104-1、104-2、104-3和104-4可通过网络106来访问对象存储装置102-A、102-The和102-C。尽管图1示出了具有4个主机系统的示例,但是在其他示例中,可以提供不同数量的主机系统。
网络106的示例可以包括以下各项中的任一项或某种组合:局域网(LAN)、存储区域网(SAN)、广域网(WAN)、公共网络(如因特网)等。
每个主机系统能够向对象存储装置102-A、102-B和102-C中的一个或多个发出I/O请求。更具体地,每个主机系统内的实体能够发出I/O请求。主机系统中的实体的示例可以包括以下各项中的任一项或某种组合:程序(包括软件和固件的机器可读指令)、硬件设备、虚拟实体(如虚拟机(VM)或容器)等。
对象存储装置102-A、102-B和102-C中的每一个与相应控制接口108-A、108-B、104和108-C相关联,其中,每个控制接口可以被包括在对象存储装置中(例如,对象存储装置的存储控制器的一部分)或者在对象存储装置的外部。主机系统向相应控制接口发送I/O请求以在对应对象存储装置中访问对象。因此,例如,主机系统向控制接口108-A发送I/O请求以在对象存储装置102-A中访问对象,主机系统向控制接口108-B发送I/O请求以在对象存储装置102-B中访问对象,以此类推。
根据本公开的一些实施方式,提供了具有到相应控制接口108-A、108-B和108-C的通信链路112-A、112-B和112-C的ORD 110。ORD 110能够通过通信链路112-A、112-B和112-C与对应的控制接口108-A、108-E和108-C通信。
在根据图1的示例中,从对象存储装置102-A到对象存储装置102-B执行同步复制(114)(并且可能反之亦然)。从对象存储装置102-A到对象存储装置102-C执行异步复制(116)(并且可能反之亦然),并且从对象存储装置102-B到对象存储装置102-C执行异步复制(118)(并且可能反之亦然)。
在对象存储装置之间执行复制(114,116,118)所通过的通信链路被称为“复制链路”。
在图1的示例中,对象X、Y和Z存储在对象存储装置102-A中,对象X和Y存储在对象存储装置102-B中,并且对象X存储在对象存储装置102-C中。对象存储装置102-B中的对象X和Y可以是对象存储装置102-A中的对象X和Y的副本,所述副本根据同步复制114进行复制。对象存储装置102-C中的对象X可以是对象存储装置102-A中的对象X的副本,所述副本根据异步复制116进行复制。
尽管提到了在特定对象存储装置之间维持同步和异步复制,但是在其他示例中,可以在对象存储装置之间建立其他类型的复制策略。在一些情况下,对象存储装置可能与无复制策略相关联,其中,对象到对象存储装置的写入不被复制到其他对象存储装置。
总的来说,对象存储装置102-A、102-B和102-C形成一组对象存储装置120,其中,数据复制可以由所述组的成员来执行。
在一些示例中,通信链路112-A、112-B和112-C是与控制接口108-A至108-C之间的通过其发生数据复制(114,116,118)的复制链路分离的带外通信链路。
ORD 110可以使用计算机系统来实施,所述计算机系统可以包括交换机、计算机或复数个计算机。ORD 110包括对象跟踪和重定向引擎122,用于跟踪对象存储装置中的对象并在适当时重定向I/O访问请求。
如此处所使用的,“引擎”可以指一个或多个硬件处理电路,所述一个或多个硬件处理电路可以包括微处理器、多核微处理器的核、微控制器、可编程集成电路、可编程门阵列或其他硬件处理电路中的任一项或某种组合。可替代地,“引擎”可以指一个或多个硬件处理电路与可在一个或多个硬件处理电路上执行的机器可读指令(软件和/或固件)的组合。
注意,在一些示例中,ORD 110可以包括复数个ORD实例,如以在任何ORD实例出现故障的情况下提供冗余或者提供负载平衡。在进一步示例中,ORD 110可以在VM或容器中实施(或者ORD 110的复数个实例可以在复数个VM或容器中实施)。
ORD 110还包括存储装置124(例如,持久性存储装置)以存储瞬态条件下的对象(单独对象或对象集合)的跟踪信息126。存储装置124可以使用存储设备的集合(单个存储设备或复数个存储设备)来实施。存储设备的示例可以包括以下各项中的任一项或某种组合:基于磁盘的存储装置、固态驱动器或另一种类型的持久性存储装置。
跟踪信息126可以跟踪一组对象存储装置120中的哪个对象存储装置存储任何给定对象以及与给定对象相关联的复制策略。由ORD 110维护的跟踪信息126包括尚未根据一个或多个复制策略被复制到对象存储装置的瞬态条件下的对象的元数据。
由于跟踪信息126存储元数据(而不是对象本身),因此与对象存储装置102-A至102-C的大小相比,跟踪信息126的大小相对较小。跟踪信息126可以存储在对象存储装置102-A至102-C外部的存储装置124中,并且可以由控制接口108-A至108-C通过通信链路112-A、112-B和112-C快速访问。在一些示例中,存储装置124可以在存储设备的分布式布置中实施。
当主机系统向控制接口(108-A、108-B或108-C)发出I/O请求(读取请求或写入请求)时,控制接口检查以确定相关联的对象存储装置中是否存在所请求的对象。如果控制接口没有在相关联的对象存储装置中在本地找到对象,则控制接口可以向ORD 110发出询问以请求帮助找到所请求的对象。ORD 110可以(基于跟踪信息126)确定哪个(哪些)对象存储装置(如果有的话)具有所请求的对象,并且可以将控制接口重定向到(多个)对象存储装置之一。
当根据复制策略跨对象存储装置的对象复制已经完成时,ORD 110和控制接口108-A、108-B和108-C被认为是彼此同步的。然而,当(1)根据复制策略的对象的副本尚未传播到一个或多个目的地对象存储装置(例如,通过通信链路进行的通信很慢和/或有大量对象要复制)时,或者(2)当复制策略已经改变,从而导致一个或多个对象存储装置的改变或添加时(在这种情况下,在根据改变的复制策略完成对象的复制时涉及一定量的等待时间),在ORD 110处可能存在瞬态条件。例如,复制策略的改变可以涉及添加新的对象存储装置。ORD 110可以基于改变的复制策略来确定哪些对象应该被复制到新的对象存储装置。ORD 110可以更新应该被复制到新的对象存储装置的对象的跟踪信息。在ORD 110处的瞬态条件期间,当对象复制的运行进度落后时,无法满足对对象的I/O请求的控制接口将寻求如上所述的ORD 110的帮助,并且ORD 110可以基于瞬态条件下的对象的跟踪信息126将控制接口定向到另一控制接口。
对象跟踪和重定向引擎122进一步包括缓存123,其可以缓存存储在存储装置124中的跟踪信息126的一部分。缓存存储器123可以是对象跟踪和重定向引擎122的一部分,或者可由对象跟踪和重定向引擎122访问。缓存存储器123可以使用比存储装置124更快的存储器来实施。与存储装置126中的跟踪信息126相比,对象跟踪和重定向引擎122可以更快地访问缓存的跟踪信息。随着缓存存储器123占满,缓存的跟踪信息的一部分可以被清除到存储装置124。缓存的跟踪信息可由对象跟踪和重定向引擎122用来响应控制接口对控制接口在其相关联的对象存储装置中未找到的对象的询问。缓存的跟踪信息123允许更快地访问尚未完成复制的对象。
示例跟踪信息
下文结合图2A讨论了跟踪信息元素的示例。在其他示例中,跟踪信息可以具有与图2A中描绘的不同的形式。例如,可以为更大的对象集合(例如,整个对象存储装置或对象存储装置的某个其他部分)维护跟踪信息,而不是以单独对象的粒度来存储跟踪信息。
进一步参考图2A,对于给定对象(例如,对象X),在ORD 110处维护的跟踪信息126的条目202-1可以包括用于标识存储对象X的(多个)对象存储装置的(多个)对象存储标识符204以及对象X的复制信息206。对象存储标识符可以包括以下各项中的任一项或某种组合:网络地址(例如,因特网协议(IP)地址或媒体访问控制(MAC)地址等)、全球唯一标识符、统一资源定位符(URL)、命名或任何其他类型的标识符。
复制信息206可以指定对象X的复制策略,如复制是同步复制还是异步复制(或者甚至无复制),并且可以标识复制策略中涉及的对象存储装置。
在一些示例中,跟踪信息126还可以维护每个对象的版本信息以跟踪对象的不同版本。对象X的条目202-1包括对象X的版本信息208。
因为对象是WORM(一次写入,多次读取),所以当对象被更新时,存在对象的较旧版本(更新之前)和对象的较新版本(更新之后)。因为对象被多次更新,所以可以有对应数量的不同版本。可以维护支持对象版本控制的主机系统104-1至104-4中的程序的对象的版本信息。有些程序可能不支持对象版本控制,在这种情况下,对象的更新会产生新的对象。如果主机系统104-1至104-4中的程序不支持版本信息,则跟踪信息126可以或可以不向主机系统展示对象的版本信息。
当控制接口108-A至108-C添加或删除对象时,控制接口108-A至108-C向ORD 110发送对象添加或删除指示。响应于对象添加或删除指示,对象跟踪和重定向引擎122更新跟踪信息126。对于对象添加,对象跟踪和重定向引擎122可以将所添加对象的元数据添加到跟踪信息126。对于对象删除,对象跟踪和重定向引擎122可以从跟踪信息126中移除已删除对象的元数据。
另外,响应于给定对象的对象删除指示,对象跟踪和重定向引擎122可以在跟踪信息126中查询给定对象的元数据,并且可以基于给定对象的复制信息来识别哪个(哪些)其他对象存储装置包含给定对象的副本。对象跟踪和重定向引擎122可以向包含给定对象的副本的(多个)其他对象存储装置的每个控制接口发送给定对象的对象删除指示,以使得删除(多个)其他对象存储装置处的给定对象的副本。
在主机系统104-1至104-4中的程序支持对象版本控制的示例中,控制接口108-A至108-C还可以向ORD 110发送对象更新指示。响应于所述对象更新指示,对象跟踪和重定向引擎122可以为每个更新的对象添加版本信息。
在一些示例中,跟踪信息126还可以保持跟踪与对象相关联的桶(bucket)。桶是可以包括一个对象或复数个对象的对象集的逻辑表示。当主机系统正在写入到桶时,可以在正在写入桶中的(多个)对象上放置锁,以防止另一主机系统在(多个)对象在桶中更新时访问所述对象。在其他示例中,不使用这样的桶锁。在使用桶的示例中,对象X的条目202-1包含桶信息210,用于标识其中包含对象X的桶。在一些示例中,桶是S3C桶,并且桶信息210可以包括桶的命名。
进一步地,在支持桶的示例中,桶可以由主机系统添加到对象存储装置或从对象存储装置中删除。在这样的示例中,跟踪信息126可以类似地由ORD 110响应于桶的添加或删除而更新。更一般地,本文讨论的与对象相关的各种操作也可以应用于桶。
由于与对象存储装置102-A至102-C的大小相比,跟踪信息126的大小相对较小,因为它包含基本的对象位置和对象存储装置彼此之间的关系,因此跟踪信息126的更新是相对轻量级的。
还应注意,在两种情况下查询ORD 110:1)当执行索引时(下文结合图3进一步讨论);或者2)当在控制接口的对象存储装置中未找到对象时(例如,当ORD 110处于上述瞬态条件时)。
在一些示例中,跟踪信息126还可以保持跟踪与相应对象相关联的访问成本。在图2A中,对象X的条目202-1包含访问成本信息212。对象的访问成本可以基于以下因素中的任一个或某种组合来计算:访问对象时的最后已知网络等待时间、包含对象的对象存储装置的最后已知访问等待时间、与用于实施对象存储装置的(多个)存储设备的类型相关联的访问速度、到对象存储装置的通信链路的繁忙程度、或任何其他因素。在对象被复制的示例中,还维护对象的每个副本的访问成本信息。控制接口可以访问跟踪信息126以确定给定对象(以及给定对象的任何副本)的访问成本。基于访问成本,控制接口可以决定从哪里获得给定对象以满足主机系统对给定对象的请求。
尽管在图2A中描绘了对象的各种元数据的特定示例,但是在其他示例中,可替代的或附加的元数据可以被包括在跟踪信息126中。其他元数据可以包括对象是否被压缩的指示、对象存储装置中对象的保护级别、关于对象的分析信息等。
其他对象(包括对象N)的类似元数据可以在跟踪信息126的其他条目(包括条目202-N)中维护。
图2B示出了可以在控制接口(例如,108-A、108-B或108-C)处维护的跟踪信息210的示例。跟踪信息210包含与图2A的跟踪信息126类似的相应对象A至E的条目212-1至212-M(每个条目包括对象存储ID 214、复制信息216、版本信息218、桶信息220),不同之处在于控制接口处的跟踪信息210不包括访问成本信息并且对象存储ID 214标识与控制接口相关联的对象存储装置。响应于对对象的I/O请求,控制接口使用跟踪信息210来确定所请求的对象是否在相关联的对象存储装置中。
索引
图3示出了由主机系统300(其可以是图1的主机系统104-1至104-4中的任一个)中的索引器304发起的索引操作的示例。索引操作是为了识别存储在对象存储装置中的对象,以在对象存储装置中建立对象列表。索引器304向索引器304期望为其建立对象列表的对象存储装置的控制接口302发送(在306处)索引请求。控制接口302将索引请求重定向(在308处)到ORD 110。由ORD 110维护的跟踪信息126可以识别瞬态条件下的对象,控制接口302可能不知道所述对象应该已经被复制到与控制接口302相关联的对象存储装置中。在没有首先查询ORD 110的情况下,控制接口302可能无法提供应该由与控制接口302相关联的对象存储装置存储的完整对象列表。响应于索引请求(在308处),ORD 110中的对象跟踪和重定向引擎122能够创建应该存储在对象存储装置中的瞬态条件下的对象的列表。ORD 110向控制接口302发送(在310处)对象列表,所述对象列表标识通过对控制接口302的索引请求标识的瞬态条件存储中的对象。控制接口302创建完整对象列表(包括对象存储装置处的对象以及由ORD 110识别的瞬态条件下的对象)并将对象列表发送(在312处)到主机系统300。除了对象的标识符之外,对象列表还可以包括与对象相关的其他信息,如对象的命名、对象的大小、对象的修正、对象的访问权限等。对象列表由主机系统300存储,以使得主机系统300知道对象存储在哪里。
对象复制
在一些情况下,如在异步复制的情况下,对象存储装置之间的对象复制可以作为后台进程执行。在一些情况下,对象的复制可以相对于对象写入到对象存储装置的顺序无序地发生。例如,主机系统可以将对象1、2、3…30添加到第一对象存储装置,并且对象与异步复制策略相关联以将对象复制到第二对象存储装置。对象的复制可以在后台进行。在一些情况下,如当主机系统试图访问第二对象存储装置处的对象12但是第二对象存储装置没有对象12的副本时,给定对象(例如,对象12)可以被无序地(以不同于1、2、3…30的顺序)复制。在这种情况下,对象12的副本可以被传送到第二对象存储装置的控制接口以满足针对对象12的请求,这可能在所有对象1至11被复制之前发生。一旦对象12的副本被传送到第二对象存储装置的控制接口并且被存储在第二对象存储装置中,ORD 110就可以向第一对象存储装置的控制接口通知对象12的复制已经完成,使得在对象1至11被复制到第二对象存储装置之后,第一对象存储装置的控制接口不必再次复制对象12。例如,ORD 110可以向第一对象存储装置的控制接口指示控制接口不符合关于对象1、2、3…30的复制,并且可以识别出哪些对象缺失(例如,对象1至11)。
在一些情况下,给定对象的复制策略可以被修改,如被用户或另一实体(程序或机器)修改。对复制策略的修改可以使得在给定对象的副本从对象存储装置Q中移除的同时给定对象的副本被添加到对象存储装置P。对复制策略的修改可以因各种原因中的任何原因而执行,如为了将给定对象的副本移动到其中主机系统更频繁访问所述副本的对象存储装置、为了将给定对象的副本移动到成本更低或具有更高访问速度或负担更小的对象存储装置、为了将给定对象的副本移动到具有目标保留策略的对象存储装置,等等。作为对给定对象的复制策略的修改的结果,用户或其他实体可以通知ORD 110,其可以相应地更新跟踪信息126。
对象访问
图4示出了主机系统300中的程序402向控制接口302发送(在404处)I/O请求(例如,读取请求或写入请求)以在与控制接口302相关联的本地对象存储装置中访问对象Z的示例。如果与控制接口302相关联的本地对象存储装置是对象存储装置102-C,如由于对象Z到对象存储装置102-C的复制尚未完成,则对象Z将不在对象存储装置102-C中(如图1所描绘的)。如果对象Z在本地对象存储装置中,如所确定的(在406处),则控制接口302将对象Z发送(在408处)到主机系统300。如果对象Z不在本地对象存储装置中,在没有ORD 110的情况下,则控制接口302可以向主机系统300返回未找到对象的错误。然而,根据本公开的一些示例,除非控制接口首先查询ORD 110以检查任何其他对象存储装置中是否存在所请求的对象,否则不允许控制接口对任何I/O请求做出未找到对象的错误的响应。
响应于(如基于图2B的跟踪信息210)检测到对象Z不在本地对象存储装置中,控制接口302向ORD 110发送(在410处)对对象Z的请求。ORD 110中的对象跟踪和重定向引擎122通过向控制接口302发送(在412处)重定向指示来响应对对象Z的请求。重定向指示可以采用消息、信息元素或任何其他指示符的形式。重定向指示可以标识控制接口302要将对对象Z的I/O请求重定向到的目标对象存储装置(例如,对象存储装置102-A)。对象跟踪和重定向引擎122可以基于跟踪信息126来确定哪个对象存储装置存储对象Z。
响应于重定向指示,控制接口302向与重定向指示中标识的目标对象存储装置相关联的目标控制接口发送(在414处)对对象Z的重定向的I/O请求。目标控制接口从相关联的对象存储装置中取得对象Z,并且(1)将对象Z发送到控制接口302,所述控制接口将对象Z返回给主机系统300,或者(2)将对象Z直接发送到主机系统300。
为了支持上述情况(2),主机系统300(或主机系统300中的程序402)被配置成支持与复数个对象存储装置的交互。
为了支持上述情况(1),控制接口302从目标对象存储装置执行对对象Z的代理读取。在这种情况下,控制接口302可以模拟主机访问(即,对对象Z的重定向的I/O请求对目标控制接口来说似乎来自主机系统)。
在一些示例中,假设复制策略指定本地对象存储装置要存储对象Z的副本,控制接口302可以将从目标对象存储装置取得的对象Z的副本存储在与控制接口302相关联的本地对象存储装置中。在本地存储对象Z的副本之后,控制接口302可以通知ORD 110在与控制接口302相关联的本地对象存储装置处复制对象Z,并且ORD 110可以相应地更新跟踪信息126。根据复制策略,对象Z的副本尚未在本地对象存储装置中的原因是对象Z的数据复制可能已经落后,这是由于繁重的工作负载或复制链路关闭造成的。在为主机系统300取得对象Z时,将对象Z的副本存储在本地对象存储装置中是对象Z的机会性无序复制(从而导致无序复制,如以上进一步讨论的)。
在其他示例中,复制策略不指定本地对象存储装置要存储对象Z的副本。可替代地,对象Z可能不具有复制策略。在这样的示例中,对象Z的副本可以被替代地存储在控制接口302的本地缓存存储器中,而不是将对象Z的副本存储在本地对象存储装置中并向ORD110通知这样的复制。这可以允许将来响应于主机系统对对象Z的I/O请求更快地访问对象Z。
可替代地,如响应于检测到在控制接口302处已经接收到针对对象Z的超过某个阈值数量的I/O请求,可以更新复制策略以将对象Z的副本移动到本地对象存储装置。改变复制策略以将对象Z的副本放置在本地数据存储装置处可以减少访问对象Z时的读取等待时间。
如果ORD 110代替重定向指示用所请求的对象不在一组对象存储装置120中的任何对象存储装置中的指示来响应,则控制接口302可以用未找到对象的错误来响应主机系统300。
在一些示例中,响应于控制接口302针对对象Z(410)的请求,对象跟踪和重定向引擎122可以根据跟踪信息126确定复数个对象存储装置包含对象Z。在这样的示例中,对象跟踪和重定向引擎122可以根据某个标准来选择复数个对象存储装置之一,所述标准可以包括接近度和/或访问成本。例如,对象跟踪和重定向引擎122可以比较复数个对象存储装置与控制接口302的接近度,其中,“接近度”可以指地理接近度(例如,物理距离越小越好)、网络跳(hop)数(例如,网络跳数越少越好)等。所选择的对象存储装置可以是最接近控制接口302的对象存储装置。可替代地或另外地,对象跟踪和重定向引擎122可以比较与从复数个对象存储装置中访问对象Z相关联的访问成本;例如,所选择的对象存储装置可以是与较低访问成本相关联的对象存储装置。
假设所有复制链路(114、116和118)都是可操作的并且ORD 110是可操作的,则图1的主机系统104-1至104-4中的任一个都可以直接或间接通过由ORD 110进行的重定向来访问对象X、Y和Z中的任一个。
例如,主机系统104-1可以通过向控制接口108-A发送I/O请求来直接从对象存储装置102-A访问对象X、Y和Z。主机系统104-2可以通过向控制接口108-B发送I/O请求来直接从对象存储装置102-B访问对象X和Y。主机系统104-2可以通过向控制接口108-B发送对对象Z的I/O请求来间接访问对象Z,所述控制接口将查询ORD 110,此时,ORD 110将重定向控制接口108-B以从对象存储装置102-A访问对象Z。
示例故障或例外情况
图5是响应于ORD 110关闭而执行的过程的流程图。控制接口302检测到(在502处)ORD 110关闭。例如,可以使用ORD 110可以周期性地向每个控制接口发送心跳消息的心跳机制。未能接收到心跳消息(或某个指定数量的心跳消息)是向控制接口指示ORD 110关闭。
响应于检测到ORD 110关闭,控制接口302像控制接口302通常会做的那样处理来自主机系统的I/O请求。具体地,控制接口302响应于读取给定对象的I/O读取请求(在504处接收)而确定(在506处)与控制接口302相关联的对象存储装置中是否存在给定对象。如果是,则控制接口302取得给定对象并向请求主机系统发送(在508处)包括给定对象的I/O响应。如果给定对象不在对象存储装置中,则控制接口302向请求主机系统发送(在508处)包括未找到对象的错误的I/O响应。
另外,响应于接收(在510处)修改数据的I/O请求(例如,添加对象的I/O请求或删除对象的I/O请求),控制接口302将修改数据的I/O请求的信息记录(在512处)到重放日志中,所述重放日志是包含添加到与控制接口302相关联的对象存储装置或从其中删除的对象的信息的数据结构(例如,存储在控制接口302的存储器中)。
在随后的时间,控制接口302检测到(在514处)ORD 110是可操作的。作为响应,控制接口302将重放日志中的信息发送(在516处)到ORD 110。ORD 110可以合并来自不同控制接口的重放日志中的信息,并且可以基于所合并的信息来更新(在518处)跟踪信息126。
在不同的示例中,对象存储装置之间的一些或所有复制链路(例如,114、116和118)可能关闭。如果在(多个)复制链路关闭之前成功复制了所有对象,则控制接口可以通过基于来自ORD 110的重定向直接或间接取得对象来处理I/O请求。
然而,如果在(多个)复制链路关闭之前没有根据复制策略成功复制特定对象,则控制接口可以向ORD 110发送复制失败的指示,所述ORD可以在跟踪信息126中记录特定对象的复制尚未发生。当重定向I/O请求时,ORD 110可以考虑特定对象尚未根据复制策略进行复制的事实。
在一些情况下,控制接口可以接收I/O请求,以将不属于对象存储装置的对象添加到所述对象存储装置。这是例外情况的示例。作为示例,图1的控制接口108-C可以接收将对象Z添加到对象存储装置102-C的I/O请求。然而,一组对象存储装置120的配置可以指定将对象X、Y、Z存储在对象存储装置102-A中,将对象X和Y存储在对象存储装置102-B中,并且将对象X存储在对象存储装置102-C中。因此,根据该配置,对象Z不属于对象存储装置102-C。
响应于将对象Z添加到对象存储装置102-C的I/O请求,可以执行几个可能的动作。第一动作可以是由控制接口108-C拒绝I/O请求,使得对象Z不存储在对象存储装置102-C中。第二动作可以是由控制接口108-C接受I/O请求,以将对象Z存储在对象存储装置102-C中。在后一种情况下,控制接口108-C向ORD 110发送对象Z的添加指示,所述ORD更新跟踪信息126以反映对象存储装置102-C中也存在对象Z的副本。第三动作可以是控制接口108-C向ORD 110转发I/O请求,所述ORD然后可以重定向到将对象Z添加到适当的对象存储装置(例如,102-A)。
在另一示例中,当ORD 110是可操作的但是一些或所有复制链路(114、116、118)关闭时,主机系统可以发出添加对象的新版本的I/O请求。响应于添加对象的新版本的I/O请求,ORD 110更新跟踪信息126。然而,由于一些或所有复制链路关闭,对象的新版本的副本可能无法被成功复制。ORD 110可以保持跟踪这种情况,并且可以将访问对象的I/O请求重定向到具有最新版本的对象存储装置。在一些示例中,响应于添加对象的新版本的I/O请求,ORD 110可以向适当的控制接口传播删除对象的较旧版本的指示。当所有复制链路都变得可操作时,复制可以继续,并且ORD 110可以更新跟踪信息126以记录复制。
在进一步示例中,当ORD 110关闭并且所有复制链路(114、116、118)都关闭时,主机系统可以发出添加对象的新版本的I/O请求。在这种情况下,每个控制接口可以正常地处理I/O请求,从而在对象在相关联的对象存储装置中时从其相关联的对象存储装置返回对象,并且在所请求的对象不在相关联的对象存储装置中时返回未找到对象的错误(注意,在这种情况下,ORD 110关闭并且无法重定向)。
如果主机系统中的程序不支持对象版本控制,则所述程序有可能向存储对象的较旧版本的对象存储装置发送请求(即,另一对象存储装置存储对象的较新版本,但是因为复制链路关闭,所有没有发生复制,并且因为ORD 110关闭,所以ORD 110无法重定向到对象的最新版本)。在这种情况下,当接收到对象的较旧版本时,程序可以执行检查以确定对象是否是最新版本。例如,程序可以检查对象的大小或计算对象的校验和;如果大小或校验和分别与预期大小或预期校验和不匹配,则程序可以拒绝对象的较旧版本。预期大小或预期校验和可能已被传送到程序,如从添加了对象的较新版本的另一程序传送。
在一些示例中,ORD 110可以扮演数据复制仲裁见证的角色,其是监测在主动-主动布置中采用同步复制的对象存储装置的实体。在主动-主动布置中,每个执行同步复制的对象存储装置都被认为是“主动的”,即,主机系统可以访问任何主动对象存储装置中的数据。主动-主动布置与主动-备用布置不同,在所述主动-备用布置中,除非主动对象存储装置变得不可用,否则主机系统可以从主动对象存储装置访问对象但无法从备用对象存储装置访问对象。
在示例中,对象存储装置P和对象存储装置Q处于主动-主动布置中,在所述主动-主动布置中,从P到Q发生同步复制。如果对象的同步复制是从P到Q,则在主动-主动布置中,对象存储装置P是主要对象存储装置,而对象存储装置Q是次要对象存储装置。在这样的布置下,对象存储装置P与Q之间发生同步主动-主动复制。
如果ORD 110检测到对象存储装置P与对象存储装置Q之间的复制链路关闭(其中,对象存储装置P和Q是主动-主动对象存储装置,并且同步复制是从P到Q),使得对象的复制没有被执行,则ORD 110可以将在对象存储装置Q处接收到的对象的主机访问重定向到对象存储装置P。
此外,如果ORD 110观察到对给定桶的对象的访问被过于频繁地重定向(例如,将对给定桶的对象的超过50%或某个其他阈值量的访问从Q重定向到P),则ORD 110可以将给定桶从P故障转移到Q,使得对象存储装置Q成为给定桶的主要对象存储装置,而P成为主动-主动布置中的次要对象存储装置。这可以减少重定向的次数,改善访问等待时间,并减少网络带宽的使用。
全局命名空间
命名空间包括用于标识和指代对象的一组命名。在命名空间内,每个对象都有唯一的命名,使得对象可以被标识并与由所述命名空间标识的另一对象区分开来。每个相应对象存储装置(例如,图1中的102-A、102-B、102-C)都具有其相应的命名空间,包括相应对象存储装置中的相应对象的命名。
根据本公开的一些实施方式,ORD 110可以聚合复数个对象存储装置的对象存储命名空间,以产生具有复数个对象存储装置的对象命名的全局命名空间。对象存储命名空间由相应控制接口108-A、108-B和108-C提供。全局命名空间由ORD 110提供,而不合并对象存储命名空间。换句话说,ORD 110可以从对象存储命名空间收集对象的命名以将其包括在全局命名空间中,但是对象存储命名空间本身保持彼此分离(即,它们不合并)。当两个命名空间合并时,每个命名空间都将成为合并命名空间的永久贡献者。通过聚合对象存储命名空间而不将其合并,ORD 110可以动态地将对象存储命名空间的命名添加到全局命名空间或者从全局命名空间中移除对象存储命名空间的命名;例如,给定对象存储命名空间的命名可以在相对较短的时间段内被添加到全局命名空间。如果要从一组对象存储装置(例如,图1中的120)中移除相应对象存储装置,则可以从全局命名空间中移除对象存储命名空间的命名。
进一步的示例实施方式
图6是存储机器可读指令的非暂态机器可读或计算机可读存储介质600的框图,所述机器可读指令在执行时使系统执行各种任务。例如,系统可以包括ORD 110。
机器可读指令包括对象添加/删除跟踪指令602,用于在由系统存储的跟踪信息中跟踪多个对象存储装置中的对象添加和删除,所述多个对象存储装置与控制对所述多个对象存储装置中的对象的访问的相应控制接口相关联,所述跟踪信息标识存储相应对象的相应对象存储装置以及所述相应对象的复制策略,所述复制策略定义如何跨所述多个对象存储装置复制所述相应对象。在一些示例中,跟踪信息可以包括附加元数据,如对象的版本信息、包含对象的桶的桶信息、以及访问成本信息。
机器可读指令包括添加/删除指示接收指令604,用于从控制接口接收在多个对象存储装置中进行对象添加或删除的指示。
机器可读指令包括跟踪信息更新指令606,用于响应于接收到的指示在系统处更新跟踪信息。
机器可读指令包括对象请求接收指令608,用于在系统处从控制接口中的第一控制接口接收对给定对象的请求,如果给定对象在由第一控制接口控制的第一对象存储装置中,则第一控制接口将在所述第一对象存储装置处访问所述给定对象。
机器可读指令包括对象存在指示指令610,用于响应于所述请求从系统向第一控制接口提供与给定对象存在于所述多个对象存储装置中的任一个中相关的指示,与给定对象的存在相关的所述指示基于更新的跟踪信息。在一些示例中,与给定对象的存在相关的指示包括用于将第一控制接口重定向到第二控制接口以在第二对象存储装置处访问给定对象的重定向指示(例如,在图4中的408处发送)。在进一步示例中,从系统到第一控制接口的与给定对象的存在相关的指示包括给定对象未存储在所述多个对象存储装置中的任一个处的指示。
在一些示例中,给定对象的复制策略指定将给定对象从第二对象存储装置复制到第一对象存储装置,其中,由于第一对象存储装置与第二对象存储装置之间的复制链路关闭,给定对象尚未被复制到第一对象存储装置,因此重定向指示使得在第二对象存储装置处访问给定对象。
在一些示例中,响应于基于更新的跟踪信息确定给定对象的复制策略指定在所述多个对象存储装置中的复数个对象存储装置处复制给定对象,机器可读指令基于某个标准来识别复数个对象存储装置中的选定对象存储装置,并且提供用于将第一控制接口重定向到控制对选定对象存储装置的访问的第二控制接口的重定向指示。
在一些示例中,所述标准基于复数个对象存储装置中的每一个与第一控制接口的接近度或访问复数个对象存储装置中的每一个的等待时间。
在一些示例中,在系统从不可用状况(例如,系统关闭)恢复之后,机器可读指令从控制接口中的每个相应控制接口接收在系统处于不可用状况时由相应控制接口维护的重放日志的内容,所述重放日志指示在由相应控制接口控制的对应对象存储装置处添加或删除的对象。
在一些示例中,机器可读指令从所述控制接口中的控制接口接收对给定对象存储装置中的索引对象的请求,并且响应于所述对索引对象的请求而提供给定对象存储装置中的对象的信息。
在一些示例中,当对象存储装置之间的一个或多个复制链路关闭时,机器可读指令在系统处从给定控制接口接收写入给定对象的新版本的指示,并且响应于从另外的控制接口访问所述给定对象的请求而将所述另外的控制接口定向到所述给定对象的新版本。
在一些示例中,机器可读指令向能够通过相应控制接口访问多个对象存储装置的主机系统呈现全局命名空间,所述全局命名空间包括所述多个对象存储装置中的对象的信息。
在一些示例中,全局命名空间包括由相应控制接口维护的对象存储命名空间的聚合,其中,所述对象存储命名空间中的任何对象存储命名空间可以动态地加入所述全局命名空间或从所述全局命名空间移除。
在一些示例中,从第二对象存储装置向第一对象存储装置提供同步主动-主动复制,使得所述第二对象存储装置是主动-主动布置中的主要对象存储装置,而所述第一对象存储装置是所述主动-主动布置中的次要对象存储装置。机器可读指令检测到对第一控制接口处的对象的大于指定阈值量的访问被重定向到用于第二对象存储装置的第二控制接口,并且响应于所述检测而执行故障转移以将第一对象存储装置指定为主动-主动布置中的主要对象存储装置,并将第二对象存储装置指定为主动-主动布置中的次要对象存储装置。检测到对对象的大于指定阈值量的访问被重定向可以基于检测到对给定桶的对象的访问被过于频繁地重定向(例如,将对给定桶的对象的超过50%或某个其他阈值量的访问从Q重定向到P)。
图7是根据一些示例的控制器700的框图。例如,控制器700可以实施控制接口。控制器700包括硬件处理器702(或复数个硬件处理器)。硬件处理器可以包括微处理器、多核微处理器的核、微控制器、可编程集成电路、可编程门阵列、或另一硬件处理电路。
控制器700进一步包括存储介质704,所述存储介质存储可在硬件处理器702上执行以执行各种任务的机器可读指令。可在硬件处理器上执行的机器可读指令可以指代可在单个硬件处理器上执行的指令或可在复数个硬件处理器上执行的指令。
存储介质704中的机器可读指令包括I/O请求接收指令706,用于从主机系统接收访问第一对象存储装置中的对象的I/O请求。
存储介质704中的机器可读指令包括对象存在确定指令708,用于确定对象不在第一对象存储装置中。例如,复制策略可以指定将对象从第二对象存储装置复制到第一对象存储装置。
存储介质704中的机器可读指令包括对象请求重定向器发送指令710,用于从控制器向重定向器发送对象请求。重定向器在跟踪信息中跟踪多个对象存储装置中的对象添加和删除,所述多个对象存储装置与控制对所述多个对象存储装置中的对象的访问的相应控制器相关联,所述跟踪信息标识存储相应对象的相应对象存储装置以及所述相应对象的复制策略,所述复制策略定义如何跨所述多个对象存储装置复制所述相应对象,其中,所述跟踪信息响应于来自所述控制器的在所述多个对象存储装置中进行对象添加或删除的指示而更新。
存储介质704中的机器可读指令包括重定向指示接收指令712,用于响应于从控制器发送到重定向器的请求而接收用于将所述控制器重定向到第二控制器的重定向指示,以在第二对象存储装置中访问对象。
图8是根据一些示例的过程800的流程图。例如,过程800可以由ORD 110执行。
过程800包括在由系统存储的跟踪信息中跟踪(在802处)多个对象存储装置中的对象添加和删除,所述多个对象存储装置与控制对所述多个对象存储装置中的所述对象的访问的相应控制接口相关联,所述跟踪信息标识存储相应对象的相应对象存储装置以及所述相应对象的复制策略,所述复制策略定义如何跨所述多个对象存储装置复制所述相应对象。
过程800包括在系统处从控制接口接收(在804处)在多个对象存储装置中进行对象添加或删除的指示。
过程800包括响应于接收到的指示在系统处更新(在806处)跟踪信息。
过程800包括在系统处从控制接口中的第一控制接口接收(在808处)对给定对象的请求,如果给定对象在由第一控制接口控制的第一对象存储装置中,则第一控制接口将在所述第一对象存储装置处访问所述给定对象,其中,给定对象的复制策略由跟踪信息标识,并且指定给定对象将从第二对象存储装置复制到第一对象存储装置。
过程800包括基于更新的跟踪信息响应于所述请求而从系统向第一控制接口提供(在810处)用于将第一控制接口重定向到与第二对象存储装置相关联的第二控制接口的重定向指示,以使得从第二对象存储装置取得给定对象。
存储介质(例如,图6中的600或图7中的704)可以包括以下各项中的任一项或某种组合:半导体存储器设备,如DRAM或SRAM、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)和闪速存储器;磁盘,如固定盘、软盘和可移动盘等;另一种磁介质,包括磁带;光学介质,如光盘(CD)或数字视频盘(DVD)等;或另一类型的存储设备。注意,上文讨论的指令可以在一个计算机可读或机器可读存储介质上提供,或者可替代地,可以在分布在具有可能多个节点的大型系统中的复数个计算机可读或机器可读存储介质上提供。这种一个或多个计算机可读或机器可读存储介质被认为是物品(或制品)的一部分。物品或制品可以指任何制造的单个部件或复数个部件。一个或多个存储介质可以位于运行机器可读指令的机器中、或者位于远程站点处,可以通过网络从所述远程站点下载机器可读指令以供执行。
在前述描述中,阐述了许多细节以使得理解本文中所公开的主题。然而,可以在没有这些细节中的一些细节的情况下实践实施方式。其他实施方式可以包括上文所讨论的细节的修改和变化。所附权利要求旨在覆盖这样的修改和变化。
Claims (20)
1.一种包括指令的非暂态机器可读存储介质,所述指令在执行时使系统进行以下操作:
在由所述系统存储的跟踪信息中跟踪多个对象存储装置中的对象添加和删除,所述多个对象存储装置与控制对所述多个对象存储装置中的所述对象的访问的相应控制接口相关联,所述跟踪信息标识存储相应对象的相应对象存储装置以及所述相应对象的复制策略,所述复制策略定义如何跨所述多个对象存储装置复制所述相应对象;
从所述控制接口接收在所述多个对象存储装置中进行对象添加或删除的指示,并响应于接收到的指示在所述系统处更新所述跟踪信息;
在所述系统处从所述控制接口中的第一控制接口接收针对给定对象的请求,如果所述给定对象在由所述第一控制接口控制的第一对象存储装置中,则所述第一控制接口将在所述第一对象存储装置处访问所述给定对象;以及
响应于所述请求而从所述系统向所述第一控制接口提供与所述给定对象存在于所述多个对象存储装置中的任一个中相关的指示,与所述给定对象的存在相关的所述指示基于更新的跟踪信息。
2.如权利要求1所述的非暂态机器可读存储介质,其中,由所述系统维护用于瞬态条件下对象的所述跟踪信息。
3.如权利要求1所述的非暂态机器可读存储介质,其中,从所述系统到所述第一控制接口的与所述给定对象的存在相关的指示包括用于将所述第一控制接口重定向到第二控制接口以在第二对象存储装置处访问所述给定对象的重定向指示。
4.如权利要求3所述的非暂态机器可读存储介质,其中,所述给定对象的复制策略指定将所述给定对象从所述第二对象存储装置复制到所述第一对象存储装置,并且其中,由于所述给定对象还没有被复制到所述第一对象存储装置,因此所述重定向指示使得在所述第二对象存储装置处访问所述给定对象。
5.如权利要求3所述的非暂态机器可读存储介质,其中,所述指令在执行时使所述系统进行以下操作:
响应于基于所述更新的跟踪信息确定所述给定对象的复制策略指定在所述多个对象存储装置中的复数个对象存储装置处复制所述给定对象:
基于标准来识别所述复数个对象存储装置中的选定对象存储装置,以及
提供用于将所述第一控制接口重定向到控制对所述选定对象存储装置的访问的所述第二控制接口的所述重定向指示。
6.如权利要求5所述的非暂态机器可读存储介质,其中,所述标准基于所述复数个对象存储装置中的每一个与所述第一控制接口的接近度或访问所述复数个对象存储装置中的每一个的等待时间。
7.如权利要求1所述的非暂态机器可读存储介质,其中,从所述系统到所述第一控制接口的与所述给定对象的存在相关的指示包括所述给定对象未存储在所述多个对象存储装置中的任一个处的指示。
8.如权利要求1所述的非暂态机器可读存储介质,其中,在所述系统从不可用状况恢复之后,所述指令在执行时使所述系统进行以下操作:
从所述控制接口中的每个相应控制接口接收在所述系统处于不可用状况时由所述相应控制接口维护的重放日志的内容,所述重放日志指示在由所述相应控制接口控制的对应对象存储装置处添加或删除的对象。
9.如权利要求1所述的非暂态机器可读存储介质,其中,所述指令在执行时使所述系统进行以下操作:
从所述控制接口中的控制接口接收对给定对象存储装置中的索引对象的请求;以及
响应于对索引对象的所述请求而提供所述给定对象存储装置中的对象的信息。
10.如权利要求1所述的非暂态机器可读存储介质,其中,所述跟踪信息包含对象的修正信息。
11.如权利要求1所述的非暂态机器可读存储介质,其中,所述跟踪信息包括基于以下各项中的任一项或某种组合的访问成本信息:访问对象或对象存储装置时的等待时间、到对象存储装置的链路的繁忙程度、或与用于实施对象存储装置的存储设备的类型相关联的访问速度。
12.如权利要求1所述的非暂态机器可读存储介质,其中,所述指令在执行时使所述系统进行以下操作:
当对象存储装置之间的一个或多个复制链路关闭时:
在所述系统处从给定控制接口接收写入给定对象的新版本的指示,以及
响应于从另外的控制接口访问所述给定对象的请求而将所述另外的控制接口定向到所述给定对象的新版本。
13.如权利要求1所述的非暂态机器可读存储介质,其中,所述指令在执行时使所述系统进行以下操作:
向能够通过所述相应控制接口访问所述多个对象存储装置的主机系统呈现全局命名空间,所述全局命名空间包括所述多个对象存储装置中的对象的信息。
14.如权利要求13所述的非暂态机器可读存储介质,其中,所述全局命名空间包括由所述相应控制接口维护的对象存储命名空间的聚合,其中,所述对象存储命名空间中的任何对象存储命名空间能够被动态地加入所述全局命名空间或从所述全局命名空间移除。
15.如权利要求1所述的非暂态机器可读存储介质,其中,在所述系统处通过第一链路从所述控制接口接收所述添加或删除指示,所述第一链路与在所述控制接口之间的通过其发生数据复制的复制链路分离。
16.如权利要求1所述的非暂态机器可读存储介质,其中,从第二对象存储装置向所述第一对象存储装置提供同步主动-主动复制,使得所述第二对象存储装置是主动-主动布置中的主要对象存储装置,而所述第一对象存储装置是所述主动-主动布置中的次要对象存储装置,并且其中,所述指令在执行时使所述系统进行以下操作:
检测对在所述第一控制接口处针对对象的大于指定阈值量的访问被重定向到用于所述第二对象存储装置的第二控制接口;以及
响应于所述检测而执行故障转移,以将所述第一对象存储装置指定为所述主动-主动布置中的主要对象存储装置,并将所述第二对象存储装置指定为所述主动-主动布置中的次要对象存储装置。
17.一种控制器,包括:
处理器;以及
包括指令的非暂态存储介质,所述指令能够在所述处理器上执行以进行以下操作:
从主机系统接收访问第一对象存储装置中的对象的输入/输出(I/O)请求;
确定所述对象不在所述第一对象存储装置中;
从所述控制器向重定向器发送针对所述对象的请求,所述重定向器用于在跟踪信息中跟踪多个对象存储装置中的对象添加和删除,所述多个对象存储装置与控制对所述多个对象存储装置中的对象的访问的相应控制器相关联,所述跟踪信息标识存储相应对象的相应对象存储装置以及所述相应对象的复制策略,所述复制策略定义如何跨所述多个对象存储装置复制所述相应对象,其中,所述跟踪信息响应于来自所述控制器的在所述多个对象存储装置中进行对象添加或删除的指示而更新;以及
响应于从所述控制器发送到所述重定向器的请求而接收用于将所述控制器重定向到第二控制器的重定向指示,以在第二对象存储装置中访问所述对象。
18.如权利要求17所述的控制器,其中,所述指令能够在所述处理器上执行以进行以下操作:
响应于来自所述重定向器的所述重定向指示而通过与所述第二控制器交互来执行对来自所述第二对象存储装置的对象的代理读取。
19.如权利要求18所述的控制器,其中,复制策略指定将所述对象的副本从所述第二对象存储装置复制到所述第一对象存储装置,并且其中,所述指令能够在所述处理器上执行以进行以下操作:
使用所述代理读取来执行所述对象的机会性复制,以将所述对象的副本存储在所述第一对象存储装置中,其中,所述对象的机会性复制使得所述对象的复制相对于指定的对象复制顺序无序地发生。
20.一种方法,包括:
在由包括硬件处理器的系统存储的跟踪信息中跟踪多个对象存储装置中的对象添加和删除,所述多个对象存储装置与控制对所述多个对象存储装置中的所述对象的访问的相应控制接口相关联,所述跟踪信息标识存储相应对象的相应对象存储装置以及所述相应对象的复制策略,所述复制策略定义如何跨所述多个对象存储装置复制所述相应对象;
在所述系统处从所述控制接口接收在所述多个对象存储装置中进行对象添加或删除的指示,并响应于接收到的指示在所述系统处更新所述跟踪信息;
在所述系统处从所述控制接口中的第一控制接口接收对给定对象的请求,如果所述给定对象在由所述第一控制接口控制的第一对象存储装置中,则所述第一控制接口将在所述第一对象存储装置处访问所述给定对象,其中,所述给定对象的复制策略由所述跟踪信息标识,并且指定所述给定对象将从第二对象存储装置复制到所述第一对象存储装置;以及
基于更新的跟踪信息响应于所述请求而从所述系统向所述第一控制接口提供用于将所述第一控制接口重定向到与所述第二对象存储装置相关联的第二控制接口的重定向指示,以使得从所述第二对象存储装置取得所述给定对象。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US18/051,046 US20240143620A1 (en) | 2022-10-31 | 2022-10-31 | Object access based on tracking of objects and replication policies |
US18/051,046 | 2022-10-31 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117950575A true CN117950575A (zh) | 2024-04-30 |
Family
ID=90628578
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310851602.7A Pending CN117950575A (zh) | 2022-10-31 | 2023-07-12 | 基于对象跟踪和复制策略的对象访问 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240143620A1 (zh) |
CN (1) | CN117950575A (zh) |
DE (1) | DE102023116318A1 (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10248678B2 (en) * | 2015-08-25 | 2019-04-02 | International Business Machines Corporation | Enabling placement control for consistent hashing-based object stores |
US10896098B2 (en) * | 2019-04-15 | 2021-01-19 | International Business Machines Corporation | Providing and managing data protection by using incremental forever for storage to cloud object stores |
US20210303511A1 (en) * | 2020-03-30 | 2021-09-30 | Pure Storage, Inc. | Cloning a Managed Directory of a File System |
-
2022
- 2022-10-31 US US18/051,046 patent/US20240143620A1/en active Pending
-
2023
- 2023-06-21 DE DE102023116318.3A patent/DE102023116318A1/de active Pending
- 2023-07-12 CN CN202310851602.7A patent/CN117950575A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20240143620A1 (en) | 2024-05-02 |
DE102023116318A1 (de) | 2024-05-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10296494B2 (en) | Managing a global namespace for a distributed filesystem | |
US10795817B2 (en) | Cache coherence for file system interfaces | |
US9906598B1 (en) | Distributed data storage controller | |
US8805968B2 (en) | Accessing cached data from a peer cloud controller in a distributed filesystem | |
US9811662B2 (en) | Performing anti-virus checks for a distributed filesystem | |
US8805967B2 (en) | Providing disaster recovery for a distributed filesystem | |
US8799414B2 (en) | Archiving data for a distributed filesystem | |
US8918392B1 (en) | Data storage mapping and management | |
US8799413B2 (en) | Distributing data for a distributed filesystem across multiple cloud storage systems | |
US9811532B2 (en) | Executing a cloud command for a distributed filesystem | |
US9852150B2 (en) | Avoiding client timeouts in a distributed filesystem | |
US9804928B2 (en) | Restoring an archived file in a distributed filesystem | |
Borthakur | HDFS architecture guide | |
US9613048B2 (en) | Sending interim notifications to a client of a distributed filesystem | |
US8788628B1 (en) | Pre-fetching data for a distributed filesystem | |
US9990372B2 (en) | Managing the level of consistency for a file in a distributed filesystem | |
US9678981B1 (en) | Customizing data management for a distributed filesystem | |
JP5210176B2 (ja) | 複数のノードを有するストレージ・システムの保護管理方法 | |
US11314444B1 (en) | Environment-sensitive distributed data management | |
US9613064B1 (en) | Facilitating the recovery of a virtual machine using a distributed filesystem | |
US8930364B1 (en) | Intelligent data integration | |
Borthakur | HDFS architecture | |
CN111885098B (zh) | 对象存储集群的代理访问方法、系统及计算机设备 | |
US11221785B2 (en) | Managing replication state for deleted objects | |
EP2962218A1 (en) | Decoupled content and metadata in a distributed object storage ecosystem |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |