CN116521077A - 一种分布式集群的写方法、装置、设备及介质 - Google Patents
一种分布式集群的写方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN116521077A CN116521077A CN202310488338.5A CN202310488338A CN116521077A CN 116521077 A CN116521077 A CN 116521077A CN 202310488338 A CN202310488338 A CN 202310488338A CN 116521077 A CN116521077 A CN 116521077A
- Authority
- CN
- China
- Prior art keywords
- writing
- client
- osd
- ceph
- write 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 85
- 230000008569 process Effects 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 10
- 230000006870 function Effects 0.000 claims description 10
- 238000004891 communication Methods 0.000 claims description 8
- 230000009286 beneficial effect Effects 0.000 abstract description 6
- 230000005540 biological transmission Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 14
- 238000011084 recovery Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 2
- 230000000750 progressive effect Effects 0.000 description 1
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/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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17306—Intercommunication techniques
- G06F15/17331—Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
-
- 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
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)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种分布式集群的写方法,属于服务器技术领域,该方法包括:当接收到客户端通过RDMA所发送的写数据时,则创建本地内存;其中,目标副OSD为Ceph中的任意一个副OSD;将本地内存注册至RNIC;当接收到客户端通过RDMA所发送的LocalKey时,则利用LocalKey将写数据写入至本地磁盘,并将写数据成功写入至本地磁盘的写成功消息反馈至客户端;其中,当客户端接收到所有副OSD反馈的写成功消息时,则判定写数据已成功写入至Ceph。通过该方法可以进一步提高客户端在向Ceph中写入数据时的效率。相应的,本申请所公开的一种分布式集群的写装置、设备及介质,同样具有上述有益效果。
Description
技术领域
本发明涉及服务器技术领域,特别涉及一种分布式集群的写方法、装置、设备及介质。
背景技术
由于Ceph(分布式文件系统)具有扩展性强、易伸缩以及高可靠性等优点,所以,Ceph成为当前较为常用的分布式文件存储系统。OSD(Object Store Device)是Ceph中负责物理存储的进程,在Ceph的每个节点上至少会设置一个OSD。对于Ceph中的目标节点而言,其上所设置的OSD为主OSD,而对于Ceph中的其它节点而言,目标节点上所设置的OSD则为副OSD。
在Ceph中通常会采用多种冗余策略来保证存储数据的一致性。请参见图1,图1为现有技术中客户端在向Ceph中写入数据时的示意图。客户端在向Ceph中写入数据时,客户端需要通过TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)先与Ceph中的节点建立通信连接,并将写数据写入到主OSD;当主OSD接收到客户端所发送的写数据之后,会将客户端所发送的写数据发送到其它副OSD上;当所有副OSD将写数据全部落盘之后,主OSD才会通过回调函数向客户端反馈将写数据成功写入至Ceph的写成功消息。
客户端在向Ceph写入数据的过程中,不仅需要与Ceph中的节点建立TCP/IP连接,而且,主OSD和副OSD都是通过Ceph中的集群网络进行数据交互,再加上Ceph中的故障节点也是通过集群网络进行数据恢复,这样就导致客户端在向Ceph中写入数据时的效率较差。目前,针对这一技术问题,还没有较为有效的解决办法。
由此可见,如何进一步提高客户端在向Ceph中写入数据时的效率,是本领域技术人员亟待解决的技术问题。
发明内容
有鉴于此,本发明的目的在于提供一种分布式集群的写方法、装置、设备及介质,以进一步提高客户端在向Ceph中写入数据时的效率。其具体方案如下:
一种分布式集群的写方法,应用于Ceph中的目标副OSD,包括:
当接收到客户端通过RDMA所发送的写数据时,则创建本地内存;其中,所述目标副OSD为所述Ceph中的任意一个副OSD;
将所述本地内存注册至RNIC;
当接收到所述客户端通过所述RDMA所发送的LocalKey时,则利用所述LocalKey将所述写数据写入至本地磁盘,并将所述写数据成功写入至所述本地磁盘的写成功消息反馈至所述客户端;其中,当所述客户端接收到所有副OSD反馈的写成功消息时,则判定所述写数据已成功写入至所述Ceph。
优选的,还包括:
预先在所述客户端和所述Ceph的各个节点上配置RoCE网卡,并利用支持所述RDMA的交换机将所述客户端和所述Ceph建立通信连接。
优选的,所述将所述本地内存注册至所述RNIC的过程,包括:
利用所述RDMA的struct ibv_mr*ibv_reg_mr接口将所述本地内存注册至所述RNIC。
优选的,所述利用所述LocalKey将所述写数据写入至本地磁盘的过程,包括:
利用所述LocalKey从所述客户端获取所述写数据,并利用PG_Log和Transaction将所述写数据写入至所述本地磁盘。
优选的,所述利用PG_Log和Transaction将所述写数据写入至所述本地磁盘的过程,包括:
通过所述RDMA的PrimaryLogPG::execute_ct->prepare_transaction函数构造所述PG_Log和所述Transaction,并利用所述PG_Log和所述Transaction将所述写数据写入至所述本地磁盘。
相应的,本发明还公开了一种分布式集群的写方法,应用于客户端,包括:
向Ceph中的目标副OSD发送写数据;其中,所述目标副OSD为所述Ceph中的任意一个副OSD;当所述目标副OSD接收到所述写数据时,则创建本地内存,并将所述本地内存注册至RNIC;
通过所述RDMA向所述目标副OSD发送LocalKey;其中,当所述目标副OSD接收到所述LocalKey时,则利用所述LocalKey将所述写数据写入至本地磁盘,并将所述写数据成功写入至所述本地磁盘的写成功消息反馈至所述客户端;
当接收到所有副OSD反馈的写成功消息时,则判定所述写数据已成功写入至所述Ceph。
优选的,所述当接收到所有副OSD反馈的写成功消息时,则判定所述写数据已成功写入至所述Ceph的过程,包括:
预先创建消息队列,并利用所述消息队列记录向所述目标副OSD发送所述写数据的消息;
当接收到所述目标副OSD将所述写数据成功写入所述本地磁盘的写成功消息时,则将与所述目标副OSD相对应的消息从所述消息队列中删除;
当所述消息队列为空队列时,则判定所述写数据已成功写入至所述Ceph。
相应的,本发明还公开了一种分布式集群的写装置,应用于Ceph中的目标副OSD,包括:
内存创建模块,用于当接收到客户端通过RDMA所发送的写数据时,则创建本地内存;其中,所述目标副OSD为所述Ceph中的任意一个副OSD;
内存注册模块,用于将所述本地内存注册至RNIC;
数据写入模块,用于当接收到所述客户端通过所述RDMA所发送的LocalKey时,则利用所述LocalKey将所述写数据写入至本地磁盘,并将所述写数据成功写入至所述本地磁盘的写成功消息反馈至所述客户端;其中,当所述客户端接收到所有副OSD反馈的写成功消息时,则判定所述写数据已成功写入至所述Ceph。
相应的,本发明还公开了一种分布式集群的写装置,应用于客户端,包括:
数据发送模块,用于向Ceph中的目标副OSD发送写数据;其中,所述目标副OSD为所述Ceph中的任意一个副OSD;当所述目标副OSD接收到所述写数据时,则创建本地内存,并将所述本地内存注册至RNIC;
权限授予模块,用于通过所述RDMA向所述目标副OSD发送LocalKey;其中,当所述目标副OSD接收到所述LocalKey时,则利用所述LocalKey将所述写数据写入至本地磁盘,并将所述写数据成功写入至所述本地磁盘的写成功消息反馈至所述客户端;
数据判定模块,用于当接收到所有副OSD反馈的写成功消息时,则判定所述写数据已成功写入至所述Ceph。
相应的,本发明还公开了一种分布式集群的写设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如前述所公开的一种分布式集群的写方法的步骤。
相应的,本发明还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如前述所公开的一种分布式集群的写方法的步骤。
可见,在本发明所提供的写方法中,当Ceph中的目标副OSD接收到客户端通过RDMA所发送的写数据时,首先是创建本地内存,并将本地内存注册至RNIC。当目标副OSD将本地内存注册至RNIC时,客户端就会通过RDMA向目标副OSD发送LocalKey。当目标副OSD接收到客户端所发送的LocalKey时,目标副OSD就会利用LocalKey将客户端所发送的写数据写入至本地磁盘中,并将写数据成功写入至本地磁盘的消息反馈至客户端。当客户端接收到所有副OSD所反馈的写成功消息时,则说明客户端所发送的写数据已经成功写入至Ceph。相较于现有技术而言,利用该方法客户端就可以直接通过RDMA将写数据写入至Ceph中的副OSD中,从而避免了现有技术中客户端需要通过主OSD才能将写数据写入至副OSD的繁琐流程。这样就相当于是将现有技术中Ceph主OSD与副OSD之间的横向数据流动变为客户端和Ceph之间的纵向数据流动,由于该方法可以显著缩短客户端在向Ceph写入数据时的数据传输路径,并且,也不会影响Ceph中故障节点的数据恢复流程,所以,通过该方法就可以进一步提高客户端在向Ceph中写入数据时的效率。相应的,本发明所提供的一种分布式集群的写装置、设备及介质,同样具有上述有益效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为现有技术中客户端在向Ceph中写入数据时的示意图;
图2为本发明实施例所提供的一种分布式集群的写方法的流程图;
图3为在传统模式和RDMA模式下进行数据传输时的示意图;
图4为本发明实施例所提供的客户端在向Ceph中写入数据时的示意图;
图5为客户端通过RDMA与Ceph建立通信连接时的示意图;
图6为本发明实施例所提供的另一种分布式集群的写方法的流程图;
图7为本发明实施例所提供的一种分布式集群的写装置的结构图;
图8为本发明实施例所提供的另一种分布式集群的写装置的结构图;
图9为本发明实施例所提供的一种分布式集群的写设备的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图2,图2为本发明实施例所提供的一种分布式集群的写方法的流程图,该方法包括:
步骤S11:当接收到客户端通过RDMA所发送的写数据时,则创建本地内存;其中,目标副OSD为Ceph中的任意一个副OSD;
步骤S12:将本地内存注册至RNIC;
步骤S13:当接收到客户端通过RDMA所发送的LocalKey时,则利用LocalKey将写数据写入至本地磁盘,并将写数据成功写入至本地磁盘的写成功消息反馈至客户端;其中,当客户端接收到所有副OSD反馈的写成功消息时,则判定写数据已成功写入至Ceph。
在本实施例中,是提供了一种分布式集群的写方法,利用该方法可以进一步提高客户端在向Ceph中写入数据时的效率。该方法是以Ceph中的目标副OSD为执行主体进行具体说明,目标副OSD是指Ceph中的任意一个副OSD,在Ceph中,一般会将OSD设置为3副本模式。
在该方法中,客户端首先是通过RDMA(Remote Direct Memory Access,远程直接数据存取)向Ceph中的目标副OSD发送写数据,当目标副OSD接收到客户端所发送的写数据时,首先是在客户端和目标副OSD之间建立共享内存,创建本地内存,并将本地内存注册到RNIC(Rdma Network Interface Controller,Rdma网络接口控制器)当中。
可以理解的是,RDMA技术相较于传统网络架构的优势是:RDMA可以通过零拷贝和内核旁路技术快速地访问远程主机寄存器中的数据,在数据传输期间不会频繁地进行内核态和用户态的上下文切换,也不需要CPU(Central Processing Unit,中央处理器)的参与,所以,客户端直接通过RDMA向目标副OSD发送写数据时,就可以显著缩短写数据的传输路径,大大减少写数据在数据传输过程中的网络时延。具体请参见图3,图3为在传统模式和RDMA模式下进行数据传输时的示意图。在图3中,TCP/IP代表数据传输协议,OS(OperatingSystem,操作系统)代表客户端的操作系统。
当目标副OSD将本地内存注册至RNIC时,客户端就会向目标副OSD发送用于RDMA操作的LocalKey,其中,LocalKey包括请求的地址、内存地址范围以及长度等等。能够想到的是,由于LocalKey的数据量较少,所以,目标副OSD通过LocalKey来操作客户端的内存,并从客户端的内存中获取写数据时,就可以相对提高目标副OSD从客户端中获取写数据时的效率。
当目标副OSD接收到客户端通过RDMA所发送的LocalKey时,目标副OSD就会利用LocalKey将客户端所发送的写数据写入至本地磁盘;当目标副OSD将写数据成功写入至本地磁盘时,目标副OSD就会将写数据成功写入至本地磁盘的写成功消息反馈至客户端。当客户端接收到Ceph中所有副OSD所反馈的写成功消息时,则说明客户端的写数据已经成功写入到Ceph中。
相较于现有技术而言,通过该方法就相当于是将主OSD与副OSD之间的横向数据同步过程,修改为客户端与副OSD之间的纵向数据传输过程,这样不仅可以显著缩短Ceph中故障数据所需要的数据恢复时间,提高故障数据的恢复效率,而且,也可以提高客户端在向Ceph中写入数据时的效率。请参见图4,图4为本发明实施例所提供的客户端在向Ceph中写入数据时的示意图。在图4所示的写数据传输路径中,客户端是直接将写数据发送至Ceph的副OSD中,而不是先将写数据写入至Ceph的主OSD,再通过主OSD将写数据发送至副OSD。能够想到的是,通过该方法就可以显著缩短客户端在向Ceph中写入数据时的传输路径,由此就可以大大提高客户端在向Ceph中写入数据时的效率。
可见,在本实施例所提供的写方法中,当Ceph中的目标副OSD接收到客户端通过RDMA所发送的写数据时,首先是创建本地内存,并将本地内存注册至RNIC。当目标副OSD将本地内存注册至RNIC时,客户端就会通过RDMA向目标副OSD发送LocalKey。当目标副OSD接收到客户端所发送的LocalKey时,目标副OSD就会利用LocalKey将客户端所发送的写数据写入至本地磁盘中,并将写数据成功写入至本地磁盘的消息反馈至客户端。当客户端接收到所有副OSD所反馈的写成功消息时,则说明客户端所发送的写数据已经成功写入至Ceph。相较于现有技术而言,利用该方法客户端就可以直接通过RDMA将写数据写入至Ceph中的副OSD中,从而避免了现有技术中客户端需要通过主OSD才能将写数据写入至副OSD的繁琐流程。这样就相当于是将现有技术中Ceph主OSD与副OSD之间的横向数据流动变为客户端和Ceph之间的纵向数据流动,由于该方法可以显著缩短客户端在向Ceph写入数据时的数据传输路径,并且,也不会影响Ceph中故障节点的数据恢复流程,所以,通过该方法就可以进一步提高客户端在向Ceph中写入数据时的效率。
基于上述实施例,本实施例对技术方案作进一步的说明与优化,作为一种优选的实施方式,上述写方法还包括:
预先在客户端和Ceph的各个节点上配置RoCE网卡,并利用支持RDMA的交换机将客户端和Ceph建立通信连接。
在本实施例中,是预先在客户端和Ceph的各个节点上配置了RoCE(RDMA overConverged Ethernet,基于融合以太网的RDMA)网卡,并利用支持RDMA的交换机将客户端与Ceph建立通信连接,从而使得客户端能够通过RDMA直接向Ceph中的目标副OSD发送写数据。
请参见图5,图5为客户端通过RDMA与Ceph建立通信连接时的示意图。如图5所示,节点1、节点2和节点3代表Ceph中的节点,客户端可以通过RDMA与Ceph进行数据交互,并由此替代现有技术中TCP/IP网络的数据传输模式,这样就可以极大的缩短写数据在客户端和Ceph之间的数据传输路径。
显然,通过本实施例所提供的技术方案,就可以使得客户端通过RDMA直接向Ceph中的副OSD发送写数据。
基于上述实施例,本实施例对技术方案作进一步的说明与优化,作为一种优选的实施方式,上述步骤:将本地内存注册至RNIC的过程,包括:
利用RDMA的struct ibv_mr*ibv_reg_mr接口将本地内存注册至RNIC。
在本实施例中,是利用RDMA技术中的struct ibv_mr*ibv_reg_mr接口将目标副OSD所创建的本地内存注册到RDMA的RNIC中,并以此来在客户端和Ceph的副OSD之间建立共享内存。
能够想到的是,直接利用RDMA所自带的函数来将目标副OSD的本地内存注册至RNIC,就可以相对提高在将目标副OSD的本地内存注册至RNIC时的便捷性,由此就可以进一步提高客户端在向Ceph中写入数据时的效率。
基于上述实施例,本实施例对技术方案作进一步的说明与优化,作为一种优选的实施方式,上述步骤:利用LocalKey将写数据写入至本地磁盘的过程,包括:
利用LocalKey从客户端获取写数据,并利用PG_Log和Transaction将写数据写入至本地磁盘。
目标副OSD在利用LocalKey将写数据写入至本地磁盘时,目标副OSD首先是利用LocalKey从客户端的内存中获取写数据,然后,目标副OSD会构造PG_Log和Transaction,并利用PG_Log和Transaction将写数据写入至目标副OSD所在的本地磁盘中。
其中,PG_log可以记录Ceph中PG的所有操作,而通过Transaction可以构建目标副OSD想要执行动作的程序进程,因此,在本实施例中,目标副OSD是利用PG_Log和Transaction将客户端所发送的写数据写入至目标副OSD所在的本地磁盘中。
作为一种优选的实施方式,上述步骤:利用PG_Log和Transaction将写数据写入至本地磁盘的过程,包括:
通过RDMA的PrimaryLogPG::execute_ct->prepare_transaction函数构造PG_Log和Transaction,并利用PG_Log和Transaction将写数据写入至本地磁盘。
具体的,在本实施例中,目标副OSD是通过RDMA所自带的PrimaryLogPG::execute_ct->prepare_transaction函数来构造PG_Log和Transaction。能够想到的是,通过RDMA所自带的函数来构建PG_Log和Transaction时,就可以省去编程人员对调用函数进行编译的繁琐过程,由此就可以相对提高编程人员的工作效率。
显然,通过本实施例所提供的技术方案,目标副OSD就可以更为便捷、快速地将客户端所发送的写数据写入至目标副OSD所在的本地磁盘中。
请参见图6,图6为本发明实施例所提供的另一种分布式集群的写方法的流程图,该方法包括:
步骤S21:向Ceph中的目标副OSD发送写数据;其中,目标副OSD为Ceph中的任意一个副OSD;当目标副OSD接收到写数据时,则创建本地内存,并将本地内存注册至RNIC;
步骤S22:通过RDMA向目标副OSD发送LocalKey;其中,当目标副OSD接收到LocalKey时,则利用LocalKey将写数据写入至本地磁盘,并将写数据成功写入至本地磁盘的写成功消息反馈至客户端;
步骤S23:当接收到所有副OSD反馈的写成功消息时,则判定写数据已成功写入至Ceph。
在本实施例中,是提供了另一种分布式集群的写方法,利用该方法可以进一步提高客户端在向Ceph中写入数据时的效率。该方法是以客户端为执行主体进行具体说明。本实施例所提供的一种分布式集群的写方法,可参见前述实施例分布式集群的写方法所公开的内容,在此不再作具体赘述。
可见,在本实施例所提供的写方法中,当Ceph中的目标副OSD接收到客户端通过RDMA所发送的写数据时,首先是创建本地内存,并将本地内存注册至RNIC。当目标副OSD将本地内存注册至RNIC时,客户端就会通过RDMA向目标副OSD发送LocalKey。当目标副OSD接收到客户端所发送的LocalKey时,目标副OSD就会利用LocalKey将客户端所发送的写数据写入至本地磁盘中,并将写数据成功写入至本地磁盘的消息反馈至客户端。当客户端接收到所有副OSD所反馈的写成功消息时,则说明客户端所发送的写数据已经成功写入至Ceph。相较于现有技术而言,利用该方法客户端就可以直接通过RDMA将写数据写入至Ceph中的副OSD中,从而避免了现有技术中客户端需要通过主OSD才能将写数据写入至副OSD的繁琐流程。这样就相当于是将现有技术中Ceph主OSD与副OSD之间的横向数据流动变为客户端和Ceph之间的纵向数据流动,由于该方法可以显著缩短客户端在向Ceph写入数据时的数据传输路径,并且,也不会影响Ceph中故障节点的数据恢复流程,所以,通过该方法就可以进一步提高客户端在向Ceph中写入数据时的效率。
基于上述实施例,本实施例对技术方案作进一步的说明与优化,作为一种优选的实施方式,上述步骤:当接收到所有副OSD反馈的写成功消息时,则判定写数据已成功写入至Ceph的过程,包括:
预先创建消息队列,并利用消息队列记录向目标副OSD发送写数据的消息;
当接收到目标副OSD将写数据成功写入本地磁盘的写成功消息时,则将与目标副OSD相对应的消息从消息队列中删除;
当消息队列为空队列时,则判定写数据已成功写入至Ceph。
在本实施例中,为了能够准确判断出客户端是否将写数据成功写入至Ceph的所有磁盘中,还在客户端创建了一个消息队列,并利用该消息队列来记录客户端向目标副OSD发送写数据时的消息,也即,客户端每向Ceph中的一个副OSD发送写数据时,就会将向该副OSD发送写数据的消息记录到自身所创建的消息队列中。
当客户端接收到目标副OSD将写数据成功写入至目标副OSD所在本地磁盘的写成功消息时,客户端就会将与目标副OSD相对应的消息从消息队列中删除。能够想到的是,当客户端接收到Ceph中所有副OSD将写数据成功写入至各自本地磁盘的写成功消息时,客户端就会将消息队列中所对应的所有消息都删除,此时消息队列为空队列,在此情况下就说明客户端已经将写数据成功写入到Ceph中。
此外,相较于现有技术中主OSD需要通过复杂耗时的回调函数才能向客户端返回写成功消息而言,通过该方法就可以进一步缩短客户端在向Ceph中成功写入数据时所需要的时间。
显然,通过本实施例所提供的技术方案,就可以保证客户端在向Ceph中写入数据时的整体可靠性。
请参见图7,图7为本发明实施例所提供的一种分布式集群的写装置的结构图,该装置包括:
内存创建模块21,用于当接收到客户端通过RDMA所发送的写数据时,则创建本地内存;其中,目标副OSD为Ceph中的任意一个副OSD;
内存注册模块22,用于将本地内存注册至RNIC;
数据写入模块23,用于当接收到客户端通过RDMA所发送的LocalKey时,则利用LocalKey将写数据写入至本地磁盘,并将写数据成功写入至本地磁盘的写成功消息反馈至客户端;其中,当客户端接收到所有副OSD反馈的写成功消息时,则判定写数据已成功写入至Ceph。
优选的,还包括:
网卡配置模块,用于预先在所述客户端和所述Ceph的各个节点上配置RoCE网卡,并利用支持所述RDMA的交换机将所述客户端和所述Ceph建立通信连接。
优选的,内存注册模块22,包括:
内存注册单元,用于利用所述RDMA的struct ibv_mr*ibv_reg_mr接口将所述本地内存注册至所述RNIC。
优选的,数据写入模块23,包括:
数据写入子模块,用于利用所述LocalKey从所述客户端获取所述写数据,并利用PG_Log和Transaction将所述写数据写入至所述本地磁盘。
优选的,数据写入子模块,包括:
数据写入单元,用于通过RDMA的PrimaryLogPG::execute_ct->prepare_transaction函数构造所述PG_Log和所述Transaction,并利用所述PG_Log和所述Transaction将所述写数据写入至所述本地磁盘。
本发明实施例所提供的一种分布式集群的写装置,具有前述所公开的一种分布式集群的写方法所具有的有益效果。
请参见图8,图8为本发明实施例所提供的一种分布式集群的写装置的结构图,该装置包括:
数据发送模块31,用于向Ceph中的目标副OSD发送写数据;其中,目标副OSD为Ceph中的任意一个副OSD;当目标副OSD接收到写数据时,则创建本地内存,并将本地内存注册至RNIC;
权限授予模块32,用于通过RDMA向目标副OSD发送LocalKey;其中,当目标副OSD接收到LocalKey时,则利用LocalKey将写数据写入至本地磁盘,并将写数据成功写入至本地磁盘的写成功消息反馈至客户端;
数据判定模块33,用于当接收到所有副OSD反馈的写成功消息时,则判定写数据已成功写入至Ceph。
优选的,数据判定模块33,包括:
队列创建单元,用于预先创建消息队列,并利用所述消息队列记录向所述目标副OSD发送所述写数据的消息;
消息删除单元,用于当接收到所述目标副OSD将所述写数据成功写入所述本地磁盘的写成功消息时,则将与所述目标副OSD相对应的消息从所述消息队列中删除;
数据判定单元,用于当所述消息队列为空队列时,则判定所述写数据已成功写入至所述Ceph。
本发明实施例所提供的一种分布式集群的写装置,具有前述所公开的一种分布式集群的写方法所具有的有益效果。
请参见图9,图9为本发明实施例所提供的一种分布式集群的写设备的结构图,该设备包括:
存储器41,用于存储计算机程序;
处理器42,用于执行计算机程序时实现如前述所公开的一种分布式集群的写方法的步骤。
本发明实施例所提供的一种分布式集群的写设备,具有前述所公开的一种分布式集群的写方法所具有的有益效果。
相应的,本发明实施例还公开了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如前述所公开的一种分布式集群的写方法的步骤。
本发明实施例所提供的一种计算机可读存储介质,具有前述所公开的一种分布式集群的写方法所具有的有益效果。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种分布式集群的写方法、装置、设备及介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (11)
1.一种分布式集群的写方法,其特征在于,应用于Ceph中的目标副OSD,包括:
当接收到客户端通过RDMA所发送的写数据时,则创建本地内存;其中,所述目标副OSD为所述Ceph中的任意一个副OSD;
将所述本地内存注册至RNIC;
当接收到所述客户端通过所述RDMA所发送的LocalKey时,则利用所述LocalKey将所述写数据写入至本地磁盘,并将所述写数据成功写入至所述本地磁盘的写成功消息反馈至所述客户端;其中,当所述客户端接收到所有副OSD反馈的写成功消息时,则判定所述写数据已成功写入至所述Ceph。
2.根据权利要求1所述的写方法,其特征在于,还包括:
预先在所述客户端和所述Ceph的各个节点上配置RoCE网卡,并利用支持所述RDMA的交换机将所述客户端和所述Ceph建立通信连接。
3.根据权利要求1所述的写方法,其特征在于,所述将所述本地内存注册至所述RNIC的过程,包括:
利用所述RDMA的struct ibv_mr*ibv_reg_mr接口将所述本地内存注册至所述RNIC。
4.根据权利要求1所述的写方法,其特征在于,所述利用所述LocalKey将所述写数据写入至本地磁盘的过程,包括:
利用所述LocalKey从所述客户端获取所述写数据,并利用PG_Log和Transaction将所述写数据写入至所述本地磁盘。
5.根据权利要求4所述的写方法,其特征在于,所述利用PG_Log和Transaction将所述写数据写入至所述本地磁盘的过程,包括:
通过所述RDMA的PrimaryLogPG::execute_ct->prepare_transaction函数构造所述PG_Log和所述Transaction,并利用所述PG_Log和所述Transaction将所述写数据写入至所述本地磁盘。
6.一种分布式集群的写方法,其特征在于,应用于客户端,包括:
向Ceph中的目标副OSD发送写数据;其中,所述目标副OSD为所述Ceph中的任意一个副OSD;当所述目标副OSD接收到所述写数据时,则创建本地内存,并将所述本地内存注册至RNIC;
通过所述RDMA向所述目标副OSD发送LocalKey;其中,当所述目标副OSD接收到所述LocalKey时,则利用所述LocalKey将所述写数据写入至本地磁盘,并将所述写数据成功写入至所述本地磁盘的写成功消息反馈至所述客户端;
当接收到所有副OSD反馈的写成功消息时,则判定所述写数据已成功写入至所述Ceph。
7.根据权利要求6所述的写方法,其特征在于,所述当接收到所有副OSD反馈的写成功消息时,则判定所述写数据已成功写入至所述Ceph的过程,包括:
预先创建消息队列,并利用所述消息队列记录向所述目标副OSD发送所述写数据的消息;
当接收到所述目标副OSD将所述写数据成功写入所述本地磁盘的写成功消息时,则将与所述目标副OSD相对应的消息从所述消息队列中删除;
当所述消息队列为空队列时,则判定所述写数据已成功写入至所述Ceph。
8.一种分布式集群的写装置,其特征在于,应用于Ceph中的目标副OSD,包括:
内存创建模块,用于当接收到客户端通过RDMA所发送的写数据时,则创建本地内存;其中,所述目标副OSD为所述Ceph中的任意一个副OSD;
内存注册模块,用于将所述本地内存注册至RNIC;
数据写入模块,用于当接收到所述客户端通过所述RDMA所发送的LocalKey时,则利用所述LocalKey将所述写数据写入至本地磁盘,并将所述写数据成功写入至所述本地磁盘的写成功消息反馈至所述客户端;其中,当所述客户端接收到所有副OSD反馈的写成功消息时,则判定所述写数据已成功写入至所述Ceph。
9.一种分布式集群的写装置,其特征在于,应用于客户端,包括:
数据发送模块,用于向Ceph中的目标副OSD发送写数据;其中,所述目标副OSD为所述Ceph中的任意一个副OSD;当所述目标副OSD接收到所述写数据时,则创建本地内存,并将所述本地内存注册至RNIC;
权限授予模块,用于通过所述RDMA向所述目标副OSD发送LocalKey;其中,当所述目标副OSD接收到所述LocalKey时,则利用所述LocalKey将所述写数据写入至本地磁盘,并将所述写数据成功写入至所述本地磁盘的写成功消息反馈至所述客户端;
数据判定模块,用于当接收到所有副OSD反馈的写成功消息时,则判定所述写数据已成功写入至所述Ceph。
10.一种分布式集群的写设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至5或者如权利要求6或7所述的一种分布式集群的写方法的步骤。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5或者如权利要求6或7所述的一种分布式集群的写方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310488338.5A CN116521077A (zh) | 2023-04-25 | 2023-04-25 | 一种分布式集群的写方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310488338.5A CN116521077A (zh) | 2023-04-25 | 2023-04-25 | 一种分布式集群的写方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116521077A true CN116521077A (zh) | 2023-08-01 |
Family
ID=87389816
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310488338.5A Pending CN116521077A (zh) | 2023-04-25 | 2023-04-25 | 一种分布式集群的写方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116521077A (zh) |
-
2023
- 2023-04-25 CN CN202310488338.5A patent/CN116521077A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11614867B2 (en) | Distributed storage system-based data processing method and storage device | |
US20230259528A1 (en) | Synchronization cache seeding | |
US7636868B2 (en) | Data replication in a distributed system | |
WO2019141186A1 (zh) | 数据处理方法和装置 | |
US20090292744A1 (en) | Solution method of in-doubt state in two-phase commit protocol of distributed transaction | |
CN108989432B (zh) | 用户态的文件发送方法、文件接收方法和文件收发装置 | |
CN106933548B (zh) | 全局信息获取、处理及更新、方法、装置和系统 | |
US20180101558A1 (en) | Log-shipping data replication with early log record fetching | |
WO2017088572A1 (zh) | 一种处理数据的方法、装置及系统 | |
US7228352B1 (en) | Data access management system in distributed processing system | |
CN106936662A (zh) | 一种实现心跳机制的方法、装置及系统 | |
WO2019041670A1 (zh) | 一种降低功能页面请求次数的方法、存储介质、设备及系统 | |
CN108228581B (zh) | Zookeeper兼容通信方法、服务器及系统 | |
JP4066617B2 (ja) | データの完全性を伴いデータネットワークに接続される記憶装置システム | |
CN113010549A (zh) | 基于异地多活系统的数据处理方法、相关设备及存储介质 | |
KR20140047230A (ko) | 분산 시스템에서 분산 트랜잭션의 최적화를 위한 방법 및 트랜잭션을 최적화한 분산 시스템 | |
CN113746641B (zh) | 一种基于分布式存储的odx协议处理方法 | |
CN111031135B (zh) | 消息传送方法、装置及电子设备 | |
CN112822091A (zh) | 一种消息处理方法和装置 | |
WO2019000423A1 (zh) | 一种数据存储方法及设备 | |
US20070011328A1 (en) | System and method for application deployment service | |
WO2020037625A1 (zh) | 分布式存储系统及其数据读写方法、存储终端及存储介质 | |
CN112052104A (zh) | 基于多机房实现的消息队列的管理方法及电子设备 | |
CN116521077A (zh) | 一种分布式集群的写方法、装置、设备及介质 | |
WO2022194021A1 (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 |