CN110968642A - 用于分布式系统中的数据存储的系统和方法 - Google Patents
用于分布式系统中的数据存储的系统和方法 Download PDFInfo
- Publication number
- CN110968642A CN110968642A CN201910879289.1A CN201910879289A CN110968642A CN 110968642 A CN110968642 A CN 110968642A CN 201910879289 A CN201910879289 A CN 201910879289A CN 110968642 A CN110968642 A CN 110968642A
- Authority
- CN
- China
- Prior art keywords
- data
- silo
- copy
- storing
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
- G06F11/2058—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using more than 2 mirrored copies
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
- G06F11/2064—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring while ensuring consistency
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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]
-
- 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/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or 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)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种数据存储系统包含加速器池和数据筒仓。所述加速器池:获得对第一数据的数据存储请求;将所述第一数据的副本在本地存储在所述加速器池的存储器中;响应于存储所述第一数据的所述副本:向生成所述数据存储请求的请求实体发送确认;以及在发送所述确认之后,将所述第一数据的至少一个第二副本存储在所述数据筒仓中。所述确认指示所述第一数据冗余地存储在至少两个不同的故障域中。
Description
背景技术
计算装置可以存储信息。例如,计算装置可以包含内部存储装置,例如用于存储信息的硬盘驱动器。信息可以按计算机文件的形式存储。所存储的信息可以表示由计算装置托管的应用程序的状态。
发明内容
在一个方面,根据本发明的一个或多个实施例的数据存储系统包含加速器池和数据筒仓。所述加速器池:获得对第一数据的数据存储请求;将所述第一数据的副本在本地存储在所述加速器池的存储器中;响应于存储所述第一数据的所述副本:向生成所述数据存储请求的请求实体发送确认;以及在发送所述确认之后,将所述第一数据的至少一个第二副本存储在所述数据筒仓中。所述确认指示所述第一数据冗余地存储在至少两个不同的故障域中。
在一个方面,根据本发明的一个或多个实施例的用于在数据存储系统中存储数据的方法包含:通过加速器池获得对第一数据的数据存储请求;将所述第一数据的副本在本地存储在所述加速器池的存储器中;响应于存储所述第一数据的所述副本:向生成所述数据存储请求的请求实体发送确认;以及在发送所述确认之后,将所述第一数据的至少一个第二副本存储在数据筒仓中。所述确认指示所述第一数据冗余地存储在至少两个不同的故障域中。
在一个方面,根据本发明的一个或多个实施例的非暂时性计算机可读介质包含计算机可读程序代码,其在由计算机处理器执行时使得所述计算机处理器执行用于将数据存储在数据存储系统中的方法。所述方法包含:通过加速器池获得对第一数据的数据存储请求;将所述第一数据的副本在本地存储在所述加速器池的存储器中;响应于存储所述第一数据的所述副本:向生成所述数据存储请求的请求实体发送确认;以及在发送所述确认之后,将所述第一数据的至少一个第二副本存储在数据筒仓中。所述确认指示所述第一数据冗余地存储在至少两个不同的故障域中。
附图说明
将参考附图描述本发明的某些实施例。然而,所述附图仅通过实例说明本发明的某些方面或实施方案,且并不打算限制权利要求书的范围。
图1.1展示根据本发明的一个或多个实施例的系统的图。
图1.2展示根据本发明的一个或多个实施例的数据存储系统的图。
图2.1展示根据本发明的一个或多个实施例的将数据存储在数据存储系统中的方法的流程图。
图2.2展示根据本发明的一个或多个实施例的用于将数据发送到数据筒仓的方法的流程图。
图3.1展示根据本发明的一个或多个实施例的将数据发送到数据存储系统的方法的流程图。
图3.2展示根据本发明的一个或多个实施例的确认数据存储在数据存储系统中的方法的流程图。
图4.1-4.12展示在实例系统内存储数据时的不同时间点的实例系统的图。
图5展示根据本发明的一个或多个实施例的计算装置的图。
具体实施方式
现将参考附图来描述具体实施例。在以下描述中,将众多细节阐述为本发明的实例。所属领域的技术人员应理解,可在无这些具体细节的情况下实践本发明的一或多个实施例,并且在不脱离本发明的范围的情况下,众多变化或修改可为可能的。省略所属领域的一般技术人员已知的某些细节,以避免混淆描述。
在所述图的以下描述中,在本发明的各种实施例中,关于一个图描述的任一组件可等效于关于任一其它图描述的一个或多个相似命名的组件。为简洁起见,将不关于每一个图来重复此等组件的描述。因此,每一图的组件的每个实施例被以引用的方式并入,且假定为任选地存在于具有一个或多个相似命名的组件的每一其它图内。另外,根据本发明的各种实施例,图的组件的任何描述应被解释为任选实施例,其可除了关于任一其它图中的对应的相似命名的组件描述的实施例外再实施,与所述实施例一起实施,或代替所述实施例加以实施。
一般而言,本发明的实施例涉及用于存储数据的系统、装置和方法。根据本发明的实施例的系统可以是数据存储系统。数据存储系统可以存储多个数据副本以用于数据冗余目的。至少一些数据副本可以存储在不同的故障域中,以提高检索数据的可靠性。
在本发明的一个或多个实施例中,系统可以包含加速器池,用于向客户端提供高性能数据存储服务。加速器池可以包含被优化以用于存储客户端数据的任何数目个物理装置。例如,物理装置可以包含非易失性随机存取存储器或其它高性能存储器装置。当物理装置接收到客户端数据时,客户端数据可以存储在高性能存储器装置中。在客户端数据存储在存储器中之后,加速器池可以在客户端数据存储在高性能存储器装置中之后发送已经存储客户端数据的确认。在本发明的一个或多个实施例中,确认可以指示客户端数据冗余地存储在至少两个位置,而客户端数据实际上在发送确认时没有冗余地存储在两个位置。
在本发明的一个或多个实施例中,加速器池在发送确认之后协调在数据筒仓中存储客户端数据的至少一第二副本。通过这样做,本发明的实施例可以通过在仍在执行客户端数据的冗余存储的同时发送完成冗余地存储客户端数据的确认来向客户端提供超高性能数据存储服务。相比之下,由于客户端数据的多个副本的实际冗余存储所需的持续时间,当代数据存储系统可能无法提供类似的性能。因此,本发明的实施例可以通过从客户端的角度减少在数据存储系统中存储数据的延时来改善分布式系统中的数据存储技术。
在本发明的一个或多个实施例中,在与加速器池相比时,数据筒仓是性能较低的计算装置。例如,数据筒仓可能具有较慢的互连速度、较低的存储器带宽和/或较低的存储带宽(或存储装置的其它特性,例如每秒输入/输出操作数(IOPS))。
在本发明的一个或多个实施例中,数据存储系统可以定量存取加速器池。例如,数据存储系统可以仅允许或以其它方式授权高数据吞吐量用户存取加速器池。其他用户可能会降级为仅经由数据筒仓存储数据。以这种方式,本发明的实施例可以提供一种可分级系统,其不要求分布式系统的所有计算装置都具有高性能。
在本发明的一个或多个实施例中,数据存储系统可以通过在不同的故障域中存储数据的副本来提供数据冗余。例如,加速器池可以在第一故障域中,并且数据筒仓可以在独立于第一故障域的第二故障域中。
图1.1展示根据本发明的一个或多个实施例的实例系统的图。所述实例系统可以包含将数据存储在数据存储系统(110)中并且从其检索数据的客户端(100)。可以存在利用数据存储系统(110)提供的数据存储服务的任何数目个客户端(例如,100A、100N)。客户端(100)可以通过有线和/或无线网络的任何组合连接到数据存储系统(110)。下文论述图1.1中所示系统的每个组件。
客户端(100)可以是计算装置。计算装置可以是例如移动电话、平板计算机、笔记本电脑、台式计算机、服务器或云资源。所述计算装置可以包含一个或多个处理器、存储器(例如,随机存取存储器)和永久性存储装置(例如,磁盘驱动器、固态驱动器等)。所述永久性存储装置可以存储计算机指令,例如计算机代码,所述计算机指令在由计算装置的处理器执行时使所述计算装置执行在本申请中描述的功能和在图2.1-3.2中所说明的方法的全部或一部分。在不脱离本发明的情况下,客户端(100)可以是其它类型的计算装置。关于计算装置的额外细节,请参考图5。
在本发明的一个或多个实施例中,客户端(100)托管应用程序(未展示)。每个客户端(例如,100A、100N)可以托管任何数目个应用程序。例如,第一客户端可以托管单个应用程序,而第二客户端可以托管两个应用程序。客户端(100)中的每一个可以托管类似或不同的应用程序。
在本发明的一个或多个实施例中,由客户端(100)托管的不同应用程序具有不同的数据存储吞吐量要求。例如,数据库应用程序可能具有高数据存储吞吐量要求。相比之下,即时消息传递应用程序可能具有低数据存储吞吐量要求。
在本发明的一个或多个实施例中,客户端(100)可以将应用程序数据存储在数据存储系统(110)中。例如,客户端(100)可以在数据存储系统(110)中存储应用程序的数据的一部分、应用程序的数据的副本和/或与应用程序相关联的数据。
在本发明的一个或多个实施例中,客户端(100)可以选择性地使用数据存储系统(110)的功能来服务于由客户端(100)托管的应用程序的数据存储需求。如下文将更详细论述的,与用于低吞吐量数据存储的数据存储系统(110)的容量相比,数据存储系统(110)可能具有用于高吞吐量数据存储的有限容量。客户端(100)可以取决于相应应用程序的数据存储需求选择性地指派应用程序以使用数据存储系统(110)的高吞吐量数据存储容量或低吞吐量数据存储容量。
为了执行客户端(100)的上述功能,客户端(100)可以包含以下功能:(i)识别应用程序的数据存储吞吐量要求,(ii)与数据存储系统(110)通信,以及(iii)经由数据存储系统(110)存储和检索数据。客户端(100)可以包含额外功能而不脱离本发明。
数据存储系统(110)可以是包含任何数目个计算装置的分布式系统。计算装置可以是例如移动电话、平板计算机、笔记本电脑、台式计算机、服务器或云资源。所述计算装置可以包含一个或多个处理器、存储器(例如,随机存取存储器)和永久性存储装置(例如,磁盘驱动器、固态驱动器等)。所述永久性存储装置可以存储计算机指令,例如计算机代码,所述计算机指令在由计算装置的处理器执行时使所述计算装置执行在本申请中描述的功能和在图2.1-3.2中所说明的方法的全部或一部分。在不脱离本发明的情况下,数据存储系统(110)可以包含其它类型的计算装置。关于计算装置的额外细节,请参考图5。
数据存储系统(110)可以利用任何数目个计算装置的虚拟化资源。例如,数据存储系统(110)可以是使用任何数目个计算装置的计算资源执行的虚拟化实体。计算资源可以是例如处理器周期、存储器容量、存储容量和/或通信容量。在不脱离本发明的情况下,计算资源可以是其它类型的资源。
在本发明的一个或多个实施例中,数据存储系统(110)向客户端(100)提供数据存储服务。例如,数据存储系统(110)可以从客户端(100)接收数据,并且存储所接收的数据以供将来由客户端(100)或其它实体检索。
在本发明的一个或多个实施例中,数据存储系统(110)向客户端(100)提供至少两类数据存储服务。第一类服务是高吞吐量服务。高吞吐量服务允许客户端(100)以很少的延时以高存储速率在数据存储系统(110)中存储一些数据。第二类服务是低吞吐量服务。低吞吐量服务允许客户端(100)以比高吞吐量服务提供的存储服务速率低的存储速率存储大量数据。
在本发明的一个或多个实施例中,当与数据存储系统(110)的低吞吐量数据存储服务的数量相比时,数据存储系统(110)具有有限数量的高吞吐量数据存储服务供提供给客户端(100)。例如,数据存储系统(110)可能针对数据存储系统(110)能够提供低吞吐量数据存储服务的每十个客户端仅能够向一个客户端提供高吞吐量数据存储服务。关于数据存储系统(110)的额外细节,请参考图1.2。
尽管图1.1的系统已说明为仅包含客户端(100)和数据存储系统(110),但本发明的实施例可以包含额外元件而不脱离本发明。例如,图1.1的系统可以包含其它命令和控制装置、网络管理设备和/或其它存储装置,例如长期存储装置。
图1.2展示根据本发明的一个或多个实施例的数据存储系统(110)的图。如关于图1.1所论述,数据存储系统(110)可以向客户端或其它实体提供数据存储服务。为了提供上述功能,数据存储系统(110)可以包含加速器池(120)和一个或多个数据筒仓(130)。加速器池(120)和数据筒仓(130)可以协同工作以冗余地存储来自客户端或其它实体的数据。下文论述数据存储系统(110)的每个组件。
在本发明的一个或多个实施例中,加速器池(120)向客户端提供高吞吐量数据存储服务。加速器池(120)可以包含任何数目个加速器(例如,120A、120N),每个加速器向客户端提供数据存储服务。
在本发明的一个或多个实施例中,加速器是物理装置。物理装置可以是计算装置。计算装置可以是例如服务器、个人计算机、笔记本电脑、嵌入式计算装置或任何其它类型的可编程计算装置。所述物理装置可以包含电路系统。在本发明的一个或多个实施例中,计算装置包含一个或多个处理器、存储器、存储装置和/或网络接口。处理器可以是例如中央处理器单元、嵌入式处理器、数字信号处理器、专用集成电路、多核处理器或任何其它类型的数字处理器。存储器可以是例如随机存取存储器。存储装置可以是例如永久性存储装置,例如硬盘驱动器、固态驱动器、磁带驱动器与任何其它类型的非暂时性计算机可读存储介质的任何组合。
在本发明的一个或多个实施例中,加速器包含非易失性存储器。例如,非易失性存储器可以是非易失性双列直插式固态存储器模块。通过包含非易失性存储器,将数据存储在存储器中可能比将数据存储在易失性存储器中风险小。
在本发明的一个或多个实施例中,加速器的永久性存储装置包含当由加速器的处理器执行时使加速器提供贯穿本申请所描述的加速器的功能的指令。执行存储在加速器的永久性存储装置中的指令可以使加速器执行图2.1-3.2中所说明的方法的全部或一部分。
为了向客户端提供高吞吐量数据存储服务,加速器池(120)可以被编程为:(i)在接收到数据时将从客户端接收的数据存储在存储器中,(ii)在将数据存储在存储器中之后向客户端发送确认,(iii)在向客户端发送确认之后将数据的一个或多个副本存储在数据筒仓(130)中,和/或(iv)将所存储的数据从存储器迁移到存储装置。以这种方式,本发明的实施例可以向客户端提供超高吞吐量数据存储服务。
在本发明的一个或多个实施例中,确认指示数据已被冗余地存储。如果至少数据的第一副本存储在第一故障域中并且数据的第二副本存储在独立于第一故障域的第二故障域中,则可以冗余地存储数据。
如本文中所使用,故障域是指当关键装置或网络服务遇到问题时受到负面影响的网络部分。独立故障域可能不包含相同的关键装置或网络服务。因此,当故障域的关键装置或服务遇到问题时,只有故障域受到问题的影响。其它独立的故障域不会遇到由关键服务或装置的故障引起的问题。例如,第一故障域可以包含向第一组计算装置提供网络服务的路由器。第二故障主体可以包含向第二组计算装置提供网络服务的第二路由器。因为每组计算装置不利用相同的路由器,所以第一路由器遇到的问题不会影响第二组计算装置,第二路由器遇到的第二问题也不可能影响第一组计算装置。
在本发明的一个或多个实施例中,加速器池(120)与数据筒仓(130)位于单独的故障域中。因此,将数据副本存储在加速器池中并且将数据的第二副本存储在数据筒仓中导致数据被冗余地存储。
在本发明的一个或多个实施例中,加速器池(120)包含将数据副本直接写入数据筒仓(130)的存储器的功能。例如,加速器池(120)可以包含用于数据筒仓(130)的存储器的远程直接存储器存取(RDMA)功能。在这种场景中,加速器池(120)可能能能够绕过数据缓冲器和操作系统以将数据副本直接写入到数据筒仓(130)的存储器。例如,加速器池(120)可以支持零副本网络以将数据副本直接写入到数据筒仓(130)的存储器。通过这样做,数据筒仓(130)的网络适配器可以从加速器池(120)接收数据的副本并且将其直接存储到数据筒仓(130)的存储器中,而不利用处理资源、高速缓存并且不需要上下文切换。换句话说,将数据的副本存储在数据筒仓(130)的存储器中可以与数据筒仓(130)的其它系统操作并行地完成,而不会损害数据筒仓(130)的功能。
在本发明的一个或多个实施例中,加速器池(120)包含将所存储数据的副本从存储装置迁移到存储器的功能。例如,在某些情况下,客户端可能频繁请求存取先前存储的数据。在这种场景中,加速器池(120)可以跟踪客户端存取所存储的数据副本的频率。频繁存取的所存储数据副本可能会从存储装置迁移到存储器。通过这样做,可以改善频繁存取的所存储数据的可用性。例如,从存储器中检索数据的延时在从存储装置检索数据时可能显著较少。以这种方式,加速器池(120)还可以为来自客户端的所存储数据提供智能高速缓存服务。
在本发明的一个或多个实施例中,加速器池(120)通过有线和/或无线网络的任何组合连接到数据筒仓(130)。加速器池(120)的加速器可以类似地通过有线和/或无线网络的任何组合彼此互连。
在本发明的一个或多个实施例中,数据筒仓(130)向客户端提供低吞吐量数据存储服务。数据筒仓(130)可以通过以下方式向客户端提供低吞吐量数据存储服务:(i)在加速器池(120)的指导下存储数据副本,或(ii)存储从客户端直接接收的数据副本。如果直接从客户端接收数据,则数据筒仓(130)可以存储数据而不与加速器池(120)交互。
数据筒仓(130)可以包含任何数目个筒仓(例如,132、134)。任何数目个筒仓中的每一个可以处于独立的故障域中。例如,筒仓A(132)可以处于第一故障域中,所述第一故障域独立于筒仓B(134)所驻留的第二故障域。
筒仓(132、134)中的每一个可以包含任何数目个存储装置。存储装置(例如,132A、132N、134A、134N)可以包含存储数据的功能。
在本发明的一个或多个实施例中,存储装置是物理装置。存储装置可以是计算装置。计算装置可以是例如服务器、个人计算机、笔记本电脑、嵌入式计算装置或任何其它类型的可编程计算装置。所述物理装置可以包含电路系统。在本发明的一个或多个实施例中,计算装置包含一个或多个处理器、存储器、存储装置和/或网络接口。处理器可以是例如中央处理器单元、嵌入式处理器、数字信号处理器、专用集成电路、多核处理器或任何其它类型的数字处理器。存储器可以是例如随机存取存储器。存储装置可以是例如永久性存储装置,例如硬盘驱动器、固态驱动器、磁带驱动器与任何其它类型的非暂时性计算机可读存储介质的任何组合。
在本发明的一个或多个实施例中,存储装置的永久性存储包含当由存储装置的处理器执行时使存储装置提供贯穿本申请描述的存储装置的功能的指令。执行存储在存储装置的永久性存储中的指令可以使存储装置执行图2.1-3.2中所说明的方法的全部或一部分。
在本发明的一个或多个实施例中,筒仓(132、134)可以作为分布式系统而操作。换句话说,每个筒仓的每个存储装置可以被编程为协同地提供贯穿本申请所描述的筒仓的功能。类似地,筒仓(132、134)可以作为分布式系统而操作,其协同地提供数据筒仓(130)的功能。
为了向客户端提供低吞吐量数据存储服务,数据筒仓(130)可以被编程为:(i)从加速器池或客户端获得用于存储的数据的副本,以及(ii)将数据的副本冗余地存储在数据筒仓中。为了在数据筒仓中冗余地存储数据的副本,可以将两个副本存储在单独的筒仓中。如上所述,每个筒仓(例如,132、134)可以处于独立的故障域中。因此,通过将两个数据副本存储到筒仓中,可以冗余地存储数据。
在本发明的一个或多个实施例中,加速器池(120)包含用于使其它实体直接将数据副本写入到数据筒仓(130)的存储器的功能。例如,数据筒仓(130)可以支持数据筒仓(130)的存储器的RDMA。在这种场景中,加速器池(120)可能能够绕过数据筒仓(130)的数据缓冲器和/或操作系统,以将数据副本直接写入到数据筒仓(130)的存储器。在这种场景中,数据筒仓(130)可以监控存储器的RDMA写入。为了确保所存储数据的冗余,数据筒仓(130)可以被编程为在数据筒仓(130)识别RDMA写入之后自动地将所存储数据的第二副本存储在另一筒仓中。
虽然为了简洁起见,加速器池(120)和数据筒仓(130)已被描述为包含有限数目个组件,但这些元件个别地,并且数据存储系统(110)可以包含额外组件而不脱离本发明。
如上文所论述,数据存储系统可以向客户端提供高吞吐量数据存储服务。图2.1-2.2展示根据本发明的一个或多个实施例的可由图1.1的系统的组件执行的方法。
图2.1展示根据本发明的一个或多个实施例的方法的流程图。根据本发明的一个或多个实施例,图2.1中所描绘的方法可以用于向客户端提供高吞吐量数据存储服务。图2.1中所示的方法可以由例如数据存储系统(例如,110,图1.1)来执行。在不脱离本发明的情况下,图1.1中所说明的系统的其它组件可执行图2.1的方法。
在步骤200中,从客户端获得数据。
在本发明的一个或多个实施例中,数据由数据存储系统的加速器池获得。数据可以是例如数据库的副本或其它数据结构。在不脱离本发明的情况下,数据可以是其它类型的数据。
在本发明的一个或多个实施例中,通过从客户端或中间实体接收数据来获得数据。例如,客户端可以将数据发送到加速器池以供存储在数据存储系统中。
在步骤202中,将数据的副本存储在本地存储器中。
在本发明的一个或多个实施例中,本地存储器是非易失性随机存取存储器。
在本发明的一个或多个实施例中,本地存储器是易失性随机存取存储器。
在本发明的一个或多个实施例中,数据的副本存储在本地存储器中,而不将数据的副本存储在加速器池的存储装置中。在将数据副本存储在本地存储器中之后,可以在稍后时间点将数据的副本迁移到存储装置。
在本发明的一个或多个实施例中,加速器池可以指派加速器用于向客户端提供存储服务,以平衡加速器池的加速器上的客户端负载。在这种场景中,获得数据的加速器可能不向客户端提供数据存储服务。而是,可以指派未获得数据的第二加速器来向客户端提供数据存储服务。第二加速器而非获得数据的加速器可以将数据的副本存储在第二加速器的本地存储器中。
在步骤204中,向客户端发送确认。
在本发明的一个或多个实施例中,确认指示数据被存储。确认可以指示数据被冗余地存储。在加速器池发送确认时,可能不会冗余地存储数据。
在本发明的一个或多个实施例中,确认可以包含数据的数据存储系统参考。客户端可以使用数据存储系统参考来从数据存储系统检索数据的副本。一旦将数据存储系统参考指派给数据,数据存储系统的所有组件就可以将数据存储系统参考用于数据的识别目的或其它目的。数据存储系统参考可以是例如统一资源指示符或其它类型的参考,其唯一地或非唯一地识别数据存储系统内的数据。
在步骤206中,在将数据存储在本地存储装置中之后,将数据的第二副本发送到数据筒仓。
在本发明的一个或多个实施例中,加速器池和数据筒仓是同一数据存储系统的部分。例如,如关于图1.2所描述,加速器池可以包含提供高吞吐量数据存储服务的第一组计算装置,并且数据筒仓可以包含提供低吞吐量数据存储服务的第二组计算装置。提及高和低是指定由加速器池和数据筒仓相对于彼此但不相对于可提供数据存储服务的其它实体提供的数据存储服务的速率。
在本发明的一个或多个实施例中,数据的第二副本作为网络写入被发送到数据筒仓。例如,网络写入可以是到数据筒仓的存储器的RDMA写入。通过这样做,本发明的实施例可以绕过操作系统和数据筒仓的其它控制平面组件。在分布式系统中存储数据的其它类型的网络写入或方法可以用于在数据筒仓中存储数据的第二副本而不脱离本发明。
在本发明的一个或多个实施例中,在将确认发送到客户端之后,将数据的第二副本发送到数据筒仓。通过这样做,与仅在至少将数据的第二副本存储在数据筒仓或处于独立于加速器池所驻留的故障域的故障域中的其它实体中之后才发送确认的场景中可能提供的延时相比时,本发明的实施例可以从客户端的角度提供较低的数据存储延时。
在本发明的一个或多个实施例中,数据的第二副本经由图2.2所示的方法发送到数据筒仓。在不脱离本发明的情况下,可以经由其它方法将数据的第二副本发送到数据筒仓。
在步骤208中,将来自本地存储器的数据的副本迁移到存储装置。
在本发明的一个或多个实施例中,本地存储装置是加速器池的存储装置。例如,在加速器接收数据并且数据的副本存储在加速器的存储器中的场景中,数据的副本可以迁移到加速器的存储装置。在不脱离本发明的情况下,存储装置可以属于加速器池中的其它加速器。因此,在本发明的一些实施例中,在迁移数据副本的同时,数据的副本存储在加速器池的第一加速器的本地存储装置中,并且数据的第二副本存储在加速器池的第二加速器的存储器中。
在本发明的一个或多个实施例中,迁移数据副本包含将副本存储在存储装置中并且从本地存储器中删除副本。在本发明的一些实施例中,不从本地存储器中删除副本。
在本发明的一个或多个实施例中,本地存储器意味着向加速器提供存储器服务的物理装置。本地存储器可以由加速器托管。例如,物理装置可以是设置在加速器的母板中的非易失性存储器模块。在不脱离本发明的情况下,物理装置可以是提供存储器服务的其它类型的硬件装置。
在本发明的一个或多个实施例中,本地存储器意味着指派给加速器的虚拟化存储器。虚拟化存储器可以利用任何数目个计算装置的资源来向加速器提供存储器服务。
在本发明的一个或多个实施例中,本地存储装置意味着向加速器提供存储服务的物理装置。本地存储装置可以由加速器托管。例如,物理装置可以是可操作地连接到加速器的母板的固态磁盘驱动器。在不脱离本发明的情况下,物理装置可以是提供存储服务的其它类型的硬件装置。
在本发明的一个或多个实施例中,本地存储装置意味着指派给加速器的虚拟化存储装置。虚拟化存储装置可以利用任何数目个计算装置的资源来向加速器提供存储服务。
在本发明的一个或多个实施例中,存储装置是数据筒仓的本地存储装置。例如,数据的副本可以从加速器的本地存储器迁移到数据筒仓的本地存储装置。在这种场景中,加速器池可以监控数据副本的利用率,例如所存储数据副本的存取率,并且如果利用率低于预定阈值,则可以将数据的副本迁移到数据筒仓的存储装置而非加速器池的存储装置。如果数据副本的利用率改变,则加速器池可以将数据副本从数据筒仓的本地存储装置迁移到加速器池的本地存储装置。
所述方法可以在步骤208后结束。
图2.2展示根据本发明的一个或多个实施例的方法的流程图。根据本发明的一个或多个实施例,图2.2中所描绘的方法可以用于将数据副本发送到数据筒仓。图2.2中所示的方法可以由例如数据存储系统(例如,110,图1.1)来执行。在不脱离本发明的情况下,图1.1中所说明的系统的其它组件可以执行图2.2的方法。
在步骤210中,确定从客户端接收的数据是否具有高重要性。
在本发明的一个或多个实施例中,高重要性意味着数据的丢失可能损害从其获得数据的客户端执行其功能的能力,例如提供数据库服务、服务于网页或任何其它类型的计算机实施的服务。
在本发明的一个或多个实施例中,基于数据的类型确定数据的重要性。例如,客户端可以提供不同数据类型的列表以及这些数据类型中的每一种的相对重要性。具有超过预定阈值的重要性的数据可以被认为具有高重要性。具有低于预定阈值的重要性的数据可以被认为具有低重要性。如果客户端没有提供不同数据类型的重要性的列表,则加速器池可以应用默认规则来做出关于数据是否具有高重要性的确定。例如,默认规则可能是所有数据都具有高重要性。或者,默认规则可能是所有数据都具有低重要性。在不脱离本发明的情况下,可以使用其它类型的默认规则。在不脱离本发明的情况下,可以使用其它方法确定数据的重要性。
如果数据具有高重要性,则所述方法可以进行到步骤214。如果数据不具有高重要性,则所述方法可以进行到步骤212。
在步骤212中,将数据的第二副本发送到第一数据筒仓,以便依序存储在第一数据筒仓和第二数据筒仓中。
在本发明的一个或多个实施例中,数据的第二副本仅由加速器池发送到第一数据筒仓。换句话说,当在数据筒仓中依序存储数据的第二副本时,加速器池可以仅执行单个数据传送动作。
在本发明的一个或多个实施例中,第一数据筒仓将数据的第二副本的副本发送到第二数据筒仓以便存储。可以在第一数据筒仓将副本存储在第一数据筒仓中的同时或在第一数据筒仓将副本存储在第一数据筒仓中之后发送数据的第二副本的副本。通过这样做,可以跨三个单独的故障域存储至少三个数据副本。如上所述,加速器池和每个数据筒仓可以处于独立的故障域中。
通过分别在第一数据筒仓和第二数据筒仓中依序存储数据的副本,存储数据副本的过程可能比将副本并行存储在第一和第二数据筒仓中的情况更耗时。然而,通过这样做,可以利用较少的加速器池资源或在数据筒仓中冗余地存储数据。
所述方法可以在步骤212后结束。
返回到步骤210,如果数据具有高重要性,则所述方法可以进行到步骤214。
在步骤214中,将数据的第二副本发送到第一数据筒仓和第二数据筒仓两者以用于并行存储。换句话说,加速器池可以将数据的副本发送到两个数据筒仓。通过这样做,数据可以比数据在数据筒仓中依序存储的情况更快地存储在两个数据筒仓中。然而,这样做可能会利用加速器池的较多计算资源。
所述方法可以在步骤214后结束。
虽然步骤210已被描述为基于数据的重要性确定数据筒仓中的数据的依序存储或并行存储,但可以使用其它因素或规则来在步骤210中做出决定而不脱离本发明。例如,可以使用顺序或并行存储的默认规则。在另一实例中,可以基于客户端的身份进行确定。在这种场景中,某些客户端可能需要依序存储数据,而其它客户端可能需要并行存储数据。在额外实例中,可以基于加速器池的负载来进行确定。在这种场景中,加速器池可以基于在将数据存储在数据筒仓中时加速器池的可用计算资源而选择在数据筒仓中依序存储还是并行存储数据。
如上所述,根据本发明的实施例的数据存储系统可以提供不同质量的数据存储服务。质量可以是高吞吐量或低吞吐量。图3.1-3.2展示根据本发明的一个或多个实施例的方法,其可由图1.1的系统的组件执行以管理存储服务的不同质量(例如,类别)的提供。
图3.1展示根据本发明的一个或多个实施例的方法的流程图。根据本发明的一个或多个实施例,图3.1中所描绘的方法可以用于从数据存储系统提供数据存储服务。图3.1中所示的方法可以由例如客户端(例如,100,图1.1)来执行。在不脱离本发明的情况下,图1.1中所说明的系统的其它组件可以执行图3.1的方法。
在步骤300中,从编写器获得目的地为数据存储系统的数据写入请求。
在本发明的一个或多个实施例中,编写器是由客户端托管的应用程序。例如,编写器可以是数据库应用程序、网页服务器、电子邮件服务器后端或任何其它类型的应用程序。
在步骤302中,确定数据的编写器是否是高吞吐量编写器。
为了进行步骤302的确定,可以将编写器的身份与作为已知高速率编写器的编写器列表相匹配。所述列表可以由客户端的用户提供。在不脱离本发明的情况下,可以经由其它方法获得所述列表。如果编写器的身份与列表指定的任何编写器匹配,则编写器可被视为高吞吐量编写器。在不脱离本发明的情况下,可以经由其它方法将数据的编写器确定为高吞吐量编写器。
如果数据的编写器是高吞吐量编写器,则所述方法可以进行到步骤304。如果数据的编写器不是高吞吐量编写器,则所述方法可以进行到步骤306。
在步骤304,将由数据写入请求指定的数据的副本发送到数据存储系统的加速器池。一旦被加速器池接收,数据就可以由加速器池存储在数据存储系统中。
所述方法可以在步骤304后结束。
返回到步骤302,如果数据的编写器不是高吞吐量编写器,则所述方法可以在步骤302之后进行到步骤306。
在步骤306中,将由数据写入请求指定的数据的副本发送到数据存储系统的数据筒仓。数据的副本可以存储在数据存储系统的数据筒仓中,而不会损害加速器池的资源。
在本发明的一个或多个实施例中,通过将数据的第一副本存储在第一数据筒仓中并且将数据的第二副本存储在第二数据筒仓中,将数据的副本存储在数据筒仓中。在不脱离本发明的情况下,可以顺序地或并行地存储第一副本和第二副本。例如,第一副本可以存储在第一数据筒仓中,副本可以发送到第二数据筒仓,并且第二数据筒仓可以在第一副本存储在第一数据筒仓中之后将第二副本存储在第二数据筒仓中。或者,第一数据筒仓可以在第一数据筒仓存储数据的副本之前将数据的副本发送到第二数据筒仓。在这种场景中,第一数据筒仓和第二数据筒仓两者都可以并行地存储数据的副本,或至少部分并行地存储数据的副本。
所述方法可以在步骤306后结束。
如上文所论述,加速器池可以向客户端发送将数据存储在数据存储系统中的确认。图3.2展示根据本发明的一个或多个实施例的方法的流程图。根据本发明的一个或多个实施例,图3.2中所描绘的方法可以用于处理数据存储确认。图3.2中所示的方法可以由例如客户端(例如,100,图1.1)来执行。在不脱离本发明的情况下,图1.1中所说明的系统的其它组件可以执行图3.2的方法。
在步骤310中,在将数据发送到加速器池之后,从加速器池的加速器接收指示数据被冗余地存储的确认。
在本发明的一个或多个实施例中,当接收到确认时,不冗余地存储数据。例如,加速器可以在将数据的任何其它副本存储在独立于加速器池的故障域的故障域中的其它加速器、数据筒仓或实体中之前发送确认。
在步骤312中,客户端认为数据被冗余地存储,而不用验证数据被冗余地存储和/或不用接收确认数据存储的数据筒仓的确认。
通过认为数据被冗余地存储,客户端可以采取当不认为数据被冗余地存储时原本将被阻止的动作。例如,客户端可以按不可逆的方式修改数据。在不脱离本发明的情况下,当不认为数据被冗余地存储时,动作可以是原本将被阻止的其它类型的动作。
所述方法可以在步骤312后结束。
为了进一步阐明本发明的方面,图4.1-4.12提供非限制性实例。
实例
考虑如图4.1所说明的场景,其中客户端(450)将图像文件(452)发送到数据存储系统(400)以进行存储。数据存储系统(400)包含加速器(410)、第一数据筒仓(420)和第二数据筒仓(430)。加速器、第一数据筒仓和第二数据筒仓各自包含相应的永久性存储装置(412、422、432)。
当数据存储系统(400)获得图像文件(452)时,加速器(410)将图像文件的副本(453)存储在其永久性存储装置(412)中,如图4.2中所说明。在冗余地存储图像文件之前,加速器(410)向客户端(450)发送确认(490)。通过这样做,客户端(450)认为图像文件由数据存储系统(400)冗余地存储,并且因此能够调度或以其它方式执行与数据存储系统(400)的额外数据事务而无需等待图像文件实际上由数据存储系统(400)冗余地存储。
在存储图像文件的副本(453)之后,加速器(410)将图像文件(452)发送到两个数据筒仓(420、430)以进行冗余存储,如图4.3所说明。由于客户端偏好指示图像文件(452)的高重要性,加速器(410)将图像文件(452)发送到两个数据筒仓(420、430)以进行并行存储。如图4.4所示,图像文件的第二副本(454)和图像文件的第三副本(455)或并行地存储在每个数据筒仓(420、430)中。因为副本是并行存储的,所以与依序存储图像文件的所有三个副本所需的存储时间相比,减少了存储图像文件的所有三个副本的总时间。
在第二时间点,客户端(450)将电子邮件(462)发送到数据存储系统(400)以进行存储,如图4.5所说明。具体地说,电子邮件(462)被发送到加速器(410)。响应于接收到电子邮件(462),加速器(410)存储电子邮件的副本(463),并且向客户端(450)发送确认(491),如图4.6所说明。
基于客户端偏好,加速器(410)继续将电子邮件(462)的副本依序存储在数据筒仓中,因为客户端偏好指定的电子邮件(462)的重要性低。为了依序存储副本,加速器(410)将电子邮件(462)发送到第一数据筒仓(420),如图4.7所示。
响应于接收到电子邮件(462),第一数据筒仓(420)存储电子邮件的第二副本(464),并且将电子邮件(462)发送到第二数据筒仓(430),如图4.8所说明。在接收到电子邮件(462)时,第二数据筒仓(430)存储电子邮件的第三副本(465),如图4.9所说明。
在第三时间点,客户端(450)将网络浏览器的书签(472)发送到数据存储系统(400)以进行存储,如图4.10所说明。具体地说,客户端(450)自书签(472)到第一数据筒仓(420)而非加速器(410)。客户端(450)将书签(472)发送到第一数据筒仓(420),因为网络浏览器不是高数据存储吞吐量应用程序。通过这样做,客户端(450)节省了用于高数据存储吞吐量应用的加速器(410)的资源。
响应于接收到书签(472),第一数据筒仓(420)存储书签的副本(473),并且将书签(472)发送到第二数据筒仓(430),如图4.11所说明。在接收到书签(472)时,第二数据筒仓(430)存储书签的第二副本(474),如图4.12所说明。通过这样做,数据存储系统(400)在不使用加速器(410)的资源的情况下冗余地存储书签。
实例的结束
图1.1中的任何组件可以实施为分布式计算装置。如本文中所使用,分布式计算装置是指由利用一个或多个单独和/或截然不同的计算装置的计算资源的逻辑装置提供的功能性。
如上文所论述,本发明的实施例可以使用计算装置实施。图5展示根据本发明的一个或多个实施例的计算装置的图。计算装置(500)可以包含一个或多个电脑处理器(502)、非永久性存储装置(504)(例如,易失性存储器,例如随机存取存储器(RAM)、高速缓冲存储器)、永久性存储装置(506)(例如,硬盘、例如压缩光盘(CD)驱动器或数字通用光盘(DVD)驱动器的光学驱动器、闪存等)、通信接口(512)(例如,蓝牙接口、红外线接口、网络接口、光接口等)、输入装置(510)、输出装置(508)和众多其它元件(未展示)和功能性。以下描述这些组件中的每一个。
在本发明的一个实施例中,计算机处理器(502)可以是用于处理指令的集成电路。举例来说,计算机处理器可以是处理器的一个或多个核心或微核心。计算装置(500)还可以包含一个或多个输入装置(510),例如,触摸屏、键盘、鼠标、麦克风、触控板、电子笔或任何其它类型的输入装置。另外,通信接口(512)可以包含集成电路,其用于将计算装置(500)连接到网络(未展示)(例如,局域网(LAN)、例如因特网的广域网(WAN)、移动网络或任何其它类型的网络)和/或连接到另一装置(例如,另一计算装置)。
在本发明的一个实施例中,计算装置(500)可以包含一个或多个输出装置(508),例如,屏幕(例如,液晶显示器(LCD)、等离子显示器、触摸屏、阴极射线管(CRT)监控器、投影仪或其它显示装置)、打印机、外部存储装置或任何其它输出装置。输出装置中的一个或多个可以与输入装置相同或不同。输入和输出装置可以在本地或远程连接到计算机处理器(502)、非永久性存储装置(504)和永久性存储装置(506)。存在许多不同类型的计算装置,且前述输入和输出装置可以采取其它形式。
本发明的另一个实施例可以改善数据存储技术。例如,本发明的实施例可以提高分布式系统中的数据存储速率和/或可以减少分布式系统中的数据存储的延时。在本发明的一个或多个实施例中,数据存储系统包含加速器池,其向客户端提供高吞吐量数据存储服务。即使在客户端数据没有被冗余地存储时,也可以通过确认客户端数据的存储来提供高吞吐量数据存储服务。通过这样做,与由当代数据存储技术提供的数据存储服务相比,本发明的实施例可以提供具有减少的延时的数据存储服务。在网络带宽和延时是影响数据存储速率的问题的分布式系统中,本发明的实施例可以通过补偿分布式系统中固有的延时来提供显著改善的数据存储速率。
此外,本发明的实施例可以解决分布式系统中的有限计算资源的问题。例如,本发明的实施例可以提供经由加速器池提供高数据存储吞吐量的架构。相比之下,当代方法可能需要升级分布式系统的所有计算装置或以其它方式具有改善的计算资源以改善分布式系统中的数据存储。本发明的实施例可以通过专门分配某些装置用于提供高数据吞吐量存储服务来解决此问题,并且因此可以通过仅向所分配的某些装置提供高计算资源能力来提供这样的益处。通过这样做,与当代方法相比,本发明的实施例可以降低在分布式系统中提供高吞吐量数据存储服务的成本。
因此,本发明的实施例直接解决了由于分布式系统的现代技术环境的性质而产生的问题。具体地说,随着分布式系统的使用和一般复杂性的增加,升级或以其它方式维持分布式系统的竞争资源能力的成本增加。本发明的实施例可以通过提供精心定制的分配方案来解决此问题,所述分配方案提供高吞吐量数据存储服务,同时最小化维护或升级分布式系统的计算资源能力的成本。
上文所论述的问题应理解为由本文中所公开的本发明的实施例所解决的问题的实例,且本发明不应限于解决相同/类似问题。本发明大体上适用于解决超出本文中所论述的那些问题的一系列问题。
可使用由数据管理装置的一个或多个处理器执行的指令实施本发明的一个或多个实施例。另外,此类指令可以对应于存储于一个或多个非暂时性计算机可读介质上的计算机可读指令。
虽然上文已关于有限数目个实施例描述本发明,但具有本发明权益的所属领域的技术人员将了解,可设计不脱离如本文中所公开的本发明的范围的其它实施例。因此,本发明的范围应只受到随附权利要求书限制。
Claims (20)
1.一种数据存储系统,其包括:
加速器池;以及
数据筒仓,
其中所述加速器池被编程为:
获得对第一数据的数据存储请求;
将所述第一数据的副本在本地存储在所述加速器池的存储器中;
响应于存储所述第一数据的所述副本:
向生成所述数据存储请求的请求实体发送确认;以及
在发送所述确认之后,将所述第一数据的至少一个第二副本存储在所述数据筒仓中,
其中所述确认指示所述第一数据冗余地存储在至少两个不同的故障域中。
2.根据权利要求1所述的数据存储系统,其中所述加速器池与所述数据筒仓位于独立的故障域中。
3.根据权利要求1所述的数据存储系统,其中所述数据筒仓包括:
在第一故障域中的第一数据筒仓;以及
在第二故障域中的第二数据筒仓,
其中所述第一故障域独立于所述第二故障域。
4.根据权利要求3所述的数据存储系统,其中将所述第一数据的所述至少一个第二副本存储在所述数据筒仓中包括:
将所述第一数据仅发送到所述第一数据筒仓以依序:
将所述第一数据的所述至少一个第二副本存储在所述第一数据筒仓中;以及
将所述第一数据的第三副本存储在所述第二数据筒仓中,
其中所述加速器池不将所述第一数据发送到所述第二数据筒仓。
5.根据权利要求4所述的数据存储系统,其中所述第一数据筒仓中的所述第一数据的所述第二副本是通过所述加速器池经由对所述第一数据筒仓的存储器的远程直接存储器存取(RDMA)而存储。
6.根据权利要求4所述的数据存储系统,其中所述第一数据的所述第三副本是在将所述第一数据的所述第二副本存储在所述第一数据筒仓中之后存储在所述第二数据筒仓中。
7.根据权利要求3所述的数据存储系统,其中至少将所述第一数据的所述第二副本存储在所述数据筒仓中包括:
将所述第一数据发送到所述第一数据筒仓和所述第二数据筒仓两者,以至少部分并行地:
将所述第一数据的所述至少一个第二副本存储在所述第一数据筒仓中;以及
将所述第一数据的第三副本存储在所述第二数据筒仓中。
8.根据权利要求1所述的数据存储系统,其中所述加速器池包括加速器,其中所述加速器中的每一个包括:
非易失性随机存取存储器;以及
永久性存储装置。
9.根据权利要求8所述的数据存储系统,其中所述加速器中的每一个被编程为:
将所述第一数据的所述副本存储在所述非易失性随机存取存储器中;
在存储所述第一数据的所述副本之后,发送所述确认;以及
在发送所述确认之后,将所述第一数据的所述副本迁移到所述永久性存储装置。
10.根据权利要求1所述的数据存储系统,其中所述数据筒仓被编程为:
获得对第二数据的第二数据存储请求;
将所述第二数据存储在所述数据筒仓中,而不将所述第二数据的任何副本存储在所述加速器池中。
11.根据权利要求10所述的数据存储系统,其中所述第二数据是在不利用所述加速器池的任何计算资源的情况下存储。
12.一种用于在数据存储系统中存储数据的方法,其包括:
通过加速器池获得对第一数据的数据存储请求;
将所述第一数据的副本在本地存储在所述加速器池的存储器中;
响应于存储所述第一数据的所述副本:
向生成所述数据存储请求的请求实体发送确认;以及
在发送所述确认之后,将所述第一数据的至少一个第二副本存储在数据筒仓中,
其中所述确认指示所述第一数据冗余地存储在至少两个不同的故障域中。
13.根据权利要求12所述的方法,其中将所述第一数据的所述至少一个第二副本存储在所述数据筒仓中包括:
将所述第一数据仅发送到所述数据筒仓中的第一数据筒仓,以依序:
将所述第一数据的所述至少一个第二副本存储在所述第一数据筒仓中;以及
将所述第一数据的第三副本存储在所述数据筒仓中的第二数据筒仓中,
其中所述加速器池不将所述第一数据发送到所述第二数据筒仓,
其中所述第一数据筒仓与所述第二数据筒仓位于独立的故障域中。
14.根据权利要求13所述的方法,其中将所述第一数据的所述第三副本存储在所述第一数据筒仓中包括:
通过所述加速器池远程直接存取所述第二数据筒仓的存储器;以及
经由所述远程直接存取所述存储器,将所述第一数据的所述第三副本存储在所述第二数据筒仓的所述存储器中。
15.根据权利要求12所述的方法,其中所述加速器池与所述数据筒仓位于独立的故障域中。
16.根据权利要求12所述的方法,其中将所述第一数据的所述至少一第二副本存储在所述数据筒仓中包括:
将所述第一数据发送到所述数据筒仓中的第一数据筒仓和所述数据筒仓中的第二数据筒仓两者,以至少部分并行地:
将所述第一数据的所述至少一个第二副本存储在所述第一数据筒仓中;以及
将所述第一数据的第三副本存储在所述第二数据筒仓中。
17.一种非暂时性计算机可读介质,其包括计算机可读程序代码,所述代码当由计算机处理器执行时使得所述计算机处理器能够执行用于将数据存储在数据存储系统中的方法,所述方法包括:
通过加速器池获得对第一数据的数据存储请求;
将所述第一数据的副本在本地存储在所述加速器池的存储器中;
响应于存储所述第一数据的所述副本:
向生成所述数据存储请求的请求实体发送确认;以及
在发送所述确认之后,将所述第一数据的至少一个第二副本存储在数据筒仓中,
其中所述确认指示所述第一数据冗余地存储在至少两个不同的故障域中。
18.根据权利要求17所述的非暂时性计算机可读介质,其中将所述第一数据的所述至少一第二副本存储在所述数据筒仓中包括:
将所述第一数据仅发送到所述数据筒仓中的第一数据筒仓,以依序:
将所述第一数据的所述至少一个第二副本存储在所述第一数据筒仓中;以及
将所述第一数据的第三副本存储在所述数据筒仓中的第二数据筒仓中,
其中所述加速器池不将所述第一数据发送到所述第二数据筒仓,
其中所述第一数据筒仓与所述第二数据筒仓位于独立的故障域中。
19.根据权利要求18所述的非暂时性计算机可读介质,其中将所述第一数据的所述第三副本存储在所述第一数据筒仓中包括:
通过所述加速器池远程直接存取所述第二数据筒仓的存储器;以及
经由所述远程直接存取所述存储器,将所述第一数据的所述第三副本存储在所述第二数据筒仓的所述存储器中。
20.根据权利要求17所述的非暂时性计算机可读介质,其中将所述第一数据的所述至少一第二副本存储在所述数据筒仓中包括:
将所述第一数据发送到所述数据筒仓中的第一数据筒仓和所述数据筒仓中的第二数据筒仓两者,以至少部分并行地:
将所述第一数据的所述至少一个第二副本存储在所述第一数据筒仓中;以及
将所述第一数据的第三副本存储在所述第二数据筒仓中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/145,336 US11029875B2 (en) | 2018-09-28 | 2018-09-28 | System and method for data storage in distributed system across multiple fault domains |
US16/145,336 | 2018-09-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110968642A true CN110968642A (zh) | 2020-04-07 |
CN110968642B CN110968642B (zh) | 2023-10-24 |
Family
ID=68062808
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910879289.1A Active CN110968642B (zh) | 2018-09-28 | 2019-09-18 | 用于分布式系统中的数据存储的系统和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11029875B2 (zh) |
EP (1) | EP3629555B1 (zh) |
CN (1) | CN110968642B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003096738A2 (en) * | 2002-05-08 | 2003-11-20 | Qualcomm Incorporated | Method and apparatus for supporting application-layer media multicasting |
CN104283938A (zh) * | 2013-07-08 | 2015-01-14 | 英特尔公司 | 用于在存储服务器之间复制数据的技术 |
WO2017122043A1 (en) * | 2016-01-11 | 2017-07-20 | Telefonaktiebolaget Lm Ericsson (Publ) | Cloud scalable storage with local memory performance |
CN107111721A (zh) * | 2014-08-12 | 2017-08-29 | 杰威航空技术有限公司 | 数据安全系统和方法 |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6671705B1 (en) * | 1999-08-17 | 2003-12-30 | Emc Corporation | Remote mirroring system, device, and method |
US6477628B1 (en) * | 2000-01-28 | 2002-11-05 | International Business Machines Corporation | Backup copy achieving improved efficiency by waiting until rewind/unload command for bulk data copy |
JP4021823B2 (ja) * | 2003-09-01 | 2007-12-12 | 株式会社日立製作所 | リモートコピーシステム及びリモートコピーの方法 |
US7231399B1 (en) | 2003-11-14 | 2007-06-12 | Google Inc. | Ranking documents based on large data sets |
US9213609B2 (en) * | 2003-12-16 | 2015-12-15 | Hewlett-Packard Development Company, L.P. | Persistent memory device for backup process checkpoint states |
US7516362B2 (en) | 2004-03-19 | 2009-04-07 | Hewlett-Packard Development Company, L.P. | Method and apparatus for automating the root cause analysis of system failures |
JP2007066154A (ja) * | 2005-09-01 | 2007-03-15 | Hitachi Ltd | データをコピーして複数の記憶装置に格納するストレージシステム |
US7987353B2 (en) | 2008-01-09 | 2011-07-26 | International Business Machines Corporation | Remote BIOS for servers and blades |
US8386930B2 (en) | 2009-06-05 | 2013-02-26 | International Business Machines Corporation | Contextual data center management utilizing a virtual environment |
US8401982B1 (en) | 2010-01-14 | 2013-03-19 | Symantec Corporation | Using sequencing and timing information of behavior events in machine learning to detect malware |
US8868987B2 (en) | 2010-02-05 | 2014-10-21 | Tripwire, Inc. | Systems and methods for visual correlation of log events, configuration changes and conditions producing alerts in a virtual infrastructure |
US9278481B2 (en) | 2010-10-26 | 2016-03-08 | Rinco Ultrasononics USA, INC. | Sonotrode and anvil energy director grids for narrow/complex ultrasonic welds of improved durability |
US9183219B1 (en) | 2011-04-18 | 2015-11-10 | American Megatrends, Inc. | Data migration between multiple tiers in a storage system using policy based ILM for QOS |
US20120303912A1 (en) * | 2011-05-23 | 2012-11-29 | Microsoft Corporation | Storage account migration between storage stamps |
US8874892B1 (en) | 2011-05-26 | 2014-10-28 | Phoenix Technologies Ltd. | Assessing BIOS information prior to reversion |
US8510807B1 (en) | 2011-08-16 | 2013-08-13 | Edgecast Networks, Inc. | Real-time granular statistical reporting for distributed platforms |
US9898224B1 (en) | 2012-09-12 | 2018-02-20 | EMC IP Holding Company LLC | Automatic adjustment of capacity usage by data storage optimizer for data migration |
US9355036B2 (en) | 2012-09-18 | 2016-05-31 | Netapp, Inc. | System and method for operating a system to cache a networked file system utilizing tiered storage and customizable eviction policies based on priority and tiers |
US20150100826A1 (en) | 2013-10-03 | 2015-04-09 | Microsoft Corporation | Fault domains on modern hardware |
US9304865B2 (en) | 2014-03-26 | 2016-04-05 | International Business Machines Corporation | Efficient handing of semi-asynchronous raid write failures |
US10044795B2 (en) | 2014-07-11 | 2018-08-07 | Vmware Inc. | Methods and apparatus for rack deployments for virtual computing environments |
US9122501B1 (en) | 2014-09-08 | 2015-09-01 | Quanta Computer Inc. | System and method for managing multiple bios default configurations |
US10057184B1 (en) | 2014-11-10 | 2018-08-21 | Amazon Technologies, Inc. | Resource configuration compliance service |
-
2018
- 2018-09-28 US US16/145,336 patent/US11029875B2/en active Active
-
2019
- 2019-09-18 EP EP19198034.1A patent/EP3629555B1/en active Active
- 2019-09-18 CN CN201910879289.1A patent/CN110968642B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003096738A2 (en) * | 2002-05-08 | 2003-11-20 | Qualcomm Incorporated | Method and apparatus for supporting application-layer media multicasting |
CN104283938A (zh) * | 2013-07-08 | 2015-01-14 | 英特尔公司 | 用于在存储服务器之间复制数据的技术 |
CN107111721A (zh) * | 2014-08-12 | 2017-08-29 | 杰威航空技术有限公司 | 数据安全系统和方法 |
WO2017122043A1 (en) * | 2016-01-11 | 2017-07-20 | Telefonaktiebolaget Lm Ericsson (Publ) | Cloud scalable storage with local memory performance |
Also Published As
Publication number | Publication date |
---|---|
EP3629555A1 (en) | 2020-04-01 |
CN110968642B (zh) | 2023-10-24 |
EP3629555B1 (en) | 2021-10-27 |
US20200104049A1 (en) | 2020-04-02 |
US11029875B2 (en) | 2021-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11144209B2 (en) | Method, apparatus and computer program product for managing input/output | |
US11119654B2 (en) | Determining an optimal storage environment for data sets and for migrating data sets | |
US20190004946A1 (en) | Method and device for cache management | |
US9645747B2 (en) | Management of allocation for alias devices | |
EP2711841A1 (en) | Data processing method, device and system based on block storage | |
US11080197B2 (en) | Pre-allocating cache resources for a range of tracks in anticipation of access requests to the range of tracks | |
US11023313B2 (en) | Look-aside RAID controller storage-device-assisted data update system | |
US10936420B1 (en) | RAID storage-device-assisted deferred Q data determination system | |
US20210004160A1 (en) | Prefetching data blocks from a primary storage to a secondary storage system while data is being synchronized between the primary storage and secondary storage | |
US10776173B1 (en) | Local placement of resource instances in a distributed system | |
US10606776B2 (en) | Adding dummy requests to a submission queue to manage processing queued requests according to priorities of the queued requests | |
US10261722B2 (en) | Performing caching utilizing dispersed system buffers | |
US11010091B2 (en) | Multi-tier storage | |
CN110968642B (zh) | 用于分布式系统中的数据存储的系统和方法 | |
US10372347B2 (en) | Selectively limiting throughput of test objects that share system resources with production objects | |
US10705752B2 (en) | Efficient data migration in hierarchical storage management system | |
US11003391B2 (en) | Data-transfer-based RAID data update system | |
US11231881B2 (en) | Raid data storage device multi-step command coordination system | |
US11422740B2 (en) | Raid storage-device-assisted data update system | |
US11327683B2 (en) | RAID storage-device-assisted read-modify-write system | |
US20200348874A1 (en) | Memory-fabric-based data-mover-enabled memory tiering system | |
US11163475B2 (en) | Block input/output (I/O) accesses in the presence of a storage class memory | |
CN114936006A (zh) | 邮箱系统的数据迁移方法、设备、介质和程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |