CN114490517A - 数据处理方法、装置、计算节点以及计算机可读存储介质 - Google Patents
数据处理方法、装置、计算节点以及计算机可读存储介质 Download PDFInfo
- Publication number
- CN114490517A CN114490517A CN202011148703.0A CN202011148703A CN114490517A CN 114490517 A CN114490517 A CN 114490517A CN 202011148703 A CN202011148703 A CN 202011148703A CN 114490517 A CN114490517 A CN 114490517A
- Authority
- CN
- China
- Prior art keywords
- data
- address
- storage
- storage device
- index
- 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
Images
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/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/164—File meta data generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/1824—Distributed file systems implemented using Network-attached Storage [NAS] architecture
-
- 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
- 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
- G06F3/0611—Improving I/O performance in relation to response time
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据处理方法、装置、计算节点以及计算机可读存储介质,属于通信技术领域。本方法通过计算节点从存储设备内读取对象中的数据,而无须访问文件系统,避免了在读取数据过程中与文件系统进行交互,则读请求以及读取到的数据均无须穿越计算节点的内核,节省了穿越内核的时间,从而缩短了读取数据的时间,提高了读取数据的效率。
Description
技术领域
本申请涉及通信技术领域,特别涉及一种数据处理方法、装置、计算节点以及计算机可读存储介质。
背景技术
在高性能场景下,高性能计算机群(high performance computing,HPC)无法通过标准的网络附加存储(network attached storage,NAS)协议,提供访问共享文件的性能。而为了满足HPC和高性能文件共享场景的需求,客户端一般通过处于用户态的文件系统(file system),来访问共享文件。
以计算节点包括客户端、内核以及文件系统,客户端通过文件系统读取共享文件中的数据为例,数据读取的过程为:客户端和文件系统均处于用户态,均位于计算节点内的用户空间(user space),客户端向内核中的虚拟文件系统(virtual file system,VFS)发送读请求,由于文件系统处于用户空间,则VFS向内核中的用户空间文件系统(file systemin user space,FUSE)转发该读请求,再由FUSE将该读请求发送至用户空间中的文件系统,文件系统接收到该读请求后,根据读请求,从数据节点读取该文件系统管理的共享文件中的数据,并按照读请求的传输路径,将读取到的数据原路返回给客户端。
在上述的数据读取过程中,客户端向文件系统发送的读请求需要穿越一次内核,文件系统向客户端返回读取到的数据还需要穿越一次内核,两次穿越内核均需耗费一定的时长,导致客户端读取数据的总时长较长,读取数据的效率低。
发明内容
本申请实施例提供了一种数据处理方法、装置、计算节点以及计算机可读存储介质,能够提高读取数据的效率。该技术方案如下:
第一方面,提供了一种数据处理方法,应用于计算节点,所述计算节点包含存储设备,所述存储设备中有第一对象的第一数据;所述计算节点还包含数据索引;所述数据索引中包含所述第一数据在所述存储设备中的第一存储地址;所述方法包括:
接收第一读请求;基于所述第一数据的数据索引和所述第一读请求,读取所述存储设备的所述第一数据,其中,所述第一读请求用于读取所述第一数据。
本方法通过计算节点从存储设备内读取对象中的数据,而无须访问文件系统,避免了在读取数据过程中与文件系统进行交互,则读请求以及读取到的数据均无须穿越计算节点的内核,节省了穿越内核的时间,从而缩短了读取数据的时间,提高了读取数据的效率。
在一种可能的实现方式中,所述第一读请求包括所述第一对象的对象标识、所述第一数据在所述第一对象中的起始偏移量和所述第一数据的数据量;所述基于所述第一数据的数据索引和所述第一读请求,读取所述存储设备中的所述第一数据包括:
基于所述第一对象的对象标识、所述起始偏移量以及所述数据量,从所述数据索引中确定所述第一存储地址;从所述第一存储地址中读取所述第一数据。
在一种可能的实现方式中,所述第一对象为文件系统中的索引节点inode;所述基于所述第一对象的对象标识、所述起始偏移量以及所述数据量,从所述数据索引中确定第一存储地址包括:
基于所述第一对象的对象标识、所述起始偏移量以及所述数据量计算哈希值;基于所述哈希值,确定所述数据索引中包含的所述第一数据在所述存储设备中的第一存储地址。
在一种可能的实现方式中,所述存储设备的第二存储地址中存储有所述第一存储地址的数据验证信息,所述数据验证信息用于验证所述第一存储地址中的数据。
在一种可能的实现方式中,所述读取所述存储设备的所述第一数据之后,所述方法还包括:
根据所述第一读请求以及所述数据验证信息,对读取到的所述第一数据进行验证。
在一种可能的实现方式中,所述接收第一读请求之前,所述方法还包括:
接收第一写请求;根据所述第一写请求,向所述存储设备的所述第一存储地址写入所述第一数据;在所述数据索引中记录所述第一存储地址;其中,所述第一写请求用于向所述第一对象中写入所述第一数据。
第二方面,提供了一种数据处理装置,用于执行上述数据处理方法。具体地,该数据处理装置包括用于执行上述第一方面或上述第一方面的任一种可选方式提供的数据处理方法的功能模块。
第三方面,提供了一种计算节点,该计算节点包括处理器和存储器,该存储器中存储有至少一条程序代码,该程序代码由该处理器加载并执行以实现如上述第一方面或上述第一方面的任一种可选方式提供的数据处理方法所执行的操作。
第四方面,提供了一种计算机可读存储介质,该存储介质中存储有至少一条程序代码,该程序代码由处理器加载并执行以实现如上述第一方面或上述第一方面的任一种可选方式提供的数据处理方法所执行的操作。
第五方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括程序代码,该程序代码存储在计算机可读存储介质中,计算节点的处理器从计算机可读存储介质读取该程序代码,处理器执行该程序代码,使得该计算节点执行上述第一方面或上述第一方面的任一种可选方式提供的数据处理方法。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种数据处理系统的示意图;
图2是本申请实施例提供的一种计算节点的结构示意图;
图3是本申请实施例提供的一种数据写入方法的流程图;
图4是本申请实施例提供的一种数据处理方法的流程图;
图5是本申请实施例提供的一种数据处理方法的流程图;
图6是本申请实施例提供的一种数据处理装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
图1是本申请实施例提供的一种数据处理系统的示意图,参见图1,该系统100包括服务器101以及至少一个计算节点102。
其中,该服务器101用于管理至少一个数据节点,该至少一个数据节点用于为计算节点102提供数据读写服务以及数据存储服务。该至少一个数据节点内存储有多个对象,对象是数据存储的基本单位,每个对象用于存储数据,每个对象中的数据由该至少一个计算节点102写入,或者由该系统100以外的其他计算节点写入,且能够被该至少一个计算节点102读取,也即是每个对象由该至少一个计算节点102所共享。
每个计算节点102,用于向该至少一个数据节点写数据,以便该至少一个数据节点生成新的对象,或者在该至少一个数据节点已存储的对象中写入新的数据,或者删除该至少一个数据节点已存储的对象中的数据。
在一种可能的实现方式中,计算节点102包括文件系统1021、存储设备1022以及客户端1023。其中,文件系统1021,用于管理该至少一个数据节点中存储的至少一个对象,该至少一个对象通过服务器101存储于至少一个数据节点。该文件系统1021,还用于将该至少一个对象的副本存储在存储设备1022,由存储设备1022来管理,以供该客户端1023从存储设备1022读取文件系统1021所管理的对象中的数据。该文件系统1021,还用于为客户端1023提供数据读写服务。可选地,该文件系统1021是用于管理该至少一个数据节点中存储的对象的客户端,每个计算节点102内均能安装该文件系统1021。
该存储设备1022包括固态硬盘、机械硬盘或其他类型存储介质的存储设备,在此,本申请实施例对该存储设备1022的类型不做不作具体限定。该存储设备1022,用于存储文件系统1021所管理的至少一个对象的副本,为该客户端1023提供数据读写服务。该存储设备1022所提供的存储空间由多个存储地址来标识,每个存储地址用于标识该存储设备1022所提供的部分存储空间。该多个存储地址所标识的存储空间的空间大小相同或不相同,例如一个4千字节(kilobyte,K)大小的存储空间由存储地址0000来标识,一个64字节(byte,B)大小的存储空间由存储地址0001来标识,而另一个8B大小的存储空间由存储地址01000来标识。需要说明的是,在本申请实施例中,对于一个存储地址,存储设备在该存储地址中写入数据,也即是该存储设备在该存储地址所标识的存储空间中写入数据;存储设备从该存储地址中读取数据,也即是从该存储地址所标识的存储空间中读取数据;该存储地址中的数据也即是该存储地址所标识的存储空间中存储的数据。
在一种可能的实现方式中,该存储设备1022将该多个存储地址划分为多个数据地址、多个验证地址、多个数据索引地址以及多个元索引地址。一个存储地址的空间大小为该存储地址所标识的存储空间的空间大小,也即是该存储地址最多能够存储的数据的数据量。为了便于描述,存储设备将一个数据地址的空间大小记为第一空间大小,将一个验证地址的空间大小记为第二空间大小,将一个数据索引地址的空间大小记为第三空间大小,将一个元索引地址的空间大小记为第四空间大小。需要说明的是,第一空间大小、第二空间大小、第三空间大小以及第四空间大小可根据具体实施实例进行设置,例如第一空间大小为4K,第二空间大小为64B,第三空间大小为8B,第四空间大小为32B,在此,本申请实施例对该第一空间大小、第二空间大小、第三空间大小以及第四空间大小不作具体限定。
一个数据地址所标识的存储空间用于存储对象中的部分数据或全部数据,或者说,一个对象内的数据能够由至少一个数据地址所标识的存储空间来存储。一个验证地址所标识的存储空间用于存储一个数据地址的数据验证信息,一个验证地址所标识的存储空间也即是该数据地址的验证区。该数据验证信息用于验证该数据地址中存储的数据。该多个数据地址与该多个验证地址一一对应。在一种可能的实现方式中,该多个数据地址所标识的存储空间和该多个验证地址所标识的存储空间组成数据共享区,该数据共享区用于存储该文件系统所管理的至少一个对象、该至少一个对象所占用的存储地址的数据验证信息。可选地,在该数据共享区中,一个数据地址所标识的存储空间与对应的验证地址所标识的存储空间相邻,例如图1中的数据共享区。可选地,在该数据共享区中,该多个数据地址所标识的存储空间相邻,该多个验证地址所标识的存储空间相邻。
一个数据索引地址所标识的存储空间用于存储一个数据地址。在一种可能的实现方式中,该存储设备1022将该多个数据索引地址所标识的存储空间分为两部分,分别为第一存储空间和第二存储空间,该第一存储空间和第二存储空间均由至少一个数据索引地址所标识的存储空间组成,其中,第一存储空间用于存储在第一时间段内写入数据的数据地址,第二存储空间用于存储在第一时间段之前写入数据的数据地址;该第一时间段为当前时刻所在的时间段,该第一时间段的结束时间为当前时刻,起始时间为该当前时刻之前的目标时刻,该目标时刻与该当前时间之间的时长为目标时长,该目标时长也即是该第一时间段的时长;在第一时间段内写入的数据也即是新写入的数据,在第一时间段之前写入的数据也即是之前写入的旧数据。可选地,该多个数据索引地址所标识的存储空间为数据索引区,该数据索引区用于存储数据共享区中已占用的数据地址,已占用的数据地址也即是存储有对象中的数据的存储地址。需要说明的是,该数据索引区相当于数据索引,在该数据索引中以键值对(key-value)的方式存储数据地址。可选地,以验证地址中存储的数据验证信息为key,该key所对应value与存储有该验证地址所对应的数据地址的数据索引地址对应。例如,验证地址1与数据地址1对应,验证地址1中存储的数据地址1的数据验证信息为key,存储有数据地址1的数据索引地址与该key对应的value对应。
一个元索引地址所标识的存储空间用于存储一个对象的元数据以及该元数据的元数据验证信息,该元数据验证信息用于验证该元数据。可选地,该元索引地址所标识的存储空间分为相邻的两个部分存储空间,一部分存储空间用于存储该元数据,另一部分存储空间用于存储该元数据验证信息,该元数据验证信息所在的存储空间也即是验证区。可选地,该多个元索引地址所标识的存储空间为元数据共享区,该元数据共享区用于存储数据共享区中已存储的对象的元数据。
在一种可能的实现方式中,该存储设备1022不位于该计算节点102中,而是位于目标数据节点中,该目标数据节点为该服务器101管理的至少一个数据节点,或者为该至少一个数据节点以外的数据节点。
该客户端1023,用于为用户提供数据写入以及数据读取的业务。可选地,客户端1023将用户的数据写入存储设备1022,当写入完成后,向文件系统1021发送写入存储设备1022的数据,由文件系统1021通过服务器101将该写入的数据写入数据节点,以便其他计算节点共享数据节点中该客户端1023所写入的数据。可选地,客户端1023向存储设备1022发送读请求,以从存储设备1022读取文件系统1021所管理的对象中的数据,无须通过文件系统1021来读取对象中的数据,从而避免客户端1023通过内核与文件系统1021进行交互,缩短了数据读取的时间,提高了数据读取的效率。而当客户端1023从存储设备1022读取数据失败时,则该客户端1023还能够通过消息通道向文件系统1021发送该读请求,以通过文件系统读取数据。例如消息通过为进程间通信(inter-process communication,IPC)。
本申请实施例还提供一种计算节点的结构示意图,参见图2,图2所示的计算节点200可因配置或性能不同而产生比较大的差异,包括一个或一个以上处理器201和一个或一个以上的存储器202,其中,所述处理器包括中央处理器(central processing units,CPU)或其他类型的处理器,所述存储器202中存储有至少一条程序代码,所述至少一条程序代码由所述处理器201加载并执行以实现下述各个方法实施例提供的任一方法。可选地,该计算节点200还安装有多个客户端和文件系统,该存储器202还能够具有下述各个方法实施例中存储设备的功能,该计算节点200还具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该计算节点200还包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括程序代码的存储器,上述程序代码可由终端中的处理器执行以完成下述实施例中的任一方法。例如,该计算机可读存储介质是非临时计算机可读存储介质,如只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、只读光盘(compact disc read-onlymemory,CD-ROM)、磁带、软盘和光数据存储设备等。
计算节点在初始化的过程中,文件系统将其管理的至少一个对象的副本写入存储设备,以便计算节点内的客户端能够从该存储设备读取到该至少一个对象中的数据,为了进一步说明这个过程,参见图3所示的本申请实施例提供的一种数据写入方法的流程图,该方法应用于包括客户端和文件系统的计算节点。
301、该文件系统向存储设备发送资源分配请求,该资源分配请求用于指示存储设备分配数据共享区、数据索引区以及元数据共享区。
该存储设备为该计算节点内的任一存储设备,或者目标数据节点中的任一存储设备。在本申请实施例中,以存储设备位于计算节点为例进行说明。该资源分配请求包括分配标识,该分配标识用于指示存储设备分配数据共享区、数据索引区以及元数据共享区。
当该计算节点上电后,若该存储设备未划分出数据共享区、数据索引区以及元数据共享区,则该文件系统执行本步骤301。
302、该存储设备基于该资源分配请求,为该文件系统分配元数据索引区、数据索引区以及数据共享区。
当接收到该资源分配请求后,该存储设备从该资源分配请求中获取到分配标识,则该存储设备基于该分配标识,将自己的全部存储空间或部分存储空间划分为三个部分,分别为数据共享区、数据索引区以及元数据共享区,并将数据共享区划分为多个数据地址所对应的存储空间以及多个验证地址所对应的存储空间,该存储设备将该数据索引区划分为多个数据索引地址所对应的存储空间,将该元数据共享区划分出多个元索引地址所对应的存储空间。
其中,关于数据共享区、数据索引区以及元数据共享区在上文中有相关介绍,在此,本申请实施例对数据共享区、数据索引区以及元数据共享区不做赘述。
303、该存储设备向该文件系统发送分配完成响应,该分配完成响应用于指示元数据索引区、数据索引区以及数据共享区已分配完成。
该分配完成响应包括分配完成标识,该分配完成标识用于指示该元数据索引区、数据索引区以及数据共享区已分配完成。当该存储设备分配完元数据索引区、数据索引区以及数据共享区后,该存储设备执行本步骤303。
需要说明的是,该存储设备分配一次元数据索引区、数据索引区以及数据共享区即可,无须多次分配,也即是上述步骤301-303所示的过程执行一次即可,无须多次执行。
304、当接收到该分配完成响应后,该文件系统向存储设备发送目标写请求,该目标写请求用于指示将多个对象写入存储设备。
该目标写请求包括多个对象、每个对象的对象标识以及对象偏移量。其中,以文件系统为例,对象为文件系统中的索引节点(index node,inode),例如文件或者数据块。
该多个对象为该文件系统所管理的对象,该多个对象能够被至少一个计算节点所共享,该计算节点为该至少一个计算节点中的一个。一个对象用于存储数据,一个对象中存储的数据为用户通过客户端所上传的业务数据,该业务数据包括视频数据、音频数据、文本数据等任一类型的数据,在此,本申请实施例对该业务数据不作具体限定。一个对象的对象偏移量为在当前时刻该对象的数据总量。
当该文件系统接收到该分配完成响应后,说明该存储设备已分配元数据索引区、数据索引区以及数据共享区,此时,该存储设备内还未存储对象,则该文件系统通过本步骤304向存储设备写入其管理的全部对象。
该文件系统向服务器发送对象获取请求,该对象获取请求用于获取该文件系统所管理的对象;当该服务器接收到该对象获取请求后,该服务器从该至少一个数据节点中获取该文件系统管理的对象,并向该文件系统发送获取到每个对象、每个对象的对象标识以及对象偏移量;该文件系统接收服务器发送的每个对象、每个对象的对象标识以及对象偏移量,并基于接收到多个对象、每个对象的对象标识以及对象偏移量,生成该目标写请求,该文件系统向该存储设备发送获该目标写请求。
在一种可能的实现方式中,该目标写请求还包括每个对象的元数据,一个对象的元数据用于描述该对象的属性,该属性包括该对象的对象标识、对象偏移量、用户标识、读写权限标识以及时间标识中的至少一个。该用户标识用于指示上传该对象的用户、该读取权限标识用于指示是否允许读取该对象中的数据以及是否允许在该任一对象中继续写入数据。该时间标识用于指示该任一对象中的数据出现更新的时间,数据出现更新是指该对象中写入了数据,或该对象中的数据被删除。
305、该存储设备基于该目标写请求,写入该多个对象。
当接收到该目标写请求后,该存储设备从该目标写请求获取该多个对象,该存储设备将该多个对象写入到数据共享区。一种可能的实现方式中,本步骤305包括下述步骤3051-3053。
步骤3051、对于该多个对象中的任一对象,该存储设备在至少一个数据地址中写入该任一对象。
由于一个数据地址的第一空间大小有限,则该存储设备在写入该任一对象时,可能需要一个或多个数据地址。在一种可能的实现方式中,若该任一对象的数据量小于或等于该第一空间大小,则需要一个数据地址来写入该任一对象,否则,需要多个数据地址来写入该任一对象。该至少一个数据地址所标识的存储空间相邻或者不相邻。
在一种可能的实现方式中,该存储设备将该任一对象中的数据划分为至少一个数据块,并将该至少一个数据块分别写入该至少一个数据地址所标识的存储空间;其中,该至少一个数据块的数据量均小于或等于该第一空间大小。
可选地,若该任一对象的数据量为该第一空间大小的整数倍,则该至少一个数据块的数据量均等于该第一空间大小,否则,该至少一个数据块中一个数据块的大小小于该第一空间大小,其他数据块的大小均等于该第一空间大小。
例如,该任一对象的数据量为12K,第一空间大小为4K,则该存储设备将该任一对象中的数据写入数据地址0-3,具体地,该存储设备在数据地址0-3中分别写入该任一对象的前4K的数据、中间4K的数据以及后4K的数据。
再例如,该任一对象的数据量为7K,第一空间大小为4K,则该存储设备将该任一对象中的数据写入数据地址4-5,具体地,该存储设备在数据地址4-5中分别写入该任一对象的前4K的数据以及后3K的数据。
步骤3052、对于该至少一个数据地址中的任一数据地址,该存储设备基于该任一对象的对象标识以及该任一数据地址中的数据,生成该任一数据地址的数据验证信息。
一个数据地址的数据验证信息用于验证该数据地址中的数据。该数据验证信息包括该数据地址中的数据所属对象的对象标识、该数据地址中的数据在所属对象中的起始偏移量。
该存储设备将在该任一对象内且位于该任一数据地址中的数据之前的数据,确定为目标数据,将该目标数据的数据量,确定为该任一数据地址中的数据在该任一对象中的起始偏移量,并将该任一对象的对象标识、任一数据地址中的数据在该任一对象中的起始偏移量,确定为该任一数据地址的数据验证信息。
例如,该任一对象的对象标识为A,该任一对象的数据量为12K,第一空间大小为4K,则该存储设备将该任一对象中的数据分别写入数据地址0-3,数据地址0-3的数据验证信息为分别为(A,0K)、(A,4K)、(A,8K)。
步骤3053、该存储设备将该任一数据地址与该任一数据地址的数据验证信息进行关联存储。
该存储设备确定该任一数据地址所对应的验证地址,并在确定的该验证地址中写入该数据验证信息,以实现关联存储。例如,该任一数据地址为数据地址0,而该数据地址0与验证地址1对应,则该存储设备在该验证地址1所标识的存储中间中写入该数据验证信息。
306、对于多个对象中的任一对象,该存储设备存储该任一对象对应的数据地址。
该任一对象对应的数据地址为存储有该任一对象中的数据的至少一个数据地址。对于该至少一个数据地址中的任一数据地址,该存储设备基于该任一数据地址的数据验证信息,将该任一数据地址存储在数据索引区。
在一种可能的实现方式中,该存储设备基于该任一数据地址的数据验证信息,将该任一数据地址存储在数据索引区包括:该存储设备确定该数据索引区中的一个第一数据索引地址,并将该任一数据地址写入该第一数据索引地址;该存储设备对该任一数据地址的数据验证信息进行哈希计算,得到第一哈希值,该存储设备将该第一哈希值与该第一数据索引地址进行关联存储,使得该第一哈希值与该第一数据索引地址对应,以便后续查询。该第一数据索引地址为未占用的数据索引地址,未占用的数据索引地址为没有存储数据地址的数据索引地址。
在一种可能的实现方式中,该存储设备确定该数据索引区中的一个第一目标数据索引包括:若该数据索引区未划分第一存储空间和第二存储空间,则该存储设备将该数据索引区中任一未占用的数据索引地址,确定为该第一数据索引地址;若该数据索引区已划分第一存储空间和第二存储空间,则该存储设备将第一存储空间中任一未占用的数据索引地址,确定为该第一数据索引地址;若该数据索引区已划分第一存储空间和第二存储空间,且该第一存储空间中不存在未占用的数据索引地址,则该存储设备将该第一存储空间中最先存储的数据地址转移至第二存储空间,并将该第一存储空间中该最先存储的数据地址所占用的数据索引地址,确定为第一数据索引地址。
需要说明的是,若该存储设备将该最先存储的数据地址转移至第二存储空间中的第二数据索引地址,则该存储设备将该第一数据索引地址最先对应的哈希值修改为该第一哈希值,将该第一数据索引地址最先对应的哈希值与该第二数据索引地址关联存储。
307、该存储设备基于该目标写请求,存储该任一对象的元数据。
该存储设备从该目标写请求中获取该任一对象的元数据,并将获取到的该任一对象的元数据写入元数据共享区。
在一种可能的实现方式中,该存储设备从元数据共享区,获取任一未占用的元索引地址,并在该元索引地址中写入该任一对象的元数据。其中,未占用的元索引地址为元数据共享区中未存储元数据的元索引地址。
在一种可能的实现方式中,当该存储设备将该元数据写入到该元数据索引区之后,该存储设备对该元数据进行哈希计算,得到第二哈希值,并将该第二哈希值作为该元数据的元数据验证信息,写入该元数据索引区,该元数据的元数据验证信息用于验证该元数据,以保证该存储设备中存储的该任一对象与该文件系统所管理的该任一对象之间的一致性。
在一种可能的实现方式中,当该存储设备将该元数据写入到该元数据索引区之后,该存储设备对该任一对象的对象标识进行哈希计算,得到第三哈希值,并将该第三哈希值与该元索引地址进行关联存储,以便后续查询。
本申请实施例所提供的方法,通过将文件系统所管理的多个对象存储该存储设备,后续以便计算节点内的客户端直接从该存储设备读取对象中的数据,而无需从文件系统读取,从而避免客户端通过内核与文件系统进行交互,从而缩短了数据读取的时间,提高了数据读取的效率。
计算节点内的客户端能够从存储设备读取文件系统所管理的对象中的数据,为了进一步说明该过程,参见如图4所示的本申请实施例提供的一种数据处理方法的流程图,该方法应用于计算节点,该计算节点包含存储设备,该存储设备中有第一对象的第一数据;该计算节点还包含数据索引;该数据索引中包含该第一数据在该存储设备中的第一存储地址。
401、客户端向该存储设备发送第一读请求,该第一读请求用于指示读取该第一数据。
该客户端为该计算节点内的任一客户端,或者该计算节点以外的其他节点内的任一客户端。在本申请实施例中,以客户端位于该计算节点为例进行说明。
该第一对象为该文件系统管理的任一对象。该第一读请求包括该第一对象的对象标识、该第一数据在该第一对象中的起始偏移量、该第一数据的数据量。可选地,该第一读请求还包括读标识,该读标识用于指示读取数据。该第一数据为待读取数据,该起始偏移量为该第一对象中处于该第一数据之前的数据的数据量。
402、该存储设备接收该第一读请求。
当该存储设备接收到该第一读请求后,该存储设备先根据该第一读请求确定存储有该第一数据的数据地址,再从存储有该第一数据的数据地址中,读取该第一数据。具体请参见下述步骤403-404。
403、该存储设备基于该第一对象的对象标识、该起始偏移量以及该数据量,从数据索引中确定第一存储地址。
该第一存储地址也即是存储有该第一数据的数据地址,由于一个数据地址中存储的数据有限,因此,该第一数据可能存储在至少一个数据地址,也即是,存储有该第一数据的第一存储地址可能有至少一个。在一种可能的实现方式中,本步骤403包括下述步骤A-B。
步骤A、该存储设备基于该第一对象的对象标识、该起始偏移量以及该数据量计算哈希值。
由于存储有数据地址的数据索引地址与该数据地址的数据验证信息的哈希值对应,则该存储设备根据该对象标识、该起始偏移量以及该数据量,计算至少一个第一存储地址的至少一个数据验证信息,并分别对该至少一个数据验证信息进行哈希计算,其中,一个第一存储地址对应一个数据验证信息。
在一种可能的实现方式中,该存储设备根据该对象标识、该起始偏移量以及该数据量,获取该至少一个第一存储地址的至少一个数据验证信息包括:若该起始偏移量不是该第一空间大小的整数倍,该存储设备从第一区间[0,起始偏移量]中,选取第一起始偏移量,该第一起始偏移量为第一区间中该第一空间大小的最大整数倍;该存储设备从第二区间[第一起始偏移量,(起始偏移量+该数据量)]中,选取该第一空间大小的至少一个整数倍,并将该至少一个整数倍,确定为至少一个第二起始偏移量;对于该第一起始偏移量以及至少一个第二起始偏移量中的任一起始偏移量,该存储设备将该对象标识以及该任一起始偏移量,确定为一个第一存储地址的数据验证信息。
在一种可能的实现方式中,该存储设备根据该对象标识、该起始偏移量以及该数据量,获取该至少一个第一存储地址的至少一个数据验证信息包括:若该起始偏移量是该第一空间大小的整数倍,该存储设备从第三区间[该起始偏移量,(起始偏移量+该数据量)]中,选取该第一空间大小的至少一个整数倍,并将该至少一个整数倍,确定为至少一个第三起始偏移量;对于该至少一个第三起始偏移量中的任一第三起始偏移量,该存储设备将该对象标识以及任一第三起始偏移量,确定为一个第一存储地址的数据验证信息。
在一种可能的实现方式中,对于该至少一个数据验证信息中的任一数据验证信息,该存储设备对该任一数据验证信息进行哈希计算,得到第四哈希值。
步骤B、该存储设备基于该哈希值,确定该数据索引中包含的该第一数据在该存储设备中的第一存储地址。
该哈希值为该存储设备对该至少一个数据验证信息进行哈希计算所得到的至少一个第四哈希值。
对于该至少一个第四哈希值中的一个第四哈希值,该存储设备从数据索引中记录的数据索引地址与哈希值之间的对应关系,查询该第四哈希值所对应的数据索引地址,并将查询到数据索引地址,确定为一个第三存储地址;该存储设备将该第三存储地址中存储的数据地址,读取为一个第一存储地址。其中,一个第三存储地址为数据索引中存储有一个第一存储地址的数据索引地址。
在一种可能的实现方式中,对于该至少一个第四哈希值中的一个第四哈希值,若该存储设备将数据索引区划分为第一存储空间和第二存储空间,则该存储设备先从该第一存储空间中数据索引地址与哈希值之间的对应关系中,查询该第四哈希值所对应的数据索引地址,若能在该第一存储空间中能查询到该第四哈希值所对应的数据索引地址,则说明该第一数据为在第一时间段内写入的数据,也即是新写入的数据,该存储设备将查询到的数据索引地址确定为一个第三存储地址;若未能在该第一存储空间中查询到该第四哈希值所对应的数据索引地址,则该存储设备再从该第二存储空间中数据索引地址与哈希值之间的对应关系中,查询该第四哈希值所对应的数据索引地址,若能在该第二存储空间中查询到该第四哈希值所对应的数据索引地址,则说明该第一数据为在第一时间段之前写入的数据,该存储设备将查询到的数据索引地址确定为一个第三存储地址。
404、该存储设备从该第一存储地址中读取该第一数据。
对于确定出的存储有该第一数据的至少一个第一存储地址,为了便于说明,将该第一数据的起始数据所在的第一存储地址记为首存储地址,将该第一数据的终止数据所在的第一存储地址记为尾存储地址,将该至少一个第一存储地址中除首存储地址和尾存储地址以外的存储地址记为中间存储地址。其中,该首存储地址存储在基于第一起始偏移量计算出的第四哈希值所对应的第三存储地址,尾存储地址存储在基于第四起始偏移量计算出的第四哈希值所对应的第三存储地址,该第四起始偏移量为该至少一个第二起始偏移量中的最大值或至少一个第三起始偏移量中的最大值。
若该起始偏移量不是该第一空间大小的整数倍,说明该第一数据的起始数据处于首存储地址的非起始位置,也即是,该至少一个第一存储地址中的首存储地址内的部分数据属于该第一数据,部分数据不属于该第一数据。
若该起始偏移量与该数据量之间的和不是该第一空间大小的整数倍,说明该第一数据的终止数据处于尾存储地址的非起始位置,也即是,该至少一个第一存储地址中的尾存储地址内的部分数据属于该第一数据,部分数据不属于该第一数据。
在一种可能的实现方式中,若该起始偏移量不是该第一空间大小的整数倍,且该至少一个第一存储地址的个数为1,也即是仅有一个第一存储地址,则说明该第一存储地址既是首存储地址,也是尾存储地址。该存储设备在该第一存储地址所标识的存储空间中,以该起始偏移量为起点开始读取,读取该数据量的数据,将读取到的数据获取为该第一数据,其中,该第一存储地址中位于该起始偏移量之前的数据的数据量为:该起始偏移量与第一起始偏移量之间的差值。
例如,该第一对象的数据量为12K,第一空间大小为4K,第一数据在该第一对象中的起始偏移量为5K,第一数据的数据量为2K,该第一对象存储在数据地址0-2(也即是至少一个第一存储地址)。其中,数据地址0中存储有该第一对象的[0,4k]的数据,数据地址1中存储有该第一对象的(4k,8k]的数据,数据地址2中存储有该第一对象的(8k,12k]的数据。由于第一数据的起始偏移量为5K,则该第一数据的起始数据处于数据地址1中,也即是数据地址1为首存储地址;又因为第一数据的偏移量为2K,则第一数据的终止数据在该第一对象的偏移量为5+2=7K,该第一数据的终止数据也处于该数据地址1,则该数据地址1同时为尾存储地址,该存储设备将数据地址1中第5K至7K的数据读取为第一数据。
在一种可能的实现方式中,若该至少一个第一存储地址的个数大于或等于2,则说明该至少一个第一存储地址至少包括首存储地址和尾存储地址;若该起始偏移量不是该第一空间大小的整数倍,该存储设备在首存储地址所标识的存储空间中,以该起始偏移量为起点开始读取,将位于该起始偏移量之后的数据,读取为该第一数据的起始部分数据;若该起始偏移量是该第一空间大小的整数倍,该存储设备将该首存储地址所标识的存储空间中的所有数据,读取为该第一数据的起始部分数据;若该起始偏移量与该数据量之间的和(记为目标和值)不是该第一空间大小的整数倍,该存储设备从该尾存储地址所标识的存储空间的起始位置为起点开始读取,读取数据量为目标差值的数据,将读取到的数据获取为该第一数据的结束部分数据,其中,该目标差值为目标和值与第四起始偏移量之间的差值;若该起始偏移量与该数据量之间的和是该第一空间大小的整数倍,该存储设备将该尾存储地址所标识的存储空间中所有的数据,读取为该第一数据的结束部分数据;若该至少一个第一存储地址还包括除首存储地址和尾存储地址以外的至少一个中间存储地址,则该存储设备将该至少一个中间存储地址所标识的存储空间中所有的数据,读取为该第一数据的中间部分数据;该存储设备将读取到的起始部分数据、中间部分数据以及结束部分数据,确定为该第一数据。
例如,该第一对象的数据量为12K,第一空间大小为4K,第一数据在该第一对象中的起始偏移量为2K,第一数据的数据量为9K,该第一对象存储在数据地址0-2。其中,数据地址0中存储有该第一对象的[0,4k]的数据,数据地址1中存储有该第一对象的(4k,8k]的数据,数据地址2中存储有该第一对象的(8k,12k]的数据。由于第一数据的起始偏移量为2K,则该第一数据的起始数据处于数据地址0中,也即是数据地址0为首存储地址,则该存储设备将数据地址0中第2K之后的所有数据,读取为第一数据的起始部分数据;又因为第一数据的偏移量为9K,则第一数据的终止数据在该第一对象的偏移量为2+9=11K,则该第一数据的终止数据处于该数据地址2,数据地址2为尾存储地址,该存储设备将数据地址2中前3K数据读取为第一数据的结束部分数据,则数据地址1为中间存储地址,该存储设备将数据地址1所标识的空间中的所有数据,读取为第一数据的中间部分数据,该存储设备将数据地址0-中该第一对象中第2K至第11K的数据读取为该第一数据。
需要说明的是,上述步骤403-404所示的过程也即是计算节点基于该第一数据的数据索引和该第一读请求,读取该存储设备的该第一数据的过程。
405、该存储设备根据该第一读请求以及第二存储地址中存储的该第一存储地址的数据验证信息,对该第一数据进行验证,一个第一存储地址的数据验证信息用于验证该第一存储地址中的数据。
一个第二存储地址为一个第一存储地址对应的验证地址。该存储设备从至少一个第一存储地址对应的至少一个第二存储地址中,读取该至少一个第一存储地址的数据验证信息,该存储设备根据该第一读请求,对读取到该至少一个第一存储地址的数据验证信息进行验证,若读取到的该至少一个第一存储地址的数据验证信息均通过验证,则该存储设备确定该第一数据通过验证,否则,确定该第一数据未通过验证。
在一种可能的实现方式中,对于该至少一个第一存储地址中的任一第一存储地址,该存储设备从该任一第一存储地址对应的第二存储地址中,读取一个数据验证信息,若读取到的数据验证信息与该存储设备根据该第一读请求计算出的该任一第一存储地址的数据验证信息一致,则该存储设备确定读取到的数据验证信息通过验证,否则,该存储设备确定读取到的数据验证信息未通过验证。
需要说明的是,本步骤405为可选步骤,在一些实施例中,存储设备执行本步骤405,当该第一数据通过验证后,该存储设备执行下述步骤406。而在另一些实施例中,存储设备不执行本步骤405,执行完上述步骤404直接执行下述步骤406。
406、该存储设备向该客户端发送该第一数据。
上述步骤401-406所示的过程是以存储设备能够读取到第一数据为例进行说明的。而在一种可能的实现方式中,若该存储设备未读取到第一数据,或者读取到的第一数据未通过验证,则该存储设备向该客户端发送读取失败响应,以指示数据读取失败。例如,若该存储设备从该数据索引区查询不到至少一个第三存储地址,说明该存储设备内未存储有该第一数据,则该存储设备读取不到该第一数据。
若该客户端接收到该读取失败响应,则该客户端还能够基于文件系统读取该第一数据。例如客户端通过内核与文件系统交互读取数据,例如背景技术中的数据读取过程,或者,该客户端还能够通过IPC,向文件系统发送该第一读请求,由文件系统通过服务器从数据节点读取该第一对象中的第一数据,并通过IPC将读取到的第一数据返回该客户端。
本申请实施例提供的方法,通过计算节点从存储设备内读取对象中的数据,而无需访问文件系统,避免了在读取数据过程中与文件系统进行交互,则读请求以及读取到的数据均无须穿越计算节点的内核,节省了穿越内核的时间,从而缩短了读取数据的时间,提高了读取数据的效率。
该客户端除了能够从存储设备读取文件系统所管理的对象中的数据以外,该客户端还能够向存储设备内写入数据,例如,客户端在从存储设备读取第一数据之前,客户端向存储设备写入该第一数据,为了进一步说明客户端向存储设备写入数据的过程,参见图5所示的本申请实施例提供的一种数据处理方法的流程图。该方法应用于计算节点,该计算节点包括客户端和文件系统。
501、该客户端向该存储设备发送第一写请求,该第一写请求用于指示向该第一对象中写入第一数据。
该存储设备为该计算节点内的任一存储设备,或者目标数据节点中的任一存储设备。在本申请实施例中,以存储设备位于该计算节点为例进行说明。该第一写请求包括该第一对象的对象标识、该第一对象的对象偏移量以及该第一数据,该第一对象的对象偏移量为在当前时刻该第一对象的数据总量。
502、该存储设备接收该第一写请求。
503、该存储设备根据该第一写请求,向该存储设备的第一存储地址写入该第一数据。
该第一存储地址为数据共享区中的数据地址,而一个数据地址存储的数据有限,为了在该存储设备内完全写入该第一数据,该第一存储地址可能有至少一个。
在一种可能的实现方式中,该存储设备将该第一数据划分为至少一个数据块,并从数据共享区内未占用的数据地址中,为每个数据块选取一个第一存储地址,并在选取出的至少一个第一存储地址中,分别写入对应的数据块;其中,该至少一个数据块的数据量均小于或等于该第一空间大小。可选地,若该第一数据的数据量为该第一空间大小的整数倍,则该至少一个数据块的数据量均等于该第一空间大小,否则,该至少一个数据块中一个数据块的大小小于该第一空间大小,其他数据块的大小均等于该第一空间大小。
在一种可能的实现方式中,该存储设备根据该第一对象的对象偏移量,确定该第一对象是否为该存储设备内已存储的对象;若第一对象为该存储设备内已存储的对象,则该存储设备根据该对象偏移量,确定当前时刻该存储设备内用于存储该第一对象的数据地址中是否存在空余空间;若存在,则该存储设备从该第一数据的起始数据开始,写入该空余空间;若该空余空间填充完成后,第一数据还有剩余,该存储设备将剩余的第一数据划分为至少一个数据块,并为每个数据块选取一个第一存储地址,并在选取出的至少一个第一存储地址中,分别写入对应的数据块;若该第一数据全部写入该空余空间,则该空余空间对应的数据地址也即是一个第一存储地址。
可选地,若该对象偏移量为第一空间大小的整数倍,则该存储设备确定当前时刻该存储设备内用于存储该第一对象的数据地址中不存在空余空间,否则,存成该空余空间。可选地,若该存储设备内存在该空余空间,则该存储设备对该第一对象的对象标识和小于该对象偏移量的该第一空间大小的最大整数倍进行哈希计算,得到第五哈希值;该存储设备在该第五哈希值对应的数据索引地址中,读取目标数据地址,该空余空间为该目标数据地址所标识的存储空间中的部分存储空间。
在一种可能的实现方式中,若该存储设备内未存储该第一对象,则该存储设备将该第一数据划分为至少一个数据块,并从数据共享区内未占用的数据地址中,为每个数据块选取一个第一存储地址,并在选取出的至少一个第一存储地址中,分别写入对应的数据块。
可选地,该存储设备从第一写请求中获取该第一对象的对象数据量,若该对象数据量为0,则说明该第一对象为待写入的新对象,此时该存储设备内未存储有该第一对象,若该对象数据量不为0,则说明该存储设备内已经存储该第一对象。
504、该存储设备根据该对象标识以及该对象偏移量,在第二存储地址中写入该第一存储地址的数据验证信息,一个第一存储地址的数据验证信息包括该对象标识以及该第一数据地址中的数据在该第一对象中的起始偏移量,该第二存储地址与该第一存储地址一一对应。
一个第二存储地址为数据共享区中一个第一存储地址所对应的验证地址。
若该至少一个第一存储地址不是该存储设备之前用于存储该第一对象时所使用的数据地址,那么,对于该至少一个第一存储地址中任一第一存储地址,该存储设备根据该任一第一存储址中的数据,确定目标数据量,该目标数据量为在该第一数据内,且位于该任一第一存储地址中的数据之前的数据的数据量;该存储设备将该对象数据量与该目标数据量之和确定为该任一第一存储地址中的数据在该第一对象的起始偏移量;该存储设备将该第一对象的对象标识以及该起始偏移量,确定为该任一第一存储地址的数据验证信息;存储设备在该任一第一存储地址对应的验证地址中,写入该任一第一存储地址的数据验证信息。
由于至少一个第一存储地址所对应的验证地址内存储有该至少一个第一存储地址的数据验证信息,而该至少一个第一存储地址的数据验证信息内均包括该第一对象的对象标识,从而使得该至少一个第一存储地址内存储的第一数据与该第一对象对应,实现了关联存储,因此,步骤503-504所示的过程为存储设备根据该第一写请求,对该第一数据与该第一对象进行关联存储的过程。
505、该存储设备在数据索引中记录该第一存储地址。
该存储设备在至少一个第三存储地址中写入该至少一个第一存储地址,一个第一存储地址对应一个第三存储地址。一个第三存储地址为数据索引区中的一个数据索引地址。
对于该至少一个第一存储地址中的任一第一存储地址,该存储设备基于该任一第一存储地址的数据验证信息,将该任一第一存储地址存储在数据索引区。其中,该存储设备基于该任一第一存储地址的数据验证信息,将该任一第一存储地址存储在数据索引区的过程与步骤306中该存储设备基于该任一数据地址的数据验证信息,将该任一数据地址存储在数据索引区的过程同理,在此,本申请实施例对该存储设备基于该任一第一存储地址的数据验证信息,将该任一第一存储地址存储在数据索引区的过程不做赘述。
506、该存储设备根据该第一写请求,在第四存储地址中写入该第一对象的元数据。
该第四存储地址为元数据共享区中的一个元索引地址。若在写入该第一数据之前,该第一对象为该存储设备中已存储的对象,该第四存储地址中已存储有该第一对象的元数据,则该存储设备根据该第一对象的对象标识,确定该第四存储地址,并根据写入的该第一数据,对该第四存储地址中该第一对象的元数据进行更新。
可选地,该存储设备根据该第一对象的对象标识,确定该第四存储地址包括:该存储设备对第一对象的对象标识进行哈希计算,得到第六哈希值,并从元数据共享区中元索引地址与哈希值的对应关系中,查询该第六哈希值所对应的元索引地址,则该第六哈希值所对应的元索引地址也即是该第四存储地址。
若在写入该第一数据之前,该存储设备中未已存储该第一对象,则该存储设备将多个未占用的存储地址中的任一存储地址,确定为该第四存储地址,并根据该第一写请求生成该第一对象的元数据,并在该第四存储地址中写入该第一对象的元数据;当将该第一对象的元数据写入该第四存储地址后,该存储设备对第一对象的对象标识进行哈希计算,得到第六哈希值,并将该六哈希值与该第四存储地址进行关联存储,以便后续查询。其中,该多个未占用的存储地址为元数据共享区中未占用的多个元索引地址。
当执行完本步骤506之后,该存储设备根据该第四存储地址中的元数据,在该第四存储地址中写入该元数据的元数据验证信息,该元数据验证信息用于验证该元数据。可选地,该存储设备对该第四存储地址中的元数据进行哈希计算,得到第七哈希值,并将该第七哈希值确定为该元数据的元数据验证信息;若该第四存储地址中已经存储有一个元数据验证信息,则该存储设备将存储的元数据验证信息替换为该第七哈希值;若该第四存储地址中未存储有元数据验证信息,则该存储设备将该第七哈希值直接写入该第四存储地址。
507、该存储设备向该客户端发送写入成功响应,该写入成功响应用于指示已经将该第一数据写入该第一对象。
该客户端接收到该写入成功响应后,说明该存储设备已经在存储的第一对象内写入该第一数据,由于该存储设备存储的第一对象仅是文件系统所管理的第一对象的副本,则该文件系统管理的第一对象内还未写入该第一数据,那么,为了使得该第一数据能够被其他计算节点共享,该客户端向文件系统发送该第一写请求,由文件系统根据该第一写请求,将该第一数据写入数据节点所存储的第一对象。
而对于除该计算节点以外的任一计算节点而言,该任一计算节点可能无法访问该存储设备,而该任一计算节点能够访问的目标存储设备中并未存储该第一数据,则当该任一计算节点内的文件系统检测到该第一数据写入数据节点存储的第一对象时,该文件系统向该目标存储设备发送该第一写请求,以便该目标存储设备通过执行上述步骤502-506所示的过程,将该第一数据写入该目标存储设备,以便后续该任一计算节点能够从该目标存储设备读取该第一数据,以避免与文件系统进行交互。
本申请实施例提供的方法,通过存储设备将数据与文件系统所管理的对象进行关联存储,从而能够在存储设备存储的文件系统所管理的对象中写入数据,以便后续客户端在需要读取文件系统所管理的对象中的数据时,客户端能够直接从存储设备读取,而无须与文件系统进行交互,节省了穿越内核的时间,从而缩短了客户端读取数据的时间,提高了读取数据的效率。
图6是本申请实施例提供的一种数据处理装置的结构示意图,所述装置600包含存储设备601,所述存储设备601中有第一对象的第一数据;所述装置600还包含数据索引;所述数据索引中包含所述第一数据在所述存储设备601中的第一存储地址;所述装置600包括:
接收模块602,用于接收第一读请求,所述第一读请求用于读取所述第一数据;
读取模块603,用于基于所述第一数据的数据索引和所述第一读请求,读取所述存储设备601的所述第一数据。
可选地,所述第一读请求包括所述第一对象的对象标识、所述第一数据在所述第一对象中的起始偏移量和所述第一数据的数据量;
所述读取模块603,包括:
确定单元,用于基于所述第一对象的对象标识、所述起始偏移量以及所述数据量,从所述数据索引中确定所述第一存储地址;
读取单元,用于从所述第一存储地址中读取所述第一数据。
可选地,所述第一对象为文件系统中的索引节点inode;所述确定单元用于:
基于所述第一对象的对象标识、所述起始偏移量以及所述数据量计算哈希值;
基于所述哈希值,确定所述数据索引中包含的所述第一数据在所述存储设备601中的第一存储地址。
可选地,所述存储设备601的第二存储地址中存储有所述第一存储地址的数据验证信息,所述数据验证信息用于验证所述第一存储地址中的数据。
可选地,所述装置600还包括:
验证模块,用于根据所述第一读请求以及所述数据验证信息,对读取到的所述第一数据进行验证。
可选地,所述装置600还包括写入模块和记录模块:
所述接收模块602,还用于接收第一写请求,所述第一写请求用于向所述第一对象中写入所述第一数据;
所述写入模块,用于根据所述第一写请求,向所述存储设备的所述第一存储地址写入所述第一数据;
所述记录模块,用于在所述数据索引中记录所述第一存储地址。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
需要说明的是:上述实施例提供的数据处理装置在进行数据处理时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中,计算节点的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算节点执行上述数据处理方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质包括只读存储器、磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (14)
1.一种数据处理方法,其特征在于,应用于计算节点,所述计算节点包含存储设备,所述存储设备中有第一对象的第一数据;所述计算节点还包含数据索引;所述数据索引中包含所述第一数据在所述存储设备中的第一存储地址;所述方法包括:
接收第一读请求,所述第一读请求用于读取所述第一数据;
基于所述第一数据的数据索引和所述第一读请求,读取所述存储设备的所述第一数据。
2.根据权利要求1所述的方法,其特征在于,所述第一读请求包括所述第一对象的对象标识、所述第一数据在所述第一对象中的起始偏移量和所述第一数据的数据量;
所述基于所述第一数据的数据索引和所述第一读请求,读取所述存储设备中的所述第一数据包括:
基于所述第一对象的对象标识、所述起始偏移量以及所述数据量,从所述数据索引中确定所述第一存储地址;
从所述第一存储地址中读取所述第一数据。
3.根据权利要求1所述的方法,其特征在于,所述第一对象为文件系统中的索引节点inode;
所述基于所述第一对象的对象标识、所述起始偏移量以及所述数据量,从所述数据索引中确定第一存储地址包括:
基于所述第一对象的对象标识、所述起始偏移量以及所述数据量计算哈希值;
基于所述哈希值,确定所述数据索引中包含的所述第一数据在所述存储设备中的第一存储地址。
4.根据权利要求1-3任一所述的方法,其特征在于,所述存储设备的第二存储地址中存储有所述第一存储地址的数据验证信息,所述数据验证信息用于验证所述第一存储地址中的数据。
5.根据权利要求4所述的方法,其特征在于,所述读取所述存储设备的所述第一数据之后,所述方法还包括:
根据所述第一读请求以及所述数据验证信息,对读取到的所述第一数据进行验证。
6.根据权利要求1-5任一所述的方法,其特征在于,所述接收第一读请求之前,所述方法还包括:
接收第一写请求,所述第一写请求用于向所述第一对象中写入所述第一数据;
根据所述第一写请求,向所述存储设备的所述第一存储地址写入所述第一数据;
在所述数据索引中记录所述第一存储地址。
7.一种数据处理装置,其特征在于,所述装置包含存储设备,所述存储设备中有第一对象的第一数据;所述装置还包含数据索引;所述数据索引中包含所述第一数据在所述存储设备中的第一存储地址;所述装置包括:
接收模块,用于接收第一读请求,所述第一读请求用于读取所述第一数据;
读取模块,用于基于所述第一数据的数据索引和所述第一读请求,读取所述存储设备的所述第一数据。
8.根据权利要求7所述的装置,其特征在于,所述第一读请求包括所述第一对象的对象标识、所述第一数据在所述第一对象中的起始偏移量和所述第一数据的数据量;
所述读取模块,包括:
确定单元,用于基于所述第一对象的对象标识、所述起始偏移量以及所述数据量,从所述数据索引中确定所述第一存储地址;
读取单元,用于从所述第一存储地址中读取所述第一数据。
9.根据权利要求7所述的装置,其特征在于,所述第一对象为文件系统中的索引节点inode;所述确定单元用于:
基于所述第一对象的对象标识、所述起始偏移量以及所述数据量计算哈希值;
基于所述哈希值,确定所述数据索引中包含的所述第一数据在所述存储设备中的第一存储地址。
10.根据权利要求7-9任一所述的装置,其特征在于,所述存储设备的第二存储地址中存储有所述第一存储地址的数据验证信息,所述数据验证信息用于验证所述第一存储地址中的数据。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括:
验证模块,用于根据所述第一读请求以及所述数据验证信息,对读取到的所述第一数据进行验证。
12.根据权利要求7-11任一所述的装置,其特征在于,所述装置还包括写入模块和记录模块:
所述接收模块,还用于接收第一写请求,所述第一写请求用于向所述第一对象中写入所述第一数据;
所述写入模块,用于根据所述第一写请求,向所述存储设备的所述第一存储地址写入所述第一数据;
所述记录模块,用于在所述数据索引中记录所述第一存储地址。
13.一种计算节点,其特征在于,所述计算节点包括处理器和存储器,所述存储器中存储有至少一条程序代码,所述程序代码由所述处理器加载并执行以实现如权利要求1至权利要求6任一项所述的数据处理方法所执行的操作。
14.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条程序代码,所述程序代码由处理器加载并执行以实现如权利要求1至权利要求6任一项所述的数据处理方法所执行的操作。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011148703.0A CN114490517A (zh) | 2020-10-23 | 2020-10-23 | 数据处理方法、装置、计算节点以及计算机可读存储介质 |
PCT/CN2021/114136 WO2022083267A1 (zh) | 2020-10-23 | 2021-08-23 | 数据处理方法、装置、计算节点以及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011148703.0A CN114490517A (zh) | 2020-10-23 | 2020-10-23 | 数据处理方法、装置、计算节点以及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114490517A true CN114490517A (zh) | 2022-05-13 |
Family
ID=81291530
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011148703.0A Pending CN114490517A (zh) | 2020-10-23 | 2020-10-23 | 数据处理方法、装置、计算节点以及计算机可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114490517A (zh) |
WO (1) | WO2022083267A1 (zh) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101656094B (zh) * | 2009-09-25 | 2012-04-18 | 杭州华三通信技术有限公司 | 数据存储方法和存储设备 |
JP5500257B2 (ja) * | 2010-09-30 | 2014-05-21 | 日本電気株式会社 | ストレージシステム |
CN102968498B (zh) * | 2012-12-05 | 2016-08-10 | 华为技术有限公司 | 数据处理方法及装置 |
CN105653539A (zh) * | 2014-11-13 | 2016-06-08 | 腾讯数码(深圳)有限公司 | 索引分布式存储的实现方法和装置 |
CN106339270B (zh) * | 2016-08-26 | 2021-11-19 | 华为技术有限公司 | 数据校验方法及装置 |
CN111061680A (zh) * | 2018-10-15 | 2020-04-24 | 北京京东尚科信息技术有限公司 | 一种数据检索的方法和装置 |
-
2020
- 2020-10-23 CN CN202011148703.0A patent/CN114490517A/zh active Pending
-
2021
- 2021-08-23 WO PCT/CN2021/114136 patent/WO2022083267A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2022083267A1 (zh) | 2022-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108810041B (zh) | 一种分布式缓存系统的数据写入及扩容方法、装置 | |
US9830101B2 (en) | Managing data storage in a set of storage systems using usage counters | |
CN110019004B (zh) | 一种数据处理方法、装置及系统 | |
EP3076307A1 (en) | Method and device for responding to a request, and distributed file system | |
CN110651246B (zh) | 一种数据读写方法、装置和存储服务器 | |
JP2012089094A5 (zh) | ||
CN113672175A (zh) | 分布式对象存储方法、装置和设备及计算机存储介质 | |
CN110908589B (zh) | 数据文件的处理方法、装置、系统和存储介质 | |
CN110597887B (zh) | 一种基于区块链网络的数据管理方法、装置及存储介质 | |
CN108614837B (zh) | 文件存储和检索的方法及装置 | |
WO2021143351A1 (zh) | 分布式检索方法、装置、系统、计算机设备及存储介质 | |
CN109302448B (zh) | 一种数据处理方法及装置 | |
JP6268116B2 (ja) | データ処理装置、データ処理方法およびコンピュータプログラム | |
US20230359628A1 (en) | Blockchain-based data processing method and apparatus, device, and storage medium | |
CN111400334A (zh) | 数据处理方法、装置、存储介质及电子装置 | |
CN111435286A (zh) | 一种数据存储方法、装置和系统 | |
CN113608694A (zh) | 数据迁移方法、信息处理方法、装置及服务器与介质 | |
CN111309799A (zh) | 数据合并的实现方法、装置、系统及存储介质 | |
CN111796772B (zh) | 缓存的管理方法、缓存节点及分布式存储系统 | |
CN113853778B (zh) | 一种文件系统的克隆方法及装置 | |
CN113905252B (zh) | 直播间的数据存储方法、装置、电子设备及存储介质 | |
CN114490517A (zh) | 数据处理方法、装置、计算节点以及计算机可读存储介质 | |
CN113032414B (zh) | 数据管理方法、装置、系统、计算设备及存储介质 | |
CN116542668A (zh) | 一种基于区块链的数据处理方法、设备及可读存储介质 | |
CN111221857B (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 |