CN116560560A - 存储数据的方法和相关装置 - Google Patents
存储数据的方法和相关装置 Download PDFInfo
- Publication number
- CN116560560A CN116560560A CN202210114211.2A CN202210114211A CN116560560A CN 116560560 A CN116560560 A CN 116560560A CN 202210114211 A CN202210114211 A CN 202210114211A CN 116560560 A CN116560560 A CN 116560560A
- Authority
- CN
- China
- Prior art keywords
- data units
- target
- data
- unit
- storage node
- 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 263
- 230000015654 memory Effects 0.000 claims description 69
- 238000012545 processing Methods 0.000 claims description 37
- 230000008878 coupling Effects 0.000 claims description 9
- 238000010168 coupling process Methods 0.000 claims description 9
- 238000005859 coupling reaction Methods 0.000 claims description 9
- 230000003139 buffering effect Effects 0.000 claims description 3
- 230000002776 aggregation Effects 0.000 description 11
- 238000004220 aggregation Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 9
- 238000004590 computer program Methods 0.000 description 4
- 230000004931 aggregating effect Effects 0.000 description 3
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000003287 optical effect Effects 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种存储数据的方法和相关装置,该方法包括:计算节点确定目标文件中由同一个进程处理的多个数据单元,并将该多个数据单元发送至同一个存储节点。由于属于同一个进程的数据单元都被写入同一个存储节点,那么当读取一个进程的数据单元时,可以只从一个存储节点中读取所需要的数据单元,而无需从所有的存储节点中寻找需要读取的数据单元。因此,通过上述技术方案,在需要读写对同一个进程的数据单元时,可以只对保存有对同该进程的数据单元的一个存储节点进行读写操作,从而可以有效减少读写开销。
Description
技术领域
本发明实施例涉及存储领域,更具体地,涉及一种存储数据的方法和相关装置。
背景技术
计算机集群简称集群,是一种计算机***。计算机集群通过一组松散集成的计算机软件或硬件连接起来高度紧密地协作完成计算工作。
按照功能和结构,计算机集群可以分成以下几类:高可用性(high-availability,HA)集群、负载均衡(load balancing)集群、高性能计算(high performance computing,HPC)集群等。
计算机集群中的计算机设备可以称为节点。计算机集群中通常会包括多个计算节点和多个存储节点,其中计算节点负责执行计算任务,存储节点负责存储数据。为了获得更高的执行效率,通常会把计算任务划分为等大的分片,并将划分好的分片分别发送给多个计算节点的多个进程来执行。执行每个分片的计算任务的计算节点都会访问它需要的数据,因此计算机集群应用访问数据有两种典型的模型:1)N-N模型;2)N-1模型,其中N-1模型还包括N-1分片(N-1 segmented)模型和N-1跨步(N-1 strided)模型。
图1示出了N-N模型、N-1 segmented模型和N-1 strided模型的示意图。
如图1中的(a)所示,在N-N模型中,每个进程访问单独的文件,不同进程访问的文件之间不会存在冲突。
如图1中的(b)和(c)所示,在N-1 segmented模型和N-1 strided模型中,不同的进程访问同一个文件的不同位置。N-1 segmented模型和N-1 strided模型的区别在于每次访问的输入输出(input output,IO)粒度和每个进程为访问的连续区域不同。
N-1模型只使用了一个文件。因此,N-1模型对应用更加优化简单。但是,N-1strided模型中每个进程的读写的数据在文件中的位置是不连续的,并且IO粒度较小,所以容易造成较大的读写开销。因此,如何降低使用N-1 strided模型的读写开销是目前亟待解决的问题。
发明内容
本发明实施例提供一种存储数据的方法和相关装置,能够减少数据的读写开销。
第一方面,本发明提供一种存储数据的方法,该方法包括:计算节点获取目标文件中的所有对应于目标进程的数据单元,其中该目标文件包括多个数据单元,该多个数据单元中的每个数据单元与M个进程中的一个进程对应且该M个进程中的每个进程在该目标文件中有至少两个对应的数据单元,该目标进程为该M个进程中的一个且该目标进程由该计算节点运行,M为大于或等于2的正整数;该计算节点将所有对应于该目标进程的数据单元写入目标存储节点,其中该目标存储节点为该计算节点的多个可用存储节点中的一个。
上述技术方案将对应于同一个进程的数据单元都写入了同一个存储节点。这样,在写入数据的时候,可以只将对应于同一个进程的数据单元发送给一个存储节点,而无需分别发送给多个存储节点。此外,由于属于同一个进程的数据单元都被写入同一个存储节点,那么当读取一个进程的数据单元时,可以只从一个存储节点中读取所需要的数据单元,而无需从所有的存储节点中寻找需要读取的数据单元。因此,通过上述技术方案,在需要读写对同一个进程的数据单元时,可以只对保存有对同该进程的数据单元的一个存储节点进行读写操作,从而可以有效减少读写开销。
结合第一方面,在第一方面的一种可能的实现方式中,该多个数据单元中任意两个相邻的数据单元对应的进程不同。
结合第一方面,在第一方面的一种可能的实现方式中,该计算节点获取目标文件中的所有对应于目标进程的数据单元,包括:该计算节点确定该目标文件中所有与该目标进程的标识信息对应数据单元。
结合第一方面,在第一方面的一种可能的实现方式中,在该计算节点将所有对应于该目标进程的数据单元写入目标存储节点之前,该方法还包括:该计算节点从多个存储节点中确定与该目标进程的标识信息对应的存储节点为该目标存储节点。
结合第一方面,在第一方面的一种可能的实现方式中,该目标文件包括多组数据单元,该多组数据单元中每组数据单元包括M个数据单元,该M个数据单元分别对应于该M个进程,该目标文件中对应于同一进程的数据单元在该多组数据单元中的任意两组数据单元中的位置相同,该计算节点获取目标文件中的所有对应于目标进程的数据单元,包括:该计算节点根据该数据单元的长度、该多个数据单元中每个数据单元在该目标文件中的位置、以及进程数M,确定该每组数据单元中位于该目标进程对应位置的数据单元。
结合第一方面,在第一方面的一种可能的实现方式中,在该计算节点将所有对应于该目标进程的数据单元写入目标存储节点之前,该方法还包括:该计算节点从多个存储节点中确定与目标位置对应的存储节点为该目标存储节点,该目标位置为该每组数据单元中对应于该目标进程的数据单元所在的位置。
结合第一方面,在第一方面的一种可能的实现方式中,该计算节点将所有对应于该目标进程的数据单元写入目标存储节点包括:该计算节点将所有对应于该目标进程的数据单元分为K组数据单元,该K组数据单元中的每组数据单元包括多个对应于该目标进程的数据单元,K为大于或等于1的正整数;该计算节点将该K组数据单元写入该计算节点的缓存,该K组数据单元中的每组数据单元包括的多个数据单元在该缓存中的地址是连续的;该计算节点确定K个元数据,该K个元数据与该K组数据单元一一对应,该K个元数据中的每个元数据包括对应的一组数据单元中的每个数据单元的位置信息和该数据单元的长度;该计算节点将该K个目标元数据和从该缓存中获取到的该K组数据单元发送至该第一存储节点。
上述技术方案将多个小数据单元聚合为一个大数据单元,从而可以通过一次写入操作将原本需要多次写入操作的数据单元发送至存储节点。这样可以有效减少数据读写开销。另外,将多个元数据的聚合为一个元数据也可以有效减少元数据的读写开销。
结合第一方面,在第一方面的一种可能的实现方式中,该方法还包括:该计算节点获取读取指令,该读取指令用于指示从该目标存储节点中读取该K个元数据和该K个组数据单元;该计算节点从该目标存储节点读取该K个元数据和该K个组数据单元;该计算节点根据该K个元数据,确定该K组数据单元包括的每个数据单元在该目标文件中的位置。
第二方面,本发明提供一种计算机设备,该计算机设备包括用于实现第一方面或第一方面的任一种可能的实现方式的单元。
第三方面,本发明提供一种计算机设备,该计算机设备包括处理器,该处理器用于与存储器耦合,读取并执行该存储器中的指令和/或程序代码,以执行第一方面或第一方面的任一种可能的实现方式。
第四方面,本发明提供一种芯片***,该芯片***包括逻辑电路,该逻辑电路用于与输入/输出接口耦合,通过该输入/输出接口传输数据,以执行第一方面或第一方面任一种可能的实现方式。
第五方面,本发明提供一种计算机可读存储介质,该计算机可读存储介质存储有程序代码,当该计算机存储介质在计算机上运行时,使得计算机执行如第一方面或第一方面的任一种可能的实现方式。
第六方面,本发明提供一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在计算机上运行时,使得该计算机执行如第一方面或第一方面的任一种可能的实现方式。
附图说明
图1是N-N模型、N-1 segmented模型和N-1 strided模型的示意图。
图2是本发明实施例提供的一种计算集群的示意性结构图。
图3是应用、集成和计算节点的关系示意图。
图4是根据本发明实施例提供的一种存储数据的方法的示意性流程图。
图5是目标文件、进程和计算节点的对应关系示意图。
图6是一个目标文件的示意图。
图7是根据本发明实施例提供的一种计算机设备的结构框图。_
具体实施方式
下面将结合附图,对本发明中的技术方案进行描述。
图2是本发明实施例提供的一种计算集群的示意性结构图。
如图2所示,本实施例提供的计算集群包括计算节点子集群和存储节点子集群。
计算节点子集群包括一个或多个计算节点210(图1中示出了三个计算节点210,但不限于三个计算节点210),各个计算节点210之间可以相互通信。
计算节点210是一种计算设备,如服务器、台式计算机或者存储阵列的控制器等。在硬件上,如图2所示,计算节点210至少包括处理器212、内存213和网卡214。其中,处理器212是一个中央处理器(central processing unit,CPU),用于处理来自计算节点210外部的数据访问请求,或者计算节点210内部生成的请求。示例性的,处理器212接收用户发送的写数据请求时,会将这些写数据请求中的数据暂时保存在内存213中。当内存213中的数据总量达到一定阈值时,处理器212将内存213中存储的数据发送给存储节点200进行持久化存储。除此之外,处理器212还用于数据进行计算或处理,例如元数据管理、重复数据删除、数据压缩、虚拟化存储空间以及地址转换等。图2中仅示出了一个CPU 212,在实际应用中,CPU 212的数量往往有多个,其中,一个CPU 212又具有一个或多个CPU核。本实施例不对CPU的数量,以及CPU核的数量进行限定。
内存213是指与处理器直接交换数据的内部存储器,它可以随时读写数据,而且速度很快,作为操作***或其他正在运行中的程序的临时数据存储器。内存包括至少两种存储器,例如内存既可以是随机存取存储器,也可以是只读存储器(read only memory,ROM)。举例来说,随机存取存储器是动态随机存取存储器(dynamic random access memory,DRAM),或者存储级存储器(storage class memory,SCM)。DRAM是一种半导体存储器,与大部分随机存取存储器(Random Access Memory,RAM)一样,属于一种易失性存储器(volatile memory)设备。SCM是一种同时结合传统储存装置与存储器特性的复合型储存技术,存储级存储器能够提供比硬盘更快速的读写速度,但存取速度上比DRAM慢,在成本上也比DRAM更为便宜。然而,DRAM和SCM在本实施例中只是示例性的说明,内存还可以包括其他随机存取存储器,例如静态随机存取存储器(static random access memory,SRAM)等。而对于只读存储器,举例来说,可以是可编程只读存储器(programmable read only memory,PROM)、可抹除可编程只读存储器(erasable programmable read only memory,EPROM)等。另外,内存213还可以是双列直插式存储器模块或双线存储器模块(dual in-line memorymodule,DIMM),即由动态随机存取存储器(DRAM)组成的模块,还可以是固态硬盘(solidstate disk,SSD)。实际应用中,计算节点210中可配置多个内存213,以及不同类型的内存213。本实施例不对内存213的数量和类型进行限定。此外,可对内存213进行配置使其具有保电功能。保电功能是指***发生掉电又重新上电时,内存213中存储的数据也不会丢失。具有保电功能的内存被称为非易失性存储器。
网卡214用于与存储节点200通信。例如,当内存213中的数据总量达到一定阈值时,计算节点210可通过网卡214向存储节点200发送请求以对所述数据进行持久化存储。另外,计算节点210还可以包括总线,用于计算节点210内部各组件之间的通信。在功能上,由于图2中的计算节点210的主要功能是计算业务,在存储数据时可以利用远程存储器来实现持久化存储,因此它具有比常规服务器更少的本地存储器,从而实现了成本和空间的节省。但这并不代表计算节点210不能具有本地存储器,在实际实现中,计算节点210也可以内置少量的硬盘,或者外接少量硬盘。
任意一个计算节点210可通过网络访问存储节点子集群中的任意一个存储节点200。存储节点子集群包括多个存储节点200(图2中示出了三个存储节点200,但不限于三个存储节点200)。一个存储节点200包括一个或多个控制器201、网卡204与多个硬盘205。网卡204用于与计算节点210通信。硬盘205用于存储数据,可以是磁盘或者其他类型的存储介质,例如固态硬盘或者叠瓦式磁记录硬盘等。控制器201用于根据计算节点210发送的读/写数据请求,往硬盘205中写入数据或者从硬盘205中读取数据。在读写数据的过程中,控制器201需要将读/写数据请求中携带的地址转换为硬盘能够识别的地址。由此可见,控制器201也具有一些简单的计算功能。
在实际应用中,控制单元201可具有多种形态。一种情况下,控制单元201包括CPU和内存。CPU用于执行地址转换以及读写数据等操作。内存用于临时存储将要写入硬盘205的数据,或者从硬盘205读取出来将要发送给计算节点210的数据。另一种情况下,,控制单元201是一个可编程的电子部件,例如数据处理单元(data processing unit,DPU)。DPU具有CPU的通用性和可编程性,但更具有专用性,可以在网络数据包,存储请求或分析请求上高效运行。DPU通过较大程度的并行性(需要处理大量请求)与CPU区别开来。可选的,这里的DPU也可以替换成图形处理单元(graphics processing unit,GPU)、嵌入式神经网络处理器(neural-network processing units,NPU)等处理芯片。通常情况下,控制单元201的数量可以是一个,也可以是两个或两个以上。当存储节点200包含至少两个控制单元201时,硬盘205与控制单元201之间可具有归属关系。当硬盘205与控制单元201之间具有归属关系时,每个控制器只能访问归属于它的硬盘,因此这往往涉及到在控制单元201之间转发读/写数据请求,导致数据访问的路径较长。另外,如果存储空间不足,在存储节点200中增加新的硬盘205时需要重新绑定硬盘205与控制器201之间的归属关系,操作复杂,导致存储空间的扩展性较差。
因此在另一种实施方式中,控制单元201的功能可以卸载到网卡204上。换言之,存储节点200内部不具有控制器201,而是由网卡204来完成数据读写、地址转换以及其他计算功能。此时,网卡204是一个智能网卡。它可以包含CPU和内存。CPU用于执行地址转换以及读写数据等操作。内存103用于临时存储将要写入硬盘205的数据,或者从硬盘205读取出来将要发送给计算节点210的数据。也可以是一个可编程的电子部件,例如数据处理单元(dataprocessing unit,DPU)。DPU具有CPU的通用性和可编程性,但更具有专用性,可以在网络数据包,存储请求或分析请求上高效运行。DPU通过较大程度的并行性(需要处理大量请求)与CPU区别开来。可选的,这里的DPU也可以替换成图形处理单元(graphics processingunit,GPU)、嵌入式神经网络处理器(neural-network processing units,NPU)等处理芯片。存储节点200中的网卡204和硬盘205之间没有归属关系,网卡204可访问该存储节点200中任意一个硬盘205,因此在存储空间不足时扩展硬盘会较为便捷。
存储节点子集群通过并行文件***存储计算节点需要访问的数据。并行文件***需要统一命名空间,并且可以支持多客户端/多进程并行访问。应用可以通过可移植操作***接口(portable operating system interface of UNIX,POSIX)或者消息传递接口(message passing interface,MPI)来访问并行文件***。在使用POSIX读写并行文件***中的数据时,应用互斥访问文件时的数据一致性可以由并行文件***来提供。在使用MPI读写并行文件***中的数据时,应用在各个节点的各个进程上运行的任务分片相互之间可以通过MPI进行通信,他们之间会协商并保证文件的数据访问不会产生交叠,不需要文件***提供数据一致性保护。
图3是应用、进程和计算节点的关系示意图。
计算集群的应用(application)可以由多个进程组成。如图3所示的应用由进程0至进程5组成。不同的进程可以由不同的计算节点运行。如图3所示,进程0和进程3由计算节点0运行,进程1和进程4由计算节点1运行,进程2和进程5由计算节点2运行。
本发明实施例中所称的数据单元是指文件中的一段数据。该文件可以由分布式文件***从存储节点子集群中获取。进程以一个数据单元的大小为粒度从文件中获取需要处理的数据。换句话说,一个数据单元可以理解为进程通过一次读操作从文件中获取到的数据。一个数据单元的大小就是这一次读操作的需要读取的数据大小。
图4是根据本发明实施例提供的一种存储数据的方法的示意性流程图。
401,计算节点获取目标文件中的所有对应于目标进程的数据单元,其中该目标文件包括多个数据单元,该多个数据单元中的每个数据单元与M个进程中的一个进程对应且M个进程中的每个进程在目标文件中有至少两个对应的数据单元,该第一进程为该M个进程中的一个且该目标进程由该计算节点运行,M为大于或等于2的正整数。
402,该计算节点将所有对应于目标进程的数据单元写入目标存储节点,其中该目标存储节点为该计算节点的多个可用存储节点中的一个。
如图4所示的技术方案将对应于同一个进程的数据单元都写入了同一个存储节点。这样,在写入数据的时候,可以只将对应于同一个进程的数据单元发送给一个存储节点,而无需分别发送给多个存储节点。此外,由于属于同一个进程的数据单元都被写入同一个存储节点,那么当读取一个进程的数据单元时,可以只从一个存储节点中读取所需要的数据单元,而无需从所有的存储节点中寻找需要读取的数据单元。因此,通过上述技术方案,在需要读写对同一个进程的数据单元时,可以只对保存有对同该进程的数据单元的一个存储节点进行读写操作,从而可以有效减少读写开销。
下面,结合图5对图4所示的方法进行介绍。
如图5所示,应用由进程0至进程5组成,进程0和进程3由计算节点0运行,进程1和进程4由计算节点1运行,进程2和进程5由计算节点2运行。
目标文件共包括18个数据单元,分别可以称为数据单元0至数据单元17。
表1示出了18个数据单元和6个进程的对应关系。
表1
进程 | 数据单元 |
0 | 0,6,12 |
1 | 1,7,13 |
2 | 2,8,14 |
3 | 3,9,15 |
4 | 4,10,16 |
5 | 5,11,17 |
如表1所以,与进程0对应的数据单元包括数据单元0、数据单元6和数据单元12,与进程3对应的数据单元包括数据单元3、数据单元9和数据单元15。
在一些实施例中,每个进程有一个标识信息(例如任务标识(taskID),不同进程的标识信息不同。数据单元的进程标识信息就是该数据单元对应的进程的标识信息。以表1为例,如果进程0的标识信息为0,那么数据单元0、数据单元6和数据单元12的进程标识信息为0;如果进程4的标识信息为4,那么数据单元4、数据单元10和数据单元16的进程标识信息为4。在此情况下,可以根据数据单元的进程标识信息确定数据单元是否对应于同一个进程。
在利用POSIX访问并行存储***的情况下,每个数据单元的进程标识信息可以通过劫持代码获得。通过劫持代码,可以确定每个数据单元是由哪个进程执行的,从而可以确定每个数据单元的进程标识信息。
以MPI框架运行的应用在使用MPI-IO访问数据时,接口中会携带应用访问的IO信息。在此情况下,可以直接从该IO信息中确定每个数据单元是由哪个进程获取的。这样就可以确定出数据单元的进程标识信息。
在另一些实施例中,可以根据每个数据单元的相对位置来确定数据单元对应的进程是否相同。应用中的进程是按照顺序对目标文件进行读取获取数据单元的。因此,目标文件中的数据单元是具有一定规律性的。目标文件中的数据单元可以分为多组,每组数据单元可以包括的数据单元数目与进程总数相同。例如,如果目标文件由M个进程负责处理,那么每组数据单元包括M个数据单元,该M个数据单元分别由该M个进程处理。每个进程处理的数据单元在任意两组数据单元中的位置是相同的。
图6是一个目标文件的示意图。如图6所示的目标文件是使用不同的填充来表示图5所示的文件***中对应于不同进程的数据单元。如图6所示的目标文件可以分为三组数据单元,每组数据单元包括6个数据单元,该6个数据单元与进程0至进程5一一对应。如图6所示的目标文件中的数据单元可以认为是按照如图6所示的图案的顺序重复出现的。因此,对应于同一个进程的数据单元在图案中的位置都是相同的。例如,对应于进程0的数据单元都是图案中的第一个数据单元,对应于进程1的数据单元的是第3个数据单元。因此,可以确定不同的数据单元在图案中的位置(可以称为相对位置)是否相同来确定数据单元是否对应于同一个进程。数据单元的相对位置可以根据以下公式确定:
LOCr(i)=offset(i)%trideunitsize, (公式1)
其中,LOCr(i)表示数据单元i的相对位置,offset(i)表示数据单元i的偏移量,strideunitsize为进程总数与读写长度(即每个数据单元的长度)的乘积,%表示取余运算。
数据单元i的偏移量(也可以称为数据单元i的位置)可以由应用指定。不同应用指定的数据单元的偏移量可以相同也可以不相同。
在以MPI访问并行存储***的情况下,以MPI框架运行的应用在使用MPI-IO访问数据时,接口中会携带应用访问的IO信息,例如每次IO的数据类型、数量等。因此,计算节点在应用MPI访问目标文件的情况下,可以在抽象设备IO层(abstract device I/O,ADIO)获取集合(collective)IO信息,该聚合IO中包括每次IO大小以及进程总数。每次IO大小就是单个数据单元的长度。因此,根据每次IO大小和进程总数的乘积,可以得到公式1中的trideunitsize。
还以图6为例,假设每个数据单元的长度为x,那么strideunitsize=6x。那么图6中的18个数据单元的相对位置可以如表2所示。
表2
根据表2可以看出数据单元0、6和12是对应于同一个进程的数据单元。
根据相对位置和进程的对应关系,可以确定出每个数据单元对应的进程。假设相对位置和进程的对应关系如表3所示。
表3
相对位置 | 进程 |
0 | 0 |
1 | 1 |
2 | 2 |
3 | 3 |
4 | 4 |
5 | 5 |
那么,根据表3可以确定出数据单元0、6和12对应于进程0。
在确定出属于同一个进程的数据单元后,计算节点可以将属于同一个进程的数据单元发送至同一个存储节点。
每个进程都有一个对应的存储节点。计算节点可以根据进程和节点的对应关系,确定用于存储对应于目标进程的数据单元的存储节点。
在一些实施例中,进程和节点的对应关系可以根据进程的标识信息确定。换句话说,计算节点可以根据进程的标识信息确定出该进程对应的存储节点。还以目标进程为例,计算节点可以根据目标进程的标识信息和可用存储节点的总数,确定用于存储第一进程的第一存储节点。该目标存储节点是该计算节点的多个可用存储节点中的一个。
为例便于描述,以下假设可用存储节点的数目为NSN。显然NSN应该是大于或等于2的正整数。
在一些实施例中,可以对数据单元对应的进程的标识信息(以下称为第一标识信息)和NSN取余,根据取余的结果,确定用于存储数据单元的存储节点。第一标识信息是大于或等于0的正整数,NSN是大于或等于1的正整数。因此,第一标识信息对NSN的取余后的结果为大于或等于0且小于NSN的整数。NSN个可用存储节点可以被分为可用存储节点0、可用存储节点1,……,可用存储节点NSN-1。如果第一标识信息对NSN的取余后的结果为nSN(nSN为大于或等于0且小于NSN的整数),则将所有对应于该第一标识信息的数据单元发送至可用存储节点nSN。例如,如果第一标识信息对NSN的取余后的结果为0,则将所有对应于该第一标识信息的数据单元发送至可用存储节点0;如果第一标识信息对NSN的取余后的结果为1,则将所有对应于该第一标识信息的数据单元发送至可用存储节点1,以此类推。
还以图4所示的场景为例,假设存储节点总数为3(分别称为存储节点0、存储节点1和存储节点2),且进程0至进程5的标识信息分别为0至5。那么,根据上述技术方案,进程0和进程3的数据单元可以被存储到存储节点0,进程1和进程4的数据单元可以被存储到存储节点1,进程2和进程5的数据单元可以被存储到存储节点2。
在另一些实施例中,可以对计算节点的标识信息(以下称为第二标识信息)和NSN取余,根据取余结果,确定用于存储数据单元的存储节点。第二标识信息是大于或等于0的正整数,NSN是大于或等于1的正整数。因此,第二标识信息对NSN的取余后的结果为大于或等于0且小于NSN的整数。具体数据单元的存储方法和根据数据单元对应的进程的标识信息和NSN取余的存储方法相同,
在另一些实施例中,进程和节点的对应关系可以根据进程对应的数据单元的相对位置确定。换句话说,计算节点可以根据进程对应的数据单元的相对位置确定出该进程对应的存储节点。还以目标进程为例,该计算节点从多个存储节点中确定与目标位置对应的存储节点为该目标存储节点,该目标位置为该每组数据单元中对应于该目标进程的数据单元所在的位置。该目标存储节点是该计算节点的多个可用存储节点中的一个。计算节点可以对数据单元的相对位置和NSN取余,根据取余结果,确定用于存储数据单元的存储节点。相对位置是大于或等于0的正整数,NSN也是大于或等于1的正整数。因此,相对位置对NSN的取余后的结果为大于或等于0且小于NSN的整数。因此,相对位置息对NSN的取余后的结果为大于或等于0且小于NSN的整数。NSN个可用存储节点可以被分为可用存储节点0、可用存储节点1,……,可用存储节点NSN-1。如果相对位置对NSN的取余后的结果为nSN(nSN为大于或等于0且小于NSN的整数),则将该相对位置的数据单元发送至可用存储节点nSN。例如,如果相对位置对NSN的取余后的结果为0,则将该相对位置的数据单元发送至可用存储节点0;如果相对位置对NSN的取余后的结果为1,则将该相对位置的数据单元发送至可用存储节点1,以此类推。
在一些实施例中,假设NSN的值为2,那么可以直接判断第一标识信息/第二标识信息/相对位置是奇数还是偶数。以第一标识信息为例,可以将第一标识信息为奇数的数据单元存储到两个可用存储节点中的一个,将第一标识信息为偶数的数据单元存储到两个可用存储节点中的另一个。
在另一些实施例中,计算节点和存储节点的对应关系是预先设定并保存在计算节点中的。计算节点可以通过查询该对应关系直接将运行在该计算节点中的进程的数据发送至对应的存储节点。假设计算节点数目为9,存储节点数目为3。那么计算节点可以根据如表4所示的对应关系确定保存数据单元的存储节点。
表4
计算节点 | 存储节点 |
0,1,2 | 0 |
3,4,5 | 1 |
6,7,8 | 2 |
如表4所示,计算节点0可以将计算节点0中运行的进程的数据单元都保存至存储节点0,计算节点3可以将计算节点3中运行的进程的数据单元都保存至存储节点1。
在一些实施例中,计算节点可以直接将属于同一进程的数据单元和数据单元对应的元数据发送至确定好的存储节点中。
在另一些实施例中,在将对应于同一个进程的多个数据单元发送至确定好的存储节点之前,计算节点可以先对该多个数据单元进行聚合。具体地,计算节点可以在内存(例如图2中的内存213)中为每个进程分配一段缓存。需要发送给存储节点的多个进程可以被写入到为该进程分配的缓存中,且该多个计算单元在缓存中的存储地址是连续的。该多个数据单元还分别对应多个元数据,每个元数据包括对应的数据单元对应的进程的标识信息和数据单元在缓存中的存储地址。在对数据单元进行聚合时,还可以将该多个数据单元对应的多个元数据进行聚合。聚合后的元数据可以包括数据单元的位置信息和数据单元的长度。聚合后的元数据还可以包括进程总数。在对数据单元和元数据进行聚合后,计算节点可以将聚合后的数据单元和元数据发送给存储节点。相应的,在获取到读指令的时候,计算节点可以从对应的存储节点读取聚合后的数据单元和元数据。计算节点可以根据聚合后的元数据,将聚合后的数据单元恢复为聚合前的数据单元,并确定出聚合前的每个数据单元在目标文件中的位置。
可选的,在一些实施例中,可以设置一个聚合阈值,如果计算节点获取到的对应于同一进程的数据单元数目大于该聚合阈值,则可以将获取到的数据单元分为多个数据单元集合,该多个数据单元集合中的每个数据单元集合包括的数据单元数目小于或等于该聚合阈值。属于同一个数据单元集合的多个数据单元可以被聚合为一个数据单元。
通过聚合数据单元,可以按照聚合后的数据单元大小一次性地将聚合后数据单元发送至存储节点。还以图5所示的场景为例,如果不进行数据单元聚合,那么计算节点0需要通过三次写入操作才能将数据单元0、数据单元6和数据单元12写入到存储节点。但是,如果将数据单元0、数据单元6和数据单元12聚合为一个大的数据单元,那么计算节点0可以只通过一次写入操作就将三个数据单元写入到存储节点。换句话说,通过聚合操作,计算节点可以将多个小写入操作聚合为一个大写入操作。同理,如果不进行聚合操作,那么计算节点0如果希望从存储节点获取数据单元0、数据单元6和数据单元12,那么计算节点0需要通过三次读操作才能获取这三个数据单元。但是,如果进行聚合操作,那么计算节点0可以只通过一次读操作就能从存储节点读取这三个数据单元。由此可见,通过聚合操作可以有效减少IO次数。另外,通过聚合操作,元数据的数量也从三个减小为1个。这样可以有效减少元数据的读写开销。除此之外,数据单元是按照访问顺序聚合在一起的。
此外,在数据读取时,计算节点可以根据智能识别后续访问数据位置,触发智能预读,如果读取的进程数和IO大小都与写入时一样,就几乎全部是顺序读。
还以图5所示的场景为例,假设在读取存储在存储节点中的数据单元0至数据单元17的时候,应用依然是通过进程0至进程5实现的,且单个数据单元的大小仍然与图5中所示的单个数据单元的大小相同。此外,假设数据单元0、数据单元6和数据单元12被聚合为数据单元A1存储在存储节点中。进程0在读取数据单元的时候,可以直接按照地址顺序和单个数据单元的大小,依次从数据单元A1中读取数据单元0、数据单元6和数据单元12。
在一些实施例中,计算节点可以周期性地将缓存中的数据单元发送至确定好的存储节点。
在另一些实施例中,计算节点根据指令(例如fsync)将缓存中的数据单元发送至确定好的存储节点。
在另一些实施例中,计算节点也可以根据缓存中已用空间和总缓存空间的比值来确定何时将缓存中的数据单元发送至确定好的存储节点。假设计算节点确定进程对应的缓存中,已经占用的缓存空间与该进程对应的总缓存空间之比大于或等于预设阈值,那么可以将该该缓存中的数据单元发送至确定好的存储节点。
在另一些实施例中,计算节点也可以同时根据周期、指令和缓存占用比例(即已占用缓存空间大小/总缓存空间大小)中的多个来确定何时将缓存中的数据发送至确定好的存储节点。例如,在一个周期内如果计算节点接收到了发送指令,那么即使周期没有结束,该计算节点也将缓存中的数据发送至确定好的存储节点。又如,如果存储节点没有接收到发送指令或者周期没有结束,但是进程对应的缓存空间的占用比例已经大于该预设阈值,那么该计算节点可以将缓存中的数据单元发送至确定好的存储节点。
图7是根据本发明实施例提供的一种计算机设备的结构框图。如图7所示的计算机设备700包括处理单元701和发送单元702。
处理单元701,用于获取目标文件中的所有对应于目标进程的数据单元,其中该目标文件包括多个数据单元,该多个数据单元中的每个数据单元与M个进程中的一个进程对应且该M个进程中的每个进程在该目标文件中有至少两个对应的数据单元,该目标进程为该M个进程中的一个且该目标进程由计算机设备700运行,M为大于或等于2的正整数。
发送单元702,用于将所有对应于该目标进程的数据单元写入目标存储节点,其中该目标存储节点为计算机设备700的多个可用存储节点中的一个。
在一些实施例中,计算机设备700还可以包括缓存单元703。处理单元701,还用于将所有对应于该目标进程的数据单元分为K组数据单元,该K组数据单元中的每组数据单元包括多个对应于该目标进程的数据单元,K为大于或等于1的正整数;处理单元701,还用于将该K组数据单元写入缓存单元703,该K组数据单元中的每组数据单元包括的多个数据单元在缓存单元703中的地址是连续的;处理单元701,还用于确定K个元数据,该K个元数据与该K组数据单元一一对应,该K个元数据中的每个元数据包括对应的一组数据单元中的每个数据单元的位置信息和该数据单元的长度;发送单元702,具体用于将该K个目标元数据和从缓存单元703中获取到的该K组数据单元发送至该第一存储节点。
在一些实施例中,计算机设备700还包括接收单元704。处理单元701,还用于获取读取指令,该读取指令用于指示从该目标存储节点读取该K个元数据和该K个组数据单元。接收单元704,用于根据该处理单元获取到的该读取指令从该目标存储节点读取该K个元数据和该K个组数据单元。处理单元701,还用于根据该K个元数据,确定该K组数据单元包括的每个数据单元在该目标文件中的位置。
处理单元701、发送单元702、缓存单元703和接收单元704的具体功能和有益效果可以参见上述实施例,为了简洁,在此就不再赘述。
如图7所示的计算机设备700可以是如图2所示的计算节点210。处理单元701可以是如图2所示的CPU 212,缓存单元可以是如图2所示的内存213,发送单元702和接收单元704可以是图2所示的网卡214。
本发明实施例还提供一种计算机设备,该计算机设备包括处理器,该处理器用于与存储器耦合,读取并执行该存储器中的指令和/或程序代码,以执行上述实施例中的方法。
本发明实施例提供一种芯片***,该芯片***包括逻辑电路,该逻辑电路用于与输入/输出接口耦合,通过该输入/输出接口传输数据,以执行上述实施例中的方法。
本发明实施例提供一种计算机可读存储介质,该计算机可读存储介质存储有程序代码,当该计算机存储介质在计算机上运行时,使得计算机执行如执行上述实施例中的方法。
本发明实施例提供一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在计算机上运行时,使得该计算机执行如执行上述实施例中的方法。
应理解,本发明实施例中的处理器可以是集成电路芯片,具有处理信号的能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。处理器可以是中央处理单元(central processing unit,CPU),还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(fieldprogrammable gate array,FPGA)或其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。本发明实施例公开的方法的步骤可以直接体现为硬件编码处理器执行完成,或者用编码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
本发明实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasablePROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronousDRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(sync link DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambusRAM,DRRAM)。
需要说明的是,当处理器为通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件时,存储器(存储模块)可以集成在处理器中。
还需要说明的是,本文描述的存储器旨在包括但不限于这些和任意其它适合类型存储器。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (19)
1.一种存储数据的方法,其特征在于,所述方法包括:
计算节点获取目标文件中的所有对应于目标进程的数据单元,其中所述目标文件包括多个数据单元,所述多个数据单元中的每个数据单元与M个进程中的一个进程对应且所述M个进程中的每个进程在所述目标文件中有至少两个对应的数据单元,所述目标进程为所述M个进程中的一个且所述目标进程由所述计算节点运行,M为大于或等于2的正整数;
所述计算节点将所有对应于所述目标进程的数据单元写入目标存储节点,其中所述目标存储节点为所述计算节点的多个可用存储节点中的一个。
2.根据权利要求1所述的方法,其特征在于,所述多个数据单元中任意两个相邻的数据单元对应的进程不同。
3.根据权利要求1或2所述的方法,其特征在于,所述计算节点获取目标文件中的所有对应于目标进程的数据单元,包括:
所述计算节点确定所述目标文件中所有与所述目标进程的标识信息对应数据单元。
4.根据权利要求3所述的方法,其特征在于,在所述计算节点将所有对应于所述目标进程的数据单元写入目标存储节点之前,所述方法还包括:所述计算节点从多个存储节点中确定与所述目标进程的标识信息对应的存储节点为所述目标存储节点。
5.根据权利要求2所述的方法,其特征在于,所述目标文件包括多组数据单元,所述多组数据单元中每组数据单元包括M个数据单元,所述M个数据单元分别对应于所述M个进程,所述目标文件中对应于同一进程的数据单元在所述多组数据单元中的任意两组数据单元中的位置相同,
所述计算节点获取目标文件中的所有对应于目标进程的数据单元,包括:
所述计算节点根据所述数据单元的长度、所述多个数据单元中每个数据单元在所述目标文件中的位置、以及进程数M,确定所述每组数据单元中位于所述目标进程对应位置的数据单元。
6.根据权利要求5所述的方法,其特征在于,在所述计算节点将所有对应于所述目标进程的数据单元写入目标存储节点之前,所述方法还包括:所述计算节点从多个存储节点中确定与目标位置对应的存储节点为所述目标存储节点,所述目标位置为所述每组数据单元中对应于所述目标进程的数据单元所在的位置。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述计算节点将所有对应于所述目标进程的数据单元写入目标存储节点包括:
所述计算节点将所有对应于所述目标进程的数据单元分为K组数据单元,所述K组数据单元中的每组数据单元包括多个对应于所述目标进程的数据单元,K为大于或等于1的正整数;
所述计算节点将所述K组数据单元写入所述计算节点的缓存,所述K组数据单元中的每组数据单元包括的多个数据单元在所述缓存中的地址是连续的;
所述计算节点确定K个元数据,所述K个元数据与所述K组数据单元一一对应,所述K个元数据中的每个元数据包括对应的一组数据单元中的每个数据单元的位置信息和所述数据单元的长度;
所述计算节点将所述K个目标元数据和从所述缓存中获取到的所述K组数据单元发送至所述第一存储节点。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
所述计算节点获取读取指令,所述读取指令用于指示从所述目标存储节点中读取所述K个元数据和所述K个组数据单元;
所述计算节点从所述目标存储节点读取所述K个元数据和所述K个组数据单元;
所述计算节点根据所述K个元数据,确定所述K组数据单元包括的每个数据单元在所述目标文件中的位置。
9.一种计算机设备,其特征在于,所述计算机设备包括:
处理单元,用于获取目标文件中的所有对应于目标进程的数据单元,其中所述目标文件包括多个数据单元,所述多个数据单元中的每个数据单元与M个进程中的一个进程对应且所述M个进程中的每个进程在所述目标文件中有至少两个对应的数据单元,所述目标进程为所述M个进程中的一个且所述目标进程由所述计算机设备运行,M为大于或等于2的正整数;
发送单元,用于将所有对应于所述目标进程的数据单元写入目标存储节点,其中所述目标存储节点为所述计算机设备的多个可用存储节点中的一个。
10.根据权利要求9所述的计算机设备,其特征在于,所述多个数据单元中任意两个相邻的数据单元对应的进程不同。
11.根据权利要求9或10所述的计算机设备,其特征在于,所述处理单元,具体用于确定所述目标文件中所有与所述目标进程的标识信息对应数据单元。
12.根据权利要求11所述的计算机设备,其特征在于,所述处理单元,还用于在所述发送单元将所有对应于所述目标进程的数据单元写入目标存储节点之前之前,从多个存储节点中确定与所述目标进程的标识信息对应的存储节点为所述目标存储节点。
13.根据权利要求10所述的计算机设备,其特征在于,所述目标文件包括多组数据单元,所述多组数据单元中每组数据单元包括M个数据单元,所述M个数据单元分别对应于所述M个进程,所述目标文件中对应于同一进程的数据单元在所述多组数据单元中的任意两组数据单元中的位置相同,所述处理单元,具体用于根据所述数据单元的长度、所述多个数据单元中每个数据单元在所述目标文件中的位置、以及进程数M,确定所述每组数据单元中位于所述目标进程对应位置的数据单元。
14.根据权利要求13所述的计算机设备,其特征在于,所述处理单元,还用于在所述发送单元将所有对应于所述目标进程的数据单元写入目标存储节点之前,从多个存储节点中确定与目标位置对应的存储节点为所述目标存储节点,所述目标位置为所述每组数据单元中对应于所述目标进程的数据单元所在的位置。
15.根据权利要求9至14中任一项所述的计算机设备,其特征在于,所述计算机设备还包括缓存单元,
所述处理单元,还用于将所有对应于所述目标进程的数据单元分为K组数据单元,所述K组数据单元中的每组数据单元包括多个对应于所述目标进程的数据单元,K为大于或等于1的正整数;
所述处理单元,还用于将所述K组数据单元写入所述缓存单元,所述K组数据单元中的每组数据单元包括的多个数据单元在所述缓存单元中的地址是连续的;
所述处理单元,还用于确定K个元数据,所述K个元数据与所述K组数据单元一一对应,所述K个元数据中的每个元数据包括对应的一组数据单元中的每个数据单元的位置信息和所述数据单元的长度;
所述发送单元,具体用于将所述K个目标元数据和从所述缓存单元中获取到的所述K组数据单元发送至所述第一存储节点。
16.根据权利要求15所述的计算机设备,其特征在于,所述处理单元,还用于获取读取指令,所述读取指令用于指示从所述目标存储节点中读取所述K个元数据和所述K个组数据单元;
所述计算机设备,还包括接收单元,用于根据所述处理单元获取到的所述读取指令从所述目标存储节点读取所述K个元数据和所述K个组数据单元;
所述处理单元,还用于根据所述K个元数据,确定所述K组数据单元包括的每个数据单元在所述目标文件中的位置。
17.一种计算机设备,其特征在于,包括:处理器,所述处理器用于与存储器耦合,读取并执行所述存储器中的指令和/或程序代码,以执行如权利要求1-8中任一项所述的方法。
18.一种芯片***,其特征在于,包括:逻辑电路,所述逻辑电路用于与输入/输出接口耦合,通过所述输入/输出接口传输数据,以执行如权利要求1-8中任一项所述的方法。
19.一种计算机可读介质,其特征在于,所述计算机可读介质存储有程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行如权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210114211.2A CN116560560A (zh) | 2022-01-30 | 2022-01-30 | 存储数据的方法和相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210114211.2A CN116560560A (zh) | 2022-01-30 | 2022-01-30 | 存储数据的方法和相关装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116560560A true CN116560560A (zh) | 2023-08-08 |
Family
ID=87498818
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210114211.2A Pending CN116560560A (zh) | 2022-01-30 | 2022-01-30 | 存储数据的方法和相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116560560A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117312326A (zh) * | 2023-11-28 | 2023-12-29 | 深圳市移卡科技有限公司 | 基于云原生数据库的数据存储方法及相关设备 |
-
2022
- 2022-01-30 CN CN202210114211.2A patent/CN116560560A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117312326A (zh) * | 2023-11-28 | 2023-12-29 | 深圳市移卡科技有限公司 | 基于云原生数据库的数据存储方法及相关设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113360093B (zh) | 内存***和设备 | |
US20240086315A1 (en) | Memory access statistics monitoring | |
US20230163789A1 (en) | Stripe management method, storage system, stripe management apparatus, and storage medium | |
US20240201880A1 (en) | Resource Allocation Method and Apparatus | |
JP6232936B2 (ja) | 情報処理装置、記憶装置制御回路及び記憶装置の制御方法 | |
CN116560560A (zh) | 存储数据的方法和相关装置 | |
US20240070120A1 (en) | Data processing method and apparatus | |
US20240086113A1 (en) | Synchronous write method and device, storage system and electronic device | |
CN115079936A (zh) | 一种数据写入方法及装置 | |
CN115793957A (zh) | 写数据的方法、装置及计算机存储介质 | |
US10061725B2 (en) | Scanning memory for de-duplication using RDMA | |
CN112513824B (zh) | 一种内存交织方法及装置 | |
US20240176539A1 (en) | Novel data cache scheme for high performance flash memories | |
CN110865768A (zh) | 写缓存资源分配方法、装置、设备以及存储介质 | |
US20240086110A1 (en) | Data storage method, storage apparatus and host | |
CN117389483B (zh) | 一种内存管理方法、装置、电子设备及可读存储介质 | |
US20230376427A1 (en) | Memory system and computing system including the same | |
US11960735B2 (en) | Memory channel controller operation based on data types | |
WO2024001863A1 (zh) | 一种数据处理方法及相关设备 | |
US20240256159A1 (en) | Electronic device and operating method thereof | |
CN115878308A (zh) | 一种资源调度方法及装置 | |
CN117539609A (zh) | 一种io流量控制方法、***以及设备 | |
CN115237854A (zh) | 一种日志管理方法及装置 | |
CN116931813A (zh) | 一种突发访问的应对方法以及相关设备 | |
CN117075795A (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 |