CN108089818B - 数据处理方法、装置及存储介质 - Google Patents
数据处理方法、装置及存储介质 Download PDFInfo
- Publication number
- CN108089818B CN108089818B CN201711321395.5A CN201711321395A CN108089818B CN 108089818 B CN108089818 B CN 108089818B CN 201711321395 A CN201711321395 A CN 201711321395A CN 108089818 B CN108089818 B CN 108089818B
- Authority
- CN
- China
- Prior art keywords
- data
- requests
- written
- data writing
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
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
- G06F3/0613—Improving I/O performance in relation to throughput
-
- 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
技术领域
本发明涉及数据处理技术,尤其涉及一种数据处理方法、装置及存储介质。
背景技术
随着用户对数据存储方式的读写速度、共享方面的要求越来越高,对象存储应运而生,对象存储因其同时兼具存储区域网络(SAN,Storage Area Network)高速直接访问磁盘的特点,以及网络附加存储(NAS,Network Attached Storage)的分布式共享特点,而成为当下数据存储中的研究热点。
对象存储中的一种数据写入方式为:采用http协议,通过对象存储的应用程序接口(API,Application Programming Interface)来进行,然而通过API进行数据写入的开发成本高、开发难度大。
相关技术中还采用的一种数据写入方式是,通过-osync的方式进行挂载,然而,由于这种数据写入方式只支持同步写的方式,即客户端发送数据写入请求后,服务器基于该请求进行数据写入并给予客户端以响应,客户端在接收到响应后才可发送下一个数据写入请求,导致了数据写入性能很低。
发明内容
有鉴于此,本发明实施例期望提供一种数据处理方法、装置及存储介质,能够提高数据写入的性能。
本发明实施例的技术方案是这样实现的:
第一方面,本发明实施例提供一种数据处理方法,所述方法包括:
将云端文件系统的存储目录挂载到客户端文件系统的挂载点;
接收到所述客户端针对所述挂载点的文件发送的数据写入请求时,对所述数据写入请求进行缓存处理;
根据缓存的所述数据写入请求所写入数据的特征,选取符合数据连续性条件的数据写入请求;
将所述符合数据连续性条件的数据写入请求所写入的数据,持久化存储至所述云端文件系统中所述文件的存储位置。
第二方面,本发明实施例提供一种数据处理装置,所述装置包括:
挂载单元,用于将云端文件系统的存储目录挂载到客户端文件系统的挂载点;
缓存单元,用于接收到所述客户端针对所述挂载点的文件发送的数据写入请求时,对所述数据写入请求进行缓存处理;
选取单元,用于根据缓存的所述数据写入请求所写入数据的特征,选取符合数据连续性条件的数据写入请求;
存储单元,用于将所述符合数据连续性条件的数据写入请求所写入的数据,持久化存储至所述云端文件系统中所述文件的存储位置。
第三方面,本发明实施例提供一种数据处理装置,所述装置包括:
存储器,用于存储可执行程序;
处理器,用于执行所述存储器中存储的可执行程序时,实现上述的数据处理方法。
第四方面,本发明实施例提供一种存储介质,存储有可执行程序,所述可执行程序被处理器执行时,实现上述的数据处理方法。
应用本发明上述实施例具有以下有益效果:
1),由于对云端文件系统的存储目录的挂载无需使用-osync的方式,同时对接收的数据写入请求进行缓存处理,使得客户端可以同时发送多个数据写入请求,无需在接收到对应发出的一个数据写入请求的响应后再发送下一个数据写入请求,进而提高数据写入效率;
2),将符合数据连续性条件的数据写入请求所写入的数据,持久化存储至云端文件系统中文件的存储位置,使得在文件的存储位置可以实现连续的多个数据写入请求所写入数据的一次性写入,大大提高了数据写入性能。
附图说明
图1为本发明实施例提供的对象存储系统的目录结构示意图;
图2为本发明实施例提供的NFS-Server分享目录与客户端挂载示意图;
图3为本发明实施例提供的数据处理系统的架构示意图;
图4为本发明实施例提供的数据处理方法的一个可选的流程示意图;
图5为本发明实施例提供的数据缓存层的结构示意图;
图6A为本发明实施例提供的数据处理方法的一个可选的流程示意图;
图6B为本发明实施例提供的数据处理方法的一个可选的流程示意图;
图7所示为本发明实施例提供的数据处理装置的组成结构示意图;
图8为本发明实施例提供的数据处理装置的一个可选的硬件结构示意图。
具体实施方式
以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所提供的实施例仅仅用以解释本发明,并不用于限定本发明。另外,以下所提供的实施例是用于实施本发明的部分实施例,而非提供实施本发明的全部实施例,在不冲突的情况下,本发明实施例记载的技术方案可以任意组合的方式实施。
需要说明的是,在本发明实施例中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的方法或者装置不仅包括所明确记载的要素,而且还包括没有明确列出的其他要素,或者是还包括为实施方法或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的方法或者装置中还存在另外的相关要素(例如方法中的步骤或者装置中的单元,例如的单元可以是部分电路、部分处理器、部分程序或软件等等)。
例如,本发明实施例提供的数据处理方法包含了一系列的步骤,但是本发明实施例提供的数据处理方法不限于所记载的步骤,同样地,本发明实施例提供的数据处理装置包括了一系列单元,但是本发明实施例提供的装置不限于包括所明确记载的单元,还可以包括为获取相关信息、或基于信息进行处理时所需要设置的单元。
对本发明实施例进行详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
1)挂载,指将存储设备或存储介质(如云端文件系统)的存储目录(根目录或根目录下的子目录)挂接到一个已存在的目录(如客户端本地的目录)上,以通过访问这个已存在的目录来访问存储设备。
2)挂载点,指的是在执行了上述挂载的操作后,挂接的已存在的目录,作为访问存储设备的入口,类似于windows中的用来访问不同分区的C:、D:、E:等盘符。
3)偏移量,把存储单元的实际地址与其所在段的段地址之间的数据长度称为偏移量。
4)数据分片,将一个文件划分为数据量大小基本一致的多组数据,每组数据即为一个数据分片。
5)线程池,一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。
6)云端文件系统,处于云端的用于存储文件的存储设备,如对象存储系统(Object-Based Storage System)中的存储桶(bucket)。
7)持久化,是将程序数据在持久状态和瞬时状态间转换的机制,即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。
接下来对本发明实施例中涉及的对象存储系统及网络文件系统服务器(NFS-Server,Network File System-Server)进行说明。
对象存储也就是通常意义的键值存储,以S3为例,主要接口有PUT/GET/DELETE等。对象存储系统采用的是无层次结构的数据存储方式,通常用于云中,对象存储的基本单元是对象(Object)/文件,基于对象的存储不使用目录树,而是存在于平面地址空间内,为了规避采用树形目录时,设备损坏或扩容时需要将巨型目录树中的数据重新分配均衡问题,对象存储系统采用扁平目录结构,参见图1,图1为本发明实施例提供的对象存储系统的目录结构示意图,对象存储系统的目录结构相较于树形目录来说大幅简化,只保留二级目录结构,根目录下直接就是存储桶(对应Windows下的文件夹),存储桶中直接存放对象(对应Windows下的文件),桶中不能再建桶(禁止多层文件夹),这样以来,元数据结构十分简单,移动方便。
NFS-Server可以看作一个文件服务器,它可以通过网络让不同操作系统的计算机共享数据,可以让用户侧的客户端(client)通过网络将远端的NFS-Server共享的目录挂载(mount)到客户端本地当中,在客户端本地看来,远程主机的目录就好像是自己的一个磁盘分区一样,可以使用cp、cd、mv、rm及df等与磁盘相关的命令。参见图2,图2为本发明实施例提供的NFS-Server分享目录与客户端挂载示意图,在图2中,当NFS-Server设定好了共享出/home/share file(可以是其它目录)这个目录后,其他的NFS客户端就可以将这个目录挂载到自己系统上面的某个挂载点,挂载点可以自定义,如图2中的NFS client1与NFSclient2挂载的目录就不相同。在NFS client1系统中进入/home/data/share file内,就可以看到NFS-Server系统内的/home/share file目录下的所有数据了(要有相应的权限),这个/home/data/share file就好像NFS client1本地存在的一个分区。
由于NFS-Server开启的端口不确定(一定是在1024以下),所以客户端要想访问NFS-Server时需要其他软件的协助,这就是远程过程调用(RPC,Remote Procedure Call)协议。RPC最主要的功能就是在指定每个NFS功能所对应的port number,并且回报给客户端,让客户端可以连结到正确的端口上去。当服务器在启动NFS时会随机取用数个端口,并主动的向RPC注册,因此RPC可以知道每个端口对应的NFS,固定地使用port 111监听客户端的需求并回报客户端正确的埠口。
图3为本发明实施例提供的数据处理系统的架构示意图,参见图3,客户端通过mount命令把NFS-Server分享的对象存储系统中的存储桶(bucket)挂载到本地的挂载点,然后客户端通过这个挂载点使用标准的可移植操作系统接口(POSIX,Portable OperatingSystem Interface of UNIX)来写入、读取bucket中的文件;本地的挂载和NFS-Server通过NFS协议来进行信息交互;NFS-Server下挂载有云对象服务(COS,Cloud Object Service)的动态链接库(.so),通过对象存储协议对对象存储系统的bucket中存储的文件进行读写;当客户端通过本地挂载点进行文件读写操作时,通过NFS-Server实现了POSIX接口向对象存储接口的转换,进而实现了客户端将对云端文件的操作转换为对本地文件系统中文件的操作。
作为实现本发明实施例数据处理方法的一个可选实施例,图4为本发明实施例提供的数据处理方法的一个可选的流程示意图,参见图4,涉及步骤101至步骤105,以下分别进行说明。
步骤101:客户端将云端文件系统的存储目录挂载到本地文件系统的挂载点。
在一实施例中,云端文件系统的存储目录可以为对象存储系统中的bucket对应的目录,相应的,本步骤可以包括:客户端通过mount命令将NFS-Server导出的某个bucket对应的目录挂载到客户端本地文件系统的挂载点,也即建立云端文件系统的存储目录与客户端本地文件系统的存储目录之间的映射。在此,由于挂载bucket时无需指定-osync选项,使得客户端可以同时或连续发送多个数据写入请求,而无需在收到当前发送的数据写入请求的响应后才发送下一请求,提高了数据写入的效率。
步骤102:客户端针对挂载点的文件发送多个数据写入请求给NFS-Server。
在实际应用中,用户通过对客户端本地文件系统挂载点的文件进行数据写入,触发客户端发送数据写入请求,客户端可以同时或连续发送针对挂载点的某一文件的多个数据写入请求,例如当用户使用open系统调用打开挂载点的某个文件后,通过多次write系统调用写入数据到这个文件,触发客户端多次发送针对挂载点的文件的多个数据写入请求。
在本发明实施例中,每个数据写入请求包含以下字段信息:数据写入请求自身的数据长度、数据写入请求所写入数据的偏移量(offset)、数据写入请求所写入的数据。
步骤103:NFS-Server将接收到的数据写入请求顺序缓存至数据缓存层。
在实际实施时,NFS-Server启动后会加载云对象服务的动态链接库;NFS-Server中可以设置一个数据缓存(Cache)层,用于缓存接收到的数据写入请求,参见图5,图5为本发明实施例提供的数据缓存层的结构示意图,Cache本质上是个链表,可以管理接收到的针对不同文件的多个数据写入请求。
在一实施例中,NFS-Server可以通过如下方式将接收到的数据写入请求顺序缓存至数据缓存层:获取接收的针对同一文件的各数据写入请求所写入数据的偏移量;根据偏移量的大小对接收的数据写入请求进行排序(如按照偏移量由小到大的顺序对数据写入请求进行排序);根据排序结果,顺序缓存所接收的多个数据写入请求。在实际应用中,针对同一文件的数据写入请求,在接收上具有随机性,例如,对于同一文件来说,连续接收的四个数据写入请求的偏移量分别为3M、0M、1M、2M,则在接收每个数据写入请求后不断调整其在数据缓存层的顺序,使得在接收到第四个数据写入请求后的排序为偏移量为0M、1M、2M、3M对应的数据写入请求。
步骤104:NFS-Server根据缓存的数据写入请求所写入数据的特征,选取符合数据连续性条件的数据写入请求。
在一实施例中,写入请求所写入数据的特征可以包括数据的偏移量及长度,相应的,可以通过如下方式选取符合数据连续性条件的数据写入请求:
确定缓存的针对同一文件的各数据写入请求所写入数据的偏移量及长度;根据各数据写入请求所写入数据的偏移量及长度,从缓存的数据写入请求中,选取所写入的数据构成文件的一个数据分片的N个数据写入请求;N为不小于2的正整数。
在实际实施时,选取所写入的数据构成文件的一个数据分片的N个数据写入请求可以为:选取数据长度之和超过预设数据阈值的连续的N个数据写入请求。在一实施例中,可以通过如下方式选取所写入的数据构成文件的一个数据分片的N个数据写入请求:NFS-Server获取缓存的针对同一文件的各数据写入请求的数据的长度;计算缓存的数据写入请求中,每个数据写入请求所写入数据的偏移量及长度的和;从缓存的数据写入请求中,选取数据写入请求的数据长度之和超过第一数据阈值的满足以下条件的N个数据写入请求:第N-1个数据写入请求所写入数据的偏移量及长度的和等于第N个数据写入请求所写入数据的偏移量;如此,保证了选取的N个数据写入请求为连续的数据写入请求,即N个数据写入请求所写入数据在对应文件的存储位置中是连续的。
这里,第一数据阈值可以依据实际需要进行设定,如16M,当选取的符合上述条件的数据写入请求的数据长度之和超过设定的第一数据阈值时,视为选取的数据写入请求所写入数据可以构成文件的一个数据分片。
以数据写入请求的数据长度之和超过第一数据阈值的数据写入请求数量N是4为例对是否满足上述条件(即第N-1个数据写入请求所写入数据的偏移量及长度的和等于第N个数据写入请求所写入数据的偏移量)的确定过程进行举例说明。例如:第1个数据写入请求所写入数据的偏移量为0M、数据长度为1M,第1个数据写入请求所写入数据的偏移量为0M、数据长度为1M,第2个数据写入请求所写入数据的偏移量为1M、数据长度为1M,第3个数据写入请求所写入数据的偏移量为2M、数据长度为1M,第4个数据写入请求所写入数据的偏移量为3M、数据长度为1M,可知,第1个数据写入请求所写入数据的偏移量及长度的和等于第2个数据写入请求所写入数据的偏移量,第2个数据写入请求所写入数据的偏移量及长度的和等于第3个数据写入请求所写入数据的偏移量,第3个数据写入请求所写入数据的偏移量及长度的和等于第4个数据写入请求所写入数据的偏移量,也即,这四个数据写入请求为连续的数据写入请求,所写入数据构成连续数据,也即这四个数据写入请求所写入数据在对应文件的存储位置中是连续的。
在一实施例中,还可以通过如下方式选取符合数据连续性条件的数据写入请求:确定缓存的针对同一文件的各数据写入请求所写入数据的偏移量及长度;根据各数据写入请求所写入数据的偏移量及长度,从缓存的数据写入请求中,选取所写入数据构成文件的一个数据分片的满足以下条件的N(N为不小于2的正整数)个数据写入请求:N个数据写入请求所写入数据构成的数据分片,与已经选取的该文件的数据写入请求对应的数据分片形成连续数据分片,也即已经选取的该文件的数据写入请求对应的数据分片中,存在与N个数据写入请求对应的数据分片相连续的数据分片;也就是说,已经选取的所述文件的数据写入请求中,存在与所述N个数据写入请求相连续的数据写入请求。
在一实施例中,对符合数据连续性条件的数据写入请求选取完成后,将其加入线程池进行所写入数据的上传,因此,上述条件(N个数据写入请求所写入数据构成的数据分片,与已经选取的该文件的数据写入请求对应的数据分片形成连续数据分片)亦可理解为已经加入线程池的数据分片中,存在与N个数据写入请求所写入数据构成的数据分片相连续的数据分片;也即,已经加入线程池的数据写入请求中,存在与所述N个数据写入请求相连续的数据写入请求。而对已经选取的文件的数据写入请求信息的获取,可通过自身记录的已经选取的文件的数据写入请求的信息(已经加入线程池的数据写入请求的信息)得到。
在一实施例中,可以通过如下方式确定已经选取的文件的数据写入请求对应的数据分片中,存在与N个数据写入请求对应的数据分片相连续的数据分片,即通过如下方式确定已经选取的所述文件的数据写入请求中,存在与所述N个数据写入请求相连续的数据写入请求:
响应于已经选取的文件的数据写入请求为空,获取N个数据写入请求中第一个数据写入请求所写入数据的偏移量;若第一个数据写入请求所写入数据的偏移量为零,确定已经选取的所述文件的数据写入请求对应的数据分片中,存在与N个数据写入请求对应的数据分片相连续的数据分片;以N为4举例说明,若当前线程池中对应该文件的数据写入请求为空,且已经上传的该文件的数据为空,可知已经选取的文件的数据写入请求为空,若获取的4个数据写入请求中第一个数据写入请求所写入数据的偏移量为零,可知这4个数据写入请求所写入数据构成的该文件的数据分片为该文件的首个数据分片。
响应于已经选取了文件的K个连续的数据写入请求,确定K个连续的数据写入请求中第K个数据写入请求所写入数据的偏移量及长度的和;若N个数据写入请求中第一个数据写入请求所写入数据的偏移量等于第K个数据写入请求所写入数据的偏移量及长度的和,确定已经选取的所述文件的数据写入请求对应的数据分片中,存在与N个数据写入请求对应的数据分片相连续的数据分片。以N为4、K为8举例说明,在实际应用中,这8个连续的数据写入请求所写入数据可能构成该文件的一个或多个数据分片,当构成多个数据分片时,为多个连续的数据分片,若已经选取的符合数据连续性条件的8个数据写入请求中第8个数据写入请求所写入数据的偏移量为6M、数据长度为2M,数据缓存层中的这4个数据写入请求中的第一个数据写入请求所写入数据的偏移量为8M,等于已经选取的符合数据连续性条件的8个数据写入请求中第8个数据写入请求所写入数据的偏移量及长度的和,视为已经选取的文件的上述8个数据写入请求对应的数据分片中,存在与数据缓存层中的上述4个数据写入请求对应的数据分片相连续的数据分片。
步骤105:NFS-Server将符合数据连续性条件的数据写入请求所写入的数据,持久化存储至云端文件系统中文件的存储位置。
在一实施例中,NFS-Server中设置多个线程池,具体数量可依据实际需要进行设定,如5个,将选取的符合数据连续性条件的数据写入请求加入某个线程池,上传数据写入请求所写入的数据至云端文件系统中该文件的存储位置;其中,线程池每次上传的数据长度,等于符合数据连续性条件的数据写入请求所写入的数据长度,也就是说,线程池每次上传的数据长度为文件的一个数据分片的长度。如此,由于设置了线程池,可实现对文件数据的分片上传,又由于线程池可设置为多个,可实现文件的多个数据分片的共同上传,大大提高了对文件的数据写入性能。
在一实施例中,为了保证用户按照顺序的方式写入文件,可设置第二数据阈值(依据实际需要进行设定,如160M),相应的,方法还可以包括:计算数据缓存层中缓存的数据写入请求的数据长度之和;确定缓存的数据写入请求的数据长度之和超过第二数据阈值时,删除缓存的数据写入请求,并发送错误指示(IOERROR)给所述客户端。
在一实施例中,为了避免数据缓存层中的数据过多导致的数据上传错误,设置数据缓存层的数据长度阈值,即第二数据阈值,相应的,方法还可以包括:计算缓存的数据写入请求的数据长度之和;确定数据缓存层中缓存的数据写入请求的数据长度之和超过第二数据阈值时,根据缓存的数据写入请求所写入数据的偏移量,逐一将缓存的数据写入请求所写入的数据持久化存储至文件的存储位置。
应用本发明上述实施例,具有以下有益效果:
1)通过NFS的方式实现对象存储系统中bucket的挂载,无需指定-osync的选项,使得客户端可以同时或连续的发送针对同一文件的多个数据写入请求,而无需等待接收到服务器发送的对数据写入请求的响应后再发送下一数据写入请求;
2)通过对多个数据写入请求的顺序缓存以及对符合数据连续性条件的多个数据写入请求的选取,保证了对文件数据的连续性写入;
3)在对符合数据连续性条件的多个数据写入请求的选取中,设置多个数据写入请求的数据长度阈值,保证了每次选取的多个数据写入请求对应文件的一个数据分片,使得对文件的数据上传为分片上传;
4)设置多个线程池,将符合数据连续性条件的多个数据写入请求加入线程池进行数据上传,由于符合数据连续性条件的多个数据写入请求所写入数据对应文件的一个数据分片,使得可对文件进行多个数据分片并行上传,大大提高了对文件的数据写入性能;
5)设置了数据缓存层的数据长度阈值,使得用户在未顺序写入文件时返回错误指示,确保客户端发送的数据写入请求总体上是连续的。
作为实现本发明实施例数据处理方法的一个可选实施例,图6A及图6B分别示出了本发明实施例提供的数据处理方法的一个可选的流程示意图,结合图6A及图6B,本发明实施例数据处理方法包括:
步骤201:NFS-Server启动并加载网络文件系统对应的动态链接库。
在实际应用中,由于NFS-Server下挂载了COS的动态链接库,因此,当NFS-Server启动时会加载对应COS的.so文件,以实现向对象存储系统进行文件的写入。
步骤202:客户端通过mount命令挂载NFS-Server分享的bucket到本地的文件系统。
在实际实施时,当客户端通过mount命令挂载NFS-Server分享的bucket到本地的文件系统后,可使用标准的POSIX接口来写入、读取bucket中的文件,本地挂载点和NFS-Server通过NFS协议来进行交互,实现了POSIX接口向对象存储接口的转换工作。
步骤203:客户端发送针对同一文件的多个数据写入请求给NFS-Server。
在实际应用中,用户使用open系统调用打开挂载点下的某个文件的操作,对应在NFS-Server的COS中,对象cache相关数据结构的初始,而当用户通过多次write系统调用写入数据到这个文件,触发客户端发送多个数据写入请求给NFS-Server。其中,每个数据写入请求包含以下字段信息:数据写入请求自身的数据长度、数据写入请求所写入数据的偏移量(offset)、数据写入请求所写入的数据。
步骤204:NFS-Server依据顺序缓存接收到的多个数据写入请求至cache层。
Cache本质上是个链表,Cache的结构示意图如图5所示,在cache层,所有的数据写入请求按照offset进行排序,即NFS-Server接收到数据写入请求后,确定每个数据写入请求所写入数据的offset,并基于确定的offset大小,按照offset从小到大(亦可为从大到小)的顺序对多数据写入请求顺序缓存。
步骤205:判断cache层中是否存在连续的长度之和超过预设第一数据阈值的n个数据写入请求,如果存在,执行步骤206;如果不存在,执行步骤208。
这里,NFS-Server配置了参数max_consecutive_length,max_consecutive_length表征连续的多个数据写入请求的数据长度之和的最大值,在一实施例中,max_consecutive_length=16MB。当连续的多个数据写入请求的数据长度之和超过max_consecutive_length,表明该连续的多个数据写入请求携带的数据已达到对应文件的一个数据分片的数据量,触发数据分片上传,即对该连续的多个数据写入请求携带的数据进行一次性上传。
在一实施例中,可通过如下方式判断cache层中数据写入请求是否连续:获取针对同一文件的数据写入请求所写入数据的偏移量及数据长度,当某个数据写入请求所写入数据的偏移量及数据长度之和,与另一数据写入请求所写入数据的偏移量大小相等,表明这两个数据写入请求为连续的数据写入请求,所写入数据在文件的存储位置是连续的。例如:第一数据写入请求所写入数据的偏移量为1M、所写入数据的长度为1M,第二数据写入请求所写入数据的偏移量为2M,则第一数据写入请求与第二数据写入请求为连续的数据写入请求。
在实际应用中,NFS-Server配置了参数max_total_length,max_total_length表征cache层中数据写入请求的数据长度之和的最大值,用来确保用户的数据写入请求是总体连续的,在一实施例中,max_total_length=160M,当确定cache层中数据写入请求的数据长度之和超过设定的max_total_length时,删除缓存的数据写入请求,并发送错误指示(IOERROR)给用户(客户端)。
步骤206:判断已经加入线程池的数据写入请求中是否存在与n个数据写入请求相连续的数据写入请求,如果存在,执行步骤207;如果不存在,执行步骤208。
在本发明实施例中,NFS-Server配置了参数thread_number,thread_number表示分片上传的线程池的个数,每个线程池每次上传的数据大小为文件的一个数据分片的数据量,也即,每次加入线程池的数据写入请求所携带的数据对应文件的一个数据分片大小。因此,本步骤也可以理解为判断加入线程池中的数据(包括等待上传及已经上传的数据)中是否存在与n个数据写入请求对应的数据分片相连续的数据分片。
在一实施例中,可通过如下方式判断已经加入线程池的数据写入请求中是否存在与n个数据写入请求相连续的数据写入请求:
判断已经加入线程池的数据写入请求中是否存在与n个数据写入请求中第一个数据写入请求相连续的数据请求,即判断已经加入线程池的数据写入请求中是否存在满足以下条件的数据写入请求:数据写入请求所写入数据的偏移量及长度的和与n个数据写入请求中第一个数据写入请求所写入数据的偏移量相等。
需要说明的是,在一实施例中,如图6B,步骤206的判断过程可省略,即当确定存在携带的数据构成文件的一个数据分片的数据写入请求时,便启动分片上传,执行步骤207。
步骤207:将n个数据写入请求加入线程池,进行数据上传。
在实际应用中,将n个数据写入请求加入线程池后,分片上传的线程池使用对象存储的分片上传的API进行数据上传。当用户close关闭文件时,等待所有的数据分片上传结束,然后finish整个分片上传,整个文件的上传结束。
步骤208:结束本次处理流程。
本发明实施例还提供了一种数据处理装置,图7所示为本发明实施例提供的数据处理装置的组成结构示意图,参见图7,本发明实施例提供的数据处理装置包括:
挂载单元11,用于将云端文件系统的存储目录挂载到客户端文件系统的挂载点;
缓存单元12,用于接收到所述客户端针对所述挂载点的文件发送的数据写入请求时,对所述数据写入请求进行缓存处理;
选取单元13,用于根据缓存的所述数据写入请求所写入数据的特征,选取符合数据连续性条件的数据写入请求;
存储单元14,用于将所述符合数据连续性条件的数据写入请求所写入的数据,持久化存储至所述云端文件系统中所述文件的存储位置。
在一实施例中,所述缓存单元12,还用于响应于所述客户端针对所述挂载点的文件发送的数据写入请求为多个,获取接收的各所述数据写入请求所写入数据的偏移量;
根据偏移量的大小对接收的所述数据写入请求进行排序;
根据排序结果,顺序缓存所接收的多个数据写入请求。
在一实施例中,所述选取单元13,还用于确定缓存的各所述数据写入请求所写入数据的偏移量及长度;
根据各所述数据写入请求所写入数据的偏移量及长度,从缓存的所述数据写入请求中,选取所写入的数据构成所述文件的一个数据分片的N个数据写入请求;N为不小于2的正整数。
在一实施例中,所述选取单元13,还用于获取缓存的各所述数据写入请求的数据的长度;
计算缓存的所述数据写入请求中,每个数据写入请求所写入数据的偏移量及长度的和;
从缓存的所述数据写入请求中,选取数据写入请求的数据长度之和超过第一数据阈值的满足以下条件的N个数据写入请求:
第N-1个数据写入请求所写入数据的偏移量及长度的和等于第N个数据写入请求所写入数据的偏移量。
在一实施例中,所述选取单元13,还用于确定已经选取的所述文件的数据写入请求对应的数据分片中,存在与所述N个数据写入请求对应的数据分片相连续的数据分片。
在一实施例中,所述选取单元13,还用于响应于已经选取的所述文件的数据写入请求为空,获取所述N个数据写入请求中第一个数据写入请求所写入数据的偏移量;
若所述第一个数据写入请求所写入数据的偏移量为零,确定已经选取的所述文件的数据写入请求对应的数据分片中,存在与所述N个数据写入请求对应的数据分片相连续的数据分片。
在一实施例中,所述选取单元13,还用于响应于已经选取了所述文件的K个连续的数据写入请求,确定所述K个连续的数据写入请求中第K个数据写入请求所写入数据的偏移量及长度的和;
若所述N个数据写入请求中第一个数据写入请求所写入数据的偏移量等于所述第K个数据写入请求所写入数据的偏移量及长度的和,确定已经选取的所述文件的数据写入请求对应的数据分片中,存在与所述N个数据写入请求对应的数据分片相连续的数据分片。
在一实施例中,所述存储单元14,还用于将所述符合数据连续性条件的数据写入请求加入线程池,上传所述数据写入请求所写入的数据至所述云端文件系统中所述文件的存储位置;
所述线程池每次上传的数据长度,等于所述符合数据连续性条件的数据写入请求所写入的数据长度。
在一实施例中,所述装置还包括:
提示单元,用于计算缓存的所述数据写入请求的数据长度之和;
确定缓存的所述数据写入请求的数据长度之和超过第二数据阈值时,删除缓存的所述数据写入请求,并发送错误指示给所述客户端。
在一实施例中,所述存储单元14,还用于计算缓存的所述数据写入请求的数据长度之和;
确定缓存的所述数据写入请求的数据长度之和超过第二数据阈值时,根据缓存的所述数据写入请求所写入数据的偏移量,逐一将缓存的所述数据写入请求所写入的数据持久化存储至所述文件的存储位置。
参见图8,图8为本发明实施例提供的数据处理装置的一个可选的硬件结构示意图,可以应用于前述的服务器,图3所示的数据处理装置100包括:至少一个处理器21、存储器22、至少一个网络接口23。数据处理装置100中的各个组件通过总线系统24耦合在一起。可以理解,总线系统24用于实现这些组件之间的连接通信。总线系统24除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图8中将各种总线都标为总线系统24。
其中,存储器22可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。
本发明实施例中的存储器22用于存储各种类型的数据以支持数据处理装置100的操作。这些数据的示例包括:用于在数据处理装置100上操作的任何计算机程序,如可执行程序221,实现本发明实施例的文章处理方法的程序可以包含在可执行程序221中。
网络接口23可以包括一个或多个通信模块,如包括移动通信模块及无线互联网模块。
在一实施例中,处理器21,用于通过执行所述存储器中存储的可执行程序时实现:
将云端文件系统的存储目录挂载到客户端文件系统的挂载点;
接收到所述客户端针对所述挂载点的文件发送的数据写入请求时,对所述数据写入请求进行缓存处理;
根据缓存的所述数据写入请求所写入数据的特征,选取符合数据连续性条件的数据写入请求;
将所述符合数据连续性条件的数据写入请求所写入的数据,持久化存储至所述云端文件系统中所述文件的存储位置。
在一实施例中,所述处理器21,还用于通过执行所述存储器中存储的可执行程序时实现:
响应于所述客户端针对所述挂载点的文件发送的数据写入请求为多个,获取接收的各所述数据写入请求所写入数据的偏移量;
根据偏移量的大小对接收的所述数据写入请求进行排序;
根据排序结果,顺序缓存所接收的多个数据写入请求。
在一实施例中,所述处理器21,还用于通过执行所述存储器中存储的可执行程序时实现:
确定缓存的各所述数据写入请求所写入数据的偏移量及长度;
根据各所述数据写入请求所写入数据的偏移量及长度,从缓存的所述数据写入请求中,选取所写入的数据构成所述文件的一个数据分片的N个数据写入请求;N为不小于2的正整数。
在一实施例中,所述处理器21,还用于通过执行所述存储器中存储的可执行程序时实现:
获取缓存的各所述数据写入请求的数据的长度;
计算缓存的所述数据写入请求中,每个数据写入请求所写入数据的偏移量及长度的和;
从缓存的所述数据写入请求中,选取数据写入请求的数据长度之和超过第一数据阈值的满足以下条件的N个数据写入请求:
第N-1个数据写入请求所写入数据的偏移量及长度的和等于第N个数据写入请求所写入数据的偏移量。
在一实施例中,所述处理器21,还用于通过执行所述存储器中存储的可执行程序时实现:
确定已经选取的所述文件的数据写入请求对应的数据分片中,存在与所述N个数据写入请求对应的数据分片相连续的数据分片。
在一实施例中,所述处理器21,还用于通过执行所述存储器中存储的可执行程序时实现:
响应于已经选取的所述文件的数据写入请求为空,获取所述N个数据写入请求中第一个数据写入请求所写入数据的偏移量;
若所述第一个数据写入请求所写入数据的偏移量为零,确定已经选取的所述文件的数据写入请求对应的数据分片中,存在与所述N个数据写入请求对应的数据分片相连续的数据分片。
在一实施例中,所述处理器21,还用于通过执行所述存储器中存储的可执行程序时实现:
响应于已经选取了所述文件的K个连续的数据写入请求,确定所述K个连续的数据写入请求中第K个数据写入请求所写入数据的偏移量及长度的和;
若所述N个数据写入请求中第一个数据写入请求所写入数据的偏移量等于所述第K个数据写入请求所写入数据的偏移量及长度的和,确定已经选取的所述文件的数据写入请求对应的数据分片中,存在与所述N个数据写入请求对应的数据分片相连续的数据分片。
在一实施例中,所述处理器21,还用于通过执行所述存储器中存储的可执行程序时实现:
将所述符合数据连续性条件的数据写入请求加入线程池,上传所述数据写入请求所写入的数据至所述云端文件系统中所述文件的存储位置;
所述线程池每次上传的数据长度,等于所述符合数据连续性条件的数据写入请求所写入的数据长度。
在一实施例中,所述处理器21,还用于通过执行所述存储器中存储的可执行程序时实现:
计算缓存的所述数据写入请求的数据长度之和;
确定缓存的所述数据写入请求的数据长度之和超过第二数据阈值时,删除缓存的所述数据写入请求,并发送错误指示给所述客户端。
在一实施例中,所述处理器21,还用于通过执行所述存储器中存储的可执行程序时实现:
计算缓存的所述数据写入请求的数据长度之和;
确定缓存的所述数据写入请求的数据长度之和超过第二数据阈值时,根据缓存的所述数据写入请求所写入数据的偏移量,逐一将缓存的所述数据写入请求所写入的数据持久化存储至所述文件的存储位置。
本发明实施例揭示的数据处理方法可以应用于处理器21中,或者由处理器21实现。处理器21可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,数据处理方法的各步骤可以通过处理器21中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器21可以是通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器21可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器22,处理器21读取存储器22中的信息,结合其硬件完成本发明实施例提供的文章处理方法的步骤。
在示例性实施例中,数据处理装置100可以被一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable LogicDevice),用于执行本发明实施例的数据处理方法。
基于对本发明实施例上述数据处理方法及装置的描述,本发明实施例还提供了一种可读存储介质,所述可读存储介质存储有可执行程序;
所述可执行程序,用于被处理器执行时实现:
将云端文件系统的存储目录挂载到客户端文件系统的挂载点;
接收到所述客户端针对所述挂载点的文件发送的数据写入请求时,对所述数据写入请求进行缓存处理;
根据缓存的所述数据写入请求所写入数据的特征,选取符合数据连续性条件的数据写入请求;
将所述符合数据连续性条件的数据写入请求所写入的数据,持久化存储至所述云端文件系统中所述文件的存储位置。
所述可执行程序,还用于被处理器执行时实现:
响应于所述客户端针对所述挂载点的文件发送的数据写入请求为多个,获取接收的各所述数据写入请求所写入数据的偏移量;
根据偏移量的大小对接收的所述数据写入请求进行排序;
根据排序结果,顺序缓存所接收的多个数据写入请求。
所述可执行程序,还用于被处理器执行时实现:
确定缓存的各所述数据写入请求所写入数据的偏移量及长度;
根据各所述数据写入请求所写入数据的偏移量及长度,从缓存的所述数据写入请求中,选取所写入的数据构成所述文件的一个数据分片的N个数据写入请求;N为不小于2的正整数。
所述可执行程序,还用于被处理器执行时实现:
获取缓存的各所述数据写入请求的数据的长度;
计算缓存的所述数据写入请求中,每个数据写入请求所写入数据的偏移量及长度的和;
从缓存的所述数据写入请求中,选取数据写入请求的数据长度之和超过第一数据阈值的满足以下条件的N个数据写入请求:
第N-1个数据写入请求所写入数据的偏移量及长度的和等于第N个数据写入请求所写入数据的偏移量。
所述可执行程序,还用于被处理器执行时实现:
确定已经选取的所述文件的数据写入请求对应的数据分片中,存在与所述N个数据写入请求对应的数据分片相连续的数据分片。
所述可执行程序,还用于被处理器执行时实现:
响应于已经选取的所述文件的数据写入请求为空,获取所述N个数据写入请求中第一个数据写入请求所写入数据的偏移量;
若所述第一个数据写入请求所写入数据的偏移量为零,确定已经选取的所述文件的数据写入请求对应的数据分片中,存在与所述N个数据写入请求对应的数据分片相连续的数据分片。
所述可执行程序,还用于被处理器执行时实现:
响应于已经选取了所述文件的K个连续的数据写入请求,确定所述K个连续的数据写入请求中第K个数据写入请求所写入数据的偏移量及长度的和;
若所述N个数据写入请求中第一个数据写入请求所写入数据的偏移量等于所述第K个数据写入请求所写入数据的偏移量及长度的和,确定已经选取的所述文件的数据写入请求对应的数据分片中,存在与所述N个数据写入请求对应的数据分片相连续的数据分片。
所述可执行程序,还用于被处理器执行时实现:
将所述符合数据连续性条件的数据写入请求加入线程池,上传所述数据写入请求所写入的数据至所述云端文件系统中所述文件的存储位置;
所述线程池每次上传的数据长度,等于所述符合数据连续性条件的数据写入请求所写入的数据长度。
所述可执行程序,还用于被处理器执行时实现:
计算缓存的所述数据写入请求的数据长度之和;
确定缓存的所述数据写入请求的数据长度之和超过第二数据阈值时,删除缓存的所述数据写入请求,并发送错误指示给所述客户端。
所述可执行程序,还用于被处理器执行时实现:
计算缓存的所述数据写入请求的数据长度之和;
确定缓存的所述数据写入请求的数据长度之和超过第二数据阈值时,根据缓存的所述数据写入请求所写入数据的偏移量,逐一将缓存的所述数据写入请求所写入的数据持久化存储至所述文件的存储位置。
这里需要指出的是:以上涉及数据处理装置的描述,与上述方法描述是类似的,同方法的有益效果描述,不做赘述。对于本发明所数据处理装置实施例中未披露的技术细节,请参照本发明方法实施例的描述。
实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、随机存取存储器(RAM,Random Access Memory)、只读存储器(ROM,Read-Only Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、RAM、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (22)
1.一种数据处理方法,其特征在于,应用于服务器;所述方法包括:
接收客户端发送的多个数据写入请求,所述数据写入请求是所述客户端将云端文件系统的存储目录挂载到客户端文件系统的挂载点后发送的;
确定所述客户端针对所述挂载点的文件发送的每个所述数据写入请求所写入数据的偏移量及长度;
基于每个所述数据写入请求所写入数据的偏移量,将所述多个数据写入请求以链表的形式顺序缓存至所述服务器中;
根据所述服务器缓存的所述多个数据写入请求所写入数据的偏移量及长度,选取符合数据连续性条件的数据写入请求;
将所述符合数据连续性条件的数据写入请求所写入的数据,持久化存储至所述云端文件系统中所述文件的存储位置。
2.如权利要求1所述的方法,其特征在于,所述基于每个所述数据写入请求所写入数据的偏移量,将所述多个数据写入请求以链表的形式顺序缓存至所述服务器中,包括:
响应于所述客户端针对所述挂载点的文件发送的数据写入请求为多个,获取接收的各所述数据写入请求所写入数据的偏移量;
根据偏移量的大小对接收的所述数据写入请求进行排序;
根据排序结果,以链表的形式顺序缓存所接收的所述多个数据写入请求。
3.如权利要求1所述的方法,其特征在于,所述根据所述服务器缓存的所述多个数据写入请求所写入数据的偏移量及长度,选取符合数据连续性条件的数据写入请求,包括:
根据各所述数据写入请求所写入数据的偏移量及长度,从缓存的所述数据写入请求中,选取所写入的数据构成所述文件的一个数据分片的N个数据写入请求;N为不小于2的正整数。
4.如权利要求3所述的方法,其特征在于,根据各所述数据写入请求所写入数据的偏移量及长度,从缓存的所述数据写入请求中,选取所写入的数据构成所述文件的一个数据分片的N个数据写入请求,包括:
获取缓存的各所述数据写入请求的数据的长度;
计算缓存的所述数据写入请求中,每个数据写入请求所写入数据的偏移量及长度的和;
从缓存的所述数据写入请求中,选取数据写入请求的数据长度之和超过第一数据阈值的满足以下条件的N个数据写入请求:
第N-1个数据写入请求所写入数据的偏移量及长度的和等于第N个数据写入请求所写入数据的偏移量。
5.如权利要求3所述的方法,其特征在于,所述选取所写入的数据构成所述文件的一个数据分片的N个数据写入请求之前,还包括:
获取已经选取的所述文件的数据写入请求的信息;
确定已经选取的所述文件的数据写入请求中,存在与所述N个数据写入请求相连续的数据写入请求。
6.如权利要求5所述的方法,其特征在于,所述确定已经选取的所述文件的数据写入请求中,存在与所述N个数据写入请求相连续的数据写入请求,包括:
响应于已经选取的所述文件的数据写入请求为空,获取所述N个数据写入请求中第一个数据写入请求所写入数据的偏移量;
若所述第一个数据写入请求所写入数据的偏移量为零,确定已经选取的所述文件的数据写入请求中,存在与所述N个数据写入请求相连续的数据写入请求。
7.如权利要求5所述的方法,其特征在于,所述确定已经选取的所述文件的数据写入请求中,存在与所述N个数据写入请求相连续的数据写入请求,包括:
响应于已经选取的所述文件的数据写入请求为K个连续的数据写入请求,确定所述K个连续的数据写入请求中,第K个数据写入请求所写入数据的偏移量及长度的和;
若所述N个数据写入请求中第一个数据写入请求所写入数据的偏移量等于所述第K个数据写入请求所写入数据的偏移量及长度的和,确定已经选取的所述文件的数据写入请求中,存在与所述N个数据写入请求相连续的数据写入请求。
8.如权利要求1所述的方法,其特征在于,所述将所述符合数据连续性条件的数据写入请求所写入的数据,持久化存储至所述云端文件系统中所述文件的存储位置,包括:
将所述符合数据连续性条件的数据写入请求加入线程池,上传所述数据写入请求所写入的数据至所述云端文件系统中所述文件的存储位置;
所述线程池每次上传的数据长度,等于所述符合数据连续性条件的数据写入请求所写入的数据长度。
9.如权利要求1所述的方法,其特征在于,所述方法还包括:
计算缓存的所述数据写入请求的数据长度之和;
确定缓存的所述数据写入请求的数据长度之和超过第二数据阈值时,删除缓存的所述数据写入请求,并发送错误指示给所述客户端。
10.如权利要求1所述的方法,其特征在于,所述方法还包括:
计算缓存的所述数据写入请求的数据长度之和;
确定缓存的所述数据写入请求的数据长度之和超过第二数据阈值时,根据缓存的所述数据写入请求所写入数据的偏移量,逐一将缓存的所述数据写入请求所写入的数据持久化存储至所述文件的存储位置。
11.一种数据处理装置,其特征在于,所述装置包括:
挂载单元,用于接收客户端发送的多个数据写入请求,所述数据写入请求是所述客户端将云端文件系统的存储目录挂载到客户端文件系统的挂载点后发送的;
缓存单元,用于基于每个所述数据写入请求所写入数据的偏移量,将所述多个数据写入请求以链表的形式顺序缓存至服务器中;
选取单元,用于确定所述客户端针对所述挂载点的文件发送的每个所述数据写入请求所写入数据的偏移量及长度;根据所述服务器缓存的所述多个数据写入请求所写入数据的偏移量及长度,选取符合数据连续性条件的数据写入请求;
存储单元,用于将所述符合数据连续性条件的数据写入请求所写入的数据,持久化存储至所述云端文件系统中所述文件的存储位置。
12.如权利要求11所述的装置,其特征在于,
所述缓存单元,还用于响应于所述客户端针对所述挂载点的文件发送的数据写入请求为多个,获取接收的各所述数据写入请求所写入数据的偏移量;
根据偏移量的大小对接收的所述数据写入请求进行排序;
根据排序结果,以链表的形式顺序缓存所接收的所述多个数据写入请求。
13.如权利要求11所述的装置,其特征在于,
所述选取单元,还用于根据各所述数据写入请求所写入数据的偏移量及长度,从缓存的所述数据写入请求中,选取所写入的数据构成所述文件的一个数据分片的N个数据写入请求;N为不小于2的正整数。
14.如权利要求13所述的装置,其特征在于,
所述选取单元,还用于获取缓存的各所述数据写入请求的数据的长度;
计算缓存的所述数据写入请求中,每个数据写入请求所写入数据的偏移量及长度的和;
从缓存的所述数据写入请求中,选取数据写入请求的数据长度之和超过第一数据阈值的满足以下条件的N个数据写入请求:
第N-1个数据写入请求所写入数据的偏移量及长度的和等于第N个数据写入请求所写入数据的偏移量。
15.如权利要求13所述的装置,其特征在于,
所述选取单元,还用于获取已经选取的所述文件的数据写入请求的信息;
确定已经选取的所述文件的数据写入请求中,存在与所述N个数据写入请求相连续的数据写入请求。
16.如权利要求15所述的装置,其特征在于,
所述选取单元,还用于响应于已经选取的所述文件的数据写入请求为空,获取所述N个数据写入请求中第一个数据写入请求所写入数据的偏移量;
若所述第一个数据写入请求所写入数据的偏移量为零,确定已经选取的所述文件的数据写入请求中,存在与所述N个数据写入请求相连续的数据写入请求。
17.如权利要求15所述的装置,其特征在于,
所述选取单元,还用于响应于已经选取的所述文件的数据写入请求为K个连续的数据写入请求,确定所述K个连续的数据写入请求中,第K个数据写入请求所写入数据的偏移量及长度的和;
若所述N个数据写入请求中第一个数据写入请求所写入数据的偏移量等于所述第K个数据写入请求所写入数据的偏移量及长度的和,确定已经选取的所述文件的数据写入请求中,存在与所述N个数据写入请求相连续的数据写入请求。
18.如权利要求11所述的装置,其特征在于,
所述存储单元,还用于将所述符合数据连续性条件的数据写入请求加入线程池,上传所述数据写入请求所写入的数据至所述云端文件系统中所述文件的存储位置;
所述线程池每次上传的数据长度,等于所述符合数据连续性条件的数据写入请求所写入的数据长度。
19.如权利要求11所述的装置,其特征在于,所述装置还包括:
提示单元,用于计算缓存的所述数据写入请求的数据长度之和;
确定缓存的所述数据写入请求的数据长度之和超过第二数据阈值时,删除缓存的所述数据写入请求,并发送错误指示给所述客户端。
20.如权利要求11所述的装置,其特征在于,
所述存储单元,还用于计算缓存的所述数据写入请求的数据长度之和;
确定缓存的所述数据写入请求的数据长度之和超过第二数据阈值时,根据缓存的所述数据写入请求所写入数据的偏移量,逐一将缓存的所述数据写入请求所写入的数据持久化存储至所述文件的存储位置。
21.一种数据处理装置,其特征在于,所述装置包括:
存储器,用于存储可执行程序;
处理器,用于执行所述存储器中存储的可执行程序时,实现如权利要求1至10任一项所述的数据处理方法。
22.一种计算机可读存储介质,存储有可执行程序,所述可执行程序被处理器执行时,实现如权利要求1至10任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711321395.5A CN108089818B (zh) | 2017-12-12 | 2017-12-12 | 数据处理方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711321395.5A CN108089818B (zh) | 2017-12-12 | 2017-12-12 | 数据处理方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108089818A CN108089818A (zh) | 2018-05-29 |
CN108089818B true CN108089818B (zh) | 2021-09-07 |
Family
ID=62175342
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711321395.5A Active CN108089818B (zh) | 2017-12-12 | 2017-12-12 | 数据处理方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108089818B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110286858A (zh) * | 2019-06-26 | 2019-09-27 | 北京奇艺世纪科技有限公司 | 一种数据处理方法及相关设备 |
CN111008185B (zh) * | 2019-10-29 | 2023-08-18 | 厦门网宿有限公司 | 一种数据共享方法、系统及设备 |
CN111258958A (zh) * | 2020-01-10 | 2020-06-09 | 北京猎豹移动科技有限公司 | 一种数据获取方法、数据提供方法及装置 |
CN111258959A (zh) * | 2020-01-10 | 2020-06-09 | 北京猎豹移动科技有限公司 | 一种数据获取方法、数据提供方法及装置 |
CN114327249A (zh) * | 2020-10-10 | 2022-04-12 | 华为云计算技术有限公司 | 对象存储服务的数据修改方法、服务节点、客户端及设备 |
CN113434263B (zh) * | 2021-08-30 | 2021-11-09 | 云宏信息科技股份有限公司 | 虚拟机数据缓存方法和计算机可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101567001A (zh) * | 2009-05-22 | 2009-10-28 | 清华大学 | 并行文件系统的元数据文件布局管理方法 |
CN101923513A (zh) * | 2010-08-11 | 2010-12-22 | 深圳市同洲电子股份有限公司 | 存储器的数据写读方法、系统和flash存储器 |
CN104461936A (zh) * | 2014-11-28 | 2015-03-25 | 华为技术有限公司 | 缓存数据的刷盘方法及装置 |
CN105988719A (zh) * | 2015-02-07 | 2016-10-05 | 深圳市硅格半导体有限公司 | 存储装置及其处理数据的方法 |
CN106156289A (zh) * | 2016-06-28 | 2016-11-23 | 北京百迈客云科技有限公司 | 一种读写对象存储系统中的数据的方法以及装置 |
CN106802950A (zh) * | 2017-01-16 | 2017-06-06 | 郑州云海信息技术有限公司 | 一种分布式文件系统小文件写缓存优化的方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101789976B (zh) * | 2010-01-27 | 2013-04-10 | 上海交通大学 | 嵌入式网络存储系统及其方法 |
CN102812458A (zh) * | 2011-08-10 | 2012-12-05 | 华为技术有限公司 | 文件系统的挂载方法、装置及系统 |
CN102955720B (zh) * | 2011-08-25 | 2015-09-09 | 北京中科智网科技有限公司 | 一种提高ext文件系统稳定性的方法 |
US8954663B1 (en) * | 2012-06-25 | 2015-02-10 | Kip Cr P1 Lp | System, method and computer program product for synchronizing data written to tape including writing an index into a data partition so that data can be recovered in case of failure |
CN105760467A (zh) * | 2016-02-05 | 2016-07-13 | 浪潮(北京)电子信息产业有限公司 | 一种数据实时读写方法、装置、系统及nfs服务器 |
CN107070972B (zh) * | 2016-12-30 | 2020-02-07 | 中国银联股份有限公司 | 一种分布式文件处理方法及装置 |
-
2017
- 2017-12-12 CN CN201711321395.5A patent/CN108089818B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101567001A (zh) * | 2009-05-22 | 2009-10-28 | 清华大学 | 并行文件系统的元数据文件布局管理方法 |
CN101923513A (zh) * | 2010-08-11 | 2010-12-22 | 深圳市同洲电子股份有限公司 | 存储器的数据写读方法、系统和flash存储器 |
CN104461936A (zh) * | 2014-11-28 | 2015-03-25 | 华为技术有限公司 | 缓存数据的刷盘方法及装置 |
CN105988719A (zh) * | 2015-02-07 | 2016-10-05 | 深圳市硅格半导体有限公司 | 存储装置及其处理数据的方法 |
CN106156289A (zh) * | 2016-06-28 | 2016-11-23 | 北京百迈客云科技有限公司 | 一种读写对象存储系统中的数据的方法以及装置 |
CN106802950A (zh) * | 2017-01-16 | 2017-06-06 | 郑州云海信息技术有限公司 | 一种分布式文件系统小文件写缓存优化的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108089818A (zh) | 2018-05-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108089818B (zh) | 数据处理方法、装置及存储介质 | |
EP3806424A1 (en) | File system data access method and file system | |
US9098526B1 (en) | System and method for wireless device access to external storage | |
US10210191B2 (en) | Accelerated access to objects in an object store implemented utilizing a file storage system | |
KR101587631B1 (ko) | 클라우드 기반 로컬 장치와 로컬 장치의 파일 읽기 및 저장 방법 | |
CN110401724B (zh) | 文件管理方法、文件传输协议服务器及存储介质 | |
CN102546740B (zh) | 一种基于云压缩文件的压缩和解压缩方法、装置及系统 | |
US20140115089A1 (en) | Method and apparatus for joining read requests | |
CN103116618A (zh) | 基于客户端持久缓存的远程文件系统镜像方法及系统 | |
CN109144413A (zh) | 一种元数据管理方法及装置 | |
CN107197359B (zh) | 视频文件缓存方法及装置 | |
JP6869193B2 (ja) | アクセス方法及び装置 | |
CN110688062B (zh) | 一种缓存空间的管理方法及装置 | |
US20180367596A1 (en) | Optimizing internet data transfers using an intelligent router agent | |
US20170153909A1 (en) | Methods and Devices for Acquiring Data Using Virtual Machine and Host Machine | |
CN109582246A (zh) | 基于矿机的数据访问方法、装置、系统及可读存储介质 | |
CN103067479A (zh) | 一种基于文件冷热的网盘同步方法及系统 | |
CN103019964B (zh) | 一种缓存数据访问方法及数据缓存系统 | |
WO2018125297A1 (en) | Atomic execution unit for object storage | |
CN113961520A (zh) | 动态文件挂载方法、系统、计算机设备及可读存储介质 | |
CN111399760B (zh) | Nas集群元数据处理方法、装置、nas网关及介质 | |
CN104199926B (zh) | 文件归档实现方法和装置以及文件访问方法和装置 | |
CN110347656B (zh) | 文件存储系统中请求的管理方法和装置 | |
US8983910B1 (en) | Systems and methods for adaptively selecting file-recall modes | |
US9557935B2 (en) | Computing system including storage system and method of writing data thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |