一种小文件存储方法、查询方法和装置的制造方法_2

文档序号:9349980阅读:来源:国知局
的所述索引文件中存储的所述小文件的元数据,定位所述小文件的位置。
[0085]本发明实施例提供的一种小文件存储方法和相关查询方法、装置,在将小文件存储到打包文件后,计算小文件的文件名的哈希值,并在小文件的索引文件中存储文件名哈希值,利用文件名哈希值替代现有技术中索引文件中存储的文件名,而哈希值是基于文件名的数字串,比文件名更简单,更适于后续文件查找过程中使用,这种索引文件的内容保障了后续文件查找的效率;
[0086]在查询小文件时,通过在索弓I子系统中存储的索引文件中的文件名哈希值和用户欲查询小文件的文件名哈希值进行比对,确定用户欲查询的小文件,并将结果及时反馈给用户,对比的过程比较简单,大大节省了对比的时间,提高了小文件的查询效率。
[0087]为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
【附图说明】
[0088]为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
[0089]图1示出了本发明实施例提供的一种小文件存储方法所涉及的一种实施系统的结构示意图;
[0090]图2示出了本发明实施例1所提供的一种小文件存储方法流程图;
[0091]图3示出了本发明实施例2所提供的一种小文件存储方法的具体流程图;
[0092]图4示出了本发明实施例2提供的小文件存储方法所使用的文件系统的结构示意图;
[0093]图5示出了本发明实施例2提供的小文件存储方法中对小文件进行缓存并写入文件系统的示意图;
[0094]图6示出了本发明实施例2提供的小文件存储方法中小文件在打包文件中的存储形式;
[0095]图7示出了本发明实施例2提供的小文件存储方法中索引子系统和打包文件的索引不意图;
[0096]图8示出了本发明实施例3所提供的一种提出的小文件查询方法的流程图;
[0097]图9示出了本发明实施例4所提供的一种提出的小文件存储装置的结构示意图;
[0098]图10示出了本发明实施例5所提供的一种提出的小文件查询装置的结构示意图。
【具体实施方式】
[0099]下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0100]本发明实施例中提到的小文件即相对较小的文件,其定义具体可以根据使用环境进行限定,例如比较典型的,购物网站中的图片(大到几MB,小到几KB不等)可以视为小文件。在现实的应用系统中,小文件的特点是文件较小但文件数量较多,尤其购物类网站、视频应用等。
[0101]考虑到相关的文件系统中,通常小文件的索引文件存储的是小文件的文件名,在进行文件查找时,系统需要使用该索引文件中的文件名与用户提供的文件名进行对比,才可以定位用户查找的小文件的位置,但是文件名一般是英文、中文和数字混合的字符串,比较复杂,也比较长,所以比对的速度较慢,导致返回给用户待处理小文件的时间较长。基于此,本发明实施例提供了一种小文件存储方法和装置。参见图1,其示出了本发明实施例提供的小文件存储方法所涉及的一种实施系统的结构示意图,该系统包括:用于存储海量小文件的文件系统10,文件系统10包括:索引子系统11和文件存储子系统12。
[0102]其中,文件存储子系统12,用于获取待存储的小文件,并对获取到的小文件进行存储,并在将小文件存储到打包文件以后,生成小文件的元数据并计算小文件的文件名哈希值,然后将小文件的元数据和小文件的文件名哈希值作为小文件的索引文件,发送到索引子系统进行存储;索引子系统11,用于对小文件的索引文件进行存储,并在对小文件的索引文件存储之后,获取小文件的索引文件在索引子系统的位置信息和作为快速查找信息的小文件的文件名哈希值中取出预设位数的数字串,形成位置信息和快速查询信息的关联关系,并将位置信息和快速查询信息的关联关系存储在索引子系统11预设的快速查找表中。
[0103]所以在索引子系统11中,不仅存储有小文件的索引文件,还存储有包括小文件的索引文件在索引文件中的位置信息和部分文件名哈希值的关联关系的快速查找表,索引子系统11和文件存储子系统12分别设置在非易失性存储介质中。当用户启动文件系统时,索引子系统会被读取到文件系统的内存中,对用户想要处理的存储在文件系统中的小文件进行查询;当文件系统的当前的剩余内存不足以读取索引子系统时,文件系统会通过在非易失性存储介质中存储的快速查找表中查找待处理的小文件,以向用户及时反馈查询结果。
[0104]文件系统10,可以采用现有的任意可以存储小文件的服务器或者计算机,这里不再赘述。
[0105]文件系统10中,用来存储小文件和小文件的索引文件的非易失性存储介质可以采用现有的任何型号的机械硬盘、固态硬盘和闪存,这里不再一一赘述。
[0106]实施例1
[0107]参见图2,本实施例提供一种小文件存储方法,该方法包括如下步骤:
[0108]步骤100、获取待存储的小文件;其中,小文件包括文件大小小于预设阈值的文件。
[0109]在本实施例中,小文件通常包括用户通过网络可以获取到的图片、文档、音乐等文件。当文件系统在获取到待存储的文件时,会先通过设定的阈值确定待存的文件是不是小文件。
[0110]图片、文档、音乐等文件的大小一般在几千字节(KB)到几兆字节(MB)不等,所以在设定文件系统所存储的小文件大小的阈值时,不应该将阈值设置的过大,可以设置为7至1MB中的任意数值。当然,阈值也可以设置为其他的数值,这里不再一一赘述。
[0111]上述文件系统安装在服务器或者计算机上,用于对文件进行存储。文件系统由服务器或者计算机上安装的操作系统控制,对存储的小文件进行查询、读写等操作。
[0112]步骤101、将获取到的小文件存储到当前的打包文件中,并生成小文件的元数据;小文件的元数据包括小文件所在打包文件标识、小文件在打包文件中的位置信息和小文件的数据长度。
[0113]上述打包文件设置在文件存储子系统中,用于将多个小文件合并存储在一起,以减少文件系统的碎片化,提高了文件系统的读写性能。
[0114]上述打包文件标识可以在打包文件生成时,由文件系统赋予打包文件一个数字串,用于和已有的打包文件进行区别。
[0115]小文件在打包文件中的位置信息包括小文件在打包文件的存储地址,该存储地址包括起始偏移地址和终止偏移位置。其中,起始偏移地址和终止偏移位置可以是文件系统中非易失性存储介质的物理地址。
[0116]对于打包文件的大小,如果设置的太大,那么存储的小文件的数量就会很多,可能会耗费较长的时间来搜索用户查询的小文件后,才可以给用户反馈查询结果;而如果设置的太小,那么就会使得打包文件中存出不了几个小文件,可能就没有起到减少文件系统的碎片化的作用,所以,为了合理的对打包文件进行使用,可以根据所存储的文件大小的特点,把打包文件设定为几十MB的大小,如:32MB至64MB中的某个数值。
[0117]比如:文档一般是几十KB到几百KB的大小,所以主要存储文档的文件系统,可以预先设定打包文件的大小是16MB ;而音乐一般是几MB大小,那么主要存储音乐的文件系统,可以预先设定打包文件的大小是64MB。从而根据所存储的文件大小的特点,设置了不同的打包文件的大小。
[0118]步骤102、根据所述小文件的文件名计算小文件的属性值,该属性值包括:文件名哈希值。
[0119]上述小文件的属性值可以存储在索引子系统中,用于表征出对应小文件与存储在文件存储子系统中其他小文件的不同,以便在用户在文件系统中查询某个小文件时,可以通过小文件的属性值查询该小文件。
[0120]上述文件名哈希值可以在文件系统将小文件存储到打包文件后,根据预设的哈希算法对文件名进行散列运算而得到的结果,由于计算得到的文件名哈希值是32bit、64bit或者128bit长度的数字串,可以用来唯一确定小文件。
[0121]步骤103、将计算得到的属性值和小文件的元数据作为小文件的索引文件存储到索引子系统。
[0122]本实施例的索引子系统存储在文件系统的非易失性存储介质中,当用户启动文件系统时,索引子系统会被读取到文件系统的内存中,对用户输入文件系统中的待处理小文件进行查询,索引子系统使用索引文件中的文件名哈希值和用户的待处理文件的文件名哈希值进行比对,比对一致的即为用户待处理的文件对应的信息,根据该哈希值对应的元数据便可以定位用户待处理的文件的位置。
[0123]通过以上描述,本实施例提供一种小文件存储方法,在将小文件存储到打包文件后,计算小文件的文件名的哈希值,并在小文件的索引文件中存储文件名哈希值,利用文件名哈希值替代现有技术中索引文件中存储的文件名,而哈希值是基于文件名的数字串,比文件名更简单,更适于后续文件查找过程中使用,这种索引文件的内容保障了后续文件查找的效率。
[0124]当文件系统的文件存储子系统中存储了海量的小文件后,相应的索引子系统中存储的索引文件数量也会非常庞大,使得文件系统通过索引文件查询存储的小文件之前,需要耗费大量的时间和内存量将索引文件读取到内存中,为了提高文件系统的查询效率,所述小文件存储方法还包括以下步骤(1)-(3):
[0125](I)获取小文件的索引文件在索引子系统中的位置信息;
[0126](2)从小文件的文件名哈希值中取出预设位数的数字串,作为小文件的快速查询信息;
[0127](3)将位置信息和快速查询信息在预设的快速查找表中进行关联存储。
[0128]其中,上述快速查找表预先设置在文件系统的索引子系统中。
[0129]上述小文件的索引文件在索引子系统中的位置信息,包括小文件在索引子系统中的存储地址。存储地址包括起始偏移地址和终止偏移位置。
[0130]通过设置快速查找表,可以在无需内存读取索引文件的情况下,就可以直接给用户反馈查询结果,方便用户使用。
[0131 ] 随着文件系统中的文件存储子系统中存储的小文件越来越多,那么文件系统对小文件的文件名进行哈希计算后,可能会出现两个以上数量的小文件的文件名哈希值相同的情况,为了应对两个以上数量的小文件的文件名哈希值相同的情况,将计算得到的属性值和小文件的元数据作为小文件的索引文件存储到索引子系统包括:当索引子系统中存在文件名哈希值相同的多个小文件时,为多个小文件建立索引链表;将多个小文件对应索引链表关联存储。
[0132]其中,当前存储到文件系统的小文件的索引文件会位于索引链表的头部。
[0133]通过将文件名哈希值相同的索引文件形成链表,从而对索引子系统中存储的海量索引文件进行分类,所以,在通过快速查找表进行文件的查询时,可以先通过索引链表,找到某类具有相同文件名哈希值的多个索引文件,然后再在这些索引文件中进行文件查询,就可以大大缩小文件的查询范围,快速的找出小文件。
[0134]打包文件的大小可以预设好的,为了不使打包文件的大小超出预设的大小,而造成文件系统不稳定,那么为了解决这样的问题,将获取到的小文件存储到当前的打包文件中包括:确定获取到的小文件的占用量;判断当前的打包文件的剩余存储容量是否大于小文件的占用量;如果是,将小文件存储在当前的打包文件中;如果否,生成新的打包文件存储小文件。
[0135]其中,小文件的占用量指小文件被存储到打包文件时,会占用的打包文件存储容量。
[0136]文件系统在获取到待存储的小文件之后,会先对待存储的小文件在内存中进行缓存,然后再发送到文件存储子系统中的打包文件中存储起来,如果使用整个内存对待存储的小文件进行存储,那么容易造成内存碎片化,降低系统性能,所以在将获取到的小文件存储到当前的打包文件中,并形成小文件的元数据之前,小文件存储方法还包括以下步骤:获取多个缓存空间对应的指针,其中,缓存空间用于缓存待存储的小文件;根据多个缓存空间对应的指针生成小文件的缓存空间链表;将小文件缓存至缓存空间链表对应的多个
当前第2页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1