CN116414735A - 数据存储方法、系统、存储访问配置方法及相关设备 - Google Patents
数据存储方法、系统、存储访问配置方法及相关设备 Download PDFInfo
- Publication number
- CN116414735A CN116414735A CN202111662809.7A CN202111662809A CN116414735A CN 116414735 A CN116414735 A CN 116414735A CN 202111662809 A CN202111662809 A CN 202111662809A CN 116414735 A CN116414735 A CN 116414735A
- Authority
- CN
- China
- Prior art keywords
- address
- adapter card
- data
- memory space
- host
- 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
- 238000013500 data storage Methods 0.000 title claims abstract description 30
- 238000000034 method Methods 0.000 title claims description 79
- 230000015654 memory Effects 0.000 claims abstract description 446
- 238000004891 communication Methods 0.000 claims abstract description 42
- 238000012545 processing Methods 0.000 claims description 28
- 230000002085 persistent effect Effects 0.000 claims description 26
- 230000008569 process Effects 0.000 claims description 19
- 230000009977 dual effect Effects 0.000 claims description 12
- 230000002688 persistence Effects 0.000 abstract description 32
- 238000006243 chemical reaction Methods 0.000 abstract description 21
- 238000013507 mapping Methods 0.000 description 68
- 230000006870 function Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 10
- 238000004590 computer program Methods 0.000 description 8
- 230000002093 peripheral effect Effects 0.000 description 7
- 230000004044 response Effects 0.000 description 7
- 238000007726 management method Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 5
- 230000001427 coherent effect Effects 0.000 description 4
- 230000008030 elimination Effects 0.000 description 4
- 238000003379 elimination reaction Methods 0.000 description 4
- 230000005856 abnormality Effects 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000000429 assembly Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000002955 isolation 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
- 238000002360 preparation method Methods 0.000 description 1
- 238000010223 real-time analysis Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Images
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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
-
- 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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请提供了数据存储方法、系统、存储访问配置方法及相关设备,该数据存储系统包括主机、适配卡和存储节点,主机和适配卡通过总线建立通信连接,存储节点和适配卡通过网络建立通信连接,其中,存储节点用于存储主机请求写入第一内存空间的数据,其中,第一内存空间是适配卡向主机提供的支持内存语义访问的存储空间,数据通过适配卡写入存储节点的第二内存空间中,适配卡包括第二内存空间的物理地址与第一内存空间的地址之间的第一对应关系,使得主机进行数据持久化时无需再进行协议转换,从而提高存储系统持久化数据的效率。
Description
技术领域
本申请涉及存储领域,尤其涉及数据存储方法、系统、存储访问配置方法及相关设备。
背景技术
当前的存储系统的软件结构可以分为三种:块级别(block-level)、文件级别(file-level)和对象级别(object-level),应用服务器将内存中的数据通过文件、对象、块的形式存储到持久化介质中。
在对数据进行持久化时,上述三种软件结构的存储系统都需要先将数据写入内存中,然后将内存中的数据写入硬盘进行持久化存储。但是,内存和硬盘的访问存在差异化(字节级访问和块级访问),内存数据进入持久化层不可避免的存在协议转换开销,协议转换开销不仅消耗系统资源,而且影响应用服务器持久化数据的效率。
发明内容
本申请提供了数据存储方法、系统、存储访问配置方法及相关设备,用于解决数据持久化需要进行协议转换,导致数据持久化效率低的问题。
第一方面,本申请提供了一种数据存储方法,该方法应用于数据存储系统中,数据存储系统包括主机、适配卡和存储节点,主机和适配卡通过总线建立通信连接,存储节点和适配卡通过网络建立通信连接,该方法包括以下步骤:适配卡接收主机请求写入第一内存空间的第一地址的数据,其中,第一内存空间是适配卡向主机提供的支持内存语义访问的存储空间,适配卡将数据写入存储节点的第二内存空间中,适配卡包括第二内存空间的物理地址与第一内存空间的地址之间的第一对应关系。
具体实现中,第二内存空间是非易失性双列直插式内存模块(non-volatile dualin-line memory module,NVDIMM)。该总线包括快捷外围部件互连标准(PeripheralComponent Interconnect Express,PCIe)总线、计算机快速链接(compute express link,CXL)总线、Z世代(GenZ)总线中的一种或者多种。适配卡可以以插卡的方式,插入主机100的总线接口中,比如插入PCI总线接口、CXL总线接口等等,也可以在加工时与主机100的其他部件、芯片或组件统一印制在主板上,本申请不对此进行限定。可选地,该适配卡可以是处理器分散处理单元(data processing unit,DPU)、网络处理器(neural-networkprocessing unit,NPU)、主机总线适配器(host bus adapter,HBA)等,本申请不作具体限定。适配卡也可以包括主板,又称为印刷电路板(printed circuit boards,PCB),主板上印制有上述芯片。接口,可以包括前端接口和后端接口,其中,前端接口用于与主机通信,后端接口用于与存储节点通信。
实施第一方面描述的方法,适配卡可根据存储节点的第二内存空间大小,向主机提供支持内存语义访问的第一内存空间,主机进行数据持久化时,通过内存语义请求向第一内存空间写入数据,适配卡响应于该请求,通过远程直接数据存取(remote directmemory access,RDMA)的方式将数据持久化至存储节点的第二内存空间中,使得主机进行数据持久化时无需再进行协议转换,从而提高存储系统的访问效率。
在一种可能的实现方式中,主机中的应用程序可以通过内存映射方式加载和卸载上述第一内存空间。其中,内存映射指的是将第一内存空间的物理地址空间映射到应用程序的进程的虚拟内存空间,使得应用程序的进程可以对第一内存空间进行读取和修改,提高应用程序的处理效率。具体实现中,可通过内存映射函数mmap以实现第一内存空间的加载,通过munmap函数来删除映射关系实现第一内存空间的卸载,或者使用其他方式,本申请不对此进行限定。
具体地,主机进行内存映射后可获得第一内存空间的地址与应用程序的虚拟内存地址之间的第二对应关系,该第二对应关系可通过页表进行存储。主机请求将数据写入第一内存空间时,可以先根据应用程序需要访问的第一虚拟内存地址以及页表中记录的第二对应关系,确定第一虚拟内存地址对应的第一地址,然后向适配卡发送第一地址的写入请求。
实施上述实现方式,主机通过内存映射的方式加载上述第一内存空间,使得主机可以将第一内存空间和本地内存进行统一管理,均通过内存语义进行访问,使得本申请存储系统在避免数据持久化的协议转换消耗的同时,系统的部署不会对主机本地内存的使用产生影响,适用场景更加广泛。
在一种可能的实现方式中,主机内的页表包括多个页面,部分页面的虚拟地址与第一内存空间的一段物理地址空间存在映射关系,部分页面的虚拟地址与本地内存的一段物理地址空间存在映射关系,使得主机能够进行远端存储寻址,且寻址方式为字节级寻址,免去协议转换开销。应理解,内存通常以页表的方式进行远端存储寻址,第一内存空间与本地内存统一通过页表进行远端存储寻址,可以避免对主机进行较大改动,使得本申请提供的存储系统的部署更加便捷。
具体实现中,由于适配卡向主机提供的第一内存空间的容量通常会远高于主机本地的内存130的容量,主机100在进行内存映射时,页表中的每一个页面的页面容量越小,内存空间被切分的粒度越细,维护开销随之会变大,因此上述多个页面可包括大页和小页,比如大页容量为2MB,小页容量为4KB,当然还可以是其他数值规格来区分大页和小页,本申请不作具体限定。主机进行内存映射时,可以将大页的虚拟地址与存储容量较大的第一内存空间的第一地址之间进行映射,将小页的虚拟地址与存储容量较小的本地的内存的物理地址之间进行映射,从而获得第一映射关系。其中,大页的虚拟地址与第一地址之间可以进行全映射,使得进程访问时不产生缺页异常。小页的虚拟地址与内存的地址之间可以进行全映射,也可以不进行全映射,本申请不作具体限定,若不进行全映射,内存可能会产生缺页异常,但是可通过分配内存的物理页的方式解决该问题,这里不展开赘述。
实施上述实现方式,主机通过页表对第一内存空间和内存进行统一管理,使得主机在访问第一内存空间的大页1时,可以根据上述第一映射关系,确定大页1对应的第一地址1,然后向适配卡发送携带有上述第一地址1的访问请求。该方式可以实现主机的高效字节级别寻址,数据可直接写入持久化内存,相比于其他持久化存储方式,比如对象存储、块存储以及文件存储,免去了从内存写入硬盘时所需的协议转换开销,提高数据持久化的效率。
在一种可能的实现方式中,适配卡将数据通过远程RDMA的方式写入存储节点的第二内存空间的第二地址,其中,第一对应关系中第一地址与第二地址对应。
实施上述实现方式,适配卡通过RDMA的方式与存储节点进行通信连接,如果与适配卡相连的存储节点发生故障,适配卡可以与其他存储节点建立RDMA通信连接,使得主机的业务不会产生影响。同样地,如果主机发生故障,存储节点可以与其他主机上的适配卡建立通信连接,由其他主机管存储节点中的数据,保证数据不会由于主机故障而造成数据丢失。
在一种可能的实现方式中,适配卡包括缓存,第一对应关系包括第一内存空间的地址与缓存之间的对应关系,以及第一内存空间的地址与第二内存空间的物理地址之间的对应关系。在适配卡接收到存储节点发送的第二地址的写入请求时,适配卡可先将数据写入缓存的缓存地址中,更新第一对应关系,使得第一对应关系中第一地址与缓存地址对应,然后在缓存中的数据达到阈值的情况下,再卡将数据通过RDMA的方式写入存储节点的第二内存空间的第二地址,更新第一对应关系,更新后的第一对应关系中第一地址与第二地址对应。
可选地,上述第一对应关系可以以索引的方式存储于适配卡中,该索引具体可以是适配卡的内存管理单元(memory management unit,MMU)的页表,其中,MMU是一种负责CPU的内存访问请求的计算机硬件,MMU页表可以记录地址之间映射规则的集合,在本申请实施例中,适配卡中的MMU页表记录有上述第一对应关系。
具体实现中,数据写入时,适配卡的MMU可以根据适配卡的缓存剩余空间,为待写入的大页分配缓存地址,并更新索引,记录待写入的大页的第一地址与新分配的缓存地址之间的映射关系。并且,当缓存中数据量达到阈值后,可以统一将缓存中的数据以RDMA的方式写入存储节点的第二内存空间中,再更新索引,记录写入第二内存空间的大页的第一地址与第二地址之间的映射关系。
具体实现中,数据读取时,适配卡接收主机发送的第一地址的读取请求时,适配卡可以根据第一对应关系确定第一地址对应的地址,在对应的地址为缓存地址时,适配卡可根据该缓存地址对第一地址的读取请求进行处理,将数据从缓存地址中读取并返回至主机。
可选地,在第一地址对应的地址为第二内存空间的第二地址时,适配卡向主机返回缓存未命中消息,向存储节点发送第二地址的读取请求,然后接收存储节点返回的数据,将数据存储至缓存,并更新第一对应关系,更新后的第一对应关系中第一地址与第二地址对应。
实施上述实现方式,适配卡接收主机发送的读取请求时,可以先从缓存中获取主机请求的数据,从而提高数据读取的效率。适配卡中接收主机发送的写入请求时,可以将主机请求写入第一内存空间的数据先存储至缓存,再分批次将缓存中的数据通过RDMA的方式远程写入存储节点,从而减少适配卡进行RDMA操作的次数,从而减少用于RDMA通信的网卡队列的准备次数,从而降低数据写入时的系统资源消耗,提高数据写入的效率。
在一种可能的实现方式中,主机包括重试队列,该重试队列包括未命中的数据读取请求和未命中的数据读取请求的上下文信息,该重试队列用于供主机根据上下文信息向适配卡重新发送未命中的数据读取请求。其中,该上下文信息可以记录有命中失败的访问请求的一些具体信息,比如要读取的数据是什么,该数据从哪里获取,获取后数据要返回到哪里等等,主机可定时或以一定频率从重试队列中取出读取请求和对应的上下文信息进行重试,若命中目标页面,则将该读取请求从重试队列删除,若不命中,则等待下一次重试,直至命中目标页面。
实施上述实现方式,主机将命中失败的读取请求放入重试队列中,可以让出用于处理该读取请求相关资源,将相关资源用于处理其他事物,而无需长时间等待数据的返回,从而提高CPU资源的利用率,并且由于上下文信息的存在,主机重发读取请求时,无需再重新进入内核进行地址关联等内存访问缺页处理的流程,从而节省CPU资源。
在一种可能的实现方式中,适配卡还可以设置有预取器,预取器可以预测应用程序即将访问的预取数据,然后将预取数据存储至缓存中,从而提高存储系统的访问效率。举例来说,假设大页P1是预取器预测到应用程序即将访问的预取数据,那么在缓存中的数据统一通过RDMA写入存储节点的第二内存空间时,大页P1将会保留在缓存中,从而在应用程序访问大页P1时,可以直接存适配卡的缓存中读取该数据。具体实现中,上述预取器可以通过处理器中专门的硬件来实现的,该硬件监控正在执行程序中请求的指令或数据,识别下一个程序需要的预取数据。或者,上述预取器可以通过编译器分析代码然后在程序编译的过程中插入预取指令。这样程序执行过程中,在插入预取指令的位置就会进行预取的动作。应理解,上述举例用于说明,本申请不对预取器的具体实现方式进行限定。
实施上述实现方式,在适配卡中配置预取器,可以将预测出的应用程序即将访问的预取数据从存储节点预取至适配卡缓存中,使得主机请求从第一内存空间读取该预取数据时,适配卡可将数据从缓存中读取并返回至主机,提高主机的数据读取效率。
在一种可能的实现方式中,适配卡的CPU还可以设置有冷页淘汰逻辑,若页面长时间没有被主机访问,适配卡可以将该页面通过RDMA的方式写入存储节点中。若热页被主机访问的频次较高,当缓存内的数据量达到阈值需要统一写入存储节点时,热页可以保留在缓存中。
实施上述实现方式,在适配卡中配置冷页淘汰逻辑,可以将主机长时间不访问的冷页数据提前写入存储节点,从而节省缓存的存储空间。主机访问频次较高的热页数据保留在缓存,提高缓存命中率,进而提高主机的数据读取效率。
第二方面,本申请提供一种数据存储系统,该数据存储系统包括主机、适配卡和存储节点,主机和适配卡通过总线建立通信连接,存储节点和适配卡通过网络建立通信连接;主机,用于向适配卡发送主机请求写入第一内存空间的第一地址的数据,其中,第一内存空间是适配卡向主机提供的支持内存语义访问的存储空间;适配卡,用于将数据写入存储节点的第二内存空间中,适配卡包括第二内存空间的物理地址与第一内存空间的地址之间的第一对应关系。
在一种可能的实现方式中,主机包括第一内存空间的地址与应用程序的虚拟内存地址之间的第二对应关系。
在一种可能的实现方式中,适配卡,用于将数据通过远程直接数据存取RDMA的方式写入存储节点的第二内存空间的第二地址,第一对应关系中第一地址与第二地址对应。
在一种可能的实现方式中,适配卡包括缓存,第一对应关系包括第一内存空间的地址与缓存之间的对应关系,以及,第一内存空间的地址与第二内存空间的物理地址之间的对应关系。
在一种可能的实现方式中,适配卡,用于将数据写入缓存的缓存地址中,更新第一对应关系,使得第一对应关系中第一地址与缓存地址对应;适配卡,用于在缓存中的数据达到阈值的情况下,将数据通过RDMA的方式写入存储节点的第二内存空间的第二地址,更新第一对应关系,使得第一地址与第二地址对应。
在一种可能的实现方式中,主机,用于向适配卡发送第一地址的读取请求;适配卡,用于根据第一对应关系确定第一地址对应的地址;适配卡,用于在第一地址对应的地址为缓存地址的情况下,适配卡根据缓存地址对第一地址的读取请求进行处理。
在一种可能的实现方式中,适配卡,用于在第一地址对应的地址为第二内存空间的第二地址的情况下,向主机返回缓存未命中消息;适配卡,用于向存储节点发送第二地址的读取请求;适配卡,用于接收存储节点发送的数据,将数据存储至缓存并更新第一对应关系。
在一种可能的实现方式中,主机包括重试队列,重试队列包括未命中的数据读取请求和未命中的数据读取请求的上下文信息,重试队列用于供主机根据上下文信息向适配卡重新发送未命中的数据读取请求。
在一种可能的实现方式中,第二内存空间是非易失性双列直插式内存模块NVDIMM。
在一种可能的实现方式中,总线包括快捷外围部件互连标准PCI总线、计算机快速链接CXL总线、Z世代GenZ总线中的一种或者多种。
第三方面,本申请提供一种适配卡,其特征在于,应用于数据存储系统,数据存储系统包括主机、适配卡和存储节点,主机和适配卡通过总线建立通信连接,存储节点和适配卡通过网络建立通信连接;适配卡包括:接收单元,用于接收主机请求写入第一内存空间的第一地址的数据,其中,第一内存空间是适配卡向主机提供的支持内存语义访问的存储空间;写入单元,用于将数据写入存储节点的第二内存空间中,适配卡包括第二内存空间的物理地址与第一内存空间的地址之间的第一对应关系。
在一种可能的实现方式中,写入单元,用于将数据通过远程直接数据存取RDMA的方式写入存储节点的第二内存空间的第二地址,第一对应关系中第一地址与第二地址对应。
在一种可能的实现方式中,适配卡包括缓存,第一对应关系包括第一内存空间的地址与缓存之间的对应关系,以及,第一内存空间的地址与第二内存空间的物理地址之间的对应关系。
在一种可能的实现方式中,写入单元,用于将数据写入缓存的缓存地址中,更新第一对应关系,使得第一对应关系中第一地址与缓存地址对应;写入单元,用于在缓存中的数据达到阈值的情况下,将数据通过RDMA的方式写入存储节点的第二内存空间的第二地址,更新第一对应关系,使得第一地址与第二地址对应。
在一种可能的实现方式中,适配卡包括读取单元,接收单元,用于接收主机发送的第一地址的读取请求;读取单元,用于根据第一对应关系确定第一地址对应的地址;读取单元,用于在第一地址对应的地址为缓存地址的情况下,适配卡根据缓存地址对第一地址的读取请求进行处理。
在一种可能的实现方式中,读取单元,用于在第一地址对应的地址为第二内存空间的第二地址的情况下,向主机返回缓存未命中消息;读取单元,用于向存储节点发送第二地址的读取请求;接收单元,用于接收存储节点发送的数据,将数据存储至缓存并更新第一对应关系。
在一种可能的实现方式中,第二内存空间是非易失性双列直插式内存模块NVDIMM。
在一种可能的实现方式中,总线包括快捷外围部件互连标准PCI总线、计算机快速链接CXL总线、Z世代GenZ总线中的一种或者多种。
第四方面,本申请提供了一种计算设备,包括处理器和存储器,存储器用于存储代码,处理器用于执行代码实现如第一方面描述的方法。
第五方面,本申请提供了一种存储访问配置方法,该方法包括以下步骤:适配卡向主机提供支持内存语义访问的存储空间;适配卡建立存储空间与存储节点的持久化存储设备的物理地址的对应关系。
在一种可能的实现方式中,适配卡与存储节点通过网络连接。
在一种可能的实现方式中,适配卡通过远程直接数据存取RDMA的方式访问物理地址。
在一种可能的实现方式中,持久化存储设备为非易失性双列直插式内存模块NVDIMM。
第六方面,本申请提供了一种适配卡,该适配卡包括接口和处理器,处理器用于:向主机提供支持内存语义访问的存储空间;建立存储空间与存储节点的持久化存储设备的物理地址的对应关系。
在一种可能的实现方式中,适配卡与存储节点通过网络连接。
在一种可能的实现方式中,适配卡通过远程直接数据存取RDMA的方式访问物理地址。
在一种可能的实现方式中,持久化存储设备为非易失性双列直插式内存模块NVDIMM。
第七方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
第八方面,本申请提供了一种包含指令的计算机程序产品,包括计算机程序或指令,当该计算机程序或指令在计算机上运行时,使得该计算机执行使得计算机执行上述各方面所述的方法。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
图1是本申请提供的一种存储系统;
图2是本申请提供的一种存储系统在一应用场景下的结构示意图;
图3是本申请提供的内存映射关系示意图;
图4是本申请提供的一种存储系统在另一应用场景下的结构示意图;
图5是本申请提供的一种存储方法的步骤流程示意图;
图6是本申请提供的一种适配卡的结构示意图;
图7是本申请提供的一种计算设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
首先,对本申请涉及应用场景进行说明。
无论是分布式存储还是集中式存储,都涉及到应用服务器以什么形式访问数据的问题,目前应用服务器访问数据有三种方式:块级别(block-level)、文件级别(file-level)和对象级别(object-level),应用服务器将内存中的数据通过文件、对象、块的形式存储到硬盘等持久化介质中。
由于内存和硬盘的访问差异化,硬盘不支持内存语义的访问,持久化上述三种软件结构进行持久化过程中不可避免的有协议转换开销。比如块级别存储的应用服务器通过iSCSI或其他协议与持久化介质进行通信,文件级别存储的应用服务器通过网络文件系统(network file system,NFS)、通用互联网文档系统(common internet file system,CIFS)、服务器信息块(server message block,SMB)等文件访问协议与持久化介质进行通信,对象级别存储的应用服务器通过超文本传输协议(hyper text transfer protocol,HTTP)或其他网络协议与持久化介质进行通信。协议转换开销不仅消耗系统资源,而且影响应用服务器持久化数据的效率。
非易失性双列直插式内存模块(non-volatile dual in-line memory module,NVDIMM)是一种特殊的内存,由于其容量大且具有掉电不易失的特性,数据可以直接存储至NVDIMM进行数据持久化,无需再写入硬盘中,从而避免数据持久化时的协议转换开销,提高数据持久化的效率,被广泛应用在内存数据库、大数据实时分析、大模型AI训练等场景。
但是,NVDIMM仍然存在很多性能问题,比如NVDIMM通常以内存条的形式插在主机的内存槽中,主机的内存槽位数量有限,容量扩展性差,且主机发生故障后,插入主机内存槽中的NVDIMM无法被其他主机访问,甚至完全丢失,单机可靠性很差。
综上可知,当前的存储系统的三种访问模型存在协议转换开销,影响存储系统的访问效率,而没有协议转换开销的NVDIMM性能也有限,存在扩展性差、单机可靠性差等问题。
为了解决上述问题,本申请提供了一种存储系统,该系统中适配卡通过总线与主机建立通信连接,通过网络与存储节点建立通信连接,适配卡可根据存储节点的第二内存空间大小,向主机提供支持内存语义访问的第一内存空间,主机在进行数据持久化时,可以通过内存语义请求向第一内存空间写入数据,适配卡响应于该请求,通过远程直接数据存取(remote direct memory access,RDMA)的方式将数据持久化至存储节点的第二内存空间中,使得主机进行数据持久化时无需再进行协议转换,从而提高存储系统的访问效率,同时,适配卡不占用主机的内存槽位,容量扩展性更高,且主机发生故障后,存储节点可以与其他主机上的适配卡建立通信连接,存储节点中的数据仍可以被其他主机访问,单机可靠性得以提高。
如图1所示,图1是本申请提供的一种存储系统,该存储系统可包括主机100、适配卡200和存储节点300,其中,适配卡200与主机100内部的总线140连接,适配卡200与存储节点300通过网络400进行通信。其中,主机100的数量、适配卡200和存储节点300的数量可以是一个或者多个,一个主机100可以与多个适配卡200连接,一个适配卡也可以与多个存储节点300连接,图1以2个主机100、2个适配卡200和3个存储节点300为例进行了举例说明,本申请不对主机100、存储节点300和适配卡200的数量进行具体限定。
主机100可以是物理服务器,比如X86、ARM服务器等等,也可以是基于通用的物理服务器结合网络功能虚拟化(network functions virtualization,NFV)技术实现的虚拟机(virtual machine,VM),虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,本申请不作具体限定。
适配卡200可包括接口和处理器,其中,处理器可包括集成电路和/或器件的。可选地,该适配卡200可以是处理器分散处理单元(data processing unit,DPU)、网络处理器(neural-network processing unit,NPU)、主机总线适配器(host bus adapter,HBA)等,本申请不作具体限定。适配卡200也可以包括主板,又称为印刷电路板(printed circuitboards,PCB),主板上印制有上述芯片。接口,可以包括前端接口和后端接口,其中,前端接口用于与主机100通信,后端接口用于与存储节点通信。
具体实现中,适配卡200可通过总线140与主机100连接,即适配卡200的前端接口通过总线与主机100通信。该总线140可以是快捷外围部件互连标准(PeripheralComponent Interconnect Express,PCIe)总线,或扩展工业标准结构(extended industrystandard architecture,EISA)总线、统一总线(unified bus,Ubus或UB)、计算机快速链接(compute express link,CXL)总线、缓存一致互联协议(cache coherent interconnectfor accelerators,CCIX)总线、Z世代GenZ总线等。总线140可以分为地址总线、数据总线、控制总线、电源总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线140。
具体实现中,适配卡可以以插卡的方式,插入主机100的总线接口中,比如插入PCI总线接口、CXL总线接口等等,也可以在加工时与主机100的其他部件、芯片或组件统一印制在主机100的主板上,本申请不对此进行限定。
存储节点300可以是物理服务器,比如X86、ARM服务器等等;也可以是基于通用的物理服务器结合NFV技术实现的虚拟机,虚拟机指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,本申请不作具体限定;还可以是具有存储功能的存储设备或存储阵列,本申请不作具体限定。
具体实现中,存储节点300可通过网络400与适配卡200进行通信连接。其中,网络400可以是RDMA网络,适配卡200上的网卡210可以通过RDMA技术将数据写入存储节点300的网卡310中,或者通过RDMA技术从存储节点300读取数据至适配卡200上的网卡210中,实现存储节点300和适配卡200之间的数据通信。
进一步地,主机100、适配卡200和存储节点300可划分为多个单元模块,示例性地,如图1所示,主机100可包括处理器110、第一内存空间120、内存130和总线140,适配卡200可包括网卡210,存储节点300可包括网卡310以及第二内存空间320,应理解,图1为了描述方便,只显示了主机100、适配卡200和存储节点300内部的处理器和内存等硬件资源,在具体实现时,主机100、适配卡200和存储节点300还可包括硬盘等硬件资源,以及需要运行的操作系统、应用程序等软件资源,这里不展开说明。
主机100中的处理器110可以由至少一个通用处理器构成,例如中央处理器(central processing unit,CPU),或者CPU和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC)、可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD)、现场可编程逻辑门阵列(field-programmable gate array,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合。处理器110用于执行各种类型的数字存储指令,例如处理器110可用于执行存储在内存130中的代码,它能使主机100提供多种服务。
适配卡200中的网卡210和存储节点300中的网卡310可以是具有RDMA功能的智能网卡,比如远程直接内存访问网卡(RDMA enabled nic,RNIC),也可以是支持无限带宽功能(InfiniBand,IB)的网卡或者交换机,本申请不作具体限定。
主机100中的内存130可以是易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)、动态随机存储器(dynamic RAM,DRAM)、静态随机存储器(static RAM,SRAM)、同步动态随机存储器(synchronous dynamicRAM,SDRAM)、双倍速率同步动态随机存储器(doubledata rateRAM,DDR)、高速缓存(cache)等等,内存130还可以包括上述种类的组合。
存储节点300中的第二内存空间320可以是持久化存储设备的存储空间,该持久化存储设备可以是NVDIMM,比如DDR、存储级内存(storage class memory,SCM)、计算机闪存设备(NAND flash memory,NAND)等等,主机100中的第一内存空间120是存储节点300中的第二内存空间320通过软件方式形成的映射。简单来说,主机100请求将数据持久化至第一内存空间120时,数据可通过适配卡200远程写入存储节点300的第二内存空间320中,其中,适配卡200包括第二内存空间320的物理地址与第一内存空间120的地址之间的第一对应关系。
在本申请实施例中,适配卡200通过总线与主机100建立连接,通过网络400与存储节点建立连接后,适配卡200可通过本申请提供的存储访问配置方法,向主机100提供支持内存语义访问的存储空间,也就是第一内存空间120,再建立存储空间与存储节点300的持久化存储设备的物理地址的对应关系,其中,上述持久化存储设备可以是第二内存空间320,对应关系可以是上述第一对应关系。适配卡200可以先获取与其相连的存储节点300上的第二内存空间320的规格信息,然后根据该规格信息向主机100提供第一内存空间120。支持内存语义访问的内存型存储设备可以是支持内存语义访问的字符设备,当然也可以是支持XCL、GenZ等内存访问协议的其他内存型存储设备,本申请不对此进行具体限定。
具体实现中,一个主机100可以插有多个适配卡200,每个适配卡可以与一个或者多个存储节点300建立通信连接,每个适配卡200可以为主机100提供一个第一内存空间,该第一内存空间可以是一个存储节点上一个第二内存空间的映射,也可以是一个存储节点上多个第二内存空间的映射,还可以是不同存储节点上不同第二内存空间的映射,本申请不对此进行限定。
举例来说,如图2所示,图2是本申请提供的存储系统在一应用场景下的结构示意图,如图2所示,主机1的总线接口插入2个适配卡,其中,适配卡1与存储节点1的第二内存空间11和第二内存空间12连接,适配卡1为主机1提供的第一内存空间1是第二内存空间11和第二内存空间12的映射。适配卡2与存储节点1的第二内存空间13以及存储节点2的第二内存空间2连接,适配卡2为存储节点1提供的第一内存空间2是第二内存空间13和第二内存空间2的映射。
需要说明的,图2中第二内存空间可以是一个完整的NVDIMM提供的存储空间,也可以是一个NVDIMM提供的部分存储空间,第二内存空间11和第二内存空间12可以是存储节点内同一个NVDIMM划分出的存储空间,也可以是不同的NVDIMM划分出的存储空间,比如第二内存空间11属于NVDIMM1,第二内存空间12属于NVDIMM2,本申请不对此进行具体限定。
可以理解的,主机可以通过内存语义的方式访问第一内存空间120,相比于块级别、文件级别和对象级别的访问方式,无需再将数据从内存中持久化至硬盘中,从而免除数据读写时的协议开销,使得数据读写效率更高。同时,相比于将NVIDIMM直接插入主机的方式,本申请的存储系统不占用内存插槽,不影响主机100本地内存130的容量,不抢占本地内存130的内存带宽,且可以有更强的容量扩展性。并且,即使与适配卡200相连的存储节点发生故障,适配卡200可以与其他存储节点300建立RDMA通信连接,主机100的业务不会产生影响,同样地,如果主机100发生故障,存储节点300可以与其他主机100上的适配卡200建立通信连接,由其他主机100接管存储节点300的第二内存空间320中的数据,保证数据不会由于主机故障而造成数据丢失。因此,本申请的存储系统具有更快的读写效率、更强的容量扩展性、更高的数据可靠性和多机共享访问能力。
需要说明的,本申请的存储系统可以与块级别、文件级别和对象级别的其他存储方式共存,简单来说,存储节点还可包括存储介质,该存储介质用于进行块级别、文件级别和对象级别的存储方式进行持久化存储,主机100可以根据业务需求,将不同的数据使用不同的方式进行数据的持久化,本申请的存储系统在实际部署时可以与现有存储系统共存,无需对现有存储系统进行较大的改动,本申请的存储系统的适应性好,为用户提供了更多形态的存储方式,提高用户的使用体验。
进一步地,主机100中的应用程序可以通过内存映射方式加载和卸载上述第一内存空间120。其中,内存映射指的是将第一内存空间120的物理地址空间映射到应用程序的进程的虚拟内存空间,使得应用程序的进程可以对第一内存空间120进行读取和修改,提高应用程序的处理效率。具体实现中,可通过内存映射函数mmap以实现第一内存空间120的加载,通过munmap函数来删除映射关系实现第一内存空间120的卸载,或者使用其他方式,本申请不对此进行限定。
具体地,主机100进行内存映射后可获得第一内存空间的地址与应用程序的虚拟内存地址之间的第二对应关系,该第二对应关系可通过页表进行存储。主机100请求将数据写入第一内存空间时,可以先根据应用程序需要访问的第一虚拟内存地址以及页表中记录的第二对应关系,确定第一虚拟内存地址对应的第一地址,然后向适配卡发送第一地址的写入请求,第一地址的写入请求包括主机请求写入第一内存空间的数据,适配卡200响应于第一地址的写入请求,通过RDMA的方式将数据写入存储节点的第二内存空间的第二地址,并更新第一对应关系,使得第一对应关系中第一地址与第二地址对应。
具体实现中,主机100内的页表包括多个页面(page),部分页面的虚拟地址与第一内存空间120的一段物理地址空间存在映射关系,部分页面的虚拟地址与本地的内存130的一段物理地址空间存在映射关系。使得主机100能够进行远端存储寻址,且寻址方式为字节级寻址,免去协议转换开销。应理解,内存130通常以页表的方式进行远端存储寻址,第一内存空间120与本地的内存130统一通过页表进行远端存储寻址,可以避免对主机100进行较大改动,使得本申请提供的存储系统的部署更加便捷。
具体实现中,由于适配卡200向主机100提供的第一内存空间的容量通常会远高于主机100本地的内存130的容量,主机100在进行内存映射时,页表中的每一个页面的页面容量越小,内存空间被切分的粒度越细,维护开销随之会变大,因此上述多个页面可包括大页和小页,比如大页容量为2MB,小页容量为4KB,当然还可以是其他数值规格来区分大页和小页,本申请不作具体限定。主机100进行内存映射时,可以将大页的虚拟地址与存储容量较大的第一内存空间120的第一地址之间进行映射,将小页的虚拟地址与存储容量较小的内存130的物理地址之间进行映射,从而获得第一映射关系。其中,大页的虚拟地址与第一地址之间可以进行全映射,使得进程访问时不产生缺页异常。小页的虚拟地址与内存130的地址之间可以进行全映射,也可以不进行全映射,本申请不作具体限定,若不进行全映射,内存130可能会产生缺页异常,但是可通过分配内存130的物理页的方式解决该问题,这里不展开赘述。
应理解,主机100通过页表对第一内存空间120和内存130进行统一管理,使得主机100在访问第一内存空间120的大页1时,可以根据上述第一映射关系,确定大页1对应的第一地址1,然后向适配卡200发送携带有上述第一地址1的访问请求,适配卡200可以根据访问请求中的物理地址,向物理地址对应的存储节点的第二内存空间320发送该访问请求,以供存储节点对第二内存空间320执行相应的读写操作。该方式可以实现主机100的高效字节级别寻址,数据可直接写入持久化内存,相比于其他持久化存储方式,比如对象存储、块存储以及文件存储,免去了从内存写入硬盘时所需的协议转换开销,提高数据持久化的效率。
举例来说,如图3所示,图3是本申请提供的内存映射关系的示意图,主机100中的页表包括大页410和小页420,其中,每个大页410的虚拟地址与第一内存空间120的物理地址之间存在映射关系,每个小页420的虚拟地址与内存130的物理地址之间存在映射关系。
在该架构下,应用程序的进程430对小页420进行读写操作时,实际是对内存130进行读写操作,比如数据会写入内存130中。对大页410进行读写操作时,会先获取大页410对应的第一内存空间的物理地址,然后向适配卡200发送携带有上述物理地址的访问请求,该访问请求可以是数据读取请求,也可以是数据写入请求,适配卡200可以根据访问请求中的物理地址,向物理地址对应的存储节点的第二内存空间320发送该访问请求,存储节点的第二内存空间320接收到该访问请求后,可以对该访问请求进行处理,对第二内存空间320执行相应的读写操作。应理解,图3用于举例说明,本申请不对大页和小页的数量进行限定。
在一实施例中,适配卡200可以配置有缓存,用于缓存主机100写入第一内存空间120中的数据,如图4所示,图4是本申请提供的存储系统在另一应用场景下的结构示意图,适配卡200包括网卡210、处理器220、缓存230和索引240。其中,网卡210可参考图1实施例,这里不重复赘述。
处理器220可以由至少一个通用处理器构成,例如CPU,或者CPU和硬件芯片的组合。上述硬件芯片可以是ASIC、PLD或其组合。上述PLD可以是CPLD、FPGA、GAL或其任意组合。处理器220用于执行各种类型的数字存储指令,使得适配卡200实现各种功能。
主机100向第一内存空间120的第一地址写入数据时,数据可以先写入适配卡200的缓存230中,当缓存230中的数据量达到阈值,再统一通过RDMA的方式写入第二内存空间320的第二地址中,从而减少RDMA次数,提高适配卡200和存储节点300之间的通信效率。应理解,适配卡200将缓存230中的数据统一写入RDMA的操作可以是当数据量达到阈值的情况下执行,也可以以固定频率执行,还可以是固定时间点执行,或者其他预设条件满足的情况下执行,本申请不对此进行限定。
其中,适配卡200中的第一对应关系包括第一地址与第二内存空间320的第二地址之间的对应关系,还包括第一地址与缓存230的缓存地址之间的对应关系,简单来说,若第一地址对应的大页存储于缓存230的缓存地址中,那么第一对应关系记录有第一地址与缓存地址之间的对应关系,若第一地址对应的大页已被适配卡200通过RDMA的方式写入第二内存空间320的第二地址,那么第一对应关系记录有第一地址与第二地址之间的对应关系。
具体实现中,第一对应关系可以以索引240的方式存储于适配卡200中,该索引240具体可以是适配卡200的内存管理单元(memory management unit,MMU)的页表,其中,MMU可以是处理器220内的单元模块,MMU页表可以记录地址之间映射规则的集合,在本申请实施例中,适配卡200中的MMU页表记录有上述第一对应关系。
在一实施例中,数据写入时,适配卡200可以根据适配卡的缓存剩余空间,为待写入的大页分配缓存地址,并更新索引240,记录待写入的大页的第一地址与新分配的缓存地址之间的映射关系。并且,当缓存中数据量达到阈值后,可以统一将缓存中的数据以RDMA的方式写入存储节点300的第二内存空间320中,再更新索引240,记录写入第二内存空间320的大页的第一地址与第二地址之间的映射关系。
举例来说,如图4所示,若主机100请求将数据写入第一内存空间120中的大页P1,且主机100根据页表确定大页P1对应的第一地址为A1,主机100向适配卡200发送携带有第一地址A1的数据读取请求,适配卡200可以响应于该数据读取请求,将数据写入缓存地址A1’,并更新索引使得第一地址与缓存地址A1’对应。假设适配卡200将第一地址A2对应的数据通过RDMA的方式被远程写入存储节点300的第二内存空间320的第二地址A2’时,适配卡200可以更新索引使得第一地址A2与第二地址A2’对应。应理解,图4用于举例说明,本申请不对索引的具体形式进行限定。
在一实施例中,数据读取时,主机100向适配卡200发送携带有第一地址的读取请求后,适配卡200可以根据上述索引确定第一地址对应的目标页面是否存储于缓存230中,若适配卡200的缓存命中主机需要读取的目标页面,适配卡200可以将该目标页面返回给主机100,从而提高数据读取的效率。若适配卡200的缓存230未命中主机100需要访问的目标页面,适配卡200可以向主机100返回命中失败的信息,具体可以是一个硬中断请求,然后通过网卡210发起RDMA远程读取目标页面的请求,适配卡200读取到该目标页面至缓存230中,更新索引240,记录该页面的第一地址对应的缓存地址,当主机100再次向缓存230发送该目标页面的访问请求后,适配卡200可以根据索引240,读取该页面返回至主机100的寄存器中。
可选地,主机100可维护重试队列,该重试队列用于存储缓存230命中失败的访问请求以及该请求的上下文信息,该上下文信息可以记录有命中失败的访问请求的一些具体信息,比如要读取的数据是什么,该数据从哪里获取,获取后数据要返回到哪里等等,主机100可定时或以一定频率从重试队列中取出读取请求和对应的上下文信息进行重试,若命中目标页面,则将该读取请求从重试队列删除,若不命中,则等待下一次重试,直至命中目标页面。
举例来说,如图4所示,若主机100请求读取第一内存空间120中的大页P2,且根据页表确定大页P2对应的第一地址为A2,主机100向适配卡200发送携带有第一地址A2的读取请求,适配卡200可以响应于该读取请求,根据索引240确定第一地址A对应第二地址A2’,则表示缓存中没有存储该大页P2,该大页P2已被持久化至第二内存空间320的第二地址A2’处,适配卡200可以向主机100发送硬中断请求,通知主机100本次页面读取失败,然后向存储节点300发送携带有第二地址A2’的数据读取请求,存储节点300通过RMDA技术将大页P2写入适配卡200的缓存230中,并更新索引240,记录大页P2对应的第一地址A2与缓存地址A2’之间的对应关系。
同时,主机100接收到适配卡200发送的硬中断请求后,将命中失败的读取请求放入重试队列中,主机100可以定时执行重试队列中的各个请求,重新向适配卡200发送携带有第一地址A2的读取请求,此时大页P2已被写入缓存地址A2’对应的缓存空间内,适配卡200可以根据更新后的索引240读取大页P2并将其返回至主机100。
可以理解的,CPU接收到命中失败的信息后,可以将命中失败的读取请求以及该请求的上下文信息放入重试列表,CPU可以将用于处理该读取请求的相关资源让出,用于处理其他事物,而无需长时间等待数据的返回,从而提高CPU资源的利用率。并且,主机100可以在其他时间从重试列表获取命中失败的读取请求以及该请求的上下文信息,重新向适配卡200发送该读取请求,由于上下文信息的存在,主机100重发读取请求时,无需再重新进入内核进行地址关联等内存访问缺页处理的流程,从而节省CPU资源。
可选地,适配卡200的CPU还可以设置有预取器(prefetching),预取器可以预测应用程序即将访问的预取数据,然后将预取数据存储至缓存中,从而提高存储系统的访问效率。举例来说,假设大页P1是预取器预测到应用程序即将访问的预取数据,那么在缓存中的数据统一通过RDMA写入存储节点300的第二内存空间320时,大页P1将会保留在缓存中,从而在应用程序访问大页P1时,可以直接存适配卡200的缓存230中读取该数据。具体实现中,上述预取器可以通过处理器中专门的硬件来实现的,该硬件监控正在执行程序中请求的指令或数据,识别下一个程序需要的预取数据。或者,上述预取器可以通过编译器分析代码然后在程序编译的过程中插入预取指令(prefetech)。这样程序执行过程中,在插入预取指令的位置就会进行预取的动作。应理解,上述举例用于说明,本申请不对预取器的具体实现方式进行限定。
可选地,适配卡200的CPU还可以设置有冷页淘汰逻辑,若页面长时间没有被主机100访问,适配卡200可以将该页面通过RDMA的方式写入存储节点300中,节省缓存空间,同理,若热页被主机100访问的频次较高,当缓存内的数据量达到阈值需要统一写入存储节点300时,热页可以保留在缓存中,提高缓存命中率,进而提高主机100的数据读取效率。
综上可知,本申请提供的存储系统中,适配卡通过总线与主机建立通信连接,通过网络与存储节点建立通信连接,适配卡可根据存储节点的第二内存空间大小,向主机提供支持内存语义访问的第一内存空间,主机在进行数据持久化时,可以通过内存语义请求向第一内存空间写入数据,适配卡响应于该请求,通过远程RDMA的方式将数据持久化至存储节点的第二内存空间中,使得主机进行数据持久化时无需再进行协议转换,从而提高存储系统的访问效率,同时,适配卡不占用主机的内存槽位,容量扩展性更高,且主机发生故障后,存储节点可以与其他主机上的适配卡建立通信连接,存储节点中的数据仍可以被其他主机访问,单机可靠性得以提高。
图5是本申请提供的一种数据存储方法的步骤流程示意图,该方法可应用于如图1~图4所示的数据存储系统中,如图5所示,该方法可包括以下步骤:
步骤S510:适配卡接收主机请求写入第一内存空间的第一地址的数据,其中,第一内存空间是适配卡向主机提供的支持内存语义访问的存储空间,第一地址是主机根据第二对应关系和应用程序的第一虚拟内存地址确定的。
具体实现中,第一内存空间是适配卡向主机提供的支持内存语义访问的存储空间。主机可以通过内存语义的方式访问第一内存空间,相比于块级别、文件级别和对象级别的访问方式,无需再将数据从内存中持久化至硬盘中,从而免除数据读写时的协议开销,使得数据读写效率更高。
在一实施例中,主机中的应用程序可以通过内存映射方式加载和卸载上述第一内存空间。其中,内存映射指的是将第一内存空间的物理地址空间映射到应用程序的进程的虚拟内存空间,使得应用程序的进程可以对第一内存空间进行读取和修改,提高应用程序的处理效率。具体实现中,可通过内存映射函数mmap以实现第一内存空间的加载,通过munmap函数来删除映射关系实现第一内存空间的卸载,或者使用其他方式,本申请不对此进行限定。
具体地,主机进行内存映射后可获得第一内存空间的地址与应用程序的虚拟内存地址之间的第二对应关系,该第二对应关系可通过页表进行存储。主机请求将数据写入第一内存空间时,可以先根据应用程序需要访问的第一虚拟内存地址以及页表中记录的第二对应关系,确定第一虚拟内存地址对应的第一地址,然后向适配卡发送第一地址的写入请求。
具体实现中,主机内的页表包括多个页面,部分页面的虚拟地址与第一内存空间的一段物理地址空间存在映射关系,部分页面的虚拟地址与本地内存的一段物理地址空间存在映射关系。使得主机能够进行远端存储寻址,且寻址方式为字节级寻址,免去协议转换开销。应理解,内存通常以页表的方式进行远端存储寻址,第一内存空间与本地内存统一通过页表进行远端存储寻址,可以避免对主机进行较大改动,使得本申请提供的存储系统的部署更加便捷。
具体实现中,由于适配卡向主机提供的第一内存空间的容量通常会远高于主机本地的内存130的容量,主机100在进行内存映射时,页表中的每一个页面的页面容量越小,内存空间被切分的粒度越细,维护开销随之会变大,因此上述多个页面可包括大页和小页,比如大页容量为2MB,小页容量为4KB,当然还可以是其他数值规格来区分大页和小页,本申请不作具体限定。主机进行内存映射时,可以将大页的虚拟地址与存储容量较大的第一内存空间的第一地址之间进行映射,将小页的虚拟地址与存储容量较小的本地的内存的物理地址之间进行映射,从而获得第一映射关系。其中,大页的虚拟地址与第一地址之间可以进行全映射,使得进程访问时不产生缺页异常。小页的虚拟地址与内存的地址之间可以进行全映射,也可以不进行全映射,本申请不作具体限定,若不进行全映射,内存可能会产生缺页异常,但是可通过分配内存的物理页的方式解决该问题,这里不展开赘述。
应理解,主机通过页表对第一内存空间和内存进行统一管理,使得主机在访问第一内存空间的大页1时,可以根据上述第一映射关系,确定大页1对应的第一地址1,然后向适配卡发送携带有上述第一地址1的访问请求。该方式可以实现主机的高效字节级别寻址,数据可直接写入持久化内存,相比于其他持久化存储方式,比如对象存储、块存储以及文件存储,免去了从内存写入硬盘时所需的协议转换开销,提高数据持久化的效率。具体可参考图3实施例的举例描述,这里不重复赘述。
步骤S520:适配卡将数据写入存储节点的第二内存空间中,其中,适配卡包括第二内存空间的物理地址与第一内存空间的地址之间的第一对应关系。
具体实现中,适配卡将数据通过远程RDMA的方式写入存储节点的第二内存空间的第二地址,并更新第一对应关系,使得第一对应关系中第一地址与第二地址对应。应理解,适配卡通过RDMA的方式与存储节点进行通信连接,如果与适配卡相连的存储节点发生故障,适配卡可以与其他存储节点建立RDMA通信连接,使得主机的业务不会产生影响。同样地,如果主机发生故障,存储节点可以与其他主机上的适配卡建立通信连接,由其他主机管存储节点中的数据,保证数据不会由于主机故障而造成数据丢失。
在一实施例中,适配卡包括缓存,第一对应关系包括第一内存空间的地址与缓存之间的对应关系,以及第一内存空间的地址与第二内存空间的物理地址之间的对应关系。在适配卡接收到存储节点发送的第二地址的写入请求时,适配卡可先将数据写入缓存的缓存地址中,更新第一对应关系,使得第一对应关系中第一地址与缓存地址对应,然后在缓存中的数据达到阈值的情况下,再卡将数据通过RDMA的方式写入存储节点的第二内存空间的第二地址,更新第一对应关系,更新后的第一对应关系中第一地址与第二地址对应。
可选地,上述第一对应关系可以以索引的方式存储于适配卡中,该索引具体可以是适配卡的MMU的页表,其中,MMU是一种负责CPU的内存访问请求的计算机硬件,MMU页表可以记录地址之间映射规则的集合,在本申请实施例中,适配卡中的MMU页表记录有上述第一对应关系。
具体实现中,数据写入时,适配卡的MMU可以根据适配卡的缓存剩余空间,为待写入的大页分配缓存地址,并更新索引,记录待写入的大页的第一地址与新分配的缓存地址之间的映射关系。并且,当缓存中数据量达到阈值后,可以统一将缓存中的数据以RDMA的方式写入存储节点的第二内存空间中,再更新索引,记录写入第二内存空间的大页的第一地址与第二地址之间的映射关系。具体可参考前述图4实施例中关于缓存和索引的描述,这里不再重复赘述。
在一实施例中,可选地,适配卡接收主机发送的第一地址的读取请求时,适配卡可以根据第一对应关系确定第一地址对应的地址,在对应的地址为缓存地址时,适配卡可根据该缓存地址对第一地址的读取请求进行处理,将数据从缓存地址中读取并返回至主机,从而提高主机数据读取的效率。
可选地,在第一地址对应的地址为第二内存空间的第二地址时,适配卡向主机返回缓存未命中消息,向存储节点发送第二地址的读取请求,然后接收存储节点返回的数据,将数据存储至缓存,并更新第一对应关系,更新后的第一对应关系中第一地址与第二地址对应。
在一实施例中,主机包括重试队列,该重试队列包括未命中的数据读取请求和未命中的数据读取请求的上下文信息,该重试队列用于供主机根据上下文信息向适配卡重新发送未命中的数据读取请求。其中,该上下文信息可以记录有命中失败的访问请求的一些具体信息,比如要读取的数据是什么,该数据从哪里获取,获取后数据要返回到哪里等等,主机可定时或以一定频率从重试队列中取出读取请求和对应的上下文信息进行重试,若命中目标页面,则将该读取请求从重试队列删除,若不命中,则等待下一次重试,直至命中目标页面。
具体实现中,上述缓存未命中消息具体可以是一个硬中断请求,主机接收到该硬中断请求后,将命中失败的读取请求放入重试队列中,从而让出用于处理该读取请求相关资源,将相关资源用于处理其他事物,而无需长时间等待数据的返回,从而提高CPU资源的利用率。并定时执行重试队列中的各个请求,重新向适配卡发送携带有第一地址的读取请求,直至适配卡的缓存命中该数据。可以理解的,由于上下文信息的存在,主机重发读取请求时,无需再重新进入内核进行地址关联等内存访问缺页处理的流程,从而节省CPU资源。
可选地,适配卡的CPU还可以设置有预取器,预取器可以预测应用程序即将访问的预取数据,然后将预取数据存储至缓存中,从而提高存储系统的访问效率。举例来说,假设大页P1是预取器预测到应用程序即将访问的预取数据,那么在缓存中的数据统一通过RDMA写入存储节点的第二内存空间时,大页P1将会保留在缓存中,从而在应用程序访问大页P1时,可以直接存适配卡的缓存中读取该数据。具体实现中,上述预取器可以通过处理器中专门的硬件来实现的,该硬件监控正在执行程序中请求的指令或数据,识别下一个程序需要的预取数据。或者,上述预取器可以通过编译器分析代码然后在程序编译的过程中插入预取指令。这样程序执行过程中,在插入预取指令的位置就会进行预取的动作。应理解,上述举例用于说明,本申请不对预取器的具体实现方式进行限定。
可选地,适配卡的CPU还可以设置有冷页淘汰逻辑,若页面长时间没有被主机访问,适配卡可以将该页面通过RDMA的方式写入存储节点中,节省缓存空间,同理,若热页被主机访问的频次较高,当缓存内的数据量达到阈值需要统一写入存储节点时,热页可以保留在缓存中,提高缓存命中率,进而提高主机的数据读取效率。
在一实施例中,在步骤S510之前,适配卡可执行本申请提供的存储访问配置方法,该方法包括以下步骤:向主机提供支持内存语义访问的存储空间,然后建立与存储空间和存储节点的持久化存储设备的物理地址的对应关系,换句话说,适配卡向主机提供上述第一内存空间,然后建立第一内存空间与第二内存空间的物理地址之间的第一对应关系。配置成功后,适配卡可执行步骤S510、步骤S520实现本申请提供的数据存储功能。
综上可知,本申请提供的存储方法中,适配卡通过总线与主机建立通信连接,通过网络与存储节点建立通信连接,适配卡可根据存储节点的第二内存空间大小,向主机提供支持内存语义访问的第一内存空间,主机在进行数据持久化时,可以通过内存语义请求向第一内存空间写入数据,适配卡响应于该请求,通过远程RDMA的方式将数据持久化至存储节点的第二内存空间中,使得主机进行数据持久化时无需再进行协议转换,从而提高存储系统的访问效率,同时,适配卡不占用主机的内存槽位,容量扩展性更高,且主机发生故障后,存储节点可以与其他主机上的适配卡建立通信连接,存储节点中的数据仍可以被其他主机访问,单机可靠性得以提高。
图6是本申请提供的一种适配卡的结构示意图,该适配卡可以是图1~图5中的适配卡200。该适配卡200可包括接收单元610、写入单元620和读取单元630。
接收单元610,用于接收主机请求写入第一内存空间的第一地址的数据,其中,第一内存空间是适配卡向主机提供的支持内存语义访问的存储空间;
写入单元620,用于将数据写入存储节点的第二内存空间中,适配卡包括第二内存空间的物理地址与第一内存空间的地址之间的第一对应关系。
在一实施例中,写入单元620,用于将数据通过远程直接数据存取RDMA的方式写入存储节点的第二内存空间的第二地址,第一对应关系中第一地址与第二地址对应。
在一实施例中,适配卡包括缓存,第一对应关系包括第一内存空间的地址与缓存之间的对应关系,以及,第一内存空间的地址与第二内存空间的物理地址之间的对应关系。
在一实施例中,写入单元620,用于将数据写入缓存的缓存地址中,更新第一对应关系,使得第一对应关系中第一地址与缓存地址对应;写入单元620,用于在缓存中的数据达到阈值的情况下,将数据通过RDMA的方式写入存储节点的第二内存空间的第二地址,更新第一对应关系,使得第一地址与第二地址对应。
在一实施例中,适配卡200包括读取单元630,接收单元610,用于接收主机发送的第一地址的读取请求;读取单元630,用于根据第一对应关系确定第一地址对应的地址;读取单元630,用于在第一地址对应的地址为缓存地址的情况下,适配卡根据缓存地址对第一地址的读取请求进行处理。
在一实施例中,读取单元630,用于在第一地址对应的地址为第二内存空间的第二地址的情况下,向主机返回缓存未命中消息;读取单元630,用于向存储节点发送第二地址的读取请求;接收单元610,用于接收存储节点发送的数据,将数据存储至缓存并更新第一对应关系。
在一实施例中,第二内存空间是非易失性双列直插式内存模块NVDIMM。总线包括PCI总线、CXL总线、GenZ总线中的一种或者多种。
在一实施例中,适配卡200还可包括配置单元,配置单元用于实现前述内容中的存储访问配置方法,向主机提供支持内存语义访问的存储空间,建立与存储空间和存储节点的持久化存储设备的物理地址的对应关系,换句话说,适配卡向主机提供上述第一内存空间,然后建立第一内存空间与第二内存空间的物理地址之间的第一对应关系,应理解,图6是本申请提供的适配卡200的一种示例性划分方式,具体实现中,本申请提供的适配卡200还可包括更多或者更少的单元模块,本申请不作具体限定。
综上可知,本申请提供的适配卡通过总线与主机建立通信连接,通过网络与存储节点建立通信连接,适配卡可根据存储节点的第二内存空间大小,向主机提供支持内存语义访问的第一内存空间,主机在进行数据持久化时,可以通过内存语义请求向第一内存空间写入数据,适配卡响应于该请求,通过远程RDMA的方式将数据持久化至存储节点的第二内存空间中,使得主机进行数据持久化时无需再进行协议转换,从而提高存储系统的访问效率,同时,适配卡不占用主机的内存槽位,容量扩展性更高,且主机发生故障后,存储节点可以与其他主机上的适配卡建立通信连接,存储节点中的数据仍可以被其他主机访问,单机可靠性得以提高。
图7是本申请提供的一种计算设备的结构示意图,该计算设备700是图1至图6实施例中的适配卡200。
进一步地,计算设备700包括处理器701、存储单元702和通信接口703,其中,处理器701、存储单元702和通信接口703通过总线704进行通信,也通过无线传输等其他手段实现通信。
处理器701由至少一个通用处理器构成,例如CPU、NPU或者CPU和硬件芯片的组合。上述硬件芯片是专用集成电路ASIC、PLD或其组合。上述PLD是CPLD、FPGA、GAL或其任意组合。处理器701执行各种类型的数字存储指令,例如存储在存储单元702中的软件或者固件程序,它能使计算设备700提供较宽的多种服务。
具体实现中,作为一种实施例,处理器701包括一个或多个CPU,例如图7中所示的CPU0和CPU1。
在具体实现中,作为一种实施例,计算设备700也包括多个处理器,例如图7中所示的处理器701和处理器705。这些处理器中的每一个可以是一个单核处理器(single-CPU),也可以是一个多核处理器(multi-CPU)。这里的处理器指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
存储单元702用于存储代码,并由处理器701来控制执行,以执行上述图1-图6中任一实施例中适配卡的处理步骤。代码中包括一个或多个软件单元。上述一个或多个软件单元是图6实施例中的接收单元和写入单元,其中接收单元用于接收主机请求写入第一内存空间的第一地址的数据,写入单元用于将数据写入存储节点的第二内存空间的第二地址,具体可用于执行图5实施例描述的数据存储方法和存储访问配置方法,这里不再进行赘述。
存储单元702包括只读存储器和随机存取存储器,并向处理器701提供指令和数据。存储单元702还包括非易失性随机存取存储器。例如,存储单元702还存储设备类型的信息。
存储单元702是易失性存储器或非易失性存储器,或包括易失性和非易失性存储器两者。其中,非易失性存储器是只读存储器(read-only memory,ROM)、编程只读存储器(programmable ROM,PROM)、擦除编程只读存储器(erasable PROM,EPROM)、电擦除编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器是随机存取存储器(randomaccess memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data date SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhancedSDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。还是硬盘(hard disk)、U盘(universalserial bus,USB)、闪存(flash)、SD卡(secure digital memory Card,SD card)、记忆棒等等,硬盘是硬盘驱动器(hard disk drive,HDD)、固态硬盘(solid state disk,SSD)、机械硬盘(mechanical hard disk,HDD)等,本申请不作具体限定。
通信接口703为有线接口(例如以太网接口),为内部接口(例如高速串行计算机扩展总线(Peripheral Component Interconnect express,PCIe)总线接口)、有线接口(例如以太网接口)或无线接口(例如蜂窝网络接口或使用无线局域网接口),用于与其他服务器或单元进行通信,具体实现中,通信接口703用于接收报文,以供处理器701或处理器705对该报文进行处理。
总线704是快捷外围部件互联标准(Peripheral Component InterconnectExpress,PCIe)总线,或扩展工业标准结构(extended industry standard architecture,EISA)总线、统一总线(unified bus,Ubus或UB)、计算机快速链接(compute express link,CXL)、缓存一致互联协议(cache coherent interconnect for accelerators,CCIX)等。总线704分为地址总线、数据总线、控制总线等。
总线704除包括数据总线之外,还包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线704。
需要说明的,图7仅仅是本申请实施例的一种能的实现方式,实际应用中,计算设备700还包括更多或更少的部件,这里不作限制。关于本申请实施例中未示出或未描述的内容,参见前述图1-图6实施例中适配卡的相关阐述,这里不再赘述。
本申请实施例提供一种计算机读存储介质,包括:该计算机读存储介质中存储有计算机指令;当该计算机指令在计算机上运行时,使得该计算机执行上述方法实施例所述的数据存储方法。
本申请实施例提供了一种包含指令的计算机程序产品,包括计算机程序或指令,当该计算机程序或指令在计算机上运行时,使得该计算机执行上述方法实施例所述的数据存储方法。
本申请实施例提供一种芯片,该芯片具体可用于X86架构的处理器所在服务器(也可以称为X86服务器)、ARM架构的处理器所在的服务器(也可以简称为ARM服务器)等等,该芯片可包括集成电路和/或器件,该芯片在服务器上运行时,使得该服务器执行上述方法实施例所述的数据存储方法和存储访问配置方法。
本申请实施例提供一种主板,又可称为印刷电路板(printed circuit boards,PCB),该主板包括处理器,该处理器用于执行程序代码实现上述方法实施例所述的数据存储方法和存储访问配置方法。可选地,该主板还可包括存储器,存储器用于存储上述程序代码以供处理器执行。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括至少一个计算机指令。在计算机上加载或执行计算机程序指令时,全部或部分地产生按照本发明实施例的流程或功能。计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digitalsubscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含至少一个可用介质集合的服务器、数据中心等数据存储节点。可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,高密度数字视频光盘(digital videodisc,DVD)、或者半导体介质。半导体介质可以是SSD。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修复或替换,这些修复或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (37)
1.一种数据存储方法,其特征在于,应用于数据存储系统中,所述数据存储系统包括主机、适配卡和存储节点,所述主机和所述适配卡通过总线建立通信连接,所述存储节点和所述适配卡通过网络建立通信连接,所述方法包括:
所述适配卡接收所述主机请求写入第一内存空间的第一地址的数据,其中,所述第一内存空间是所述适配卡向所述主机提供的支持内存语义访问的存储空间;
所述适配卡将所述数据写入所述存储节点的第二内存空间中,所述适配卡包括所述第二内存空间的物理地址与所述第一内存空间的地址之间的第一对应关系。
2.根据权利要求1所述的方法,其特征在于,所述主机包括所述第一内存空间的地址与应用程序的虚拟内存地址之间的第二对应关系,所述第一地址是所述主机根据所述第二对应关系和所述应用程序的第一虚拟内存地址确定的。
3.根据权利要求2所述的方法,其特征在于,所述适配卡将所述数据写入所述存储节点的第二内存空间中包括:
所述适配卡将所述数据通过远程直接数据存取RDMA的方式写入所述存储节点的第二内存空间的第二地址,其中,所述第一对应关系中所述第一地址与所述第二地址对应。
4.根据权利要求3所述的方法,其特征在于,所述适配卡包括缓存,所述第一对应关系包括所述第一内存空间的地址与所述缓存之间的对应关系,以及,所述第一内存空间的地址与所述第二内存空间的物理地址之间的对应关系。
5.根据权利要求4所述的方法,其特征在于,所述适配卡将所述数据通过远程直接数据存取RDMA的方式写入所述存储节点的第二内存空间的第二地址包括:
所述适配卡将所述数据写入所述缓存的缓存地址中,更新所述第一对应关系,使得所述第一对应关系中所述第一地址与所述缓存地址对应;
在所述缓存中的数据达到阈值的情况下,将所述数据通过RDMA的方式写入所述存储节点的第二内存空间的第二地址,更新所述第一对应关系,使得所述第一地址与所述第二地址对应。
6.根据权利要求5所述的方法,其特征在于,在所述适配卡将所述数据写入所述存储节点的第二内存空间中之后,所述方法还包括:
所述适配卡接收所述主机发送的第一地址的读取请求,根据所述第一对应关系确定所述第一地址对应的地址;
在所述第一地址对应的地址为缓存地址的情况下,所述适配卡根据所述缓存地址对所述第一地址的读取请求进行处理。
7.根据权利要求6所述的方法,其特征在于,在所述第一地址对应的地址为第二内存空间的第二地址的情况下,所述方法还包括:
所述适配卡向所述主机返回缓存未命中消息;
所述适配卡向所述存储节点发送所述第二地址的读取请求;
所述适配卡接收所述存储节点发送的所述数据,将所述数据存储至所述缓存并更新所述第一对应关系。
8.根据权利要求7所述的方法,其特征在于,所述主机包括重试队列,所述重试队列包括未命中的数据读取请求和所述未命中的数据读取请求的上下文信息,所述重试队列用于供所述主机根据所述上下文信息向所述适配卡重新发送所述未命中的数据读取请求。
9.根据权利要求1至8任一权利要求所述的方法,其特征在于,所述第二内存空间是非易失性双列直插式内存模块NVDIMM。
10.根据权利要求1至9任一权利要求所述的方法,其特征在于,所述总线包括快捷外围部件互连标准PCI总线、计算机快速链接CXL总线、Z世代GenZ总线中的一种或者多种。
11.一种数据存储系统,其特征在于,所述数据存储系统包括主机、适配卡和存储节点,所述主机和所述适配卡通过总线建立通信连接,所述存储节点和所述适配卡通过网络建立通信连接;
所述主机,用于向所述适配卡发送所述主机请求写入第一内存空间的第一地址的数据,其中,所述第一内存空间是所述适配卡向所述主机提供的支持内存语义访问的存储空间;
所述适配卡,用于将所述数据写入所述存储节点的第二内存空间中,所述适配卡包括所述第二内存空间的物理地址与所述第一内存空间的地址之间的第一对应关系。
12.根据权利要求11所述的系统,其特征在于,所述主机包括所述第一内存空间的地址与应用程序的虚拟内存地址之间的第二对应关系。
13.根据权利要求12所述的系统,其特征在于,
所述适配卡,用于将所述数据通过远程直接数据存取RDMA的方式写入所述存储节点的第二内存空间的第二地址,所述第一对应关系中所述第一地址与所述第二地址对应。
14.根据权利要求13所述的系统,其特征在于,所述适配卡包括缓存,所述第一对应关系包括所述第一内存空间的地址与所述缓存之间的对应关系,以及,所述第一内存空间的地址与所述第二内存空间的物理地址之间的对应关系。
15.根据权利要求14所述的系统,其特征在于,
所述适配卡,用于将所述数据写入所述缓存的缓存地址中,更新所述第一对应关系,使得所述第一对应关系中所述第一地址与所述缓存地址对应;
所述适配卡,用于在所述缓存中的数据达到阈值的情况下,将所述数据通过RDMA的方式写入所述存储节点的第二内存空间的第二地址,更新所述第一对应关系,使得所述第一地址与所述第二地址对应。
16.根据权利要求15所述的系统,其特征在于,
所述主机,用于向所述适配卡发送第一地址的读取请求;
所述适配卡,用于根据所述第一对应关系确定所述第一地址对应的地址;
所述适配卡,用于在所述第一地址对应的地址为缓存地址的情况下,所述适配卡根据所述缓存地址对所述第一地址的读取请求进行处理。
17.根据权利要求16所述的系统,其特征在于,
所述适配卡,用于在所述第一地址对应的地址为第二内存空间的第二地址的情况下,向所述主机返回缓存未命中消息;
所述适配卡,用于向所述存储节点发送所述第二地址的读取请求;
所述适配卡,用于接收所述存储节点发送的所述数据,将所述数据存储至所述缓存并更新所述第一对应关系。
18.根据权利要求17所述的系统,其特征在于,所述主机包括重试队列,所述重试队列包括未命中的数据读取请求和所述未命中的数据读取请求的上下文信息,所述重试队列用于供所述主机根据所述上下文信息向所述适配卡重新发送所述未命中的数据读取请求。
19.根据权利要求11至18任一权利要求所述的系统,其特征在于,所述第二内存空间是非易失性双列直插式内存模块NVDIMM。
20.根据权利要求11至19任一权利要求所述的系统,其特征在于,所述总线包括快捷外围部件互连标准PCI总线、计算机快速链接CXL总线、Z世代GenZ总线中的一种或者多种。
21.一种适配卡,其特征在于,应用于数据存储系统,所述数据存储系统包括主机、适配卡和存储节点,所述主机和所述适配卡通过总线建立通信连接,所述存储节点和所述适配卡通过网络建立通信连接;
所述适配卡包括:
接收单元,用于接收所述主机请求写入第一内存空间的第一地址的数据,其中,所述第一内存空间是所述适配卡向所述主机提供的支持内存语义访问的存储空间;
写入单元,用于将所述数据写入所述存储节点的第二内存空间中,所述适配卡包括所述第二内存空间的物理地址与所述第一内存空间的地址之间的第一对应关系。
22.根据权利要求21所述的适配卡,其特征在于,
所述写入单元,用于将所述数据通过远程直接数据存取RDMA的方式写入所述存储节点的第二内存空间的第二地址,所述第一对应关系中所述第一地址与所述第二地址对应。
23.根据权利要求22所述的适配卡,其特征在于,所述适配卡包括缓存,所述第一对应关系包括所述第一内存空间的地址与所述缓存之间的对应关系,以及,所述第一内存空间的地址与所述第二内存空间的物理地址之间的对应关系。
24.根据权利要求23所述的适配卡,其特征在于,
所述写入单元,用于将所述数据写入所述缓存的缓存地址中,更新所述第一对应关系,使得所述第一对应关系中所述第一地址与所述缓存地址对应;
所述写入单元,用于在所述缓存中的数据达到阈值的情况下,将所述数据通过RDMA的方式写入所述存储节点的第二内存空间的第二地址,更新所述第一对应关系,使得所述第一地址与所述第二地址对应。
25.根据权利要求24所述的适配卡,其特征在于,所述适配卡包括读取单元,
所述接收单元,用于接收所述主机发送的第一地址的读取请求;
所述读取单元,用于根据所述第一对应关系确定所述第一地址对应的地址;
所述读取单元,用于在所述第一地址对应的地址为缓存地址的情况下,所述适配卡根据所述缓存地址对所述第一地址的读取请求进行处理。
26.根据权利要求25所述的适配卡,其特征在于,
所述读取单元,用于在所述第一地址对应的地址为第二内存空间的第二地址的情况下,向所述主机返回缓存未命中消息;
所述读取单元,用于向所述存储节点发送所述第二地址的读取请求;
所述接收单元,用于接收所述存储节点发送的所述数据,将所述数据存储至所述缓存并更新所述第一对应关系。
27.根据权利要求21至26任一权利要求所述的适配卡,其特征在于,所述第二内存空间是非易失性双列直插式内存模块NVDIMM。
28.根据权利要求21至27任一权利要求所述的适配卡,其特征在于,所述总线包括快捷外围部件互连标准PCI总线、计算机快速链接CXL总线、Z世代GenZ总线中的一种或者多种。
29.一种计算设备,其特征在于,包括处理器和存储器,所述存储器用于存储代码,所述处理器用于执行所述代码实现如权利要求1至10任一权利要求所述的方法。
30.一种存储访问配置方法,其特征在于,所述方法包括:
适配卡向主机提供支持内存语义访问的存储空间;
所述适配卡建立所述存储空间与存储节点的持久化存储设备的物理地址的对应关系。
31.根据权利要求30所述的方法,其特征在于,所述适配卡与所述存储节点通过网络连接。
32.根据权利要求30或31所述的方法,其特征在于,所述适配卡通过远程直接数据存取RDMA的方式访问所述物理地址。
33.根据权利要求30-32任一所述的方法,其特征在于,所述持久化存储设备为非易失性双列直插式内存模块NVDIMM。
34.一种适配卡,其特征在于,包括接口和处理器,所述处理器用于:
向主机提供支持内存语义访问的存储空间;
建立所述存储空间与存储节点的持久化存储设备的物理地址的对应关系。
35.根据权利要求34所述的适配卡,其特征在于,所述适配卡与所述存储节点通过网络连接。
36.根据权利要求34或35所述的适配卡,其特征在于,所述适配卡通过远程直接数据存取RDMA的方式访问所述物理地址。
37.根据权利要求34-36任一所述的适配卡,其特征在于,所述持久化存储设备为非易失性双列直插式内存模块NVDIMM。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111662809.7A CN116414735A (zh) | 2021-12-30 | 2021-12-30 | 数据存储方法、系统、存储访问配置方法及相关设备 |
PCT/CN2022/142297 WO2023125524A1 (zh) | 2021-12-30 | 2022-12-27 | 数据存储方法、系统、存储访问配置方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111662809.7A CN116414735A (zh) | 2021-12-30 | 2021-12-30 | 数据存储方法、系统、存储访问配置方法及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116414735A true CN116414735A (zh) | 2023-07-11 |
Family
ID=86997904
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111662809.7A Pending CN116414735A (zh) | 2021-12-30 | 2021-12-30 | 数据存储方法、系统、存储访问配置方法及相关设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116414735A (zh) |
WO (1) | WO2023125524A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117290263A (zh) * | 2023-09-27 | 2023-12-26 | 中科驭数(北京)科技有限公司 | 一种用于大容量bar空间的大页映射实现方法及系统 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116680206B (zh) * | 2023-08-04 | 2024-01-12 | 浪潮电子信息产业股份有限公司 | 内存扩展方法、装置、系统、电子设备及可读存储介质 |
CN116775510B (zh) * | 2023-08-22 | 2023-11-24 | 成都泛联智存科技有限公司 | 数据访问方法、装置、服务器和计算机可读存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9218314B2 (en) * | 2013-02-01 | 2015-12-22 | International Business Machines Corporation | Boosting remote direct memory access performance using cryptographic hash based approach |
WO2016101288A1 (zh) * | 2014-12-27 | 2016-06-30 | 华为技术有限公司 | 一种远程直接数据存取方法、设备和系统 |
CN111654519B (zh) * | 2017-09-06 | 2024-04-30 | 华为技术有限公司 | 用于传输数据处理请求的方法和装置 |
CN117171073A (zh) * | 2019-09-30 | 2023-12-05 | 华为技术有限公司 | 处理远程直接内存访问请求的方法和计算机设备 |
CN111212141A (zh) * | 2020-01-02 | 2020-05-29 | 中国科学院计算技术研究所 | 一种共享存储系统 |
-
2021
- 2021-12-30 CN CN202111662809.7A patent/CN116414735A/zh active Pending
-
2022
- 2022-12-27 WO PCT/CN2022/142297 patent/WO2023125524A1/zh unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117290263A (zh) * | 2023-09-27 | 2023-12-26 | 中科驭数(北京)科技有限公司 | 一种用于大容量bar空间的大页映射实现方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2023125524A1 (zh) | 2023-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116414735A (zh) | 数据存储方法、系统、存储访问配置方法及相关设备 | |
US8549231B2 (en) | Performing high granularity prefetch from remote memory into a cache on a device without change in address | |
CN113868155B (zh) | 一种内存空间扩展方法、装置及电子设备和存储介质 | |
CN110555001B (zh) | 数据处理方法、装置、终端及介质 | |
CN110119304B (zh) | 一种中断处理方法、装置及服务器 | |
US11023410B2 (en) | Instructions for performing multi-line memory accesses | |
CN115794669A (zh) | 一种扩展内存的方法、装置及相关设备 | |
CA3129982A1 (en) | Method and system for accessing distributed block storage system in kernel mode | |
CN112214247A (zh) | 一种系统启动方法以及相关设备 | |
CN110781107B (zh) | 基于dram接口的低延迟融合io控制方法和装置 | |
CN114579480A (zh) | 一种缺页处理方法、装置、系统、电子设备及存储介质 | |
CN116383101A (zh) | 内存访问方法、内存管理单元、芯片、设备和存储介质 | |
CN112732176B (zh) | 基于fpga的ssd访问方法及装置、存储系统及存储介质 | |
US20210374063A1 (en) | Method for processing page fault by processor | |
CN110209343B (zh) | 数据存储方法、装置、服务器及存储介质 | |
JP4431492B2 (ja) | 複数のコヒーレンシー・グラニュールをサポートするデータ転送ユニット | |
CN116303125B (zh) | 请求调度方法、缓存、装置、计算机设备及存储介质 | |
EP3695319B1 (en) | Method and reallocation component for managing reallocation of information from source to target memory sled | |
US11860783B2 (en) | Direct swap caching with noisy neighbor mitigation and dynamic address range assignment | |
CN114327260B (zh) | 一种数据读取方法、系统、服务器及存储介质 | |
CN115905036A (zh) | 一种数据访问系统、方法及相关设备 | |
WO2024082702A1 (zh) | 数据处理方法、装置、芯片以及计算机可读存储介质 | |
US20240211406A1 (en) | Systems, methods, and apparatus for accessing data from memory or storage at a storage node | |
US20230409478A1 (en) | Method and apparatus to reduce latency of a memory-side cache | |
CN117472817A (zh) | 数据处理方法、装置、系统及网卡 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |