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

文档序号:9349980阅读:来源:国知局
缓存空间中;将所述多个缓存空间中缓存的所述小文件写入打包文件中。
[0137]其中,多个缓存空间对应的指针是从空闲缓存空间链表中取得的。空闲缓存空间链表对应有空闲缓存空间,空闲缓存空间是文件系统专门设置用来缓存待存储小文件的缓冲文件写入器中取出来的。
[0138]从缓冲文件写入器中取出的缓存空间的指针数量和每个缓存空间的大小和小文件的大小有关。
[0139]为了提高缓存小文件的缓存空间的使用效率,将所述多个缓存空间中缓存的所述小文件写入打包文件中包括以下步骤:判断多个缓存空间是否均写满;如果是,将多个缓存空间中缓存的小文件写入打包文件中;如果否,判断未写满的缓存空间等待缓存其他小文件的等待时间是否达到预设时间;当等待时间达到预设时间时,将多个缓存空间中缓存的小文件写入打包文件中。
[0140]通过以上的描述,当文件系统确定缓存有小文件的多个缓存空间等待缓存其他小文件的等待时间达到预设时间时,将缓存有小文件的多个缓存空间写入打包文件中,提高了文件系统的小文件写入效率。
[0141]实施例2
[0142]参见图3所示的小文件存储方法的具体流程图,该方法包括如下步骤:
[0143]步骤200、获取待存储的小文件;其中,小文件包括文件大小小于预设阈值的文件。
[0144]当用户在网络上看到自己喜欢的图片、文档或者音乐等小文件时,可以通过文件系统所在服务器或者计算机的输入设备,向服务器或者计算机的操作系统发出小文件的获取指令,操作系统根据用户发出的小文件的获取指令,从网络上获取待存储到文件系统的小文件。
[0145]服务器或者计算机的输入设备,可以是键盘、鼠标等任意可以使用户向操作系统发出小文件的获取指令的设备,这里不再一一赘述。
[0146]比如:用户想要在文件系统中存储名称是“伤心1999”的歌曲时,可以通过文件系统所在服务器或者计算机的鼠标,向服务器或者计算机的操作系统发出歌曲“伤心1999”的获取指令,操作系统根据用户发出的歌曲“伤心1999”的获取指令,从网络上获取歌曲“伤心 1999”。
[0147]目前来说,常用的文件系统包括:CIFS(Common Internet File System,通用网络文件系统)、NFS (Network File System,网络文件系统)和 NTFS (New Technology FileSystem,新技术文件系统)等,这些文件系统对文件的存储格式各不相同而且又不兼容,为了使本实施例提出的文件系统可以在常用的文件系统中使用,本实施例提供了上述小文件存储方法所使用的文件系统,该系统的结构示意图如图4所示,其中,该系统为通用文件系统,其包括基础文件系统、缓冲文件写入器、快速查询表、索引文件和打包文件。
[0148]上述基础文件系统作为待存储的小文件和多个文件系统之间的接口。基础文件系统定义不同的接口分别与多个文件系统进行对接,所以只要在不同的文件系统实现相关的接口就可以在此文件系统上实现小文件的存储。
[0149]基础文件系统为每个文件系统定义的接口包括但不限于:打开文件、关闭文件、读取文件(包括指定位置读取)、写入文件(包括指定位置写入)、删除文件、同步文件、调整文件当前指针位置、调整文件大小、重命名文件、判断文件或者路径是否存在、获取路径空间属性、创建路径、获取文件或者路径属性、列举文件等。
[0150]缓冲文件写入器是一种文件抽象,提供了文件操作的基本接口,但是内部实现采用了内存缓冲机制,从而提高了文件的创建、写入的10PS。参见图5所示的小文件存储方法中对小文件进行缓存并写入文件系统的示意图,在缓冲文件写入器中,存在两种内存队列,分别为:空闲队列和数据队列。空闲队列将所有空闲的内存连接起来,供以后写入数据使用;数据队列中的内存则是已经填入数据待写入到磁盘中。在将获取到的小文件存储到文件系统的文件存储子系统之前,文件系统会通过内存中专门划出的缓冲文件写入器中取出多个缓存空间对小文件进行缓存,在小文件被缓存到多个缓存空间后,将多个缓存空间中缓存的小文件写入文件系统的文件存储子系统中。缓冲文件写入器具备如下特点:
[0151](I)内存块的大小和数量可配置;
[0152](2)内存块通过内存池技术进行管理,提高内存使用率,降低内存碎片,提高系统f生會K ;
[0153](3)当前工作内存已经写满后送入数据队列;
[0154](4)当前工作内存从空闲队列取出超过指定时间后送入数据队列,超时时间可配置;
[0155](5)后台线程监听数据队列,一旦发现有新数据,立刻同步到文件中,并将内存块释放回空闲队列;
[0156](6)写入内存块和数据同步到文件为两个独立线程,性能较高;
[0157](7)缓冲机制可以避免瞬间数据量过大造成的数据浪涌。
[0158]步骤201、获取多个缓存空间对应的指针,其中,缓存空间用于缓存待存储的小文件。
[0159]其中,多个缓存空间对应的指针,是从缓冲文件写入器中设置的空闲缓存空间链表取出中,用于缓存小文件的多个缓存空间所对应的指针。
[0160]获取多个缓存空间对应的指针的过程具体包括:
[0161]确定缓冲文件写入器中是否具有空闲的缓存空间;
[0162]若确定缓冲文件写入器中具有空闲的缓存空间,那么根据获取到的小文件的大小,从缓冲文件写入器中的空闲缓存空间链表中获取多个缓存空间对应的指针。
[0163]上述的缓冲文件写入器,除了可以是文件系统从内容中专门划分的区域外,还可以是文件系统设置的专门用于缓存待存储小文件的缓存器,该缓冲文件写入器独立于文件系统用于加载运行程序的内存。
[0164]因此,缓冲文件写入器,可以采用现有的任何型号和类型的随机存取存储器,这里不再一一赘述。
[0165]缓冲文件写入器中缓存空间的大小,可以由设计文件系统的厂商预先确定,也可以由文件系统的用户根据所存储小文件的特点进行设定。
[0166]比如:设计文件系统的厂商预先设定缓存空间的大小是8MB,但是用户购买该文件系统是为了存储文档和图片,由于文档和图片的大小通常是几十至几百KB,所以,用户可以将单位缓存空间的大小修改为4MB,以增加小文件的读写操作效率。
[0167]若小文件的大小大于单位缓存空间的大小,那么说明一个缓存空间是装不下小文件的全部数据的,那么需要将小文件分成多个部分并分别缓存到多个缓存空间中,所以可以通过小文件的大小和单位缓存空间的大小对报文进行分块处理,然后将分块后的报文分别存储到多个缓存空间中。
[0168]步骤202、根据多个缓存空间对应的指针生成小文件的缓存空间链表。
[0169]具体地,根据多个缓存空间对应的指针生成小文件的缓存空间链表包括:根据多个空闲缓存空间对应的指针,文件系统先确定小文件在这些获取的缓存空间的缓存顺序,使第一个从空闲缓存空间链表中获取的指针作为缓存空间链表中报文的头指针,第二个从空闲缓存空间链表中获取的指针作为缓存空间链表中报文的第二个指针,……,最后一个从空闲缓存空间链表中获取的指针作为缓存空间链表中报文的尾指针,那么缓存空间链表的头指针对应的缓存空间确定存储小文件的第一部分数据、紧邻头指针的下一个指针对应的缓存空间确定存储小文件的第二部分数据,……,尾指针对应的缓存空间确定缓存报文的最后一部分数据,以此生成报文的缓存空间链表。
[0170]在多个缓存同一小文件的缓存空间中,缓存小文件最后一部分数据的缓存空间对应的指针被称作小文件的尾指针。
[0171]步骤203、将小文件缓存至缓存空间链表对应的多个缓存空间中。
[0172]根据缓存空间链表中各指针确定的小文件各个部分的缓存空间,文件系统将小文件的各部分分别存储到对应的缓存空间中。
[0173]在有些情况下,小文件的大小小于取出的多个缓存空间的大小,所以在将小文件缓存到多个缓存空间之后,小文件的尾指针对应的缓存空间是处于未缓存满数据的状态,那么就会需要等待尾指针对应的缓存空间缓存满数据后,才会将缓存的小文件写入文件系统的文件存储子系统中。但有时等待的时间很长,降低了文件系统对小文件的读写效率,为了解决这个问题,步骤203包括以下具体流程:判断多个缓存空间是否均写满;如果是,则进行步骤204 ;如果否,判断未写满的缓存空间等待缓存其他小文件的等待时间是否达到预设时间;当等待时间达到预设时间时,进行步骤204。
[0174]通过预设时间,当文件系统确定缓存有小文件的多个缓存空间等待缓存其他小文件的等待时间达到预设时间时,将缓存有小文件的多个缓存空间写入打包文件中,避免了缓存有小文件的缓存空间等待缓存其它小文件的时间过长而导致的文件系统对小文件的读写效率低下的缺陷,提高了文件系统对小文件的读写效率。
[0175]预设时间,可以由设计文件系统的厂商预先确定,也可以由文件系统的用户根据所存储小文件的特点进行设定。
[0176]比如:设计文件系统的厂商设置的预设时间是500毫秒,但是用户购买该文件系统是为了存储文档和图片,读写的数据量较大,需要快速读取存储小文件,那么,用户可以将预设时间的大小修改为200毫秒,以增加小文件的读写操作效率。
[0177]步骤204、将多个缓存空间中缓存的小文件写入打包文件中。
[0178]按照缓存空间链表中记录的指针顺序,将各指针对应的多个缓存空间中所缓存的小文件写入打包文件中。
[0179]在将所缓存的小文件写入打包文件之后,文件系统释放缓存空间链表,使缓存空间链表对应的多个缓存空间重新成为空闲缓存空间,并将这些空间缓存空间的指针连接到空闲缓存空间链表中,以供缓存后续的小文件时继续使用。
[0180]通过步骤201至步骤204的描述,文件系统设置专门的缓冲文件写入器,来缓存待存储的小文件,提高内存使用率,降低内存碎片,提高系统性能,而且可以有效避免瞬间小文件的数据量过大造成数据浪涌而导致文件系统损坏的问题。
[0181]打包文件的存储空间的存储容量是预先确定的,所以为了不使打包文件中存储的小文件的实际容量大于预先设定的打包文件的存储容量,包括以下具体流程:
[0182]步骤205、确定获取到的小文件的占用量。
[0183]小文件的占用量,就是小文件的大小,记载在小文件属性信息中;文件系统获取到的小文件,包括小文件数据和小文件属性信息;小文件属性信息包括:小文件的文件名、数据长度和创建时间等。
[0184]文件系统在将小文件存储到打包文件时,会连小文件的属性信息一并存储到打包文件中。
[0185]步骤206、判断当前的打包文件的剩余存储容量是否大于小文件的占用量如果是,执行步骤207,将小文件存储在当前的打包文件中;如果否,执行步骤208,生成新的打包文件存储小文件。
[0186]打包文件的剩余存储容量,是和打包文件标识一起存储在打包文件属性信息中;除了打包文件标识和打包文件属性信息之外,打包文件属性信息还包括打包文件在文件存储子系统中的位置信息。
[0187]打包文件属性信息,可以表示为:“打包文件标识打包文件位置信息打包文件剩余存储容量”的形式,当然打包文件属性信息也可以通过其他的形式表现出来,这里不再一一赘述。
[0188]打包文件属性信息预先存储在文件系统的系统信息的打包文件属性信息列表中,文件系统的系统信息还包括文件系统的属性信息列表和缓冲文件写入器的属性信息列表等。
[0189]打包文件属性信息,由文件系统自动维护,当打包文件标识对应的打包文件存储新的小文件后,文件系统会根据小文件的占用量和存储该小文件之前打包文件的剩余存储容量,更新打包文件标识对应的打包文件属性信息中记录的打包文件的剩余存储容量。
[0190]步骤207、将小文件存储在当前的打包文件中。
[0191]步骤208、生成新的打包文件存储小文件。
[0192]生成新的打包文件的具体流程包括:文件系统会根据当前的打包文件的存储容量,从文件存储子系统中分配未使用的存储空间中分配预设存储容量的存储空间作为新生成的打包文件的存储空间,并获取新生成的打包文件的存储空间所在文件存储子系统中的位置信息和新生成的打包文件的存储空间的存储容量,然后生成新的打包文件标识,将新生成的打包文件的位置信息、存储容量和新生成的打包文件标识写入打包文件属性信息列表中,形成新生成的打包文件的打包文件属性信息。在生成新的打包文件之后,将小文件存储到新生成的打包文件中。
[0193]步骤209、生成小文件的元数据。
[0194]小文件的元数据包括小文件所在打包文件标识、小文件在打包文件中
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1