一种机群文件系统中缓存管理的方法及系统的制作方法

文档序号:6470858阅读:252来源:国知局
专利名称:一种机群文件系统中缓存管理的方法及系统的制作方法
技术领域
本发明涉及计算机存储领域,尤其涉及一种机群文件系统中缓存管理的 方法及系统。
背景技术
机群(cluster)系统由互相连接的多个独立计算机所组成,该计算机可 以是单机或多处理器系统,例如PC (个人计算机)、工作站或SMP (对称多处 理系统),每个计算机都有自己的存储器、1/0(输入/输出)设备和操作系统。 机群系统对用户和应用来说是一个单一的系统,能够提供低价高效的高性能 环境和快速可靠的服务。由于机群系统具有高性价比的优势,其已成为高性 能计算机的主流结构。
在机群系统中,通常存储服务器配备有大容量的存储设备,在机群系统 运作时,需要对这些存储设备进行管理。同时,机群系统还需要为不同客户 端的用户提供的文件共享服务。机群文件系统为机群系统提供了上述服务, 它将机群系统中的所有存储设备整合起来,建立一个统一的名字空间(文件 和目录的组织结构)。各个客户端看到目录结构一致的文件系统,不同节点(客 户端)的用户可以采用透明的方式访问相同的文件。机群文件系统中的数据 通常不存储在本客户端的磁盘中,而是存储在存储服务器上,因而通常都会 设有专用的存储服务器。以写为例,应用进程通过机群文件系统的客户端写 数据时,客户端首先将数据通过网络传送到存储服务器端,存储服务器再将 接收到的数据写到存储服务器的存储设备中。
缓存技术是一种有效提升计算机性能的优化技术。文件缓存指的是在计 算机系统的内存中暂时保留一些磁盘文件数据的副本,利用存储访问的局部 性原理,减少对磁盘设备的访问次数,从而达到提高性能的目的。
伴随新的存储结构的诞生以及机群文件系统的发展,缓存结构也发生了 新的变化。为了改善性能,机群文件系统存储服务器端和客户端都会使用大
容量的主存来缓存文件数据。这些缓存构成了多级缓存体系结构,如图l所 示。文件数据既可能缓存在客户端中又可能缓存在服务器中,但如果没有对 多级缓存进行有效地管理,即使增大缓存的空间,缓存所带来的性能提升也 不会成比例地增长。
机群文件系统中,应用程序对文件发起顺序读访问时,文件系统的客户 端和存储服务器的顺序预取机制都会被触发。预取数据首先被从服务器端的 磁盘预取到服务器的内存,然后再通过网络传递到客户端的内存。由于文件
缓存往往采用LRU (Least Recently Used,最近最少使用)替换策略。所以, 预取数据既会被缓存在客户端的内存中,又会被缓存在存储服务器的内存中。 假设在被真正访问之前,预取数据都会被缓存在内存中而不会被提前替换。 那么,这两级缓存的内容是完全重复的,如图2所示客户端将预取的数据, 图中AB对应数据,缓存在内存中,服务器也会将预取的数据,A' B'对应数 据,缓存在内存中,AB和A, B,的内容完全重复。如果预取数据在客户端的 内存中命中,那么将不会再向存储服务器发起新的请求。如果预取数据没有 在客户端内存中命中,那么它也不会在存储服务器端的内存中命中。所以, 在上面的假设条件成立的情况下,服务器端缓存的预取数据将永远不会命中。 存储服务器的该部分内存实际上缓存了无效的数据。只有预取数据被提前从 客户端内存中替换时,存储服务器端缓存的数据才可能命中。然而,该种情 况通常不会出现。因为单个存储服务器通常为多个客户端服务。而且,机群 文件系统中的存储服务器一般是由普通的PC (个人计算机)构成。所以存储 服务器端的内存比客户端更加稀缺。
机群文件系统中的缓存体系结构主要存在两个问题。问题一,存储服务 器低级缓存与客户端高级缓存有着不同的访问特征。存储服务器内存访问的 通常为客户端高级缓存不命中的数据,所以存储服务器内存访问的局部性较 弱。传统的基于局部性原理的缓存替换策略如LRU不适用于存储服务器端的 缓存。问题二,如果没有将不同级级缓存管理联系起来,则在各级缓存中会 缓存大量重复的数据,低级缓存的命中率低和缓存空间利用率。
为了优化缓存的效果,在"An Effective Buffer Cache Management Scheme to Exploit Both Temporal and Spatial Locality. In .'Proceedings of the Second USENIX Conference on File and Storage Technologies (FAST
2005) , San Francisco, CA, December 2005."中最早提出利用数据访问的空间 局部性来改善缓存的性能,并利用这一原理提出了DULO算法。因为磁盘的顺 序访问性能要远高于随机访问性能,所以,如果数据被访问的频率相同,在 内存中优先缓存随机访问的数据,可以大大减少磁盘访问中磁头移动的次数。 该算法主要基于单级缓存结构,主要解决单级缓存中的问题。在管理单级缓 存的过程中的确比传统的LRU替换策略有明显优势。然而,这种管理策略不
能把机群系统中的各级缓存管理联系起来,不适用于机群文件系统缓存体系 结构。
现有的机群文件系统缓存管理技术可以分为两大类对客户端透明的缓 存管理策略和需要客户端参与缓存管理策略。对客户端透明的缓存管理策略 保持原有的I/0访问接口,管理过程对存储软件的客户端完全透明。只是在 存储服务器端挖掘访问信息来实现统一的管理。管理过程中不需要客户端任 何提示信息的帮助。这类管理策略的典型管理算法包括"Web Search for a Planet: The Google Cluster Architecture, IEEE Micro, Vol. 23,
No. 2, March 2003, pp. 22-28."中的MQ替换算法,"The Google File System. In: Larry P, eds. Proceedings of the 19th ACM Symposium on
Operating Systems Principles. NewYork: ACM Press, 2003. 19-22."
中基于高级缓存替换信息(eviction-based)的管理算法以及"The multi-queue replacement algorithm for second level buffer caches. In Proceedings of the 2001 USENIX Annual Technical Conference, pages 91-104, June 2001."中X-RAY管理策略,需要客户端参与的缓存管理策略 通过牺牲透明性来换取高的性能。该种管理策略需要对传统1/0访问接口进 行拓展,需要修改存储系统的客户端软件来将多级缓存的管理统一起来。
现有技术未解决机群文件系统中,存储服务器缓存命中率低,顺序预取 数据在各级内存中重复缓存的问题。

发明内容
为解决上述问题,本发明提供了一种机群文件系统中缓存管理的方法及 系统,用以提高存储服务器端缓存命中率,避免顺序预取数据在各级内存中 重复缓存。
本发明公开了一种机群文件系统中缓存管理的方法,包括客户端接收应 用层的文件访问请求,将所述文件访问请求封装到读请求消息中,所述方法 还包括
步骤1,所述客户端识别所述读请求对应的访问模式信息;
步骤2,所述客户端将所述访问模式信息封装到所述读请求消息中,将
所述读请求消息发送给存储服务器;
步骤3,所述存储服务器接收所述读请求消息,从所述存储服务器的磁
盘读取所述读请求消息要从所述存储服务器访问的数据,通过应答消息将所
述数据发送给所述客户端;
步骤4,所述存储服务器依据所述读请求消息中访问模式信息判断所述
客户端的访问模式类型是否为顺序访问,如果是,则将被访问的数据从所述
存储服务器的内存中释放,否则,继续缓存被访问的数据。 所述客户端设置有顺序计数器,所述步骤1进一步包括 步骤21,判断所述文件访问请求对文件访问的起始位置是否为所述文件
上次被访问的结束位置,如果是,则将所述顺序计数器加1,否则,将所述
顺序计数器清零;
步骤22,判断所述顺序计数器是否大于2,如果是,则所述访问类型为 所述顺序访问,否则,所述访问类型为随机访问。 所述步骤21和所述步骤22间还包括
步骤31,记录所述文件访问请求对所述文件访问的起始位置和所述访问 的访问粒度。
所述步骤21前进一步包括,根据记录的所述文件上次被访问的起始位置 和访问粒度计算所述文件上次被访问的结束位置。
步骤3中读取所述读请求消息所访问的数据进一步包括
步骤51,判断所述读请求消息所访问的数据是否在所述存储服务器的内 存中,如果不是,则执行步骤52;
步骤52,将所述读请求消息所访问的数据从所述存储服务器的磁盘读到 所述存储服务器的内存中。
本发明还公开了一种机群文件系统中缓存管理的系统,包括具有磁盘的 存储服务器和客户端,所述客户端包括用于接收应用层的文件访问请求并将
所述文件访问请求封装到读请求消息中的封装模块, 所述客户端还包括访问类型识别模块,
所述访问类型识别模块,用于识别所述读请求对应的访问模式信息; 所述封装模块,还用于将所述访问模式信息封装到所述读请求消息中, 将所述读请求消息发送给所述存储服务器;
所述存储服务器包括数据访问模块和缓存管理模块,
所述数据访问模块,用于接收所述读请求消息,从所述磁盘读取所述读 请求消息要从所述存储服务器访问的数据,通过应答消息将所述数据发送给 所述客户端;
所述缓存管理模块,用于依据所述读请求消息中访问模式信息判断所述 客户端的访问模式类型是否为顺序访问,如果是,则将被访问的数据从所述 存储服务器的内存中释放,否则,继续缓存所述被访问的数据。
所述客户端设置有顺序计数器,
所述访问类型识别模块,进一步用于在所述文件访问请求对文件访问的 起始位置为所述文件上次被访问的结束位置时,将所述顺序计数器加1,在 所述文件访问请求对文件访问的起始位置不为所述文件上次被访问的结束位 置时,将所述顺序计数器清零;并且判断所述顺序计数器是否大于2,如果 是,则确定所述访问类型为顺序访问,否则,确定所述访问类型为随机访问。
所述访问类型识别模块还用于记录所述文件访问请求对所述文件访问的 起始位置和所述访问的访问粒度。
所述访问类型识别模块进一步用于根据记录的所述文件上次被访问的起 始位置和访问粒度计算所述文件上次被访问的结束位置。
所述数据访问模块进一步用于在所述读请求消息所访问的数据未在所述 存储服务器的内存中时,将所述读请求消息所访问的数据从所述存储服务器 的磁盘读到所述存储服务器的内存中。
本发明的有益效果在于,通过实现预取数据在客户端的单级缓存,释放 存储服务器的内存空间,避免各级缓存数据重合,增大缓存空间的整体利用 率;通过在存储服务器端的内存中缓存随机数据,有利于利用数据访问的空 间局部性原理,减少磁盘随机访问的比例,增加磁盘顺序访问比例和粒度, 充分发挥磁盘访问性能。


图1是机群文件系统中缓存体系结构示意图2是机群文件系统中预取时数据重复缓存问题示意图3是本发明的系统结构图4是本发明的方法流程图5是本发明客户端识别访问模式信息的方法流程图; 图6是本发明存储服务器读取数据的方法流程图。
具体实施例方式
下面结合附图,对本发明做进一步的详细描述。
本发明的系统结构图如图3所示。
本发明的系统包括具有磁盘的存储服务器302和客户端301。 客户端301包括封装模块311和访问类型识别模块312 。 封装模块311,用于接收应用层的文件访问请求,将该文件访问请求封 装到读请求消息中,并将访问类型识别模块312识别出的访问模式信息封装 到读请求消息中,将该读请求消息发送给存储服务器302。
访问类型识别模块312,用于识别读请求消息对应的访问模式信息。 访问模式信息包含访问类型,访问类型分为顺序访问和随机访问两种。 客户端301设置有顺序计数器。
访问类型识别模块312,进一步用于根据记录的被访问文件上次被访问 的起始位置和访问粒度计算该文件上次被访问的结束位置;在本次文件访问 请求对该文件访问的起始位置为该文件上次被访问的结束位置时,将顺序计 数器加1,在本次文件访问请求对文件访问的起始位置不为该文件上次被访 问的结束位置时,将顺序计数器清零;并且判断顺序计数器是否大于2,如 果是,则确定访问类型为顺序访问,否则,确定访问类型为随机访问;并记 录本次文件访问请求对该文件访问的起始位置和本次访问的访问粒度。 存储服务器302包括数据访问模块321和缓存管理模块322。 数据访问模块321,用于接收读请求消息,从存储服务器302的磁盘读 取该读请求消息所访问的数据,通过应答消息将该数据发送给客户端301。
数据访问模块321进一步用于在读请求消息所访问的数据未在存储服务 器302的内存中时,将该读请求消息所访问的数据从存储服务器302的磁盘 读到存储服务器302的内存中。
缓存管理模块322,用于依据读请求消息中访问模式信息判断客户端301 的访问模式类型是否为顺序访问,如果是,则将被访问的数据从存储服务器 302的内存中释放,否则,继续缓存被访问的数据。
本发明的方法流程如图4所示。
歩骤S401,客户端接收应用层的文件访问请求,将该文件访问请求封装 到读请求消息中。
步骤S402,客户端识别读请求消息对应的访问模式信息。 步骤S402的具体实施方式
如图5所示。
访问模式信息包含访问类型,访问类型分为顺序访问和随机访问两种。 客户端设置有顺序计数器。
步骤S501,根据记录的文件访问请求所访问的文件上次被访问的起始位 置和访问粒度计算该文件上次被访问的结束位置。
步骤S502,判断文件访问请求对文件访问的起始位置是否为文件上次被 访问的结束位置,如果是,执行步骤S503,否则,执行步骤S504。
步骤S503,将顺序计数器加l。
步骤S504,将顺序计数器清零。
步骤S505,记录文件访问请求对文件访问的起始位置和访问粒度。 步骤S506,判断顺序计数器是否大于2,如果是,执行步骤S507,否则, 执行步骤S508。
步骤S507,确定访问类型为顺序访问。 步骤S508,确定访问类型为随机访问。
步骤S403,客户端将访问模式信息封装到读请求消息中,将该读请求消 息发送给存储服务器。
步骤S404,存储服务器接收读请求消息,读取该读请求消息所访问的数 据,通过应答消息将数据发送给客户端。
步骤S404的具体实施方式
如图6所示。
步骤S601,判断读请求消息所访问的数据是否在存储服务器的内存中, 如果是,执行步骤S603,否则,执行步骤S602。
步骤S602,将该读请求消息所访问的数据从存储服务器的磁盘读到存储 服务器的内存中。
步骤S603,通过应答消息将读请求消息所访问的数据从存储服务器的内 存传送到客户端的内存。
步骤S405,存储服务器从读请求消息中解析出访问模式信息,根据该访 问模式信息管理读请求消息所访问的数据在服务器端内存中的缓存。
存储服务器从读请求消息中解析客户端负载的访问模式类型,如果是顺 序访问则将读请求消息所访问数据从存储服务器的内存中释放,不在存储服 务器上缓存;否则,继续在存储服务器上缓存该数据。
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条 件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限 于以上的说明,而是由权利要求书的范围来确定的。
权利要求
1. 一种机群文件系统中缓存管理的方法,包括客户端接收应用层的文件访问请求,将所述文件访问请求封装到读请求消息中,其特征在于,所述方法还包括步骤1,所述客户端识别所述读请求对应的访问模式信息;步骤2,所述客户端将所述访问模式信息封装到所述读请求消息中,将所述读请求消息发送给存储服务器;步骤3,所述存储服务器接收所述读请求消息,从所述存储服务器的磁盘读取所述读请求消息要从所述存储服务器访问的数据,通过应答消息将所述数据发送给所述客户端;步骤4,所述存储服务器依据所述读请求消息中访问模式信息判断所述客户端的访问模式类型是否为顺序访问,如果是,则将被访问的数据从所述存储服务器的内存中释放,否则,继续缓存被访问的数据。
2. 如权利要求1所述的机群文件系统中缓存管理的方法,其特征在于, 所述客户端设置有顺序计数器,所述步骤1进一步包括步骤21,判断所述文件访问请求对文件访问的起始位置是否为所述文件 上次被访问的结束位置,如果是,则将所述顺序计数器加1,否则,将所述 顺序计数器清零-,步骤22,判断所述顺序计数器是否大于2,如果是,则所述访问类型为 所述顺序访问,否则,所述访问类型为随机访问。
3. 如权利要求2所述的机群文件系统中缓存管理的方法,其特征在于, 所述歩骤21和所述步骤22间还包括步骤31,记录所述文件访问请求对所述文件访问的起始位置和所述访问 的访问粒度。
4. 如权利要求3所述的机群文件系统中缓存管理的方法,其特征在于, 所述步骤21前进一步包括,根据记录的所述文件上次被访问的起始位置和访问粒度计算所述文件上次被访问的结束位置。
5. 如权利要求4所述的机群文件系统中缓存管理的方法,其特征在于, 步骤3中读取所述读请求消息所访问的数据进一步包括步骤51,判断所述读请求消息所访问的数据是否在所述存储服务器的内 存中,如果不是,则执行步骤52;歩骤52,将所述读请求消息所访问的数据从所述存储服务器的磁盘读到所述存储服务器的内存中。
6. —种机群文件系统中缓存管理的系统,包括具有磁盘的存储服务器和 客户端,所述客户端包括用于接收应用层的文件访问请求并将所述文件访问 请求封装到读请求消息中的封装模块,其特征在于,所述客户端还包括访问类型识别模块,所述访问类型识别模块,用于识别所述读请求对应的访问模式信息;所述封装模块,还用于将所述访问模式信息封装到所述读请求消息中, 将所述读请求消息发送给所述存储服务器;所述存储服务器包括数据访问模块和缓存管理模块,所述数据访问模块,用于接收所述读请求消息,从所述磁盘读取所述读 请求消息要从所述存储服务器访问的数据,通过应答消息将所述数据发送给所述客户端;所述缓存管理模块,用于依据所述读请求消息中访问模式信息判断所述 客户端的访问模式类型是否为顺序访问,如果是,则将被访问的数据从所述 存储服务器的内存中释放,否则,继续缓存所述被访问的数据。
7. 如权利要求8所述的机群文件系统中缓存管理的系统,其特征在于, 所述客户端设置有顺序计数器,所述访问类型识别模块,进一步用于在所述文件访问请求对文件访问的 起始位置为所述文件上次被访问的结束位置时,将所述顺序计数器加1,在 所述文件访问请求对文件访问的起始位置不为所述文件上次被访问的结束位 置时,将所述顺序计数器清零;并且判断所述顺序计数器是否大于2,如果 是,则确定所述访问类型为顺序访问,否则,确定所述访问类型为随机访问。
8. 如权利要求7所述的机群文件系统中缓存管理的系统,其特征在于, 所述访问类型识别模块还用于记录所述文件访问请求对所述文件访问的起始 位置和所述访问的访问粒度。
9. 如权利要求8所述的机群文件系统中缓存管理的系统,其特征在于, 所述访问类型识别模块进一步用于根据记录的所述文件上次被访问的起始位置和访问粒度计算所述文件上次被访问的结束位置。
10.如权利要求9所述的机群文件系统中缓存管理的系统,其特征在于, 所述数据访问模块进一步用于在所述读请求消息所访问的数据未在所述存储服务器的内存中时,将所述读请求消息所访问的数据从所述存储服务器的磁盘读到所述存储服务器的内存中。
全文摘要
本发明涉及一种机群文件系统中缓存管理的方法及系统,方法包括客户端接收应用层的文件访问请求,将文件访问请求封装到读请求消息中,还包括步骤1,客户端识别读请求对应的访问模式信息;步骤2,客户端将访问模式信息封装到所述读请求消息中,将该读请求消息发送给存储服务器;步骤3,存储服务器接收读请求消息,从所述存储服务器的磁盘读取读请求消息要从所述存储服务器访问的数据,通过应答消息将该数据发送给客户端;步骤4,存储服务器从读请求消息中解析出访问模式信息,根据访问模式信息管理读请求消息所访问的数据在服务器端内存中的缓存。从而,提高存储服务器端缓存命中率,并避免顺序预取数据在各级内存中重复缓存。
文档编号G06F17/30GK101377788SQ200810223489
公开日2009年3月4日 申请日期2008年9月28日 优先权日2008年9月28日
发明者岳 刘, 劲 熊 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1