光盘镜像服务器/客户机的两级Cache系统的制作方法

文档序号:6359997阅读:340来源:国知局
专利名称:光盘镜像服务器/客户机的两级Cache系统的制作方法
技术领域
本发明涉及网络存储领域,具体是指光盘镜像服务器/客户机的两级Cache系统。
2、在进行网络传输时,客户端发出网络请求后,操作系统一般采用查询的方式,检查请求是否返回,如果请求返回慢,势必会影响数据传输率。
3、如果客户端的访问大量增加,在服务器端取数据时也会形成瓶颈,从而影响数据的传输。
本发明的光盘镜像服务器/客户机的两级Cache系统,其特征在于,该系统采用两级Cache结构;在客户端设置一个自适应的Cache和预取线程模块,该模块通过客户端请求接口接收来自操作系统的请求,并进行如下处理(1)接收操作系统的请求;(2)在Cache中查询该请求是否命中;如果命中则返回请求数据给操作系统,进入(1);如果未命中则转(3);(3)向网络发送预取数据请求,预取数据块的大小根据前面的请求的命中情况确定如果前面的请求连续命中,假设连续命中n次,则预取数据块的大小为B*(n+1),如果预取占用的Cache超过A时,预取的数据块大小为A;如果未命中,则预取数据块的大小为B*2;其中B为操作系统请求的大小,A为客户端的Cache的大小;(4)返回请求数据给操作系统,进入(1);在服务器端设置一个以大块数据为单位进行组织的Cache,及相应的光盘流服务模块,该服务模块接收客户端的请求并进行以下处理(1)服务器端从网络中接收请求;(2)在Cache中查询该请求是否命中;如果命中,通过网络返回请求数据;否则,从磁盘中取包含预取数据在内的相应请求的数据,然后通过网络返回请求数据。
光盘作为一种存储介质,它具有下述不同于磁盘的特性,本发明正是根据光盘的这些特性提出来的。
第一,一张光盘可以看成一个独立的存储单位,它的容量比较大,而且它所存放的文件都是顺序的,不存在磁盘碎片现象。
第二,把一张光盘作为一个文件镜像在磁盘上时,它在物理上的存放一般也是连续的,因为作为镜像服务器的磁盘肯定不是碎片很多的磁盘。
第三,用户在使用光盘时,一般都是读取连续的数据。
通过对采用两级Cache的光盘镜像服务器系统进行测试,在请求数据连续的情况下,整个系统的性能有很大的提高。我们在100M的局域网内测试了使用不同请求块大小的顺序请求的数据传输率,结果证明采用两级Cache系统的数据传输率与请求块的大小基本上没有关系,即在任何请求块大小的情况下,数据传输率都很高。同时,我们还测试了网上邻居的顺序读请求的数据传输率,结果显示,采用本发明的系统数据传输率要大大高于网上邻居的数据传输率。上述结果如图4所示。


图1所示,本发明采用两级Cache结构由主Cache(服务器端Cache)1和客户端Cache2组成。主Cache1对所有的客户端有效,是一个大的Cache,可提高服务器的数据读取速度。客户端Cache2只对本客户端有效。客户端可以在任何地方,通过Internet访问服务器端。它是一个自适应的Cache,通过预取机制增大一次网络请求的大小,以提高网络数据传输效率,其中预取由专用的线程来完成,不需要操作系统来触发。
客户端Cache2主要是为了提高网络数据传输率以及对操作系统请求的响应速率。在客户端对光盘镜像服务器的请求一般是大块且连续的,客户端Cache根据这一特点,采用了一种自适应的预取算法,即根据开始的请求和以后的命中率确定预取块的大小。因为客户端Cache只为一个用户服务,所以客户端的Cache不需要很大(一般设为2M),循环使用。客户端通过客户端程序接口接收来自操作系统的请求,然后再通过一个预取线程从服务器端读取数据,其具体步骤如下(其中操作系统请求的大小一般设为32K)(1)接收操作系统的请求(2)在Cache中查询该请求是否命中;如果命中则返回请求数据给操作系统,进入(1);如果未命中则转(3)(3)向网络发预取数据请求,预取数据块的大小根据前面的请求的命中情况确定。如果前面的请求连续命中,假设连续命中n次,则预取数据块的大小为32*(n+1)K,如果预取占用的Cache超过2M时,预取的数据块大小为2M;如果未命中则预取数据块的大小为64K。
(4)返回请求数据给操作系统,进入(1)。
服务器端Cache容量较大,以大块数据为单位进行组织,通过每次从磁盘上读取大块数据加快读数据的速度;同时,请求在Cache中命中又可以加快请求响应的速度。服务器端Cache的容量根据服务器的配置和所服务的客户端的数量确定,容量越大,其效果越好;服务器端Cache的数据单位是Cache从磁盘中取数据的基本单位,根据镜像光盘的类型确定,一般取30K字节。服务器端通过光盘镜像服务器端的光盘流服务模块,接收客户端的请求并进行处理,其请求的具体处理过程如下(1)服务器端从网络中接收请求;(2)在Cache中查询该请求是否命中;如果命中,通过网络返回请求数据;否则,从磁盘中取相应请求的数据(含预取数据)然后通过网络返回请求数据。
由于本发明充分利用了光盘镜像及网络传输的特点以及Cache的局部性原理,在实际应用中能够大大提高系统效率。
如图2所示,客户端的用户需要读取光盘镜像文件,首先是通过操作系统向客户端请求接口发读数据请求,这时启动客户端的预取线程。预取线程根据上面提到的四个步骤开始通过网络发送请求到服务器端。服务器端的光盘流服务模块接收客户端发送来的请求,然后进行处理。
图3中,Cache中当前命中的部分和它后面的预取部分是有效的数据;前面的请求命中的部分和还未使用的内存部分都视为空白区,可以存放后面预取的数据。当Cache占用达到Cache内存区的尾端时,又转到其始端。
我们在100M的局域网内进行了以下三个方面的数据测试(1)Windows所提供的网上邻居的顺序读的数据传输率;(2)本系统顺序读的数据传输率;(3)本系统去掉客户端Cache后顺序读的数据传输率。测试分别采用不同的数据块大小进行。其结果如图4所示。
权利要求
1.光盘镜像服务器/客户机的两级Cache系统,其特征在于,该系统采用两级Cache结构;在客户端设置一个自适应的Cache和预取线程模块,该模块通过客户端请求接口接收来自操作系统的请求,并进行如下处理(1)接收操作系统的请求;(2)在Cache中查询该请求是否命中;如果命中则返回请求数据给操作系统,进入(1);如果未命中则转(3);(3)向网络发送预取数据请求,预取数据块的大小根据前面的请求的命中情况确定如果前面的请求连续命中,假设连续命中n次,则预取数据块的大小为B*(n+1),如果预取占用的Cache超过A时,预取的数据块大小为A;如果未命中,则预取数据块的大小为B*2;其中B为操作系统请求的大小,A为客户端的Cache的大小;(4)返回请求数据给操作系统,进入(1);在服务器端设置一个以大块数据为单位进行组织的Cache,及相应的光盘流服务模块,该服务模块接收客户端的请求并进行以下处理(1)服务器端从网络中接收请求;(2)在Cache中查询该请求是否命中;如果命中,通过网络返回请求数据;否则,从磁盘中取包含预取数据在内的相应请求的数据,然后通过网络返回请求数据。
全文摘要
本发明公开了一种光盘镜像服务器/客户机的两级Cache系统,该系统采用两级Cache结构;在客户端设置一个自适应的Cache和预取线程模块,该模块通过客户端请求接口接收来自操作系统的请求,并进行相应处理;在服务器端设置一个以大块数据为单位进行组织的Cache,及相应的光盘流服务模块,该服务模块接收客户端的请求并以下处理(1)服务器端从网络中接收请求;(2)在Cache中查询该请求是否命中;如果命中,通过网络返回请求数据;否则,从磁盘中取相应请求的数据,再通过网络返回请求数据。测试表明这种两级Cache系统的数据传输率与请求块的大小基本上没有关系,即在任何请求块大小的情况下,数据传输率都很高;并且采用本系统的数据传输率要大大高于网上邻居的数据传输率。
文档编号G06F12/08GK1453710SQ0312802
公开日2003年11月5日 申请日期2003年5月23日 优先权日2003年5月23日
发明者谢长生, 谭志虎, 易法令, 万继光, 鲁修卓, 任劲 申请人:华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1