一种并行网络文件系统中预读小文件后忙等的系统及方法

文档序号:9375739阅读:518来源:国知局
一种并行网络文件系统中预读小文件后忙等的系统及方法
【技术领域】
[0001]本发明涉及并行网络文件系统中文件间数据预读取后的缓存命中机制,特别涉及一种并行网络文件系统中预读小文件后忙等的系统及方法。
【背景技术】
[0002]随着大数据时代的来临,全球数据信息量迅猛增长。在电子商务、社交网络、科学计算等领域中存在越来越多的小尺寸的文件。创下纽约交易所最大规模IPO的阿里巴巴集团,其旗下重要电商交易平台一一淘宝,在2010年就已保存了约286亿张图片,平均大小仅为17.45KB,8KB以下图片占总量的61%。从某种意义上来说,当前并不存在纯粹的大文件应用。人类逐步迈入“海量小文件的时代”。
[0003]并行网络文件系统(pNFS)采用元数据与数据服务分离结构,客户端通过带外访问模式直接访问存储设备,在大文件访问过程中性能极佳,同时,又因其广泛的兼容性和扩展性,得到工业界和学术界的支持,逐渐成为事实上的分布式文件系统标准。在文件“小而多”的发展趋势下,并行网络文件系统越来越多地承担了小文件管理的重任。然而,由于缺乏针对小文件的访问优化,小文件的性能较差。
[0004]小文件数据访问时,数据访问随机性强、1粒度小、磁盘吞吐量低。图1测试了在单线程随机访问时,1粒度对磁盘吞吐量的影响。对于4KB粒度的随机1访问,其磁盘吞吐量仅为6.56MBps ;对于IMB粒度的随机1访问,其磁盘吞吐量可达到75.09MBps。4KB和IMB数据访问的磁盘吞吐量相差达11倍以上。对于大于IMB粒度的随机1访问,磁盘吞吐量保持高量稳定。磁盘“善于顺序读,不善于随机读”、“善于大粒度10,不善于小粒度10”的特性,与小文件访问过程中“大量的随机、小粒度10”的特点形成了难以逾越的鸿沟,磁盘吞吐量低的问题暴露无遗。
[0005]在先前的技术研究中,提出一种基于分布式文件系统的数据预读装置及其方法(张军伟、杨洪章、邵冰清等,申请号201410108037.6),该种方法同步地预读文件间的数据,在数据页面尚未从磁盘返回之前,数据页面处于加锁状态,即使后续的数据页面已在缓存中,应用程序也需要等待当前数据页面解锁后才能读取内容,这对于系统性能产生了很大的影响。
[0006]针对现实需求以及当前相关研究的不足有必要提出一种并行网络文件系统中预读文件间数据后读取忙等的系统及方法,以有效隐藏加锁页面的等待时延,能够从根本上克服原有技术“闲等”的弊端,对于系统性能会有十分显著的正面影响。

【发明内容】

[0007]本发明的目的在于提供一种并行网络文件系统中预读小文件后忙等的系统及方法,用于有效隐藏加锁页面的等待时延,以从根本上克服“闲等”的弊端。
[0008]为了实现上述目的,本发明提供一种并行网络文件系统中预读小文件后忙等的系统,包括:
[0009]客户端,用于根据当前访问文件的文件布局确定当前访问文件的数据页面数量,并访问磁盘中当前访问文件的数据页面;
[0010]服务器端,用于获取当前访问文件的文件布局并发送给客户端;
[0011]客户端当上层应用在缓存中查找到被加锁的当前数据页面时,将该当前数据页面标记为“未访问”,跳过该当前数据页面,访问下一个数据页面,待全部数据页面访问完成后,对该当前数据页面进行再次访问。
[0012]所述的系统,其中,客户端在匿名页缓存中通过双向链表的方式组织匿名页,该双向链表的组织方式为二级索引,通过检查该双向链表中是否有相应页面的方式判断匿名页缓存中是否有该当前数据页面。
[0013]所述的系统,其中,客户端根据该文件布局判定页面缓存中是否有该当前数据页面,当页面缓存中有该当前数据页面时,进一步判定该当前数据页面是否为最后一个数据页面;当页面缓存中无该当前数据页面时,则进一步判定匿名页缓存中是否有该当前数据页面;
[0014]客户端当判定该当前数据页面为最后一个数据页面时,进一步判定当前访问文件的加锁页面数量是否为0,若为0,则进一步判断当前访问文件是否为最后一个文件,若不为0,则判断当前数据页面是否标记为“未访问”:若是,则等待被解锁,并在解锁后删除标记,将文件的加锁页面数量减I并将数据页面返回给上层应用,若否,将数据页面返回给上层应用;
[0015]客户端当判定匿名页缓存中有该当前数据页面时,在匿名页缓存中将数据页面返回给上层应用;当判定匿名页缓存中无该当前数据页面时,向磁盘发出读盘请求,将读盘访问所涉及的数据页面加锁,并将当前数据页面设置为“未访问”,将该当前访问文件的加锁页面数量加1,并判定该当前数据页面是否为最后一个数据页面。
[0016]所述的系统,其中,客户端向磁盘发出读盘请求后,扩展该文件布局,并根据扩展后的文件布局向磁盘发送大粒度读盘请求;
[0017]磁盘处理该大粒度读盘请求,并根据扩展后的文件布局,将被请求大粒度数据发送给客户端;
[0018]客户端将大粒度数据的数据页面拷贝到所创建的匿名页链表中的空白匿名页中。
[0019]所述的系统,其中,所述扩展后的文件布局中扩展部分的文件布局大小等于一次大粒度请求页面数减去原始文件布局。
[0020]为了实现上述目的,本发明提供一种并行网络文件系统中预读小文件后忙等的方法,包括:
[0021]步骤一,服务器端获取当前访问文件的文件布局并发送给客户端;
[0022]步骤二,客户端根据当前访问文件的文件布局确定当前访问文件的数据页面数量,并访问磁盘中当前访问文件的数据页面;
[0023]步骤三,客户端当上层应用在缓存中查找到被加锁的当前数据页面时,将该当前数据页面标记为“未访问”,跳过该当前数据页面,访问下一个数据页面,待全部数据页面访问完成后,对该当前数据页面进行再次访问。
[0024]所述的方法,其中,所述步骤三中,包括:
[0025]客户端在匿名页缓存中通过双向链表的方式组织匿名页,该双向链表的组织方式为二级索引,通过检查该双向链表中是否有相应页面的方式判断匿名页缓存中是否有该当前数据页面。
[0026]所述的方法,其中,所述步骤三中,包括:
[0027]客户端根据该文件布局判定页面缓存中是否有该当前数据页面,当页面缓存中有该当前数据页面时,进一步判定该当前数据页面是否为最后一个数据页面;当页面缓存中无该当前数据页面时,则进一步判定匿名页缓存中是否有该当前数据页面;
[0028]客户端当判定该当前数据页面为最后一个数据页面时,进一步判定当前访问文件的加锁页面数量是否为0,若为0,则进一步判断当前访问文件是否为最后一个文件,若不为0,则判断当前数据页面是否标记为“未访问”:若是,则等待被解锁,并在解锁后删除标记,将文件的加锁页面数量减I并将数据页面返回给上层应用,若否,将数据页面返回给上层应用;
[0029]客户端当判定匿名页缓存中有该当前数据页面时,在匿名页缓存中将数据页面返回给上层应用;当判定匿名页缓存中无该当前数据页面时,向磁盘发出读盘请求,将读盘访问所涉及的数据页面加锁,并将当前数据页面设置为“未访问”,将该当前访问文件的加锁页面数量加1,并判定该当前数据页面是否为最后一个数据页面。
[0030]所述的方法,其中,所述步骤三中,包括:
[0031]客户端向磁盘发出读盘请求后,扩展该文件布局,并根据扩展后的文件布局向磁盘发送大粒度读盘请求;
[0032]磁盘处理该大粒度读盘请求,并根据扩展后的文件布局,将被请求大粒度数据发送给客户端;
[0033]客户端将大粒度数据的数据页面拷贝到所创建的匿名页链表中的空白匿名页中。
[0034]所述的方法,其中,所述步骤三中,包括:
[0035]所述扩展后的文件布局中扩展部分的文件布局大小等于一次大粒度请求页面数减去原始文件布局。
[0036]与现有技术相比,本发明的有益技术效果是:
[0037]本发明提出了一种并行网络文件系统中预读文件间数据后读取忙等的系统及方法,以提高海量小文件读访问性能。本发明提出的读取忙等的系统及方法是基于先前发明一一数据预读装置及其方法的改进。
【附图说明】
[0038]图1是不同1粒度的磁盘吞吐量。
[0039]图2是读取忙等的方法流程图。
[0040]图3是本发明并行网络文件系统中预读小文件后忙等的系统结构图;
[0041]图4是双向链表的组织方式示意图;
[0042]图5是本发明并行网络文件系统中预读小文件后忙等的方法流程图。
[0043]图6是具体而形象的优化效果。
【具体实施方式】
[0044]以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
[0045]如图2所示,是读取忙等的方法流程图。
[0046]速度再快
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1