一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

跨数据存储设备镜像写操作的制作方法

2022-02-25 22:07:00 来源:中国专利 TAG:


1.本发明涉及数据存储系统,更具体来说,本发明涉及跨一个以上的数据存储设备的镜像写操作。


背景技术:

2.在常规数据复制系统中,用户向单个存储位置(诸如主存储位置)发布输入/输出(i/o)请求,该存储位置最终根据所接收的i/o请求来修改数据。为了增加数据保留,常规的数据复制系统有时还实施第二存储位置,用于维护在主存储位置存储的数据的次级(例如,备份)副本。在主存储位置变得不可用和/或经历数据丢失的情况下,这种位于恢复存储位置处的冗余数据副本特别有用。在一些情况下,恢复存储位置甚至能够响应于确定主存储位置不能承担操作责任而承担操作责任。
3.在这样的常规系统中,主存储位置将从用户接收的i/o请求转发到第二存储位置以便实施。该数据存储方案虽然确实改善了数据保留,但是,满足额外的请求的结果是,处理开销显著增加。例如,i/o请求在每个位置之间传输,导致性能延迟随着实施的位置的数量的增加而增加。此外,在任何位置和/或在它们之间延伸的连接上经历的故障事件中断了i/o请求在它们之间的传输,导致数据的多个副本变得不同步。这又必须先进行补救,系统才能正常运行,从而引入额外的性能延迟。


技术实现要素:

4.根据本发明的一方面,一种计算机实现的方法用于跨主数据存储设备和次数据存储设备镜像写操作。该计算机实现的方法包括:从主机接收执行写操作的第一请求,并执行写操作。将对应于第一请求的元数据发送到次数据存储设备,并且还从次数据存储设备接收与执行写操作的第二请求对应的元数据。接着,在次数据存储设备处从主机接收第二请求。用对应于第一和第二请求的元数据来确定写操作是否已经跨主数据存储设备和次数据存储设备被镜像。响应于确定写操作已经跨主数据存储设备和次数据存储设备被镜像,向次数据存储设备发送指示写操作已经在主数据存储设备和次数据存储设备之间协调的响应。
5.因此,通过允许主机与主数据存储设备和次数据存储设备并行通信,减少了执行次数。例如,本文描述的方案中的各种方案能够实现开销的减少。类似地,主数据存储设备和次数据存储设备能够并行操作,以及执行之间的同步过程,而不依赖于来自主机的输入。这允许数据存储设备承担确保按照预期的数据存储方案来传播数据的责任。由于主动地确保跨多个数据存储设备镜像数据,减少了网络流量并且也改善了数据保留。因此,最好是将包括在这些方法中的不同过程应用于从主机接收的所有写操作(例如,所有应用写)。
6.在一些实施例中,所述计算机实现的方法还包括:接收读请求,以及确定在读请求中指定的数据是否已经在主数据存储设备和次数据存储设备之间协调。响应于确定在读请求中指定的数据尚未在主数据存储设备和次数据存储设备之间协调,延迟执行读请求。然
而,响应于确定在读请求中指定的数据已经在主数据存储设备和次数据存储设备之间协调,执行读操作。
7.因此,通过基本上消除尝试读操作、却发现要读取的数据尚未存储在存储器中、尚未按照修改写操作进行更新等情形,进一步提高了总体系统的操作效率。此外,这些操作可在不引起任何性能破坏的情况下实现。上述方案实现的延迟减小和数据保留可以与通过本方案实现的读取性能的改进相结合,这是特别可取的。
8.根据本发明的另一方面,一种计算机程序产品用于跨主数据存储设备和次数据存储设备镜像写操作。计算机程序产品包括具有其中体现的程序指令的计算机可读存储介质。此外,程序指令可由处理器读取和/或执行,以使处理器执行上述方法。
9.根据又一方面,一种主数据存储设备包括处理器以及与处理器集成的、可由处理器执行的、或与处理器集成且可由处理器执行的逻辑。该逻辑被配置用于执行上述方法。
10.根据另一方面,一种计算机实现的方法用于跨主数据存储设备和次数据存储设备镜像写操作。该计算机实现的方法包括:从主机接收执行写操作的第一请求,以及执行写操作。将对应于第一请求的元数据发送到主数据存储设备。还从主数据存储设备接收对应于执行写操作的第二请求的元数据,其中在主数据存储设备处从主机接收第二请求。用对应于第一和第二请求的元数据来确定写操作是否已经跨主数据存储设备和次数据存储设备被镜像。此外,响应于确定写操作已经跨主和次数据存储设备被镜像,向主数据存储设备发送指示写操作已经在主数据存储设备和次数据存储设备之间协调的响应。
11.根据又一方面,一种计算机实现的方法用于跨主数据存储设备和次数据存储设备镜像写操作。此处,所述计算机实现的方法包括:将执行写操作的第一请求发送到主数据存储设备,以及将执行写操作的第二请求发送到次数据存储设备。从主数据存储设备接收指示写操作已经被执行的第一响应。此外,从主数据存储设备接收指示写操作已经被执行的第一响应。
12.如上所述,通过允许主机与主数据存储设备和次数据存储设备并行通信,减少了执行次数。例如,本文描述的方案中的各种方案能够实现开销的减少。类似地,主数据存储设备和次数据存储设备能够并行操作,以及不依赖于来自主机的输入而执行之间的同步过程。这允许数据存储设备承担确保按照预期的数据存储方案来传播数据的责任。由于主动地确保跨多个数据存储设备镜像数据,减少了网络流量并且也改善了数据保留。因此,最好是将包括在这些方案中的不同过程应用于从主机接收的所有写操作(例如,所有应用写)。
13.本发明的其他方面和方案将从以下详细说明中变得清楚,当结合附图时,这些详细说明通过实例的方案说明本发明的原理。附图简要说明
14.图1是根据一种方案的网络架构。
15.图2是根据一种方案的可与图1的服务器和/或客户端相关联的代表性硬件环境。
16.图3是根据一种方案的分层数据存储系统。
17.图4是根据一种方案的分布式数据存储系统的部分示意图。
18.图5a是根据一种方案的方法的流程图。
19.图5b是根据一种方案的方法的流程图。
具体实施方式
20.以下描述是为了说明本发明的一般原理而进行的,并非意味着限制在此要求保护的发明概念。进一步,本文中所描述的特定特征可以与不同可能的组合和置换中的每一个中的其他所描述特征组合使用。
21.除非本文中另外特别限定,否则所有术语将被给予它们的最广泛的可能解释,包括说明书中暗示的含义以及本领域技术人员所理解的含义和/或如在词典、论文等中限定的含义。
22.还必须注意的是,如在说明书和所附权利要求中使用的,单数形式“一个”、“一种”和“该”包括复数指示物,除非另外说明。还应当理解,当在本说明书中使用术语“包括”和/或“包含”时,其指定所述特征、整体、步骤、操作、元件和/或部件的存在,但不排除一个或多个其他特征、整体、步骤、操作、元件、部件和/或其组合的存在或添加。
23.以下描述公开了用于跨一个以上的数据存储设备来镜像写操作的系统、方法和计算机程序产品的若干优选方案。应当注意,例如如本领域技术人员在阅读本说明书之后将理解的那样,跨存储设备的“镜像”写操作是指调解相同数据在两个不同存储位置处的副本中的差异的过程。因此,期望本文所包括的各种方案能够通过允许主机与多个数据存储设备并行通信来减少操作次数。类似地,数据存储设备能够并行操作,以及不依赖于来自主机的输入而在其间执行数据同步过程。这允许每个数据存储设备中的控制单元承担确保按照预期的数据存储方案来传播数据的责任,从而实现例如如下文将进一步详细描述的与常规过程相比的显著改进。
24.在一种通用方案中,计算机实现的方法用于跨主数据存储设备和次数据存储设备镜像写操作。该计算机实现的方法包括:从主机接收执行写操作的第一请求;以及执行写操作。将对应于第一请求的元数据发送到次数据存储设备,并且还从次数据存储设备接收与执行写操作的第二请求对应的元数据。接着,在次数据存储设备处从主机接收第二请求。用对应于第一和第二请求的元数据来确定写操作是否已经跨主数据存储设备和次数据存储设备被镜像。响应于确定写操作已经跨主数据存储设备和次数据存储设备被镜像,向次数据存储设备发送指示写操作已经在主数据存储设备和次数据存储设备之间协调的响应。
25.在另一通用方案中,计算机程序产品用于跨主数据存储设备和次数据存储设备镜像写操作。计算机程序产品包括具有其中体现的程序指令的计算机可读存储介质。此外,程序指令可由处理器读取和/或执行,以使处理器执行上述方法。
26.在又一通用方案中,主数据存储设备包括处理器以及与处理器集成的、可由处理器执行的、或与处理器集成且可由处理器执行的逻辑。该逻辑被配置用于执行上述方法。
27.在另一通用方案中,计算机实现的方法用于跨主数据存储设备和次数据存储设备镜像写操作。该计算机实现的方法包括:从主机接收执行写操作的第一请求,以及执行写操作。将对应于第一请求的元数据发送到主数据存储设备。还从主数据存储设备接收对应于执行写操作的第二请求的元数据,其中第二请求是在主数据存储设备处从主机接收的。用对应于第一和第二请求的元数据来确定写操作是否已经跨主数据存储设备和次数据存储设备被镜像。此外,响应于确定写操作已经跨主和次数据存储设备被镜像,向主数据存储设备发送指示写操作已经在主数据存储设备和次数据存储设备之间协调的响应。
28.在又一通用方案中,计算机实现的方法用于跨主数据存储设备和次数据存储设备
镜像写操作。此处,所述计算机实现的方法包括:将执行写操作的第一请求发送到主数据存储设备,以及将执行写操作的第二请求发送到次数据存储设备。从主数据存储设备接收指示写操作已经被执行的第一响应。此外,从主数据存储设备接收指示写操作已经被执行的第一响应。
29.图1示出了根据一种方案的架构100。如图1所示,提供包括第一远程网络104和第二远程网络106的多个远程网络102。网关101可耦合在远程网络102与邻近网络108之间。在本架构100的上下文中,网络104、106可以各自采取包括但不限于局域网(lan)、广域网(wan)(诸如因特网)、公共交换电话网(pstn)、内部电话网等的任何形式,。
30.在使用中,网关101充当从远程网络102到邻近网络108的入口点。这样,网关101可以起到为到达网关101的给定数据分组进行定向的路由器和为给定分组提供进、出网关101的实际路径的交换机的作用。
31.还包括至少一个数据服务器114,其耦合到邻近网络108,并且可经由网关101从远程网络102访问。应当注意,(一个或多个)数据服务器114可以包括任何类型的计算设备/群件(groupware)。耦合到每个数据服务器114的是多个用户设备116。用户设备116也可以通过网络104、106、108之一直接连接。取决于具体方案,此类用户设备116可包括主机(例如,如本文所描述的)、台式计算机、膝上型计算机、手持式计算机、打印机或任何其他类型的逻辑。应注意,在一种方案中,用户设备111也可直接耦合至任何网络。
32.外围设备120或一系列外围设备120(例如,传真机、打印机、联网的和/或本地存储单元或系统等)可以耦合到网络104、106、108中的一个或多个。应当注意,数据库和/或附加组件可以与耦合到网络104、106、108的任何类型的网络元件一起使用或集成到耦合到网络104、106、108的任何类型的网络元件中。在本说明书的上下文中,网络元件可以指网络的任何组件。
33.根据一些方案,本文描述的方法和系统可以利用和/或在虚拟系统和/或模拟一个或多个其他系统的系统—诸如模拟ibm z/os环境的unix系统、虚拟托管microsoft windows环境的unix系统、模拟ibm z/os环境的microsoft windows系统等—上实现。在一些方案中,可以通过使用vmware软件来加强这种虚拟化和/或仿真。
34.在更多的方案中,一个或多个网络104、106、108可以代表通常称为“云”的系统集群。在云计算中,共享资源(诸如处理能力、外围设备、软件、数据、服务器等)以按需关系提供给云中的任何系统,从而允许跨许多计算系统的服务的访问和分布。云计算通常涉及在云中运行的系统之间的因特网连接,但也可以使用连接系统的其他技术。
35.图2示出了根据一种方案的与图1的用户设备116和/或服务器114相关联的代表性硬件环境。这样的图示出工作站的典型硬件配置,该工作站具有中央处理单元210(诸如微处理器)以及经由系统总线212互连的多个其他单元。
36.图2中所示的工作站包括随机存取存储器(ram)214、只读存储器(rom)216、用于将诸如盘存储单元220的外围设备连接到总线212的i/o适配器218,用户接口适配器222,用于将键盘224、鼠标226、扬声器228、麦克风232和/或诸如触摸屏和数字相机(未示出)的其他用户接口设备连接到总线212,用于将工作站连接到通信网络235(例如,数据处理网络)的通信适配器234以及用于将总线212连接到显示设备238的显示适配器236。按照一种并非限制本发明的示范性方案,盘存储单元220可以合并在由ibm(销售部位于1new orchard rd.,
armonk,new york 10504)提供的ds8000盘存储器中。
37.工作站可以具有驻留在其上的操作系统,诸如microsoft 操作系统(os)、mac os、unix os等。将了解,优选方案也可以在所提及的平台和操作系统以外的平台和操作系统上实施。优选方案可以使用汇编语言、c和/或c 语言或其他编程语言连同面向对象的编程方法一起来编写。可以使用已经变得日益用于开发复杂应用的面向对象编程(oop)。
38.现在参考图3,示出了根据一个方案的存储系统300。要注意的是,根据各种方案,图3中所示的一些元件可实施为硬件和/或软件。存储系统300可以包括用于与至少一个较高存储层级302和至少一个较低存储层级306上的多个介质和/或驱动器通信的存储系统管理器312。较高存储层级302优选地可以包括一个或多个随机存取和/或直接存取介质304,如硬盘驱动器(hdd)中的硬盘、非易失性存储器(nvm)、固态驱动器(ssd)中的固态存储器、闪存、ssd阵列、闪存阵列等、和/或本文指出的或本领域已知的其他存储介质。较低存储层级306可优选地包括一个或多个较低性能存储介质308,包括顺序访问介质(诸如,磁带驱动器中的磁带和/或光学介质)、存取速度较慢的hdd、存取速度较慢的ssd等、和/或本文中指出的或本领域已知的其他存储介质。一个或多个附加存储层级316可包含系统300的设计者所需的存储介质的任何组合。而且,较高存储层级302和/或较低存储层级306中的任一个可包含存储设备和/或存储介质的某一组合。
39.存储系统管理器312可以通过网络310与较高存储层级302和较低存储层级306上的驱动器和/或存储介质304、308通信,网络310诸如是如图3所示的存储区域网络(san),或一些其他合适的网络类型。存储系统管理器312还可以通过主机接口314与一个或多个主机系统(未示出)通信,主机接口314可以是、也可以不是存储系统管理器312的一部分。存储系统管理器312和/或存储系统300的任何其他组件可以在硬件和/或软件中实现,并且可利用用于执行本领域中已知类型的命令的处理器(未示出),诸如中央处理单元(cpu)、现场可编程门阵列(fpga)、专用集成电路(asic)等。当然,可以使用存储系统的任何布置,如本领域技术人员在阅读本说明书时将显而易见的那样。
40.在更多的方案中,存储系统300可以包括任何数量的数据存储层级,并且可以在每个存储层内包括相同或不同的存储介质。例如,每个数据存储层级可以包括相同类型的存储介质,诸如hdd、ssd、顺序存取介质(磁带驱动器中的磁带、光盘驱动器中的光盘等)、直接存取介质(cd-rom、dvd-rom等)或介质存储类型的任何组合。在一个这样的配置中,较高存储层级302可以包括用于在较高性能的存储环境中存储数据的大部分ssd存储介质,并且,包括较低存储层级306和附加存储层级316在内的其余存储层级可以包括用于在较低性能的存储环境中存储数据的ssd、hdd、磁带驱动器等的任何组合。以此方案,可将更频繁存取的数据、具有较高优先级的数据、需要更快速存取的数据等存储到较高存储层级302,而可将不具有这些属性之一的数据存储到附加存储层级316,包含较低存储层级306。当然,本领域技术人员在阅读本描述后,可以根据在此提出的方案来设计存储介质类型的许多其他组合以实现不同的存储方案。
41.根据一些方案,存储系统(诸如300)可以包括被配置为接收要求打开数据集的请求的逻辑,被配置为确定所请求的数据集是否被分成多个相关联部分存储到分层数据存储系统300的较低存储层级306的逻辑,被配置为将所请求的数据集的每个关联部分转移到分
层数据存储系统300的较高存储层级302的逻辑,以及被配置为在分层数据存储系统300的较高存储层级302上从所述相关联部分组装所请求的数据集的逻辑。
42.当然,根据各种方案,该逻辑可以被实现为任何设备和/或系统上的方法或计算机程序产品。
43.如前所述,实施多个存储设备,是为了维持数据的一个或多个冗余副本,增加数据保留。在主存储位置变得不可用和/或经历数据丢失的情况下,数据的这些冗余副本特别有用。在一些情况下,恢复存储位置能够响应于确定主存储位置不能承担操作责任而承担操作责任。
44.然而,常规的数据复制系统在跨多个存储设备实现用户i/o请求方面,确实经历一些性能挫折。在这样的常规系统中,主存储位置将从用户接收的i/o请求转发到第二存储位置以便实现。该数据存储方案虽然确实改善了数据保留,但是,满足额外的请求的结果是,处理开销显著增加。例如,i/o请求在每个位置之间传输,导致性能延迟随着实施的位置的数量的增加而增加。
45.此外,在任何位置和/或它们之间延伸的连接上经历的故障事件中断了i/o请求在它们之间的的传输,导致数据的一个以上的副本变得不同步。反过来,这必须在系统恢复运行之前进行补救,从而引入额外的性能延迟。然而,数据变得不同步的方式和其扩展到的区域是因何时和何处经历失败事件而变化的。这增加了恢复过程的复杂性。例如,一旦修复了故障,当发生故障事件时正进行的所有i/o请求,要在所有位置重复。
46.与常规数据复制系统所经历的前述缺点形成鲜明对比,本文所包括的方案中的各种方案能够有效地跨一个以上的数据存储位置维护一个以上的数据副本。因此,例如如下文将进一步详细描述的从用户(例如,主机)接收的i/o请求跨数据存储位置的实现,不经历困扰常规系统的性能延迟,也不损害数据保留。
47.参见图4,示出了根据一个方案的分布式数据存储系统400。作为选项,本分布式数据存储系统400可以结合本文中列出的任何其他方案的特征—诸如参考其他附图描述的那些特征—来实现。然而,此类分布式数据存储系统400和本文所呈现的其他系统,可用于可能在也可能不在本文列出的说明性方案中具体描述的各种应用和/或置换。进一步,本文呈现的分布式数据存储系统400可用于任何所需环境。因此,图4(和其他图)可视为包括任何可能的置换。
48.如图所示,分布式数据存储系统400包括主数据存储设备402和次数据存储设备404,二者都连接到网络406。主机408位置也连接到网络406,网络406可以是例如依期望的方案而定的任何类型的网络。例如,在一些方案中,网络406是wan,诸如因特网。然而,网络406可以实现的其他网络类型的说明性列表包括但不限于lan、pstn、san、内部电话网络等。因此,主数据存储设备402、辅数据存储设备404和主机408能够彼此通信,而不管它们之间有多大程度的分离,例如,尽管位于不同地理位置。
49.虽然在一些方案中,数据存储设备402、404和主机408中的每一个可通过相同的单个网络406彼此通信,但应注意,可在数据存储设备402、404和主机408中的任何两个或更多个之间实施一个以上网络。例如,主机408可以通过网络406与数据存储设备402、404中的每个通信,而主数据存储设备402和次数据存储设备404可以通过单独的网络和/或可以在其间延伸的物理电连接彼此通信。因此,如图4所示的网络406决非是在进行限制,并且实际上
可包括例如如图1所示的多个不同的网络,。
50.主、次数据存储设备402、404中的每一个包括耦合到存储器阵列412的控制器410(例如,处理器)。取决于具体方案,主、次数据存储设备402、404中的每一个中所包含的存储器阵列412可由不同类型的存储组件414组成。例如,在一些方案中,主数据存储设备402中的存储器阵列412包括比次数据存储设备404中所包括的那些组件更高性能的存储组件。应注意,就本说明书而言,可相对于可实现吞吐量、性能延迟、可靠性因素等来测量“更高性能”。换言之,主数据存储设备402包括与包括在次数据存储设备404中的那些存储组件相比具有更高的可实现吞吐量、更低的性能延迟、更高的可靠性因素等的存储组件。
51.在一些方案中,主机408位置充当用户与分布式数据存储系统400之间的接口。因此,主机408接收并处理由一个或多个用户发起的i/o请求。由此可见,主机408包括控制器416(例如,处理器),其具有足够高的可实现吞吐量,以处理接收的数据。控制器416进一步耦合至存储器418,该存储器可以用于至少暂时地将信息(例如,数据、i/o请求、元数据等)存储在队列中。然而,在一些方案中,主机408实际上可以是由ibm(销售部位于1new orchard rd.,armonk,new york 10504)提供的z14主机。
52.再次,本文所包含的方案中的各种方案能够有效地维护跨多于一个数据存储位置的多于一个的数据副本。因而,分布式数据存储系统400及其中所包括的组件能够如愿地以高效和有效的方式跨主数据存储设备和次数据存储设备对i/o操作进行镜像。即使在对其执行更新(例如,写操作)期间经历故障事件的情况下,主数据存储设备和次数据存储设备中的每个也保持相同数据的副本,并承担保持副本同步的责任,例如如下文将进一步详细描述的那样。
53.例如,现在参见图5a,示出了根据一个方案的用于跨多于一个数据存储设备对写操作进行镜像的计算机实现的方法500的流程图。方法500可根据本发明在图1-4中描绘的任何环境中以各种方案执行。当然,如本领域技术人员在阅读本描述之后将理解的,方法500中可包括比图5a中具体描述的操作更多或更少的操作。
54.方法500的每一步骤可由操作环境的任何合适的组件执行。例如,方法500的流程图中示出的节点501、502、503中的每一个可以对应于位于多层级数据存储系统中的不同位置处的一个或多个处理器。此外,该一个或多个处理器中的每一个优选地被配置为彼此通信。
55.在各种方案中,方法500可以部分地或全部地由控制器、处理器等或其中具有一个或多个处理器的一些其他设备来执行。处理器(例如,处理电路、芯片和/或以硬件和/或软件实现的并且优选地具有至少一个硬件组件的模块)可以在任何设备中用于执行方法500的一个或多个步骤。说明性处理器包括但不限于中央处理单元(cpu)、专用集成电路(asic)、现场可编程门阵列(fpga)等、其组合、或本领域已知的任何其他合适的计算设备。
56.如上所述,图5a包括不同的节点501、502、503,每个节点表示定位在多层级数据存储系统中的不同位置处的一个或多个处理器、控制器、计算机等。例如,节点501可包括电耦合至分布式数据存储系统的主机位置(例如,参见以上图4的主机408)的一个或多个处理器。节点502可以包括电耦合至分布式数据存储系统的主数据存储设备(例如,参见以上图4的402)的一个或多个处理器。此外,节点503可包括电耦合到分布式数据存储系统的次数据存储设备(例如,参见上文图4的404)的一个或多个处理器。因此,取决于具体方案,可在节
点501、502、503中的每一个之间发送命令、数据、请求等。此外,应注意,方法500中所包括的不同过程并非是限制性的,例如,如本领域技术人员在阅读本说明书之后将理解的。例如,在一些方案中,从节点502发送到节点503的数据之前先有从节点503发送到节点502的请求。
57.如图所示,方法500的操作504由节点501处的一个或多个处理器执行,并且包括向节点502发送执行写操作的第一请求。类似地,在操作506中将执行相同写操作的第二请求发送到节点503。应注意,在操作504和506中发送的请求对应于相同的写操作。换言之,将相同的写操作发送到节点502以及节点503。在一些方案中,并行发送执行写操作的第一和第二请求,而在其他方案中,执行写操作的第一和第二请求被顺序地、单独地发送等,这取决于期望的方案。
58.执行写操作的请求中的每一个还包含与请求本身一起被接收的元数据。例如,分别在操作504和506中发送的第一和第二请求对应于相同的写操作,因此是彼此相关的。第一和第二请求之间的这种关系,反映在与请求一起被接收的元数据中,并可用于识别这两个请求彼此如何对应。
59.此外,第一和第二请求优选地导致在主数据存储设备和次数据存储设备处执行相同的写操作,这可以被视为一种进行镜像(例如,进行软件镜像)的形式。因此,如本文中使用的术语“镜像”(mirroring),是指在多于一个不同的数据存储设备处选择性地执行相同的写操作的过程。通过查询写操作被发送到的数据存储设备,可以进一步(例如,通过控制单元)确定写操作是否已经“协调”。例如,如以下将进一步详细描述的,响应于成功地镜像写操作,数据存储设备可以通过指示写操作事实上已经“协调”而进行响应。
60.查看节点502,响应于从节点501处的主机接收到执行写操作的第一请求,操作508包括实际执行写操作。可以用本领域技术人员在阅读本说明书之后将显而易见的任何数据记录过程来执行写操作。此外,操作510包括向节点501处的主机发送指示已经成功地在主数据存储设备处执行写操作的响应。
61.现在来看节点503,响应于从节点501接收到执行写操作的第二请求,操作512包括在次数据存储设备处实际上执行写操作。同样,可以用本领域技术人员在阅读本说明书之后将显而易见的任何数据记录过程来执行写操作。此外,操作514包括向节点501处的主机发送指示已经成功地在次数据存储设备处执行写操作的另一响应。
62.从节点501处的主机的角度来看,响应于接收到成功完成的响应(例如,通知),确定写操作已经被有效地镜像(例如,在软件镜像的上下文中)。因此,从节点501处的主机的角度来看,响应于接收到操作510、514中的响应,确定写操作已经成功完成。然而,分别查看节点502、503处的主存储设备和辅助存储设备,直到每个设备从另一设备接收到写操作已经成功完成的指示之前,才认为写操作已经完成,如下文将进一步详细描述的那样(例如,参见操作532、534)。
63.在操作510和514中向主机发送的响应,互相之间可能相同、相似或不同。换言之,在操作510和514中发送的响应的类型、每个响应中包括的信息量、每个响应中包括的信息类型等,互相之间可能相同、相似或不同。根据一种并非是限制本发明的方案,在操作510和514中中向主机发送的响应是通道端/设备端完成状态。
64.继续到操作516,将对应于执行写操作的第二请求的元数据的副本从节点503发送
到节点502。从节点503接收的元数据由此被存储在节点502处的存储器中。类似地,将对应于执行写操作的第一请求的元数据的副本从节点502发送到节点503。参见操作520。进一步查看操作522,在节点503处接收的元数据被进一步存储在存储器中。因此,节点502、503中的每一个都包括与主机在节点501处发布的两个请求相对应的元数据。在主数据存储设备和次数据存储设备之间发送的元数据中的至少一些优选地具有相同的类型,从而允许进行有意义的比较。此外,取决于所希望的方案,对应于执行写操作的第一和/或第二请求的元数据可以包括时间戳(例如,“当日时间”信息)、唯一地标识请求的内容的哈希值或表、存储位置标识(例如ccccccchr格式的)等。
65.在主数据存储设备和次数据存储设备的每一个处的存储器中存储元数据的过程也可因具体方案而异。例如,在一些方案中,元数据可以随时间在存储器中聚集。在其他方案中,数据存储容量的消耗可更具有优先级,由此仅可在存储器中存储一定量的元数据。在又一些方案中,对应于由于执行写操作而已经被覆写、删除、修改等的数据的元数据,被对应于所执行的写操作的元数据覆写。换句话说,对应于先前写操作请求的元数据,被对应于涉及与在先请求的相同记录(例如,文件)的后续写操作请求的元数据覆写。因此,可以确信地忽略所接收的对应于自此被覆写的元数据的任何i/o请求。
66.继续参照图5a,由此可以由相应节点502、503中的每一个评估对应于执行写操作的第一和第二请求的元数据的组合,以确定写操作是否已经成功地跨主数据存储设备和次数据存储设备被镜像。例如,由节点502执行判定524,包括确定写操作是否已经跨主数据存储设备和次数据存储设备被镜像。换言之,判定524包括确定在主数据存储设备和次数据存储设备处的数据的副本之间的任何差异是否已被协调。在优选方案中,使用对应于执行写操作的第一和第二请求的元数据来做出该确定。例如,在一些方案中用对应于第一和第二请求的哈希值来识别什么数据已经被写到存储器。此外,在一些方案中,在主数据存储设备和次数据存储设备之间比较标识写操作中的数据实际存储在存储器中的位置的元数据。
67.类似地,由节点503执行判定526,包括确定写操作是否已经成功地跨主数据存储设备和次数据存储设备被镜像。如上所述,优选地使用对应于执行写操作的第一和第二请求的元数据(例如,使用本文描述的任何方案)来进行该确定。
68.因此,判定524和526涉及就主和次数据存储设备两者处的数据是否由于执行对应于以上从主机最初接收的请求的写操作而匹配方面做出相同或相似的确定。换言之,主数据存储设备和次数据存储设备彼此同步(例如,交叉验证)以确定数据是否已经在两个位置处被协调,由此确保数据在两个位置处是相同的。
69.还应注意,尽管图5a中示出的过程中的选择的过程看起来是以特定顺序或顺序执行的,但是这决不是限制性的。例如,查看操作504和506,执行相同写操作的第一和第二请求可以一起(例如,并行地)、异步地、顺序地发送,等等。类似地,例如,取决于何时接收到执行写操作的相应请求,可以在主数据存储设备和次数据存储设备中的每一个处异步地执行写操作。
70.如上所述,确定写操作是否已经跨主数据存储设备和次数据存储设备被镜像涉及利用与发送到设备中的每一个的请求相对应的元数据。因此,在一些方案中,执行判定524和/或526涉及元数据是否实际上被相应的数据存储设备接收。然而,在其他方案中,可以响应于在接收到执行写操作的相应请求、从主机接收命令等之后等待预定的时间量,执行判
定524和/或526。
71.响应于确定写操作尚未在主数据存储设备和次数据存储设备上被镜像,方法500从判定524前进到操作528。在此,操作528包括先等待预定的时间量后再返回到判定524,以确定数据中的差异是否已被协调。类似地,方法500响应于确定写操作尚未在主数据存储设备和次数据存储设备上被镜像,从判定526前进到操作530。在此,操作530也包括等待预定的时间量后返回到判定526,以确定数据中的差异是否已被协调。
72.在主数据存储设备和次数据存储设备处无法适当地协调数据的副本可能是由于许多不同的情况而造成的。例如,主机与数据存储设备中的一个或多个之间的连接可能受损,由此阻止了执行写操作的请求在数据存储设备中的一个或多个处的接收。在这样的情况下,方法500可以简单地继续等待受损的连接被修复。在其他实例中,主数据存储设备和次数据存储设备本身之间的连接可能可能受损,由此阻止了元数据在它们之间的传输。在这些情况下,方法500可以继续等待在数据存储设备本身之间延伸的连接被修复。在又一些方案中,主机、主数据存储设备和/或次数据存储设备可以例如响应于经历故障事件而离线。因此,方法500可以继续等待一个或多个物理组件本身被重启和/或修复。响应于恢复正常操作,可以(例如,在增量更新文档中)具体地标识故障设备离线期间在功能设备上执行的写操作,并在增量再同步类型的过程中执行之。
73.在操作528和/或530重复了预定次数的情况下,方法500可采取其它行动。例如,响应于确定主数据存储设备和次数据存储设备中的每个处的数据在预定次数的重新尝试之后依然不同步,可以例如至少暂时地终止主数据存储设备和次数据存储设备之间的镜像关系,以便可以进入数据恢复协议。所实施的数据恢复协议取决于写操作没有被成功地跨数据存储设备进行镜像的原因。例如,数据恢复协议可涉及检查和修复主机与数据存储设备之间的连接。在其他方案中,可以重新尝试在主数据存储设备和次数据存储设备之间传送对应于写操作请求的元数据。在其他方案中,还可以提示主机将写操作请求在一起重新发布。
74.在又一些方案中,恢复协议可以确保跨主数据存储设备和次数据存储设备成功地镜像对应于写操作的数据,由此方法500可结束。然而,应注意,虽然方法500可在执行给定操作时有效地结束,但是,可以为了跨数据存储设备镜像其它写操作而重复方法500中所包含的过程中的任何一个或多个。换言之,针对随后接收的写操作,可以重复方法500中包括的过程中的任何一个或多个。
75.返回到判定526,方法响应于确定写操作已经跨主数据存储设备和次数据存储设备被镜像而进入操作532。在此,操作532包括向节点502处的主数据存储设备发送响应,该响应表明次数据存储设备已经确定写操作已经在主数据存储设备和次数据存储设备上成功地协调。换言之,从次数据存储设备向主数据存储设备发送写完成确认,其指示已经按照次数据存储设备在数据存储设备之间协调了数据。因而,主数据存储设备被通知在主和次数据存储设备的每一个中存储的数据已经按照写操作被更新。类似地,方法500响应于确定写操作已经跨主数据存储设备和次数据存储设备被镜像而从判定524前进到操作534。在此,操作534包括向节点503处的次数据存储设备发送另一响应,该另一响应表明主数据存储设备已经确定写操作已经在主数据存储设备和次数据存储设备上成功地协调。
76.响应于主数据存储设备和次数据存储设备接收到彼此的响应—其表明写操作已
经成功地在它们之间协调,响应—这些响应表明写操作已经成功地在它们之间协调,则可以得出数据已经在每个数据存储设备中成功地协调的结论。因此,可以根据需要执行基于该信息的其它步骤,例如发送后续的写命令、推进i/o缓冲器、更新逻辑到物理表等。
77.因此,期望以上关于方法500描述的各种方案能够通过允许主机与主数据存储设备和次数据存储设备并行通信来减少操作次数。例如,与常规的数据复制系统相比,本文所描述的方案中的各种方案能够实现开销的减少。类似地,主数据存储设备和次数据存储设备能够并行操作以及不依赖于来自主机的输入而在其间执行同步过程。这允许数据存储设备承担确保按照预期的数据存储方案来传播数据的责任。由于主动地确保跨多个数据存储设备镜像数据,减少了网络流量,也改善了数据保留。因此,最好是将这些方案中的各种过程应用于从主机接收的所有写操作(例如,所有应用写)。
78.如上所述,在跨主数据存储设备和次数据存储设备镜像写操作的过程期间可能发生故障,在这种情况下,可以实施各种数据恢复协议来修复在整体分布式存储系统中的位置之间的通信信道、中央网络、故障物理组件和/或在其上实现的软件等。此外,可以在当前写操作已成功实施之前接收后续的执行写操作的请求。优选地对这些写操作请求进行处理和分级,使得对应于其的元数据被存储在存储器中并且被调度用于实施。此外,在执行写操作时接收的读操作请求,最好被推迟到稍后的时间执行,例如如下文马上揭示的那样。
79.例如,图5b示出了根据一个方案的用于评估已接收的读请求的方法550。下面在上述方法500中引用的分布式数据存储系统的背景下介绍方法550,并由此结合在图4中示出的各种组件。然而,在各种方案中,方法550中包括的任何过程可以按照本发明在图1-5a所示的任何环境等环境中执行。当然,如本领域技术人员在阅读本说明书时将理解的,方法550中可以包括比图5b中具体描述的操作更多或更少的操作。
80.方法550的每个步骤可以由操作环境的任何合适的组件来执行。例如,在各种方案中,方法550可以部分地或全部地由控制器、处理器等或其中具有一个或多个处理器的一些其他设备来执行。处理器(例如,处理电路、芯片和/或以硬件和/或软件实现的并且优选地具有至少一个硬件组件的模块)可以在任何设备中用于执行方法550的一个或多个步骤。说明性处理器包括但不限于中央处理单元(cpu)、专用集成电路(asic)、现场可编程门阵列(fpga)等、其组合、或本领域已知的任何其他合适的计算设备。
81.如图5b所示,方法550的操作552包括实际接收读请求。读请求可以取决于给定的方案而在主和/或次数据存储设备处被接收。例如,主数据存储设备可以充当负责满足数据查询(诸如在系统操作期间接收的读请求)的活动数据存储设备。此外,可以在任何时间点从主机接收读请求。读取特定数据组(例如,文件或记录)的请求,甚至可以在数据已经跨主数据存储设备和次数据存储设备被协调之前被接收。
82.因此,判定554包括确定在读请求中指定的数据是否已经在主数据存储设备和次数据存储设备之间协调。换言之,判定554涉及确定在读请求中指定的数据是否已经写入主数据存储设备和次数据存储设备二者,且因此确定在允许满足读请求之前从存储设备的角度来看该数据是否已经被协调。在一些方案中,通过检查用于跟踪什么数据已经在主数据存储设备和次数据存储设备之间协调的逻辑到物理表来进行该确定。在其他方案中,也可以通过检查存储在存储设备处接收的写操作请求的i/o日志、实际检查存储器(例如,执行探测读操作)等来进行确定。还应注意,主数据存储设备和次数据存储设备之间的镜像关系
仍然有效,由此确保每个数据存储设备中的数据保持成功地协调。
83.响应于确定在读请求中指定的数据尚未在主数据存储设备和次数据存储设备之间协调,方法550从判定554前进到操作556。在此,操作556包括延迟读请求。优选地将读请求一直延迟到读请求中指定的数据在主数据存储设备和次数据存储设备之间被协调为止。因此,可以将读请求在缓冲器中临时保持预定的时间量。
84.方法550从操作556返回到判定554,使得可以重复针对对应于读请求的数据的确定。接着,可以任意次重复过程554和556,一直到确定在读请求中指定的数据已经在主和次数据存储设备之间协调为止。然而,在一些方案中,可以响应于执行预定次数的判定554、经过预定量的时间后、在经过预先指定的时间量之后,不能访问所请求的数据(例如,识别到存储器故障和/或数据丢失)等而向主机返回一个指示读请求失败的响应。
85.然而,方法550响应于确定在读请求中指定的数据已经跨主数据存储设备和次数据存储设备被协调而从判定554前进到操作558。在此,操作558包括通过从存储器访问所请求的数据、并向主机提供(例如,返回)所请求的数据来实际执行读操作。如上所述,主数据存储设备和次数据存储设备中的一个充当用于执行所接收的读请求的“活动”设备,而数据存储设备中的另一个充当“冗余”设备。因此,方法550中的过程可以由数据存储设备中的活动数据存储设备来执行。然而,如果数据存储设备中的活动数据存储设备—例如响应于经历故障事件—而离线时,冗余设备可以承担操作责任,至少暂时变成活动设备。类似地,在活动设备上经历的任何永久错误优选地被重定向到冗余设备以便实现。
86.因此,方法550中的过程通过基本上消除尝试读操作、仅发现旨在读取的数据尚未存储在存储器中、尚未根据修改写操作更新等的情形而允许总体系统的操作效率。此外,方法550可以与方法500中的过程结合起来实现,而不引起对性能的任何破坏。通过以上关于方法500描述的方案实现的延迟减少和数据保留可以与通过关于方法550描述的方案实现的读取性能的改进相结合,这是特别可取的。
87.再次,期望本文所包括的方案中的各种方案能够通过允许主机与多个数据存储设备并行通信来减少操作次数。类似地,数据存储设备能够并行操作,以及不依赖于来自主机的输入而在其间执行数据同步过程。这允许每个数据存储设备中的控制单元承担确保按预期的数据存储方案来传播数据的责任。此外,控制单元能够在实现i/o请求时异步通信。由于主动地确保跨多个数据存储设备镜像数据,这减少了网络流量并且也改善了数据保留。因此,最好是将这些方案中的各种过程被应用于从主机接收的所有写操作(例如,所有应用写)。
88.还应该注意的是,本文中包括的各种方案并非是要限制本发明。例如,尽管以上在具有主机和两个数据存储设备的分布式数据存储系统的上下文中描述了许多方案,但是可以实施任何数量的数据存储设备。例如,可以将某种数据(例如,被视为特别“重要”的数据)的第三副本维护在连接至与其他存储设备相同的网络的第三数据存储设备中。类似地,尽管上述各种过程是针对所接收的每个i/o请求执行的,但是可以将任何数量的i/o请求聚合起来一起处理。
89.本发明可以是任何可能的技术细节集成度的系统、方法和/或计算机程序产品。计算机程序产品可包括其上具有用于使处理器执行本发明的各方面的计算机可读程序指令的计算机可读存储介质。
90.计算机可读存储介质可以是可保留和存储供指令执行装置使用的指令的有形设备。计算机可读存储介质可以是,例如但不限于,电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、或者上述的任意合适的组合。计算机可读存储介质的更具体示例的非穷尽列表包括以下各项:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式紧凑盘只读存储器(cd-rom)、数字通用盘(dvd)、记忆棒、软盘、诸如穿孔卡或具有记录在其上的指令的槽中的凸出结构之类的机械编码设备、以及上述各项的任何合适的组合。如本文所使用的计算机可读存储介质不应被解释为暂时性信号本身,例如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,穿过光纤电缆的光脉冲)或通过电线发射的电信号。
91.本文中所描述的计算机可读程序指令可以经由网络(例如,因特网、局域网、广域网和/或无线网络)从计算机可读存储介质下载到相应的计算/处理设备,或者下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输纤维、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口接收来自网络的计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
92.用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据、或以一种或多种程序设计语言的任何组合编写的源代码或目标代码,这些程序设计语言包括面向对象的程序设计语言(诸如smalltalk、c 等)和过程程序设计语言(诸如“c”程序设计语言或类似程序设计语言)。计算机可读程序指令可以完全地在用户计算机上执行、部分在用户计算机上执行、作为独立软件包执行、部分在用户计算机上部分在远程计算机上执行或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可通过任何类型的网络(包括局域网(lan)或广域网(wan))连接至用户计算机,或者可连接至外部计算机(例如,使用因特网服务提供商通过因特网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla)的电子电路可以通过利用计算机可读程序指令的状态信息来使电子电路个性化来执行计算机可读程序指令,以便执行本发明的各方面。
93.参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
94.这些计算机可读程序指令可被提供给计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机或其他可编程数据处理装置的处理器执行的指令创建用于实现在流程图和/或框图的或多个框中指定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置、和/或其他设备以特定方案工作,从而,其中存储有指令的计算机可读存储介质包括包含实现流程图和/或框图中的或多个方框中规定的功能/动作的方面的指令的制造品。
95.也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程装置或其他设备上执行一系列操作步骤,以产生计算机
实现的处理,使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图中的或多个方框中规定的功能/动作。
96.附图中的流程图和框图示出了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。对此,流程图或框图中的每个框可表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些备选实现中,框中标注的功能可以不按照图中标注的顺序发生。例如,连续示出的两个方框实际上可以作为一个步骤完成,同时、基本上同时、以部分或完全时间上重叠的方式执行,或者方框有时可以以相反的顺序执行,这取决于所涉及的功能。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作或执行专用硬件与计算机指令的组合的专用的基于硬件的系统来实现。
97.此外,根据不同实施例的系统可包括处理器和与处理器集成的和/或处理器可该执行的逻辑,逻辑被配置成执行本文所述的处理步骤中的一个或多个。处理器可以具有如本文中所描述的任何配置,诸如包括许多组件(诸如处理硬件、存储器、i/o接口等)的离散处理器或处理电路。与处理器集成的意思是,处理器具有嵌入在其中的作为硬件逻辑的逻辑,诸如专用集成电路(asic)、fpga等。处理器可执行的意思是,该逻辑是硬件逻辑;诸如固件、操作系统的一部分、应用程序的一部分之类的软件逻辑;或硬件和软件逻辑的某种组合,可由处理器访问并且被配置为使处理器在由处理器执行时执行一些功能。软件逻辑可以存储在如本领域中已知的任何存储器类型的本地和/或远程存储器上。可以使用本领域已知的任何处理器,诸如软件处理器模块和/或硬件处理器,诸如asic、fpga、中央处理单元(cpu)、集成电路(ic)、图形处理单元(gpu)等。
98.将清楚的是,前述系统和/或方法的不同特征可以以任何方案进行组合,从而从以上呈现的描述中创建多个组合。
99.还应当理解,本发明的实施例可以按代表客户部署的服务的形式来提供,以按需提供服务。
100.已经出于说明的目的呈现了本发明的各种实施方案的描述,但所述描述并不旨在是详尽的或者限于所公开的实施方案。在不脱离所描述的实施例的范围的情况下,许多修改和变化对于本领域普通技术人员来说是显而易见的。这里使用的术语被选择来最好地解释实施例的原理、实际应用或对在市场中找到的技术的技术改进,或者使得本领域普通技术人员能够理解这里公开的实施例。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献