分布式文件服务器基于缓冲区的文件传输方法

文档序号:7662120阅读:129来源:国知局

专利名称::分布式文件服务器基于缓冲区的文件传输方法
技术领域
:本发明涉及文件传输领域,主要是一种分布式文件服务器基于缓冲区的文件传输方法。
背景技术
:在世界范围内广泛应用的分布式文件系统有NFS,AFS和Coda,其突出特点是具有位置透明性和迁移透明性,分布式文件系统可以基本满足了构建大规模存储系统的需要。分布式文件服务器具备了分布式系统的一些优点,具有很高的文件访问性能,通过冗余机制保证了系统可靠性,并且具有良好的可扩展性,支持大容量的存储。分布式文件服务器的结构可以分为中心化结构和分布式^寸等结构。在中心化结构的系统中,存在一个主服务器存储全局的文件系统信息,向用户提供文件服务,系统中的其他节点都用来做存储节点,并受主服务器的控制。在分布式对等结构中,系统中任何一个节点都高度自治,任何一个节点都可以对外提供全局的文件服务。分布式文件服务器作为一个存储系统,包含稳定的文件源,并包含多份文件冗余,客户端可以从多个服务器同时下载文件的部分内容,如果从网络中接收到数据就立刻写入磁盘,传输过程将会产生多次的磁盘读写操作,采用软件缓冲区可以有效的减少对磁盘的操作,明显提升大文件的传输速度。分布式文件服务器中的缓冲区是指内存中的一块区域,一个缓冲区包含若干数据块,每个块包含一个小块文件数据以及它在文件中的起始位置和结束位置等信息,每个块具有存在、空闲、填充中、充满四种状态。对缓冲区频繁的读写,需要一个高效的管理方法,以减少内存分配与释放造成的碎片。
发明内容本发明要解决上述技术所存在的缺陷,提供一种分布式文件服务器基于缓冲区的文件传输方法,通过配置和管理软件缓冲区,解决多线程文件传输带来的磁盘读写和内存分配问题。本发明解决其技术问题所采用的技术方案这种分布式文件服务器基于缓冲区的文件传输方法,步骤如下1)、建立稳定的传输模型,在这个分布式文件服务器中包含稳定的文件源,每个文件具有两个或者两个以上的文件副本的存在,且这些副本保存在多个服务器上;系统为客户端提供了几个外部接口,只要连接到其中的一台服务器,就能访问到系统中所有的文件资源,系统中的每一台服务器,都具有资源定位的功能;2)、在这样的文件存储系统中,不存在主服务器和超级节点,文件被保存在多个节点上,按照文件名的哈希值映射到一个节点ID,这个节点上的文件副本称为文件的主副本;文件主副本的服务器对多个文件副本进行管理,当有用户下载该文件时,记录这个客户端的信息,在用户下载完成并未退出系统时,这个客户端上的文件作为一个文件副本源;3)、用户请求对文件下载时,系统将文件名哈希后得到一个标识符,通过路由定位找到存储这个文件的主服务器,主服务器上记录文件副本服务器和下载完成用户的地址,将这些地址信息返回给用户,用户从这些地址上多源分块下载文件;4)、为了提高文件存储的效率,并不是接收到一个文件数据块就写磁盘,而是将文件数据块缓存在缓冲区中,当缓冲区中达到一定数量的块时,再由统一的一个线程将缓冲区中的数据写到磁盘中,写磁盘线程从缓冲区中提取块时,在已满块中选择最佳的一块,将其写入磁盘。动态扩展的缓冲区算法在传输任务开始时默认生成数据块的大小和数量,这两个值在文件传输的过程中会根据网络速度和磁盘读写速度进行动态变化,每个数据块在默认生成时并不分配内存,只有在某个线程需要写数据时才分配内存。在没有线程对这个块读写时,这个数据块可以作为一个新的数据块挂载到缓冲区上,这样减少了创建数据块的内存开销,提高了内存的使用率。对于读写缓冲区的线程来说,理想的情况是读写缓冲区的速度平衡,若写缓冲区的速度大于读缓冲区的速度时,需要增加新的数据块防止写线程处于空闲等待状态。若写缓冲区的速度小于读缓冲区的速度时,可以减少多余的数据块,减少资源的消耗。本发明有益的效果是本发明解决了分布式文件服务器的高性能多源分块传输问题,采用动态扩展缓冲区的管理方法提高文件传输性能,降低服务器的资源消耗。由上述方法可以看出,本发明提供的缓冲区管理方法具有动态可扩展和自动重构的特性,缓冲区可以灵活的根据读写速度决定数据块的大小和数量,同时使用过的数据块可以被重新利用,有效得减少了缓冲区空间的浪费,从而减少整个系统的资源消耗。图l具有稳定文件源的分布式存储系统传输模型示意图;图2为动态扩展的缓冲区模型示意图;图3为动态扩展的缓冲区调整流程示意图;具体实施例方式下面结合附图和实施例对本发明作进一步介绍具有稳定传输模型的分布式文件服务器中文件多源分块下载如图1,过程如下(1)客户端尝试着与每个服务器建立连接,连接建立成功后维护连接,等待数据的传输。(2)客户端上生成文件传输的断点信息,根据断点信息文件,向多个服务器请求不同位置的文件块数据。(3)客户端接收到数据后,先将数据写入内存中的缓冲区,再由缓冲区统一写入硬盘。在创建缓冲区时,申明了缓冲区的块数量和每个块的大小,但并不实际给每个块分配内存空间,只有当有线程想给缓冲区中写数据时才有可能创建一块内存空间,并将它作为新的块挂载到缓冲区上去。在开始传数据前,缓冲区中的所有块的状态都被置成空闲,表明这些块可以有来存储新到来的数据。新的数据到来时,从缓冲区里获得一个空闲的块,将该块状态置成填充中(表明有线程正在向这个块中写数据),同时分配内存空间给这个块。当线程完成对一个状态为填充中的块的写操作后,将该块的状态置成充满。读线程从缓冲区中选择一个状态为充满的块,将该块中的数据写到磁盘后,把它的状态置为存在,这是个特殊的状态,它同空闲一样也表明该块是可以被写数据库空闲块,最大的不同是这些块都已经分配了内存空间,所以在选择空闲块时,优先考虑状态为存在的缓冲块,其次才考虑状态为空闲的块。下面用一个含10个块的缓冲区来演示对缓冲区的操作,其中0表示存在状态,1表示空闲状态,2表示填充中,3表示充满状态。假设当前3窆个缓冲区状态如下-<table>tableseeoriginaldocumentpage5</column></row><table>一个线程请求一个空闲块后:(2)<table>tableseeoriginaldocumentpage6</column></row><table>选择一个状态为充满<table>tableseeoriginaldocumentpage6</column></row><table>的块并将其中的数据写入磁盘后<table>tableseeoriginaldocumentpage6</column></row><table>写缓冲线程获取空闲缓冲块和读缓冲线程获取满的缓冲块都有各自的不同方法。对缓冲区数据块的操作涉及到多线程的同步问题,多个线程同时往缓冲区中写数据时,需避免多个线程同时拿到同一个块,对缓冲区的读线程和写线程需保证同一时刻只有一个线程在操作同一块。写缓冲线程获取空闲块时,首先去査找状态为存在的块,若有则返回;如果不存在这样的块,则选择状态为空闲的块,若有则返回;若没有空闲的块,则等待读缓冲线程读完数据后,再重新去缓冲区中拿空闲的块。读缓冲线程获取满的块时,总是取其中块的开始位置最小的那块,这样能保证尽可能连续向文件中写数据。为了实现这个功能,采用了数据结构中的最小堆来维护当前工作己经满的块,这样读缓冲线程只要从这个堆中取一块最小的即可。如图2所示,对于读写缓冲区线程来说,最理想的状态是所有向缓冲区中写数据的写线程与读缓冲区的线程速度平衡,不存在一方等待另一方的情况。写缓冲区线程每次向缓冲区中写入一个块的数据,包括文件内容和该数据块在文件中的起始位置、结束位置以及含有文件数据的大小等信息。当缓冲区中没有足够的块时,增加新的块给缓冲区,以免写线程等待空闲块。这种情况表明写线程的速度大于读线程的速度,也就是读线程无法及时处理状态为充满的块,如果不创建新的块会导致写线程处于空闲等待状态。读缓冲区线程每次从缓冲区中读取一块起始位置最小的文件块,如果缓冲区中没有状态为充满的块,说明写线程的速度小于读线程的速度。这就需要减小缓冲区中每个块的大小,让写线程尽可能快地写满一个块,保证读线程都可以得到状态为充满的块。另外,这种情况也表明缓冲区中存在的多余的块,可以将部分数量的块从缓冲区中去除,以减少缓冲区占用的内存资源。如图3所示,缓冲区动态管理和重构的具体流程如下(1)首先创建一个读线程,并且将使该线程处于等待状态,一旦有缓冲区中的数据时,唤醒该线程;创建写线程等待服务器传输数据给该线程。(2)有新的数据到达时,从缓冲区中获取一个空闲的块,如果有状态为存在的块,则返回一个块给写线程,否则创建一个新的、大小为原先块大小的i倍(i需要根据第3步的情况来定,默认值为I。)的块给写线程。(3)读线程从缓冲区中选择一个状态为充满、起始位置最小的块,并将它的数据写入磁盘文件,如果不存在这种状态的块,表明写磁盘的速度大于文件在网络上的传输速度,这样就没有必要在创建新的块时扩大块的大小,也就是将i设置为1/1。;(4)综合3、4步骤确定块的合适大小,具体大小应该在当前块和先前创建的块之间,可以在这两个值之间选取一个平均值作为块大小。这样虽然不能立刻保证两种线程之间的完全平衡,但随着运行时间的增加可以逐渐趋于平衡,(5)文件传输完毕后,释放缓冲区空间。上述实施例用来解释说明本发明,而不是对本发明进行限制,在本发明的精神和权利要求的保护范围内,对本发明作出的任何修改和改变,都落入本发明的保护范围。权利要求1、一种分布式文件服务器基于缓冲区的文件传输方法,其特征在于步骤如下1)、建立稳定的传输模型,在这个分布式文件服务器中包含稳定的文件源,每个文件具有两个或者两个以上的文件副本的存在,且这些副本保存在多个服务器上;系统为客户端提供了几个外部接口,只要连接到其中的一台服务器,就能访问到系统中所有的文件资源;2)、文件被保存在多个节点上,按照文件名的哈希值映射到一个节点ID,这个节点上的文件副本称为文件的主副本;文件主副本的服务器对多个文件副本进行管理,当有用户下载该文件时,记录这个客户端的信息,在用户下载完成并未退出系统时,这个客户端上的文件作为一个文件副本源;3)、用户请求对文件下载时,系统将文件名哈希后得到一个标识符,通过路由定位找到存储这个文件的主服务器,主服务器上记录文件副本服务器和下载完成用户的地址,将这些地址信息返回给用户,用户从这些地址上多源分块下载文件;4)、将文件数据块缓存在缓冲区中,当缓冲区中达到一定数量的块时,再由统一的一个线程将缓冲区中的数据写到磁盘中,写磁盘线程从缓冲区中提取块时,在已满块中选择最佳的一块,将其写入磁盘。2、根据权利要求1所述的分布式文件服务器基于缓冲区的文件传输方法,其特征在于系统中的每一台服务器都采用具有资源定位的功能服务器。3、根据权利要求1所述的分布式文件服务器基于缓冲区的文件传输方法,其特征在于动态扩展的缓冲区算法在传输任务开始时默认生成数据块的大小和数量,这两个值在文件传输的过程中会根据网络速度和磁盘读写速度进行动态变化,每个数据块在默认生成时并不分配内存,只有在某个线程需要写数据时才分配内存,在没有线程对这个块读写时,这个数据块可以作为一个新的数据块挂载到缓冲区上。全文摘要本发明涉及一种分布式文件服务器基于缓冲区的文件传输方法,步骤如下建立稳定的传输模型,每个文件具有多个文件副本的存在,且这些副本保存在多个服务器上;文件被保存在多个节点上,按照文件名的哈希值映射到一个节点ID,这个节点上的文件副本称为文件的主副本,当有用户下载该文件时,记录这个客户端的信息,在用户下载完成并未退出系统时,这个客户端上的文件作为一个文件副本源;用户请求对文件下载时,主服务器上记录文件副本服务器和下载完成用户的地址,用户从这些地址上多源分块下载文件。本发明有益的效果是解决了分布式文件服务器的高性能多源分块传输问题,采用动态扩展缓冲区的管理方法提高文件传输性能,降低服务器的资源消耗。文档编号H04L12/54GK101188544SQ200710157100公开日2008年5月28日申请日期2007年12月4日优先权日2007年12月4日发明者健吴,吴朝晖,鹏孙,尹建伟,莹李,邓水光申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1