CN116955219B - 一种数据镜像方法、装置、主机及存储介质 - Google Patents
一种数据镜像方法、装置、主机及存储介质 Download PDFInfo
- Publication number
- CN116955219B CN116955219B CN202311188460.7A CN202311188460A CN116955219B CN 116955219 B CN116955219 B CN 116955219B CN 202311188460 A CN202311188460 A CN 202311188460A CN 116955219 B CN116955219 B CN 116955219B
- Authority
- CN
- China
- Prior art keywords
- memory space
- memory
- data
- length
- storing
- 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
- 238000000034 method Methods 0.000 title claims abstract description 62
- 238000013500 data storage Methods 0.000 claims abstract description 64
- 238000004891 communication Methods 0.000 claims abstract description 20
- 238000004590 computer program Methods 0.000 claims description 11
- 230000005540 biological transmission Effects 0.000 description 18
- 230000006870 function Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 8
- 238000011161 development Methods 0.000 description 6
- 238000013467 fragmentation Methods 0.000 description 6
- 238000006062 fragmentation reaction Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 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
- 239000013307 optical fiber Substances 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种数据镜像方法、装置、主机及存储介质,涉及通信技术领域,应用于主机,该方法包括:接收数据存储请求,数据存储请求包括目标数据;从预留内存空间中,申请第一长度的第一内存空间和第二长度的第二内存空间,第一长度为目标数据的长度,第二长度为目标数据的元数据的长度;将目标数据存储至第一内存空间,并将元数据存储至第二内存空间;将第一内存空间和第二内存空间中存储的数据存储至镜像设备。应用本申请实施例提供的方案,可以降低数据镜像存储的时延。
Description
技术领域
本申请涉及通信技术领域,特别是涉及一种数据镜像方法、装置、主机及存储介质。
背景技术
随着人工智能、大数据等新技术的快速发展,存储行业需要提供具有高性能和可扩展性的存储解决方案,以适应越来越复杂和庞大的数据处理需求。目前,一种保障数据安全性和可靠性的方案为将数据镜像存储至镜像设备,具体为:主机从内存池中申请多个内存块后,这多个内存块由SGL(Scatter Gather List,分散收集列表)管理;利用SGL将数据和元数据存储至这多个内存块中;之后,将这多个内存块中的数据存储至镜像设备。在使用SGL管理内存块时,不要求多个内存块的物理地址是连续的,也就是,主机从内存池中申请的多个内存块是离散的。而由于申请的多个内存块是离散的,主机需要通过多次数据传输,才能将多个内存块中的数据存储至镜像设备,导致数据镜像存储的时延较大。
发明内容
本申请实施例的目的在于提供一种数据镜像方法、装置、主机及存储介质,以降低数据镜像存储的时延。具体技术方案如下:
第一方面,本申请实施例提供了一种数据镜像方法,应用于主机,所述方法包括:
接收数据存储请求,所述数据存储请求包括目标数据;
从预留内存空间中,申请第一长度的第一内存空间和第二长度的第二内存空间,所述第一长度为所述目标数据的长度,所述第二长度为所述目标数据的元数据的长度;
将所述目标数据存储至所述第一内存空间,并将所述元数据存储至所述第二内存空间;
将所述第一内存空间和所述第二内存空间中存储的数据存储至镜像设备。
在一些实施例中,在将所述目标数据存储至所述第一内存空间之前,所述方法还包括:
将所述第一内存空间划分为多个内存块,每个内存块的长度为一次IO(InputOutput,输入输出)操作所存储的数据的长度;将所述多个内存块的描述符存储至链表中;
所述将所述目标数据存储至所述第一内存空间,包括:
利用所述链表,从所述多个内存块中确定当前IO操作指向的目标内存块;
将当前IO操作对应的所述目标数据的部分数据存储至所述目标内存块。
在一些实施例中,所述第一内存空间和所述第二内存空间的物理地址连续。
在一些实施例中,所述将所述第一内存空间和所述第二内存空间中存储的数据存储至镜像设备,包括:
从所述第一内存空间和所述第二内存空间中读取所述目标数据和所述元数据;
将读取的所述目标数据和所述元数据存储至镜像设备。
在一些实施例中,在将所述第一内存空间和所述第二内存空间中存储的数据存储至镜像设备之后,所述方法还包括:
释放所述第一内存空间和所述第二内存空间。
在一些实施例中,在所述接收数据存储请求之前,所述方法还包括:
从大页内存中,为所述数据存储请求分配第三长度的内存空间,作为预留内存空间,所述第三长度大于所述第一长度和所述第二长度的和值。
第二方面,本申请实施例提供了一种数据镜像装置,应用于主机,所述装置包括:
接收模块,用于接收数据存储请求,所述数据存储请求包括目标数据;
申请模块,用于从预留内存空间中,申请第一长度的第一内存空间和第二长度的第二内存空间,所述第一长度为所述目标数据的长度,所述第二长度为所述目标数据的元数据的长度;
第一存储模块,用于将所述目标数据存储至所述第一内存空间,并将所述元数据存储至所述第二内存空间;
第二存储模块,用于将所述第一内存空间和所述第二内存空间中存储的数据存储至镜像设备。
在一些实施例中,所述装置还包括:
划分模块,用于在将所述目标数据存储至所述第一内存空间之前,将所述第一内存空间划分为多个内存块,每个内存块的长度为一次IO操作所存储的数据的长度;将所述多个内存块的描述符存储至链表中;
所述第一存储模块,具体用于:
利用所述链表,从所述多个内存块中确定当前IO操作指向的目标内存块;
将当前IO操作对应的所述目标数据的部分数据存储至所述目标内存块。
在一些实施例中,所述第一内存空间和所述第二内存空间的物理地址连续。
在一些实施例中,所述第二存储模块,具体用于:
从所述第一内存空间和所述第二内存空间中读取所述目标数据和所述元数据;
将读取的所述目标数据和所述元数据存储至镜像设备。
在一些实施例中,所述装置还包括:
释放模块,用于在将所述第一内存空间和所述第二内存空间中存储的数据存储至镜像设备之后,释放所述第一内存空间和所述第二内存空间。
在一些实施例中,所述装置还包括:
分配模块,用于在接收数据存储请求之前,从大页内存中,为所述数据存储请求分配第三长度的内存空间,作为预留内存空间,所述第三长度大于所述第一长度和所述第二长度的和值。
第三方面,本申请实施例提供了一种主机,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述第一方面所述的方法步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的方法步骤。
在本申请提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中第一方面所述的方法步骤。
本申请实施例有益效果:
本申请实施例提供的技术方案中,主机的内存空间中提前预留有用于存储目标数据的、物理地址连续的内存空间,即预留内存空间。主机根据目标数据长度,从物理地址连续的预留内存空间中,申请到同样物理地址连续的第一内存空间,存储目标数据。由于目标数据是存储在物理地址连续的内存空间,不会出现内存碎片的问题,因此,在将目标数据存储至镜像设备时,通过一次数据传输,就可以将目标数据存储至镜像设备,提高了数据存储效率,降低了数据镜像存储的时延。另外,本申请实施例中,主机通过一次申请就获取到了足够存储目标数据的内存空间,无需执行多次申请,进一步提高了数据存储效率,降低了数据镜像存储的时延。
当然,实施本申请的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的实施例。
图1为基于SPDK的内存分配流程的一种示意图;
图2为基于SPDK的内存申请流程的一种示意图;
图3为基于SPDK的IO流程的一种示意图;
图4为本申请实施例提供的数据镜像方法的第一种流程示意图;
图5为本申请实施例提供的数据镜像方法的第二种流程示意图;
图6为本申请实施例提供的步骤S44的一种细化示意图;
图7为本申请实施例提供的基于SPDK的内存分配流程的一种示意图;
图8为本申请实施例提供的基于SPDK的内存申请流程的一种示意图;
图9为本申请实施例提供的基于SPDK的IO流程的一种示意图;
图10为本申请实施例提供的数据镜像装置的一种结构示意图;
图11为本申请实施例提供的主机的一种结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员基于本申请所获得的所有其他实施例,都属于本申请保护的范围。
随着人工智能、大数据等新技术的快速发展,存储行业需要提供具有高性能和可扩展性的存储解决方案,以适应越来越复杂和庞大的数据处理需求。SPDK(StoragePerformance Development Kit,存储性能开发套件)是一套开源软件开发工具包,用于构建高性能、低延迟、可扩展的存储系统,编写用户模式存储应用程序。
缓存镜像是一种常用于提高存储系统性能和可靠性的解决方案,它会将磁盘等较慢的存储介质上的热点数据缓存到高速缓存中,提高数据的访问速度。同时,将高速缓存中的数据实时复制到镜像设备中,以保障数据的安全性和可靠性。
基于SPDK的缓存镜像开发主要包括内存分配、内存申请、IO流程三个方面。
一、内存分配方面。为了极大提高存储性能,SPDK支持0拷贝,这意味着数据从网卡到内存,然后从内存到SSD(Solid-State Drive,固态硬盘)的过程中,不存在数据内存拷贝。为了支持这一特性,基于SPDK的缓存镜像必须保证将数据存储到镜像设备的内存缓冲区(buffer)、网卡的缓冲区以及SSD的缓冲区采用的是同一份内存地址。
基于SPDK的内存分配流程如图1中的步骤A1-步骤A5所示。
步骤A1,RPC(Remote Procedure Call,远程过程调用协议)远程调用NVMF(Non-Volatile Memory Express over Fabric,基于架构的非易失性存储器标准)创建传输层。
在SPDK中的NVMF目标(target)端启动后,通过RPC远程调用NVMF中的创建函数(如rpc_nvmf_create_transport)。
步骤A2,NVMF创建传输层。
NVMF调用DPDK(Data Plane Development Kit,数据平面开发工具包)关联函数(如spdk_nvmf_transport_create),创建RDMA(Remote Direct Memory Access,远程直接内存访问)传输层(transport)。
步骤A3,为传输层创建内存池。
在NVMF中创建传输层后,调用DPDK中的创建函数(如spdk_mempool_create),为传输层创建一个内存池(mempool),并返回创建结果。
步骤A4,为轮询组分配内存块。
步骤A5,链表头指针赋值。
循环执行步骤A4和步骤A5,调用DPDK中的分配函数(如spdk_mempool_get_bulk)在创建的内存池中为每一个轮询组(poll group),即CPU(Central Processing Unit,中央处理器)核分配足够数量的内存块,并返回分配结果。将这些内存块使用SGL链表数据结构组织起来,并将SGL链表头指针赋值为这些内存块(group->buf_cache),得到每个轮询组的SGL链表,向RPC返回内存分配结果。
主机与NVMe(Non-Volatile Memory Express,非易失性存储器标准)存储器的数据传输机制主要有SGL和PRP(Physical Region Page,物理区域页)两种,在NVMF远程映射协议中,主要使用SGL进行数据传输,SGL主要用于描述NVMe数据传输中不连续的数据块,以及这些数据块在内存中的位置和大小。也就是,在使用SGL管理内存块时,不要求SGL链表的多个内存块的物理地址是连续的。基于该特征,使得上述图1中为每个poll group分配的内存块的物理地址是不连续的。
二、内存申请方面。SPDK中数据缓存申请是通过DPDK中的内存池申请的。基于SPDK的内存申请流程如图2中的步骤B1-步骤B8所示。
步骤B1,对轮询组进行轮询。
步骤B2,对RDMA轮询器进行轮询。
每一个CPU核分配有一个IO线程。这个IO线程会一直轮询来自前端网卡的IO请求,即主机执行步骤B1,对轮询组进行轮询,并执行步骤B2,对RDMA轮询器进行轮询,以确定网卡是否接收到IO请求。当网卡接收到IO请求后,执行步骤B3。
步骤B3,确定IO请求的状态。
当网卡接收到IO请求后,SPDK调用状态确定函数(如nvmf_rdma_request_process)确定IO请求的状态。IO请求的状态包括需要存储数据的状态,即写数据状态,以及不需要存储数据的状态,即读数据状态。
步骤B4,判断IO请求是否需要存储数据。
主机根据IO请求的状态,判断本次IO请求是否需要存储数据。若否,则继续对轮询组进行轮询,返回步骤B1;若是,即本次IO请求需要存储数据,则执行步骤B5。
步骤B5,获取当前轮询组的多个内存块。
主机获取本次IO请求的当前轮询组对应的多个内存块。
步骤B6,判断是否获取到多个内存块。
主机判断是否获取到多个内存块,也就是,判断链表头指针(group->buf_cache)的赋值是否为空。若否,即链表头指针为空,则执行步骤B7;若是,即链表头指针不为空,则执行步骤B8。
步骤B7,再次从内存池中分配多个内存块。
步骤B8,为IO请求申请内存块。
当获取到多个内存块时,主机执行步骤B8,从多个内存块中为本次IO请求申请内存块;当没有获取到多个内存块时,主机再次从内存池中分配多个内存块,然后从新分配的多个内存块中为本次IO请求申请内存块,即执行步骤B7和步骤B8。
由于一次IO请求的数据需要经过多次IO操作才能完成将数据存储至内存,在每次基于IO操作存储数据前,主机都需要执行一次步骤B8,即申请内存块,一个内存块的长度为一次IO操作所存储的数据量。因此,存储一次IO请求的数据需要进行多次内存申请,以将请求的数据存储到多个内存块中。而基于SGL管理的多个内存块的物理地址不要求连续,即主机申请的多个内存块是离散的,使得请求的数据在内存中不是连续存储的。
三、IO流程方面。在SPDK中,数据通过网卡到达主机内存,然后依次经过SPDK的NVMF层、BDEV(Block Device,块设备)层和NVMe(Non-Volatile Memory Express,非易失性存储器标准)驱动的处理,最终存储到SSD中,采用NVMe的SSD即为NVMe SSD。增加缓存镜像后,数据到达主机内存之后就可以通过RDMA(Remote Direct Memory Access,远程直接内存访问)同步到镜像设备中,然后根据镜像操作成功与否,返回给客户端相应的状态。
目前,采用SGL管理内存块,相应的,采用SGL进行数据传输。采用SGL进行数据传输时,在一次远程传输中,会根据传输数据块的大小切分为多个散列元素,根据SGL元素的个数进行多次DMA(Direct Memory Access,直接内存访问)操作。这种传输方式会造成存储端多次内存申请和释放,效率不高,并且由于多次内存申请的内存块不一定连续,在进行RDMA镜像操作时,也必须进行多次远程RDMA操作,造成性能下降。
基于SPDK的IO流程如图3所示。
步骤C1,NVMF调用缓存镜像。
当请求的数据从前端网卡拷贝到主机内存之后,NVMF便可通过调用函数(如cache_mirror_process)调用缓存镜像,将数据同步到对端镜像设备。
步骤C2,为元数据申请内存。
步骤C3,发送元数据。
在NVMF调用缓存镜像的流程中,主机执行步骤C2和步骤C3,调用缓存镜像中的申请函数(如cache_mirror_get_meta_buffer),申请一块内存存放请求的数据的元数据,然后调用发送函数(如ibv_post_send),通过RDMA接口(verbs)将元数据发送出去,并向缓存镜像返回发送结果。
步骤C4,读取内存块中存储的数据。
步骤C5,发送数据。
对于已经拷贝到内存的请求的数据,由于SGL散列表的特性,各真实数据分散在内存的各处,所以需要多次发送才能将数据发送出去,循环执行步骤C4和步骤C5,即调用缓存镜像中的读取函数(如cache_mirror_get_data_buffer)读取内存块中存储的数据,然后调用发送函数,通过RDMA发送数据,并返回发送结果。通过多次读取和发送数据,实现将数据同步到镜像设备,并向NVMF返回缓存镜像的存储结果。
目前,基于SPDK的内存分配和内存申请过程依赖于DPDK的内存池技术,每次IO请求都会进行多次内存申请和释放,容易造成内存碎片,导致性能下降。常用的缓存镜像技术,也由于数据存储在物理地址不连续的内存,而需要进行多次RDMA传输才能实现,导致同步到镜像设备的延迟增大,进一步导致性能下降。
为了解决上述问题,本申请实施例提供了一种数据镜像方法,应用于主机,该方法中,主机的内存空间中提前预留有用于存储目标数据的、物理地址连续的内存空间,即预留内存空间。主机根据目标数据长度,从物理地址连续的预留内存空间中,申请到同样物理地址连续的第一内存空间,存储目标数据。由于目标数据是存储在物理地址连续的内存空间,不会出现内存碎片的问题,因此,在将目标数据存储至镜像设备时,通过一次数据传输,就可以将目标数据存储至镜像设备,提高了数据存储效率,降低了数据镜像存储的时延。另外,本申请实施例中,主机通过一次申请就获取到了足够存储目标数据的内存空间,无需执行多次申请,进一步提高了数据存储效率,降低了数据镜像存储的时延。
参见图4,为本申请实施例提供的数据镜像方法的第一种流程示意图,应用于主机,主机可以为计算机、服务器等可以存储数据的电子设备,对此不作限定。上述数据镜像方法包括如下步骤:
步骤S41,接收数据存储请求,数据存储请求包括目标数据。
步骤S42,从预留内存空间中,申请第一长度的第一内存空间和第二长度的第二内存空间,第一长度为目标数据的长度,第二长度为目标数据的元数据的长度。
步骤S43,将目标数据存储至第一内存空间,并将元数据存储至第二内存空间。
步骤S44,将第一内存空间和第二内存空间中存储的数据存储至镜像设备。
本申请实施例提供的技术方案中,主机的内存空间中提前预留有用于存储目标数据的、物理地址连续的内存空间,即预留内存空间。主机根据目标数据长度,从物理地址连续的预留内存空间中,申请到同样物理地址连续的第一内存空间,存储目标数据。由于目标数据是存储在物理地址连续的内存空间,不会出现内存碎片的问题,因此,在将目标数据存储至镜像设备时,通过一次数据传输,就可以将目标数据存储至镜像设备,提高了数据存储效率,降低了数据镜像存储的时延。另外,本申请实施例中,主机通过一次申请就获取到了足够存储目标数据的内存空间,无需执行多次申请,进一步提高了数据存储效率,降低了数据镜像存储的时延。
在上述步骤S41中,数据存储请求为需要存储数据的任一IO请求,包括需要存储的目标数据。主机从前端网卡接收数据存储请求,以对数据存储请求包括的目标数据进行镜像存储。本申请实施例中,主机可以通过CPU核上配置的IO线程对前端网卡进行轮询,确定是否有数据存储请求需要接收,在此对主机接收数据存储请求的方式不作限定。
在上述步骤S42中,主机的内存中提前预留有用于存储数据的预留内存空间,该预留内存空间的物理地址连续。第一长度为目标数据的长度,第一长度可以从数据存储请求中获取。第二长度为目标数据的元数据的长度,第二长度可以是预设的,也可以是根据目标数据,以及元数据算法确定的,对此不作限定。
主机在获取到数据存储请求后,从预留内存空间中,申请第一长度的物理地址连续的内存,作为第一内存空间,从预留内存空间中,申请第二长度的物理地址连续的内存,作为第二内存空间。例如,目标数据的长度为8MB(Megabyte,兆字节),即第一长度为8MB,第二长度为2MB,则主机从预留内存空间中申请8MB的物理地址连续的内存作为第一内存空间,申请2MB的物理地址连续的内存作为第二内存空间,第一长度、第二长度的取值仅为示例,对此不作限定。
主机申请的第一内存空间和第二内存空间的物理地址可以连续,也可以不连续,对此不作限定。主机可以分别申请第一内存空间和第二内存空间,即进行两次内存申请,申请到的第一内存空间和第二内存空间的物理地址不要求连续,以提高内存利用率。
主机也可以同时申请第一内存空间和第二内存空间,使得申请的第一内存空间和第二内存空间的物理地址连续,例如,第一长度为8MB,第二长度为2MB,则主机申请10MB的内存空间,将前8MB作为第一内存空间,将后2MB作为第二内存空间,对第一长度、第二长度的取值以及第一内存空间和第二内存空间先后顺序不作限定。本申请实施例中,主机只需要进行一次内存申请,提高了申请所需内存的效率;另外,由于第一内存空间和第二内存空间的物理地址连续,在将第一内存空间和第二内存空间中存储的数据存储至镜像设备时,也只需要一次远程传输,就可以完成镜像存储,进一步减少内存申请和镜像存储的次数,降低数据镜像存储的时延,提高了存储性能。
在上述步骤S43中,主机从数据存储请求中获取目标数据,并将目标数据存储至第一内存空间,该第一内存空间的物理地址连续,使得目标数据可以在内存中连续存储。在存储目标数据后,主机生成目标数据的元数据,生成的元数据可以包括指示目标数据的存储位置的信息、管理目标数据的索引和配置的信息等目标数据的描述信息,在此对元数据包括的信息不作限定。主机将元数据存储至第二内存空间,该第二内存空间的物理地址连续,使得元数据也可以在内存中连续存储。
在上述步骤S44中,镜像设备为除主机之外的、可以存储数据的电子设备,对镜像设备的种类和型号不作限定。主机分别读取第一内存空间中存储的目标数据,以及第二内存空间中存储的元数据,通过RDMA等方式,将目标数据和元数据存储至镜像设备,实现数据镜像存储。
此外,主机还可以通过同样的方式,将目标数据和元数据存储至SSD等主机本地磁盘,对此不作限定。
在一些实施例中,参见图5,为本申请实施例提供的数据镜像方法的第二种流程示意图。在主机将目标数据存储至第一内存空间前,即上述步骤S43前,上述数据镜像方法还可以包括步骤S53和步骤S54;上述步骤S43中的将目标数据存储至第一内存空间的步骤,可以通过如下步骤S55-步骤S56实现。
步骤S51,接收数据存储请求,数据存储请求包括目标数据。与上述步骤S41相同。
步骤S52,从预留内存空间中,申请第一长度的第一内存空间和第二长度的第二内存空间,第一长度为目标数据的长度,第二长度为目标数据的元数据的长度。与上述步骤S42相同。
步骤S53,将第一内存空间划分为多个内存块,每个内存块的长度为一次IO操作所存储的数据的长度。
步骤S54,将多个内存块的描述符存储至链表中。
步骤S55,利用链表,从多个内存块中确定当前IO操作指向的目标内存块。
步骤S56,将当前IO操作对应的目标数据的部分数据存储至目标内存块。
步骤S57,将元数据存储至第二内存空间。与上述步骤S43中的将元数据存储至第二内存空间的步骤相同。
步骤S58,将第一内存空间和第二内存空间中存储的数据存储至镜像设备。与上述步骤S44相同。
本申请实施例提供的技术方案中,主机将第一内存空间划分为多个内存块,并生成多个内存块的链表,使得主机可以通过多次IO操作接收数据,并基于链表查找每次IO操作接收的数据在内存中的存储位置。由于主机已经预先申请好物理地址连续的第一内存空间,并按IO操作存储的数据的长度划分得到多个内存块,使得主机在每次通过IO操作接收数据时,可以通过链表指针直接查找到目标内存块,存储每次接收的数据,保证主机只需要一次内存申请,就可以完成对目标数据的存储和镜像。
在上述步骤S53中,主机根据一次IO操作所存储的数据的长度划分第一内存空间,得到多个内存块。例如,第一内存空间的长度,即第一长度为8MB,一次IO操作所存储的数据的长度为1MB,则主机将第一内存空间划分为8个内存块,每个内存块的长度为1MB,上述第一长度、一次IO操作所存储的数据的长度的取值仅为示例,并不起限定作用。
在上述步骤S54中,主机将划分的多个内存块的描述符通过链表进行存储,该链表可以为SGL链表,内存块的描述符可以为物理地址等描述信息,对此不作限定。主机可以设定链表指针,使得主机可以通过链表指针准确查找到第一内存空间中的多个内存块。初始状态下,链表指针指向链表中的第一个地址,对应第一内存空间中的第一个内存块。
在上述步骤S55中,主机通过IO操作接收数据,接收的数据即为一次IO操作所存储的数据,为目标数据的部分数据。在一次IO操作中,主机接收当前IO操作对应的目标数据的部分数据后,基于内存块的链表,确定当前链表指针指向的链表中的描述符,并通过该描述符查找到当前IO操作对应的目标内存块,确定当前接收的数据需要存储的位置。主机执行上述步骤S56,将接收的数据存储在目标内存块中,实现对一次IO操作接收的数据进行存储。在存储一次IO操作接收的数据后,主机将当前链表指针指向下一个内存块,以使在下一次通过IO操作接收数据时,可以将接收的数据存储在下一个内存块中。主机通过多次执行步骤S55和步骤S56,实现将多次IO操作接收的数据存储在对应的内存块中。
在一些实施例中,在第一内存空间和第二内存空间的物理地址连续的情况下,上述步骤S44可以通过如下步骤S61和步骤S62实现,如图6所示的步骤S44的一种细化示意图。
步骤S61,从第一内存空间和第二内存空间中读取目标数据和元数据。
步骤S62,将读取的目标数据和元数据存储至镜像设备。
本申请实施例提供的技术方案中,第一内存空间和第二内存空间的物理地址连续,使得目标数据和元数据在内存中连续存储,主机可以从连续的第一内存空间和第二内存空间中一次读取到目标数据和元数据,将目标数据和元数据一次存储至镜像设备,减少了进行数据镜像存储的次数,进一步降低了数据镜像存储的时延,提高了存储性能。
在上述步骤S61中,由于主机申请的第一内存空间和第二内存空间的物理地址是连续的,即目标数据和元数据在内存中连续存储,因此主机只需要一次读取就可以从内存中读取到目标数据和元数据。
在上述步骤S62中,主机将读取到的目标数据和元数据一起存储至镜像设备,而不需要将目标数据和元数据分别存储至镜像设备。
在一些实施例中,主机还可以通过如下步骤将第一内存空间和第二内存空间中存储的数据存储至镜像设备:从第一内存空间读取目标数据,并将所读取的目标数据存储至镜像设备;从第二内存空间读取元数据,并将所读取的元数据存储至镜像设备。
主机分别读取第一内存空间和第二内存空间中存储的目标数据和元数据,通过两次远程传输,将目标数据和元数据存储至镜像设备。与现有技术相比,有效减少了进行数据镜像存储的次数,降低了数据镜像存储的时延。
另外,本申请实施例中,不要求第一内存空间和第二内存空间的物理地址连续,即第一内存空间和第二内存空间的物理地址连续或不连续,均可适用上述方式,将第一内存空间和第二内存空间中存储的数据存储至镜像设备,增加的了本申请实施例提供的技术方案的适用范围和灵活性。
在一些实施例中,在上述步骤S44之后,本申请实施例提供的数据镜像方法还包括如下步骤:释放第一内存空间和第二内存空间。
主机在将内存中的目标数据和元数据存储至镜像设备后,将内存中用于存储数据的内存空间,即第一内存空间和第二内存空间释放,使得主机可以接收下一次数据存储请求,继续从预留内存空间中申请内存,存储数据,提高了内存利用率。而在第一内存空间和第二内存空间的物理地址连续的情况下,主机只需要进行一次内存申请,相应的,在释放过程中,主机也只需要一次就可以将申请的内存空间释放,提高了内存资源的回收效率。
在一些实施例中,在主机接收数据存储请求前,即执行上述步骤S41前,本申请实施例提供的数据镜像方法还包括如下步骤:从大页内存中,为数据存储请求分配第三长度的内存空间,作为预留内存空间,第三长度大于第一长度和第二长度的和值。
在接收数据存储请求之前,主机判断是否为数据存储请求分配了预留内存空间。在主机已经为数据存储请求分配预留内存空间的情况下,主机执行步骤S41-步骤S44,完成对目标数据的镜像存储。在主机没有为数据存储请求分配预留内存空间的情况下,主机为数据存储请求分配大于第一长度和第二长度的和值,即第三长度的连续内存,作为预留内存空间。主机可以从预留内存空间中,为目标数据申请内存。第三长度可以根据实际需求设定,例如,第三长度可以为一次数据存储请求可以存储的最大数据量,对此不作限定。
本申请实施例中,由于主机的CPU可以有多个CPU核,即主机可以同时接收多个数据存储请求,进行数据存储和镜像,因此主机需要为每个数据存储请求,即每个CPU核分配不同的预留内存空间,并保证每个CPU核分配得到的预留内存空间不重叠,以减小多个CPU核在内存分配的竞争问题。
此外,在主机为数据存储请求分配的预留内存空间不够的情况下,主机再次从大页内存中,为本次数据存储请求再次分配足够的连续内存,作为新的预留内存空间。主机从新的预留内存空间中为本次数据存储请求申请内存,实现数据镜像存储。
下面结合图7-图9所示的基于SPDK的内存分配流程、内存申请流程、IO流程对本申请实施例提供的数据镜像方法进行详细说明,应用于主机,以第一内存空间和第二内存空间的物理地址连续为例进行说明,并不起限定作用
如图7所示的基于SPDK的内存分配流程。
步骤D1,RPC远程调用NVMF创建传输层。
步骤D2,NVMF创建传输层。
在启动SPDK中的NVMF目标端后,主机执行步骤D1,通过RPC远程调用NVMF中的创建函数(如rpc_nvmf_create_transport),并执行步骤D2,NVMF调用DPDK关联函数(如spdk_nvmf_transport_create),创建RDMA传输层,具体可参见上述背景技术中基于SPDK的内存分配流程的相关描述。
步骤D3,为轮询组分配内存空间。
步骤D4,链表头指针赋值。
在NVMF中创建传输层后,主机不再调用DPDK中的创建函数(如spdk_mempool_create)创建内存池,而是调用DPDK中的预留函数(如spdk_memzone_reserve)从大页内存中直接为轮询组(poll_group),也就是接收数据存储请求的CPU核,分配连续内存,即预留内存空间,并返回分配结果,将链表头指针赋值为分配的预留内存空间(group->buf_cache)。通过循环执行步骤D3-步骤D4,主机为每个轮询组分配对应的预留内存空间,向RPC返回分配结果。具体可参见上述关于分配预留内存空间的相关描述。
如图8所示的基于SPDK的内存申请流程。
步骤E1,对轮询组进行轮询。
步骤E2,对RDMA轮询器进行轮询。
步骤E3,确定IO请求的状态。
步骤E4,判断IO请求是否需要存储数据。
本申请实施例中,主机根据IO请求的状态,判断IO请求是否需要存储数据,也就是IO请求是否为数据存储请求。若是,即IO请求为数据存储请求,则执行步骤E5;若否,即IO请求不为数据存储请求,则返回执行步骤E1。具体可参见上述背景技术中基于SPDK的IO流程的相关描述。
步骤E5,获取当前轮询组的预留内存空间。
本申请实施例中,主机获取为本次IO请求的当前轮询组,即接收IO请求的CPU核,分配的预留内存空间。
步骤E6,判断是否获取到预留内存空间。
若否,即主机没有获取到为当前轮询组分配的预留内存空间,则执行步骤E7,重新分配预留内存空间;若是,即主机获取到为当前轮询组分配的预留内存空间,则执行步骤E8。
步骤E7,从大页内存中分配预留内存空间,并执行步骤E8。
步骤E8,获取存储目标数据以及元数据的连续内存。
本申请实施例中,主机从预留内存空间中获取长度为第一长度和第二长度之和的连续内存,第一长度即为目标数据的长度(如request_len),第二长度即为元数据长度(如meta_len)。将第一长度的连续内存作为数据区域,也就是第一内存空间,将第二长度的连续内存作为元数据区域,也就是第二内存空间。数据区域划分为多个长度为IO单元长度的内存块,IO单元长度即为一次IO操作所存储的数据的长度。图中数据区域的长度、内存块的长度和数量、元数据区域的长度仅为示例,并不起限定作用。
步骤E9,为IO请求申请内存。
本申请实施例中,主机为本次IO请求,即数据存储请求,申请第一内存空间和第二内存空间,并生成第一内存空间中的多个内存块的链表,向第一内存空间中存储目标数据。
上述步骤E1-步骤E9可参见图4-图5关于内存申请的相关描述。
如图9所示的基于SPDK的IO流程。
步骤F1,NVMF调用缓存镜像。
步骤F2,生成元数据。
步骤F3,发送数据。
NVMF通过调用函数(如cache_mirror_process)调用缓存镜像,并在缓存镜像中,调用填充函数(如cache_mirror_fill_meta)生成目标数据的元数据,将元数据存储在第二内存空间,进而调用发送函数(如ibv_post_send),通过RDMA将目标数据和元数据发送出去,并返回发送结果和缓存镜像的存储结果。由于目标数据和元数据存储在物理地址连续的内存中,因此主机只需要通过RDMA向镜像设备发送一次数据,即只需要执行一次步骤F3,就可以将目标数据和元数据存储至镜像设备,而不需要将目标数据和元数据分开,通过多次发送同步到镜像设备。
上述步骤F1-步骤F3可参见图4-图6关于IO流程、数据镜像存储的相关描述。
本申请实施例提供的技术方案中,当系统启动时,提前从大页内存中预留好设定的内存作为缓存镜像的预留内存空间,每次请求需要申请内存时,便可从预留好的预留内存空间中请求所需长度的连续内存,避免内存碎片造成的性能下降。当需要将缓存内存的数据同步到镜像设备时,由于本次请求的内存是物理连续的,所以只需要一次RDMA操作就可以完成缓存同步操作。从整体上提高缓存镜像的性能。
应用本申请实施例提供的技术方案,提供了基于SPDK的缓存镜像对内存分配、内存申请和数据传输的整体流程。通过提前预留的连续的物理内存,一次IO请求只需要一次内存申请,提高了内存申请效率。重新组织了目标数据和元数据的存储方式,优化了内存分配和内存申请流程,实现目标数据和元数据在连续的物理内存存储。在同步到镜像设备的流程中,实现一次IO请求只需要一次RDMA写操作传输便可完成数据同步操作,提高了同步到镜像设备的性能。
与上述数据存储方法相对应,本申请实施例还提供了一种数据镜像装置,如图10所示,为本申请实施例提供的数据镜像装置的一种结构示意图,应用于主机,所述装置包括:
接收模块101,用于接收数据存储请求,所述数据存储请求包括目标数据;
申请模块102,用于从预留内存空间中,申请第一长度的第一内存空间和第二长度的第二内存空间,所述第一长度为所述目标数据的长度,所述第二长度为所述目标数据的元数据的长度;
第一存储模块103,用于将所述目标数据存储至所述第一内存空间,并将所述元数据存储至所述第二内存空间;
第二存储模块104,用于将所述第一内存空间和所述第二内存空间中存储的数据存储至镜像设备。
在一些实施例中,所述装置还包括:
划分模块,用于在将所述目标数据存储至所述第一内存空间之前,将所述第一内存空间划分为多个内存块,每个内存块的长度为一次IO操作所存储的数据的长度;将所述多个内存块的描述符存储至链表中;
所述第一存储模块103,具体用于:
利用所述链表,从所述多个内存块中确定当前IO操作指向的目标内存块;
将当前IO操作对应的所述目标数据的部分数据存储至所述目标内存块。
在一些实施例中,所述第一内存空间和所述第二内存空间的物理地址连续。
在一些实施例中,所述第二存储模块104,具体用于:
从所述第一内存空间和所述第二内存空间中读取所述目标数据和所述元数据;
将读取的所述目标数据和所述元数据存储至镜像设备。
在一些实施例中,所述装置还包括:
释放模块,用于在将所述第一内存空间和所述第二内存空间中存储的数据存储至镜像设备之后,释放所述第一内存空间和所述第二内存空间。
在一些实施例中,所述装置还包括:
分配模块,用于在接收数据存储请求之前,从大页内存中,为所述数据存储请求分配第三长度的内存空间,作为预留内存空间,所述第三长度大于所述第一长度和所述第二长度的和值。
本申请实施例提供的技术方案中,主机的内存空间中提前预留有用于存储目标数据的、物理地址连续的内存空间,即预留内存空间。主机根据目标数据长度,从物理地址连续的预留内存空间中,申请到同样物理地址连续的第一内存空间,存储目标数据。由于目标数据是存储在物理地址连续的内存空间,不会出现内存碎片的问题,因此,在将目标数据存储至镜像设备时,通过一次数据传输,就可以将目标数据存储至镜像设备,提高了数据存储效率,降低了数据镜像存储的时延。另外,本申请实施例中,主机通过一次申请就获取到了足够存储目标数据的内存空间,无需执行多次申请,进一步提高了数据存储效率,降低了数据镜像存储的时延。
本申请实施例还提供了一种主机,如图11所示,包括处理器111、通信接口112、存储器113和通信总线114,其中,处理器111,通信接口112,存储器113通过通信总线114完成相互间的通信,
存储器113,用于存放计算机程序;
处理器111,用于执行存储器113上所存放的程序时,实现如下步骤:
接收数据存储请求,所述数据存储请求包括目标数据;
从预留内存空间中,申请第一长度的第一内存空间和第二长度的第二内存空间,所述第一长度为所述目标数据的长度,所述第二长度为所述目标数据的元数据的长度;
将所述目标数据存储至所述第一内存空间,并将所述元数据存储至所述第二内存空间;
将所述第一内存空间和所述第二内存空间中存储的数据存储至镜像设备。
上述主机提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述主机与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
在本申请提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一数据镜像方法的步骤。
在本申请提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一数据镜像方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk (SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、主机、计算机可读存储介质和计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的较佳实施例,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。
Claims (9)
1.一种数据镜像方法,其特征在于,应用于主机,所述主机的内存中提前预留有用于存储数据的预留内存空间,所述预留内存空间的物理地址连续,所述方法包括:
接收数据存储请求,所述数据存储请求包括目标数据;
从预留内存空间中,申请第一长度的第一内存空间和第二长度的第二内存空间,所述第一长度为所述目标数据的长度,所述第二长度为所述目标数据的元数据的长度,所述第一内存空间为物理地址连续的内存,所述第二内存空间为物理地址连续的内存;
将所述目标数据存储至所述第一内存空间,并将所述元数据存储至所述第二内存空间;
将所述第一内存空间和所述第二内存空间中存储的数据存储至镜像设备。
2.根据权利要求1所述的方法,其特征在于,在将所述目标数据存储至所述第一内存空间之前,所述方法还包括:
将所述第一内存空间划分为多个内存块,每个内存块的长度为一次输入输出IO操作所存储的数据的长度;将所述多个内存块的描述符存储至链表中;
所述将所述目标数据存储至所述第一内存空间,包括:
利用所述链表,从所述多个内存块中确定当前IO操作指向的目标内存块;
将当前IO操作对应的所述目标数据的部分数据存储至所述目标内存块。
3.根据权利要求1所述的方法,其特征在于,所述第一内存空间和所述第二内存空间的物理地址连续。
4.根据权利要求3所述的方法,其特征在于,所述将所述第一内存空间和所述第二内存空间中存储的数据存储至镜像设备,包括:
从所述第一内存空间和所述第二内存空间中读取所述目标数据和所述元数据;
将读取的所述目标数据和所述元数据存储至镜像设备。
5.根据权利要求3所述的方法,其特征在于,在将所述第一内存空间和所述第二内存空间中存储的数据存储至镜像设备之后,所述方法还包括:
释放所述第一内存空间和所述第二内存空间。
6.根据权利要求1-5任一项所述的方法,其特征在于,在所述接收数据存储请求之前,所述方法还包括:
从大页内存中,为所述数据存储请求分配第三长度的内存空间,作为预留内存空间,所述第三长度大于所述第一长度和所述第二长度的和值。
7.一种数据镜像装置,其特征在于,应用于主机,所述主机的内存中提前预留有用于存储数据的预留内存空间,所述预留内存空间的物理地址连续,所述装置包括:
接收模块,用于接收数据存储请求,所述数据存储请求包括目标数据;
申请模块,用于从预留内存空间中,申请第一长度的第一内存空间和第二长度的第二内存空间,所述第一长度为所述目标数据的长度,所述第二长度为所述目标数据的元数据的长度,所述第一内存空间为物理地址连续的内存,所述第二内存空间为物理地址连续的内存;
第一存储模块,用于将所述目标数据存储至所述第一内存空间,并将所述元数据存储至所述第二内存空间;
第二存储模块,用于将所述第一内存空间和所述第二内存空间中存储的数据存储至镜像设备。
8.一种主机,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-6任一所述的方法步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-6任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311188460.7A CN116955219B (zh) | 2023-09-13 | 2023-09-13 | 一种数据镜像方法、装置、主机及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311188460.7A CN116955219B (zh) | 2023-09-13 | 2023-09-13 | 一种数据镜像方法、装置、主机及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116955219A CN116955219A (zh) | 2023-10-27 |
CN116955219B true CN116955219B (zh) | 2024-01-19 |
Family
ID=88462304
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311188460.7A Active CN116955219B (zh) | 2023-09-13 | 2023-09-13 | 一种数据镜像方法、装置、主机及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116955219B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117312183B (zh) * | 2023-11-30 | 2024-02-20 | 苏州元脑智能科技有限公司 | 一种内存容量调整方法、装置、电子设备及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105677491A (zh) * | 2015-12-31 | 2016-06-15 | 杭州华为数字技术有限公司 | 一种数据传输方法及装置 |
CN109933570A (zh) * | 2019-03-15 | 2019-06-25 | 中山大学 | 一种元数据管理方法、系统及介质 |
CN110321301A (zh) * | 2018-03-30 | 2019-10-11 | 华为技术有限公司 | 一种数据处理的方法及装置 |
WO2021005444A1 (en) * | 2019-07-08 | 2021-01-14 | International Business Machines Corporation | Mirroring write operations across data storage devices |
CN112631734A (zh) * | 2020-12-30 | 2021-04-09 | 北京天融信网络安全技术有限公司 | 虚拟机镜像文件的处理方法、装置、设备和存储介质 |
CN112988627A (zh) * | 2019-12-02 | 2021-06-18 | 三星电子株式会社 | 存储设备、存储系统和操作存储设备的方法 |
CN114168074A (zh) * | 2021-11-25 | 2022-03-11 | 北京金山云网络技术有限公司 | 镜像存储方法、装置、存储介质以及电子设备 |
CN114840307A (zh) * | 2022-04-28 | 2022-08-02 | 阿里巴巴(中国)有限公司 | 容器的加载方法、装置、设备和存储介质 |
CN115048034A (zh) * | 2021-03-08 | 2022-09-13 | 合肥忆芯电子科技有限公司 | 用于sgl的存储空间映射方法及其装置 |
CN116594919A (zh) * | 2023-03-27 | 2023-08-15 | 北京仿真中心 | 一种用于处理内存碎片的方法、计算机设备及介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9836404B2 (en) * | 2015-08-14 | 2017-12-05 | Netapp, Inc. | Write mirroring to storage class memory devices |
-
2023
- 2023-09-13 CN CN202311188460.7A patent/CN116955219B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105677491A (zh) * | 2015-12-31 | 2016-06-15 | 杭州华为数字技术有限公司 | 一种数据传输方法及装置 |
CN110321301A (zh) * | 2018-03-30 | 2019-10-11 | 华为技术有限公司 | 一种数据处理的方法及装置 |
CN109933570A (zh) * | 2019-03-15 | 2019-06-25 | 中山大学 | 一种元数据管理方法、系统及介质 |
WO2021005444A1 (en) * | 2019-07-08 | 2021-01-14 | International Business Machines Corporation | Mirroring write operations across data storage devices |
CN112988627A (zh) * | 2019-12-02 | 2021-06-18 | 三星电子株式会社 | 存储设备、存储系统和操作存储设备的方法 |
CN112631734A (zh) * | 2020-12-30 | 2021-04-09 | 北京天融信网络安全技术有限公司 | 虚拟机镜像文件的处理方法、装置、设备和存储介质 |
CN115048034A (zh) * | 2021-03-08 | 2022-09-13 | 合肥忆芯电子科技有限公司 | 用于sgl的存储空间映射方法及其装置 |
CN114168074A (zh) * | 2021-11-25 | 2022-03-11 | 北京金山云网络技术有限公司 | 镜像存储方法、装置、存储介质以及电子设备 |
CN114840307A (zh) * | 2022-04-28 | 2022-08-02 | 阿里巴巴(中国)有限公司 | 容器的加载方法、装置、设备和存储介质 |
CN116594919A (zh) * | 2023-03-27 | 2023-08-15 | 北京仿真中心 | 一种用于处理内存碎片的方法、计算机设备及介质 |
Non-Patent Citations (1)
Title |
---|
透明计算系统中基于BitMap的共享镜像存储管理;张文豪;宋虹;王大成;王建新;;计算机工程与应用(13);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN116955219A (zh) | 2023-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230011387A1 (en) | Data processing method and nvme storage device | |
US11411885B2 (en) | Network-accessible data volume modification | |
CN112948318B (zh) | 一种Linux操作系统下基于RDMA的数据传输方法及装置 | |
US10037298B2 (en) | Network-accessible data volume modification | |
CN110858162B (zh) | 内存管理方法及装置、服务器 | |
CN116955219B (zh) | 一种数据镜像方法、装置、主机及存储介质 | |
CN113032293A (zh) | 缓存管理器及控制部件 | |
US20220083281A1 (en) | Reading and writing of distributed block storage system | |
CN112000287A (zh) | 一种io请求处理装置、方法、设备及可读存储介质 | |
US10620871B1 (en) | Storage scheme for a distributed storage system | |
US20100161585A1 (en) | Asymmetric cluster filesystem | |
US20050235005A1 (en) | Computer system configuring file system on virtual storage device, virtual storage management apparatus, method and signal-bearing medium thereof | |
KR20200135715A (ko) | 데이터 처리 방법, 장치, 기기 및 매체 | |
WO2016090985A1 (zh) | 缓存的读取、读取处理方法及装置 | |
CN110162395B (zh) | 一种内存分配的方法及装置 | |
US10846265B2 (en) | Method and apparatus for accessing file, and storage system | |
JP6720357B2 (ja) | ネットワークアクセス可能なデータボリューム変更 | |
CN114327903B (zh) | NVMe-oF管理系统、资源配置方法和IO读写方法 | |
KR20200109547A (ko) | 네트워크 부착 디스크를 통한 파일 처리 방법 및 그 시스템 | |
KR20150048028A (ko) | 데이터 전송 관리 방법 | |
CN113031849A (zh) | 直接内存存取单元及控制部件 | |
CN112003860B (zh) | 适用于远程直接内存访问的内存管理方法、系统及介质 | |
CN113127183B (zh) | 一种用户态协议栈中的内存分配方法和装置 | |
JP2003316589A (ja) | 実記憶利用方法 | |
JP7173337B2 (ja) | リソース管理装置、リソース管理方法およびプログラム |
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 |