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

文档序号:9349980阅读:来源:国知局
件名哈希值相同的小文件的索引文件,那么为了确定用户欲查询的小文件,就只能通过小文件的文件名在这多个小文件的索引文件对应的索引链表中,查询出具有相同文件名的小文件的索引文件。
[0242]当文件系统的内存不足或者索引子系统中存储的索引文件数量庞大而导致的索引文件读取速度慢时,为了能够及时的向用户返回查询小文件的结果,步骤302还可以包括由步骤(1-1)至步骤(1-4)所描述的流程。
[0243](1-1 )、从计算得到的文件名哈希值中,取出预设位数的数字串,作为快速查询信息。
[0244](1-2)、根据快速查询信息,在索引子系统的快速查找表中,查询出文件名哈希值对应的小文件的索引文件在索引子系统中的位置信息。
[0245]快速查找表预先存储在索引子系统中,预先存储有小文件的索引文件在索引子系统中的位置信息和快速查询信息的关联关系,所以文件系统可以根据快速查询信息,根据快速查找表中记录的位置信息和快速查询信息的关联关系,查询出文件名哈希值对应的小文件的索引文件在索引子系统中的位置信息。
[0246]位置信息,记录了文件名哈希值对应的小文件的索引文件在索引子系统中的起始存储地址和终止存储地址。
[0247](1-3)、根据得到的位置信息,在索引子系统中查询出索引文件。
[0248](1-4)、根据查询出的索引文件中存储的小文件的元数据,定位小文件的位置。
[0249]在索引子系统中的快速查找表中存储小文件的位置信息和快速查询信息的关联关系,在计算得到小文件的文件名哈希值后,可以通过快速查找表确定小文件的位置,无需内存读取索引文件就可以直接给用户反馈查询结果,加快了查询小文件的速度;而且,从小文件的文件名哈希值中取出预设位数的数字串,作为快速查询信息,对比速度比对比完整的文件名哈希值更快,而且使得生成的快速查找表的文件很小,方便文件系统查询,进一步提高了文件系统对小文件的查询效率。
[0250]当索引子系统中存在多个第一文件名哈希值对应的多个小文件的索引文件时,为了唯一确定用户查询的小文件,步骤302还可以包括步骤(2-1)至步骤(2-3)所描述的流程。
[0251](2-1)、当文件名哈希值包括小文件的文件名对应的第一哈希值和第二哈希值时,通过第一哈希值查询索引子系统中的索引文件;其中,第一哈希值的长度小于第二哈希值的长度;
[0252](2-2)、当通过第一文件名哈希值查询出多个小文件的索引文件时,根据第二文件名哈希值,在索引子系统存储的多个小文件对应的索引链表中,查询出第二文件名哈希值对应的小文件的索引文件;
[0253]步骤(2-3)、根据查询出的小文件的索引文件中存储的小文件的元数据,定位小文件的位置。
[0254]多个小文件对应的索引链表,是在小文件的索引文件存储到索引子系统之后形成的,索引链表中的小文件的索引文件中第一文件名哈希值相同而第二文件名哈希值不同,从而对索引子系统中存储的海量索引文件进行分类,在当索引子系统中查询出多个第一文件名哈希值对应的多个小文件的索引文件时,可以根据索引链表,在索引链表中具有相同第一文件名哈希值的索引文件中通过第二文件名哈希值进行小文件的查询,定位小文件的位置,缩小了查询的范围,可以快速的找出小文件,而无需对索引子系统中的所有索引文件进行查询,大大提高了查询小文件的效率。
[0255]当通过第二文件名哈希值还不能唯一确定小文件时,通过打包文件中存储的文件名对小文件进行查询,从而确定用户查询的小文件。
[0256]步骤303、从定位的位置获取小文件。
[0257]步骤304、将获取到的小文件返回给用户。
[0258]本实施例提供的一种小文件查询方法,在查询小文件时,计算小文件的文件名哈希值,利用文件名哈希值在索引子系统中存储的索引文件中的文件名哈希值和用户的待处理文件的文件名哈希值进行比对,确定用户欲查询的文件,并将结果及时反馈给用户;由于哈希值就是简单的数字串,所以对比的过程比较简单,大大节省了对比的时间,提高了小文件的查询效率。
[0259]实施例4
[0260]参见图9,本实施例提供一种小文件存储装置,所述装置包括:小文件获取模块400、小文件存储模块401、计算模块402和索引文件存储模块403。
[0261]其中,小文件获取模块400,用于获取待存储的小文件;其中,小文件包括文件大小小于预设阈值的文件;
[0262]小文件存储模块401,与小文件获取模块400连接,用于将获取到的小文件存储到当前的打包文件中,并生成小文件的元数据;小文件的元数据包括小文件所在打包文件标识、小文件在打包文件中的位置信息和小文件的数据长度;
[0263]计算模块402,与小文件存储模块401连接,用于根据小文件的文件名计算小文件的属性值,其中,属性值包括:文件名哈希值;
[0264]索引文件存储模块403,用于将计算得到的属性值和小文件的元数据作为小文件的索引文件存储到索引子系统。
[0265]当文件系统的文件存储子系统中存储了海量的小文件后,相应的索引子系统中存储的索引文件数量也会非常庞大,使得文件系统通过索引文件查询存储的小文件之前,需要耗费大量的时间和内存量将索引文件读取到内存中,为了提高文件系统的查询效率,小文件存储装置还包括:
[0266]位置信息获取单元,用于获取小文件的索引文件在索引子系统中的位置信息;
[0267]快速查询信息获取模块,用于从小文件的文件名哈希值中取出预设位数的数字串,作为小文件的快速查询信息;
[0268]关联存储模块,用于将位置信息和快速查询信息在预设的快速查找表中进行关联存储。
[0269]通过设置快速查找表,可以在无需内存读取索引文件的情况下,就可以直接给用户反馈查询结果,方便用户使用。
[0270]随着文件系统中的文件存储子系统中存储的小文件越来越多,那么文件系统对小文件的文件名进行哈希计算后,可能会出现两个以上数量的小文件的文件名哈希值相同的情况,为了应对两个以上数量的小文件的文件名哈希值相同的情况,索引文件存储模块包括:
[0271]索引链表建立单元,用于当索引子系统中存在文件名哈希值相同的多个小文件时,为多个小文件建立索引链表;
[0272]索引链表存储单元,用于存储多个小文件对应的索引链表。
[0273]通过将文件名哈希值相同的索引文件形成链表,从而对索引子系统中存储的海量索引文件进行分类,所以,在通过快速查找表进行文件的查询时,可以先通过索引链表,找到某类具有相同文件名哈希值的多个索引文件,然后再在这些索引文件中进行文件查询,就可以大大缩小文件的查询范围,快速的找出小文件。
[0274]打包文件的大小是预设好的,为了不使打包文件的大小超出预设的大小,而造成文件系统不稳定,为了解决这样的问题,小文件存储模块包括:
[0275]小文件占用量确定单元,用于确定获取到的小文件的占用量;
[0276]小文件占用量判断单元,用于判断当前的打包文件的剩余存储容量是否大于小文件的占用量;
[0277]小文件存储单元,用于小文件占用量判断单元的判断结果为是时,将小文件存储在当前的打包文件中;
[0278]打包文件生成单元,用于小文件占用量判断单元的判断结果为否时,生成新的打包文件存储小文件。
[0279]文件系统在获取到待存储的小文件之后,会先对待存储的小文件在内存中进行缓存,然后再发送到文件存储子系统中的打包文件中存储起来,如果使用整个内存对待存储的小文件进行存储,那么容易造成内存碎片化,降低系统性能,小文件存储装置还包括:
[0280]缓存空间指针获取模块,用于获取多个缓存空间对应的指针,其中,缓存空间用于缓存待存储的小文件;
[0281]缓存空间链表生成模块,用于根据多个缓存空间对应的指针生成小文件的缓存空间链表;
[0282]小文件缓存模块,用于将小文件获取模块获取的小文件缓存至缓存空间链表对应的多个缓存空间中。
[0283]为了提高缓存小文件的缓存空间的使用效率,小文件存储模块包括:
[0284]缓存空间写满判断单元,用于判断多个缓存空间是否均写满;
[0285]第一小文件写入单元,用于缓存空间写满判断单元的判断结果为是时,将多个缓存空间中缓存的小文件写入打包文件中;
[0286]预设时间判断单元,用于缓存空间写满判断单元的判断结果为否时,判断未写满的缓存空间等待缓存其他小文件的等待时间是否达到预设时间;
[0287]第二小文件写入单元,用于当等待时间达到预设时间时,将多个缓存空间中缓存的小文件写入打包文件中。
[0288]文件名哈希值包括:第一哈希值和第二哈希值;第一哈希值的长度小于第二哈希值的长度。
[0289]通过以上描述,本实施例提供一种小文件存储装置,在将小文件存储到打包文件后,计算小文件的文件名的哈希值,并在小文件的索引文件中存储文件名哈希值,利用文件名哈希值替代现有技术中索引文件中存储的文件名,而哈希值是基于文件名的数字串,比文件名更简单,更适于后续文件查找过程中使用,这种索引文件的内容保障了后续文件查找的效率。
[0290]实施例5
[0291]参见图10,本实施例提供一种小文件查询装置,该小文件查询装置包括:查询请求接收模块500、文件名哈希值计算模块501、小文件定位模块502、小文件获取模块503和小文件返回模块504 ;
[0292]查询请求接收模块500,用于接收用户的小文件查询请求,小文件查询请求包括用户欲查询的小文件的文件名;
[0293]文件名哈希值计算模块501,与查询请求接收模块500连接,用于根据接收到的小文件的文件名,计算小文件的文件名哈希值;
[0294]小文件定位模块502,与文件名哈希值计算模块501连接,用于通过计算得到的文件名哈希值查询索引子系统中的索引文件,根据查询结果定位小文件的位置;其中,该索引文件包括小文件的文件名对应的属性值和小文件的元数据,该属性值包括:文件名哈希值;该元数据包括小文件所在打包文件标识、小文件在打包文件中的位置信息和小文件的数据长度;
[0295]小文件获取模块503,与小文件定位模块502连接,用于从定位的位置获取小文件;
[0296]小文件返回模块504,与小文件获取模块503连接,用于将获取到的小文件返回给用户。
[0297]当文件系统的内存不足或者索引子系统中存储的索引文件数量庞大而导致的索引文件读取速度慢时,为了能够及时的向用户返回查询小文件的结果,小文件定位模块502通过如下快速查询信息确定单元、位置信息查询单元、索引文件查询单元和小文件定位单元定位小文件,具体包括:
[0298]快速查询信息确定单元,用于从计算得到的文件名哈希值中,取出预设位数的数字串,作为快速查询信息;
[0299]位置信息查询单元,用于根据所述快速查询信息,在索引子系统的快速查找表中,查询出文件名哈希值对应的小文件的索引文件在索引子系统中的位置信息;
[0300]索引文件查询单元,用于根据得到的位置信息,在索引子系统中查询出索引文件;
[0301]小文件定位单元,用于根据查询出的索引文件中存储的小文件的元数据,定位小文件的位置。
[0302]在索引子系统中的快速查找表中存储小文件的位置信息和快速查询信息的关联关系,在计算得到小文件的文件名哈希值后,可以通过快速查找表确定小文件的位置,无需内存读取索引文件就可以直接给用户反馈查询结果,加快了查询小文件的速度;而且,从小文件的文件名哈希值中取出预设位数的数字串,作为快速查询信息,对比速度比对比完整的文件名哈希值更快,而且使得生成的快速查找表的文件很小,方便文件系统查询,进一步提高了文件系统对小文件的查询效率。
[0303]当索引子系统中包括多个具有相同第一文件名哈希值的小文件索引文件时,为了唯一确定用户查询的小文件,小文件获取模块通过如下索引链表查询单元和第二小文件获取单元查询小文件的索引文件,小文件获取模块还具体包括:
[0304]索引文件查找单元,用于当文件名哈希值包括小文件的文件名对应的第一哈希值和第二哈希值时,通过第一哈希值查询索引子系统中的索引文件;其中,第一哈希值的长度小于第二哈希值的长度;
[0305]索引链表查询单元,用于当根据第一文件名哈希值查询出多个小文件的索引文件时,根据第二文件名哈希值,在索引子系统存储的多个小文件对应的索引链表中,查询出第二文件名哈希值对应的小文件的索引文件;
[0306]第二小文件获取单元,用于根据查询出的小文
当前第5页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1