CN102662992B - 一种海量小文件的存储、访问方法及装置 - Google Patents
一种海量小文件的存储、访问方法及装置 Download PDFInfo
- Publication number
- CN102662992B CN102662992B CN201210067404.3A CN201210067404A CN102662992B CN 102662992 B CN102662992 B CN 102662992B CN 201210067404 A CN201210067404 A CN 201210067404A CN 102662992 B CN102662992 B CN 102662992B
- Authority
- CN
- China
- Prior art keywords
- small documents
- storage
- unit
- primitive
- file group
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 42
- 230000005055 memory storage Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 description 12
- 210000004027 cell Anatomy 0.000 description 7
- 238000010586 diagram Methods 0.000 description 4
- 239000002699 waste material Substances 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000009432 framing Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 210000000352 storage cell Anatomy 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 208000033999 Device damage Diseases 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000012010 growth Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种海量小文件的存储方法。该方法包括:将接收的小文件顺序写入存储基元;根据小文件在存储基元的起始地址和容量大小确定所述小文件所属的文件组,以及小文件在该文件组内的序号,所述文件组包含至少两个小文件;以所述文件组的标识号与小文件的序号为索引,建立与小文件的文件名之间的对应关系以实现存储。本申请实施例还公开了一种海量小文件的访问方法,以及与上述两种方法对应的海量小文件的存储装置和访问装置。本申请实施例压缩了小文件的目录索引结构,节约了存储开销,提高了小文件的存储和访问效率。
Description
技术领域
本申请涉及数据存储访问技术领域,特别涉及一种海量小文件的存储方法及其相应装置、访问方法及其相应装置。
背景技术
随着信息技术的发展,各种信息迅猛增长,作为这些信息载体的单个文件随之海量出现,尤其是容量不太大的小文件。这些小文件小的可仅有几KB,大的通常也不超过20MB。常见的小文件,如:微博信息、用户上传的相片、电子邮件、UGC数据等。海量小文件的出现带来的发展瓶颈是小文件的存储访问问题。现有技术中,通常以每个独立的小文件为单位直接存储到磁盘或RAID盘阵(Redundant Array ofIndependent Disk,独立冗余磁盘阵列)。磁盘或RAID盘阵存储少量小文件尚可满足应用需求,但当存储的小文件数量增加到一定规模(海量)时,存储系统的目录索引结构十分庞大、节点数量众多,为实现访问建立的文件目录系统变得臃肿,增加了存储开销。而且,为提高访问速度设置的高速缓存将无法容纳全部的目录索引,至少一部分目录索引数据将转移存储到磁盘区域,这可能导致访问一个小文件需进行多次I/O操作,由此大大降低了小文件的访问速率。此外,由于小文件通常还包括用于描述小文件属性信息(如读写次数、访问时间等)的元数据,在存储海量小文件自身数据的同时,必须增加额外的存储空间用于存储这些对用户并非必要的元数据,从而导致存储空间的浪费。
发明内容
为解决上述技术问题,本申请实施例提供了一种海量小文件的存储方法及其相应装置,以减小海量小文件的存储空间,进而提高海量小文件的访问效率。
本申请实施例提供的海量小文件的存储方法包括:
将接收的小文件顺序写入存储基元;
根据小文件在存储基元的起始地址和容量大小确定所述小文件所属的文件组,以及小文件在该文件组内的序号,所述文件组包含至少两个小文件;
以所述文件组的标识号与小文件的序号为索引,建立与小文件的文件名之间的对应关系以实现存储。
优选地,在接收到小文件后,所述方法还包括:根据存储基元的负载信息选择存储基元,将接收的小文件顺序写入到选择的存储基元。
进一步优选地,缓存存储基元的负载信息,则:在接收到小文件后,查询缓存的负载信息以便根据查询结果执行选择步骤。
优选地,所述存储基元包含至少两个存储子基元,存储子基元中的一个为主存储子基元,则:
将接收的小文件顺序写入主存储子基元,并通过主存储子基元的转发将小文件写入到其他存储子基元;
在存储基元的存储子基元均写入成功后,根据小文件在主存储子基元的起始地址和容量大小执行确定文件组及序号的步骤。
本申请实施例提供的海量小文件的存储装置包括:写入单元、确定单元和建立单元,其中:
所述写入单元,用于将接收的小文件顺序写入存储基元;
所述确定单元,用于根据小文件在存储基元的起始地址和容量大小确定所述小文件所属的文件组,以及小文件在该文件组内的序号,所述文件组包含至少两个小文件;
所述建立单元,用于以所述文件组的标识号与小文件的序号为索引,建立与小文件的文件名之间的对应关系以实现存储。
优选地,所述装置还包括选择单元,用于在接收小文件后,根据存储基元的负载信息选择存储基元,则:写入单元将接收的小文件顺序写入到选择的存储基元。
进一步优选地,所述装置还包括缓存单元和查询单元,其中:缓存单元用于缓存存储基元的负载信息,查询单元用于查询缓存的负载信息,则:选择单元根据查询结果选择存储基元。
优选地,所述存储基元包含至少两个存储子基元,存储子基元中的一个为主存储子基元,则:
所述写入单元,用于将接收的小文件顺序写入主存储子基元,并通过主存储子基元的转发将小文件写入到其他存储子基元;
所述确定单元,用于在存储基元的存储子基元均写入成功后,根据小文件在主存储子基元的起始地址和容量大小执行确定文件组及序号。
为解决上述技术问题,本申请实施例提供了一种海量小文件的访问方法及其相应装置,以提高海量小文件的访问效率。
本申请实施例提供的海量小文件的访问方法包括:
接收待访问小文件的文件名;
根据小文件的文件名查询索引表以获取小文件存储的文件组标识号和小文件在该组内的序号,所述索引表以文件组的标识号与小文件在该文件组内的序号为索引,保存有与小文件的文件名之间的对应关系,所述文件组包含至少两个小文件;
根据文件组的起始地址和小文件在该文件组内的序号,获取待访问小文件在存储基元的起始地址和容量大小;
根据待访问小文件的起始地址和容量大小读出小文件以实现访问。
本申请实施例提供的海量小文件的访问装置包括:接收单元、查询单元、获取单元和读出单元,其中:
所述接收单元,用于接收待访问小文件的文件名;
所述查询单元,用于根据小文件的文件名查询索引表以获取小文件存储的文件组标识号和小文件在该组内的序号,所述索引表以文件组的标识号与小文件在该文件组内的序号为索引,保存有与小文件的文件名之间的对应关系,所述文件组包含至少两个小文件;
所述获取单元,用于根据文件组的起始地址和小文件在该文件组内的序号,获取待访问小文件在存储基元的起始地址和容量大小;
所述读出单元,用于根据待访问小文件的起始地址和容量大小读出小文件以实现访问。
本申请实施例将小文件顺序写入存储基元后,根据小文件在存储基元上的起始地址和容量大小确定小所属的文件组和小文件在该组内的序号,然后以文件组的标识号与小文件的序号为索引建立其与小文件文件名之间的对应关系,从而实现存储。与现有技术相比,本申请不再建立小文件的文件名与小文件的起始地址和容量的直接关系,而将多个小文件归并为一个文件组,通过文件组的标识号和小文件在文件组内的序号定位小文件,在海量小文件存储过程中,压缩了小文件的目录索引结构,节约了存储空间。而且,由于目录索引结构占用空间减少,这些目录索引均可存储到高速缓存上,从而减少了访问时的I/O次数,有利于提高小文件的访问速率。此外,由于对海量小文件进行了归并操作,对每个小文件属性信息进行描述的元数据变为对文件组描述的元数据,从而避免了过多浪费存储空间。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例一的海量小文件的存储方法流程图;
图2为图1所述实施例的适用场景框架示意图;
图3为本申请实施例二的海量小文件的访问方法流程图;
图4为本申请实施例三的海量小文件的存储装置结构框图;
图5为本申请实施例四的海量小文件的访问装置结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
参见图1,该图示出了本申请实施例一的海量小文件存储方法的流程。该实施例包括:
步骤S101:将接收的小文件顺序写入存储基元;
存储基元是用于存储数据的一个基本存储单位。根据实际情况的不同,存储基元的范围可大可小,比如存储基元可以指存储系统上的存储服务器,也可以指存储服务器上的一个存储磁盘,还可以指存储服务器的存储磁盘上的存储块。接收待存储的小文件后,可随机选择一个存储基元进行写入操作,也可按照一定的“选择规则”有针对性地选择一个“恰当”的存储基元进行写入操作。这里的“选择规则”可以体现为多种具体形式,比如根据存储基元的存储空间占用情况,选择空闲空间较大的存储基元用于写入小文件,还比如根据存储基元的访问繁忙程度、数据接收处理能力等负载信息,选择一个负载较轻的存储基元用于写入小文件等等,通过这些“选择规则”实现写入的负载均衡。当将存储基元的负载信息作为存储基元的选择决定因素时,为了提高存储基元的选择效率,可另行维护一个高速缓存,该缓存实时地收集各存储基元的负载信息,收集方式可以是存储基元负载发生变化后即主动上报自己的负载情况,也可以由缓存周期性地发起负载询问请求,由存储基元返回自身的负载信息,当有小文件需要写入小文件时,先查询缓存内存储的存储基元的负载情况,根据查询结果选择一个负载较轻的存储基元,作为写入小文件的存储基元。实际应用过程中,可通过DataService(数据管理服务)程序执行写操作。值得注意的是:本实施例在将接收的小文件写入存储基元时以顺序的方式写入,以便后续操作准确获得小文件在文件组内的序号。
步骤S102:根据小文件在存储基元的起始地址和容量大小确定所述小文件所属的文件组,以及小文件在该文件组内的序号,所述文件组包含至少两个小文件;
将小文件写入存储基元,整个小文件的存储过程并未完成,存储的目的在于访问,因此,需要建立访问时的路径。小文件存储到存储基元后,将返回小文件在存储基元上的起始地址和小文件的容量大小,小文件的容量大小可通过对小文件的起始地址和结束地址作差得到,也可通过直接解析小文件得到。获得小文件的起始地址和容量大小后,即可将该起始地址和文件组的预设起始地址和容量大小进行比较,从而确定该小文件存储的文件组的标识号,以及小文件在该文件组内的序号。这里的“文件组”是对多个顺序存储的小文件的统称,它对应一个虚拟的存储空间,它的预设起始地址也是该文件组内的第一个小文件的起始地址,它的结束地址是该文件组内的最后一个小文件的结束地址。
比如,小文件1在存储基元1上占用的地址为1000~1500(为便于说明,这里以十进制表示地址空间),小文件2在存储基元1上占用的地址为1501~1800,小文件3在存储基元1上占用的地址为1801~2000,如果文件组1的预设大小为1000,则该文件组1内包括三个小文件,该文件组的起始地址为第一个小文件(小文件1)的起始地址即1000,其结束地址为第三个小文件(小文件3)的结束地址即2000。在该例中,假设还有文件组2、文件组3,其预设存储空间分别为2001~2600、2601~3000。如果小文件2写入到存储基元1后,通过将其起始地址和容量大小与文件组的起始地址和容量大小进行比较,即可判断小文件2所在的文件组标识号,即小文件2属于文件组1。
同样的道理,可获得小文件在该文件组内的序号,该序号可以直接表现为小文件的起始地址相对于文件组起始地址的偏移量,如本例中小文件2的序号为1501,由于小文件顺序写入存储基元,所以该序号逐步增加,不会发生错乱。此外。小文件的序号也可以编制为连续增长的自然序列,该自然序列与小文件的偏移量存在对应关系。
步骤S103:以所述文件组的标识号与小文件的序号为索引,建立与小文件的文件名之间的对应关系以实现存储。
通过上述步骤得到小文件所属文件组的标识号与小文件在该组内的序号后,即可以“文件组标识号与小文件序号”为索引,建立其与小文件的文件名之间的对应关系。具体的索引可表现为:“文件组标识号+小文件序号”、“小文件序号+文件组标识号”等等。比如,小文件2的所属文件组标识号为1,小文件1在该文件组内的序号为1501,则可建立“11501”与小文件2之间的索引表。如果进行小文件1的访问,先查询该索引表,得到小文件2对应的索引“11501”,第一个数字“1”解析为文件组号,第二串数字“1501”解析为小文件1在文件组内的序号,根据这两个参数即可从存储基元上读取小文件2,从而实现访问过程。构建出“文件组的标识号与小文件的序号”与小文件的文件名之间的索引后,小文件的存储过程结束。
上述实施例的步骤示例了一个小文件的存储过程,当存在海量小文件时,每个小文件均可按照上述步骤进行存储。本实施例将小文件顺序写入存储基元后,根据小文件在存储基元上的起始地址和容量大小确定小所属的文件组和小文件在该组内的序号,然后以文件组的标识号与小文件的序号为索引建立其与小文件文件名之间的对应关系,从而实现存储。与现有技术相比,本实施例至少可取的如下的技术效果:
(1)本实施例由于将多个小文件归并为一个文件组,通过文件组的标识号和小文件在文件组内的序号定位小文件,不再需要如现有技术那样建立小文件的文件名与小文件的起始地址和容量的直接关系,从而在海量小文件存储过程中压缩了小文件的目录索引结构,节约了存储空间。
(2)本实施例由于目录索引结构占用空间减少,这些目录索引均可存储到高速缓存上,访问小文件时仅在高速缓存上即可查询到相应的目录索引,避免了先在缓存查找,如果没有再到磁盘区域查找,从而减少了I/O操作次数,有利于提高小文件的访问速率。
(3)本实施例由于对海量小文件进行了归并操作,对每个小文件属性信息进行描述的元数据变为对文件组描述的元数据,元数据的信息量减少,从而避免了过多浪费存储空间。
上述实施例中存储基元是一个基本的存储单位,接收的小文件数据被写入到一个存储基元,但是,如果仅进行一次写操作、仅写入一个存储基元,当出现设备损坏或数据丢失时,将无法恢复小文件数据,因此,上述实施例的容灾性差、可靠性不强。为解决该技术问题,本实施例的存储基元可包含为多个(至少两个)存储子基元,这些存储子基元可位于一个存储服务器中,也可位于分布式存储系统的不同存储服务器中,当一个存储子基元出现问题时,可通过其他存储子基元实现数据恢复,从而提高可靠性和容灾能力。下面以存储基元包含三个存储子基元为例进行说明:先从三个存储子基元中选择一个存储子基元作为主存储子基元,其他两个作为从存储基元;在接收待存储的小文件后,将小文件顺序写入主存储子基元,然后由主存储子基元转发将小文件写入其他两个存储子基元;在存储基元包含的三个子基元均写入成功后,根据小文件在主存储子基元的起始地址和容量大小执行确定文件组及序号的步骤。这里由主存储子基元来控制两个从存储子基元的写入操作,在所有的存储子基元均写入成功后才进行下一步的操作,其目的在于保持数据存储的强一致性,从而避免恢复错误。
参见图2,该图示出了上述实施例的适用场景的框架。下面结合该图对上述实施例进行进一步说明。该实现小文件存储的框架包括四个模块:clientAPI(客户端应用程序接口),Cache集群(缓存集群),StatusCenter集群(状态中心集群),DataServer集群(数据服务器集群),图中细箭头线为控制流(如clientAPI与Cache集群之间的箭头线),粗箭头线为数据流(如clientAPI与DataServer集群之间的箭头线)。各模块的功能为:
(1)clientAPI。clientAPI是外部应用程序(客户端)和内部存储系统之间的连接模块,其内部封装有API(Application Programming Interface,应用程序编程接口),外部程序通过封装的API实现存储系统的访问。
(2)Cache集群。该模块主要提供缓存服务,可用于缓存存储基元的负载信息,以便通过查询该模块选择用于写入小文件的存储基元,实现各存储基元的负载均衡。
(3)StatusCenter集群。该模块是基于Zookeeper开源组件进行二次开发得到的模块,在本架构中主要承担着下面职责:维护存储基元的强一致性;提供分布式锁服务;提供DataServer集群内一个存储基元的多个备份之间Master/Slave角色的切换和通知。该模块通常包括两个子模块:NameService服务(名称服务)和AdminService服务(管理服务),前者负责与ClientAPI通信,后者根据存储系统的一致性对DataServer集群实现管理服务。
(4)DataServer集群。该模块是真正存储数据的集群,对于每个DataServer可由一个存储磁盘提供服务,也可由多个磁盘提供存储服务,这些磁盘可位于一个存储服务器中,也可位于分布式存储系统中的多个存储服务器中。存储基元在本框架中对应一个Group组(本框架图中示出了三个Group),一个Group组包含三个DataService,每个DataService对应一个存储子基元(用于向存储子基元提供服务)。Group组内的一个DataService为Master,对应主存储子基元,另两个DataService为Slave,对应从存储子基元。
在上述架构之下,实现本申请实施例的大致流程为:clientAPI接收到应用程序发送来的小文件后,查询Cache集群了解Group组的负载情况,然后根据负载均衡算法选择一个负载较轻的Group组,通过StatusCenter集群的AdminService服务以及选定的Group组对应主存储子基元的Master DataService服务,将小文件顺序写入选定Group组的主存储子基元上,完成主存储子基元写入操作的同时,向两个从存储子基元转发小文件,两个从存储子基元在各自对应的Slave DataService服务下完成写入操作。当三个DataService均写入成功后,根据小文件在主存储子基元的起始地址和容量大小确定小文件所属的文件组和小文件在该文件组内的序号。本框架下,文件组称为Block,文件组号由BlockID标识,BlockID可自增长,由StatusCenter集群统一分配,小文件序号由FileID标识。在确定好BlockID和小文件的FileID后,向clientAPI返回BlockID+FileID,建立小文件的文件名与BlockID+FileID的对应关系,建立好的对应关系(索引表)可存储在clientAPI内,也可存储到Cache集群内。
本框架下,可先自动分配第一个BlockID号,当多个小文件顺序写入存储基元达到BlockID的预设容量后,申请下一个新的BlockID,接收后续小文件的存储。FileID在一个Block内可自0顺序增长,也可直接将小文件相对于Block的起始地址的偏移量作为其编号。本框架的架构简单、易于实现,通过缓存极大减少了StatusCenter的压力,将负载均衡的决策交由clientAPI完成,既让整个系统提供分布式一致性服务,又不至于使StatusCenter成为系统的瓶颈。此外,本架构中的DataService采用面向对象的存储思想,提高了海量小文件在文件系统中存储与访问的性能。
上述内容以详细介绍了本申请的海量小文件存储方法的实施例。与之对应的,本申请还提供了海量小文件的访问方法实施例。参见附图3,该图示出了本申请实施例二的海量小文件访问方法的流程。本实施例包括:
步骤S301:接收待访问小文件的文件名;
对于已经存储到存储基元的小文件,如果需要对文件进行访问,需提供小文件的文件名,以便根据该文件名在存储系统中找到小文件的存储位置,进而进行读取,实现访问。
步骤S302:根据小文件的文件名查询索引表以获取小文件存储的文件组标识号和小文件在该组内的序号,所述索引表以文件组的标识号与小文件在该文件组内的序号为索引,保存有与小文件的文件名之间的对应关系,所述文件组包含至少两个小文件;
接收小文件的文件名后,查询索引表,以获取小文件存储的文件组标识号和小文件组内的序号。此处的“索引表”在存储小文件时已经建立,其建立索引表时是以文件组的标识号与小文件在该文件组内的序号为索引,保存的与小文件的文件名之间的对应关系,因此通过查询该索引表,即可获得该小文件对应的在存储系统内的文件组标识号和组内序号。
步骤S303:根据文件组的起始地址和小文件在该文件组内的序号,获取待访问小文件在存储基元的起始地址和容量大小;
获得文件组的标识号后,即可根据文件组的预设起始地址找到该文件组,然后根据小文件在该文件组内的序号,如果该序号直接为小文件在文件组内的偏移量,则可直接获得小文件在存储基元上的起始地址和容量大小,如果该序号是按序增长的自然序列,则需要根据存储时建立的序号与偏移量对应关系进行一个简单转换,从而获得小文件在文件组内的偏移量。
步骤S304:根据待访问小文件的起始地址和容量大小读出小文件以实现访问。
获得小文件的起始地址和容量大小后,即可定位到存储基元上的小文件起始地址,逐序读取数据,直至读取的数据容量为小文件容量大小时停止,返回读取的小文件数据从而实现小文件的访问。
本实施例在接收到小文件的文件名后,通过存储时建立的小文件名与“文件组标识号与小文件在文件组内的序号”的对应关系,解析出小文件存储的文件组和组内序号,然后根据文件组号和组内序号获得小文件的起始地址和容量,由此实现访问。与现有技术相比,由于多个小文件被归并为一个大的文件组,小文件的文件名与小文件存储地址之间对应的庞大目录索引结构变成“文件名与文件组和组内序号”之间的简单目录索引结构,且这些目录索引结构均存储于高速缓存之中,查询目录结构的时间减少,从而提高了海量小文件的访问速率。
上述叙述内容均是对本申请方法实施例的描述,相应地,本申请实施例还提供了海量小文件的存储装置和海量小文件的访问装置。参见附图4,该图示出了本申请实施例三的海量小文件存储装置的结构框架。该装置实施例400包括:写入单元401、确定单元402和建立单元403,其中:
所述写入单元401,用于将接收的小文件顺序写入存储基元;
所述确定单元402,用于根据小文件在存储基元的起始地址和容量大小确定所述小文件所属的文件组,以及小文件在该文件组内的序号,所述文件组包含至少两个小文件;
所述建立单元403,用于以所述文件组的标识号与小文件的序号为索引,建立与小文件的文件名之间的对应关系以实现存储。
本装置实施例400的工作过程是:写入单元401将接收的小文件顺序写入存储基元,然后由确定单元402根据小文件在存储基元的起始地址和容量大小确定小文件所属的文件组以及小文件在该文件组内的序号,最后建立单元403以所述文件组的标识号与小文件的序号为索引,建立与小文件的文件名之间的对应关系以实现存储。
本装置实施例400将小文件顺序写入存储基元后,根据小文件在存储基元上的起始地址和容量大小确定小所属的文件组和小文件在该组内的序号,然后以文件组的标识号与小文件的序号为索引建立其与小文件文件名之间的对应关系,从而实现存储。与现有技术相比,本装置实施例不再建立小文件的文件名与小文件的起始地址和容量的直接关系,而将多个小文件归并为一个文件组,通过文件组的标识号和小文件在文件组内的序号定位小文件,在海量小文件存储过程中,压缩了小文件的目录索引结构,节约了存储空间。而且,由于目录索引结构占用空间减少,这些目录索引均可存储到高速缓存上,从而减少了访问时的I/O次数,有利于提高小文件的访问速率。此外,由于对海量小文件进行了归并操作,对每个小文件属性信息进行描述的元数据变为对文件组描述的元数据,从而避免了过多浪费存储空间。
上述装置实施例400还可以包括选择单元404,用于在接收小文件后,根据存储基元的负载信息选择存储基元。增加选择单元404后,写入单元401将接收的小文件顺序写入到选择单元404选择的存储基元。本装置实施例进一步还可以包括缓存单元405和查询单元406,缓存单元405用于缓存存储基元的负载信息,查询单元406用于查询缓存的负载信息,增加这两个单元后,选择单元404则根据查询单元的查询结果选择存储单元。本装置实施例通过增加选择单元可实现存储基元的均衡写入,保持各存储基元的负载平衡,通过缓存单元和查询单元可事先进行存储基元的负载信息的收集,避免在接收到小文件的当时进行负载信息的收集,从而节约时间,有利于提高存储和访问效率。
上述装置实施例400的存储基元还可以包括多个存储子基元,其中一个存储子基元作为主存储子基元,这样写入单元将接收的小文件顺序写入主存储子基元时,还通过主存储子基元的转发将小文件写入到其他存储子基元,确定单元在存储基元的存储子基元均写入成功后,根据小文件在主存储子基元的起始地址和容量大小执行确定文件组及序号。通过对存储基元的划分可增加存储系统的可靠性和容灾能力,当一个存储子基元的数据出现丢失或设备坏损时,可通过拷贝其他存储子基元的数据实现数据恢复。
参见附图5,该图示出了本申请实施例四的海量小文件访问装置结构框架。该装置实施例500包括:接收单元501、检索单元502、获取单元503和读出单元504,其中:
所述接收单元501,用于接收待访问小文件的文件名;
所述检索单元502,用于根据小文件的文件名检索索引表以获取小文件存储的文件组标识号和小文件在该组内的序号,所述索引表以文件组的标识号与小文件在该文件组内的序号为索引,保存有与小文件的文件名之间的对应关系,所述文件组包含至少两个小文件;
所述获取单元503,用于根据文件组的起始地址和小文件在该文件组内的序号,获取待访问小文件在存储基元的起始地址和容量大小;
所述读出单元504,用于根据待访问小文件的起始地址和容量大小读出小文件以实现访问。
本装置实施例500的工作过程是:接收单元501接收待访问小文件的文件名后,由检索单元502根据小文件的文件名检索索引表以获取小文件存储的文件组标识号和小文件在该组内的序号,然后获取单元503根据文件组的起始地址和小文件在该文件组内的序号,获取待访问小文件在存储基元的起始地址和容量大小;读出单元504根据待访问小文件的起始地址和容量大小读出小文件以实现访问。关于本装置实施例500取得的技术效果可参见方法部分的描述,为避免重复,这里不再赘言。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本申请可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
以上所述仅是本申请的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种海量小文件的存储方法,其特征在于,所述方法包括:
将接收的小文件以顺序的方式写入存储基元;
根据小文件在存储基元的起始地址和容量大小确定所述小文件所属的文件组,以及小文件在该文件组内的序号,所述文件组包含至少两个顺序存储的小文件;
以所述文件组的标识号与小文件的序号为索引,建立与小文件的文件名之间的对应关系以实现存储。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:在接收到小文件后,根据存储基元的负载信息选择存储基元,将接收的小文件顺序写入到选择的存储基元。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:缓存存储基元的负载信息,则:在接收到小文件后,查询缓存的负载信息以便根据查询结果执行选择步骤。
4.根据权利要求1至3中任何一项所述的方法,其特征在于,所述存储基元包含至少两个存储子基元,存储子基元中的一个为主存储子基元,则:
将接收的小文件顺序写入主存储子基元,并通过主存储子基元的转发将小文件写入到其他存储子基元;
在存储基元的存储子基元均写入成功后,根据小文件在主存储子基元的起始地址和容量大小执行确定文件组及序号的步骤。
5.一种海量小文件的存储装置,其特征在于,该装置包括:写入单元、确定单元和建立单元,其中:
所述写入单元,用于将接收的小文件以顺序的方式写入存储基元;
所述确定单元,用于根据小文件在存储基元的起始地址和容量大小确定所述小文件所属的文件组,以及小文件在该文件组内的序号,所述文件组包含至少两个顺序存储的小文件;
所述建立单元,用于以所述文件组的标识号与小文件的序号为索引,建立与小文件的文件名之间的对应关系以实现存储。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:选择单元,用于在接收小文件后,根据存储基元的负载信息选择存储基元,则:
写入单元将接收的小文件顺序写入到选择的存储基元。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:缓存单元和查询单元,其中:缓存单元用于缓存存储基元的负载信息,查询单元用于查询缓存的负载信息,则:
选择单元根据查询结果选择存储基元。
8.根据权利要求5至7中任何一项所述的装置,其特征在于,所述存储基元包含至少两个存储子基元,存储子基元中的一个为主存储子基元,则:
所述写入单元,用于将接收的小文件以顺序的方式写入主存储子基元,并通过主存储子基元的转发将小文件写入到其他存储子基元;
所述确定单元,用于在存储基元的存储子基元均写入成功后,根据小文件在主存储子基元的起始地址和容量大小执行确定文件组及序号。
9.一种海量小文件的访问方法,其特征在于,该方法包括:
接收待访问小文件的文件名;
根据小文件的文件名查询索引表以获取小文件存储的文件组标识号和小文件在该组内的序号,所述索引表以文件组的标识号与小文件在该文件组内的序号为索引,保存有与小文件的文件名之间的对应关系,所述文件组包含至少两个顺序存储的小文件;
根据文件组的起始地址和小文件在该文件组内的序号,获取待访问小文件在存储基元的起始地址和容量大小;
根据待访问小文件的起始地址和容量大小读出小文件以实现访问。
10.一种海量小文件的访问装置,其特征在于,该装置包括:接收单元、检索单元、获取单元和读出单元,其中:
所述接收单元,用于接收待访问小文件的文件名;
所述检索单元,用于根据小文件的文件名检索索引表以获取小文件存储的文件组标识号和小文件在该组内的序号,所述索引表以文件组的标识号与小文件在该文件组内的序号为索引,保存有与小文件的文件名之间的对应关系,所述文件组包含至少两个顺序存储的小文件;
所述获取单元,用于根据文件组的起始地址和小文件在该文件组内的序号,获取待访问小文件在存储基元的起始地址和容量大小;
所述读出单元,用于根据待访问小文件的起始地址和容量大小读出小文件以实现访问。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210067404.3A CN102662992B (zh) | 2012-03-14 | 2012-03-14 | 一种海量小文件的存储、访问方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210067404.3A CN102662992B (zh) | 2012-03-14 | 2012-03-14 | 一种海量小文件的存储、访问方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102662992A CN102662992A (zh) | 2012-09-12 |
CN102662992B true CN102662992B (zh) | 2014-10-08 |
Family
ID=46772483
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210067404.3A Expired - Fee Related CN102662992B (zh) | 2012-03-14 | 2012-03-14 | 一种海量小文件的存储、访问方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102662992B (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102968498B (zh) * | 2012-12-05 | 2016-08-10 | 华为技术有限公司 | 数据处理方法及装置 |
CN103078805B (zh) * | 2012-12-31 | 2015-08-05 | 北京京东世纪贸易有限公司 | 使Zookeeper的读性能支持水平扩展的系统和方法 |
CN103246700B (zh) * | 2013-04-01 | 2016-08-10 | 厦门市美亚柏科信息股份有限公司 | 基于HBase的海量小文件低延时存储方法 |
CN107577614B (zh) * | 2013-06-29 | 2020-10-16 | 华为技术有限公司 | 数据写入方法及内存系统 |
CN110071986A (zh) * | 2013-08-14 | 2019-07-30 | 阿里巴巴集团控股有限公司 | 一种用于域名解析的系统 |
CN103559229A (zh) * | 2013-10-22 | 2014-02-05 | 西安电子科技大学 | 基于MapFile的小文件管理服务SFMS系统及其使用方法 |
CN103605726B (zh) * | 2013-11-15 | 2017-11-14 | 中安消技术有限公司 | 一种小文件的存取方法、系统及控制节点和存储节点 |
CN103810114A (zh) * | 2014-03-07 | 2014-05-21 | 华为技术有限公司 | 分配存储空间的方法及装置 |
CN104462585A (zh) * | 2014-12-29 | 2015-03-25 | 芜湖乐锐思信息咨询有限公司 | 一种大数据分类系统 |
CN104462584A (zh) * | 2014-12-29 | 2015-03-25 | 芜湖乐锐思信息咨询有限公司 | 一种大数据存储系统 |
CN104765876B (zh) * | 2015-04-24 | 2017-11-10 | 中国人民解放军信息工程大学 | 海量gnss小文件云存储方法 |
CN106294353A (zh) * | 2015-05-14 | 2017-01-04 | 中国移动通信集团福建有限公司 | 信息处理方法及装置 |
CN104820714B (zh) * | 2015-05-20 | 2018-02-09 | 国家电网公司 | 基于hadoop的海量瓦片小文件存储管理方法 |
CN105302912B (zh) * | 2015-11-11 | 2018-06-29 | 中国联合网络通信集团有限公司 | 一种数据存储方法及设备 |
CN106294603B (zh) * | 2016-07-29 | 2019-07-23 | 北京奇虎科技有限公司 | 文件存储方法及装置 |
CN109922117B (zh) * | 2017-12-13 | 2022-06-14 | 浙江宇视科技有限公司 | 图片读取方法、装置及计算机可读存储介质 |
CN109101598A (zh) * | 2018-07-31 | 2018-12-28 | 成都华栖云科技有限公司 | 一种小图片页面渲染方法 |
CN110083306A (zh) * | 2019-03-14 | 2019-08-02 | 南京时沃信息科技有限公司 | 一种分布式对象存储系统及存储方法 |
CN110633052B (zh) * | 2019-09-05 | 2023-09-19 | 北京达佳互联信息技术有限公司 | 一种存储嵌入参数的方法及装置 |
CN111125019A (zh) * | 2019-12-20 | 2020-05-08 | 北京无线电测量研究所 | 文件检索方法、写入方法、系统、fpga芯片及装置 |
CN113176857A (zh) * | 2021-04-30 | 2021-07-27 | 康键信息技术(深圳)有限公司 | 海量小文件存取优化方法、装置、设备及存储介质 |
CN114020216B (zh) * | 2021-11-03 | 2024-03-08 | 南京中孚信息技术有限公司 | 一种提升小容量文件落盘速度的方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101398869A (zh) * | 2008-10-07 | 2009-04-01 | 深圳市蓝韵实业有限公司 | 一种海量数据存储方法 |
CN102332029A (zh) * | 2011-10-15 | 2012-01-25 | 西安交通大学 | 一种基于Hadoop的海量可归类小文件关联存储方法 |
CN102339318A (zh) * | 2011-10-24 | 2012-02-01 | Tcl集团股份有限公司 | 一种文件系统管理方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102364474B (zh) * | 2011-11-17 | 2014-08-20 | 中国科学院计算技术研究所 | 用于机群文件系统的元数据存储系统和管理方法 |
-
2012
- 2012-03-14 CN CN201210067404.3A patent/CN102662992B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101398869A (zh) * | 2008-10-07 | 2009-04-01 | 深圳市蓝韵实业有限公司 | 一种海量数据存储方法 |
CN102332029A (zh) * | 2011-10-15 | 2012-01-25 | 西安交通大学 | 一种基于Hadoop的海量可归类小文件关联存储方法 |
CN102339318A (zh) * | 2011-10-24 | 2012-02-01 | Tcl集团股份有限公司 | 一种文件系统管理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN102662992A (zh) | 2012-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102662992B (zh) | 一种海量小文件的存储、访问方法及装置 | |
US10387673B2 (en) | Fully managed account level blob data encryption in a distributed storage environment | |
CN107533551B (zh) | 数据块级别的大数据统计 | |
CN105242881B (zh) | 分布式存储系统及其数据读写方法 | |
CN106407040B (zh) | 一种远程数据复制方法及系统 | |
US11301154B2 (en) | Distributed storage method and device | |
CN105324770B (zh) | 有效读出副本 | |
US10659225B2 (en) | Encrypting existing live unencrypted data using age-based garbage collection | |
CN101777016B (zh) | 一种连续数据保护系统的快照存储和数据恢复方法 | |
CN103116661B (zh) | 一种数据库的数据处理方法 | |
US9547706B2 (en) | Using colocation hints to facilitate accessing a distributed data storage system | |
US9684702B2 (en) | Database redistribution utilizing virtual partitions | |
JP5330503B2 (ja) | ストレージ性能の最適化 | |
CN106021381A (zh) | 一种云存储服务系统的数据访问/存储方法及装置 | |
US8380663B2 (en) | Data integrity in a database environment through background synchronization | |
CN112559637B (zh) | 基于分布式存储的数据处理方法、装置、设备以及介质 | |
CN103037004A (zh) | 云存储系统操作的实现方法和装置 | |
CN103501319A (zh) | 一种低延迟的面向小文件的分布式存储系统 | |
CN101916290A (zh) | 内存数据库的管理方法和装置 | |
US10817325B2 (en) | Moving storage volumes for improved performance | |
US10642530B2 (en) | Global occupancy aggregator for global garbage collection scheduling | |
CN110532123A (zh) | HBase系统的故障转移方法及装置 | |
CN105677252B (zh) | 读数据的方法、数据处理方法及相关存储设备 | |
CN103473258A (zh) | 云存储文件系统 | |
CN113806300A (zh) | 数据存储方法、系统、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder |
Address after: 100086 12, 1201, 3 building, 2 South Road, Haidian District Academy of Sciences, Beijing. Patentee after: BEIJING SOHU NEW MEDIA INFORMATION TECHNOLOGY Co.,Ltd. Address before: 100084 Beijing Haidian District Zhongguancun East Road 1 hospital 9 building Sohu cyber Building 8 floor 802 room. Patentee before: BEIJING SOHU NEW MEDIA INFORMATION TECHNOLOGY Co.,Ltd. |
|
CP02 | Change in the address of a patent holder | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20141008 |
|
CF01 | Termination of patent right due to non-payment of annual fee |