CN116149575B - 面向服务器无感知计算的磁盘冗余阵列写入方法及系统 - Google Patents
面向服务器无感知计算的磁盘冗余阵列写入方法及系统 Download PDFInfo
- Publication number
- CN116149575B CN116149575B CN202310426600.3A CN202310426600A CN116149575B CN 116149575 B CN116149575 B CN 116149575B CN 202310426600 A CN202310426600 A CN 202310426600A CN 116149575 B CN116149575 B CN 116149575B
- Authority
- CN
- China
- Prior art keywords
- disks
- data block
- storage server
- request
- data
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种面向服务器无感知计算的磁盘冗余阵列写入方法及系统,通过在构成目标磁盘冗余阵列的多个存储服务器之间建立点对点的网络通信连接,能够减少目标磁盘冗余阵列所占用的带宽,从而降低网卡带宽对磁盘冗余阵列的写入性能限制,第一存储服务器以流水线方式在多设备间并发执行请求,且第二存储服务器无需等待全部数据传输完成,即可执行对校验块的归约操作,可以提升并行度,优化了磁盘冗余阵列的写入性能。
Description
技术领域
本申请涉及云计算技术领域,特别是涉及一种面向服务器无感知计算的磁盘冗余阵列写入方法及系统。
背景技术
将磁盘冗余阵列与分离式存储相结合能够为服务器无感知计算带来额外的增益。当所有磁盘都位于同一存储服务器时,尽管磁盘冗余阵列可以保障部分磁盘出现故障时磁盘冗余阵列仍然可用,但当存储服务器本身出现故障时,则磁盘冗余阵列无论如何都不再可用。使用多个位于不同存储服务器的分离式存储组成磁盘冗余阵列能够有效克服这一问题。
然而,相比采用本机存储(即同一存储服务器的各个磁盘)组成磁盘冗余阵列,采用分离式存储所组成的磁盘冗余阵列的写入性能会由于网卡带宽等原因受到较大限制。
发明内容
本申请实施例的目的是提供一种面向服务器无感知计算的磁盘冗余阵列写入方法及系统,可以优化磁盘冗余阵列的写入性能。
为解决上述技术问题,第一方面,本申请实施例提供一种面向服务器无感知计算的磁盘冗余阵列写入方法,所述方法包括:
客户端接收目标写入请求;
所述客户端根据目标磁盘冗余阵列的组织方式,将所述目标写入请求所对应的数据片段划分为各个数据块,一个数据块对应所述目标磁盘冗余阵列中的一个磁盘,所述目标磁盘冗余阵列由多个存储服务器的磁盘构成,所述客户端和每个所述存储服务器之间、以及每两个所述存储服务器之间通过点对点的网络通信连接进行通信;
所述客户端从所述多个存储服务器中,确定各个第一存储服务器和各个第二存储服务器,向所述各个第一存储服务器分别发送第一请求;
所述各个第一存储服务器以流水线方式处理各自接收到的每个所述第一请求,从所述客户端中获取所述第一请求指示的第一数据块,且并发地从所述第一存储服务器的磁盘中获取所述第一数据块对应的第一原始数据块;
所述各个第一存储服务器中获取到所述第一数据块和所述第一原始数据块的第一存储服务器,将所述第一数据块写入所述第一存储服务器的对应磁盘中,且并发地根据所述第一数据块和所述第一原始数据块,生成所述第一数据块的第一校验块,将所述第一校验块发送至所述第一请求指示的第二存储服务器;
所述各个第二存储服务器中接收到所述第一校验块的第二存储器服务器,对所述第一校验块进行归约操作。
第二方面,本申请实施例还提供了一种面向服务器无感知计算的磁盘冗余阵列写入系统,所述系统包括客户端和多个存储服务器,所述客户端和每个所述存储服务器之间、以及每两个所述存储服务器之间通过点对点的网络通信连接进行通信,其中:
所述客户端,用于接收目标写入请求;
所述客户端,还用于根据目标磁盘冗余阵列的组织方式,将所述目标写入请求所对应的数据片段划分为各个数据块,一个数据块对应所述目标磁盘冗余阵列中的一个磁盘,所述目标磁盘冗余阵列由所述多个存储服务器的磁盘构成;
所述客户端,还用于从所述多个存储服务器中,确定各个第一存储服务器和各个第二存储服务器,向所述各个第一存储服务器分别发送第一请求;
所述各个第一存储服务器,用于以流水线方式处理各自接收到的每个所述第一请求,从所述客户端中获取所述第一请求指示的第一数据块,且并发地从所述第一存储服务器的磁盘中获取所述第一数据块对应的第一原始数据块;
所述各个第一存储服务器中获取到所述第一数据块和所述第一原始数据块的第一存储服务器,还用于将所述第一数据块写入所述第一存储服务器的对应磁盘中,且并发地根据所述第一数据块和所述第一原始数据块,生成所述第一数据块的第一校验块,将所述第一校验块发送至所述第一请求指示的第二存储服务器;
所述各个第二存储服务器中接收到所述第一校验块的第二存储器服务器,用于对所述第一校验块进行归约操作。
由上述技术方案可以看出,通过在构成目标磁盘冗余阵列的多个存储服务器之间建立点对点的网络通信连接,由该多个存储服务器之间的少量通信交互完成对校验块的归约操作,能够减少目标磁盘冗余阵列所占用的带宽,从而降低网卡带宽对磁盘冗余阵列的写入性能限制;第一存储服务器以流水线方式在多设备间并发执行请求,且第二存储服务器无需等待全部数据传输完成,即可执行对校验块的归约操作,可以提升并行度,优化了磁盘冗余阵列的写入性能。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种面向服务器无感知计算的磁盘冗余阵列写入方法的实施流程图;
图2为本申请实施例提供的一种面向服务器无感知计算的分离式磁盘冗余阵列写入系统的示意图;
图3为本申请实施例提供的一种面向服务器无感知计算的分离式磁盘冗余阵列写入流程的示意图;
图4为本申请实施例提供的一种存储服务器端流水线设备并发调度的示意图;
图5为本申请实施例提供的一种面向服务器无感知计算的磁盘冗余阵列写入系统的结构示意图;
图6为本申请实施例提供的一种电子设备的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本申请保护范围。
本申请的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。
磁盘冗余阵列是服务器和个人电脑上搭建可靠且高性能存储系统的关键技术,Windows、Linux等主流操作系统均支持将多个磁盘按需组成磁盘阵列供用户使用。在单个磁盘无法满足用户需求时,用户可以选择不同类型的磁盘阵列搭建不同大小、带宽和冗余度的磁盘冗余阵列作为数据库、文件系统等存储系统的底层块设备,为上层应用的读写请求提供更好的支持。
同时,服务器无感知计算的应用在数据中心特别是云数据中心中成为了重要发展趋势。传统的服务器中需要同时包含计算所需的中央处理器、图形处理器以及存储所需的硬盘存储器、固态存储器等。而随着数据中心网络带宽日益提升、延迟日益降低,通过网络将计算和存储解耦使得不同类型的资源可以独立扩展成为一种资源进行使用。服务器无感知计算可以灵活调度使用计算资源,而分离式的存储架构则为服务器无感知计算提供了灵活的底层存储。
将磁盘冗余阵列与分离式存储相结合能够为服务器无感知计算带来额外的增益。当所有磁盘都位于同一存储服务器时,尽管磁盘冗余阵列可以保障一个或两个磁盘出现故障时磁盘冗余阵列仍然可用,但当存储服务器本身出现故障时,则磁盘冗余阵列无论如何都不再可用。使用多个位于不同存储服务器的分离式存储组成磁盘冗余阵列能够有效克服这一问题。
相比采用本机存储组成磁盘冗余阵列,采用分离式存储组成磁盘冗余阵列的写入性能极其受限,严重制约了服务器无感知计算对状态的记录。中央处理器上运行的磁盘冗余阵列控制器在访问本机磁盘时一般通过主板上的总线进行通信,总线通信具有极高的带宽。而访问分离式存储则必须通过网卡和数据中心网络。目前,常见的主机网卡带宽在10Gbps到200Gbps之间,约等于1-10个固态存储器的带宽,严重限制了磁盘冗余阵列的可扩展性。特别地,使用磁盘冗余阵列进行较小的写入请求时,相比使用单个磁盘,会触发额外的读取和写入,给网卡造成了更大的负担,从而导致网络拥塞、延迟上升。
对于磁盘冗余阵列的写入性能优化问题,现有的一些研究工作主要面向单机磁盘冗余阵列(即采用本机存储组成的磁盘冗余阵列),主要针对存储器的特性进行优化,而并没有考虑到运行于分离式存储上的分布式磁盘冗余阵列所需要解决的问题。这些研究工作所设计和实现的系统假设磁盘冗余阵列控制器和磁盘之间通过总线进行通信,带宽不会成为制约数据传输的瓶颈。而在实际应用场景中,网卡的带宽仍然非常受限,进而对磁盘冗余阵列的写入性能造成较大限制,因此尽可能减少磁盘冗余阵列所占用的带宽是提升写入性能的关键所在。
针对上述相关技术中存在的问题,本申请提出了面向服务器无感知计算的分离式磁盘冗余阵列的网络拓扑结构,以减少不必要的网络通信,且提出了提升跨节点并行度的无阻塞多阶段写入技术,使得冗余数据块(即校验块)的生成无需等待所需写入数据全部传输完成;还提出了流水线读写请求并行处理技术,充分利用存储服务器上的中央处理器、固态存储器和网卡三者的并发性,进而提升了并行度。
下面结合附图,通过一些实施例及其应用场景对本申请实施例提供的面向服务器无感知计算的磁盘冗余阵列写入方法进行详细地说明。
参见图1所示,为本申请实施例所提供的一种面向服务器无感知计算的磁盘冗余阵列写入方法的实施流程图,该方法可以包括以下步骤:
步骤S101:客户端接收目标写入请求。
在具体实施时,客户端接收来自于用户的目标写入请求、以及所需写入目标磁盘冗余阵列的数据片段。
可选地,该目标写入请求可以为:携带了所需写入的数据片段的请求。客户端接收并解析该请求,将解析出的数据片段缓存至自身的写入缓存区。
步骤S102:所述客户端根据目标磁盘冗余阵列的组织方式,将所述目标写入请求所对应的数据片段划分为各个数据块。
其中,一个数据块对应所述目标磁盘冗余阵列中的一个磁盘,所述目标磁盘冗余阵列由多个存储服务器的磁盘构成,所述客户端和每个所述存储服务器之间、以及每两个所述存储服务器之间通过点对点的网络通信连接进行通信。
在具体实施时,客户端可以根据目标磁盘冗余阵列的组织方式(如数据条带化、数据镜像等),将数据片段以磁盘为粒度进行划分,从而得到所需写入各个磁盘的各个数据块。
步骤S103:所述客户端从所述多个存储服务器中,确定各个第一存储服务器和各个第二存储服务器,向所述各个第一存储服务器分别发送第一请求。
在具体实施时,客户端可以对每个数据块生成一个第一请求,也可以对所需写入同一存储服务器的多个数据块生成一个第一请求,该第一请求指示了相关数据块在客户端中的缓存位置、以及指示了相关的第二存储服务器,用于归约及写入该相关数据块的校验块。
需要说明的是,第一存储服务器和第二存储服务器是在所需执行的操作上对存储服务器进行了区分,若一个存储服务器中既包含存储了数据块的磁盘,又包含存储了校验块的磁盘,则该存储服务器可以同时作为第一存储服务器和第二存储服务器并执行相关操作。
步骤S104:所述各个第一存储服务器以流水线方式处理各自接收到的每个所述第一请求,从所述客户端中获取所述第一请求指示的第一数据块,且并发地从所述第一存储服务器的磁盘中获取所述第一数据块对应的第一原始数据块。
在具体实施时,第一存储服务器在接收到第一请求时,可以同时执行向客户端拉取数据的操作、以及向自身的磁盘获取数据的操作。该第一存储服务器可以将拉取到的第一数据块和获取到的第一原始数据块进行缓存,以便后续分别执行第一数据块的写入操作、以及第一校验块的生成及发送操作。
可以理解的是,以流水线方式处理接收到的每个第一请求是指:以流水线方式挨个执行每个第一请求中的相同操作。例如,第一存储服务器在对当前的第一请求完成数据拉取和数据获取操作后,将以流水线的方式对下一个第一请求继续执行数据拉取和数据获取操作。类似地,对于不同第一请求(可以是同一目标写入请求所关联的不同第一请求,也可以是不同的目标写入请求所关联的不同第一请求)各自对应的第一数据块的写入操作、以及第一校验块的生成及发送操作也以流水线的方式进行执行,从而实现了流水线读写请求并行处理技术,能够有效提高第一存储服务器内部的并行度。
步骤S105:所述各个第一存储服务器中获取到所述第一数据块和所述第一原始数据块的第一存储服务器,将所述第一数据块写入所述第一存储服务器的对应磁盘中,且并发地根据所述第一数据块和所述第一原始数据块,生成所述第一数据块的第一校验块,将所述第一校验块发送至所述第一请求指示的第二存储服务器。
在该实施例中,本申请对分离式磁盘冗余阵列(即目标磁盘冗余阵列)的网络拓扑结构进行了优化,将传统的分离式磁盘冗余阵列中一对多的通信方式(即多个存储服务器仅与客户端建立了网络通信连接),优化为点对点的通信方式(即在多个存储服务器之间建立了点对点的网络通信连接),由第一存储服务器直接在本地生成校验块,并通过存储服务器之间的点对点的网络通信连接,将校验块直接发送至第二存储服务器进行后续处理,该过程避免了因多个存储服务器之间无法直接通信,以致客户端需要向存储服务器额外读取数据(如客户端需要额外获取第一原始数据块以在本地生成校验块)所产生的不必要的通信开销,可以有效降低目标磁盘冗余阵列的占用带宽,且可以将客户端的部分通信开销分摊至各个存储服务器(即无需通过客户端统一转发生成的校验块),实现了网卡带宽占用的均衡化,从而降低了网卡带宽(如客户端网卡带宽的过度占用)对磁盘冗余阵列的写入性能限制。
需要说明的是,对于某一第一数据块,接收到该第一数据块所对应第一请求的第一存储服务器,将顺序执行步骤S104至步骤S105,以实现对该第一数据块的正常获取和写入操作,而对于某两个不同的第一数据块,接收到该两个第一数据块所对应第一请求的同一第一存储服务器,可以并发地执行步骤S104和步骤S105,以同时对该两个第一数据块分别执行获取和写入操作,从而实现了多设备(如存储服务器上的网卡、磁盘等设备)间流水线读写请求并行处理技术,提升了节点内的并行度,且由于数据块的写入操作与校验块的生成操作分别执行,使得第二存储服务器无需等待数据块的写入完成,即可执行校验块的归约操作,从而提升了跨节点并行度。
步骤S106:所述各个第二存储服务器中接收到所述第一校验块的第二存储器服务器,对所述第一校验块进行归约操作。
其中,归约操作是指在尽可能保持数据原貌的前提下对数据进行精简。
在具体实施时,第二存储服务器接收到一个第一校验块时,即可对该第一校验块进行归约操作,无需等待全部数据(如所有第一校验块)传输完成后,再对接收到的所有第一校验块统一进行归约操作,从而实现了无阻塞多阶段写入技术,可以有效提升跨节点并行度,提高磁盘冗余阵列的数据写入效率。
由上述技术方案可以看出,通过在构成目标磁盘冗余阵列的多个存储服务器之间建立点对点的网络通信连接,由该多个存储服务器之间的少量通信交互完成对校验块的归约操作,能够减少目标磁盘冗余阵列所占用的带宽,从而降低网卡带宽对磁盘冗余阵列的写入性能限制;第一存储服务器以流水线方式在多设备间并发执行请求,且第二存储服务器无需等待全部数据传输完成,即可执行对校验块的归约操作,可以提升并行度,优化了磁盘冗余阵列的写入性能。
以下结合图2,对上述技术方案作进一步说明。如图2所示,本申请提供了一种面向服务器无感知计算的分离式磁盘冗余阵列写入系统,该系统主要包含客户端和目标磁盘冗余阵列所关联的存储服务器端。下面对客户端和存储服务器端所包含的模块及其功能进行说明。
(一)通用模块
在该实施例中,客户端和存储服务器端至少包含三个通用模块:写入协议拓展模块,网络通信模块,纠删码生成模块。
对于写入协议拓展模块,本申请拓展了基于架构的非易失性内存(NVMe-oF,NVMeover Fabrics)协议的写入操作,新增了若干适用于目标磁盘冗余阵列的指令编码,用于客户端向存储服务器发送指令以及存储服务器之间发送指令。在指令方面,新增了第一指令(PartialWrite指令)用于对数据条带进行部分写入,新增了第二指令(Parity指令)用于对最终的纠删码的各部分进行归约,新增了第三指令(PeerWrite指令)用于存储服务器之间相互通信。通过写入协议拓展模块,客户端和存储服务器端可以根据上述的新增指令,完成相关请求的生成和解析。其中,对于第一指令的应用、以及第二指令和第三指令的应用将在下文对客户端、以及存储服务器端的模块描述部分进行详细说明,在此不作赘述。
对于网络通信模块,其用于通过网卡在客户端与存储服务器之间、以及存储服务器与存储服务器之间建立点对点的网络通信连接,并通过该网络通信连接在客户端与存储服务器之间、以及存储服务器与存储服务器之间实现消息发送和数据传输。可选地,该网络通信模块可以通过支持远程直接内存访问的网卡,在客户端与存储服务器之间、以及存储服务器与存储服务器之间建立点对点的网络通信连接。
对于纠删码生成模块,考虑到磁盘冗余阵列的核心机制是纠删码机制,例如,当磁盘冗余阵列的冗余度为1时,通过对各磁盘数据进行异或操作,可以得到一个用于数据恢复的校验块(即纠删码);而当磁盘冗余阵列的冗余度为2时,则需要进行更加复杂的有限域上四则运算得到校验块,这一过程是极其消耗中央处理器资源且性能低下的。故本申请提供了纠删码生成模块,用于通过中央处理器的X86指令集生成校验块,以在客户端或存储服务器端实现纠删码运算加速。具体地,该纠删码生成模块通过从用户态软件库直接调用本机配置的中央处理器的特殊指令,可以充分利用x86指令集特点,使得相关的运算操作可以得到极大的吞吐量和延迟改善,从而利用中央处理器特性对生成纠删码所需的异或运算、伽罗华域乘法操作等运算实现加速。
(二)客户端
在该实施例中,客户端还至少包含了两个特有模块:用户写入请求响应模块,写入策略规划模块。
特有模块1:用户写入请求响应模块,用于接收来自于用户的目标写入请求,并将请求写入磁盘的数据片段按照目标磁盘冗余阵列的组织方式进行必要切分。
在该实施例中,用户写入请求响应模块为目标磁盘冗余阵列提供了唯一的写入接口,即以数据块粒度对磁盘冗余阵列进行数据写入。当收到目标写入请求时,用户请求响应模块首先根据目标磁盘冗余阵列的组织方式,对请求写入磁盘的数据片段进行划分,得到所需写入各个磁盘的各个数据块。
作为一种可能的实施方式,如果一个目标写入请求跨越了目标磁盘冗余阵列的多个条带(即数据片段对应目标磁盘冗余阵列中的多个条带的情况下),则用户写入请求响应模块会将该目标写入请求按条带拆分为若干个相互独立的后端请求,并将对应的数据片段按条带划分为多个数据子片段、以及该多个数据子片段各自对应的数据块,随后用户写入请求响应模块会将拆分出的后端请求提交给写入策略规划模块进行处理。
在具体实施时,用户写入请求响应模块将数据片段划分为各个数据子片段,其中,一个数据子片段对应所述目标磁盘冗余阵列中的一个条带,磁盘冗余阵列中不同磁盘的相同偏移处逻辑分割组成了条带;用户写入请求响应模块随后对所述各个数据子片段分别进行划分,得到所述各个数据子片段各自对应的数据块。
特有模块2:写入策略规划模块,用于根据划分出的各个数据块,确定最优写入策略,具体可以分为以下三种情况:
情况1:当一个目标写入请求(或其拆分出的一个后端请求)完整地覆盖了磁盘冗余阵列的整个条带时,写入策略规划模块可以直接通过写入协议拓展模块生成相应的第一请求,并通过网络通信模块发送给相应的存储服务器进行数据写入。
在该实施例中,对于各个数据块中任一条带对应的各个第二数据块,策略规划模块在所述各个第二数据块对应的磁盘为所述条带的所有磁盘,且所述目标磁盘冗余阵列中不存在故障磁盘的情况下,可以判定该各个第二数据块对应的写入请求(如目标写入请求或后端请求)完整地覆盖了磁盘冗余阵列的整个条带,策略规划模块随后可以从该条带的所有磁盘所在的各个存储服务器中,确定各个第二数据块各自对应的第一存储服务器,以便对该各个第一存储服务器分别发送第一请求。
可以理解的是,磁盘冗余阵列中每个条带的校验块所在的磁盘(或存储服务器)通常固定,即该条带后续所写入数据的校验块均在同一磁盘或存储服务器上进行存储,故策略规划模块在确定条带所对应的各个第一存储服务器之后,即可将该条带当前的校验块所在的存储服务器确定为对应的第二存储服务器。
情况2:当一个目标写入请求(或其拆分出的一个后端请求)仅覆盖了磁盘冗余阵列某个条带的一部分,写入策略规划模块则需要根据涉及的磁盘数量来决定采取何种写入策略,以使得总体的读写次数较少。
在该实施例中,对于各个数据块中任一条带对应的各个第二数据块,策略规划模块在所述各个第二数据块对应的磁盘为所述条带的部分磁盘的情况下,可以判定该各个第二数据块对应的写入请求(如目标写入请求或后端请求)仅覆盖了磁盘冗余阵列对应条带的一部分,策略规划模块随后可以根据所述各个第二数据块对应的磁盘的数量,确定所述各个第二数据块各自对应的第一存储服务器。
在一个实施例中,在各个第二数据块对应的磁盘的数量不高于第一设定值的情况下,如该各个第二数据块对应的磁盘的数量不高于对应条带的磁盘数量的一半的情况下,策略规划模块可以将各个第二数据块各自对应的磁盘所在的各个存储服务器,确定为所述各个第二数据块各自对应的第一存储服务器。
如图3所示,写入策略规划模块可以通过写入协议拓展模块生成携带了第一指令、对应第二存储服务器的信息、以及对应第二数据块(如D1’或D2’)在客户端中的写入缓存区的位置(如偏移量、区间长度等位置信息)的各个第一请求,并通过网络通信模块将该各个第一请求分别发送至所述各个第二数据块各自对应的第一存储服务器,以使第一存储服务器在第一请求的指示下,执行针对该第二数据块的写入操作、以及针对相关第一校验块(如P1’或P2’)的生成和发送操作。
在另一个实施例中,在各个第二数据块对应的磁盘的数量高于所述第一设定值的情况下,如该各个第二数据块对应的磁盘的数量高于对应条带的磁盘数量的一半的情况下,策略规划模块可以从对应条带中除所述各个第二数据块各自对应的磁盘之外的剩余磁盘所在的存储服务器中,确定所述各个第二数据块各自对应的第一存储服务器。
策略规划模块随后可以通过写入协议拓展模块生成携带了对应第二存储服务器的信息、以及对应条带的磁盘位置的第二请求,以使第一存储服务器在第二请求的指示下,获取自身对应磁盘位置中的数据块(即第二请求指示的第二原始数据块),并将该第二原始数据块发送至所述第二请求指示的第二存储服务器,再由第二存储服务器根据接收到的第二原始数据块生成第二校验块,对所述第二校验块进行归约操作。例如,第二存储服务器可以根据接收到的第二原始数据块、以及自身存储的对应校验块,恢复出相关磁盘(即所需写入各个第二数据块的磁盘)中的原始数据,再由该原始数据和第二存储服务器从客户端拉取到的各个第二数据块,生成第二校验数据块(相当于第一存储服务器根据第一原始数据块和第一数据块生成第一校验数据块),并进行归约操作,从而避免第二存储服务器从其它存储服务器的大量磁盘中多次读取校验块。
以涉及10个磁盘的条带为例,若需要向其中3个磁盘写入数据,则策略规划模块可以选择通过第一请求控制该3个磁盘执行数据块写入操作,以及校验块的生成及发送操作,此时第二存储服务器最多分3次读取该3个磁盘生成的校验块,整个数据写入过程的总体读写次数较少;但当需要向其中8个磁盘写入数据时,若策略规划模块仍然选择通过第一请求控制该8个磁盘执行数据块写入操作,以及校验块的生成及发送操作,则此时第二存储服务器可能需要分8次读取该8个磁盘生成的校验块,以致整个数据写入过程的总体读写次数显著增加。
故本申请在策略规划模块中引入了第一设定值对写入策略进行选择,当需要向其中8个磁盘写入数据时,策略规划模块将选择控制该8个磁盘执行数据块写入操作,并通过第二请求控制剩余的2个磁盘执行原始数据块(即第二原始数据块)的发送操作,此时第二存储服务器仅需要分2次读取该2个磁盘中的原始数据块,并向客户端拉取1次相关的所有第二数据块,从而有效降低了整个数据写入过程的总体读写次数。
情况3:在目标磁盘冗余阵列中存在故障磁盘的情况下,策略规划模块根据故障磁盘的数量,确定各个数据块各自对应的第一存储服务器。
在该实施例中,当目标磁盘冗余阵列中存在故障磁盘时,写入策略规划模块需要首先检验剩余的正常磁盘数量是否仍然能满足运行条件,如检验故障磁盘的数量是否低于第二设定值,该第二设定值可以根据目标磁盘冗余阵列的冗余度确定,若故障磁盘的数量不低于第二设定值,则可以判定剩余的正常磁盘数量不能满足运行条件(如无法正常实现数据恢复操作),则策略规划模块将停止数据写入操作并报错。
在故障磁盘的数量低于第二设定值的情况下,写入策略规划模块可以绕过故障磁盘,通过纠删码机制将数据进行恢复和存储,如从目标磁盘冗余阵列中除故障磁盘之外的剩余磁盘所在的存储服务器中,以上述情况2所记载的写入策略,确定各个数据块各自对应的第一存储服务器并进行相应操作。
可以理解的是,写入策略规划模块在确定写入策略之后,可以通过写入协议拓展模块生成对应的消息头,并将携带该消息头的请求(如第一请求、第二请求)发送至该写入策略相关的存储服务器(如第一存储服务器、第二存储服务器、情况2中需要单独执行数据写入操作的存储服务器等),以向相应的存储服务器指示写入策略、及当前所需执行的操作。
(三)存储服务器端
在该实施例中,存储服务器端还至少包含了三个特有模块:磁盘读写模块,多设备并发调度模块,无阻塞纠删码归约模块。
特有模块1:磁盘读写模块,用于直接访问磁盘驱动,向磁盘发送读写请求以及轮询磁盘读写请求的状态。
可以理解的是,存储服务器需要通过磁盘读写模块对安装在其上的磁盘进行读写。
在具体实施时,该磁盘读写模块采用了异步返回读写结果、中央处理器主动轮询磁盘读写请求的状态的方式,并且磁盘读写模块完全运行于用户态,因此可以最小化数据读写的延迟。在执行读写请求时,磁盘读写模块会保留一段内存作为缓冲区,用于存放读写的数据。在读写请求执行完成后,磁盘读写模块会对该内存进行回收,并为下次执行读写请求做好准备。
特有模块2:多设备并发调度模块,用于根据磁盘冗余阵列的特性,以流水线的方式在存储服务器上的多设备间并发执行请求,提升节点内并行度,进而提升磁盘冗余阵列的写入性能。
在该实施例中,目标磁盘冗余阵列的数据写入过程主要涉及存储服务器上的3类设备,即中央处理器(部署了存储服务器端的通用模块及特有模块)、网卡和磁盘。这3类设备都具有并发处理请求的能力。多设备并发调度模块能够将数据写入过程涉及的多个操作按照流水线的方式进行组织,从而提升它们的并行度。
示例性地,如图4所示,在存储服务器接收到指令1(如第一指令,即PartialWrite指令)时,多设备并发调度模块会首先调用相关的模块让网卡和磁盘同时进行数据读取(对应图4所示的拉取1和读取1);而在两者都完成后,多设备并发调度模块则会调用相关的模块同时让磁盘和中央处理器分别进行数据写入(对应图4所示的写入1)和校验块的计算(对应图4所示的计算1),在校验块计算完成后,不论写入的情况如何,多设备并发调度模块都会调用相关的模块触发网卡发送校验块到另一个存储服务器(即第二存储服务器),后续第二存储服务器完成目标校验块的写入操作后,将会向客户端返回执行结果(对应图4所示的回调1),至此,指令1所对应的所有操作全部执行完成。可以理解的是,在指令1对应的拉取1和读取1操作完成后,多设备并发调度模块即可调用相关设备对指令2所对应的相同操作进行执行,通过这种对多个指令以流水线方式进行执行的方法,使得多个设备可以同时工作,可以极大提升目标磁盘冗余阵列的写入性能。
特有模块3:无阻塞纠删码归约模块,用于收集需要归约的纠删码片段(如其它存储服务器生成的各个校验块),并调用纠删码生成模块,对各个纠删码片段进行归约操作。
在该实施例中,无阻塞纠删码归约模块对多个存储服务器发来的纠删码片段进行归约操作,得到最终的纠删码(即目标校验块)并将其写入自身的磁盘。
需要说明的是,本申请提供的无阻塞纠删码归约模块的最大特点是无阻塞且不占用额外内存,也即是说,无阻塞纠删码归约模块不等待客户端发送的指令(如第二指令)到达即可开始工作,故不会出现在内存中缓存了大量校验块的情况。
当其它存储服务器发送的部分结果(如第一校验块)被无阻塞纠删码归约模块收到时,无阻塞纠删码归约模块会检测是否有同一请求下的归约结果已经存在。如果已经存在,则立即进行归约;如果还不存在,则该部分结果是首条数据,还需等待更多部分结果的传输。
无阻塞纠删码归约模块最终会等待客户端指令的到达,从而确定是否已经收到了足够多的所需归约数据。如果预期收到的数据已全部收到,则归约完成,向客户端返回成功结果。
示例性地,如图3所示,生成了第一校验块(如P1’或P2’)的第一存储服务器,将携带所述第一校验块的第三请求发送至其所接收到的第一请求所指示的第二存储服务器。
可选地,该第一存储服务器可以通过自身的写入协议拓展模块生成携带了第三指令、以及该第一校验块的第三请求,便于第二存储服务器从接收到的请求中快速识别出用于存储服务器间通信的第三请求。
接收到第三请求的第二存储服务器,其无阻塞纠删码归约模块首先检测是否存在所述第三请求对应的归约结果(如归约结果P或P’);在存在所述第三请求对应的归约结果的情况下,根据所述第三请求携带的第一校验块更新所述归约结果(如将新的校验块P1’和P2’与归约结果P进行异或);在不存在所述第三请求对应的归约结果的情况下,将所述第一校验块确定为所述第三请求对应的归约结果,缓存该归约结果并等待其它第一校验块的传输。
在一个实施例中,客户端向各个第二存储服务器发送第四请求,具体地,客户端可以通过自身的写入协议拓展模块生成携带了第二指令、以及所需归约的校验块数量的第四请求;接收到所述第四请求的第二存储服务器,根据所述第四请求指示的所需归约的校验块数量、以及进行归约操作所得的归约结果,确定目标校验块,将所述目标校验块写入自身的磁盘中。例如,第四请求指示了所需归约的校验块数量为3,则第二存储服务器检测当前缓存的归约结果是否是对3个校验块进行归约后生成的,若是,则将该校验块作为目标校验块,若否,则继续等待其它校验块的传输,直至生成符合该所需归约的校验块数量的目标校验块。
作为一种可能的实施方式,将目标校验块写入自身的磁盘中的第二存储服务器,向客户端发送成功执行结果(即回调);客户端根据接收到的成功执行结果,生成针对所述目标写入请求的目标执行结果。例如,客户端在设定时间内,接收到来自于目标写入请求所关联的所有第二存储服务器的成功执行结果,则生成最终的成功执行结果(即目标执行结果),并通过网页等方式输出该最终的成功执行结果。
基于上述实施例,本申请提出了一种面向服务器无感知计算的分离式磁盘冗余阵列技术。该技术充分考虑了分离式存储和磁盘冗余阵列的特性,针对网络拓扑和资源调度进行了优化。该技术提出了一种点对点的磁盘冗余阵列网络拓扑,减少了不必要的网络通信,且通过提升跨节点并行度的无阻塞多阶段写入技术、以及流水线读写请求并行处理技术两个子技术点,充分利用了网络设备和存储设备高并发度的特点,提升了磁盘冗余阵列的的整体写入性能。
为了验证该技术的性能,本申请实现并评估了相关的系统原型。且使用了最常见的磁盘性能测试工具FIO和键值存储性能测评指标YCSB进行了相关实验。实验结果表明该方法相比基线方法能够有效提升磁盘冗余阵列整体的写入吞吐量,降低请求延迟。在键值存储实验中,应用该方法之后,各种不同工作负载的性能均有不同程度的提升。
本申请实施例还提供了一种面向服务器无感知计算的磁盘冗余阵列写入系统,所述系统包括客户端和多个存储服务器(如图5所示的存储服务器1至n),所述客户端和每个所述存储服务器之间、以及每两个所述存储服务器之间通过点对点的网络通信连接进行通信,其中:
所述客户端,用于接收目标写入请求;
所述客户端,还用于根据目标磁盘冗余阵列的组织方式,将所述目标写入请求所对应的数据片段划分为各个数据块,一个数据块对应所述目标磁盘冗余阵列中的一个磁盘,所述目标磁盘冗余阵列由所述多个存储服务器的磁盘构成;
所述客户端,还用于从所述多个存储服务器中,确定各个第一存储服务器和各个第二存储服务器,向所述各个第一存储服务器分别发送第一请求;
所述各个第一存储服务器,用于以流水线方式处理各自接收到的每个所述第一请求,从所述客户端中获取所述第一请求指示的第一数据块,且并发地从所述第一存储服务器的磁盘中获取所述第一数据块对应的第一原始数据块;
所述各个第一存储服务器中获取到所述第一数据块和所述第一原始数据块的第一存储服务器,还用于将所述第一数据块写入所述第一存储服务器的对应磁盘中,且并发地根据所述第一数据块和所述第一原始数据块,生成所述第一数据块的第一校验块,将所述第一校验块发送至所述第一请求指示的第二存储服务器;
所述各个第二存储服务器中接收到所述第一校验块的第二存储器服务器,用于对所述第一校验块进行归约操作。
由上述技术方案可以看出,通过在构成目标磁盘冗余阵列的多个存储服务器之间建立点对点的网络通信连接,由该多个存储服务器之间的少量通信交互完成对校验块的归约操作,能够减少目标磁盘冗余阵列所占用的带宽,从而降低网卡带宽对磁盘冗余阵列的写入性能限制;第一存储服务器以流水线方式在多设备间并发执行请求,且第二存储服务器无需等待全部数据传输完成,即可执行对校验块的归约操作,可以提升并行度,优化了磁盘冗余阵列的写入性能。
需要说明的是,系统实施例与方法实施例相近,故描述的较为简单,相关之处参见方法实施例即可。
可选地,在所述数据片段对应所述目标磁盘冗余阵列中的多个条带的情况下,所述客户端还用于:
将所述数据片段划分为各个数据子片段,一个数据子片段对应所述目标磁盘冗余阵列中的一个条带;
对所述各个数据子片段分别进行划分,得到所述各个数据子片段各自对应的数据块。
可选地,所述客户端,还用于从所述多个存储服务器中,确定所述各个数据子片段各自对应的条带的校验块所在的各个第二存储服务器。
可选地,对于所述各个数据块中任一条带对应的各个第二数据块,所述客户端还用于在所述各个第二数据块对应的磁盘为所述条带的所有磁盘,且所述目标磁盘冗余阵列中不存在故障磁盘的情况下,从所述条带的所有磁盘所在的各个存储服务器中,确定所述各个第二数据块各自对应的第一存储服务器;
对于所述各个数据块中任一条带对应的各个第二数据块,所述客户端还用于在所述各个第二数据块对应的磁盘为所述条带的部分磁盘的情况下,根据所述各个第二数据块对应的磁盘的数量,确定所述各个第二数据块各自对应的第一存储服务器;
在所述目标磁盘冗余阵列中存在故障磁盘的情况下,所述客户端还用于根据所述故障磁盘的数量,确定所述各个数据块各自对应的第一存储服务器。
可选地,在所述各个第二数据块对应的磁盘的数量不高于第一设定值的情况下,所述客户端还用于将所述各个第二数据块各自对应的磁盘所在的各个存储服务器,确定为所述各个第二数据块各自对应的第一存储服务器;
在所述各个第二数据块对应的磁盘的数量高于所述第一设定值的情况下,所述客户端还用于从对应条带中除所述各个第二数据块各自对应的磁盘之外的剩余磁盘所在的存储服务器中,确定所述各个第二数据块各自对应的第一存储服务器;
在所述各个第二数据块对应的磁盘为所述条带的所有磁盘,且所述目标磁盘冗余阵列中不存在故障磁盘的情况下,或者,在所述各个第二数据块对应的磁盘的数量不高于所述第一设定值的情况下,所述客户端还用于向所述各个第二数据块各自对应的第一存储服务器分别发送第一请求;
在所述各个第二数据块对应的磁盘的数量高于所述第一设定值的情况下,所述客户端还用于向所述各个第二数据块各自对应的第一存储服务器分别发送第二请求;
所述各个第一存储服务器中接收到所述第二请求的第一存储服务器,还用于从所述第一存储服务器的磁盘中获取所述第二请求指示的第二原始数据块,将所述第二原始数据块发送至所述第二请求指示的第二存储服务器;
所述各个第二存储服务器中接收到所述第二原始数据块的第二存储器服务器,还用于根据所述第二原始数据块生成第二校验块,对所述第二校验块进行归约操作。
可选地,在所述故障磁盘的数量低于第二设定值的情况下,所述客户端还用于从所述目标磁盘冗余阵列中除所述故障磁盘之外的剩余磁盘所在的存储服务器中,确定所述各个数据块各自对应的第一存储服务器。
可选地,所述各个第一存储服务器中生成了所述第一校验块的第一存储服务器,还用于将携带所述第一校验块的第三请求发送至所述第一请求指示的第二存储服务器;
所述各个第二存储服务器中接收到所述第三请求的第二存储服务器,还用于执行以下步骤:
检测是否存在所述第三请求对应的归约结果;
在存在所述第三请求对应的归约结果的情况下,根据所述第三请求携带的第一校验块更新所述归约结果;
在不存在所述第三请求对应的归约结果的情况下,将所述第一校验块确定为所述第三请求对应的归约结果。
可选地,所述客户端,还用于向所述各个第二存储服务器发送第四请求;
所述各个第二存储服务器中接收到所述第四请求的第二存储服务器,还用于根据所述第四请求指示的所需归约的校验块数量、以及进行归约操作所得的归约结果,确定目标校验块,将所述目标校验块写入自身的磁盘中。
可选地,所述各个第二存储服务器中将所述目标校验块写入自身的磁盘中的第二存储服务器,还用于向所述客户端发送成功执行结果;
所述客户端,还用于根据接收到的成功执行结果,生成针对所述目标写入请求的目标执行结果。
可选地,所述多个存储服务器之间是通过支持远程直接内存访问的网卡建立点对点的网络通信连接的。
可选地,所述存储服务器还用于通过自身配置的中央处理器的X86指令集生成所述校验块。
本申请实施例还提供了一种电子设备,参照图6,图6是本申请实施例提出的电子设备的示意图。如图6所示,电子设备100包括:存储器110和处理器120,存储器110与处理器120之间通过总线通信连接,存储器110中存储有计算机程序,该计算机程序可在处理器120上运行,进而实现本申请实施例公开的面向服务器无感知计算的磁盘冗余阵列写入方法中的步骤。
本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序/指令,该计算机程序/指令被处理器执行时实现如本申请实施例公开的所述面向服务器无感知计算的磁盘冗余阵列写入方法。
本申请实施例还提供了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现如本申请实施例公开的所述面向服务器无感知计算的磁盘冗余阵列写入方法。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、系统、设备、存储介质及程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种面向服务器无感知计算的磁盘冗余阵列写入方法及系统,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (9)
1.一种面向服务器无感知计算的磁盘冗余阵列写入方法,其特征在于,所述方法包括:
客户端接收目标写入请求;
所述客户端根据目标磁盘冗余阵列的组织方式,将所述目标写入请求所对应的数据片段划分为各个数据块,一个数据块对应所述目标磁盘冗余阵列中的一个磁盘,所述目标磁盘冗余阵列由多个存储服务器的磁盘构成,所述客户端和每个所述存储服务器之间、以及每两个所述存储服务器之间通过点对点的网络通信连接进行通信;
所述客户端从所述多个存储服务器中,确定各个第一存储服务器和各个第二存储服务器,向所述各个第一存储服务器分别发送第一请求;
所述各个第一存储服务器以流水线方式处理各自接收到的每个所述第一请求,从所述客户端中获取所述第一请求指示的第一数据块,且并发地从所述第一存储服务器的磁盘中获取所述第一数据块对应的第一原始数据块;
所述各个第一存储服务器中获取到所述第一数据块和所述第一原始数据块的第一存储服务器,将所述第一数据块写入所述第一存储服务器的对应磁盘中,且并发地根据所述第一数据块和所述第一原始数据块,生成所述第一数据块的第一校验块,将所述第一校验块发送至所述第一请求指示的第二存储服务器;
所述各个第二存储服务器中接收到所述第一校验块的第二存储器服务器,对所述第一校验块进行归约操作;
所述各个第一存储服务器通过以下步骤确定:
对于所述各个数据块中任一条带对应的各个第二数据块,所述客户端在所述各个第二数据块对应的磁盘为所述条带的所有磁盘,且所述目标磁盘冗余阵列中不存在故障磁盘的情况下,从所述条带的所有磁盘所在的各个存储服务器中,确定所述各个第二数据块各自对应的第一存储服务器;
对于所述各个数据块中任一条带对应的各个第二数据块,所述客户端在所述各个第二数据块对应的磁盘为所述条带的部分磁盘的情况下,根据所述各个第二数据块对应的磁盘的数量,确定所述各个第二数据块各自对应的第一存储服务器;
在所述目标磁盘冗余阵列中存在故障磁盘的情况下,所述客户端根据所述故障磁盘的数量,确定所述各个数据块各自对应的第一存储服务器;
所述各个第二存储服务器通过以下步骤确定:
所述客户端从所述多个存储服务器中,确定所述各个数据块所对应各个条带各自的校验块所在的各个第二存储服务器;
其中,所述第一校验块是对所述第一数据块和所述第一原始数据块进行归约操作而得到的,所述第一原始数据块为所需写入所述第一数据块的磁盘中的原始数据。
2.根据权利要求1所述的方法,其特征在于,在所述数据片段对应所述目标磁盘冗余阵列中的多个条带的情况下,所述客户端根据目标磁盘冗余阵列的组织方式,将所述目标写入请求所对应的数据片段划分为各个数据块,包括:
所述客户端将所述数据片段划分为各个数据子片段,一个数据子片段对应所述目标磁盘冗余阵列中的一个条带;
所述客户端对所述各个数据子片段分别进行划分,得到所述各个数据子片段各自对应的数据块。
3.根据权利要求2所述的方法,其特征在于,所述各个第二存储服务器通过以下步骤确定:
所述客户端从所述多个存储服务器中,确定所述各个数据子片段各自对应的条带的校验块所在的各个第二存储服务器。
4.根据权利要求1所述的方法,其特征在于,根据所述各个第二数据块对应的磁盘的数量,确定所述各个第二数据块各自对应的第一存储服务器,包括:
在所述各个第二数据块对应的磁盘的数量不高于第一设定值的情况下,所述客户端将所述各个第二数据块各自对应的磁盘所在的各个存储服务器,确定为所述各个第二数据块各自对应的第一存储服务器;
在所述各个第二数据块对应的磁盘的数量高于所述第一设定值的情况下,所述客户端从对应条带中除所述各个第二数据块各自对应的磁盘之外的剩余磁盘所在的存储服务器中,确定所述各个第二数据块各自对应的第一存储服务器;
向所述各个第一存储服务器分别发送第一请求,包括:
在所述各个第二数据块对应的磁盘为所述条带的所有磁盘,且所述目标磁盘冗余阵列中不存在故障磁盘的情况下,或者,在所述各个第二数据块对应的磁盘的数量不高于所述第一设定值的情况下,所述客户端向所述各个第二数据块各自对应的第一存储服务器分别发送第一请求;
所述方法还包括:
在所述各个第二数据块对应的磁盘的数量高于所述第一设定值的情况下,所述客户端向所述各个第二数据块各自对应的第一存储服务器分别发送第二请求;
所述各个第一存储服务器中接收到所述第二请求的第一存储服务器,从所述第一存储服务器的磁盘中获取所述第二请求指示的第二原始数据块,将所述第二原始数据块发送至所述第二请求指示的第二存储服务器;
所述各个第二存储服务器中接收到所述第二原始数据块的第二存储器服务器,根据所述第二原始数据块生成第二校验块,对所述第二校验块进行归约操作。
5.根据权利要求1所述的方法,其特征在于,所述客户端根据所述故障磁盘的数量,确定所述各个数据块各自对应的第一存储服务器,包括:
在所述故障磁盘的数量低于第二设定值的情况下,所述客户端从所述目标磁盘冗余阵列中除所述故障磁盘之外的剩余磁盘所在的存储服务器中,确定所述各个数据块各自对应的第一存储服务器。
6.根据权利要求1所述的方法,其特征在于,将所述第一校验块发送至所述第一请求指示的第二存储服务器,包括:
所述各个第一存储服务器中生成了所述第一校验块的第一存储服务器,将携带所述第一校验块的第三请求发送至所述第一请求指示的第二存储服务器;
所述各个第二存储服务器中接收到所述第一校验块的第二存储器服务器,对所述第一校验块进行归约操作,包括:
所述各个第二存储服务器中接收到所述第三请求的第二存储服务器,执行以下步骤:
检测是否存在所述第三请求对应的归约结果;
在存在所述第三请求对应的归约结果的情况下,根据所述第三请求携带的第一校验块更新所述归约结果;
在不存在所述第三请求对应的归约结果的情况下,将所述第一校验块确定为所述第三请求对应的归约结果。
7.根据权利要求1-6任一所述的方法,其特征在于,所述方法还包括:
所述客户端向所述各个第二存储服务器发送第四请求;
所述各个第二存储服务器中接收到所述第四请求的第二存储服务器,根据所述第四请求指示的所需归约的校验块数量、以及进行归约操作所得的归约结果,确定目标校验块,将所述目标校验块写入自身的磁盘中。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
所述各个第二存储服务器中将所述目标校验块写入自身的磁盘中的第二存储服务器,向所述客户端发送成功执行结果;
所述客户端根据接收到的成功执行结果,生成针对所述目标写入请求的目标执行结果。
9.一种面向服务器无感知计算的磁盘冗余阵列写入系统,其特征在于,所述系统包括客户端和多个存储服务器,所述客户端和每个所述存储服务器之间、以及每两个所述存储服务器之间通过点对点的网络通信连接进行通信,其中:
所述客户端,用于接收目标写入请求;
所述客户端,还用于根据目标磁盘冗余阵列的组织方式,将所述目标写入请求所对应的数据片段划分为各个数据块,一个数据块对应所述目标磁盘冗余阵列中的一个磁盘,所述目标磁盘冗余阵列由所述多个存储服务器的磁盘构成;
所述客户端,还用于从所述多个存储服务器中,确定各个第一存储服务器和各个第二存储服务器,向所述各个第一存储服务器分别发送第一请求;
所述各个第一存储服务器,用于以流水线方式处理各自接收到的每个所述第一请求,从所述客户端中获取所述第一请求指示的第一数据块,且并发地从所述第一存储服务器的磁盘中获取所述第一数据块对应的第一原始数据块;
所述各个第一存储服务器中获取到所述第一数据块和所述第一原始数据块的第一存储服务器,还用于将所述第一数据块写入所述第一存储服务器的对应磁盘中,且并发地根据所述第一数据块和所述第一原始数据块,生成所述第一数据块的第一校验块,将所述第一校验块发送至所述第一请求指示的第二存储服务器;
所述各个第二存储服务器中接收到所述第一校验块的第二存储器服务器,用于对所述第一校验块进行归约操作;
对于所述各个数据块中任一条带对应的各个第二数据块,所述客户端还用于在所述各个第二数据块对应的磁盘为所述条带的所有磁盘,且所述目标磁盘冗余阵列中不存在故障磁盘的情况下,从所述条带的所有磁盘所在的各个存储服务器中,确定所述各个第二数据块各自对应的第一存储服务器;
对于所述各个数据块中任一条带对应的各个第二数据块,所述客户端还用于在所述各个第二数据块对应的磁盘为所述条带的部分磁盘的情况下,根据所述各个第二数据块对应的磁盘的数量,确定所述各个第二数据块各自对应的第一存储服务器;
在所述目标磁盘冗余阵列中存在故障磁盘的情况下,所述客户端还用于根据所述故障磁盘的数量,确定所述各个数据块各自对应的第一存储服务器;
所述客户端还用于从所述多个存储服务器中,确定所述各个数据块所对应各个条带各自的校验块所在的各个第二存储服务器;
其中,所述第一校验块是对所述第一数据块和所述第一原始数据块进行归约操作而得到的,所述第一原始数据块为所需写入所述第一数据块的磁盘中的原始数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310426600.3A CN116149575B (zh) | 2023-04-20 | 2023-04-20 | 面向服务器无感知计算的磁盘冗余阵列写入方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310426600.3A CN116149575B (zh) | 2023-04-20 | 2023-04-20 | 面向服务器无感知计算的磁盘冗余阵列写入方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116149575A CN116149575A (zh) | 2023-05-23 |
CN116149575B true CN116149575B (zh) | 2023-07-25 |
Family
ID=86351018
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310426600.3A Active CN116149575B (zh) | 2023-04-20 | 2023-04-20 | 面向服务器无感知计算的磁盘冗余阵列写入方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116149575B (zh) |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030041097A1 (en) * | 2001-07-11 | 2003-02-27 | Alexander Tormasov | Distributed transactional network storage system |
CN101923441B (zh) * | 2009-06-17 | 2012-08-22 | 成都市华为赛门铁克科技有限公司 | 混合磁盘冗余阵列的写请求处理方法、控制器和存储系统 |
CN106293990B (zh) * | 2016-08-10 | 2019-06-07 | 华中科技大学 | 一种基于批量写校验的独立磁盘冗余阵列读写方法 |
CN111522501B (zh) * | 2019-02-01 | 2022-01-21 | 杭州海康威视数字技术股份有限公司 | 磁盘阵列空间划分方法、装置、电子设备及存储介质 |
CN110022300B (zh) * | 2019-03-06 | 2021-09-21 | 百度在线网络技术(北京)有限公司 | 边缘计算实现方法、设备、系统及存储介质 |
CN114996228A (zh) * | 2022-06-01 | 2022-09-02 | 南京大学 | 一种面向服务器无感知的数据传输成本优化方法 |
CN115639961A (zh) * | 2022-10-11 | 2023-01-24 | 超聚变数字技术有限公司 | 数据写入方法、存储系统及服务器 |
-
2023
- 2023-04-20 CN CN202310426600.3A patent/CN116149575B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN116149575A (zh) | 2023-05-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10965753B2 (en) | Interconnect delivery process | |
US11301144B2 (en) | Data storage system | |
EP3117326B1 (en) | Reducing data volume durability state for block-based storage | |
US6880062B1 (en) | Data mover mechanism to achieve SAN RAID at wire speed | |
US8521685B1 (en) | Background movement of data between nodes in a storage cluster | |
US8560792B2 (en) | Synchronous extent migration protocol for paired storage | |
US8924656B1 (en) | Storage environment with symmetric frontend and asymmetric backend | |
US20190250852A1 (en) | Distributed compute array in a storage system | |
US20230409227A1 (en) | Resilient implementation of client file operations and replication | |
CN115686341A (zh) | 一种处理访问请求的方法、装置、存储设备及存储介质 | |
US10860224B2 (en) | Method and system for delivering message in storage system | |
US10846094B2 (en) | Method and system for managing data access in storage system | |
CN108733585B (zh) | 缓存系统及相关方法 | |
US9891992B2 (en) | Information processing apparatus, information processing method, storage system and non-transitory computer readable storage media | |
CN112506431B (zh) | 基于磁盘设备属性的i/o指令调度方法及装置 | |
US10169157B2 (en) | Efficient state tracking for clusters | |
CN116149575B (zh) | 面向服务器无感知计算的磁盘冗余阵列写入方法及系统 | |
US10855522B2 (en) | Dual port storage device emulation | |
JP2004164171A (ja) | パス冗長化装置及び方法 | |
US10956399B1 (en) | Transaction pipelining in a journaled database | |
CN118210449A (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 |