一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据处理方法以及装置与流程

2022-09-07 14:37:32 来源:中国专利 TAG:
1.本说明书实施例涉及计算机
技术领域
:,特别涉及一种数据处理方法。
背景技术
::2.随着数据量的不断提升,大量数据需要存储在磁盘上,为了降低存储成本,磁盘的容量不断变大,但磁盘是一种机械盘,受限于机械能力,磁盘的性能并没有随着磁盘容量的增加而增加,这就导致使用磁盘的存储系统的关键指标,即每tb的性能这一指标在不断下降。因此,亟需一种有效的方法以解决此类问题。技术实现要素:3.有鉴于此,本说明书实施例提供了一种数据处理方法。本说明书一个或者多个实施例同时涉及一种数据处理装置,一种计算设备,一种计算机可读存储介质以及一种计算机程序,以解决现有技术中存在的技术缺陷。4.根据本说明书实施例的第一方面,提供了一种数据处理方法,包括:5.接收针对目标文件提交的数据写请求,其中,所述数据写请求中包含待写入数据;6.根据文件分配表中存储的空闲数据块链表查询空闲数据块,并将所述待写入数据写入所述空闲数据块;7.基于写入结果建立所述目标文件与所述空闲数据块的映射关系,并根据所述映射关系对文件信息存储表进行更新;8.创建所述待写入数据的写入结果对应的元数据,将所述元数据写入共享内存,并生成所述共享内存的数据写入日志。9.可选地,所述数据处理方法,还包括:10.根据所述写入结果建立所述目标文件对应的数据块链表。11.可选地,所述数据处理方法,还包括:12.接收针对目标文件提交的数据读请求;13.根据所述数据读请求中包含的所述目标文件的标识信息,以及所述文件信息存储表中存储的所述映射关系,确定所述目标文件的第一数据块;14.根据所述第一数据块及所述数据块链表,查询所述目标文件的第二数据块;15.读取所述第一数据块及所述第二数据块中包含的所述目标文件的待读取数据并返回。16.可选地,所述根据文件分配表中存储的空闲数据块链表查询空闲数据块,并将所述待写入数据写入所述空闲数据块,包括:17.根据所述待写入数据的数据量,确定待分配的目标空闲数据块的数量;18.根据文件分配表中存储的空闲数据块链表查询空闲数据块,并根据所述空闲数据块链表中至少两个空闲数据块的存储空间的顺序关系,将所述空闲数据块链表头部的所述数量的空闲数据块确定为目标空闲数据块;19.对所述待写入数据分配所述目标空闲数据块,并将所述待写入数据写入所述目标空闲数据块。20.可选地,所述数据处理方法,还包括:21.接收针对目标文件提交的数据删除请求,其中,所述数据删除请求中包含待删除数据;22.确定存储所述待删除数据的目标数据块,将所述目标数据块中的所述待删除数据进行删除处理,并释放所述目标数据块;23.将所述目标数据块添加至所述目标数据块组尾部。24.可选地,所述数据处理方法,还包括:25.接收针对目标文件提交的数据删除请求,其中,所述数据删除请求中包含待删除的第一类型数据;26.确定存储所述待删除的第一类型数据的目标数据块,将所述目标数据块中的所述待删除的第一类型数据转化为第二类型数据。27.可选地,所述数据处理方法,还包括:28.确定所述目标数据块内存储的数据量,并根据所述数据量确定所述目标数据块组的存储空间使用率;29.根据所述存储空间使用率,确定所述目标数据块组内第二类型数据的数据回收速度,并按照所述数据回收速度以及所述第二类型数据的写入顺序,对所述第二类型数据进行回收处理。30.可选地,所述数据处理方法,还包括:31.确定当前时间与所述第二类型数据的转化时间之间的时间差是否大于等于预设时间差阈值;32.若是,则确定所述目标数据块内第二类型数据的数据回收速度,并按照所述数据回收速度以及所述第二类型数据的写入顺序,对所述第二类型数据进行回收处理。33.可选地,所述数据处理方法,还包括:34.在确定所述目标数据块内包含的数据为第三类型数据的情况下,对所述目标数据块内的数据进行擦除处理;35.在擦除完成的情况下,释放所述目标数据块,并将所述目标数据块添加至所述目标数据块组尾部。36.可选地,所述接收针对目标文件提交的数据写请求之前,还包括:37.在存储系统中创建用户态文件系统;38.相应的,所述接收针对目标文件提交的数据写请求,包括:39.通过所述用户态文件系统接收针对目标文件提交的数据写请求。40.根据本说明书实施例的第二方面,提供了一种数据处理装置,包括:41.接收模块,被配置为接收针对目标文件提交的数据写请求,其中,所述数据写请求中包含待写入数据;42.查询模块,被配置为根据文件分配表中存储的空闲数据块链表查询空闲数据块,并将所述待写入数据写入所述空闲数据块;43.更新模块,被配置为基于写入结果建立所述目标文件与所述空闲数据块的映射关系,并根据所述映射关系对文件信息存储表进行更新;44.创建模块,被配置为创建所述待写入数据的写入结果对应的元数据,将所述元数据写入共享内存,并生成所述共享内存的数据写入日志。45.根据本说明书实施例的第三方面,提供了一种计算设备,包括:46.存储器和处理器;47.所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令实现任意一项所述数据处理方法的步骤。48.根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现任意一项所述数据处理方法的步骤。49.根据本说明书实施例的第五方面,提供了一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述数据处理方法的步骤。50.本说明书一个实施例通过接收针对目标文件提交的数据写请求,其中,所述数据写请求中包含待写入数据,根据文件分配表中存储的空闲数据块链表查询空闲数据块,并将所述待写入数据写入所述空闲数据块,基于写入结果建立所述目标文件与所述空闲数据块的映射关系,并根据所述映射关系对文件信息存储表进行更新,创建所述待写入数据的写入结果对应的元数据,将所述元数据写入共享内存,并生成所述共享内存的数据写入日志。51.本说明书实施例提供的数据处理方法,采用文件分配表进行空间管理及基于共享内存的简化日志机制对待写入数据进行处理,尽可能的减少文件系统内部损耗,使得该文件系统对外提供接近于裸盘的更高性能服务,从而有利于提高文件系统的数据读写性能。附图说明52.图1是本说明书一个实施例提供的一种数据处理方法的流程图;53.图2是本说明书一个实施例提供的一种数据处理方法的处理过程流程图;54.图3是本说明书一个实施例提供的一种数据处理装置的结构示意图;55.图4是本说明书一个实施例提供的一种计算设备的结构框图。具体实施方式56.在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。57.在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。58.应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。59.首先,对本说明书一个或多个实施例涉及的名词术语进行解释。60.磁盘:hdd,利用磁记录技术存储数据的存储器。61.chunk:文件系统中的文件,本方案称为chunk。62.block:文件系统对磁盘的基本分配单元。63.在本说明书中,提供了一种数据处理方法,本说明书同时涉及一种数据处理装置,一种计算设备,一种计算机可读存储介质,以及一种计算机程序,在下面的实施例中逐一进行详细说明。64.图1示出了根据本说明书一个实施例提供的一种数据处理方法的流程图,具体包括以下步骤。65.步骤102,接收针对目标文件提交的数据写请求,其中,所述数据写请求中包含待写入数据。66.具体的,本说明书实施例可先接收用户针对目标文件提交的数据写请求,以基于该数据写请求中携带的待写入数据执行数据写入操作。67.另外,本说明书实施例可提供用户态文件系统,并可利用该用户态文件系统接收针对目标文件提交的数据写请求。若从存储系统的角度,实际上是由存储系统向用户态文件系统发送数据写请求,而用户态文件系统运行在用户态环境下。68.由于目前的存储系统通常会发送数据写请求至本地文件系统,而本地文件系统是属于操作系统内核这一层,因此会发生用户态到内核态的转换,同时还伴随着内存拷贝操作。其中,用户态即cpu仅能访问内存,且不允许访问外围设备,占用cpu的能力被剥夺,cpu资源可以被其他程序获取。而内核态时cpu可以访问内存所有数据,包括外围设备,例如硬盘、网卡、cpu也可以将自身从一个程序切换到另一个程序。由于用户程序通常运行在用户态,但是会存在用户程序需要对内核态的数据进行相关操作,例如从硬盘读取数据,或者从键盘获取输入等。这个过程中,用户程序即需要向操作系统请求以程序的名义来执行这些操作。69.但从用户态转换至内核态以及在内核态后续的操作中,存在大量的i/o操作,这会极大的影响存储系统读取数据的效率。因此本说明书实施例可利用用户态文件系统接收针对目标文件的数据写请求。70.而在通过用户态文件系统接收针对目标文件提交的数据写请求之前,可先在存储系统创建该用户态文件系统,并且本说明书实施例对于如何创建用户态文件系统不作限定。对用户态文件系统而言,只需在进行数据的写入或存储等操作时,不发生用户态到内核态的转换即可。71.进一步的,本说明书实施例提供的用户态文件系统,包括部署、数据布局管理、数据分配算法、i/o管理、回收站机制、数据抢救机制等。对外通过称为diskid的磁盘句柄提供文件系统服务,内部通过盘符实现对磁盘的访问,对外提供createfile、openfile、closefile、appendwritebuffer、appendwritevector、readbuffer、readvector、sealfile、deletefile等文件系统访问接口,并通过接口接收数据写请求,不提供目录访问接口,所有文件平级保存在文件系统中。72.步骤104,根据文件分配表中存储的空闲数据块链表查询空闲数据块,并将所述待写入数据写入所述空闲数据块。73.具体的,文件系统的目的就是组织和管理磁盘中的文件,因此,本说明书实施例的目标文件,即磁盘中的任意一个文件。由于文件系统的最小存储单元是数据块,在目标文件的大小较大时,则需要多个数据块共同存储该目标文件所包含的内容,因此,本说明书实施例在接收针对目标文件提交的数据写请求后,可先查询空闲数据块,为待写入数据分配目标空闲数据块,并将待写入数据写入目标空闲数据块。74.具体实施时,可先根据文件分配表中存储的空闲数据块链表查询空闲数据块,再将所述待写入数据写入所述空闲数据块,具体可通过以下方式实现:75.根据所述待写入数据的数据量,确定待分配的目标空闲数据块的数量;76.根据文件分配表中存储的空闲数据块链表查询空闲数据块,并根据所述空闲数据块链表中至少两个空闲数据块的存储空间的顺序关系,将所述空闲数据块链表头部的所述数量的空闲数据块确定为目标空闲数据块;77.对所述待写入数据分配所述目标空闲数据块,并将所述待写入数据写入所述目标空闲数据块。78.具体的,由于文件系统的最小存储单元是数据块,一个文件即使只有1字节,也会至少占用一个数据块。因此,用户态文件系统在存储目标文件,并且在目标文件较大的情况下,则可能需要一个第一数据块及一个或至少两个第二数据块来存储该目标文件的文件内容。79.基于此,用户态文件系统在接收到针对目标文件的数据写请求的情况下,则可能需要在目标文件中写入新的数据,即需为目标文件分配空闲数据块,并在空闲数据块中写入数据,这种情况下,即可以根据待写入数据的数据量大小,以及空闲数据块的大小,确定需为待写入数据进行分配的目标空闲数据块的数量。80.实际应用中,本说明书实施例可将磁盘划分为超级块区(superblock区)、文件信息存储表区(chunk-table区)、文件分配表区(fat-table区)和数据区。81.由于磁盘可用于进行文件存储,但磁盘需先格式化为某种格式的文件系统,才能存储文件,因此,磁盘格式化为对应格式的文件系统后,可将磁盘格式化信息存储于superblock区,其中,磁盘格式化信息可包括文件系统版本、数据块大小等信息。82.另外,文件系统可使用数据块的块标识来标记每个数据块。而fat-table区用于管理数据区的block,并且可以空闲数据块链表的方式对同一目标数据块组中的block进行管理,即文件分配表中存储有同一目标数据块组中各空闲数据块的顺序关系,因此,可先在文件信息存储表中存储的空闲数据块链表查询空闲数据块,并根据查询结果为待写入数据分配空闲数据块,再将待写入数据写入分配的空闲数据块。83.具体的,数据块即block。84.由于文件系统的最小存储单元是block,一般地,1block=4kb=8扇区,一个文件即使只有1字节,也会至少占用一个数据块。因此,在利用文件系统写入待写入数据时,则需根据待写入数据的大小为该部分待写入数据分配对应数量的空闲数据块,具体可根据文件分配表的空闲数据块链表中至少两个空闲数据块的存储空间的顺序关系,将空闲数据块链表头部对应数量的空闲数据块确定为目标空闲数据块,为待写入数据分配该目标空闲数据块,并将待写入数据写入目标空闲数据块。85.例如,若文件系统中存在10个数据块,分别为block1、block2、……、block10,每个数据块的大小为4kb,将这10个数据块划分至同一group,且group中的各数据块均处于空闲状态,则文件分配表中可将各数据块的块标识以链表的形式存储,存储结果即可以是fat-table[1]=2,fat-table[2]=3,……,fat-table[9]=10,这几个数组即共同构成数据块链表。由于1表征第一个空闲数据块,2表征第二个空闲数据块,因此,fat-table[1]=2即表征目标数据块组中,第一个数据块的下一数据块即为块标识为2的空闲数据块,以此类推,通过该空闲数据块链表即可查询文件分配表中的空闲数据块。[0086]基于此,若确定待写入数据为8kb,则可确定需为待写入数据分配两个空闲数据块,因此,可将group中的block1和block2分配给待写入数据,以将待写入数据写入block1和block2。[0087]本说明书实施例可将文件系统中存储空间连续的空闲数据块存放在同一数据块组(blockgroup)中,使得在为待写入数据分配空闲数据块进行数据写入时,可有效地提高文件写入结果的连续性。[0088]实际应用中,block大小可在格式化时确定。例如,mke2fs-b4096/dev/sda6在格式化/dev/sda6时指定了block大小为4096bytes。格式化过程中,系统管理员可以根据磁盘中存储的目标文件的特点选择不同的数据块大小,如果要存储的文件大多数是几kb的小文件,那么选择1kb的数据块能提高磁盘存储空间的利用率;而如果系统中大多数的文件都比较大,那么就应该选择更大的数据块,这样一方面可以提高数据读写效率,另一方面也可以减少需要的索引节点数量,具体可根据实际需求确定,在此不做限制。[0089]步骤106,基于写入结果建立所述目标文件与所述空闲数据块的映射关系,并根据所述映射关系对文件信息存储表进行更新。[0090]具体的,如前所述,本说明书实施例可将磁盘划分为超级块区(superblock区)、文件信息存储表区(chunk-table区)、文件分配表区(fat-table区)和数据区。[0091]而chunk-table区可用于存放文件的元数据信息,包括文件到文件第一数据块的映射关系、文件创建时间等;因此,在将待写入数据写入空闲数据块后,可创建该目标文件与写入的空闲数据块中第一空闲数据块间的映射关系,并将该映射关系存储至chunk-table区。其中,在待写入数据的数据量大小较大,并需为其分配的至少两个空闲数据块的情况下,可先将待写入数据写入为其分配的首个空闲数据块,该空闲数据块写满后,继续向下一个空闲数据块写入其他待写入数据,因此,创建目标文件与写入的空闲数据块中第一空闲数据块间的映射关系时,该第一空闲数据块即为前述的首个空闲数据块,具体即在向首个空闲数据块写入待写入数据时,即可将该首个空闲数据块的块标识记录到文件信息存储表。[0092]另外,文件系统可使用数据块的块标识来标记每个数据块。而fat-table区用于管理数据区的block,并且可以链表的方式对同一目标文件的block进行管理,因此,本说明书实施例中,在为待写入数据分配空闲数据块,并将待写入数据写入空闲数据块后,可根据写入结果建立目标文件对应的数据块链表,具体即根据待写入数据写入各空闲块的顺序关系,以及各空闲数据块的块标识,构建各空闲数据块的数据块链表,并将数据块链表存储至文件分配表,具体即在向第二空闲数据块写入其他待写入数据时,可根据第二空闲数据块的块标识更新数据块链表。[0093]其中,链表则可以数组的方式实现,例如,目标文件的第一个数据块的块标识是2,第二个数据块的块标识是7,第三个数据块的块标识是100,最后一个数据块的块标识是2000,那么在fat-table中存储的数组即可以是fat-table[2]=7,fat-table[7]=100,fat-table[100]=0xffffffff,这几个数组即共同构成数据块链表。由于2表征第一个数据块,因此,fat-table[2]=7即表征目标数据块组中,第一个数据块的下一数据块即为块标识为7的数据块,以此类推,通过该链表即可查询目标文件对应的全部数据块。[0094]步骤108,创建所述待写入数据的写入结果对应的元数据,将所述元数据写入共享内存,并生成所述共享内存的数据写入日志。[0095]具体的,所述元数据即管理数据的数据,用于指示数据存储位置、历史数据、资源查找、文件记录等。[0096]由于目前数据在写入或读取时进入内核态,而相应的元数据的相关操作均由操作系统完成。但本说明书实施例在进行数据写入时并未发生用户态至内核态的转换,因此用户态文件系统需要对待写入数据的写入结果进行元数据的构建,即生成待存储数据的写入结果的元数据,并将元数据写入共享内存,然后生成共享内存的数据写入日志。这个过程即相当于是将fat-table和chunk-table的一些更新信息写入到了共享内存,以便于在系统重启后,可从共享内存中获取这部分更新信息,然后可根据获取到的更新信息,将待写入数据恢复到本地内存,再通过flash地址将其刷到硬盘中。[0097]实际应用中,文件系统的buffer写过程中,在用户没有调用sink之前,无法保证数据的写入结果的强可靠性,因此写入的数据在一定程度是可丢失的,而本说明书实施例通过将文件系统的数据写入结果先写到共享内存里,并记录共享内存的数据写入日志,然后在用户调了sink之后,再根据该数据写入日志,将共享内存的数据写到硬盘中,以防止数据的丢失,从而提高数据写入结果的可靠性。[0098]本说明书实施例通过基于共享内存的简化日志机制,在buffer写场景先把数据块的数据写入结果对应的元数据写入共享内存中,对外可提供接近裸盘的buffer写性能,并且进程重启后,共享内存中的数据可保证不丢不错,有利于保证数据写入结果的高可信度。[0099]此外,用户态文件系统还可接收针对目标文件提交的数据删除请求,其中,所述数据删除请求中包含待删除数据;[0100]确定存储所述待删除数据的目标数据块,将所述目标数据块中的所述待删除数据进行删除处理,并释放所述目标数据块;[0101]将所述目标数据块添加至所述目标数据块组尾部。[0102]具体的,用户态文件系统在接收到针对目标文件提交的数据删除请求之后,可先确定存储待删除数据的目标数据块,并对该目标数据块中的待删除数据进行删除处理,在将该目标数据块中的待删除数据删除完成后,可释放该目标数据块,并将该目标数据块添加至目标数据块组尾部。[0103]沿用上例,为目标文件创建10个数据块,在将group中的block1和block2分配给待写入数据,以将待写入数据写入block1和block2后,group中即包含block3、block4、……、block10这8个数据块,且8个数据块顺序连接。在将block1中存储的数据删除后,block1即变为空闲数据块,然后可将block1放入该group,这种情况下,该group中包含的数据块即为block3、block4、……、block10、block1,且各数据块按照该排序方式顺序连接。[0104]本说明书实施例将目标文件对应的数据块划分为目标数据块组,目标数据块组内以链表方式管理空闲数据块,最晚释放的数据块放在链表尾部,分配数据块从链表头部分配,保证目标数据块组内刚被释放的数据块内的数据不会被覆盖,提高了写入数据的可靠性,并可提供更高的写入性能。[0105]具体实施时,用户态文件系统还可提供回收站机制,具体可通过以下方式实现:[0106]接收针对目标文件提交的数据删除请求,其中,所述数据删除请求中包含待删除的第一类型数据;[0107]确定存储所述待删除的第一类型数据的目标数据块,将所述目标数据块中的所述待删除的第一类型数据转化为第二类型数据。[0108]进一步的,可确定所述目标数据块内存储的数据量,并根据所述数据量确定所述目标数据块组的存储空间使用率;[0109]根据所述存储空间使用率,确定所述目标数据块组内第二类型数据的数据回收速度,并按照所述数据回收速度以及所述第二类型数据的写入顺序,对所述第二类型数据进行回收处理。[0110]具体的,第一类型数据即可以是有效数据,第二类型数据即可以是回收站数据。用户将有效数据删除后,该有效数据即转换为回收站数据。[0111]本说明书实施例的用户态文件系统提供回收站功能,有助于在用户误删数据、软件出现漏洞等紧急情况下,还可对部分数据进行恢复,提高系统的容灾能力。而在用户不需要对回收站数据进行恢复的情况下,系统即可对回收站数据进行回收,以保证硬盘内不同分区的可用性。[0112]其中,由于文件系统内的文件内容均存储于数据块,因此,在进行数据删除时,则需删除数据块的内容,这种情况下,可先将数据块中待删除的有效数据转化为回收站数据,然后采用数据水位驱动策略来确定是否对回收站数据进行回收处理。[0113]由于数据水位由有效数据和回收站数据两部分组成,因此,确定目标数据块内存储的数据量,并根据数据量确定目标数据块组的存储空间使用率,具体可通过判断目标数据块组中有效数据与回收站数据之和与该目标数据块组容量的比例,来决定是否触发回收站数据的回收过程。[0114]因此,可先确定目标数据块组内每个数据块内存储的回收站数据的数据量,以及有效数据的数据量,然后计算每个数据块内回收站数据的数据量与有效数据的数据量之和,得到各数据块对应的第一求和结果,再计算第一求和结果之和,得到目标数据块组存储的有效数据和回收站数据的数据量之和,即第二求和结果,然后将第二求和结果与目标数据块组的空间容量的比值,得到该目标数据块组的存储空间使用率。[0115]存储空间使用率表征目标数据块组内存储的数据量占目标数据块组的空间容量的比值,存储空间使用率越大,则表明目标数据块组内各数据块存储的数据量越多,表征目标数据块组内各数据块可使用的存储空间越少,这种情况下,则需要及时释放部分数据块用于进行数据存储;因此,在确定预设空间使用率大于等于预设使用率阈值的情况下,可确定目标数据块组内回收站数据的数据回收速度即为快速回收,然后可按照该回收速度,以及目标数据块组中各数据块的回收站数据的写入顺序,对其进行回收处理,该回收站数据即转换为无效数据。[0116]本说明书实施例等待文件系统的数据水位较高时,根据第二类型数据的写入顺序,对该第二类型数据进行回收删除处理,有利于保证数据块中数据的可靠性和可恢复性。[0117]或者,还可确定当前时间与所述第二类型数据的转化时间之间的时间差是否大于等于预设时间差阈值;[0118]若是,则确定所述目标数据块内第二类型数据的数据回收速度,并按照所述数据回收速度以及所述第二类型数据的写入顺序,对所述第二类型数据进行回收处理。[0119]具体的,除通过前述实时方式中,通过数据水位策略来确定是否触发对第二类型数据进行回收之外,还可通过第二类型数据的生成时间,即转化时间来确定是否需对其进行回收处理。[0120]具体即将当前时间与第二类型数据的转化时间之间的时间差与预设时间差阈值进行比较,若根据比较结果确定第二类型数据的转化时间距离当前时间之间的时长已大于预设时长阈值,则可对第二类型数据进行回收处理。[0121]本说明书实施例将第一类型数据转化为第二类型后,等待一定时长之后再根据第二类型数据的写入顺序,对其进行回收删除处理,有利于保证数据块中数据的可靠性和可恢复性。[0122]具体实施时,在确定所述目标数据块内包含的数据为第三类型数据的情况下,对所述目标数据块内的数据进行擦除处理;[0123]在擦除完成的情况下,释放所述目标数据块,并将所述目标数据块添加至所述目标数据块组尾部。[0124]具体的,第三类型数据即为无效数据,对回收站数据进行回收处理,即将其转化为无效数据。在确定目标数据块内包含的数据均为无效数据的情况下,即可对该目标数据块内的数据进行擦除处理,并在擦除完成的情况下,释放该目标数据块,然后将该目标数据块添加至目标数据块组尾部,即将目标数据块放在目标数据块组中最后一个数据块之后。[0125]本说明书实施例将目标文件对应的数据块划分为目标数据块组,目标数据块组内以链表方式管理空闲数据块,最晚释放的数据块放在链表尾部,分配数据块从链表头部分配,保证目标数据块组内刚被释放的数据块内的数据不会被覆盖,提高了写入数据的可靠性,并可提供更高的写入性能。[0126]另外,在将待写入数据写入空闲数据块,建立目标文件与空闲数据块的映射关系,并根据映射关系对文件信息存储表进行更新后,可接收针对目标文件提交的数据读请求;[0127]根据所述数据读请求中包含的所述目标文件的标识信息,以及所述文件信息存储表中存储的所述映射关系,确定所述目标文件的第一数据块;[0128]根据所述第一数据块及所述数据块链表,查询所述目标文件的第二数据块;[0129]读取所述第一数据块及所述第二数据块中包含的所述目标文件的待读取数据并返回。[0130]具体的,如前所述,在将待写入数据写入空闲数据块后,需基于写入结果建立目标文件与首个空闲数据块的映射关系,并根据映射关系对文件信息存储表进行更新;另外,还需根据写入结果建立目标文件对应的数据块链表,而该数据块链表中存储的信息用于表征将目标文件的待写入数据写入空闲数据块时,各空闲数据块的数据写入顺序,同时即可表征目标文件对应的文件内容存储于哪些数据块。[0131]基于此,在接收到针对目标文件的数据读请求后,即可根据目标文件的标识信息,在文件信息存储表中查询与该目标文件存在映射关系的第一数据块,然后根据该第一数据块的块标识,在数据块链表中查询与该第一数据块关联的第二数据块,以在第一数据块和第二数据块中进行数据读取,获得该目标文件的待读取数据并返回。[0132]传统文件管理系统空间分配不提供回收站功能,需要使用文件系统的软件自己实现回收站功能,空间分配也不考虑被释放数据块的时效性,很容易被再次使用,如果出现数据误删除,数据难以抢救,并且抢救时间很长,需要以天为单位。而本说明书实施例的用户态文件系统提供回收站机制,数据删除后先转化为回收站数据,等待一定时间或者空间水位较高时根据数据写入顺序删除,保证了数据的可靠性和可恢复性。[0133]另外,本说明书实施例还提供数据抢救工具,可通过回收站和扫盘的方式对误删除的数据进行抢救。[0134]本说明书实施例提供用户态文件系统,相比内核态文件系统,更容易运维,工具链完善;用户态文件系统和块服务器(chunkserver)深度配合,通过chunk-table fat-table sharememoryjournal(共享内存日志)机制取代extend机制,提供接近于裸盘性能的buffer写性能,稳定带宽可由62mb/s提高到125mb/s~200mb/s;另外,本说明书实施例提供回收站机制,不需要文件系统应用者实现回收站,提供更高的数据可靠性;且基于group fat-table链表的空间分配策略,通过group机制保证了性能,数据分配考虑数据块释放时间,尽量分配更早释放的数据块,避免误删数据被覆盖,提供以小时为单位的数据抢救能力,提升数据可抢救性,进一步提高数据的可靠性。[0135]本说明书一个实施例通过用户态文件系统接收针对目标文件提交的数据写请求,其中,所述数据写请求中包含待写入数据,根据文件信息存储表中存储的所述目标文件与数据块的映射关系,确定所述目标文件的第一数据块,并根据所述第一数据块及文件分配表中存储的数据块链表,查询所述目标文件的第二数据块,在确定所述第一数据块和/或所述第二数据块中存在空闲数据块的情况下,将所述待写入数据写入所述空闲数据块,创建所述待写入数据的写入结果对应的元数据,将所述元数据写入共享内存,并生成所述共享内存的数据写入日志。[0136]本说明书实施例提供的用户态文件系统,采用文件分配表进行空间管理及基于共享内存的简化日志机制对待写入数据进行处理,尽可能的减少文件系统内部损耗,使得该文件系统对外提供接近于裸盘的更高性能服务,从而有利于提高文件系统的数据读写性能。[0137]下述结合附图2,以本说明书提供的数据处理方法在实际场景的应用为例,对所述数据处理方法进行进一步说明。其中,图2示出了本说明书一个实施例提供的一种数据处理方法的处理过程流程图,具体包括以下步骤。[0138]步骤202,通过用户态文件系统接收针对目标文件提交的数据写请求,其中,数据写请求中包含待写入数据。[0139]步骤204,根据所述待写入数据的数据量,确定待分配的目标空闲数据块的数量。[0140]步骤206,根据文件分配表中存储的空闲数据块链表查询空闲数据块,并根据所述空闲数据块链表中至少两个空闲数据块的存储空间的顺序关系,将所述空闲数据块链表头部的所述数量的空闲数据块确定为目标空闲数据块。[0141]步骤208,对所述待写入数据分配所述目标空闲数据块,并将所述待写入数据写入所述目标空闲数据块。[0142]步骤210,基于写入结果建立所述目标文件与所述目标空闲数据块中第一空闲数据块的映射关系,并根据所述映射关系对文件信息存储表进行更新。[0143]步骤212,根据写入结果中各目标空闲数据块的数据写入顺序,建立目标文件对应的数据块链表。[0144]步骤214,接收针对目标文件提交的数据删除请求,其中,数据删除请求中包含待删除的有效数据。[0145]步骤216,确定存储待删除的有效数据的目标数据块,将目标数据块中的待删除的有效数据转化为回收站数据。[0146]步骤218,确定目标数据块内存储的数据量,并根据数据量确定目标数据块的存储空间使用率。[0147]步骤220,根据存储空间使用率,确定目标数据块内回收站数据的数据回收速度,并按照数据回收速度以及回收站数据的写入顺序,对回收站数据进行回收处理。[0148]具体的,对回收站数据进行回收处理,即将回收站数据转化为无效数据。[0149]步骤222,在确定目标数据块内包含的数据为无效数据的情况下,对目标数据块内的数据进行擦除处理。[0150]步骤224,在擦除完成的情况下,释放目标数据块,并将目标数据块添加至目标数据块组尾部。[0151]本说明书实施例提供的用户态文件系统,采用文件分配表进行空间管理及基于共享内存的简化日志机制对待写入数据进行处理,尽可能的减少文件系统内部损耗,使得该文件系统对外提供接近于裸盘的更高性能服务,从而有利于提高文件系统的数据读写性能。[0152]与上述方法实施例相对应,本说明书还提供了数据处理装置实施例,图3示出了本说明书一个实施例提供的一种数据处理装置的结构示意图。如图3所示,该装置包括:[0153]接收模块302,被配置为接收针对目标文件提交的数据写请求,其中,所述数据写请求中包含待写入数据;[0154]查询模块304,被配置为根据文件分配表中存储的空闲数据块链表查询空闲数据块,并将所述待写入数据写入所述空闲数据块;[0155]更新模块306,被配置为基于写入结果建立所述目标文件与所述空闲数据块的映射关系,并根据所述映射关系对文件信息存储表进行更新;[0156]创建模块308,被配置为创建所述待写入数据的写入结果对应的元数据,将所述元数据写入共享内存,并生成所述共享内存的数据写入日志。[0157]可选地,所述数据处理装置,还包括建立模块,被配置为:[0158]根据所述写入结果建立所述目标文件对应的数据块链表。[0159]可选地,所述数据处理装置,还包括读取模块,被配置为:[0160]接收针对目标文件提交的数据读请求;[0161]根据所述数据读请求中包含的所述目标文件的标识信息,以及所述文件信息存储表中存储的所述映射关系,确定所述目标文件的第一数据块;[0162]根据所述第一数据块及所述数据块链表,查询所述目标文件的第二数据块;[0163]读取所述第一数据块及所述第二数据块中包含的所述目标文件的待读取数据并返回。[0164]可选地,所述查询模块304,进一步被配置为:[0165]根据所述待写入数据的数据量,确定待分配的目标空闲数据块的数量;[0166]根据文件分配表中存储的空闲数据块链表查询空闲数据块,并根据所述空闲数据块链表中至少两个空闲数据块的存储空间的顺序关系,将所述空闲数据块链表头部的所述数量的空闲数据块确定为目标空闲数据块;[0167]对所述待写入数据分配所述目标空闲数据块,并将所述待写入数据写入所述目标空闲数据块。[0168]可选地,所述数据处理装置,还包括第一处理模块,被配置为:[0169]接收针对目标文件提交的数据删除请求,其中,所述数据删除请求中包含待删除数据;[0170]确定存储所述待删除数据的目标数据块,将所述目标数据块中的所述待删除数据进行删除处理,并释放所述目标数据块;[0171]将所述目标数据块添加至所述目标数据块组尾部。[0172]可选地,所述数据处理装置,还包括数据转码模块,被配置为:[0173]接收针对目标文件提交的数据删除请求,其中,所述数据删除请求中包含待删除的第一类型数据;[0174]确定存储所述待删除的第一类型数据的目标数据块,将所述目标数据块中的所述待删除的第一类型数据转化为第二类型数据。[0175]可选地,所述数据处理装置,还包括数据回收模块,被配置为:[0176]确定所述目标数据块内存储的数据量,并根据所述数据量确定所述目标数据块组的存储空间使用率;[0177]根据所述存储空间使用率,确定所述目标数据块组内第二类型数据的数据回收速度,并按照所述数据回收速度以及所述第二类型数据的写入顺序,对所述第二类型数据进行回收处理。[0178]可选地,所述数据回收模块,还被配置为:[0179]确定当前时间与所述第二类型数据的转化时间之间的时间差是否大于等于预设时间差阈值;[0180]若是,则确定所述目标数据块内第二类型数据的数据回收速度,并按照所述数据回收速度以及所述第二类型数据的写入顺序,对所述第二类型数据进行回收处理。[0181]可选地,所述数据处理装置,还包括第二处理模块,被配置为:[0182]在确定所述目标数据块内包含的数据为第三类型数据的情况下,对所述目标数据块内的数据进行擦除处理;[0183]在擦除完成的情况下,释放所述目标数据块,并将所述目标数据块添加至所述目标数据块组尾部。[0184]可选地,所述数据处理装置,还包括第三处理模块,被配置为:[0185]在存储系统中创建用户态文件系统;[0186]相应的,所述接收针对目标文件提交的数据写请求,包括:[0187]通过所述用户态文件系统接收针对目标文件提交的数据写请求。[0188]上述为本实施例的一种数据处理装置的示意性方案。需要说明的是,该数据处理装置的技术方案与上述的数据处理方法的技术方案属于同一构思,数据处理装置的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。[0189]图4示出了根据本说明书一个实施例提供的一种计算设备400的结构框图。该计算设备400的部件包括但不限于存储器410和处理器420。处理器420与存储器410通过总线430相连接,数据库450用于保存数据。[0190]计算设备400还包括接入设备440,接入设备440使得计算设备400能够经由一个或多个网络460通信。这些网络的示例包括公用交换电话网(pstn)、局域网(lan)、广域网(wan)、个域网(pan)或诸如因特网的通信网络的组合。接入设备440可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(nic))中的一个或多个,诸如ieee802.11无线局域网(wlan)无线接口、全球微波互联接入(wi-max)接口、以太网接口、通用串行总线(usb)接口、蜂窝网络接口、蓝牙接口、近场通信(nfc)接口,等等。[0191]在本说明书的一个实施例中,计算设备400的上述部件以及图4中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图4所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。[0192]计算设备400可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或pc的静止计算设备。计算设备400还可以是移动式或静止式的服务器。[0193]其中,处理器420用于执行如下计算机可执行指令,该计算机可执行指令被处理器执行时实现上述数据处理方法的步骤。[0194]上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的数据处理方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。[0195]本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述数据处理方法的步骤。[0196]上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的数据处理方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。[0197]本说明书一实施例还提供一种计算机程序,其中,当所述计算机程序在计算机中执行时,令计算机执行上述数据处理方法的步骤。[0198]上述为本实施例的一种计算机程序的示意性方案。需要说明的是,该计算机程序的技术方案与上述的数据处理方法的技术方案属于同一构思,计算机程序的技术方案未详细描述的细节内容,均可以参见上述数据处理方法的技术方案的描述。[0199]上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。[0200]所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。[0201]需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。[0202]在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。[0203]以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属
技术领域
:技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献