CN103828331A - 用于提供可靠存储的***和方法 - Google Patents

用于提供可靠存储的***和方法 Download PDF

Info

Publication number
CN103828331A
CN103828331A CN201180071990.2A CN201180071990A CN103828331A CN 103828331 A CN103828331 A CN 103828331A CN 201180071990 A CN201180071990 A CN 201180071990A CN 103828331 A CN103828331 A CN 103828331A
Authority
CN
China
Prior art keywords
memory node
information
access
vbs
memory
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.)
Granted
Application number
CN201180071990.2A
Other languages
English (en)
Other versions
CN103828331B (zh
Inventor
詹姆斯·休斯
安德鲁·帕特森
张�浩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US13/175,251 external-priority patent/US9335931B2/en
Priority claimed from US13/215,345 external-priority patent/US9026849B2/en
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN103828331A publication Critical patent/CN103828331A/zh
Application granted granted Critical
Publication of CN103828331B publication Critical patent/CN103828331B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

提供一种用于提供可靠存储的***和方法。一种用于发起者操作的方法包含:将与访问尝试关联的信息存储在存储设备中;以及响应于所述访问尝试而访问存储***,其中所述存储***包含安排在顺序环路中的第一存储节点和第二存储节点,并且其中所述第一存储节点由发起者访问。此方法还包含:确定访问尝试是否成功完成;如果访问尝试成功完成,就从存储设备中删除所述信息;以及如果访问尝试没有成功完成,就指示错误。

Description

用于提供可靠存储的***和方法
相关申请案的交叉参考
本申请案主张2011年8月23日申请的标题为“用于提供可靠存储的***和方法(System and Method for Providing Reliable Storage)”的第13/215345号美国非临时申请案和2011年7月1日申请的标题为“用于制作存储装置快照的***和方法(System and Method for Making Snapshots ofStorage Devices)”的第13/175251号美国非临时申请案的优先权权益,这两个申请案都以引用的方式并入本文中。
技术领域
本发明大体涉及信息存储,并且更确切地说,涉及一种用于提供可靠存储的***和方法。
背景技术
通常,计算***的用户需要存储数据、应用等。通常,这些数据、应用等可存储在存储装置上,所述存储装置可位于该用户本地、位于该用户远端或其组合。
存储***的重要特征可为高度的可靠性。高度的可靠性将帮助确保存储***能提供对存储在存储***中的信息的访问。考虑到存储装置,尤其是机械存储装置如磁盘驱动器、磁带等可能容易失效,高度的可靠性可能需要实施专门设计以确保存储***可靠性的***和方法。
例如,考虑在云计算环境中操作虚拟机的用户。此用户可能需要访问存储在可作为本地装置出现的存储装置上的信息,但信息实际上可能存储在云计算基础设施的许多地方。用户可能需要能高成功率地读取存储装置中的信息和/或将信息写入存储装置中。
用于在存储***中提供高可靠性的现有技术涉及使用多个存储装置和为存储在所述存储装置中的一个或一个以上上的信息在一个或一个以上副本存储装置上创建信息或恢复信息(例如,奇偶校验信息)的副本(即,镜像)。然而,固有的冗余可能需要大量访问多个存储装置,由此增加通信接口开销、消息话务量等,这样可能消极地影响总体的存储***性能。
因此,提供一种具有减少的通信接口开销、消息话务量等的高可靠性存储***。
发明内容
通过本发明提供一种用于提供可靠存储的***和方法的示例性实施例,大体上可解决或避免这些和其它问题,且大体上可获得技术优势。
根据本发明的一项示例性实施例,提供一种用于发起者操作的方法。此方法包含:将与访问尝试关联的信息存储在存储设备中;以及响应于访问尝试而访问存储***,其中所述存储***包含安排在顺序环路中的第一存储节点和第二存储节点,并且其中所述第一存储节点由发起者访问。此方法还包含:确定访问尝试是否成功完成;如果访问尝试成功完成,就从存储设备中删除所述信息;以及如果访问尝试没有成功完成,就指示错误。
根据本发明的另一项示例性实施例,提供一种用于存储节点操作的方法。此方法包含:在存储节点处接收与写入访问尝试关联的信息,其中所述存储节点是包含安排在顺序环路中的两个存储节点的存储***的一部分,且其中所述信息是从来源接收。此方法还包含:将所述信息的第一子集写入到存储装置;将所述信息的第二子集存储在尝试存储设备中;以及将消息发送到接收者,其中所述消息和接收者基于存储节点在顺序环路中的位置,并且其中所述接收者是与所述来源不同的实体。
根据本发明的另一项示例性实施例,提供一种装置。所述装置包含存储单元、访问单元、错误处理单元以及存储控制单元。存储单元将与访问尝试关联的信息存储在存储设备中,且访问单元对耦合到所述装置的存储***的第一存储节点进行访问,其中所述访问响应于访问尝试,并且其中所述存储***包含安排在顺序环路中的第一存储节点和第二存储节点。错误处理单元确定访问尝试是否成功完成,其中如果访问尝试成功完成,存储单元还从存储设备中删除所述信息,且其中如果访问尝试没有成功完成,错误处理单元还指示错误。当指示错误时,存储控制单元尝试连接到第一存储节点和第二存储节点,其中响应于确定尝试连接成功,访问单元还重新访问存储***。
根据本发明的另一项示例性实施例,提供一种装置,其中所述装置是包含安排在顺序环路中的两个装置的存储***的一部分。所述装置包含接收器、访问单元、存储单元以及发射器。接收器从信息源接收与写入访问尝试关联的信息,访问单元将信息的第一子集写入到存储装置,存储单元将信息的第二子集存储在尝试存储设备中,且发射器将消息发射到接收者。所述接收者和所述消息基于所述装置在顺序环路中的位置,且其中信息源包含写入访问尝试的始发者并且接收者包含结束存储节点,或者其中信息源包含开始存储节点并且接收者包含写入访问尝试的始发者,或者其中信息源包含下游存储节点并且接收者包含上游存储节点。
根据本发明的另一项示例性实施例,提供一种存储和检索信息的方法。此方法包含将第一信息从计算机写入到远端存储***的第一存储节点,其中所述远端存储***包含安排在顺序环路中的第一存储节点和第二存储节点,以使第一信息复制到第二存储节点,第二存储节点位于第一存储节点的远端。此方法还包含:在计算机处从第二存储节点接收响应,所述响应指示所述信息成功地存储在第二存储节点处;以及从远端存储***的第一存储节点读取第一信息。
根据本发明的另一项示例性实施例,提供一种用于存储信息的方法。此方法包含:在存储***的第一存储节点处从计算机接收信息,所述存储***包含第一存储节点和第二存储节点;将有关所述信息的信息保存在第一存储节点处;将所述信息从第一存储节点发送到第二存储节点;将所述信息写入到第一存储节点处的存储器;将所述信息写入到第二存储节点处的存储器;以及将响应从第二存储节点发送到计算机以通知计算机此信息已被成功写入。
本文所揭示的一个优势是减少了通信接口开销、消息话务量等,由此减少计算***上的负荷。
示例性实施例的另一优势是与所述高可靠性存储***的交互与现有的高可靠性存储***是一致的,所以不需要对计算基础设施的客户端侧作出改变。
前述内容已非常广泛地概述了本发明的特征和技术优点,以使得可较好地理解随后对所述实施例的详细描述。下文中将描述所述实施例的额外特征和优点,其形成本发明的权利要求书的标的物。所属领域的技术人员应了解,所揭示的概念和具体实施例可容易地用作用于修改或设计用于实现本发明的相同目的的其它结构或过程的基础。所属领域的技术人员还应意识到,此类等效构造不脱离所附权利要求书中所阐述的本发明的精神和范围。
附图说明
为更完整地理解本发明及其优点,现在参考以下结合附图进行的描述,在附图中:
图1图示了根据本文所描述示例性实施例的示例性计算环境;
图2a图示了根据本文所描述示例性实施例的示例性计算***的高级视图;
图2b图示了根据本文所描述示例性实施例的示例性计算***的详细视图;
图2c图示了根据本文所描述示例性实施例的具有N个存储节点的示例性计算***的高级视图;
图3图示了根据本文所描述示例性实施例的VBS客户端操作的示例性流程图;
图4a图示了根据本文所描述示例性实施例的在发起高可靠性存储***时的VBS发起者操作的示例性流程图;
图4b图示了根据本文所描述示例性实施例的在对存储在高可靠性存储***中的信息执行访问尝试时的VBS发起者操作的示例性流程图;
图4c图示了根据本文所描述示例性实施例的在高可靠性存储***中补救错误情况时的VBS发起者操作的示例性流程图;
图4d图示了根据本文所描述示例性实施例的通过与存储节点重新连接而从高可靠性存储***中的错误情况中恢复时的VBS发起者操作的示例性流程图;
图5a图示了根据本文所描述示例性实施例的在响应访问尝试时的VBS目标操作的示例性流程图;
图5b图示了根据本文所描述示例性实施例的在执行检查点同步时的VBS目标操作的示例性流程图;
图5c图示了根据本文所描述示例性实施例的在错误模式中操作时的VBS目标操作的示例性流程图;
图5d图示了根据本文所描述示例性实施例的在错误恢复模式中操作时的VBS目标操作的示例性流程图;
图6图示了根据本文所描述示例性实施例的示例性第一装置;以及
图7图示了根据本文所描述示例性实施例的示例性第二装置。
具体实施方式
下文将详细讨论对各项实施例的实施和使用。但是应了解,本发明提供可实施于广泛的各种具体环境中的许多可应用的发明概念。所论述的具体实施例仅仅说明用以制作和使用本发明的具体方式,而不限制本发明的范围。
本发明的一项示例性实施例涉及用包含安排在顺序环路中的至少两个存储装置的存储***为计算环境提供可靠存储。例如,在写入操作中,要写入到存储***的信息由第一存储装置接收并且写入到第一存储装置并且随后复制到第二存储装置。然后,第二存储装置发送响应消息到信息的始发者,通知始发者写入操作成功完成。然而,在读取操作中,第一存储装置检索由读取操作请求的信息并且将所述信息提供给读取操作的始发者。在具有至少两个存储装置的存储***的存储装置处,此存储装置接收与写入操作关联的信息并将所述信息存储在存储器中。此存储装置还将关于写入操作的信息存储在替代存储器中。此存储装置进一步将关于写入操作的消息发送给接收者,其中接收者不同于存储装置接收信息的来源。所述消息和所述接收者基于存储装置在存储***中的位置。
本发明将在具体环境中关于示例性实施例而进行描述,即,在云计算环境中进行描述,其中用户具有要在存储装置中存储和访问的信息。然而,本发明也可应用到其它计算环境,例如,客户端服务器、独立局、瘦客户机等,其中用户具有要存储在存储装置中的信息。
图1图示了一种计算环境100。计算环境100包含可能在使用耦合到存储装置115的计算机110的用户105。用户105可使用存储装置115来存储信息,例如数据、媒体,还有应用等。计算机110可使用存储在存储装置115中的应用来处理数据、显示媒体等。
尽管已理解计算环境可采用由多个用户使用的多个计算机并且能够在多个存储装置上存储信息,但是为了简单起见,只说明一个用户、一个计算机和一个存储装置。
存储装置115可实现为直接耦合到计算机110的固态存储器120(例如,闪速存储器、固态硬盘等)、磁性媒体125(例如,磁盘驱动器、磁带等)和/或光学媒体,或通过网络接口135和接入网140而耦合到计算机110的远端存储设备130。存储装置115也可实现为以上装置的组合。
如先前所讨论,高可靠性存储***可为用户提供访问(例如,读取和/或写入)信息而失败率极低的能力。为了提供高可靠性,存储***可能需要利用具有低失效率的组件,还要提供若干机制以检测失效的发生并从失效中恢复。此外,即使在失效发生之后并且正在从失效中恢复,高可靠性存储***也允许用户继续访问信息。
图2a图示了计算***200的高级视图。计算***200包含计算机205和耦合到计算机205的高可靠性存储***210。尽管已理解计算***可采用能够访问多个存储***的多个计算机,但是为了简单起见,只说明一个计算机和一个高可靠性存储***。
计算机205可负责执行虚拟机(VM)实例。计算机205可包含到高可靠性存储***210的接口。以下提供关于到高可靠性存储***210的接口的细节。
高可靠性存储***210可包含一个或一个以上存储装置,例如固态存储器、磁性媒体装置(例如,磁盘驱动器、磁带)、光学装置等,这些装置可以在计算机205本地、通过接入网而耦合到计算机205,或其组合。
计算机205可通过向高可靠性存储***210发布请求(例如,读取请求和/或写入请求)并从高可靠性存储***210接收响应而与高可靠性存储***210进行通信。所述响应的形式可以是读取访问尝试中所请求的信息和/或对写入访问尝试的确认。此外,请求可包含状态信息、控制命令、同步信息、时间信息等。另外,响应可包含错误信息、状态信息等。
图2b图示了计算***225的详细视图。计算***225包含计算机230和耦合到计算机230的高可靠性存储***235。计算机230,通常也称为计算机节点代理(CNA),可负责执行VM实例。计算机230包含在用户空间执行的VBS客户端242和在内核空间执行的VBS发起者244。
VBS客户端242可以是VBS发起者244的用户空间管理工具。例如,VBS客户端242可通过Unix输入/输出控制(ioctl)和Linux虚拟文件***(sysfs)命令来与VBS发起者244进行通信。而VBS发起者244可以是提供一个到磁盘卷的标准块装置接口的VBS块装置驱动程序。VBS客户端242和VBS发起者244可作为到高可靠性存储***235的接口。
高可靠性存储***235可包含多个存储节点,例如第一存储节点250和第二存储节点252。多个存储节点可以顺序地安排,例如在环路中,并且多个存储节点中的个别存储节点可通过它们在序列中的位置来进行参考。例如,如图2b所示,第一存储节点250是多个存储节点中的第一存储节点,且第二存储节点252是多个存储节点中的第二存储节点。尽管图2b所示为单向的序列,但是可重新安排存储节点的次序。例如,第二存储节点252可以是第一存储节点并且第一存储节点250可以是第二存储节点。
尽管图2b所示为包括两个存储节点,但是高可靠性存储***可通常包含任何数量的存储节点,例如,一个、两个、三个、四个、五个等。如图2b所示,第一存储节点250也可称为初级存储节点并且第二存储节点252也可称为二级存储节点。然而,第一存储节点250和第二存储节点252也可以分别是第二存储节点和初级存储节点。
根据一项示例性实施例,高可靠性存储***可含有大量的存储节点,但单个计算机可能不需要附接到高可靠性存储***的所有存储节点。例如,高可靠性存储***可含有10个存储节点,但附接到高可靠性存储***的每个计算机可能附接到这10个存储节点中的两个存储节点。因此,高可靠性存储***能够支持多达五个不同的计算机,而不需每个存储节点支持一个以上计算机。
此外,在高可靠性存储***含有大量存储节点并且计算机附接到高可靠性存储***的存储节点的子集的情况下,出于讨论的目的,将存储节点的子集称为计算机的高可靠性存储***的存储节点会较简单。因此,有关计算机附接到高可靠性存储***的存储节点的讨论不应解释为限制可由高可靠性存储***支持的计算机的数量,以及需要计算机附接到高可靠性存储***中的所有存储节点,反之亦然。
根据一项示例性实施例,第一存储节点250可包含可作为VBS块装置服务器来操作的VBS目标255、修改的块列表257和存储装置259。VBS目标255可允许对存储装置259进行访问,例如读取访问和/或写入访问。VBS目标255可与VBS发起者244通信。第二存储节点252可具有自己相应的VBS目标、修改的块列表和存储装置。
修改的块列表257可以是自从最近的同步或检查点以来已修改,即已被写入的存储装置259中的块的列表。修改的块列表257可由VBS目标255来维护以用于存储装置259。如果存储装置259包括多种形式和/或类型的存储实体,例如磁盘驱动器、磁带、存储器等,那么可维护一个修改的块列表或多个修改的块列表以了解多个存储实体中每个的变化。修改的块列表257和存储装置259可在媒体上实施,例如在动态存储器(如随机存取存储器等)、固态存储器、磁性媒体等上实施。所述媒体可代表第一存储节点250本地的文件***。
根据一项示例性实施例,高可靠性存储***235的存储节点可安排在顺序环路中,而不是安排在较传统的多腿配置中,顺序环路在本文也称为三角形配置。这样安排,VBS发起者244不能像在多腿配置中可以的那样直接与高可靠性存储***235的所有存储节点进行通信。代替地,VBS发起者244可通过它的VBS目标而直接与初级存储节点(即,第一存储节点250)进行通信,所述VBS目标转而通过它的VBS目标与二级存储节点(即,第二存储节点252)进行通信。然后,二级存储节点(假定为如图2b所示的双存储节点配置)可通过它的VBS目标而与VBS发起者244进行通信。
一般来说,消息的来源可称为下游装置并且消息的接收者可称为上游装置。
由于横贯于计算机230和高可靠性存储***235之间的消息话务量的量减少,三角形配置可比多腿配置有优势。例如,考虑安排在双腿配置中的双存储节点的高可靠性存储***。在此配置中,为每个写入访问发送的消息数量是四,其中每次写入到两个存储节点中的每个时交换两个消息。而在相应的具有两个存储节点的三角形配置中,只发送三个消息,其中一个消息从计算机发送到初级存储节点,一个消息在初级存储节点和二级存储节点之间发送,还有一个消息在二级存储节点和计算机之间发送。
从计算机230到高可靠性存储***235的访问尝试的形式可以是写入访问尝试或读取访问尝试。写入访问尝试可从计算机230发送到初级存储节点,初级存储节点可随后将此写入访问尝试转发到二级存储节点等。高可靠性存储***235的最终存储节点(例如,双存储节点***中的二级存储节点)可随后将确认发送到计算机230以指示写入访问尝试成功完成。
一般来说,计算机230将写入访问尝试发送到初级存储节点250并且从最终存储节点(例如,双存储节点***中的二级存储节点252)接收对应于写入访问尝试的确认,所述确认指示写入访问尝试成功完成。如果计算机230不接收对写入访问尝试的确认,那么计算机230可考虑写入访问尝试已失败并且可能需要执行错误恢复以确定错误发生的位置和/或时间。如果可能,错误恢复也可尝试从错误中恢复。以下提供错误恢复的详细讨论。
根据一项示例性实施例,为了潜在地帮助提高性能,除了写入与对存储装置的每个写入访问尝试关联的信息外,存储节点(例如,初级存储节点和/或二级存储节点)例如还可维护接收到的写入访问尝试的列表。此列表,以下称为块列表,包括到存储装置上写入与写入访问尝试关联的信息的块的偏移(例如,位置指示符)以及写入信息的大小和/或量的指示(例如,长度指示符)。
根据一项示例性实施例,块列表可含有关于自从最近的同步以来由存储节点接收到的写入访问尝试的信息。一旦执行新的同步,可清除块列表。块列表可存储在媒体中,例如,存储在存储节点的存储器中。块列表的使用可允许存储节点在与写入访问尝试关联的信息实际上写入到存储装置之前,处理多个写入访问尝试。
块列表的大小可取决于许多因素,包含但不限于同步之间的预期时间量、预期的写入访问尝试次数、用于存储的可用媒体等。太大的块列表可导致潜在宝贵的媒体存储空间的浪费,而太小的块列表可导致不能在块列表中存储某些写入访问尝试。
根据一项示例性实施例,读取访问尝试不需要传播到高可靠性存储***235中的所有存储节点。一般来说,因为写入访问尝试首先发送到初级存储节点,所以读取访问尝试也可发送到初级存储节点。因为在存储节点之间可有一些时延(由于写入访问尝试首先发送到初级存储节点随后传播到二级存储节点等),所以可能出现存储在各存储节点中的内容会不一致的若干短暂时刻。因此,将读取访问尝试发送到初级存储节点帮助确保响应于读取访问尝试接收到的信息是正确的。
图2c图示了具有N个存储节点的计算***270的高级视图。计算***270包含耦合到高可靠性存储***280的计算机275。高可靠性存储***280包含N个存储节点:存储节点1 282(初级存储节点)、存储节点2 284(二级存储节点)、到存储节点N 286(最终存储节点)。高可靠性存储***280如先前所描述地操作,其中写入访问尝试首先发送到初级存储节点并且转发到其它的存储节点,直到最终存储节点将确认发送到计算机275。
图3图示了VBS客户端操作300的流程图。VBS客户端操作300可指示计算机(如计算机230)的VBS客户端(如VBS客户端242)作为与高可靠性存储***(如高可靠性存储***210、235和/或280)的接口而操作时发生在VBS客户端中的操作。当VBS客户端处于正常操作模式时,可发生VBS客户端操作300。
VBS客户端操作300可以高可靠性存储***的发起开始(框305)。高可靠性存储***的发起可包含VBS客户端(通过充当计算机/VBS客户端和高可靠性存储***之间的接口的VBS发起者)连接到高可靠性存储***中的VBS目标并且查询它们的状态,所述VBS目标例如为构成高可靠性存储***的存储节点。VBS目标的查询可包含检查VBS目标在最后关断时是否完全关闭,确定VBS目标最近检查点的时间戳等。
查询过程的一部分可包含使与VBS目标关联的存储节点同步。例如,如果存储节点的检查点的时间戳不匹配,那么VBS客户端可让VBS目标执行同步操作以使时间戳匹配。通过使VBS目标同步,可确保存储节点在操作开始之前全部处于相同状态。
一旦发起高可靠性存储***,VBS客户端可访问存储在高可靠性存储***上的信息(框310)。根据一项示例性实施例,VBS客户端可通常用写入访问尝试(其中具备写入访问尝试的信息可写入到高可靠性存储***中的一个或一个以上块)或读取访问尝试(其中存储在高可靠性存储***中的一个或一个以上块中的信息可被读取并且提供给VBS客户端)来访问存储在高可靠性存储***上的信息。
根据一项示例性实施例,VBS客户端可通过将访问尝试(例如,写入访问尝试或读取访问尝试)发送到高可靠性存储***中的初级存储节点而访问信息。如果访问尝试是读取访问尝试,那么初级存储节点可通过将对应于读取访问尝试的信息直接发送到VBS客户端而响应读取访问尝试。
然而,如果访问尝试是写入访问尝试,那么初级存储节点可将写入访问尝试转发给安排在高可靠性存储***中的顺序环路中的其它存储节点,而不是直接响应VBS客户端。存储节点(包含初级存储节点)可将与写入访问尝试关联的信息写入到它们的相应存储装置中并且用关于写入访问尝试的信息来更新它们自己的修改的块列表。除了写入与写入访问尝试关联的信息和更新自己的修改的块列表之外,高可靠性存储***中的最终存储节点(例如,双存储节点***中的二级存储节点)还可将确认发送到VBS客户端,而不是将写入访问尝试发送到另一个存储节点。到VBS客户端的确认可向VBS客户端表示写入访问尝试已经成功完成。换句话说,与写入访问尝试关联的信息已存储在高可靠性存储***中的每个存储节点处。
根据一项示例性实施例,如果VBS客户端能够等待直到高可靠性存储***中的存储节点同步,那么访问尝试可最初发送到高可靠性存储***中的任何存储节点,而不只是初级存储节点。如果访问尝试是读取访问尝试,那么接收访问尝试的存储节点可响应访问尝试。如果访问尝试是写入访问尝试,那么存储节点可存储与访问尝试关联的信息,更新它自己的修改的块列表,并且将访问尝试转发到高可靠性存储***中的下一个存储节点。此外,在最终存储节点中,最终存储节点可将确认发送到VBS客户端,而不是将访问尝试转发到另一个存储节点。
如果当访问尝试是写入访问尝试时VBS客户端从最终存储节点接收指示或当访问尝试是读取访问尝试时VBS客户端接收对应于访问尝试的信息,那么VBS客户端可将访问尝试视为已经成功完成(框315)并且返回框310以用于额外的访问尝试。然而,如果VBS客户端根本没有或在指定的时间间隔到期之前(例如,在计时器到期时)没有从最终存储节点接收指示或接收对应于访问尝试的信息,那么VBS客户端可认为访问尝试失败、存在错误情况并且可采取措施来补救错误情况(框320)。以下提供有关补救错误情况的一项示例性实施例的描述。随着错误情况被补救,VBS客户端可返回到框310以用于额外的访问尝试。
图4a图示了在发起高可靠性存储***时的VBS发起者操作400的流程图。VBS发起者操作400可指示VBS发起者(例如VBS发起者244)为了准备由计算机(例如计算机230)使用而发起高可靠性存储***中的存储节点时发生在VBS发起者中的操作。当VBS发起者处于正常操作模式时,可发生VBS发起者操作400。
VBS发起者操作400可以VBS发起者(响应于来自VBS客户端的通信,例如,通过Unix输入/输出控制(ioctl)和Linux虚拟文件***(sysfs)命令)连接到高可靠性存储***中的存储节点(通过控制存储节点的VBS目标)开始(框405)。VBS发起者可使用例如Linux网络块装置(NBD)协议的通信协议而与VBS目标进行通信。
VBS发起者可确定与高可靠性存储***中的VBS目标关联的存储节点的状态(框407)。例如,存储节点和/或VBS目标的状态可包含检查VBS目标在最后关断时是否完全关闭,确定VBS目标最近检查点的时间戳等。一般来说,存储节点和/或VBS目标的状态可指示它们是否一致或是处于一致的状态。
VBS发起者可执行检查以确定存储节点和/或VBS目标是否一致(框409)。如果存储节点和/或VBS目标一致,那么VBS发起者可使存储节点和/或VBS目标(即,高可靠性存储***)可由计算机使用(框411)。计算机可用读取访问尝试和/或写入访问尝试的形式来访问存储在高可靠性存储***中的信息。
然而,如果高可靠性存储***(即,存储节点和/或VBS目标)不一致,那么VBS发起者可使高可靠性存储***一致(框413)并且随后使高可靠性存储***可由计算机使用。根据一项示例性实施例,VBS发起者可通过使VBS目标执行检查点同步以使VBS目标具有相同的检查点时间戳而使高可靠性存储***一致。通过使VBS目标同步,可确保存储节点在操作开始之前全部处于相同状态(即,存储相同信息)。
图4b图示了在对存储在高可靠性存储***中的信息执行访问尝试时的VBS发起者操作425的流程图。VBS发起者操作425可指示VBS发起者(例如VBS发起者244)如由计算机(如计算机230)所控制而访问存储在高可靠性存储***中的信息时发生在VBS发起者中的操作。当VBS发起者处于正常操作模式时,可发生VBS发起者操作425。
VBS发起者操作425可以VBS发起者经由VBS客户端而从计算机接收访问尝试开始,所述VBS客户端可充当计算机和VBS发起者之间的接口。除了接收访问尝试之外,VBS发起者还可存储(例如,在列表中排队或放置)访问尝试(框430)。根据一项示例性实施例,VBS发起者可将访问尝试存储在未解决访问尝试的队列或列表中,这样维护了还没有成功完成的VBS发起者所接收的访问尝试的列表。
VBS发起者可将访问尝试发送到高可靠性存储***,例如,高可靠性存储***的初级存储节点(框432)。VBS发起者可执行检查以确定它是否已经接收到对访问尝试的响应(框434)。
根据一项示例性实施例,VBS发起者可接收对应于访问尝试的类型(例如,读取访问尝试或写入访问尝试)的对访问尝试的响应。例如,VBS发起者可接收对应于读取访问尝试的信息或指示写入访问尝试成功完成的确认。或者,VBS发起者可接收指示访问尝试失败的响应。尽管所述响应可能不足以确保访问尝试成功,但是它可确保基础的通信基础设施操作。
根据一项示例性实施例,VBS发起者可能没有接收对访问尝试的响应并且在可用于确定VBS发起者是否等待来自高可靠性存储***的响应太长的计时器到期之后,VBS发起者可确定访问尝试失败,要么由于硬件失效,要么由于软件失效。
如果VBS发起者接收到对访问尝试的响应,那么VBS发起者可执行检查以确定访问尝试的类型(例如,访问尝试是写入访问尝试还是读取访问尝试)(框436)。
如果访问尝试是读取访问尝试,那么VBS发起者可执行检查以确定读取访问尝试是否成功完成(读取访问尝试完成),例如,对访问尝试的响应含有在读取访问尝试中请求的信息(框438)。
如果读取访问尝试成功完成,那么VBS发起者可将信息转发到VBS客户端(框440)并且将访问尝试从未解决访问尝试的队列(或列表)中取消排队(或移除)(框442)。
如果读取访问尝试失败,那么VBS发起者可确定发生了错误(框444)并且可指示发生了错误(框446),这可用于补救错误情况。根据一项示例性实施例,指示已发生错误可包含将错误指示符设置成预先确定的值,设置错误标志,断言中断等。
如果访问尝试是写入访问尝试,那么VBS发起者可执行检查以确定写入访问尝试是否成功完成(写入访问尝试完成),例如,对访问尝试的响应含有访问尝试成功的确认(框448)。
如果写入访问尝试成功完成,那么VBS发起者可将访问尝试从未解决访问尝试的队列(或列表)中取消排队(或移除)(框442)。
如果写入访问尝试失败,那么VBS发起者可确定发生了错误(框450)并且可指示发生了错误(框446),这可用于补救错误情况。
如果VBS发起者在分配的时间段内没有接收到对访问尝试的响应(例如,计时器到期),那么VBS发起者可确定发生了错误(框444)并且可指示发生了错误(框446),这可用于补救错误情况。
图4c图示了在补救高可靠性存储***中的错误情况时的VBS发起者操作455的流程图。VBS发起者操作455可指示VBS发起者(例如VBS发起者244)对高可靠性存储***中的错误情况施加补救时发生在VBS发起者中的操作。当VBS发起者处于正常操作模式时,可发生VBS发起者操作455。
VBS发起者操作455可以VBS发起者执行检查以确定是否发生了错误开始(框460)。如图4b的描述中所描述,根据一项示例性实施例,VBS发起者可检查指示发生了错误的错误指示。如果并没有发生错误,那么VBS发起者操作455可随后终止。
如果发生了错误,那么VBS发起者可尝试重新连接到高可靠性存储***的存储节点(框462)。如果VBS发起者能够连接到高可靠性存储***中的所有存储节点,由此指示错误可能是因暂时错误而起(框464),那么VBS发起者可重试导致错误情况的访问尝试(框466)。
如果VBS发起者能够连接到高可靠性存储***中的存储节点的子集(框468),那么VBS发起者可对它能够连接的尽可能多的存储节点重试导致错误情况的访问尝试(框470)。
然而,如果VBS发起者不能够连接到高可靠性存储***中的任何存储节点(框468),那么VBS发起者可确定高可靠性存储***已失效(框472)。VBS发起者可能需要暂停操作并稍后重试或完全停止。
图4d图示了在通过与存储节点重新连接而从高可靠性存储***中的错误情况中恢复时的VBS发起者操作475的流程图。VBS发起者操作475可指示VBS发起者(例如VBS发起者244)通过与先前失效的存储节点重新连接而从高可靠性存储***中的错误情况中恢复时发生在VBS发起者中的操作。当VBS发起者处于正常操作模式时,可发生VBS发起者操作475。
VBS发起者操作475可以VBS发起者执行检查以确定高可靠性存储***中的多个存储节点是否可用开始(框480)。如果高可靠性存储***中的多个存储节点可用,那么VBS发起者可执行检查以确定各存储节点的检查点时间戳是否匹配,所述检查点时间戳可包含先前失效的存储节点的检查点时间戳(框482)。如果各存储节点的检查点时间戳匹配(框484),那么VBS发起者可允许对高可靠性存储***中的信息进行访问尝试。
然而,如果各存储节点的检查点时间戳不匹配(框484),那么VBS发起者可在允许对高可靠性存储***中的信息进行访问尝试之前使各存储节点同步(框486)。根据一项示例性实施例,VBS发起者可使自从各存储节点共有的检查点时间戳以来已发生不成功的和/或未确认的访问尝试的各存储节点同步。如果在各存储节点之间没有共有的检查点时间戳,那么各存储节点可能需要全部与无错误的存储节点同步。
图5a图示了在响应访问尝试时的VBS目标操作500的流程图。VBS目标操作500可指示存储节点(例如存储节点250)的VBS目标(例如VBS目标255)响应来自计算机(例如计算机230)的访问尝试时发生在VBS目标中的操作。当VBS目标处于正常操作模式时,可发生VBS目标操作500。
VBS目标操作500可以VBS目标从计算机的VBS发起者接收访问尝试开始(框505)。如先前所讨论,可有两种不同类型的访问尝试,即,读取访问尝试和写入访问尝试。VBS目标可根据访问尝试的类型而不同地响应。此外,耦合到VBS目标的存储装置的相对位置也可影响VBS目标怎样响应。例如,耦合到初级存储节点的情况和耦合到最终存储节点的情况相比,VBS目标可不同地响应。
VBS目标可执行检查以确定访问尝试是否是读取访问尝试(框507)。如果访问尝试是读取访问尝试,那么VBS目标可通过从它的存储装置中检索请求的信息来完成读取尝试(框509)。根据一项示例性实施例,读取访问尝试通常只发送到初级存储节点,所以如果VBS目标知道它不是耦合到初级存储节点,那么它能够跳过确定访问尝试的类型的这一检查。
如果访问尝试是写入访问尝试,那么VBS目标可用与写入访问尝试关联的信息来更新它的块列表,所述信息包含哪些块受到写入访问尝试的影响、写入的信息量、写入访问尝试的时间等(框511)。VBS目标也可将要写入到的信息写入它的存储装置中(框513)。
在更新VBS目标的块列表和将信息写入到存储装置之后,VBS目标可发送消息到高可靠性存储***中的顺序环路中的下一个VBS目标,其中此消息包括写入访问尝试,或发送确认到VBS发起者以指示访问尝试成功完成(框515)。
根据一项示例性实施例,VBS目标的行为可根据它在高可靠性存储***中的位置而变化。考虑VBS目标耦合到初级存储节点或中间存储节点这一情形,那么VBS目标可发送信息到高可靠性存储***中的下一个VBS目标。例如,考虑具有三个存储节点的高可靠性存储***:第一存储节点、第二存储节点和第三存储节点。然后,如果VBS目标耦合到第一存储节点或第二存储节点,那么VBS目标可发送消息到高可靠性存储***中的顺序环路中的下一个VBS目标(如果VBS目标耦合到第一存储节点就发送到第二存储节点,或如果VBS目标耦合到第二存储节点就发送到第三存储节点)。
考虑VBS目标耦合到最终存储节点这一情形,那么VBS目标可发送确认到VBS发起者以指示访问尝试成功完成。例如,再次考虑具有三个存储节点的高可靠性存储***:第一存储节点、第二存储节点和第三存储节点。如果VBS目标耦合到第三存储节点,那么VBS目标可发送确认到VBS发起者以指示访问尝试成功完成。
图5b图示了在执行检查点同步时的VBS目标操作525的流程图。VBS目标操作525可指示在存储节点(例如存储节点250)的VBS目标(例如VBS目标255)对所述存储节点执行与另一个存储节点的检查点同步时发生在VBS目标中的操作。当VBS目标处于正常操作模式时,可发生VBS目标操作525。
VBS目标操作525可以VBS目标接收检查点同步请求开始(框530)。根据一项示例性实施例,如果VBS目标耦合到初级存储节点,那么VBS目标可从VBS发起者接收检查点同步请求,或如果VBS目标不是耦合到初级存储节点,那么从另一个VBS目标接收检查点同步请求。
从检查点同步请求中,VBS目标可产生时间戳(框532)。然后,VBS目标可使它自己的块列表中的各条目与它的存储装置同步(框534)。根据一项示例性实施例,VBS目标可使标记有特定时间戳的条目同步,所述时间戳是在VBS目标从检查点同步请求中产生的时间戳之前发生。
然后,VBS目标可发送检查点同步请求到另一个VBS目标(如果VBS目标不是耦合到最终存储节点)以在其它VBS目标处发起检查点同步或发送确认到VBS发起者(如果VBS目标耦合到最终存储节点)以指示检查点同步完成(框536)。
图5c图示了在以错误模式操作时的VBS目标操作545的流程图。VBS目标操作545可指示存储节点(例如存储节点250)的VBS目标(例如VBS目标255)在错误模式期间执行操作时发生在VBS目标中的操作。当VBS目标处于正常操作模式时,可发生VBS目标操作545。
VBS目标操作545可以VBS目标从计算机的VBS发起者接收访问尝试开始(框550)。如先前所讨论,可有两种不同类型的访问尝试,即,读取访问尝试和写入访问尝试。VBS目标可根据访问尝试的类型而不同地响应。VBS目标可执行检查以确定访问尝试是否是读取访问尝试(框552)。如果访问尝试是读取访问尝试,那么VBS目标可通过从它的存储装置中检索请求的信息来完成读取尝试(框554)。
如果访问尝试是写入访问尝试,那么VBS目标可用与写入访问尝试关联的信息来更新它的块列表,所述信息包含哪些块受到写入访问尝试的影响、写入的信息量、访问尝试的时间等(框556)。VBS目标也可在其它存储节点中的一个或一个以上处于错误情况时将访问尝试标记为正发生。VBS目标也可将要写入到的信息写入它的存储装置中(框558)。例如,VBS目标可维护多个指示符,其中每个指示符对应于存储装置中的一个块。然后,如果一个块因写入访问尝试而改变,那么它对应的指示符可设置成指定的值,例如,真值。因而,多个指示符可用于记录存储装置中修改的块。
在更新VBS目标的块列表和将信息写入到存储装置之后,VBS目标可发送消息到高可靠性存储***中的一个剩余的VBS目标,其中此消息包括访问尝试,或发送确认到VBS发起者以指示访问尝试成功完成(框560)。
图5d图示了在以错误恢复模式操作时的VBS目标操作565的流程图。VBS目标操作565可指示存储节点(例如存储节点250)的VBS目标(例如VBS目标255)在错误恢复模式期间执行操作时发生在VBS目标中的操作。当VBS目标处于正常操作模式时,可发生VBS目标操作565。
VBS目标操作565可以VBS目标尝试联系耦合到潜在错误的存储节点的潜在错误的VBS目标开始(框570)。注意潜在错误的VBS目标、潜在错误的存储节点和VBS目标与潜在错误的VBS目标之间的通信链路可以是错误的或可操作的,但是由于永久性的或暂时的失效,消息或确认未被传播,且因此断言错误情况。
然后,VBS目标可执行检查以确定它是否能够建立与潜在错误的VBS目标的联系(框572)。例如,如图5c所描述,如果VBS目标不能建立与潜在错误的VBS目标的联系,那么VBS目标可继续以错误模式操作(框574)。
如果VBS目标能够建立与潜在错误的VBS目标的联系(框572),那么VBS目标可对自身重新设置并且等待VBS发起者重新发起联系以重新建立计算机和潜在错误的VBS目标的操作,潜在错误的VBS目标将不再是错误的,这是因为VBS目标能够与它建立联系(框576)。
图6提供装置600的说明。装置600可以是计算机的发起者(例如VBS发起者)的实施方案。装置600可用于实施本文讨论的各种实施例。如图6所示,发射器605用于发送访问尝试、信息和指示,且接收器610用于接收确认、信息和指示。发射器605和接收器610可具有无线接口、有线接口或其组合。
存储控制单元620用于管理耦合到装置600的存储***的访问。例如,存储控制单元620可初始化存储***、同步存储***、重新设置存储***等。访问单元622用于控制对存储***的访问尝试,例如读取访问尝试和/或写入访问尝试。访问单元622还选择将访问尝试发送到存储***中的哪个存储节点以及预期哪个存储节点作出响应。
存储单元624用于产生、更新、删除以及另外操纵存储器630中的大量信息。存储单元624可产生和操纵访问存储设备632以及尝试存储设备634,所述访问存储设备632用于将关于写入访问尝试的信息存储到存储***,且所述尝试存储设备634用于从最近的同步以来将写入访问尝试存储到存储***。错误处理单元626用于根据来自存储***的响应、确认、或响应或确认的缺少来确定是否发生了错误。错误处理单元626也用于以错误补救模式操作来帮助从错误中恢复。存储器630用于存储访问尝试、与访问尝试关联的信息、同步信息等。
装置600的元件可作为特定的硬件逻辑块实施。在一个替代方案中,装置600的元件可实施为在处理器、控制器、专用集成电路等中执行的软件。在另一个替代方案中,装置600的元件可作为软件和/或硬件的组合实施。
例如,发射器605和接收器610可作为特定的硬件块实施,而存储控制单元620、访问单元622、存储单元624和错误处理单元626则可为在处理器615、微处理器、定制电路或现场可编程逻辑阵列的定制编译逻辑阵列中执行的软件模块。
图7提供装置700的替代性说明。装置700可以是目标的实施方案,例如存储***的存储节点的VBS目标。装置700可用于实施本文讨论的各种实施例。如图7所示,发射器705用于发送访问尝试、信息和指示,且接收器710用于接收确认、信息和指示。发射器705和接收器710也用于与耦合到存储***的其它存储节点的其它装置通信。发射器705和接收器710可具有无线接口、有线接口或其组合。
存储控制单元720用于管理对耦合到装置700的存储装置的访问。例如,存储控制单元720可初始化存储装置、将存储装置与其它存储装置和存储节点同步、重新设置存储装置等。访问单元722用于控制对存储装置的访问尝试,例如读取访问尝试和/或写入访问尝试。访问单元722还根据装置700在存储***中的顺序环路中的位置来确定将对访问尝试的响应发送到哪里。
存储单元724用于产生、更新、删除以及另外操纵存储设备730中的大量信息。存储单元724可产生和操纵访问存储设备732以及尝试存储设备734,所述访问存储设备732用于将关于写入访问尝试的信息存储到存储***,且所述尝试存储设备734用于从最近的同步以来将写入访问尝试存储到存储***。错误处理单元726用于根据来自存储***的响应、确认、或响应或确认的缺少来确定是否发生了错误。错误处理单元726也用于以错误补救模式操作来帮助从错误中恢复。管理单元728用于产生响应访问尝试和访问尝试结果的消息。存储设备730用于存储访问尝试、与访问尝试关联的信息、同步信息等。
装置700的元件可作为特定的硬件逻辑块实施。在一个替代方案中,装置700的元件可实施为在处理器、控制器、专用集成电路等中执行的软件。在另一个替代方案中,装置700的元件可作为软件和/或硬件的组合实施。
例如,发射器705和接收器710可作为特定的硬件块实施,而存储控制单元720、访问单元722、存储单元724、错误处理单元726和管理单元728则可为在处理器715、微处理器、定制电路或现场可编程逻辑阵列的定制编译逻辑阵列中执行的软件模块。
以上描述的装置600和装置700的实施例也可就包括功能步骤和/或非功能操作的方法来进行说明。先前的描述和相关流程图说明可在本发明的可行示例性实施例中执行的步骤和/或操作。通常,功能步骤根据实现的结果来描述本发明,而非功能操作描述用于实现特定结果的更具体的行为。虽然功能步骤和/或非功能操作可按特定顺序进行描述或要求,但本发明无需受限于步骤和/或操作的任何特定顺序或组合。此外,步骤和/或操作在权利要求书的叙述中-和图3、4a、4b、4c、4d、5a、5b、5c和5d的流程图的描述中-的使用(或不使用)用于指示此类术语的所需特定使用(不使用)。
虽然已详细地描述了本发明及其优点,但应理解,可在不脱离如所附权利要求书所界定的本发明的精神和范围的情况下对本发明做出各种改变、替代和更改。
此外,本申请案的范围不希望限于本说明书中所描述的过程、机器、制造、物质成分、构件、方法和步骤的特定实施例。如所属领域的技术人员将从本发明的揭示内容容易了解,可根据本发明利用执行与本文中所描述的对应实施例大致相同的功能或实现与本文中所描述的对应实施例大致相同的结果的目前存在或稍后将开发的过程、机器、制造、物质成分、构件、方法或步骤。因此,所附权利要求书既定在其范围内包括此类过程、机器、制造、物质成分、构件、方法或步骤。

Claims (44)

1.一种用于发起者操作的方法,所述方法包括:
将与访问尝试关联的信息存储在存储设备中;
响应于所述访问尝试而访问存储***,其中所述存储***包括安排在顺序环路中的第一存储节点和第二存储节点,并且其中所述第一存储节点由发起者访问;
确定所述访问尝试是否成功完成;
如果所述访问尝试成功完成,就将所述信息从所述存储设备中删除;以及
如果所述访问尝试没有成功完成,就指示错误。
2.根据权利要求1所述的方法,其中所述访问尝试包括读取访问尝试,其中访问所述存储***包括发送所述信息到所述第一存储节点,并且其中确定所述访问尝试是否成功完成包括当从所述第一存储节点接收到在所述读取访问尝试中请求的信息时,确定所述访问尝试成功完成。
3.根据权利要求2所述的方法,其中确定所述访问尝试是否成功完成包括当在第一指定的时间段内没有接收到在所述读取访问尝试中请求的信息时,确定所述访问尝试没有成功完成。
4.根据权利要求1所述的方法,其中所述访问尝试包括写入访问尝试,其中访问所述存储***包括发送所述信息到所述第一存储节点,并且其中确定所述访问尝试是否成功完成包括当从所述第二存储节点接收到确认时,确定所述访问尝试成功完成。
5.根据权利要求4所述的方法,其中确定所述访问尝试是否成功完成包括当在第二指定的时间段内没有接收到所述确认时,确定所述访问尝试没有成功完成。
6.根据权利要求1所述的方法,其中指示错误包括断言错误指示符、设置错误标志、断言中断或其组合。
7.根据权利要求1所述的方法,其中确定所述访问尝试是否成功完成包括确定所述访问尝试没有成功完成,所述方法进一步包括:
尝试连接到所述第一存储节点和所述第二存储节点;以及
响应于确定所述尝试连接成功,重新访问所述存储***。
8.根据权利要求7所述的方法,进一步包括响应于确定所述尝试连接失败,指示所述存储***失效。
9.根据权利要求7所述的方法,其中重新访问所述存储***包括重新发送所述信息到所述存储***。
10.根据权利要求7所述的方法,进一步包括同步所述存储***。
11.根据权利要求10所述的方法,其中同步所述存储***包括:
将所述第一存储节点的第一时间戳与所述第二存储节点的第二时间戳进行比较;以及
用具有较新时间戳的较新存储节点的内容来更新具有较旧时间戳的较旧存储节点。
12.一种用于存储节点操作的方法,所述方法包括:
在存储节点处接收与写入访问尝试关联的信息,其中所述存储节点是包含安排在顺序环路中的至少两个存储节点的存储***的一部分,且其中所述信息是从来源接收;
将所述信息的第一子集写入到存储装置;
将所述信息的第二子集存储在尝试存储设备中;以及
发送消息到接收者,其中所述消息和所述接收者基于所述存储节点在所述顺序环路中的位置,且其中所述接收者是与所述来源不同的实体。
13.根据权利要求12所述的方法,其进一步包括:
在所述存储节点处接收与读取访问尝试关联的信息;以及
提供在与所述读取访问尝试关联的所述信息中请求的读取信息。
14.根据权利要求13所述的方法,其中提供读取信息包括:
从所述存储装置中读取所述读取信息;以及
发射所述读取信息。
15.根据权利要求12所述的方法,其中存储所述信息的所述第二子集包括对描述所述写入访问尝试的信息进行存储。
16.根据权利要求15所述的方法,其中所述描述所述写入访问尝试的信息包括所述信息的所述第一子集写入在所述存储装置上何处的位置指示符和在所述信息的所述第一子集中的信息量的长度指示符。
17.根据权利要求12所述的方法,其中所述顺序环路包括开始存储节点和结束存储节点,其中所述存储节点是所述开始存储节点,且其中发送消息包括将所述消息发送到所述结束存储节点。
18.根据权利要求17所述的方法,其中所述消息包括所述信息。
19.根据权利要求12所述的方法,其中所述顺序环路包括开始存储节点、中间存储节点和结束存储节点,其中所述存储节点是所述开始存储节点,且其中发送消息包括将所述消息发送到所述中间存储节点。
20.根据权利要求12所述的方法,其中所述顺序环路包括开始存储节点和结束存储节点,其中所述存储节点是所述结束存储节点,且其中发送消息包括将所述消息发送到所述写入访问尝试的始发者。
21.根据权利要求20所述的方法,其中所述消息包括所述写入访问尝试成功完成的确认。
22.根据权利要求12所述的方法,其中所述顺序环路包括开始存储节点、中间存储节点和结束存储节点,其中所述存储节点是所述结束存储节点,且其中发送消息包括将所述消息发送到所述写入访问尝试的始发者。
23.根据权利要求12所述的方法,其中所述顺序环路包括开始存储节点、中间存储节点和结束存储节点,其中所述存储节点是所述中间存储节点,且其中发送消息包括将所述消息发送到所述结束存储节点。
24.根据权利要求12所述的方法,其中所述存储***处于错误状态,且其中所述存储所述信息的所述第二子集进一步包括设置与所述写入访问尝试关联的错误状态指示符以指示当所述存储***处于错误状态时发生所述写入访问尝试。
25.根据权利要求24所述的方法,其中所述错误状态指示符包括多个指示符,其中每个指示符对应于所述存储装置中的一个块,且其中与块关联的指示符设置为指定的值。
26.根据权利要求24所述的方法,进一步包括:
尝试联系失效的存储节点;
如果所述尝试联系所述失效的存储节点成功,就执行重新设置;以及
如果所述尝试联系所述失效的联系节点失败,就继续处于错误状态。
27.一种装置,其包括:
存储单元,用于将与访问尝试关联的信息存储在存储设备中;
访问单元,用于访问耦合到所述装置的存储***的第一存储节点,其中所述访问响应于所述访问尝试,其中所述存储***包括安排在顺序环路中的所述第一存储节点和第二存储节点;
错误处理单元,用于确定所述访问尝试是否成功完成,其中所述存储单元进一步用于如果所述访问尝试成功完成,就从所述存储设备中删除所述信息,且其中所述错误处理单元进一步用于如果所述访问尝试没有成功完成,就指示错误;以及
存储控制单元,用于当指示错误时尝试连接到所述第一存储节点和所述第二存储节点,其中所述访问单元进一步用于响应于确定所述尝试连接成功而重新访问所述存储***。
28.根据权利要求27所述的装置,其中所述访问尝试包括读取访问尝试,其中所述信息发射到所述第一存储节点,且其中当从所述第一存储节点接收到在所述读取访问尝试中请求的信息时,所述错误处理单元确定所述访问尝试成功完成。
29.根据权利要求28所述的装置,其中当在指定的时间段内没有接收到在所述读取访问尝试中请求的信息时,所述错误处理单元确定所述访问尝试没有成功完成。
30.根据权利要求27所述的装置,其中所述访问尝试包括写入访问尝试,其中所述信息发射到所述第一存储节点,且其中当从所述第二存储节点接收到确认时,所述错误处理单元确定所述访问尝试成功完成。
31.一种装置,其中所述装置是包括安排在顺序环路中的至少两个装置的存储***的一部分,所述装置包括:
接收器,用于从信息源接收与写入访问尝试关联的信息;
访问单元,用于将所述信息的第一子集写入到存储装置;
存储单元,用于将所述信息的第二子集存储在尝试存储设备中;以及
发射器,用于将消息发射到接收者,
其中所述接收者和所述消息基于所述装置在所述顺序环路中的位置;且
其中所述信息源包括所述写入访问尝试的始发者并且所述接收者包括结束存储节点,或其中所述信息源包括开始存储节点并且所述接收者包括所述写入访问尝试的所述始发者,或其中所述信息源包括下游存储节点并且所述接收者包括上游存储节点。
32.根据权利要求31所述的装置,其中所述接收器进一步用于接收与读取访问尝试关联的信息,其中所述访问单元进一步用于提供来自所述存储装置的读取信息,其中所述访问单元通过从所述存储装置读取在与所述读取访问尝试关联的所述信息中请求的所述读取信息来提供所述读取信息,且其中所述装置进一步包括消息单元,所述消息单元用于将所述读取信息放在所述消息中。
33.根据权利要求31所述的装置,其中所述存储单元对所述信息的所述第一子集写入在所述存储装置上何处的位置指示符和在所述信息的所述第一子集中的信息量的长度指示符进行存储。
34.根据权利要求31所述的装置,其中所述顺序环路包括所述开始存储节点和所述结束存储节点,其中所述装置是所述开始存储节点,且其中所述信息源是所述写入访问尝试的所述始发者并且所述接收者是所述结束存储节点。
35.根据权利要求31所述的装置,其中所述顺序环路包括所述开始存储节点和所述结束存储节点,其中所述装置是所述结束存储节点,且其中信息源是所述开始存储节点并且所述接收者是所述写入访问尝试的所述始发者。
36.根据权利要求31所述的装置,其中所述顺序环路包括所述开始存储节点、中间存储节点和所述结束存储节点,其中所述装置是所述中间存储节点,且其中所述信息源是所述开始存储节点并且所述接收者是所述结束存储节点。
37.根据权利要求31所述的装置,其中在错误装置中已检测到错误,且其中所述装置进一步包括耦合到所述发射器和所述接收器的错误处理单元,所述错误处理单元用于起始尝试联系所述错误装置,并且如果所述尝试联系所述错误装置成功,就重新设置所述装置。
38.一种存储和检索信息的方法,所述方法包括:
将第一信息从计算机写入到远端存储***的第一存储节点,其中所述远端存储***包括安排在顺序环路中的所述第一存储节点和第二存储节点,以使所述第一信息复制到所述第二存储节点,所述第二存储节点位于所述第一存储节点的远端;
在所述计算机处从所述第二存储节点接收响应,所述响应指示所述信息成功地存储在所述第二存储节点处;以及
从所述远端存储***的所述第一存储节点读取所述第一信息。
39.根据权利要求38所述的方法,进一步包括:
将第二信息从所述计算机写入到所述第一存储节点;以及
当在指定的时间段内在所述计算机处没有从所述第二存储节点接收到响应时,确定发生了错误。
40.根据权利要求39所述的方法,其中进一步包括:
尝试连接所述第一存储节点和所述第二存储节点;以及
响应于确定所述尝试连接成功,将所述第二信息从所述计算机重新写入到所述第一存储节点。
41.一种用于存储信息的方法,所述方法包括:
在包含第一存储节点和第二存储节点的存储***的所述第一存储节点处从计算机接收信息;
将有关所述信息的信息保存在所述第一存储节点处;
将所述信息从所述第一存储节点发送到所述第二存储节点;
将所述信息写入到所述第一存储节点处的存储器;
将所述信息写入到所述第二存储节点处的存储器;以及
将响应从所述第二存储节点发送到所述计算机以通知所述计算机所述信息已被成功写入。
42.根据权利要求41所述的方法,进一步包括将有关所述信息的信息保存在所述第二存储节点处。
43.根据权利要求41所述的方法,其中所述将所述信息写入到所述第一存储节点处的所述存储器在发送所述信息之后发生。
44.根据权利要求41所述的方法,其进一步包括:
在所述第一存储节点处从所述计算机接收读取请求;以及
将存储的有关所述读取请求的信息从所述第一存储节点发送到所述计算机。
CN201180071990.2A 2011-07-01 2011-12-02 用于提供可靠存储的***和方法 Active CN103828331B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US13/175,251 US9335931B2 (en) 2011-07-01 2011-07-01 System and method for making snapshots of storage devices
US13/175,251 2011-07-01
US13/215,345 2011-08-23
US13/215,345 US9026849B2 (en) 2011-08-23 2011-08-23 System and method for providing reliable storage
PCT/CN2011/083355 WO2012167583A1 (en) 2011-07-01 2011-12-02 System and method for providing reliable storage

Publications (2)

Publication Number Publication Date
CN103828331A true CN103828331A (zh) 2014-05-28
CN103828331B CN103828331B (zh) 2017-07-28

Family

ID=47295415

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201180071990.2A Active CN103828331B (zh) 2011-07-01 2011-12-02 用于提供可靠存储的***和方法
CN201180071989.XA Active CN103814359B (zh) 2011-07-01 2011-12-02 用于制作存储装置快照的***和方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201180071989.XA Active CN103814359B (zh) 2011-07-01 2011-12-02 用于制作存储装置快照的***和方法

Country Status (3)

Country Link
EP (2) EP2572280A4 (zh)
CN (2) CN103828331B (zh)
WO (2) WO2012167583A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106326030B (zh) 2015-06-26 2020-03-20 伊姆西Ip控股有限责任公司 用于存储***中的软切换的方法和装置
US10262004B2 (en) * 2016-02-29 2019-04-16 Red Hat, Inc. Native snapshots in distributed file systems
US10705927B2 (en) * 2018-07-19 2020-07-07 Hewlett Packard Enterprise Development Lp Freeze a volume of a replication set and unfreeze the volume based on at least one of a snapshot permit message, a snapshot abort message, and expiration of a timeout
CN109254874A (zh) * 2018-08-29 2019-01-22 郑州云海信息技术有限公司 一种块存储数据快照类型的转化方法、装置及设备
KR20200129776A (ko) * 2019-05-10 2020-11-18 삼성전자주식회사 재전송 공격에 대한 방어책을 포함하는 메모리 시스템의 구동 방법 및 이를 수행하는 메모리 시스템
CN112395133B (zh) * 2020-11-17 2024-05-28 平安科技(深圳)有限公司 基于虚拟机的数据备份方法、装置和计算机设备
CN117421159A (zh) * 2023-11-01 2024-01-19 广州鼎甲计算机科技有限公司 分布式块存储***中的数据备份方法、装置、设备和介质
CN117421160B (zh) * 2023-11-01 2024-04-30 广州鼎甲计算机科技有限公司 数据备份方法、装置、计算机设备和存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6052758A (en) * 1997-12-22 2000-04-18 International Business Machines Corporation Interface error detection and isolation in a direct access storage device DASD system
US20050027737A1 (en) * 2003-07-30 2005-02-03 International Business Machines Corporation Apparatus and method to provide information to multiple data storage devices
US20090037676A1 (en) * 2007-07-31 2009-02-05 Juan Alonso Coronado Dynamic timer configuration for monitoring a long busy state in a remote mirror and copy environment
US7702670B1 (en) * 2003-08-29 2010-04-20 Emc Corporation System and method for tracking changes associated with incremental copying
CN101888405A (zh) * 2010-06-07 2010-11-17 北京高森明晨信息科技有限公司 一种云计算的文件***和数据处理方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5402428A (en) * 1989-12-25 1995-03-28 Hitachi, Ltd. Array disk subsystem
US20050081099A1 (en) * 2003-10-09 2005-04-14 International Business Machines Corporation Method and apparatus for ensuring valid journaled file system metadata during a backup operation
JP2006285919A (ja) * 2005-04-05 2006-10-19 Hitachi Ltd 計算機システム、計算機及びリモートコピー処理方法
US7613750B2 (en) * 2006-05-29 2009-11-03 Microsoft Corporation Creating frequent application-consistent backups efficiently
CN101140536B (zh) * 2007-05-21 2012-09-05 中兴通讯股份有限公司 一种支持级联快照的快照***及其快照处理方法
US8161254B2 (en) * 2008-06-02 2012-04-17 Syncsort Incorporated Method for creating consistent backup image of a storage volume without requiring a snapshot
CN101741911B (zh) * 2009-12-18 2014-04-30 中兴通讯股份有限公司 基于多副本协同的写操作方法、***及节点
CN101819543A (zh) * 2010-02-01 2010-09-01 成都市华为赛门铁克科技有限公司 快照数据处理方法和***以及存储设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6052758A (en) * 1997-12-22 2000-04-18 International Business Machines Corporation Interface error detection and isolation in a direct access storage device DASD system
US20050027737A1 (en) * 2003-07-30 2005-02-03 International Business Machines Corporation Apparatus and method to provide information to multiple data storage devices
US7702670B1 (en) * 2003-08-29 2010-04-20 Emc Corporation System and method for tracking changes associated with incremental copying
US20090037676A1 (en) * 2007-07-31 2009-02-05 Juan Alonso Coronado Dynamic timer configuration for monitoring a long busy state in a remote mirror and copy environment
CN101888405A (zh) * 2010-06-07 2010-11-17 北京高森明晨信息科技有限公司 一种云计算的文件***和数据处理方法

Also Published As

Publication number Publication date
WO2012167582A1 (en) 2012-12-13
CN103814359A (zh) 2014-05-21
EP2572280A1 (en) 2013-03-27
CN103828331B (zh) 2017-07-28
EP2569921A1 (en) 2013-03-20
EP2572280A4 (en) 2013-09-11
EP2569921B1 (en) 2017-11-08
EP2569921A4 (en) 2013-04-24
CN103814359B (zh) 2017-12-12
WO2012167583A1 (en) 2012-12-13

Similar Documents

Publication Publication Date Title
CN103828331A (zh) 用于提供可靠存储的***和方法
JP3718471B2 (ja) 完全な再ミラーリングのないクラッシュリカバリ
JP4236049B2 (ja) データのミラー・コピーを提供するための方法、システム、およびプログラム
US9383928B2 (en) Replication techniques with content addressable storage
US7925629B2 (en) Write ordering style asynchronous replication utilizing a loosely-accurate global clock
US7694177B2 (en) Method and system for resynchronizing data between a primary and mirror data storage system
US8689047B2 (en) Virtual disk replication using log files
US7793060B2 (en) System method and circuit for differential mirroring of data
US8825968B2 (en) Information processing apparatus and storage control method
DK3179359T3 (en) PROCEDURE FOR SENDING DATA, PROCEDURE FOR RECEIVING DATA AND STORAGE UNIT
US8290899B2 (en) Group stamping style asynchronous replication utilizing a loosely-accurate global clock
KR101200453B1 (ko) 통신 네트워크를 통한 데이터 세트 업데이트 시스템, 방법및 장치
WO2014059804A1 (zh) 数据同步方法及***
CN104156361A (zh) 一种实现数据同步的方法及***
US7890715B2 (en) Suspension of an asynchronous remote copy pair system having a primary controller and a remote controller
CN106897288B (zh) 数据库的服务提供方法和***
US9910808B2 (en) Reflective memory bridge for external computing nodes
US9026849B2 (en) System and method for providing reliable storage
US11693844B2 (en) Processing delete requests based on change feed of updates
CN115698955A (zh) 事务镜像的容错
EP1693756B1 (en) Storage subsystem and storage system
JP6912105B2 (ja) ディスクアレイシステム、ディスクアレイシステムの制御方法、および、ディスクアレイ装置
JP2009140424A (ja) フォールトトレラントコンピュータシステム、並びに再同期稼働化処理方法、及びプログラム

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant