CN117667987A - 一种存储***、数据更新方法及设备 - Google Patents
一种存储***、数据更新方法及设备 Download PDFInfo
- Publication number
- CN117667987A CN117667987A CN202211011696.9A CN202211011696A CN117667987A CN 117667987 A CN117667987 A CN 117667987A CN 202211011696 A CN202211011696 A CN 202211011696A CN 117667987 A CN117667987 A CN 117667987A
- Authority
- CN
- China
- Prior art keywords
- page
- storage
- storage node
- node
- memory
- 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 76
- 238000013507 mapping Methods 0.000 claims description 37
- 238000004590 computer program Methods 0.000 claims description 15
- 230000008569 process Effects 0.000 abstract description 17
- 230000002085 persistent effect Effects 0.000 abstract description 14
- 238000011010 flushing procedure Methods 0.000 abstract description 8
- 230000003993 interaction Effects 0.000 abstract description 6
- 230000001680 brushing effect Effects 0.000 abstract description 4
- 230000006870 function Effects 0.000 description 25
- 238000012545 processing Methods 0.000 description 19
- 230000005540 biological transmission Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 13
- 230000001133 acceleration Effects 0.000 description 10
- 238000013500 data storage Methods 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 4
- 239000007787 solid Substances 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000002688 persistence Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000002146 bilateral effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/24569—Query processing with adaptation to specific hardware, e.g. adapted for using GPUs or SSDs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种存储***、数据更新方法及设备,本申请中,为了将存储***的计算节点中的数据持久化到存储***中的存储节点,计算节点不需要主动的向存储节点发送页面,仅将页面的内存地址发送给存储节点。由存储节点主动从计算节点获取该页面,并对页面进行持久化存储,实现刷盘。这个过程中,计算节点无需发送大量的页面,有效的减少了计算节点与存储节点之间的交互次数,由存储节点执行刷盘过程中大部分操作,能够减少刷盘过程对计算节点中处理器的占用。
Description
技术领域
本申请涉及存储技术领域,尤其涉及一种存储***、数据更新方法及设备。
背景技术
支持数据库的硬件架构中包括计算节点以及存储节点,计算节点用于承担数据库中数据处理操作,如在用户的触发下对数据库中的数据进行增、删、查、改等操作。存储节点包括大容量的磁盘,存储节点具备较大的数据存储空间,能够用于存储数据库中的数据,在存储节点中数据存储的最小单位为页面(page)。
在需要对数据库中的数据进行增、删、查、改等操作时,计算节点可以以页面为粒度从存储节点中获取数据,并将获取的页面缓存在缓存池(buffer pool)。计算节点可以对缓存池中的页面中的数据进行增、删、查、改等操作。
计算节点可以定期将缓存池中的页面刷新到存储节点的硬盘中,以保证对数据的增、删、改等操作可以作用到存储节点的硬盘所存储的页面中。计算节点将缓存池中的页面刷新到存储节点的磁盘的过程称为刷盘。
在刷盘过程中,计算节点与存储节点之间需要进行大量的数据交互,这些数据交互会消耗计算节点的处理器资源。
发明内容
本申请提供一种存储***、数据更新方法及设备,用以减少刷盘过程中对计算节点的处理器资源的占用。
第一方面,本申请实施例提供了一种存储***,该存储***为基于存算分离架构形成的存储***。该存储***中包括具备计算功能的计算节点,以及具备存储功能的存储节点。
计算节点将存储节点所存储的页面缓存在计算节点的内存中,更新内存中页面中的数据。例如,计算节点在接收到用户发起的读/写数据请求时,从存储节点中获取该读/写数据请求所针对的数据所在的页面,将该页面缓存在该计算节点的内存中。计算节点根据读/写数据请求对该内存中的页面进行更新。计算节点向存储节点发送页面的内存地址,页面的内存地址为页面在内存中的地址。
存储节点在接收到该页面的内存地址后,根据页面的内存地址从计算节点中获取页面,并根据获取的页面更新存储节点所存储的页面。
通过上述***,为了将计算节点中的数据持久化到存储节点,计算节点不需要主动的向存储节点发送页面,仅将页面的内存地址发送给存储节点。由存储节点主动从计算节点获取该页面,并对页面进行持久化存储,实现刷盘。这个过程中,计算节点无需发送大量的页面,有效的减少了计算节点与存储节点之间的交互次数,由存储节点执行刷盘过程中大部分操作,能够减少刷盘过程对计算节点中处理器的占用。
在一种可能的实施方式中,存储节点在根据页面的内存地址从计算节点中获取页面时,采用单边RDMA绕过计算节点的处理器,直接与计算节点的网卡交互,从计算节点的内存中获取该页面。也就是说,存储节点可以基于RDMA向计算节点的网卡发送数据请求,数据请求用于请求页面,数据请求携带页面的内存地址。计算节点的网卡根据该数据请求从内存中读取该页面,并将该页面反馈给存储节点。
通过上述***,存储节点通过单边RDMA的方式从计算节点的内存获取该页面,无需计算节点的处理器的参与,进一步减少对计算节点的处理器的占用。
在一种可能的实施方式中,存储***包括多个存储节点,计算节点在缓存各个存储节点所存储的页面时,在计算节点的内存中以存储节点为粒度、将相同存储节点所存储的页面缓存在连续的存储空间上。在内存中为该页面设置有描述信息的情况下,相同存储节点所存储的页面是指页面中的数据以及页面的描述信息。描述信息用于指示该页面在村存储节点中的存储位置。这样,计算节点向存储节点发送的页面的地址可以为多个页面的地址,使得存储节点能够从计算节点一次获取多个页面,进一步减少了存储节点与计算节点之间的交换次数,提升了刷盘效率。
在一种可能的实施方式中,存储节点在更新存储节点所存储的页面之后,向计算设备发送通知消息,通知消息用于通知页面更新完成;计算节点在接收到通知消息后,释放内存中页面占用的存储空间。存储节点在完成该页面的持久化存储(也即利用获取的页面更新该存储节点中存储的页面)后,及时通知计算节点页面更新完成,保证计算节点可以及时的回收内存中的存储空间。
在一种可能的实施方式中,计算节点可以为主动的询问存储节点是否完成页面更新,以便能够及时地回收内存中的存储空间。例如,计算节点向存储节点发送查询消息,查询消息用于询问是否完成页面更新;存储节点在更新存储节点所存储的页面之后,向计算设备发送通知消息,通知消息用于通知页面更新完成;计算节点在接收到通知消息后,释放内存中页面占用的存储空间。
在一种可能的实施方式中,存储节点包括缓存以及硬盘,存储节点在根据获取的页面更新存储节点所存储的页面,可以直接利用获取的页面更新硬盘中存储的页面。存储节点也可以先将获取的页面存储在缓存中,之后再利用缓存中的页面更新硬盘中存储的页面。这里的硬盘也可以为其他能够持久化存储页面的存储器,如可以为闪存、磁盘等。
通过上述***,存储节点灵活地将页面更新到硬盘中,有效的扩展了应用场景。
在一种可能的实施方式中,计算节点在内存在缓存页面时,为该页面设置页面的描述信息。该描述信息位于该页面之前或之后,该描述信息用于指示页面在存储节点的存储位置。
通过上述***,内存中缓存页面的描述信息,使得存储节点能够在获取该页面以及其描述信息后准确的确定出该存储节点中该页面的存储位置。
在一种可能的实施方式中,页面的内存地址包括页面中的数据在内存中的内存地址以及页面的描述信息在内存中的内存地址。以便存储节点能够从计算节点既获取该页面中的数据,还能够获取描述信息,以确定准确的确定出该存储节点中该页面的存储位置,将该页面中的数据更新到该存储节点中。
在一种可能的实施方式中,存储节点在根据获取的页面更新存储节点所存储的页面,根据页面的描述信息确定存储节点中的页面的存储位置,将页面更新到存储位置处。
通过上述***,存储节点利用描述信息,以确定准确的确定出该存储节点中该页面的存储位置,保证存储节点能够实现页面的持久化存储。
在一种可能的实施方式中,描述信息指示页面在存储节点中的存储位置的方式有许多种,例如,描述信息为页面的逻辑块地址。又例如,该描述信息为该页面所属文件的文件名以及页面在该文件中的偏移量。又例如,该描述信息为该页面所属对象的对象ID以及页面在该对象中的偏移量。又例如,该描述信息为计算节点为页面配置的页面标识,存储节点记录了页面标识与页面在存储节点的存储地址的映射关系。
通过上述***,描述信息的指示方式较为灵活,具备不同的表现形式,适用于不同的应用场景。
在一种可能的实施方式中,存储节点在前述任一可能的实施方式中所执行的操作可以由该存储节点中的DPU执行,也即存储节点将数据更新的方法中存储节点执行的方法卸载到DPU上,该DPU可以通过总线与存储节点的控制单元或存储节点中的网卡连接。该DPU也可以位于该存储节点的网卡中。
通过上述***,将数据更新方法卸载到存储节点中的DPU,减少对存储节点中控制单元的占用。
第二方面,本申请实施例提供了一种数据更新方法,方法可以由存储***中的计算节点以及存储节点配置执行,有益效果可以参见第一方面以及第一方面任一种可能的实现方式中的相关说明,此处不再赘述。在该方法中,计算节点将存储节点所存储的页面缓存在计算节点的内存中,计算节点更新内存中页面中的数据,向存储节点发送页面的内存地址,页面的内存地址为页面在内存中的地址。
存储节点接收到页面的内存地址后,根据页面的内存地址从计算节点中获取页面,根据获取的页面更新存储节点所存储的页面。
在一种可能的实施方式中,存储节点根据页面的内存地址从计算节点中获取页面时,基于单边RDMA从计算节点中获取该页面。
在一种可能的实施方式中,存储***包括多个存储节点,计算节点的内存中相同存储节点所存储的页面缓存在连续的存储空间上。在内存中为该页面设置有描述信息的情况下,相同存储节点所存储的页面是指页面中的数据以及页面的描述信息。
在一种可能的实施方式中,存储节点在更新存储节点所存储的页面之后,向计算设备发送通知消息,通知消息用于通知页面更新完成;计算节点接收到通知消息后,释放内存中页面占用的存储空间。
在一种可能的实施方式中,计算节点向存储节点发送查询消息,查询消息用于询问是否完成页面更新;存储节点在更新存储节点所存储的页面之后,向计算设备发送通知消息,通知消息用于通知页面更新完成;计算节点在接收通知消息后,释放内存中页面占用的存储空间。
在一种可能的实施方式中,存储节点包括缓存以及硬盘,存储节点可以直接利用获取的页面更新硬盘中存储的页面,也可以将获取的页面存储在缓存中;之后再利用缓存中的页面更新硬盘中存储的页面。
在一种可能的实施方式中,内存中页面之前或之后存储页面的描述信息,页面的描述信息用于指示页面在存储节点的存储位置。
在一种可能的实施方式中,页面的内存地址包括页面中的数据在内存中的内存地址以及页面的描述信息在内存中的内存地址。
在一种可能的实施方式中,存储节点根据获取的页面更新存储节点所存储的页面时,根据页面的描述信息确定存储节点中的页面的存储位置,将页面更新到存储位置处。
在一种可能的实施方式中,描述信息为计算节点为页面配置的页面标识,存储节点记录了页面标识与页面在存储节点的存储地址的映射关系。
在一种可能的实施方式中,存储节点在前述任一可能的实施方式中所执行的操作可以由该存储节点中的DPU执行,也即存储节点将数据更新的方法中存储节点执行的方法卸载到DPU上,该DPU可以通过总线与存储节点的控制单元或存储节点中的网卡连接。该DPU也可以位于该存储节点的网卡中。
第三方面,本申请实施例还提供了一种数据更新装置,该数据更新装置具有实现上述第二方面的方法实例中计算节点的行为的功能,有益效果可以参见第一方面的描述此处不再赘述。功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块。在一个可能的设计中,该数据更新装置的结构中包括第一传输模块、处理模块,可选的,还可以包括释放模块,这些模块可以执行上述第二方面方法示例中计算节点的相应功能,具体参见方法示例中的详细描述,此处不做赘述。
第四方面,本申请实施例还提供了一种数据更新装置,该数据更新装置具有实现上述第二方面的方法实例中存储节点的行为的功能,有益效果可以参见第一方面的描述此处不再赘述。功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块。在一个可能的设计中,数据更新装置的结构中包括传第二输模块、更新模块,这些模块可以执行上述第二方面方法示例中存储节点的相应功能,具体参见方法示例中的详细描述,此处不做赘述。
第五方面,本申请实施例还提供了一种加速装置,该加速装置位于该存储节点中,与该存储节点中的处理器通过总线连接,该加速装置包括DPU以及供电电路,所述供电电路用于对所述DPU供电,加速装置用于具有实现上述第二方面以及第二方面的各个可能的实施方式中的方法实例中存储节点的行为的功能,有益效果可以参见第二方面的描述此处不再赘述,该加速装置也可以以网卡的形态位于该加速装置中。可选的,该加速装置中还包括存储器。该存储器用于存储计算机程序指令,DPU调用该存储器中存储的计算机程序指令实现上述第二方面以及第二方面的各个可能的实施方式中的方法实例中存储节点的行为的功能。
第六方面,本申请实施例还提供了一种计算设备,该计算设备包括处理器和存储器,所述处理器被配置为支持所述计算书设备执行上述第二方面中存储节点或计算节点相应的功能。所述存储器与所述处理器耦合,其保存所述计算节点或存储节点必要的计算机程序指令和数据。该计算设备中还可以包括接口,用于与其他设备通信,例如,接收或发送页面的内存地址,接收或发送页面等。
第七方面,本申请还提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第二方面以及第二方面的各个可能的实现方式中的方法。
第八方面,本申请还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第二方面以及第二方面的各个可能的实现方式中的方法。
第九方面,本申请还提供一种计算机芯片,芯片与存储器相连,芯片用于读取并执行存储器中存储的软件程序,执行上述第二方面以及第二方面的各个可能的实现方式中的方法。
附图说明
图1为本申请提供的一种***的架构示意图;
图2为本申请提供的一种内存的结构示意图;
图3为本申请提供的一种数据写入方法的示意图;
图4为本申请提供的一种数据更新方法的示意图;
图5为本申请提供的一种刷新页面缓存页面的示意图;
图6为本申请提供的一种数据更新装置的结构示意图;
图7为本申请提供的一种数据更新装置的结构示意图。
具体实施方式
在对本申请实施例提供的一种存储***、数据更新方式以及装置说明之前,先对本申请实施例所涉及的一种数据访问方式——远程直接内存访问(remote direct memoryaccess,RDMA)进行说明。
RDMA是一种绕过远程设备(如在本申请实施例中绕过了计算节点110)操作***内核访问其内存中数据的技术,由于不经过操作***,不仅节省了大量处理器资源,同样也提高了***吞吐量、降低了***的网络通信延迟,尤其适合在大规模并行计算机集群中有广泛应用。
RDMA有几大特点,(1)数据通过网络与远程设备间进行数据传输;(2)没有操作***内核的参与,有关发送传输的所有内容都卸载到网卡上;(3)在用户空间虚拟内存与网卡之间直接进行数据传输不涉及操作***内核,没有额外的数据移动和复制。
RDMA包括单边RDMA和双边RDMA两种。
在这里将需要交互信息的两端分别称为访问端和数据端。访问端是指需要访问数据的一方,数据端是指存储有访问端所需访问的数据的一方。在本申请实施例中,访问端理解为存储节点100,数据端理解为计算节点110。
单边RDMA包括RDMA读(READ)操作以及RDMA写(WRITE)操作。
以单边RDMA中的RDMA读操作为例,RDMA读操作用于访问端读取数据端的存储空间(在本申请实施例中该存储空间为计算节点110中的内存112或内存112中的刷新缓存)中的数据。
在访问端进行RDMA读操作之前,数据端首先允许访问端预先获取需要读取的数据的地址,即将RDMA读操作要读取的数据的地址、长度等信息发送给访问端。在本申请实施例中,数据的地址为属于存储节点100的页面在刷新缓存中的内存地址。访问端在获取需要读取的数据的地址后,可以直接通过数据端的网卡从数据端的存储空间中读取数据,整个过程不需要处理器参与。
在本申请实施例中访问端可以采用单边RDMA的方式发送请求,从数据端中读取该数据请求所请求的数据。
双边RDMA包括RDMA发送(SEND)操作以及RDMA接收(RECEIVE)操作,该操作需要数据端的处理器参与。
如图1所示,为本申请实施例提供的一种存储***,该存储***为以存算分离架构形成的,所谓“存算分离”是指将存储***中独立设置两种不同的节点以分别实现计算功能以及存储功能。图1仅示例性的展示了存算分离架构下的一种存储***,本申请实施例所提供的数据更新方法同样适用于存算分离架构下的其他存储***。
图1中,存储***包括计算节点110集群和存储节点100集群。计算节点110集群包括一个或多个计算节点110(图1中示出了两个计算节点110,但不限于两个计算节点110),各个计算节点110之间可以相互通信。计算节点110是一种计算设备,如服务器、台式计算机或者存储阵列的控制器等。在硬件上,如图1所示,计算节点110至少包括处理器111、内存112和网卡113。其中,处理器111是一个中央处理器(central processing unit,CPU),用于处理来自计算节点110外部的数据访问请求,或者计算节点110内部生成的请求。图1中以处理器111为CPU111为例进行展示。示例性的,处理器111接收用户发送的写数据请求时,会将这些写数据请求中的数据暂时保存在内存112中。图1中仅示出了一个CPU 111,在实际应用中,CPU 111的数量往往有多个,其中,一个CPU111又具有一个或多个CPU核。本实施例不对CPU的数量,以及CPU核的数量进行限定。
CPU111、内存112和网卡113之间通过总线连接,总线可以为快捷***部件互连标准(peripheral component interconnect express,PCIe)总线,也可以为计算快速互联(compute express link,CXL)、通用串行总线(universal serial bus,USB)协议或其他协议的总线。
内存112是指与CPU111直接交换数据的内部存储器。内存包括至少一种存储器,例如内存既可以是随机存取存储器,也可以是只读存储器(read only memory,ROM)。举例来说,随机存取存储器是动态随机存取存储器(dynamic random access memory,DRAM),或者存储级存储器(storage class memory,SCM)。内存112还可以包括其他随机存取存储器,例如静态随机存取存储器(static random access memory,SRAM)、只读存储器等。而对于只读存储器,可以是可编程只读存储器(programmable read only memory,PROM)、可抹除可编程只读存储器(erasable programmable read only memory,EPROM)等。内存112还可以是双列直插式存储器模块或双线存储器模块(Dual In-line Memory Module,DIMM),还可以是固态硬盘(Solid State Disk,SSD)。
在本申请实施例中,内存112中可以缓存从存储节点100获取的页面,并缓存该页面增加描述信息,该描述信息指示了该页面在存储节点中的存储位置。页面的内存地址包括了该页面中的数据在内存112的内存地址以及该页面的描述信息在该内存112的内存地址。
网卡113用于与存储节点100通信。例如,计算节点110可通过网卡113向存储节点100发送该存储节点100的页面的内存地址,以便存储节点100能够利用该页面的内存地址对该页面中的数据进行持久化存储。另外,计算节点110还可以包括总线,用于计算节点110内部各组件之间的通信。在功能上,由于图1中的计算节点110的主要功能是计算业务,在存储数据时可以利用存储节点100来实现持久化存储,在实际实现中,计算节点110也可以内置少量的硬盘,或者外接少量硬盘。
任意一个计算节点110可通过网络访问存储节点100集群中的任意一个存储节点100。存储节点100集群包括多个存储节点100(图1中示出了三个存储节点100,但不限于三个存储节点100)。一个存储节点100包括一个或多个控制单元101、网卡102与多个硬盘103。网卡102用于与计算节点110通信。硬盘103用于存储数据,可以是磁盘或者其他类型的存储介质,例如固态硬盘或者叠瓦式磁记录硬盘等。控制单元101用于根据计算节点110发送的读/写数据请求,往硬盘103中写入数据或者从硬盘103中读取数据。在读写数据的过程中,控制单元101需要将读/写数据请求中携带的地址转换为硬盘能够识别的地址。由此可见,控制单元101也具有一些简单的计算功能。
控制单元101包括处理器和内存。处理器用于执行地址转换以及读写数据等操作。内存用于临时存储将要写入硬盘103的数据,或者从硬盘103读取出来将要发送给计算节点110的数据。本申请实施例并不限定控制单元101中处理器的具体类型,例如,该处理器可以CPU、数据处理单元(data processing unit,DPU)、图形处理单元(graphics processingunit,GPU)、嵌入式神经网络处理器(neural-network processing units,NPU)等处理芯片。通常情况下,控制单元101的数量可以是一个,也可以是两个或两个以上。当存储节点100包含至少两个控制单元101时,硬盘103与控制单元101之间具有归属关系,每个控制器只能访问归属于它的硬盘。
在另一种实施方式中,控制单元101的功能可以卸载到网卡102上。换言之,在图1所示的实施方式中,存储节点100内部不具有控制单元101,而是由网卡102来完成数据读写、地址转换以及其他计算功能。此时,网卡102是一个智能网卡。它可以包含处理器和内存。网卡102的处理器用于执行地址转换以及读写数据等操作。网卡102的内存用于临时存储将要写入硬盘103的数据,或者从硬盘103读取出来将要发送给计算节点110的数据。该处理器可以为CPU,DPU、GPU、NPU等处理芯片。存储节点100中的网卡102和硬盘103之间没有归属关系,网卡102可访问该存储节点100中任意一个硬盘103。
在另一种实施例方式中,该存储节点100包括加速装置,加速装置通过总线与该存储节点100中的控制单元101连接。该加速装置包括DPU,该加速装置可以代替控制单元进行持久化存储,也即加速装置能够执行如图4所示的实施例中存储节点所执行的方法。
本申请实施例以存储节点中包括控制单元101以及网卡102为例进行说明,本申请实施例也适应于将控制单元101的功能可以卸载到网卡102的场景,在这种场景中,该网卡102能够执行本申请实施例中控制单元101所执行的操作,此处不再对这种场景下网卡102执行的操作进行说明,具体可以参见控制单元101执行的操作。
在对本申请适用的存储***的结构介绍之后,下面对该存储***中,数据的读写流程进行说明。
以该存储***部署有数据库为例,存储节点100作为该存储***实现数据存储的节点,该存储节点100的硬盘103中存储了该数据库中的数据。在存储节点100的硬盘103中,数据存储的最小粒度为页面(page),也即存储节点100在向硬盘103中写入数据或读取数据时,均是以页面为粒度进行写入的。
计算节点110也类似,计算节点110了解数据块(适用于以块级别访问数据的场景)、数据所属文件(适用于以文件级别访问数据的场景)、数据所属对象(适用于以对象级别访问数据的场景)在各个存储节点100分布情况,能够根据数据的逻辑地址、数据所属的文件名、数据所属的对象的标识(identification,ID)确定该数据所在的存储节点100。计算节点110承担了该存储***中的计算任务,主要用于处理由用户发起的读数据请求或写数据请求。
在数据库场景下,用户可以通过发起读数据请求,以请求查看数据库的数据,计算节点110可以根据读数据请求携带的数据的逻辑块地址(logical block address,LBA)、数据所属的文件名、或数据所属的对象ID确定该数据所在的存储节点100,并从该存储节点100中读取该数据,并将读取的数据反馈给用户。计算节点110从存储节点100读取数据是以页面为最小粒度进行的,也就是说,计算节点110从存储节点100读取该数据所在的页面中的所有数据(后续说明将该数据所在的页面中的所有数据简称为数据所在的页面),在将页面读取到计算节点110的内存112后,从该页面中获取该数据,并向用户反馈该数据。
在数据库场景下,用户可以通过发起写数据请求,以请求对数据库的数据进行增、删、或改等操作。计算节点110可以根据写数据请求携带的数据的LBA、数据所属的文件名、或数据所属的对象ID确定该数据所在的存储节点100,从该存储节点100中读取该数据,写入到内存112中,在内存112中对读取的数据进行增、删、或改等操作。之后,在计算节点110以及存储节点100的共同配合下,将内存112中进行了增、删、或改等操作的数据持久化到存储节点100中,也即实现刷盘。同样的,计算节点110从存储节点100读取数据也是以页面为最小粒度进行的。也就是说,计算节点110从存储节点100读取该数据所在的页面,在将页面读取到计算节点110的内存112后,计算节点110再对该页面中的数据进行增、删、或改等操作。
与已有的持久化存储过程中,由计算节点110主动将内存112中的页面持久化到存储节点100不同。在本申请实施例中,计算节点110只需要将页面在内存112中的地址(在本申请实施例中简称为页面的内存地址)告知存储节点100,由存储节点100利用该页面的内存地址,主动的从计算节点110读取该页面,并将页面更新到硬盘103中,也即由存储节点100承担持久化存储过程中的大部分操作,避免对计算节点110中资源的消耗。
为此,如图2所示,本申请实施例提供了一种内存112中存储页面的方式,图2所示,内存112中包括缓存池(buffer pool),缓存池能够用于暂时存放从存储节点100读取的页面。计算节点110能够在该缓存池中根据用户发起的读数据请求或写数据请求对该页面中的数据进行增、删、查、改等操作。在缓存池中页面可以是按照从存储节点100读取的顺序排列、存储的。
内存112还可以包括刷新缓存(flush buffer),刷新缓存用于存储从缓存池中读取的页面。
在刷新缓存中页面是以页面所属的存储节点100为粒度进行组织、存储的,也即在刷新缓存中属于同一存储节点100的页面会存储在连续的存储空间中。计算节点110能够定期的将缓存池中的数据拷贝到刷新缓存中,并在刷新缓存中以页面所属的存储节点100组织这些页面。在刷新缓存中每个页面前增加描述信息,该描述信息用于指示该页面在存储节点100的存储位置。在本申请实施例中该页面的内存地址指示了该页面中的数据以及该页面的描述信息在该刷新缓存中的内存地址。
这样,存储节点100在获取通过该页面以及该页面的描述信息,能够通过该描述信息确定该页面在存储节点100的存储位置,将该页面更新到该存储位置上,完成数据的持久化存储。
在本申请实施例中,缓存池以及刷新缓存可以占用内存112不同的存储空间,处理器111如数据库的检测点(check point,CKPT)程序,能够定期的将缓存池中的页面拷贝到刷新缓存中,并在刷新缓存中将位于相同的存储节点100的页面聚合在一起。且在刷新缓存中,在为每个页面设置描述信息。
在实际应用中,为了节省内存112中的存储空间,缓存池以及刷新缓存可以共用存储空间,这种情况下,缓存池以及刷新缓存可以统一为一个缓存,也即无需区分刷新缓存、以及缓存池,该缓存同时具备刷新缓存以及缓存池的功能。例如,该缓存可以缓存页面,处理器111根据读数据请求或写数据请求对该缓存中所缓存的数据进行处理。该缓存在存储页面时,以各个页面所在的存储节点100组织页面,将位于相同存储节点100的页面存储在连续的存储空间,且为每个页面也设置了相应的描述信息。这种情况下,该页面的内存地址即为该页面(这里的页面是指页面中的数据以及该页面的描述信息)在该缓存中的地址。
当内存112中的数据总量(如刷新缓存、缓存中的数据总量或属于同一存储节点100的页面的数据总量)达到一定阈值,或到达时间周期时,处理器111将刷新缓存中属于存储节点100的页面的内存地址发送给存储节点100,存储节点100在获取该页面的内存地址后,利用该页面的内存地址从计算节点110的内存112中获取页面,并对该页面进行持久化存储,也即实现刷盘。
在存储节点100内部,控制单元101从计算节点110获取所属存储节点100中的页面的内存地址。控制单元101在从计算节点110获取该页面的内存地址后,控制单元101根据该页面的内存地址从计算节点110的内存中获取该页面,并对该页面进行持久化存储,也即将该页面刷新到存储节点100的硬盘103中。控制单元101根据该页面的内存地址从计算节点110的内存中获取该页面时,可以通过单边RDMA绕过计算节点110中的CPU111从内存112中读取该页面以及该页面的描述信息。
描述信息指示该页面在存储节点100的存储位置的方式有很多种,在本申请实施例并不限定描述信息的具体指示方式。
例如,该描述信息为页面的逻辑块地址。又例如,该描述信息为该页面所属文件的文件名以及页面在该文件中的偏移量。又例如,该描述信息为该页面所属对象的对象ID以及页面在该对象中的偏移量。
对于前述列举的几种描述信息,存储节点100在获取这几种描述信息后,均能够利用该描述信息确定页面在存储节点100的物理地址。
例如,当描述信息为页面的逻辑块地址时,存储节点100的硬盘103保存有闪存翻译层(flash translation layer,FTL),FTL记录了逻辑块地址与物理块地址(physicalblock address,PBA)之间的映射关系,存储节点100在获取该描述信息后,控制单元101向硬盘103发送该逻辑块地址的指令,硬盘103通过查询FTL,确定与描述信息存在映射关系的物理块地址,也即确定了页面在存储节点100的存储位置。
又例如,描述信息为该页面所属文件的文件名以及页面在该文件中的偏移量时,存储节点100侧的数据是以文件的概念组织的。每个文件具备唯一的文件名。通过这些文件分组,将同组的文件放置在一个目录中,在一个目录之下还可以放置其他文件,或目录(也称为子目录),形成了具备树状结构的“文件***”。对于该树状结构中的任一文件,从该树状结构的根节点逐级向下,直至定位到该文件,形成该文件***。存储节点100(也即控制单元101)可以通过文件的文件路径访问该文件。存储节点100在接收到该描述信息后,能够根据该文件的文件名确定该文件的文件路径,定位到该文件。存储节点100根据该页面在该文件中的偏移量找到该页面在该文件中的位置,将从计算节点110获取的页面更新该位置处。
又例如,描述信息为该页面所属对象的对象ID以及页面在该对象中的偏移量时,存储节点100侧的数据是以对象的概念组织的。每个对象具备唯一的对象ID。与文件***不同,对象存储中没有目录、以及层级的概念,是一种扁平化的数据存储方式。存储节点100(也即控制单元101)能够根据对象ID直接定位到该对象。存储节点100在接收到该描述信息后,能够根据该对象的对象定位到该对象。存储节点100根据该页面在该对象中的偏移量找到该页面在该对象中的位置,将从计算节点110获取的页面更新该位置处。
区别与前述列举的集中描述信息,在本申请实施例中设计了一种新的描述信息,以指示该页面在存储节点100的存储位置。针对该新的描述信息的说明如下:
如图3所示,初始时,用户通过发起写数据请求以请求写入数据(步骤1)时,计算节点110为该待写入的数据寻找空白的页面,并为该页面设置页面标识(步骤2)。为了存储该待写入的数据,计算节点110在缓存池存储该空白的页面,将该待写入的数据写入到该空白的页面,在缓存池中记录该页面的页面标识。若写数据请求中携带了数据的逻辑块地址,计算节点110侧建立该逻辑块地址与该页面标识的映射关系,并保存该映射关系(步骤3)。若写数据请求中携带了数据所属文件的文件名以及在该文件中的偏移量,计算节点110侧建立数据所属文件的文件名以及在该文件中的偏移量、与该页面标识的映射关系。若写数据请求中携带了数据所属对象的对象ID以及在该对象中的偏移量,计算节点110侧建立数据所属对象的对象ID以及在该对象中的偏移量、与该页面标识的映射关系。计算节点110可以记录页面与存储节点100的归属关系。本申请实施例并不限定计算节点110记录的页面与存储节点100的归属关系的具体表现形式,例如,该归属关系可以表现为该页面的页面标识与存储节点100之间的对应关系。又例如,该归属关系可以表现为该页面的页面标识的哈希值与存储节点100之间的对应关系。
计算节点110与该存储节点100的配合下,将该页面持久化存储到存储节点100,在该过程中,计算节点110向存储节点100提供该页面的页面标识(步骤4)。存储节点100在接收到该页面的页面标识以及该页面后,在该存储节点100中为该页面分配存储位置,将该页面存储在该存储位置上(步骤5)。存储节点100建立页面的页面标识与页面的存储位置的映射关系(步骤6)。这样,该页面标识由于与页面的存储位置存在映射关系,使得该页面的页面标识也可以指示该页面在存储节点100中的存储位置。
需要说明的是,本申请实施例并不限定页面的页面标识与页面的存储位置的映射关系的具体表现形式。例如,存储节点100建立页面的页面标识与页面的页面的存储位置直接的映射关系。又例如,存储节点100建立页面的页面标识与页面的页面的存储位置之间间接的映射关系(如页面的页面标识的哈希值与页面的页面的存储位置之间间接的映射关系),这里列举几种映射关系的表现形式:
第一种、页面的页面标识与页面的逻辑块地址之间的映射关系(该映射关系可以由控制单元101维护),页面的逻辑块地址与页面的物理块地址之间的映射关系(也即FTL,该FTL可保存在硬盘103中,有硬盘103维护)。
第二种、页面的页面标识、与页面所属的文件的文件名以及页面在文件中的偏移之间的映射关系(该映射关系可以由控制单元101维护),页面所属的文件的文件名以及页面在文件中的偏移、与页面的物理块地址之间的映射关系(该映射关系可以由硬盘103维护)。
第三种、页面的页面标识、与页面所属的对象的对象ID以及页面在文件中的偏移之间的映射关系(该映射关系可以由控制单元101维护),页面所属的对象的对象ID以及页面在对象中的偏移、与页面的物理块地址之间的映射关系(该映射关系可以由硬盘103维护)。
由于该页面的页面标识的存在,本申请实施例提供了另一种计算节点110从存储节点100获取数据的方式。
例如,若用户还需要对该页面中的数据继续增、删、改等操作,用户发起写数据请求,该写数据请用于请求对数据进行增、删、改等操作,计算节点110根据该写数据请求确定该数据所在的页面的页面标识。也即计算节点110根据该计算节点110侧已建立的映射关系(如该逻辑块地址与该页面标识的映射关系、数据所属文件的文件名以及在该文件中的偏移量、与该页面标识的映射关系、或数据所属对象的对象ID以及在该对象中的偏移量、与该页面标识的映射关系)确定该页面的页面标识。
计算节点110向该存储节点100发起数据读取指令,该数据读取指令中可以携带该页面的页面标识,存储节点100在接收到该数据读取指令后,根据该存储节点100侧已建立的页面的页面标识与页面的存储位置的映射关系,确定该页面的存储位置。从该页面的存储位置读取该页面,将该页面反馈给计算节点110。
计算节点110从该存储节点100获取该页面,将该页面存储在缓存池,根据该写数据请求对该缓存池中的页面进行增、删、改等操作。
又例如,若用户还需要读取该页面中的数据,用户发起读数据请求,该读数据请用于请求读取数据,计算节点110根据该读数据请求确定该数据所在的页面的页面标识。也即计算节点110根据该计算节点110侧已建立的映射关系确定该页面的页面标识。
计算节点110向该存储节点100发起数据读取指令,该数据读取指令中可以携带该页面的页面标识,存储节点100在接收到该数据读取指令后,根据该存储节点100侧已建立的页面的页面标识与页面的存储位置的映射关系,确定该页面的存储位置。从该页面的存储位置读取该页面,将该页面反馈给计算节点110。
计算节点110从该存储节点100获取该页面,将该页面存储在缓存池,根据该读数据请求从该缓存池中的页面读取数据,将该数据反馈至用户。
综上可知,由于该页面的页面标识的存储,计算节点110从存储节点100读取数据除了利用发送数据的逻辑块地址、数据所属的文件的文件名(可选的,还包括数据在文件中的偏移量)、或数据所属的对象的对象ID(可选的,还包括数据在对象中的偏移量)的交互方式外,还可以利用发送页面的页面标识的交互方式实现。
下面以内存112中包括刷新缓存为例,结合附图2对本申请实施例提供的一种数据更新方法进行说明,应需理解的是,在刷新缓存与缓存池为同一缓存时,本申请实施例提供数据更新方法也同样适用,在这种情况下,缓存中页面的组织方式与刷新缓存中页面的组织方式类似,避免了缓存池到刷新缓存的数据的拷贝操作,仅需将下述实施例中的刷新缓存理解为该缓存即可。该方法包括:
步骤401:计算节点110将缓存池的页面拷贝到刷新缓存中。
计算节点110处理来自用户发起的写请求操作,根据该写请求操作能够对缓存池中所存储的页面更新。例如,计算节点110能够对在页面中增加数据、删除页面中的数据或者修改该页面中的数据。
为了能够将缓存池中的数据持久化到存储节点100中,计算节点110可以将缓存池中的页面拷贝到刷新缓存中,在刷新缓存中页面是以存储节点100为粒度组织的。计算节点110在将页面拷贝到刷新缓存中时,可以为每个页面中增加描述信息,该描述信息包括该页面的页面标识。
在刷新缓存中,属于同一存储节点100的页面被连续存储在一起,也即属于同一存储节点100的页面并非分散的,而是连续的存储在一段存储空间中。在每个页面之前或之后增加描述信息,以记录该页面的页面标识。
计算节点110可以周期性的将缓存池的页面拷贝到刷新缓存中,也可以在缓存池中的数据发生更新的情况下将缓存池的页面拷贝到刷新缓存中。
步骤402:针对任一存储节点100,计算节点110将刷新缓存中属于该存储节点100的页面的内存地址发送给该存储节点100。在本申请实施例中该页面的内存地址包括该页面中的数据在该内存112中的内存地址以及该页面的描述信息在该内存112中的内存地址。具体的,该页面的内存地址包括该页面中的数据在该刷新缓存中的内存地址以及该页面的描述信息在该刷新缓存中的内存地址。
计算节点110在执行步骤402时,计算节点110可以将刷新缓存中属于该存储节点100所有页面的内存地址发送给该存储节点100。计算节点110也可以将刷新缓存中属于该存储节点100部分页面的内存地址发送给该存储节点100。
下面以计算节点110将刷新缓存中属于该存储节点100所有页面的内存地址发送给该存储节点100为例进行说明。
如图5所示,为一种刷新缓存中属于该存储节点100的页面以及其描述信息的放置方式。每个页面的描述信息放置位于该页面之前。示例性的,图5中仅示例性的展示了5个页面,分别为页面A、页面B、页面C、页面D、页面E,该五个页面相应的描述信息,分别为描述信息A、描述信息B、描述信息C、描述信息D、描述信息E。当然在实际应用中,页面与其页面的描述信息也可以采用其他放置方式。图5仅是其中一种可能的放置方式。
所有页面的内存地址可以表示为该属于该存储节点100的所有页面(包括页面的描述信息)在刷新缓存中的起始内存地址以及所有页面(包括页面的描述信息)的数据长度。该页面的数据长度为该刷新缓存中属于该存储节点100的所有页面的总的数据长度。在图5中,该起始内存地址为描述信息A在刷新缓存中的起始内存地址。该数据长度为数据长度P,该数据长度包括了各个页面以及其描述信息。
所有页面的内存地址也可以表示为该属于该存储节点100的所有页面在刷新缓存中的起始内存地址以及页面的终止内存地址。起始内存地址为刷新缓存中属于该存储节点100的首个页面(包括页面的描述信息)的起始内存地址,终止内存地址为刷新缓存中属于该存储节点100的最后一个页面(包括页面的描述信息)的终止内存地址。在图5中,该起始内存地址为描述信息A在刷新缓存中的起始内存地址。终止内存地址为页面E在刷新缓存中的终止内存地址。
所有页面的内存地址可以表示为该属于该存储节点100的所有页面在刷新缓存中的起始内存地址以及页面的数量,该页面的数量。在图5中,该起始内存地址为描述信息A在刷新缓存中的起始内存地址。页面的数量为5。单个页面以及其描述信息的数据长度是固定的,以根据该页面的数量以及起始内存地址确定终止内存地址,或者根据该页面的数据、以及单个页面以及其描述信息的数据长度确定所有页面的总的数据长度。
本申请实施例并不限定计算节点110执行步骤402的时机。例如,计算节点110在刷新缓存中属于该存储节点100的页面的数据总量超过预设的数据阈值的情况下,向存储节点100发送该页面的内存地址。又例如,计算节点110周期性地向存储节点100发送该页面的内存地址,也就是说,计算节点110在检测到距离上一次向该存储节点100发送刷新缓存中属于该存储节点100的所有页面的内存地址的时间达到一个时间周期时,向存储节点100发送该页面的内存地址。又例如,计算节点110在刷新缓存中属于该存储节点100的页面的数量超过预设的数量阈值的情况下,向存储节点100发送该页面的内存地址。
由于在刷新缓存中属于同一存储节点100被连续的存储在一起,也即是说,属于同一存储节点100的页面的内存地址是连续的,计算节点110在向存储节点100发送页面的内存地址时,并不需要针对每个页面单独发送页面的内存地址,计算节点110仅需将所有或部分页面作为整体(该整体包括页面的描述信息),将该整体的内存地址发送给存储节点100即可,在一定程度上,能够减少计算节点110与存储节点100之间的交互次数。
步骤403:存储节点100获取该刷新缓存中属于该存储节点100的页面的内存地址,根据该页面的内存地址从计算节点110的内存中获取属于该存储节点100的页面,也即获取该内存地址上所存储的页面。
存储节点100在利用该页面的内存地址从计算节点110的内存中获取属于该存储节点100的页面时,可以通过单边RDMA的方式从计算节点110获取属于该存储节点100的页面。也即存储节点100向计算节点110的网卡113发起数据请求,该数据请求携带了该页面的内存地址。计算节点110的网卡113在接收到该数据请求后,从该页面指示的内存地址处获取属于该存储节点100的页面,计算节点110的网卡113获取的属于该存储节点100的页面发送给存储节点100。
步骤404:存储节点100在获取属于该存储节点100的页面后,对属于该存储节点100的页面进行持久化存储。
存储节点100在获取属于该存储节点100的页面后,可以直接对该属于该存储节点100的页面进行持久化存储。也即存储节点100直接将获取的属于该存储节点100的页面保存在该存储节点100的硬盘103中。存储节点100在将获取的、属于该存储节点100的页面保存在该存储节点100的硬盘103时,可以先解析获取的该页面中的描述信息,根据该描述信息确定该页面在存储节点100(如硬盘103)中的存储位置,存储节点100在确定了该页面在存储节点100的存储位置后,利用获取的页面中的数据更新该存储位置上存储的数据。
例如,该描述信息为页面的逻辑块地址。控制单元101向硬盘发送携带有该逻辑块地址的读取指令,硬盘103接收该读取指令,查询FTL,确定与描述信息存在映射关系的物理块地址,确定页面在存储节点100的存储位置。若硬盘103在FTL中未查询到与描述信息存在映射关系的物理块地址,硬盘103为该页面分配物理块地址,将该页面中的数据存储在该物理块地址上,并在该FTL中增加逻辑块地址与物理块地址的映射关系。
又例如,描述信息为该页面所属文件的文件名以及页面在该文件中的偏移量时,控制单元101根据该文件的文件名确定该文件的文件路径,定位到该文件。控制单元101根据该页面在该文件中的偏移量找到该页面在该文件中的位置,将从计算节点110获取的页面更新该位置处。若存储节点100侧的文件***中不存在该文件的文件路径,说明该文件为一个新创建的文件,控制单元101在该文件***中创建文件,建立该文件的文件路径,根据该页面在该文件中的偏移量找到该页面在该文件中的位置,将从计算节点110获取的页面更新该位置处。
又例如,描述信息为该页面所属对象的对象ID以及页面在该对象中的偏移量时,控制单元101根据对象ID定位到该对象,根据该页面在该对象中的偏移量找到该页面在该对象中的位置,将从计算节点110获取的页面更新该位置处。若存储节点100侧的不存在该对象ID,说明该对象为一个新创建的对象,控制单元101创建对象,为该对象配置该对象ID,根据该页面在该对象中的偏移量找到该页面在该对象中的位置,将从计算节点110获取的页面更新该位置处。
又例如,描述信息为该页面的页面标识,控制单元101根据该存储节点100侧已建立的页面的页面标识与页面的逻辑块地址的映射关系,确定该页面的逻辑块地址,控制单元101通过该页面的逻辑块地址将该页面存储在硬盘103中。若存储节点100根据该存储节点100侧已建立的页面的页面标识与页面的逻辑块地址的映射关系,但未找到与该页面标识存在映射关系的逻辑块地址,说明该页面为一个新创建的页面,控制单元101可以为该页面分配逻辑块地址,通过该页面的逻辑块地址将该页面存储硬盘103中,并记录该页面的页面标识与页面的物理块地址的映射关系。
存储节点100在获取属于该存储节点100的页面(包括页面的描述信息)后,也可以先缓存属于该存储节点100的页面,在缓存的页面的数量或者数据量达到一定阈值后,再对缓存的、该属于该存储节点100的页面进行持久化存储。例如,存储节点100可以将获取的、属于该存储节点100的页面(包括页面的描述信息)缓存在该存储节点100的内存中。当存储节点100的内存中的数据总量达到设定的阈值时,存储节点100将存储节点100的内存中缓存的页面更新到存储节点100的硬盘103中。
步骤405:存储节点100向该计算节点110发送通知消息,该通知消息用于指示属于该存储节点100的页面更新完成。
存储节点100完成持久化存储后,通过发送通知消息以及告知计算节点110,属于该存储节点100的页面更新完成。
步骤406:计算节点110回收刷新缓存中属于该存储节点100的页面所占用的存储空间,删除刷新缓存中该存储节点100的页面。
在步骤405中,以存储节点100主动向计算节点110发送通知消息为例进行说明,在实际应用中,计算节点110可以向存储节点100发送查询信息,该查询消息用于询问存储节点100是否完成页面更新。该查询消息中携带页面的描述信息。存储节点100在接收到该查询消息后,在确定该页面更新到硬盘103后,向计算节点110发送通知消息。
基于与方法实施例同一发明构思,本申请实施例还提供了一种数据更新装置,该数据更新置用于执行上述如图4所示的方法实施例中计算节点110执行的方法,相关特征可参见上述方法实施例,此处不再赘述。如图6所示,所述数据更新装置600包括第一传输模块601、处理模块602,可选的,该数据更新装置中还包括释放模块603。
第一传输模块601,用于将存储节点所存储的页面缓存在计算节点的内存中。
处理模块602,用于更新内存中页面中的数据。
第一传输模块601,用于向存储节点发送页面的内存地址,页面的内存地址为页面在内存中的地址。
作为一种可能的实施方式,存储***包括多个存储节点,计算节点的内存中相同存储节点所存储的页面缓存在连续的存储空间上。
作为一种可能的实施方式,该数据更新装置中还包括释放模块603。
第一传输模块601接收存储节点发送的通知消息,通知消息用于通知页面更新完成。
释放模块603在该第一传输模块601接收到该通知消息后,释放内存中页面占用的存储空间。
作为一种可能的实施方式,该数据更新装置中还包括释放模块603。
第一传递模块向存储节点发送查询消息,查询消息用于询问是否完成页面更新。
第一传输模块601接收存储节点发送的通知消息,通知消息用于通知页面更新完成。
释放模块603在该第一传输模块601接收到该通知消息后,释放内存中页面占用的存储空间。
作为一种可能的实施方式,内存中页面之前或之后存储页面的描述信息,页面的描述信息用于指示页面在存储节点的存储位置。
作为一种可能的实施方式,页面的内存地址包括页面中的数据在内存中的内存地址以及页面的描述信息在内存中的内存地址。
作为一种可能的实施方式,描述信息为计算节点为页面配置的页面标识,存储节点记录了页面标识与页面在存储节点的存储地址的映射关系。
基于与方法实施例同一发明构思,本申请实施例还提供了一种数据更新装置,该数据更新装置用于执行上述如图4所示的方法实施例中存储节点100执行的方法,相关特征可参见上述方法实施例,此处不再赘述。如图7所示,数据更新装置700包括第二传输模块701、更新模块702。
第二传输模块701,用于从计算节点接收页面的内存地址,根据页面的内存地址从计算节点中获取页面,页面的内存地址为页面在计算节点的内存中的地址。
更新模块702,用于根据获取的页面更新存储节点所存储的页面。
作为一种可能的实施方式,第传输模块根据页面的内存地址从计算节点中获取页面时,基于RDMA向计算节点的网卡发送数据请求,数据请求用于请求页面,数据请求携带页面的内存地址。
作为一种可能的实施方式,存储***包括多个存储节点,计算节点的内存中相同存储节点所存储的页面缓存在连续的存储空间上。
作为一种可能的实施方式,第二传输模块701在更新模块702更新存储节点所存储的页面之后,向计算节点发送通知消息,通知消息用于通知页面更新完成。
作为一种可能的实施方式,第二传输模块701接收计算节点发送的查询消息,查询消息用于询问是否完成页面更新。第二传输模块701在更新模块702更新存储节点所存储的页面之后,向计算节点发送通知消息,通知消息用于通知页面更新完成。
作为一种可能的实施方式,存储节点包括缓存以及硬盘,更新模块702根据获取的页面更新存储节点所存储的页面时,直接利用获取的页面更新硬盘中存储的页面。或者更新模块702将获取的页面存储在缓存中,利用缓存中的页面更新硬盘中存储的页面。
作为一种可能的实施方式,内存中页面之前或之后存储页面的描述信息,页面的描述信息用于指示页面在存储节点的存储位置。
作为一种可能的实施方式,页面的内存地址包括页面中的数据在内存中的内存地址以及页面的描述信息在内存中的内存地址。
作为一种可能的实施方式,存储节点根据获取的页面更新存储节点所存储的页面时,根据页面的描述信息确定存储节点中的页面的存储位置,将页面更新到存储位置处。
作为一种可能的实施方式,描述信息为计算节点为页面配置的页面标识,更新模块702记录了页面标识与页面在存储节点的存储地址的映射关系。
需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本申请的实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘(solid state drive,SSD)。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变形在内。
Claims (22)
1.一种存储***,其特征在于,所述存储***包括:
计算节点,用于将存储节点所存储的页面缓存在所述计算节点的内存中;更新所述内存中所述页面中的数据;向所述存储节点发送所述页面的内存地址,所述页面的内存地址为所述页面在所述内存中的地址;
所述存储节点,用于接收所述页面的内存地址,根据所述页面的内存地址从所述计算节点中获取所述页面;根据获取的所述页面更新所述存储节点所存储的页面。
2.如权利要求1所述的***,其特征在于,所述存储节点根据所述页面的内存地址从所述计算节点中获取所述页面,用于:
基于远程直接内存访问RDMA向所述计算节点的网卡发送数据请求,所述数据请求用于请求所述页面,所述数据请求携带所述页面的内存地址。
3.如权利要求2所述的***,其特征在于,所述存储***包括多个所述存储节点,所述计算节点的内存中相同存储节点所存储的页面缓存在连续的存储空间上。
4.如权利要求1-3任一项所述的***,其特征在于,
所述存储节点,还用于在更新所述存储节点所存储的页面之后,向所述计算节点发送通知消息,所述通知消息用于通知所述页面更新完成;
所述计算节点,还用于在接收到所述通知消息后,释放所述内存中所述页面占用的存储空间。
5.如权利要求1-3任一项所述的***,其特征在于,
所述计算节点,还用于向存储节点发送查询消息,所述查询消息用于询问是否完成所述页面更新;
所述存储节点,还用于在更新所述存储节点所存储的页面之后,向所述计算节点发送通知消息,所述通知消息用于通知所述页面更新完成;
所述计算节点,还用于在接收到所述通知消息后,释放所述内存中所述页面占用的存储空间。
6.如权利要求4或5所述的***,其特征在于,所述存储节点包括缓存以及硬盘,所述存储节点在根据获取的所述页面更新所述存储节点所存储的页面时,用于:
将获取的所述页面存储在所述缓存中;
利用所述缓存中的页面更新所述硬盘中存储的页面。
7.如权利要求1-6任一项所述的***,其特征在于,所述内存中所述页面之前或之后存储所述页面的描述信息,所述页面的描述信息用于指示所述页面在所述存储节点的存储位置。
8.如权利要求7所述的***,其特征在于,所述页面的内存地址包括所述页面中的数据在所述内存中的内存地址以及所述页面的描述信息在所述内存中的内存地址。
9.如权利要求8所述的***,其特征在于,所述存储节点在根据获取的所述页面更新所述存储节点所存储的页面时,用于:
根据所述页面的描述信息确定所述存储节点中的所述页面的存储位置,将所述页面更新到所述存储位置处。
10.如权利要求7-9任一项所述的***,其特征在于,所述描述信息为所述计算节点为所述页面配置的页面标识,所述存储节点记录了所述页面标识与所述页面在所述存储节点的存储地址的映射关系。
11.一种数据更新方法,其特征在于,所述方法应用于存储***,所述方法包括:
所述存储***中的计算节点将存储节点所存储的页面缓存在所述计算节点的内存中;
所述计算节点更新所述内存中所述页面中的数据,向所述存储节点发送所述页面的内存地址,所述页面的内存地址为所述页面在所述内存中的地址;
所述存储***中的存储节点接收所述页面的内存地址,根据所述页面的内存地址从所述计算节点中获取所述页面;
所述存储节点根据获取的所述页面更新所述存储节点所存储的页面。
12.如权利要求11所述的方法,其特征在于,所述存储节点根据所述页面的内存地址从所述计算节点中获取所述页面,包括:
所述存储节点基于远程直接内存访问RDMA向所述计算节点的网卡发送数据请求,所述数据请求用于请求所述页面,所述数据请求携带所述页面的内存地址。
13.如权利要求12所述的方法,其特征在于,所述存储***包括多个所述存储节点,所述计算节点的内存中相同存储节点所存储的页面缓存在连续的存储空间上。
14.如权利要求11-13任一项所述的方法,其特征在于,所述方法还包括:
所述存储节点在更新所述存储节点所存储的页面之后,向所述计算节点发送通知消息,所述通知消息用于通知所述页面更新完成;
所述计算节点接收到所述通知消息,释放所述内存中所述页面占用的存储空间。
15.如权利要求11-13任一项所述的方法,其特征在于,所述方法还包括:
所述计算节点向存储节点发送查询消息,所述查询消息用于询问是否完成页面更新;
所述存储节点在更新所述存储节点所存储的页面之后,向所述计算节点发送通知消息,所述通知消息用于通知所述页面更新完成;
所述计算节点接收所述通知消息,释放所述内存中所述页面占用的存储空间。
16.如权利要求14或15所述的方法,其特征在于,所述存储节点包括缓存以及硬盘,所述存储节点根据获取的所述页面更新所述存储节点所存储的页面,包括:
所述存储节点将获取的所述页面存储在所述缓存中;
所述存储节点利用所述缓存中的页面更新所述硬盘中存储的页面。
17.如权利要求11-16任一项所述的方法,其特征在于,所述内存中所述页面之前或之后存储所述页面的描述信息,所述页面的描述信息用于指示所述页面在所述存储节点的存储位置。
18.如权利要求17所述的方法,其特征在于,所述页面的内存地址包括所述页面中的数据在所述内存中的内存地址以及所述页面的描述信息在所述内存中的内存地址。
19.如权利要求18所述的方法,其特征在于,所述存储节点根据获取的所述页面更新所述存储节点所存储的页面,包括:
所述存储节点根据所述页面的描述信息确定所述存储节点中的所述页面的存储位置,将所述页面更新到所述存储位置处。
20.如权利要求17-19任一项所述的方法,其特征在于,所述描述信息为所述计算节点为所述页面配置的页面标识,所述存储节点记录了所述页面标识与所述页面在所述存储节点的存储地址的映射关系。
21.一种计算设备,其特征在于,所述计算设备包括处理器和存储器;
所述存储器用于存储计算机程序指令;
所述处理器用于调用所述存储器中存储的计算机程序指令执行如权利要求11-20任一所述的数据更新方法。
22.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述如权利要求11-20任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211011696.9A CN117667987A (zh) | 2022-08-23 | 2022-08-23 | 一种存储***、数据更新方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211011696.9A CN117667987A (zh) | 2022-08-23 | 2022-08-23 | 一种存储***、数据更新方法及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117667987A true CN117667987A (zh) | 2024-03-08 |
Family
ID=90073640
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211011696.9A Pending CN117667987A (zh) | 2022-08-23 | 2022-08-23 | 一种存储***、数据更新方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117667987A (zh) |
-
2022
- 2022-08-23 CN CN202211011696.9A patent/CN117667987A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104679669B (zh) | 高速缓存cache存储器***及访问缓存行cache line的方法 | |
CN106776967B (zh) | 基于时序聚合算法的海量小文件实时存储方法及装置 | |
KR101786871B1 (ko) | 원격 페이지 폴트 처리 장치 및 그 방법 | |
CN107329704B (zh) | 一种缓存镜像方法及控制器 | |
CN110858162B (zh) | 内存管理方法及装置、服务器 | |
CN114860163B (zh) | 一种存储***、内存管理方法和管理节点 | |
CN110555001B (zh) | 数据处理方法、装置、终端及介质 | |
JP2018520420A (ja) | ハイブリッドオブジェクトストレージデバイスのためのキャッシュアーキテクチャおよびアルゴリズム | |
US11314454B2 (en) | Method and apparatus for managing storage device in storage system | |
CN107341114B (zh) | 一种目录管理的方法、节点控制器和*** | |
CN113377868A (zh) | 一种基于分布式kv数据库的离线存储*** | |
CN115794669A (zh) | 一种扩展内存的方法、装置及相关设备 | |
CN109960662B (zh) | 一种内存回收方法及设备 | |
CN107992270B (zh) | 一种多控存储***全局共享缓存的方法及装置 | |
CN114625762A (zh) | 一种元数据获取方法、网络设备及*** | |
WO2016131175A1 (zh) | 多核***中数据访问者目录的访问方法及设备 | |
CN111475099B (zh) | 一种数据存储方法、装置及其设备 | |
CN110059026B (zh) | 一种目录处理方法、装置及存储*** | |
CN107133334B (zh) | 基于高带宽存储***的数据同步方法 | |
WO2016206070A1 (zh) | 一种文件更新方法及存储设备 | |
WO2022257685A1 (zh) | 存储***、网卡、处理器、数据访问方法、装置及*** | |
CN114785662B (zh) | 一种存储管理方法、装置、设备及机器可读存储介质 | |
WO2023035694A1 (zh) | 业务***、内存管理方法及装置 | |
CN117667987A (zh) | 一种存储***、数据更新方法及设备 | |
CN104508647B (zh) | 用于扩大超大规模计算***的存储器容量的方法和*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |