一种用于提高文件服务器磁盘读取速率的方法

文档序号:6341798阅读:402来源:国知局
专利名称:一种用于提高文件服务器磁盘读取速率的方法
技术领域
本发明专利基于软件实现,主要是一种用于提高文件服务器磁盘读取速率的方法。
背景技术
文件服务器是一般网络系统的核心,多个客户设备可以共享访问该服务器上的文件资源。随着网络宽带的1飞速增长,磁盘读取的速率瓶颈越来越明显,特别是在需要实时的环境下更加突出,现在比较常用的解决方法是采用多块SCSI磁盘组成RAID和组成服务器群。VOD视频点播系统是近年来的热门,广泛应用于校园卡拉OK、宾馆。当前普通技术基于文件重定向或直接文件路径访问的 基本上都是每台使用4块以上IDE硬盘的服务器稳定支持20个DVD客户端实际输出速率为100兆位/每秒,单块IDE硬盘的服务器稳定支持8个DVD客户端实际输出速率为40兆位/每秒,使用SCSI硬盘的服务器支持60个DVD客户端实际输出速率为300兆位/每秒。超过该用户数文件服务器无法及时传输数据给客户端,客户端播放经常停顿,无法连续播放。当客户数较多时靠机械的增加服务器数量来满足需求,或者采用码流小的视频文件如MPEG4等。例如200点并发的系统需要10台使用IDE硬盘的视频服务器,加上冗余大概要14台服务器。当前普通技术的服务器内增加硬盘数,CPU,内存,网卡对性能无明显改善,采用单个硬盘和组成RAID无明显差别。
经过比较权威的WINBENCH99,HD Tach等软件测试,单块IDE普通硬盘的读取速率一般可以达到160~320兆位/每秒,高速IDE硬盘可以达到280~440兆位/每秒,高速SCSI硬盘与高速IDE硬盘读取速率差别不大。一个DVD的点播为4兆位/每秒~7兆位/每秒,照理单块硬盘就可以轻松支持几十个点的并发点播,为什么实际上却做不到。为什么IDE和SCSI硬盘读取速率差别不大,实际支持用户数却差别那么大呢?原来它们的寻道时间有很大的差别,IDE硬盘一般在10毫秒左右,SCSI硬盘在4毫秒左右,最快的可以达到2毫秒,另外SCSI控制器的智能化程度比较高,是面向多用户的,而IDE控制器主要受CPU控制,智能化程度很低,是面向单用户的。
现在我们使用的操作系统对硬件进行很好的封装,硬件设备对应用软件来说是完全透明的,我们只能告诉操作系统我们要做什么而具体怎么做什么时候做完全是操作系统的事情,应用程序常常无法干预。这对于普通的是应用非常方便,但对于需要实时的应用场合,这就带来非常无法预料的结果或者需要牺牲相应的性能指标。
当前普通技术基于文件重定向或文件路径访问都是直接使用操作系统提供的服务,也有些服务器端软件虽然没有直接采用文件重定向或文件路径访问但还是采用系统调用,经实际应用测试效率也没什么明显提高。它们在互连网上做文件服务器由于受网络带宽限制,磁盘I/O方面没明显的不足,但在网络带宽不受限制的局域网上就无法提供足够的访问数据。

发明内容
本发明专利提供了一种经过具体实施和全面验证的方法,它们可以在多用户访问文件服务器上面的大数据文件时大幅度提高磁盘的读取速率,此提高幅度随被访问文件字节数的增加而增加,一般对于1兆以上的文件就有明显的效果,当数据文件为几十兆或以上的视频文件时磁盘传输速率可达到其物理传输速率的90%以上,并且随着用户数的增加没有明显的下降。
本发明基于软件实现,在基本上不增加硬件成本的基础上可以大幅度提高文件服务器磁盘系统读取性能,特别是对于转速较低的IDE磁盘,可达到300%至800%。本发明的方法适用于存储大文件(1兆字节以上)的服务器如存储视频文件的视频服务器存储图书资料的服务器等。本方法对于小于100k的文件不适用。本发明用3个不同档次的视频点播系统作为研究对象,得到相应实验的数据,修改参数方案,最终得到本方法。
读取提速手段1根据文件的大小让系统对每个文件请求每次尽量读多一点数据,将寻道时间占的比例尽可能缩小。对于几十兆的文件可以定义每次读1M或2M,按当前IDE磁盘的传输速率50兆/每秒,平均寻道时间10毫秒算,实际读速率与连续传输率的比率分别为1兆/(50兆/秒)=20毫秒,20/(20+10)=66%。
2兆/(50兆/秒)=40毫秒,40/(40+10)=80%。
这样做的开销是需要占用一些内存。比如说服务器有200个访问,每个访问占2兆内存则需要400兆的内存,作为服务器配备1~2G的内存是很正常的事情,这样的开销对文件服务器来说是在很正常的范围内。
读取提速手段2操作系统有几种的磁盘调度方法,其内部具体使用哪种方法我们无法得到,经实际测试发现在大文件读取时效果不好。由于我们可以保证磁盘上的数据文件是连续存放的,我们需要绕过操作系统的磁盘调度,直接从文件分配表中得到文件在磁盘上存放的扇区号,将待读文件按其在磁盘上存放的扇区号大小排序,这样可以最大限度的减少寻道距离,从而减少寻道时间。提高磁盘的读取速率。
读取提速手段3对于多个用户访问同一个文件的情况,我们需要用到文件缓存机制,这种机制在操作系统里面被普遍采用,但操作系统的设计主要针对小文件的缓存比较有效,当文件很大时,比如视频文件100MB以上时不但效果不好对系统还有一定的影响,我们使用直接扇区访问(汇编实现,驱动级)的方法,绕开操作系统对我们的磁盘访问的缓冲,我们的方法设定一个临界访问数,当实际访问数小于临界访问数时,直接读硬盘上的数据,当达到临界访问数时,将整个文件读入内存,以后对该文件的所有访问直接从内存得到而无需访问硬盘。这种方法绕开操作系统的缓存机制,完全根据客户端访问来启动和关闭内存文件映射块,在视频服务器上提速效果非常明显,因为视频服务器上的文件是节目,每当有新的节目时往往都是点播率非常高的,这时数据在内存里面就不存在磁盘I/O速率高低的问题,只要网络有足够的带宽就可以提供点播服务。
读取提速手段4根据当前每个磁盘的物理传输速率设定一个最大可服务速率,限制对每个磁盘的连接数使时间实际读取速率小于最大可服务速率。比如该磁盘设定的最大连接速率为40兆字节每秒,当实际读取速率达到该数值时禁止对该磁盘新的访问连接,保证已有每个连接能在其最低速率以上,保证已有连接正常工作不受影响。
本发明专利的有益效果在于,文件服务器上使用本方法在客户端访问超过1兆的文件时可以大幅度提高系统读取速率,最大可以达到现在普通方法的800%,即使用一台低配置的普通服务器就可达到现有方法使用多台服务器达到的效果,直接减少硬件投资,实践中便于推广,且本方法适用于所有操作系统。
具体实施例方式
视频点播系统由文件服务器,网络和点播客户端及相应的软件组成,本发明使用了3种档次的文件服务器来实现本发明的方法,这3种文件服务器占市场的绝大多数应用领域,可以充分验证本方法的实用性服务器1普通奔腾4兼容机做服务器,内存为2G,2块TP-LINK千兆网卡。
服务器2双奔腾4至强部门级服务器,内存为4G,2块INTEL千兆网卡。
服务器34路奔腾4至强企业级服务器,内存为8G,3块INTEL千兆网卡。
以上3种服务器均采用8块西捷酷鱼120GIDE硬盘,每2块磁盘组成RAID0,共有4组磁盘。
该方法在视频服务器上的实现由以下几部分模块组成模块1网络收发模块。负责接收客户端的请求和将数据发送给客户端。
模块2文件读取模块。负责将磁盘子系统里面的数据读到内存。
模块3控制模块。负责模块1和模块2之间的协调工作。
启动服务器软件后,模块1监听指定的端口,接收到客户端的请求并正确解释请求后通知模块3,模块3判断当前系统内磁盘读数据的状态和网络的状态,确定可以提供服务时通知模块2,模块2开始将数据从磁盘上读出交给模块1发送。如果确定当前不可以提供服务,通知模块1发送无法提供服务信息给客户端,保证已经建立好的服务连接不会因为新的连接加入而受到影响。
服务器磁盘子系统一般由磁盘,控制器组成。本发明的方法是基于软件实现,就是说在现有的硬件基础上通过软件提高效率来实现,本发明不涉及硬件改造等方法。
影响磁盘I/O性能的物理因素为磁盘内部传输速率,磁盘外部传输速率,寻道时间,控制器接口速率,系统I/O速率,延迟时间等。我们把现在PC系统主流硬件的相关性能列(表1)。
普通的文件服务器不需具有实时性,系统I/O速率大小虽然也是很重要的性能指标但却没有必要的最小值。比如说在100兆位/每秒 的局域网里拷贝一个10兆字节的文件一般是只需要几秒钟,而用56K MODEM访问就要30分钟以上,虽然说前者比后者好,但都可以实现,现实中就是这样的。视频点播具有实时性,用56K MODEM网络连接做MPEG2的点播大概每播放1秒的数据需要2分钟的传输,不具备实时性,是无法使用的。用视频点播做本发明方法的实现研究具有非常直接的结果。
本发明首先确保文件数据是保存在连续的扇区里面,本发明采用新的硬盘,依次将视频文件拷贝到新盘里面,文件一般在100兆字节到200兆字节之间,一个120G的硬盘可以储存900个文件,每个文件的内容都是一首歌曲。
按照众所周知的方法当只有一个用户访问文件服务器时,系统只对一个文件进行读操作。当有许多用户访问文件服务器时,系统要同时对许多文件进行读操作这个同时是指宏观的同时微观上磁盘,假设此时的访问数为50,系统对每个文件访问在不同的线程里执行的情况,系统将给每个线程分配15毫秒的时间,每个用户得到的时间片为片15ms,在这15ms里面寻道时间花掉了10毫秒,剩下的5毫秒进行读数据,就是说理论上最大效率只有33%,这种严格时间片方法主要在UNIX系统,windows系统是消息事件驱动,时间片更无序,效率更低。在已经公布的一种文件服务器方法中,将每次读文件的大小设定为2.5K*15=37.5k,按现在的IDE硬盘的读速率50M,需时37.5k/50000k/s=0.75毫秒。就是说系统花10毫秒寻道定位该文件后只需读0.75毫秒的数据就要进行下一次寻道操作,实际用在读数据的时间只占0.75/10.75=7%,也就是说效率只有百分之7,其余93%都用来寻道了。
磁盘数据的物理结构为盘片,磁道,扇区。磁道为盘片上的许多同心圆,分为内道外道,靠近圆心的为内道,反之为外道。外道为起始磁道,周长比内道长,包含的扇区数比内道多,传输率高。
磁盘的访问时间包括寻道时间和延迟时间和传输时间,寻道时间是磁头移动到指定磁道的时间,其寻道时间随寻道距离的增大而增大。延迟时间是磁头移动到磁道后找到需要读数据的扇区的时间,一般7200转的硬盘每转一圈需时8.3,平均延迟时间为4毫秒。传输时间才是真正读取数据的时间,传输时间占访问时间的比例越高,磁盘传输率越大,其最大值为物理传输率,本发明的方法就是尽可能提高传输时间的比例从而提高访问速率。
在综合采用上面4种手段编写的服务器管理软件实现了文件服务器磁盘读取速率的本质的飞跃,采用单块西捷酷鱼IDE硬盘的文件服务器可以稳定支持80个DVD客户端的实时访问。采用8块硬盘组成IDE RAID0时,测试结果更是非常令人鼓舞服务器1(普通P4)能够支持150个DVD客户端的实时访问,播放中偶尔有1~5秒的停顿,稳定支持140DVD客户端的实时访问,中间无任何停顿。响应时间小于5秒。
服务器2(2 P4XEON)能够支持240个DVD客户端的实时访问,播放中偶尔有1~5秒的停顿,稳定支持220 DVD客户端的实时访问,中间无任何停顿。响应时间小于6秒。
服务器3(4 P4XEON)能够支持400个DVD客户端的实时访问,播放中偶尔有1~5秒的停顿,稳定支持360 DVD客户端的实时访问,中间无任何停顿。响应时间小于8秒。
具体测试数据见(表2)。
表1

表2

权利要求
1.一种用于提高文件服务器磁盘读取速率的方法,其特征是一、服务器端控制磁盘访问的方法该方法由服务器软件控制每次磁盘访问的文件块大小,根据被访问文件的大小、系统内存大小和保证达到各个访问请求最低速率的情况下动态调整该文件块的大小,目标是在让寻道时间占访问时间的比例尽可能小,推荐值为2兆字节,不要低于500千字节;二、服务器端控制磁盘访问的方法不使用操作系统的磁盘调度,直接根据文件分配表得到文件在磁盘上的位置信息,根据该信息确定文件读取时的顺序,尽量减少寻道距离;三、服务器端控制磁盘访问的方法绕过操作系统的磁盘缓冲机制,达到预定请求数目的文件将其直接读入内存,系统根据对同一个文件的请求数确定直接磁盘读取还是内存读取。
2.根据权利要求1所述,其特征是设定最大访问速率,限制实际访问速率小于最大访问速率,禁止超过该速率的新的连接请求,保证已有的连接在正常工作。
3.根据权利要求1所述的一、二、三方法,其特征是对于磁盘I/O相关的操作不使用操作系统提供的函数或其它调用,通过驱动或其它方式直接控制磁盘系统。
全文摘要
本发明基于软件实现,主要是公开了一种用于提高文件服务器磁盘读取速率的方法。它们可以在多用户访问文件服务器上面的大数据文件时大幅度提高磁盘的读取速率,此提高幅度随被访问文件字节数的增加而增加,一般对于1兆以上的文件就有明显的效果,当数据文件为几十兆或以上的视频文件时磁盘传输速率可达到其物理传输速率的90%以上,并且随着用户数的增加没有明显的下降。文件服务器上使用本方法在客户端访问超过1兆的文件时可以大幅度提高系统读取速率,最大可以达到现在普通方法的800%,即使用一台服务器就可达到现有方法使用多台服务器达到的效果,直接减少硬件投资,实践中便于推广,且本方法适用于所有操作系统。
文档编号G06F13/10GK1624669SQ20031011239
公开日2005年6月8日 申请日期2003年12月2日 优先权日2003年12月2日
发明者陈凯 申请人:陈凯
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1