CN117472278A - 基于vhost协议的分布式存储方法、设备和介质 - Google Patents
基于vhost协议的分布式存储方法、设备和介质 Download PDFInfo
- Publication number
- CN117472278A CN117472278A CN202311474753.1A CN202311474753A CN117472278A CN 117472278 A CN117472278 A CN 117472278A CN 202311474753 A CN202311474753 A CN 202311474753A CN 117472278 A CN117472278 A CN 117472278A
- Authority
- CN
- China
- Prior art keywords
- osd
- target
- read
- qemu
- 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 423
- 230000008569 process Effects 0.000 claims abstract description 367
- 238000004891 communication Methods 0.000 claims abstract description 36
- 238000012545 processing Methods 0.000 claims description 20
- 230000004044 response Effects 0.000 claims description 14
- 238000007726 management method Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 5
- 230000005012 migration Effects 0.000 description 5
- 238000013508 migration Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000004886 process control Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000007723 transport mechanism 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/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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/544—Buffers; Shared memory; Pipes
-
- 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]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请属于计算机技术领域,具体涉及一种基于vhost协议的分布式存储方法、设备和介质。该方法通过获取QEMU进程发送的kick请求,所述kick请求是QEMU进程根据用户在QEMU进程对应的虚拟机中发出的对块设备的读写请求生成的,根据kick请求从QEMU进程的共享内存中读取目标读写数据,所述QEMU进程与所述daemon进程通过vhost协议通信连接,从osd集群中确定目标读写数据对应的目标osd进程,并将目标读写数据发送至目标osd进程;该方法解决了在块存储中线程切换的开销导致存储读写性能较低的问题;同时,解决了QEMU运行时的版本更新的问题。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种基于vhost协议的分布式存储方法、设备和介质。
背景技术
随着云计算的快速发展,云计算管理平台被用于给用户提供基础设施级服务(Infrastructure as a Service,IaaS),由几个主要的组件组合起来完成具体工作,常用的云计算管理平台项目例如OpenStack,其项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。
OpenStack可以管理QEMU进程等多种虚拟机管理程序,QEMU进程可以运行多个虚拟机,分布式存储软件Ceph可以为QEMU进程提供基于用户态接口库(librbd)的块存储服务,具体通过QEMU进程调用librbd来完成与Ceph通信从而进行分布式存储管理。
然而,现有的分布式存储方法在提供块存储服务时,线程切换的开销会导致存储读写性能会受到影响;并且,由于功能全都集成在QEMU进程中,无法做到运行时更新版本。
发明内容
本申请提供一种基于vhost协议的分布式存储方法、设备和介质,用以解决现有的分布式存储方法在提供块存储服务时,线程切换的开销会导致存储读写性能会受到影响;并且,由于功能全都集成在QEMU进程中,无法做到运行时更新版本的问题。
第一方面,本申请提供一种基于vhost协议的分布式存储方法,应用于daemon进程,该方法包括:
获取QEMU进程发送的kick请求,所述kick请求是所述QEMU进程根据用户在所述QEMU进程对应的虚拟机中发出的对块设备的读写请求生成的;
根据所述kick请求从所述QEMU进程的共享内存中读取目标读写数据,所述目标读写数据是根据所述QEMU进程中的块设备驱动存储至所述共享内存的,所述QEMU进程与所述daemon进程通过vhost协议通信连接;
从osd集群中确定所述目标读写数据对应的目标osd进程,并将所述目标读写数据发送至所述目标osd进程,以使所述目标osd进程将所述目标读写数据写入所述目标osd进程对应的磁盘内。
可选的,所述daemon进程包括:etcd客户端,所述从osd集群中确定所述目标读写数据对应的目标osd进程,包括:
通过所述etcd客户端从etcd获取所述osd集群中的多个osd进程的状态信息以及位置信息,所述状态信息用于指示osd进程对应的磁盘的磁盘容量以及磁盘状态;
根据所述多个osd进程的状态信息以及位置信息,确定所述目标读写数据对应的目标osd进程。
可选的,所述daemon进程还包括:osd客户端,所述将所述目标读写数据发送至所述目标osd进程,包括:
控制所述osd客户端通过TCP协议向所述目标osd进程发送所述目标读写数据;
或者,控制所述osd客户端通过RDMA协议向所述目标osd进程发送所述目标读写数据。
可选的,所述daemon进程还包括:spdk vhost模块,所述获取QEMU进程发送的kick请求之前,所述方法还包括:
向所述etcd发送创建请求,所述创建请求用于指示用户创建块设备的配置信息;
创建unix domain sock,并控制所述spdk vhost模块通过所述unix domain sock与QEMU进程建立通信连接,以使所述QEMU进程对应的虚拟机根据所述创建请求创建块设备。
可选的,所述方法还包括:
接收所述目标osd进程反馈的响应信息,并通过所述unix domain sock发送读写结果至所述QEMU进程,以使所述QEMU进程将所述读写结果反馈至所述虚拟机,所述响应信息用于指示所述目标读写数据的读写结果。
第二方面,本申请提供一种基于vhost协议的分布式存储装置,应用于daemon进程,该装置包括:
获取模块,用于获取QEMU进程发送的kick请求,所述kick请求是所述QEMU进程根据用户在所述QEMU进程对应的虚拟机中发出的对块设备的读写请求生成的;
处理模块,用于根据所述kick请求从所述QEMU进程的共享内存中读取目标读写数据,所述目标读写数据是根据所述QEMU进程中的块设备驱动存储至所述共享内存的,所述QEMU进程与所述daemon进程通过vhost协议通信连接;
所述处理模块,还用于从osd集群中确定所述目标读写数据对应的目标osd进程;
发送模块,用于将所述目标读写数据发送至所述目标osd进程,以使所述目标osd进程将所述目标读写数据写入所述目标osd进程对应的磁盘内。
可选的,所述获取模块,还用于通过所述etcd客户端从etcd获取所述osd集群中的多个osd进程的状态信息以及位置信息,所述状态信息用于指示osd进程对应的磁盘的磁盘容量以及磁盘状态;
所述处理模块,还用于根据所述多个osd进程的状态信息以及位置信息,确定所述目标读写数据对应的目标osd进程。
可选的,所述装置还包括:控制模块;
所述控制模块,用于控制所述osd客户端通过TCP协议向所述目标osd进程发送所述目标读写数据;
或者,控制所述osd客户端通过RDMA协议向所述目标osd进程发送所述目标读写数据。
可选的,所述发送模块,还用于向所述etcd发送创建请求,所述创建请求用于指示用户创建块设备的配置信息;
所述处理模块,还用于创建unix domain sock,并控制所述spdk vhost模块通过所述unix domain sock与QEMU进程建立通信连接,以使所述QEMU进程对应的虚拟机根据所述创建请求创建块设备。
可选的,所述获取模块,还用于接收所述目标osd进程反馈的响应信息;
所述发送模块,通过所述unix domain sock发送读写结果至所述QEMU进程,以使所述QEMU进程将所述读写结果反馈至所述虚拟机,所述响应信息用于指示所述目标读写数据的读写结果。
第三方面,本申请提供一种基于vhost协议的分布式存储设备,包括:
存储器;
处理器;
其中,所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如上述第一方面和第一方面各种可能的实现方式所述的基于vhost协议的分布式存储方法。
第四方面,本申请提供一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现如上述第一方面及第一方面各种可能的实现方式所述的基于vhost协议的分布式存储方法。
本申请提供的基于vhost协议的分布式存储方法,通过获取QEMU进程发送的kick请求,所述kick请求是所述QEMU进程根据用户在所述QEMU进程对应的虚拟机中发出的对块设备的读写请求生成的,根据所述kick请求从所述QEMU进程的共享内存中读取目标读写数据,所述目标读写数据是根据所述QEMU进程中的块设备驱动存储至所述共享内存的,所述QEMU进程与所述daemon进程通过vhost协议通信连接,从osd集群中确定所述目标读写数据对应的目标osd进程,并将所述目标读写数据发送至所述目标osd进程,以使所述目标osd进程将所述目标读写数据写入所述目标osd进程对应的磁盘内;该方法解决了在提供块存储服务时,线程切换的开销会导致存储读写性能低下的问题;同时,实现了daemon进程在QEMU进程的后端运行,解决了运行时的版本更新的问题。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请提供的基于vhost协议的分布式存储方法的应用场景示意图一;
图2为本申请提供的基于vhost协议的分布式存储方法的应用场景示意图二;
图3为本申请提供的基于vhost协议的分布式存储方法的流程图一;
图4为本申请提供的基于vhost协议的分布式存储方法的流程图二;
图5为本申请提供的基于vhost协议的分布式存储装置的结构示意图;
图6为本申请提供的基于vhost协议的分布式存储设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。
本申请实施例中,“示例性的”或者“例如”等词用于表示例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
首先,对本申请涉及的名词进行解释说明。
OpenStack:一个开源的云计算管理平台,由几个主要的组件组合起来完成具体工作。支持几乎所有类型的云环境,其目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack可以管理多种虚拟机管理程序,包括QEMU进程等。
QEMU:一个虚拟机管理程序,负责管理和运行虚拟机。QEMU进程可以运行多个虚拟机,在虚拟机中运行一个完整的操作系统。虚拟机中的操作系统称作guest OS。QEMU进程可以为guest OS操作系统提供多种磁盘后端,如file、network、vhostuser、block等多种类型。
Ceph:一个开源分布式存储系统,具有高扩展性、高性能、高可靠性等优点,同时提供块存储服务(rbd)、对象存储服务(rgw)以及文件系统存储服务(cephfs),Ceph在存储的时候充分利用存储节点的计算能力,在存储每一个数据时都会通过计算得出该数据的位置,尽量使存储分布均衡。
SPDK(Storage Performance Development Kit):用于开发存储软件的底层库。SPDK使用reactor模型,即一个核上只运行一个系统级别的线程,它独占一个cpu核,不存在线程切换,性能较高。SPDK提供了多种开发组件,如vhost、NVMe-oF等。
etcd:分布式的程序,daemon进程可以通过TCP网络连接到etcd server即可,因此它可以部署在任意几台网络相连的节点上。
osd:是一个负责磁盘读写的进程,用于实现对磁盘的管理和分布式数据的备份和恢复。
librados:提供客户端访问Ceph集群的原生态统一接口。其它接口或者命令行工具都基于该动态库实现。数据请求操作在librados计算完成后可以直接与对应的osd进程交互进行数据传输。
librbd:是基于librados的用户态接口库。
unix domain sock:unix域套接字,是一种进程间通信机制,允许在同一台计算机上运行的进程之间进行双向数据交换。
Io thread:QEMU中配置的一种线程处理模型,为不同的数据交互事件分配了专门的数据处理线程。
reactor:一种用于处理多个客户端并发的向服务端请求服务的场景的线程处理模型。reactor可以解耦并发请求的服务并分发给对应的事件处理器来处理。
随着云计算的快速发展,云计算管理平台项目被用于给用户提供基础设施级服务(Infrastructure as a Service,IaaS),由几个主要的组件组合起来完成具体工作,常用的云计算管理平台项目例如OpenStack,OpenStack可以管理QEMU进程等多种虚拟机管理程序,QEMU进程可以运行多个虚拟机,分布式存储软件Ceph可以为QEMU进程提供基于用户态接口库(librbd)的块存储服务,具体通过QEMU进程调用librbd来完成与Ceph通信从而进行分布式存储管理。
QEMU进程通过Ceph提供的librbd和librados两层运行库与osd进程之间进行连接。在QEMU进程执行存储行为时,会通过和OSD或monitor的交互获取集群地图(clustermap),然后在cluster map中得到本次存储任务对应的osd进程,并进行通信,完成数据处理。此时,当设备后端是块存储服务(rbd)时,QEMU进程通过调用librbd来完成与Ceph通信的功能。该方法存在的问题如下:
(1)因为QEMU进程的emulator线程与io thread线程存在切换,线程切换的开销会导致存储读写性能会受到影响;
(2)librbd接口基于TCP协议实现,用户态的QEMU进程进程切换到内核的TCP也存在开销,对性能有影响;
(3)由于功能全都集成在QEMU进程中,也无法做到运行时版本更新。
因此,现有的分布式存储方法在提供块存储服务时,线程切换的开销会导致存储读写性能会受到影响;并且,由于功能全都集成在QEMU进程中,无法做到运行时更新版本。
针对上述问题,本申请提供一种基于vhost协议的分布式存储方法,图1为本申请提供的基于vhost协议的分布式存储方法的场景示意图一,图2为本申请提供的基于vhost协议的分布式存储方法的场景示意图二。需要注意的是,图1和图2所示仅为可以应用本申请基于vhost协议的分布式存储方法的应用场景的示例,以帮助本领域技术人员理解本申请的技术内容,但并不意味着本申请实施例不可以用于其他设备、系统、环境或场景。
如图1所示,QEMU进程负责运行虚拟机(VM),它和daemon进程以vhost协议进行通信,而不是使用librbd进行通信,避免了现有技术QEMU进程在使用librbd实现对分布式存储中osd进程的读写的各种缺陷。vhost协议和daemon进程之间通过共享内存实现数据的共享,通过unix domain sock进行数据完成的通知。
OpenStack是QEMU进程的管理工具,它通过cinder driver(块存储驱动),实现了对daemon进程的控制,使其完成vhost协议的连接与断开。
daemon进程启动后首先被OpenStack命令行控制创建unix domain sock,与QEMU进程建立连接,即可通过与QEMU进程的共享内存实现数据的共享。daemon进程和QEMU进程以及OpenStack需要在同一台节点上,该节点为计算节点。
etcd作为一个分布式的程序,只要daemon进程可以通过TCP网络连接到etcd对应的服务器即可,因此它可以部署在任意几台网络相连的节点上,即任意节点。
osd进程用于接收daemon进程发送的读写数据并进行磁盘读写,可以分布在整个集群的任何一台节点上,以使daemon进程可以通过网络向它发送、读取数据即可。如图1所示,存储节点1中包括两个osd进程:osd 1进程和osd 2进程,存储节点2中有osd 3进程。osd进程和daemon进程可以在同一台节点上,也可以不在同一台节点上。
如图2所示,用户空间(user space)内包括daemon进程、QEMU进程以及QEMU进程控制的虚拟机(VM),内核空间(kernal space)中有tcp协议栈以及unix domain sock,osd集群中包括三个osd进程:osd 1进程、osd2进程、osd 3进程。其中,daemon进程中包括etcd客户端、osd客户端以及spdk vhost模块;VM中的块设备为/dev/sda,是由QEMU进程创建的。
spdk vhost模块用于根据vhost协议和QEMU进程的vhost-blk进行通信连接。
osd客户端用于和远端的osd集群中的osd进程进行通信,把数据传输到osd进程,osd客户端和osd进程之间的通信可以采取TCP协议或者RDMA协议。
etcd客户端和etcd server通信也使用TCP协议,用于读取osd集群中osd进程对应的地址、状态等信息。
用户发出读写指令之后,读写数据先由VM中的块设备对应的驱动发送到共享内存中,然后经内核空间向unix domain sock发出kick请求。daemon进程中的spdk vhost模块从共享内存中读取所述读写数据,并通过osd客户端将读写数据通过TCP协议或RDMA协议发送到对应的osd进程中,如图2所示,当osd客户端使用TCP协议时,将读写数据先转发至内核空间中的tcp协议栈,再由tcp协议栈发送至osd集群中的osd 3进程;当osd客户端使用RDMA协议时,可直接通过用户空间将读写数据发送至osd集群中的osd 1进程。
由于vhost协议是在用户空间运行,所以当使用RDMA协议时不必再一次进入内核空间,避免了切换开销,所以性能比现有技术中使用Ceph调用librbd的分布式块存储方法效率更高。
同时,vhost的后端spdk vhost模块在用户空间的进程中运行,而不是在QEMU进程本身,所以可以做到运行时的升级和迁移。运行时升级:只需要在虚拟机中卸载块设备,然后重启daemon进程,即可重新建立vhost协议的连接,随后重新安装块设备,用户在虚拟机中即可再次看到这个块设备,块设备中的数据由于都存储在osd进程中,所以并不会发生数据丢失。运行时迁移:由于数据都存储在远端osd进程上,所以只要etcd中保存的磁盘文件(image)的元数据没有变化,即可找到对应的数据所在的osd进程。因此,即使在其他节点上重新启动daemon进程,依然可以找到对应的数据,实现了运行时迁移。
整个daemon进程的代码都运行在spdk vhost模块的reactor模型中,单独占有一个cpu核,不存在线程切换,所以比QEMU进程使用libribd的io thread模型更加高效。
本申请实施例提供的基于vhost协议的分布式存储方法,通过daemon进程与QEMU进程以vhost协议通信连接,daemon进程通过QEMU进程的共享内存读取需要读写的数据,为QEMU进程提供存储后端,同时,daemon进程还可以作为分布式存储的客户端,其内部包括etcd客户端和osd客户端,通过osd客户端和远端的osd进程通过TCP协议或者RDMA协议进行通信,把数据传输到osd进程,通过etcd客户端和远端的etcd进行通信,以读取osd集群中osd进程的信息;该方法解决了在提供块存储服务时,线程切换的开销会导致存储读写性能较低的问题;同时,实现了daemon进程在QEMU进程的后端运行,解决了运行时的更新和迁移的问题。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图3是本申请实施例提供的基于vhost协议的分布式存储方法的流程图一。如图3所示,本实施例提供的基于vhost协议的分布式存储方法,包括:
S101、获取QEMU进程发送的kick请求,所述kick请求是所述QEMU进程根据用户在所述QEMU进程对应的虚拟机中发出的对块设备的读写请求生成的。
其中,所述块设备是指在用户空间内的daemon进程和QEMU进程建立vhost协议连接后,虚拟机中创建的一个虚拟的存储设备。
当用户在QEMU进程中的虚拟机中发出对块设备的读写请求后,块设备接收所述读写请求,并通过块设备对应的驱动根据所述读写请求,将所述读写请求对应的读写数据放到QEMU进程的共享内存中,以使QEMU进程与daemon进程可以通过所述共享内存进行数据交互。此时,QEMU进程会在unix domain sock的通信机制下,使用vhost协议发送kick请求至daemon进程的spdk vhost模块,以通知daemon进程所述读写数据已经放入QEMU进程的共享内存中。
S102、根据所述kick请求从所述QEMU进程的共享内存中读取目标读写数据,所述目标读写数据是根据所述QEMU进程中的块设备驱动存储至所述共享内存的,所述QEMU进程与所述daemon进程通过vhost协议通信连接。
其中,当所述daemon进程中的spdk vhost模块通过unix domain sock接收到所述QEMU进程发送的kick请求之后,可以根据所述kick请求从所述QEMU进程的共享内存中读取与所述读写请求对应的目标读写数据。
可以理解的,如图2所示,daemon进程与QEMU进程在相同的用户空间内,即同一台计算节点上,并且,通过unix domain sock的通信机制,建立了通信连接,以实现daemon进程通过QEMU进程的共享内存实现数据的共享,因此,所述daemon进程中的spdk vhost模块可以从所述共享内存中获取到所述目标读写数据。
S103、从osd集群中确定所述目标读写数据对应的目标osd进程,并将所述目标读写数据发送至所述目标osd进程,以使所述目标osd进程将所述目标读写数据写入所述目标osd进程对应的磁盘内。
其中,当所述daemon进程中的spdk vhost模块获取到目标读写数据之后,还需通过osd进程对所述目标读写数据进行写入处理。
可以理解的,每个osd进程有与之对应的磁盘,用于处理目标读写数据,在分布式存储系统中,通常具有多个osd进程以组成osd集群,并通过分布式计算和数据分布,均衡存储负载,以提高读写性能。因此,daemon进程需要根据当前各个osd进程的写入情况以及对应的磁盘的存储情况,从osd集群中选择最匹配的osd进程,即目标osd进程,并将所述目标读写数据发送至所述目标osd进程,以使所述目标osd进程将所述目标读写数据写入所述目标osd进程对应的磁盘内。
在该步骤中,所述目标osd进程将所述目标读写数据写入所述目标osd进程对应的磁盘内之后,所述目标osd进程还可以生成响应信息,并将所述响应信息反馈至daemon进程。
可选的,daemon进程接收所述目标osd进程反馈的响应信息,并通过所述unixdomain sock发送读写结果至所述QEMU进程,以使所述QEMU进程将所述读写结果反馈至所述虚拟机,所述响应信息用于指示所述目标读写数据的读写结果。
本申请实施例提供的基于vhost协议的分布式存储方法,通过获取QEMU进程发送的kick请求,所述kick请求是所述QEMU进程根据用户在所述QEMU进程对应的虚拟机中发出的对块设备的读写请求生成的,根据所述kick请求从所述QEMU进程的共享内存中读取目标读写数据,所述目标读写数据是根据所述QEMU进程中的块设备驱动存储至所述共享内存的,所述QEMU进程与所述daemon进程通过vhost协议通信连接,从osd集群中确定所述目标读写数据对应的目标osd进程,并将所述目标读写数据发送至目标osd进程,以使所述目标osd进程将所述目标读写数据写入所述目标osd进程对应的磁盘内;该方法解决了在提供块存储服务时,线程切换的开销会导致存储读写性能较低的问题;同时,实现了daemon进程在QEMU进程的后端运行,解决了运行时的版本更新的问题。
图4为本申请实施例提供的基于vhost协议的分布式存储方法的流程图二。本实施例是在图3实施例的基础上,对基于vhost协议的分布式存储方法进行详细说明。如图4所示,本实施例提供的基于vhost协议的分布式存储方法,包括:
S201、向所述etcd发送创建请求,所述创建请求用于指示用户创建块设备的配置信息。
其中,如图1所示,openstack进程接收到用户发送的创建请求后,则可以通过cinder driver控制daemon进程,此时,daemon进程向etcd发送所述创建请求,所述创建请求用于指示用户创建块设备的配置信息,所述配置信息是指用户所创建块设备对应的磁盘的配置信息,例如块大小、簇大小、单元大小等配置项。
S202、创建unix domain sock,并控制所述spdk vhost模块通过所述unix domainsock与QEMU进程建立通信连接,以使所述QEMU进程对应的虚拟机根据所述创建请求创建块设备。
其中,当daemon进程向所述etcd发送创建请求之后,openstack进程控制QEMU进程进入启动状态,此时,daemon进程创建unix domain sock,与QEMU进程建立通信连接。如图2所示,所述unix domain sock为内核空间内支持daemon进程与QEMU进程使用vhost协议进行通信的一种通信机制。
可以理解的,daemon进程通过其内部的spdk vhost模块实现与QEMU进程建立基于unix domain sock的通信机制,例如,spdk vhost模块可以与QEMU进程中的块设备使用vhost协议的call请求以及kick请求进行通信。
该步骤的目的是为了在daemon进程与QEMU进程建立vhost协议的通信连接之后,成功创建块设备,并且在虚拟机中出现所述块设备,以使用户可以对所述块设备进行读写。
S203、获取QEMU进程发送的kick请求,所述kick请求是所述QEMU进程根据用户在所述QEMU进程对应的虚拟机中发出的对块设备的读写请求生成的。
步骤S203与上述步骤S101类似,在此不再赘述。
S204、根据所述kick请求从所述QEMU进程的共享内存中读取目标读写数据,所述目标读写数据是根据所述QEMU进程中的块设备驱动存储至所述共享内存的,所述QEMU进程与所述daemon进程通过vhost协议通信连接。
步骤S204与上述步骤S102类似,在此不再赘述。
S205、通过所述etcd客户端从etcd获取所述osd集群中的多个osd进程的状态信息以及位置信息,所述状态信息用于指示osd进程对应的磁盘的磁盘容量以及磁盘状态。
其中,所述etcd客户端分布在daemon进程的内部空间,并与etcd进程通过tcp网络连接。daemon进程根据所述kick请求从所述QEMU进程的共享内存中读取目标读写数据之后,需要在osd集群中为所述目标读写数据选择最匹配的osd进程,用于对所述目标读写数据进行写入处理。
可以理解的,由于etcd中包含已创建的块设备的配置信息,即所述块设备对应的磁盘的配置信息,并且,所述daemon进程中的etcd客户端与所述etcd使用tcp协议通信连接,因此,daemon进程可以通过所述etcd客户端从etcd获取所述osd集群中的多个osd进程的状态信息以及位置信息。
该步骤的目的是为了通过查询多个osd进程的状态信息以及位置信息,以便为所述目标读写数据选择最匹配的osd进程,即目标osd进程。
S206、根据所述多个osd进程的状态信息以及位置信息,确定所述目标读写数据对应的目标osd进程。
其中,daemon进程可以根据所述状态信息,得知多个osd进程对应的磁盘的磁盘容量以及磁盘状态,从而在分布式存储系统osd集群中计算出所述目标读写数据对应的目标osd进程,同时,根据所述目标osd进程的位置信息,确定所述目标osd进程的地址和端口,以便与所述目标osd进程进行连接。
该步骤的目的是为了通过分布式计算和数据分布,确定所述目标读写数据对应的目标osd进程,从而均衡存储负载,以提高分布式存储的读写性能。
S207、控制所述osd客户端通过TCP协议向所述目标osd进程发送所述目标读写数据;或者,控制所述osd客户端通过RDMA协议向所述目标osd进程发送所述目标读写数据。
其中,所述osd客户端分布在daemon进程的内部空间,并支持与目标osd进程通过TCP协议或者RDMA协议进行通信。
当daemon进程与所述目标osd进程之间通过TCP协议进行通信时,daemon进程控制所述osd客户端经过内核空间的TCP协议栈向所述目标osd进程发送所述目标读写数据;当daemon进程与所述目标osd进程之间通过RDMA协议进行通信时,daemon进程控制所述osd客户端直接向所述目标osd进程发送所述目标读写数据,不必再一次进入内核空间,避免了切换开销,从而提高了读写性能。
该步骤的目的是为了通过daemon进程控制所述osd客户端向目标osd进程发送目标读写数据,以使所述目标osd进程将所述目标读写数据写入所述目标osd进程对应的磁盘内。
可选的,当所述目标osd进程将所述目标读写数据写入所述目标osd进程对应的磁盘内并读写完成后,生成对应的响应信息,并反馈至daemon进程,以使daemon进程到响应信息后,通过所述unix domain sock发送call信号至所述QEMU进程,以使所述QEMU进程将所述读写结果反馈至所述虚拟机,用户可以在虚拟机中接收到读写完成的结果,所述call信号用于指示读写结果。
本申请实施例提供的基于vhost协议的分布式存储方法,通过向所述etcd发送创建请求,所述创建请求用于指示用户创建块设备的配置信息,创建unix domainsock,并控制所述spdkvhost模块通过所述unix domain sock与QEMU进程建立通信连接,获取QEMU进程发送的kick请求,根据所述kick请求从所述QEMU进程的共享内存中读取目标读写数据,通过所述etcd客户端从etcd获取所述osd集群中的多个osd进程的状态信息以及位置信息,根据所述多个osd进程的状态信息以及位置信息,确定所述目标读写数据对应的目标osd进程,控制所述osd客户端通过TCP协议向所述目标osd进程发送所述目标读写数据;或者,控制所述osd客户端通过RDMA协议向所述目标osd进程发送所述目标读写数据,该方法解决了在提供块存储服务时,线程切换的开销会导致存储读写性能较低的问题;同时,实现了daemon进程在QEMU进程的后端运行,解决了运行时的更新和迁移的问题。
图5为本申请提供的基于vhost协议的分布式存储装置的结构示意图,应用于daemon进程。如图5所示,本实施例提供的基于vhost协议的分布式存储装置300,包括:
获取模块301,用于获取QEMU进程发送的kick请求,所述kick请求是所述QEMU进程根据用户在所述QEMU进程对应的虚拟机中发出的对块设备的读写请求生成的;
处理模块302,用于根据所述kick请求从所述QEMU进程的共享内存中读取目标读写数据,所述目标读写数据是根据所述QEMU进程中的块设备驱动存储至所述共享内存的,所述QEMU进程与所述daemon进程通过vhost协议通信连接;
所述处理模块302,还用于从osd集群中确定所述目标读写数据对应的目标osd进程;
发送模块303,用于将所述目标读写数据发送至所述目标osd进程,以使所述目标osd进程将所述目标读写数据写入所述目标osd进程对应的磁盘内。
可选的,所述获取模块301,还用于通过所述etcd客户端从etcd获取所述osd集群中的多个osd进程的状态信息以及位置信息,所述状态信息用于指示osd进程对应的磁盘的磁盘容量以及磁盘状态;
所述处理模块302,还用于根据所述多个osd进程的状态信息以及位置信息,确定所述目标读写数据对应的目标osd进程。
可选的,所述装置还包括:控制模块304;
所述控制模块304,用于控制所述osd客户端通过TCP协议向所述目标osd进程发送所述目标读写数据;
或者,控制所述osd客户端通过RDMA协议向所述目标osd进程发送所述目标读写数据。
可选的,所述发送模块303,还用于向所述etcd发送创建请求,所述创建请求用于指示用户创建块设备的配置信息;
所述处理模块302,还用于创建unix domain sock,并控制所述spdk vhost模块通过所述unix domain sock与QEMU进程建立通信连接,以使所述QEMU进程对应的虚拟机根据所述创建请求创建块设备。
可选的,所述获取模块301,还用于接收所述目标osd进程反馈的响应信息;
所述发送模块303,通过所述unix domain sock发送读写结果至所述QEMU进程,以使所述QEMU进程将所述读写结果反馈至所述虚拟机,所述响应信息用于指示所述目标读写数据的读写结果。
图6为本申请提供的基于vhost协议的分布式存储设备的结构示意图。如图6所示,本申请提供一种基于vhost协议的分布式存储设备,该基于vhost协议的分布式存储设备400包括:接收器401、发送器402、处理器403以及存储器404。
接收器401,用于接收指令和数据;
发送器402,用于发送指令和数据;
存储器404,用于存储计算机执行指令;
处理器403,用于执行存储器404存储的计算机执行指令,以实现上述实施例中基于vhost协议的分布式存储方法所执行的各个步骤。具体可以参见前述基于vhost协议的分布式存储方法实施例中的相关描述。
可选地,上述存储器404既可以是独立的,也可以跟处理器403集成在一起。
当存储器404独立设置时,该电子设备还包括总线,用于连接存储器404和处理器403。
本申请还提供一种计算机存储介质,计算机存储介质中存储有计算机执行指令,当处理器执行计算机执行指令时,实现如上述基于vhost协议的分布式存储设备所执行的基于vhost协议的分布式存储方法。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。
Claims (10)
1.一种基于vhost协议的分布式存储方法,其特征在于,应用于daemon进程,所述方法包括:
获取QEMU进程发送的kick请求,所述kick请求是所述QEMU进程根据用户在所述QEMU进程对应的虚拟机中发出的对块设备的读写请求生成的;
根据所述kick请求从所述QEMU进程的共享内存中读取目标读写数据,所述目标读写数据是根据所述QEMU进程中的块设备驱动存储至所述共享内存的,所述QEMU进程与所述daemon进程通过vhost协议通信连接;
从osd集群中确定所述目标读写数据对应的目标osd进程,并将所述目标读写数据发送至所述目标osd进程,以使所述目标osd进程将所述目标读写数据写入所述目标osd进程对应的磁盘内。
2.根据权利要求1所述的方法,其特征在于,所述daemon进程包括:etcd客户端,所述从osd集群中确定所述目标读写数据对应的目标osd进程,包括:
通过所述etcd客户端从etcd获取所述osd集群中的多个osd进程的状态信息以及位置信息,所述状态信息用于指示osd进程对应的磁盘的磁盘容量以及磁盘状态;
根据所述多个osd进程的状态信息以及位置信息,确定所述目标读写数据对应的目标osd进程。
3.根据权利要求1所述的方法,其特征在于,所述daemon进程还包括:osd客户端,所述将所述目标读写数据发送至所述目标osd进程,包括:
控制所述osd客户端通过TCP协议向所述目标osd进程发送所述目标读写数据;
或者,控制所述osd客户端通过RDMA协议向所述目标osd进程发送所述目标读写数据。
4.根据权利要求2所述的方法,其特征在于,所述daemon进程还包括:spdk vhost模块,所述获取QEMU进程发送的kick请求之前,所述方法还包括:
向所述etcd发送创建请求,所述创建请求用于指示用户创建块设备的配置信息;
创建unix domain sock,并控制所述spdk vhost模块通过所述unix domain sock与QEMU进程建立通信连接,以使所述QEMU进程对应的虚拟机根据所述创建请求创建块设备。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
接收所述目标osd进程反馈的响应信息,并通过所述unix domain sock发送读写结果至所述QEMU进程,以使所述QEMU进程将所述读写结果反馈至所述虚拟机,所述响应信息用于指示所述目标读写数据的读写结果。
6.一种基于vhost协议的分布式存储装置,其特征在于,应用于daemon进程,所述装置包括:
获取模块,用于获取QEMU进程发送的kick请求,所述kick请求是所述QEMU进程根据用户在所述QEMU进程对应的虚拟机中发出的对块设备的读写请求生成的;
处理模块,用于根据所述kick请求从所述QEMU进程的共享内存中读取目标读写数据,所述目标读写数据是根据所述QEMU进程中的块设备驱动存储至所述共享内存的,所述QEMU进程与所述daemon进程通过vhost协议通信连接;
所述处理模块,还用于从osd集群中确定所述目标读写数据对应的目标osd进程;
发送模块,用于将所述目标读写数据发送至所述目标osd进程,以使所述目标osd进程将所述目标读写数据写入所述目标osd进程对应的磁盘内。
7.根据权利要求6所述的装置,其特征在于,
所述获取模块,还用于通过etcd客户端从etcd获取所述osd集群中的多个osd进程的状态信息以及位置信息,所述状态信息用于指示osd进程对应的磁盘的磁盘容量以及磁盘状态;
所述处理模块,还用于根据所述多个osd进程的状态信息以及位置信息,确定所述目标读写数据对应的目标osd进程。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:控制模块;
所述控制模块,用于控制所述osd客户端通过TCP协议向所述目标osd进程发送所述目标读写数据;
或者,控制所述osd客户端通过RDMA协议向所述目标osd进程发送所述目标读写数据。
9.一种基于vhost协议的分布式存储设备,其特征在于,包括:
存储器;
处理器;
其中,所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1-5中任一项所述的基于vhost协议的分布式存储方法。
10.一种计算机存储介质,其特征在于,所述计算机存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-5中任一项所述的基于vhost协议的分布式存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311474753.1A CN117472278A (zh) | 2023-11-07 | 2023-11-07 | 基于vhost协议的分布式存储方法、设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311474753.1A CN117472278A (zh) | 2023-11-07 | 2023-11-07 | 基于vhost协议的分布式存储方法、设备和介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117472278A true CN117472278A (zh) | 2024-01-30 |
Family
ID=89637591
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311474753.1A Pending CN117472278A (zh) | 2023-11-07 | 2023-11-07 | 基于vhost协议的分布式存储方法、设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117472278A (zh) |
-
2023
- 2023-11-07 CN CN202311474753.1A patent/CN117472278A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7793288B2 (en) | Automatic resource management of a guest operating system using information in data set indicating minimum system requirement | |
US11146620B2 (en) | Systems and methods for instantiating services on top of services | |
CN101206581B (zh) | 用于使用外部存储设备引导的系统和方法 | |
US8458392B2 (en) | Upgrading a guest operating system of an active virtual machine | |
US11030025B2 (en) | Managing inter-process communications in a containerized application environment | |
US9614931B2 (en) | Identifying a resource set require for a requested application and launching the resource set in a container for execution in a host operating system | |
US10496676B2 (en) | Synchronization cache seeding | |
CN108073423B (zh) | 一种加速器加载方法、系统和加速器加载装置 | |
CN110908753B (zh) | 一种智能融合的云桌面服务器、客户端及系统 | |
US10728169B1 (en) | Instance upgrade migration | |
CN102207885A (zh) | 计算机系统的虚拟机管理器及其启动虚拟机的方法 | |
US20050188068A1 (en) | System and method for monitoring and controlling server nodes contained within a clustered environment | |
CN110520844A (zh) | 云管理平台、虚拟机管理方法及其系统 | |
US11474749B2 (en) | Configuring host access for virtual volumes | |
CN112000439A (zh) | 一种实现云原生应用管理虚拟机的方法 | |
US20240053998A1 (en) | Method and apparatus for processing inter-core communication, and computer system | |
US11799743B2 (en) | Node addition in cloud networks | |
CN108062239B (zh) | 一种加速器加载方法、系统和加速器加载装置 | |
US20190310874A1 (en) | Driver management method and host | |
EP4006725A1 (en) | Virtual machine migration processing and strategy generation method, apparatus and device, and storage medium | |
US10169841B1 (en) | Dynamic interface synchronization for virtualized graphics processing | |
CN117472278A (zh) | 基于vhost协议的分布式存储方法、设备和介质 | |
US11792278B2 (en) | Resolving conflicts of application runtime dependencies | |
CN114827177A (zh) | 一种分布式文件系统的部署方法、装置及电子设备 | |
US11853783B1 (en) | Identifying hosts for dynamically enabling specified features when resuming operation of a virtual compute instance |
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 |