掌桥专利:专业的专利平台
掌桥专利
首页

分布式存储系统

文献发布时间:2023-06-29 06:30:04


分布式存储系统

相关申请的交叉引用

本申请基于并要求于2021年12月10日向韩国知识产权局提交的韩国专利申请10-2021-0176199和于2022年4月22日向韩国知识产权局提交的韩国专利申请10-2022-0049953的优先权,其公开内容通过引用整体并入本文。

技术领域

一个或多个示例实施例涉及分布式存储系统。

背景技术

数据中心中包括的分布式存储系统可以包括多个服务器节点,每个服务器节点包括计算单元和存储单元,并且数据可以分布和存储在服务器节点中。为了确保可用性,存储系统可能会在多个服务器节点中复制相同的数据。复制操作可能导致计算单元中的瓶颈,并且可能使存储单元难以发挥最大性能。

最近,已经进行了将分布式存储系统的以服务器为中心的结构重组为以资源为中心的结构的研究。在具有面向资源的结构的非聚合存储系统中,执行计算功能的计算节点和执行存储功能的存储节点可以在物理上彼此分离。

发明内容

示例实施例提供了一种能够通过有效地执行复制操作来提高数据输入/输出性能的分布式存储系统。

示例实施例提供了一种能够从计算节点或存储节点的故障中快速恢复的分布式存储系统。

根据本公开的一个方面,提供了一种分布式存储系统,包括:多个主机服务器,包括多个计算节点;以及多个存储节点,被配置为经由网络与多个计算节点通信,多个存储节点包括多个存储卷,其中,多个计算节点包括被配置为处理具有第一标识符的第一数据的主计算节点和备份计算节点,多个存储卷包括被配置为存储第一数据的主存储卷和备份存储卷,主计算节点被配置为基于接收到与第一数据相对应的写入请求,向包括主存储卷的主存储节点提供对第一数据的复制请求,并且主存储节点被配置为基于复制请求,将第一数据存储在主存储卷中,将第一数据复制到备份存储卷,并向主计算节点提供对复制请求的完成确认。

根据本公开的另一方面,提供了一种分布式存储系统,包括:多个计算域,包括用于分布式处理具有不同标识符的多个数据的多个计算节点;以及多个存储节点,被配置为根据接口协议与多个计算节点通信,多个存储节点包括用于分布式存储具有不同标识符的多个数据的多个存储卷,其中,多个计算节点中的主计算节点被配置为:接收对多个数据中的第一数据的写入请求;通过使用第一数据的标识符作为输入来执行哈希运算,从多个存储节点中的不同存储节点中选择主存储卷和一个或多个备份存储卷;并且向包括主存储卷的主存储节点提供对第一数据的复制请求。

根据本公开的一个方面,提供了一种分布式存储系统,包括:多个主机服务器,包括用于分布式处理具有不同标识符的多个数据的多个计算节点;以及多个存储节点,被配置为根据接口协议与多个计算节点通信,多个存储节点包括用于分布式存储具有不同标识符的多个数据的多个存储卷,其中,多个计算节点中的主计算节点被配置为:从客户端接收对多个数据中的第一数据的访问请求;基于第一数据的标识符,确定存储第一数据的主存储卷和备份存储卷;基于在主存储卷中检测到发生故障,向主计算节点分配备份存储卷之一;并且通过访问所分配的存储卷来处理访问请求。

根据本公开的一个方面,提供了一种服务器,包括:第一计算节点;存储器,存储一个或多个指令;以及处理器,被配置为执行一个或多个指令以进行下列操作:接收与具有第一标识符的第一数据相对应的请求;基于第一标识符,将第一计算节点识别为主计算节点,并将第二计算节点识别为备份计算节点;基于确定第一计算节点可用,指示第一计算节点处理与第一数据相对应的请求,第一计算节点被配置为基于第一标识符,将第一存储卷确定为主存储卷,并将第二存储卷确定为备份存储卷;以及基于确定第一计算节点发生故障,指示第二计算节点处理与第一数据相对应的请求。

本发明构思的各方面不限于以上提及的那些方面,并且本领域技术人员根据以下描述将清楚地理解以上未提及的其他方面。

附图说明

通过结合附图的以下详细描述,将更清楚地理解本发明构思的上述和其他方面、特征和优点,在附图中:

图1是示出了根据示例实施例的存储系统的框图;

图2是示出了根据示例实施例的存储系统的软件栈的框图;

图3是示出了根据示例实施例的存储系统的复制操作的图;

图4是具体地示出了根据示例实施例的存储系统的框图;

图5A和图5B是分别示出了计算节点的层次结构和存储节点的层次结构的图;

图6A和图6B是示出了映射计算节点和存储节点的方法的图;

图7是示出了根据示例实施例的存储系统的数据输入/输出操作的图;

图8和图9是示出了根据示例实施例的存储系统的故障恢复操作的图;以及

图10是示出了根据示例实施例的应用了存储系统的数据中心的图。

具体实施方式

在下文中,参照附图描述示例实施例。

图1是示出了根据示例实施例的存储系统的框图。

参照图1,存储系统100可以包括多个计算节点111、112和113以及多个存储节点121、122和123。多个计算节点111、112和113可以包括诸如中央处理单元(CPU)、处理器、算术逻辑单元(ALU)或其他处理电路等的计算资源,并且多个存储节点121、122和123可以包括诸如固态驱动器(SSD)、硬盘驱动器(HDD)等的存储资源。

多个计算节点111、112和113以及多个存储节点121、122和123可以在物理上彼此分离,并且可以经由网络130进行通信。即,图1中的存储系统100可以是计算节点和存储节点彼此分离的非聚合、分布式存储系统。多个计算节点111、112和113以及多个存储节点121、122和123可以经由网络130进行通信,同时遵守诸如基于架构的NVMe(NVMe-oF)之类的接口协议。

根据示例实施例,存储系统100可以是将数据存储在称为对象的单元中的对象存储。每个对象可以具有唯一的标识符。存储系统100可以使用标识符来搜索数据,而不管存储数据的存储节点如何。例如,当从客户端接收到对数据的访问请求时,存储系统100可以使用该数据所属的对象的标识符作为输入来执行哈希运算,并且可以根据哈希运算的结果来搜索存储该数据的存储节点。然而,存储系统100不限于对象存储,并且因此,根据其他示例实施例,存储系统100可以是块存储、文件存储或其他类型的存储。

非聚合、分布式存储系统不仅可以根据对象标识符在存储节点121、122和123中分发和存储数据,还可以允许计算节点111、112和113根据对象标识符对数据进行划分和处理。通过将存储节点121、122和123与计算节点111、112和113彼此分离,非聚合、分布式存储系统可以灵活地升级、替换或添加存储资源和计算资源。

存储系统100可以将属于一个对象的数据的副本存储在预定数量的存储节点中,以便确保可用性。另外,存储系统100可以分配用于处理属于一个对象的数据的主计算节点、以及当主计算节点中发生故障时能够处理数据的预定数量的备份计算节点。这里,可用性可以指的是持续地使存储系统100能够正常操作的性质。

在图1的示例中,可以分配主计算节点111和备份计算节点112和113以处理具有第一标识符的第一数据。当主计算节点111中没有发生故障时,主计算节点111可以处理对第一数据的访问请求。当主计算节点111中发生故障时,备份计算节点112和113之一可以处理对第一数据的访问请求。

另外,可以分配主存储节点121和备份存储节点122和123以存储第一数据。当第一数据被写入主存储节点121时,第一数据也可以被写入备份存储节点122和123。相反,当读取第一数据时,可以仅访问主存储节点121。当主存储节点121中发生故障时,可以访问备份存储节点122和123之一以读取第一数据。

根据图1所示的示例实施例,以针对一个对象标识符分配三个计算节点和三个存储节点的情况为例进行了说明,但所分配的计算节点和存储节点的数量不限于此。所分配的存储节点的数量可以根据要存储在存储系统中的副本的数量而有所不同。另外,要分配的计算节点的数量可以与存储节点的数量相同,但不一定相同。

为了确保存储系统100的可用性,主存储节点121中存储的第一数据也可能需要被复制在备份存储节点122和123中。当主计算节点111既执行将数据存储在主存储节点121中的操作又执行将数据复制并存储在每个备份存储节点122和123中的操作时,主计算节点111的所需计算复杂度可能增加。当主计算节点111的所需计算复杂度增加时,主计算节点111中可能发生瓶颈,并且存储节点121、122和123的性能可能无法充分发挥。结果,存储系统100的吞吐量可能降低。

根据示例实施例,主计算节点111可以将第一数据的复制操作卸载到主存储节点121。例如,当从客户端接收到对第一数据的写入请求时,主计算节点111可以向主存储节点121提供对第一数据的复制请求。根据示例实施例,基于复制请求,主存储节点121可以将第一数据存储在主存储节点121中,并将第一数据复制到备份存储节点122和123。例如,响应于复制请求,主存储节点121可以将第一数据存储在其中,并将第一数据复制到备份存储节点122和123。存储节点121、122和123也可以经由网络130根据NVMe-oF协议相互通信,以便复制数据。

根据示例实施例,主计算节点111可以不参与将第一数据复制到备份存储节点122和123的操作,并且可以在第一数据被复制的同时处理另一请求,从而防止主计算节点111的瓶颈,并提高存储系统100的吞吐量。

图2是示出了根据示例实施例的存储系统的软件栈的框图。

参照图2,存储系统200可以运行基于对象的存储守护进程(OSD)210和基于对象的存储目标(OST)220。例如,OSD 210可以在参照图1描述的计算节点111、112和113中运行,而OST 220可以在参照图1描述的存储节点121、122和123中运行。

OSD 210可以运行信使211、OSD核心212和NVMe-oF驱动器213。

根据示例实施例,信使211可以支持客户端与存储系统200之间经由网络的接口连接。例如,信使211可以从客户端接收数据和请求,并且可以向客户端提供数据。根据示例实施例,信使211可以接收来自外部网络中的客户端的数据和请求,并且可以向客户端提供数据。

OSD核心212可以控制OSD 210的整体操作。例如,OSD核心212可以根据数据的对象标识符确定用于处理数据的计算节点和用于存储数据的存储节点。另外,OSD核心212可以对主存储节点执行访问,并且可以在主存储节点中发生故障时执行故障恢复。

NVMe-oF驱动器213可以根据NVMe-oF协议向OST 220发送数据和请求,并且可以从OST 220接收数据。

OST 220可以运行NVMe-oF驱动器221、后端存储器222、NVMe驱动器223和贮存器224。

根据示例实施例,NVMe-oF驱动器221可以从OSD 210接收数据连同请求,或者可以基于来自OSD 210的请求向OSD 210提供数据。例如,NVMe-oF驱动器221可以从OSD 210接收数据连同请求,或者可以响应于来自OSD 210的请求向OSD 210提供数据。另外,根据示例实施例,NVMe-oF驱动器221可以在运行在不同存储节点中的OST 220之间执行数据输入和/或输出。

后端存储器222可以控制OST 220的整体操作。根据示例实施例,后端存储器222可以响应于来自OSD 210的请求来执行数据复制操作。例如,当接收到复制请求时,主存储节点的OST 220可以将数据存储在内部贮存器224中,并将数据复制到另一存储节点。

NVMe驱动器223可以根据NVMe协议执行后端存储器222和贮存器224的接口连接。

贮存器224可以管理存储节点中包括的存储资源。例如,存储节点可以包括多个存储设备,例如,SSD和HDD。贮存器224可以将由多个存储设备提供的存储空间形成为作为逻辑存储空间的存储卷(storage volume),并且可以向OSD 210提供存储卷的存储空间。

根据示例实施例,OSD 210和OST 220可以分别在计算节点和存储节点中同时运行。复制操作可以卸载到OST 220,从而减少OSD 210中发生的瓶颈,并提高存储系统200的吞吐量。

图3是示出了根据示例实施例的存储系统的复制操作的图。

在操作S101中,客户端可以向主计算节点提供写入请求。客户端可以基于要被请求写入的数据的标识符执行哈希运算,从而在存储系统中包括的多个计算节点中确定用以处理数据的主计算节点,并向主计算节点提供写入请求。

在操作S102中,主计算节点可以基于写入请求将复制操作卸载到主存储节点。例如,主计算节点可以基于写入请求将复制操作卸载到主存储节点。主计算节点可以基于数据的标识符执行哈希运算,从而确定要存储数据的主存储节点和备份存储节点。另外,主计算节点可以向主存储节点提供复制请求。

在操作S103和S104中,主存储节点可以基于复制请求将数据复制到第一备份存储节点和第二备份存储节点。例如,响应于复制请求,在操作S103中,主存储节点可以将数据复制到第一备份存储节点1,并且在操作S104中,主存储节点可以将数据复制到第二备份存储节点2。

在操作S105中,主存储节点可以存储从主计算节点接收到的数据。在操作S106和S107中,第一备份存储节点和第二备份存储节点可以存储由主存储节点复制的数据。

在操作S108和S109中,当完成所复制的数据的存储时,第一备份存储节点和第二备份存储节点可以向主存储节点提供确认信号(Ack)。

在操作S110中,当完成从主计算节点接收到的数据的存储并且从第一备份存储节点和第二备份存储节点接收到确认信号时,主存储节点可以向主计算节点提供对于复制请求的确认信号(Ack)。

在操作S111中,当从主存储节点接收到确认信号时,主计算节点可以向客户端提供对于写入请求的确认信号(Ack)。

根据示例实施例,一旦向主存储节点提供复制请求,则在从主存储节点接收到确认信号之前,主计算节点可以不参与复制操作。主计算节点可以在主存储节点执行复制操作的同时处理来自客户端的另一请求。即,可以缓解计算节点中的瓶颈,并可以提高存储系统的吞吐量。

根据另一示例实施例,操作的顺序不限于根据参照图3的示例实施例描述的顺序。例如,可以按任何顺序执行操作S103至S108。例如,根据示例实施例,可以在操作S105中将原始数据存储在主存储节点中之后执行数据复制操作S103和S104。

在图1的示例中,示出了三个计算节点111、112和113以及三个存储节点121、122和123,但是存储系统中可以包括的计算节点和存储节点的数量不限于此。另外,存储系统可以包括多个计算节点和存储节点。存储系统可以从多个计算节点和存储节点中选择预定数量的计算节点和存储节点,以便存储具有标识符的数据。在下文中,将参照图4至图6B详细地描述根据示例实施例的存储系统选择计算节点和存储节点的方法。

图4是具体地示出了根据示例实施例的存储系统的框图。

参照图4,存储系统300可以包括多个主机服务器311至31N和多个存储节点321至32M。例如,多个主机服务器可以包括第一主机服务器311、第二主机服务器312、第三主机服务器313、......和第N主机服务器31N,并且多个存储节点可以包括第一存储节点321、第二存储节点322、第三存储节点323、......和第M存储节点32M。这里,N和M可以是彼此相同或不同的大于0的整数。主机服务器311至31N可以响应于来自客户端的请求提供服务,并且可以包括多个计算节点3111、3112、3121、3122、3131、3132、......、31N1和31N2。例如,第一主机服务器311可以包括第一计算节点3111和第二计算节点3112,第二主机服务器312可以包括第三计算节点3121和第四计算节点3122,第三主机服务器313可以包括第五计算节点3131和第六计算节点3132,......,并且第N主机服务器31N可以包括第七计算节点31N1和第八计算节点31N2。然而,本公开不限于此,并且因此,第一主机服务器311、第二主机服务器312、第三主机服务器313、......和第N主机服务器31N中的每一个可以包括多于两个的计算节点。主机服务器311至31N可以在物理上位于不同的空间中。例如,主机服务器311至31N可以位于不同的服务器机架中,或者可以位于数据中心中,所述数据中心位于不同城市或不同国家中。

多个计算节点3111、3112、3121、3122、3131、3132、......、31N1和31N2可以对应于参照图1描述的计算节点111、112和113中的任何计算节点。例如,可以从多个计算节点3111、3112、3121、3122、3131、3132、......、31N1和31N2中选择一个主计算节点和两个备份计算节点,以便处理具有第一标识符的第一数据。

多个存储节点321至32M可以存储客户端使用的数据。多个存储节点321至32M也可以在物理上位于不同的空间中。另外,多个主机服务器321至32N和多个存储节点321至32M也可以相对于彼此在物理上位于不同的空间中。

多个存储节点321至32M可以对应于参照图1描述的存储节点121、122和123中的任何存储节点。例如,可以从多个存储节点321至32M中选择一个主存储节点和两个备份存储节点,以便存储第一数据。

多个存储节点321至32M可以提供多个存储卷3211、3212、3221、3222、3231、3232、......、32M1和32M2。例如,第一存储节点321可以包括第一存储卷3211和第二存储卷3212,第二存储节点322可以包括第三存储卷3221和第四存储卷3222,第三存储节点323可以包括第五存储卷3231和第六存储卷3232,......,并且第M存储节点32M可以包括第七存储卷32M1和第八存储卷32M2。然而,本公开不限于此,并且因此,第一存储节点321、第二存储节点322、第三存储节点323、......和第M存储节点32M中的每一个可以包括多于两个的存储卷。存储节点使用存储资源向计算节点提供的逻辑存储空间可以被称为存储卷。

根据示例实施例,可以从不同的存储节点中选择用于存储第一数据的多个存储卷。例如,可以从主存储节点和备份存储节点中的每一个中选择用于存储第一数据的存储卷。在主存储节点中,用于存储第一数据的存储卷可以被称为主存储卷。在备份存储节点中,用于存储第一数据的存储卷可以被称为备份存储卷。

根据示例实施例,用于存储第一数据的存储卷可以从不同的存储节点中选择,并且因此存储第一数据的副本的位置可以是物理上分布的。当相同数据的副本在物理上存储在不同位置时,即使在数据中心中发生灾难,并且一个存储节点的数据被破坏,另一存储节点的数据也可能受到保护,从而进一步提高存储系统的可用性。类似地,也可以从不同的主机服务器中选择用于处理具有标识符的数据的计算节点,从而提高存储系统的可用性。

如参照图1和图4所述,存储系统的计算资源和存储资源可以彼此独立地形成。图5A和图5B是分别示出了计算资源的层次结构和存储资源的层次结构的图。

图5A将计算资源的层次结构示出为树结构。在图5A的树结构中,顶级根节点可以表示整个存储系统的计算资源。

存储系统可以包括多个服务器机架Rack11至Rack1K。例如,多个服务器机架可以包括Rack11、Rack12、......、Rack1K。在根节点的下级节点中示出服务器机架Rack11至Rack1K。根据实施方式,服务器机架Rack11至Rack1K可以是物理上分布的。例如,服务器机架Rack11至Rack1K可以位于不同区域中的数据中心中。

多个服务器机架Rack11至Rack1K可以包括多个主机服务器。在服务器机架节点的下级节点中示出主机服务器。主机服务器可以对应于参照图4描述的主机服务器311至31N。主机服务器可以包括多个计算节点。多个计算节点可以对应于参照图4描述的计算节点3111、3112、3121、3122、3131、3132、......、31N1和31N2。

根据示例实施例,可以从不同的计算域中选择用于处理具有标识符的数据的主计算节点和备份计算节点。计算域可以指包括一个或多个计算节点的区域。例如,计算域可以对应于一个主机服务器或一个服务器机架。计算域可以在物理上彼此分隔开。当可用于处理相同数据的多个计算节点在物理上彼此分隔开时,可以提高存储系统的可用性。

关于图5A所示的计算资源的层次结构的信息可以存储在多个计算节点中的每一个计算节点中。关于层次结构的信息可以用于确定主计算节点和备份计算节点。当主计算节点中发生故障时,关于层次结构的信息可以用于将备份计算节点之一更改为主计算节点。

图5B将存储资源的层次结构示出为树结构。在图5B的树结构中,顶极根节点可以表示整个存储系统的存储资源。

以与图5A中描述的方式类似的方式,存储系统可以包括多个服务器机架Rack21至Rack2L。例如,多个服务器机架可以包括Rack21、Rack22、......、Rack2L。服务器机架Rack21至Rack2L可以在物理上彼此分隔开,并且也可以与图5A中的服务器机架Rack11至Rack1K在物理上分隔开。

多个服务器机架Rack21至Rack2L可以包括多个存储节点。例如,多个存储设备可以安装在多个服务器机架Rack21至Rack2L上。存储设备可以被分组以形成多个存储节点。多个存储节点可以对应于图4中的存储节点321至32M。

多个存储节点中的每一个可以提供作为多个逻辑空间的存储卷。多个存储卷可以对应于图4中的存储卷3211、3212、3221、3222、3231、3232、......、32M1和32M2。

如参照图4所述,可以从不同的存储节点中选择用于存储具有标识符的数据的存储卷。不同的存储节点可以包括物理上不同的存储设备。因此,当从不同的存储节点中选择存储卷时,可以在物理上分布和存储相同数据的副本。包括所选择的存储卷的存储节点可以包括主存储节点和备份存储节点。

关于图5B所示的存储资源的层次结构的信息可以存储在多个计算节点中的每一个计算节点中。关于层次结构的信息可以用于确定主存储节点和备份存储节点。当主存储节点中发生故障时,关于层次结构的信息可以用于将备份存储节点中可用的存储节点更改为主存储节点。

可以根据数据的标识符不同地选择用于处理数据的计算节点和用于存储数据的存储节点。即,具有不同标识符的数据可以存储在不同的存储节点中,或者存储在同一存储节点中。

可以根据哈希运算的结果来选择根据数据标识符的计算节点和存储节点。另外,根据哈希运算的结果选择的计算节点和存储节点的映射信息可以存储在每个计算节点中,并且该映射信息可以用于从计算节点或存储节点的故障中恢复。

图6A和图6B是示出了映射计算节点和存储节点的方法的图。

图6A是示出了基于数据的标识符确定与数据相关联的计算节点和存储卷的方法的图。

当从客户端接收到数据(DATA)时,可以通过将与所接收到的数据相关联的信息输入到哈希函数中来选择计算节点。例如,将数据(DATA)的对象标识符(Obj.ID)、存储系统上要维护的副本的数量(#ofreplica)、以及数据(DATA)的对象所属的归置组的编号(#ofPG)输入到第一哈希函数601中,可以输出与副本的数量相同数量的计算节点的标识符。

在图6A的示例中,可以使用第一哈希函数601选择三个计算节点。在所选择的计算节点(计算节点12、计算节点22和计算节点31)中,一个计算节点(计算节点12)可以被确定为主计算节点111,并且其他计算节点(计算节点22和计算节点31)可以被确定为备份计算节点112和113。

一旦确定了主计算节点,则可以通过将对象标识符和主计算节点的标识符输入到第二哈希函数602中来选择存储卷。可以从不同的存储节点中选择存储卷(存储卷11、存储卷22和存储卷32)。所选择的存储节点之一可以被确定为主存储节点121,并且其他存储节点可以被确定为备份存储节点122和123。

可以针对每个对象标识符基于第一哈希函数601和第二哈希函数602来映射计算节点和存储卷。表示计算节点和存储卷的映射的映射信息可以存储在计算节点和存储卷中。当计算节点执行故障恢复或存储卷执行复制操作时,可以参考映射信息。

图6B是示出了计算节点和存储卷的映射信息的图。可以针对每个对象标识符确定映射信息。例如,图6B示出了当存储关于数据的三个副本时与具有对象标识符“1”的数据相关联的计算节点和存储卷。

映射信息可以包括主计算节点(计算节点12)、备份计算节点(计算节点22和计算节点31)、主存储卷(存储卷22)和备份存储卷(存储卷11和存储卷32)。

当主计算节点(计算节点12)和主存储节点(存储节点2)中没有发生故障时,可以向主计算节点(计算节点12)提供对具有对象标识符“1”的数据的输入/输出的请求,并且可以访问主存储卷(存储卷22)。当检测到主计算节点(计算节点12)或主存储节点(存储节点2)中发生故障时,可以参考计算节点和存储卷之间的映射信息来搜索备份计算节点或备份存储卷,并且备份计算节点或备份存储卷可以用于故障恢复。

根据示例实施例,计算节点和存储节点可以彼此分离,并且因此可以简单地改变计算节点和存储卷的映射,从而快速地完成故障恢复。在下文中,将参照图7至图9详细地描述存储系统的数据输入/输出操作和故障恢复操作。

图7是示出了根据示例实施例的存储系统的数据输入/输出操作的图。

图7所示的存储系统300可以对应于参照图4描述的存储系统300。在存储系统300中,相对于第一对象标识符分配的计算节点和存储卷以阴影示出。另外,主计算节点3112和主存储卷3222由粗线示出。

在操作S201中,存储系统300可以从客户端接收对具有第一对象标识符的第一数据的输入/输出请求。例如,客户端可以使用与参照图6A描述的第一哈希函数601相同的哈希函数来确定主计算节点以处理数据。在图6A的示例中,计算节点3112可以被确定为主计算节点。另外,客户端可以控制包括主计算节点3112的第一主机服务器311,以便处理输入/输出请求。

在操作S202中,主计算节点3112可以响应于输入/输出请求,经由网络330访问主存储卷3222。

主计算节点3112可以使用参照图6A描述的第二哈希函数602来确定存储具有第一标识符的数据的主存储卷3222和备份存储卷3211和3232。主计算节点3112可以存储表示与第一标识符相关联的计算节点和存储卷的映射信息。另外,主计算节点3112可以向主存储节点322、备份计算节点3122和3131以及备份存储节点321和323提供映射信息。

当输入/输出请求是读取请求时,主计算节点3112可以从主存储卷3222获取数据。另外,当输入/输出请求是写入请求时,主计算节点3112可以经由网络330向主存储节点322提供复制请求连同第一数据。

主存储节点322可以响应于复制请求将第一数据存储在主存储卷3222中。另外,在操作S203和S204中,主存储节点322可以将第一数据复制到备份存储卷3211和3232。例如,主存储节点322可以通过经由网络330向备份存储节点321和323提供第一数据和写入请求来复制数据。

根据示例实施例,主存储节点322可以执行数据复制操作,从而确保存储系统300的可用性,并防止主计算节点3112的瓶颈。

图8和图9是示出了根据示例实施例的存储系统的故障恢复操作的图。

图8示出了当主计算节点3112中发生故障时的故障恢复操作。图8所示的存储系统300可以对应于参照图4描述的存储系统300。在存储系统300中,与第一对象标识符相关联的计算节点和存储节点以阴影示出。另外,主计算节点3112和主存储卷3222由粗线示出。

在操作S301中,存储系统300可以从客户端接收对具有第一对象标识符的第一数据的输入/输出请求。以与关于图7中的操作S201描述的方式类似的方式,第一主机服务器311可以接收来自客户端的输入/输出请求。

在操作S302中,第一主机服务器311可以检测到主计算节点3112中已经发生故障。例如,当第一主机服务器311提供信号使得主计算节点3112处理输入/输出请求,并且超过预定时间段没有确认时,可以确定主计算节点3112中发生了故障。

在操作S303中,第一主机服务器311可以将备份计算节点3122和3131之一更改为主计算节点,并向更改后的主计算节点发送输入/输出请求。例如,第一主机服务器311可以使用参照图6A描述的第一哈希函数601来确定备份计算节点3122和3131,并且可以将备份计算节点3122更改为主计算节点。为了向更改后的主计算节点3122提供输入/输出请求,第一主机服务器311可以参考关于参照图5A描述的计算节点的层次结构的信息,向第二主机服务器312发送输入/输出请求。

在操作S304中,主计算节点3122可以响应于输入/输出请求,经由网络330访问主存储卷3222。主计算节点3122可以挂载存储卷3222,使得主计算节点3122访问存储卷3222。挂载存储卷可以指将存储卷提供的逻辑存储空间分配给计算节点。

当输入/输出请求是写入请求时,主计算节点3122可以向主存储节点322提供复制请求。主存储节点322可以将第一数据复制到备份存储卷3211和3232。

根据示例实施例,当主计算节点中发生故障时,预定的备份计算节点可以挂载主存储卷,并且该备份计算节点可以处理数据输入/输出请求。因此,存储系统可以在不执行移动存储卷中存储的数据的操作等的情况下从系统故障中恢复,从而提高存储设备的可用性。

图9示出了当主存储节点322中发生故障时的故障恢复操作。图9所示的存储系统300可以对应于参照图4描述的存储系统300。在存储系统300中,与第一对象标识符相关联的计算节点和存储节点以阴影示出。另外,主计算节点3112和主存储卷3222由粗线示出。

在操作S401中,存储系统300可以从客户端接收对具有第一对象标识符的第一数据的输入/输出请求。以与关于图7中的操作S201描述的方式类似的方式,第一主机服务器311可以接收来自客户端的输入/输出请求。

在操作S402中,主计算节点3112可以检测到主存储节点322中已经发生故障。例如,当主计算节点3112向主存储节点322提供输入/输出请求,并且超过预定时间段没有确认时,可以确定主存储节点322中发生了故障。

在操作S403中,主计算节点3112可以将备份存储卷3211和3232之一更改为主存储卷,并访问更改后的主存储卷。例如,主计算节点3112可以使用参照图6B描述的第二哈希函数602来确定备份存储卷3211和3232,并且将备份存储卷3211确定为主存储卷。另外,主计算节点3112可以挂载更改后的主存储卷3211而不是现有的主存储卷3222。另外,主计算节点3112可以经由存储节点321访问主存储卷3211。

根据示例实施例,当主存储节点中发生故障时,主计算节点可以预先挂载存储数据副本的备份存储卷,并可以从该备份存储卷中获取数据,或者将数据存储在该备份存储卷中。存储系统可以在不执行诸如移动存储卷中存储的数据之类的过程的情况下从系统故障中恢复,从而提高存储设备的可用性。

图10是示出了根据示例实施例的应用了存储系统的数据中心的图。

参照图10,数据中心4000是收集各种类型的数据并提供服务的设施,并且也可以被称为数据存储中心。数据中心4000可以是用于操作搜索引擎和数据库的系统,并且可以是在诸如银行或政府机构等业务中使用的计算系统。数据中心4000可以包括应用服务器4100至4100n和存储服务器4200至4200m。应用服务器4100至4100n的数量和存储服务器4200至4200m的数量可以根据示例实施例以各种方式选择,并且应用服务器4100至4100n的数量和存储服务器4200至4200m的数量可以彼此不同。

应用服务器4100或存储服务器4200可以包括处理器4110和4210以及存储器4120和4220中的至少一个。当以存储服务器4200作为示例进行描述时,处理器4210可以控制存储服务器4200的整体操作,并访问存储器4220以执行加载到存储器4220中的指令和/或数据。存储器4220可以是双倍数据速率同步DRAM(DDR SDRAM)、高带宽存储器(HBM)、混合存储器立方体(HMC)、双列直插式存储器模块(DIMM)、傲腾DIMM和/或非易失性DIMM(NVMDIMM)。根据示例实施例,可以以各种方式选择存储服务器4200中包括的处理器4210的数量和存储器4220的数量。在示例实施例中,处理器4210和存储器4220可以提供处理器-存储器对。在示例实施例中,处理器4210的数量和存储器4220的数量可以彼此不同。处理器4210可以包括单核处理器或多核处理器。对存储服务器4200的上述描述也可以类似地应用于应用服务器4100。根据示例实施例,应用服务器4100可以不包括存储设备4150。存储服务器4200可以包括至少一个存储设备4250。存储服务器4200中包括的存储设备4250的数量可以根据示例实施例以各种方式来选择。

应用服务器4100至4100n和存储服务器4200至4200m可以经由网络4300彼此通信。网络4300可以使用光纤通道(FC)或以太网来实现。在这种情况下,FC可以是用于相对高速数据传输的介质,并且可以使用提供高性能/高可用性的光开关。根据网络4300的接入方案,存储服务器4200至4200m可以被提供为文件存储、块存储或对象存储。

在示例实施例中,网络4300可以是仅用于存储的网络,例如,存储区域网络(SAN)。例如,SAN可以是使用FC网络并根据FC协议(FCP)实现的FC-SAN。对于另一示例,SAN可以是使用TCP/IP网络并根据iSCSI(TCP/IP上的SCSI或互联网SCSI)协议实现的IP-SAN。在另一示例实施例中,网络4300可以是诸如TCP/IP网络之类的通用网络。例如,网络4300可以根据诸如NVMe-oF之类的协议来实现。

在下文中,主要描述应用服务器4100和存储服务器4200。对应用服务器4100的描述也可以应用于另一应用服务器4100n,并且对存储服务器4200的描述也可以应用于另一存储服务器4200m。

应用服务器4100可以经由网络4300将用户或客户端请求存储的数据存储在存储服务器4200至4200m之一中。另外,应用服务器4100可以经由网络4300从存储服务器4200至4200m之一获取用户或客户端请求读取的数据。例如,应用服务器4100可以被实现为Web服务器或数据库管理系统(DBMS)。

应用服务器4100可以经由网络4300访问另一应用服务器4100n中包括的存储器4120n或存储设备4150n,并且可以经由网络4300访问存储服务器4200至4200m中包括的存储器4220至4220m或存储设备4250至4250m。因此,应用服务器4100可以对应用服务器4100至4100n和/或存储服务器4200至4200m中存储的数据执行各种操作。例如,应用服务器4100可以执行用于在应用服务器4100至4100n和/或存储服务器4200至4200m之间移动或复制数据的指令。在这种情况下,数据可以经由存储服务器4200至4200m的存储器4220至4220m从存储服务器4200至4200m的存储设备4250至4250m移动到应用服务器4100至4100n的存储器4120至4120n,或直接移动到应用服务器4100至4100n的存储器4120至4120n。经由网络4300移动的数据可以是用于安全或隐私的加密数据。

当以存储服务器4200作为示例进行描述时,接口4254可以提供处理器4210和控制器4251之间的物理连接、以及网络互连器(NIC)4240和控制器4251之间的物理连接。例如,接口4254可以以经由专用电缆直接访问存储设备4250的直接附接存储(DAS)方案来实现。另外,例如,接口4254可以实现为NVM快速(NVMe)接口。

存储服务器4200还可以包括开关4230和NIC 4240。开关4230可以在处理器4210的控制下选择性地将处理器4210和存储设备4250相互连接,或者选择性地将NIC 4240和存储设备4250相互连接。

在示例实施例中,NIC 4240可以包括网络接口卡、网络适配器等。NIC 4240可以通过有线接口、无线接口、蓝牙接口、光学接口等连接到网络4300。NIC 4240可以包括内部存储器、数字信号处理器(DSP)、主机总线接口等,并且可以经由主机总线接口连接到处理器4210和/或开关4230。主机总线接口可以被实现为接口4254的上述示例之一。在示例实施例中,NIC 4240可以与处理器4210、开关4230和存储设备4250中的至少一个集成。

在存储服务器4200至4200m或应用服务器4100至4100n中,处理器可以向存储设备4150至4150n和4250至4250m或存储器4120至4120n和4220至4220m发送命令以编程或读取数据。在这种情况下,数据可以是经由纠错码(ECC)引擎纠错的数据。该数据是经数据总线反转(DBI)或数据屏蔽(DM)处理的数据,并且可以包括循环冗余码(CRC)信息。为了安全或隐私,该数据可以是加密数据。

存储设备4150至4150n和4250至4250m可以响应于从处理器接收到的读取命令,向NAND闪存设备4252至4252m发送控制信号和命令/地址信号。因此,当从NAND闪存设备4252至4252m读取数据时,读使能(RE)信号可以作为数据输出控制信号被输入,以用于将数据输出到DQ总线。可以使用RE信号来生成数据选通(DQS)信号。命令/地址信号可以根据写使能(WE)信号的上升沿或下降沿被锁存在页缓冲器中。

控制器4251可以控制存储设备4250的整体操作。在示例实施例中,控制器4251可以包括静态随机存取存储器(SRAM)。控制器4251可以响应于写入命令将数据写入NAND闪存设备4252,或者可以响应于读取命令从NAND闪存设备4252读取数据。例如,可以从存储服务器4200中的处理器4210、另一存储服务器4200m中的处理器4210m、或应用服务器4100至4100n中的处理器4110至4110n提供写入命令和/或读取命令。DRAM 4253可以临时存储(缓冲)要写入NAND闪存设备4252的数据或从NAND闪存设备4252读取的数据。另外,DRAM 4253可以存储元数据。这里,元数据是用户数据或由控制器4251生成以管理NAND闪存设备4252的数据。存储设备4250可以包括用于安全或隐私的安全元件(SE)。

应用服务器4100至4100n可以包括多个计算节点。另外,存储服务器4200至4200m可以包括存储节点,每个存储节点提供多个存储卷。数据中心4000可以在不同的计算节点中分发和处理具有不同标识符的数据,并且可以在不同的存储卷中分发和存储数据。为了提高可用性,数据中心400可以分配主计算节点和备份计算节点以处理具有标识符的数据,并且可以分配主存储卷和备份存储卷以存储数据。客户端请求写入的数据可能需要复制在备份存储卷中。

根据示例实施例,主计算节点可以将复制操作卸载到提供主存储卷的主存储节点。响应于来自客户端的写入请求,主计算节点可以向主存储节点提供复制请求。主存储节点可以将数据存储在主存储卷中,并将数据复制到备份存储卷中。

根据示例实施例,可以从不同的应用服务器分配用于处理具有标识符的数据的计算节点,并且可以从不同的存储节点分配用于存储数据的存储卷。根据示例实施例,计算节点和存储卷可以是物理上分布的,并且数据中心4000的可用性可以提高。

根据示例实施例,当主计算节点中存在故障时,可以在备份计算节点上挂载主存储卷。当主存储节点中存在故障时,可以在主计算节点上挂载备份存储卷。当主计算节点或主存储节点中存在故障时,数据中心4000可以通过执行计算节点和存储卷的挂载来从故障中恢复。从故障中恢复可能不需要移动存储卷的数据等操作,并且因此可以快速地执行故障恢复。

虽然以上已经示出并描述了示例实施例,但是对于本领域技术人员将显然的是,在不脱离由所附权利要求限定的本发明构思的范围的情况下,可以进行修改和改变。

相关技术
  • 一种基于分布式存储系统的选举方法及分布式存储系统
  • 一种分布式存储系统的数据处理方法及分布式存储系统
技术分类

06120116022777