一种海量文件的存储方法及系统的制作方法

文档序号:6557115阅读:124来源:国知局
专利名称:一种海量文件的存储方法及系统的制作方法
技术领域
本发明属于数据处理领域,尤其涉及一种海量文件的存储方法及系统。
背景技术
文件系统(File System,FS)是操作系统(Operating System,OS)的一部分,用于管理各种系统文件和用户文件。随着分布式技术的发展,以及海量数据存储的需求(例如Web搜索引擎、海量用户资料存储、大型Web网站等),产生了分布式文件系统。
分布式文件系统将文件存储在一个或多个文件服务器上,一般不在客户机上冗余存储,客户机可以像访问本地普通文件一样访问,且文件可被大量客户机并发使用。简言之,分布式文件系统是物理上分布、逻辑上集中统一的一种文件管理系统。分布式文件系统的优点在于对于海量数据存储,只需要在文件服务器上提供海量的存储空间即可,每个客户机不再需要大量的磁盘空间;分布式文件系统可以很容易实现文档的共享操作,对系统的管理相对简单。评估一个分布式文件系统的设计指标主要包括以下六个方面各种情景下,文件读写的吞吐量以及延迟;磁盘存储利用率;可靠性以及可用性指标;数据一致性指标;安全性指标;可移植性、可维护性。
现有的分布式文件系统中,典型的有Google文件系统(Google File System,GFS)。GFS中包括一台主控机(Master),多个数据块服务器(Chunk Server)。主控机中存储了三种重要的元数据文件和数据块的命名空间、文件到数据块的映射表、数据块及其备份的位置信息。为了提高文件存储的可靠性,GFS一般将同一份数据存储在三个不同的主机上,因此每一个数据块就有两个分布在其他主机上的备份。关于GFS的详细内容,可参考以下文献余一娇所著的《Google LinuxCluster的系统结构分析》;Chris Mellor所著的《Google’s Storage Strategy》,可在http://www.techworld.com搜索查阅;以及《Google′s cluster》,可在http://www.beowulf.org搜索查阅。
现有技术的文件系统能够实现海量文件存储,但是搜索引擎对文件系统中的文件进行读写等各项操作时,其执行效率仍有待改进。

发明内容
本发明的目的在于提供一种海量文件存储方法,旨在解决搜索引擎对文件系统中的海量文件进行读写等操作时执行效率低的问题。
本发明的另一目的在于提供一种海量文件存储系统,以更好地解决上述问题。
为了实现发明目的,所述方法包括以下步骤将所述海量文件的文件相关控制信息组织成以文件对象为存储单元连接起来的第一层链表;将所述海量文件的数据块相关控制信息组织成以数据块对象为存储单元连接起来的第二层链表;将所述海量文件的文件服务器相关控制信息组织成以文件服务器对象为存储单元连接起来的第三层链表;所述第一层链表、第二层链表和第三层链表以层递的形式关联为三层链表式数据存储结构,与所述海量文件的数据块形成映射关系。
所述三层链表式数据存储结构内部采用数组下标进行连接。
所述方法在所有步骤之前还包括以下步骤初始化所述三层链表式数据存储结构中的空闲链,以及第一层链表的根节点。
为了更好地实现发明目的,所述系统包括所述海量文件的存储系统,包括控制服务器子系统、文件服务器子系统和客户机子系统,所述控制服务器子系统中包括控制服务器,所述文件服务器子系统中包括文件服务器,用于存储和维护所述海量文件的数据块,所述客户机子系统中包括客户机,所述控制服务器接收所述文件服务器上报的状态信息,并根据所述客户机上应用程序执行的操作对所述文件服务器发送控制指令,其特征在于,所述控制服务器包括数据管理模块,用于存储和维护所述海量文件的数据存储结构;所述海量文件的数据存储结构为三层链表式数据存储结构,包括文件对象链表、数据块对象链表和文件服务器对象链表,与所述文件服务器中存储的数据块形成映射关系。
所述系统进一步包括公共平台,用于实现以下功能线程和线程池管理、互联网进程连接管理、定时器管理、加锁解锁管理、缓存管理;所述公共平台存在于控制服务器、文件服务器和客户机的任何一者或多者之中或独立存在。
所述控制服务器进一步包括日志管理模块、备份管理模块;所述日志管理模块用于进行日志管理,其接收所述数据管理模块和备份管理模块上报的消息,并上报消息给公共平台;所述备份管理模块用于进行主备控制服务器之间的心跳维护和故障恢复,其上报消息给日志管理模块及公共平台。
所述控制服务器为双机备份,包括主用控制服务器和备用控制服务器。
所述文件服务器进一步包括文件服务器数据块管理模块、文件服务器心跳管理模块;所述文件服务器数据块管理模块用于对文件服务器上的数据进行存储和维护,其接收所述文件服务器心跳管理模块上报的消息,并上报消息给公共平台;所述文件服务器心跳管理模块用于文件服务器的心跳管理和故障恢复,其上报消息给所述文件服务器数据块管理模块以及公共平台。
所述文件服务器为多机备份。
所述客户机进一步包括客户机文件描述符管理模块、客户机应用编程接口模块;所述客户机文件描述符管理模块用于执行文件相关操作,其接收客户机应用编程接口模块提供的接口封装,并上报消息给公共平台;所述客户机应用编程接口模块用于为所述客户机上的应用程序提供接口封装。
所述文件存储系统采取双平面备份的组网结构所述控制服务器和文件服务器均配置有绑定为负载均衡模式的双网卡,与每个平面的核心交换机相连。
本发明通过构建一个海量文件存储系统,并在该系统中采用特殊的海量文件存储方法,从而在实现海量文件存储的同时提高了搜索引擎对海量文件进行读写等各项操作的执行效率。


图1是本发明中海量文件的数据存储结构图;图2是本发明中海量文件存储系统的结构图;图3是本发明中海量文件存储系统的组网结构图;图4是本发明的海量文件存储系统中控制服务器的内部结构图;
图5是本发明的海量文件存储系统中文件服务器的内部结构图;图6是本发明的海量文件存储系统中客户机的内部结构图。
具体实施例方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明的文件系统基于现有OS(如Windows/Linux)的文件系统FS,在服务器中增加与文件、数据块管理相关的功能模块,构建了一个海量文件存储系统,进行文件的存储、维护,同时采用独特的数据结构作为文件的存储方法,从而在实现海量文件存储的同时保证了搜索引擎对该文件系统中的海量文件进行各项操作的执行效率。
图1示出了本发明中海量文件的数据存储结构。该数据存储结构是指在海量文件存储系统(一般包括控制服务器、文件服务器和客户机)中由控制服务器存储并维护的控制信息,主要由文件节点、数据块节点和文件服务器节点三种文件信息对象组成,因此可组成如图1所示的由文件对象链表、数据块(chunk)对象链表和文件服务器对象链表组成的三层链表式数据存储结构。该三层链表式数据存储结构与所述文件服务器中存储的数据块形成映射关系,则当客户机上的应用程序发起针对某个文件的某种操作时,首先发送请求给控制服务器,控制服务器根据该三层链表式数据存储结构与文件服务器中数据块的映射关系,在文件服务器中查找到对应文件的数据块,最后客户机直接访问文件服务器中存储的数据,并执行各项操作。
为了满足大容量存储,本发明把所有文件服务器上的存储空间划分为一个线性的数据块空间,每一个数据块的粒度为64兆,例如在系统中需要存储一个256兆的文件,则至少需要4个数据块,每个数据块中存放64兆的数据。与此对应的,所有数据块相关的控制信息则以数据块对象为存储单元在控制服务器中存储,也即,每个数据块对象中包含与该数据块相关的所有控制信息,如读写锁、数据块属性、文件ID(Identification)、数据块ID、相邻的下一个数据块ID、版本信息、本数据块中存放的数据在文件中的偏移、数据块的容量、实际使用的空间、数据备份数量、读写调度标示、存储备份数据的文件服务器列表等。控制服务器中的所有这些数据块对象连接成一个静态链表,即数据块对象链表。
与此类似,文件相关的控制信息则被组织成由所有文件对象连接起来的一个静态链表,即文件对象链表。其中每个文件对象中包含与该文件相关的所有控制信息,如读写锁、文件名称、文件属性、复制系数、访问客户数、文件ID、存储开始位置(数据块ID)、存储结束位置(数据块ID)等。
同样地,文件服务器相关的控制信息被组织成由所有文件对象连接起来的一个静态链表,即文件服务器对象链表。
出于备份的考虑,这些链表采用数组的下标而非指针进行连接,这样不会因为指针失效导致备份和存储失效。如文件对象链表中,其中一个文件指向下一个文件ID,所述文件ID即文件对象链表中的数组下标,其他链表与此类似。
在具体实现上,本发明的海量文件存储方法包括以下步骤首先,控制服务器在第一次运行时初始化以上所述的三个链表的空闲链,即申请了所有文件节点、数据块节点和文件服务器节点的内存,然后放入空闲链,同时初始化文件对象链表中的根节点。使用时从空闲链申请一个,释放时放回空闲链。之后控制服务器的每次启动,都首先利用检验点在内存中重建上述的文件信息链表,通过上述链表进行各种操作,快速有效。
在完成初始化之后,则将海量文件的文件相关控制信息组织成以文件对象为存储单元连接起来的第一层链表;将海量文件的数据块相关控制信息组织成以数据块对象为存储单元连接起来的第二层链表;将海量文件的文件服务器相关控制信息组织成以文件服务器对象为存储单元连接起来的第三层链表;这样,第一层链表、第二层链表和第三层链表以层递的形式关联为三层链表式数据存储结构,与所述海量文件的数据块形成映射关系。
正是由于本发明采取了上述的三层链表式的数据存储结构对海量文件进行存储,才在实现海量文件存储的同时,保证了搜索引擎等对本发明的海量文件进行各种操作(如搜索、读写等)时的执行效率。
图2示出了本发明中海量文件存储系统的结构,该系统包括三个子系统,即控制服务器(Control Server)子系统100、文件服务器(File Server)子系统200以及客户机(Client)子系统300。该海量文件存储系统在组网结构上为双平面备份,图3示出了其组网结构。其中,每台服务器(包括主用控制服务器101、备用控制服务器102,以及文件服务器201、文件服务器202、文件服务器203等)都配置双网卡,分别连接到每个平面的核心交换机上,由此可避免因核心交换机发生故障而导致的网络彻底中断。该双网卡绑定为负载均衡模式,用以提供负载均衡能力,可以提供更高的网络带宽,且这一冗余机制对应用程序是完全透明的,所述负载均衡模式可通过操作系统进行设置。本发明将双平面备份的组网技术运用到海量文件存储系统,增强了其应用于搜索引擎时的执行效率以及故障恢复能力。
以下将对这三个子系统进行详细阐述为增强可靠性,控制服务器子系统100采用多机备份的形式,本发明的一个实施例中采用了双机备份的形式,即包括主用控制服务器101和备用控制服务器102,两台控制服务器的内部结构相同。控制服务器可接收文件服务器子系统200上报的状态信息并发出相应的控制指令,并可与客户机子系统300进行信息交互。
图4示出了以主用控制服务器101为例的内部结构,其包括如下功能模块数据管理模块1011、日志管理模块1012、备份管理模块1013、公共平台1014。其中,数据管理模块1011包括文件及数据块管理模块10111、文件服务器管理模块10112。文件及数据块管理模块10111连接文件服务器管理模块10112,共同存储和维护三层链表式数据存储结构,并将其上的文件及数据块管理情况上报给日志管理模块1012,且与公共平台进行信息交互;文件服务器管理模块10112用于管理文件服务器的相关控制信息,即文件服务器对象链表,并与文件及数据块管理模块10111,且与公共平台进行信息交互;日志管理模块1012用于实现日志管理中包括的所有功能,包括记录、存储、修改日志等操作,其接收文件及数据块管理模块10111上报的管理情况,并与公共平台进行信息交互;备份管理模块1013用于实现主备控制服务器之间的心跳维护和故障恢复等,并将相关管理情况上报给日志管理模块1012,且与公共平台进行信息交互;公共平台1014用于实现线程和线程池管理、进程间通信(Interprocess Communication,IPC)、定时器管理、加锁解锁管理、缓存管理等,与主用控制服务器101中的其他所有模块均进行信息交互,控制各个模块的运作,是各个子系统的公用模块,所以公共平台1014可存在于控制服务器子系统100中,也可以存在于其他子系统中,或者独立存在于本发明的海量文件存储系统中。需要说明的是,控制服务器中的上述模块是本发明的海量文件存储系统为满足搜索引擎对海量文件进行搜索而设计的模块,但并不限定为上述模块,若为实现搜索引擎的更多需求,可在此基础上进行相关功能模块的扩展。
为增强可靠性,文件服务器子系统200采用多机备份的形式,本发明的一个实施例中可采用三台文件服务器作为备份,即包括文件服务器201、包括文件服务器202、包括文件服务器203,其内部结构相同,均对客户机完全透明。文件服务器子系统200可与客户机子系统300进行信息交互,可向控制服务器子系统100上报状态信息并接收控制服务器子系统100下发的控制指令。
图5示出了以文件服务器201为例的内部结构,其包括以下功能模块文件服务器数据块管理模块2011、文件服务器心跳管理模块2012、文件服务器公共平台2013。文件服务器数据块管理模块2011用于存储和维护数据块,其接收文件服务器心跳管理模块2012上报的管理情况,并向文件服务器公共平台2013上报消息;文件服务器心跳管理模块2012用于文件服务器子系统200的心跳管理和故障恢复,其上报消息给文件服务器数据块管理模块2011和文件服务器公共平台2013;文件服务器公共平台2013与控制服务器子系统100中的公共平台1014一样,是各个子系统的公用模块。与控制服务器类似,文件服务器中的上述模块是本发明的海量文件存储系统为满足搜索引擎对海量文件进行搜索而设计的模块,但并不限定为上述模块,若为实现搜索引擎的更多需求,可在此基础上进行相关功能模块的扩展。
客户机子系统300提供应用编程接口(Application Programming Interface,API),与控制服务器子系统100和文件服务器子系统200进行信息交互。客户机子系统300可能包含很多个客户机,如客户机301等,每个客户机上运行有应用软件,如搜索引擎等。
图6示出了以客户机301为例的内部结构,其包括以下功能模块客户机文件描述符管理模块30111、客户机应用编程接口模块3012、公共平台3013。客户机文件描述符管理模块3011用于实现客户机301和文件相关的所有功能,例如对文件的搜索、读写等,其接收客户机应用编程接口模块3012提供的接口封装,并向公共平台3013上报消息。客户机应用编程接口模块3012用于为搜索引擎应用程序(如搜索引擎应用程序)提供接口封装;公共平台3013与控制服务器子系统100中的公共平台1014一样,是各个子系统的公用模块。与控制服务器类似,客户机中的上述模块是本发明的海量文件存储系统为满足搜索引擎对海量文件进行搜索而设计的模块,但并不限定为上述模块,若为实现搜索引擎的更多需求,可在此基础上进行相关功能模块的扩展。
综上所述,本发明的海量文件存储系统中各个子系统协调运作,可以满足海量文件的存储要求,同时由于采用了三层链表式数据存储结构,以及在双平面备份的组网结构中采用负载均衡式的网卡绑定方法等,在执行效率上也优于现有技术。本发明的一个实施例中,系统在100兆环境下测试,并发写效率为4兆比特/秒(Mega Bytes,MB/s),单机写效率为6MB/s;并发读效率10MB/s,单机读效率为10MB/s。这样的执行效率是现有技术所达不到的。除此之外,由于采用服务器的多机备份,文件服务的可靠性方面也得到了改善。
应当指出的是,本发明所述的海量文件存储方法及系统并不仅限于应用在搜索引擎,还可应用在其他各种场景中,例如本发明的文件存储系统QFS还可用于构建其他海量数据系统,作为其数据存储子系统。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种海量文件的存储方法,所述海量文件存储在多个文件服务器中,其对应的文件相关控制信息、数据块相关控制信息、文件服务器相关控制信息则存储在控制服务器,其特征在于,所述方法包括以下步骤将所述海量文件的文件相关控制信息组织成以文件对象为存储单元连接起来的第一层链表;将所述海量文件的数据块相关控制信息组织成以数据块对象为存储单元连接起来的第二层链表;将所述海量文件的文件服务器相关控制信息组织成以文件服务器对象为存储单元连接起来的第三层链表;所述第一层链表、第二层链表和第三层链表以层递的形式关联为三层链表式数据存储结构,与所述海量文件的数据块形成映射关系。
2.如权利要求1所述的海量文件的存储方法,其特征在于,所述三层链表式数据存储结构内部采用数组下标进行连接。
3.如权利要求1所述的海量文件的存储方法,其特征在于,所述方法在所有步骤之前还包括以下步骤初始化所述三层链表式数据存储结构中的空闲链,以及第一层链表的根节点。
4.一种海量文件的存储系统,包括控制服务器子系统、文件服务器子系统和客户机子系统,所述控制服务器子系统中包括控制服务器,所述文件服务器子系统中包括多个文件服务器,所述文件服务器包括文件服务器数据块管理模块,用于存储和维护所述海量文件的数据块,所述客户机子系统中包括客户机,所述控制服务器接收所述文件服务器上报的状态信息,并根据所述客户机上应用程序执行的操作对所述文件服务器发送控制指令,其特征在于,所述控制服务器包括数据管理模块,用于存储和维护所述海量文件的数据存储结构;所述海量文件的数据存储结构为三层链表式数据存储结构,包括文件对象链表、数据块对象链表和文件服务器对象链表,与所述文件服务器中存储的数据块形成映射关系。
5.如权利要求4所述的海量文件的存储系统,其特征在于,所述系统进一步包括公共平台,用于实现以下功能线程和线程池管理、互联网进程连接管理、定时器管理、加锁解锁管理、缓存管理;所述公共平台存在于控制服务器、文件服务器和客户机的任何一者或多者之中或独立存在。
6.如权利要求4所述的海量文件的存储系统,其特征在于,所述控制服务器进一步包括日志管理模块、备份管理模块;所述日志管理模块用于进行日志管理,其接收所述数据管理模块和备份管理模块上报的消息,并上报消息给公共平台;所述备份管理模块用于进行主备控制服务器之间的心跳维护和故障恢复,其上报消息给日志管理模块及公共平台。
7.如权利要求4、5或6所述的海量文件的存储系统,其特征在于,所述控制服务器为双机备份,包括主用控制服务器和备用控制服务器。
8.如权利要求4所述的海量文件的存储系统,其特征在于,所述客户机进一步包括客户机文件描述符管理模块、客户机应用编程接口模块;所述客户机文件描述符管理模块用于执行文件相关操作,其接收客户机应用编程接口模块提供的接口封装,并上报消息给公共平台;所述客户机应用编程接口模块用于为所述客户机上的应用程序提供接口封装。
9.如权利要求4所述的海量文件的存储系统,其特征在于,所述文件存储系统采取双平面备份的组网结构所述控制服务器和文件服务器均配置有绑定为负载均衡模式的双网卡,与每个平面的核心交换机相连。
全文摘要
本发明适用于数据处理领域,提供了一种海量文件的存储方法及系统。所述方法包括以下步骤将所述海量文件的文件相关控制信息组织成以文件对象为存储单元连接起来的第一层链表;将所述海量文件的数据块相关控制信息组织成以数据块对象为存储单元连接起来的第二层链表;将所述海量文件的文件服务器相关控制信息组织成以文件服务器对象为存储单元连接起来的第三层链表;所述第一层链表、第二层链表和第三层链表以层递的形式关联为三层链表式数据存储结构,与所述海量文件的数据块形成映射关系。本发明通过构建一个海量文件存储系统,并运用海量文件存储方法,从而在实现海量文件存储的同时提高了搜索引擎对海量文件进行各项操作的执行效率。
文档编号G06F17/30GK101079036SQ200610061328
公开日2007年11月28日 申请日期2006年6月23日 优先权日2006年6月23日
发明者余祥鑫, 杨海松, 程凯, 朱静轩 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1