linux文件中链接文件系统,一种基于Linux文件系统文件链接的缓存LRU方法

一种基于Linux文件系统文件链接的缓存LRU方法

【技术领域】

[0001]本发明涉及信息技术领域,特别是涉及一种基于Linux文件系统文件链接的缓存LRU方法。

【背景技术】

[0002]目前,随着家庭宽带网络、无线宽带技术,以及终端设备性能的不断发展,基于多媒体的应用越来越广泛,特别是互联网视频的应用更是成为推动这些技术发展的源动力。作为互联网视频VOD的应用,提高视频播放的流畅度是一个非常重要的指标之一。除了编解码技术,视频CDN技术是解决用户视频播放流畅度的首要环节,而CDN技术中除了智能调度技术,边缘服务器的性能优化也是非常重要的环节之一。

【发明内容】

[0003]本发明所要解决的技术问题是边缘缓存服务器缓存管理的问题,通过采用一种基于Linux文件系统文件“软硬链接”功能的缓存LRU方法,能够提升缓存系统的效率,从而提升用户体验。

[0004]本发明解决其技术问题所采用的技术方案是:提供一种基于Linux文件系统文件链接的缓存LRU方法,利用Linux系统所提供的文件链接的功能,对被缓存的文件对象采用硬链接来记录文件的被访问时间,用软链接来指向最近被访问的Cache对象的硬链接版本,并通过按时间顺序批量淘汰的方式来实现LRU的功能。

[0005]当Cache对象进行存入时,包括以下步骤:

[0006]当有请求进入的时候,将请求的URL映射为相对路径;

[0007]根据计算得到的该Cache对象的相对路径,得到当前访问时间对应的“/.v_日期/”的物理文件存储目录,并将Cache对象存储到该路径中;

[0008]创建一个软链接文件指向所述相对路径。

[0009]当Cache对象进行查找时,包括以下步骤:

[0010]当有请求进入的时候,将请求的URL映射为相对路径;

[0011]根据计算得到的该Cache对象的相对路径,查找磁盘中的软链接文件,如果没有找到,直接返回Cache对象没有找到,并结束;

[0012]打开软链接文件,读取到对应的最近一次访问的该文件的物理路径;

[0013]如果以上软链接文件中对应的物理路径的文件在磁盘上存在,并且当前访问的时间对应的“/.v_日期/”目录和当前软链接文件对应的物理文件路径中的“/.v_日期/”目录不相同,则重新硬链接一个新的“/.v_日期/相对路径”的物理文件,并修改软链接文件指向该物理文件;

[0014]如果以上软链接文件中对应的物理路径的文件在磁盘上不存在,则直接返回Cache对象没有找到。

[0015]当Cache对象进行淘汰时,包括以下步骤:

[0016]淘汰程序对所有当前磁盘上带有“/.v_日期/”的目录进行搜索,得到“/.v_日期/”目录列表;

[0017]对得到的目录列表按照ASCII顺序从小到大进行排序,也就是得到了按照访问日期排序的目录列表;

[0018]对这个经过排序的目录列表从头到尾进行扫描,并执行相应删除操作,直至可用空间已经达到阈值规定的要求或者所有”/.v_日期/”目录被删除完。

[0019]所述对这个经过排序的目录列表从头到尾进行扫描,并执行相应删除操作具体包括:

[0020]对当前“/.v_日期/”下面的文件采用目录深度优先的方式进行扫描,对文件进行删除,如果扫描到的子目录为空,则同时把子目录删除;

[0021]每次删除一个文件后,判断可用空间是否已经高于设定的阈值,如果没有达到这个阈值,则持续进行递归删除;

[0022]如果整个当前”/.v_日期/”下面的所有文件和子目录被删除完之后,空间仍然不够,则获取下一个”/.v_日期/”目录,执行删除操作。

[0023]当Cache对象进行删除时,包括以下步骤:

[0024]当有请求进入的时候,将请求的URL映射为相对路径;

[0025]根据计算得到的该Cache对象的相对路径,查找磁盘中的软链接文件,如果没有找到,直接返回Cache对象没有找到,并结束;

[0026]打开软链接文件,读取到对应的最近一次访问的该文件的物理路径;如果这个物理路径对应的文件存在,则删除该物理文件,同时删除该软链接文件。

[0027]当Cache对象进行更新时,采用对Cache对象进行删除后存入的方式进行处理。

[0028]有益效果

[0029]由于采用了上述的技术方案,本发明与现有技术相比,具有以下的优点和积极效果:本发明利用Linux文件系统本身提供的文件链接的功能(包括软硬链接)实现对缓存对象实现LRU的管理,能够有效实现缓存系统冷门内容的淘汰和热点内容的保护,从而在有限的磁盘空间上尽可能提高内容访问命中率,提升缓存系统的效率,提升用户体验,从技术上降低整体运营成本。本发明主要应用于CDN(内容分发网络)领域的边缘缓存服务器,对于提升边缘服务器文件请求命中率和服务性能能够起到显著的效果。

【具体实施方式】

[0030]下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。

[0031]本发明的实施方式涉及一种利用Linux系统(或者类Unix系统)所提供的文件链接的功能,对被缓存的文件对象采用硬链接来记录文件的被访问时间,用软链接来指向最近被访问的Cache对象的硬链接版本,并通过按时间顺序批量淘汰的方式来实现LRU的功能。

[0032]以下对本方法的具体实现方式进行说明。

[0033]首先,先说明一下Cache对象在磁盘上的存储方式。

[0034]1.Cache对象是以文件的方式存储到磁盘上的。每个Cache对象会对应一个URL,这个URL是用户访问的路径,将URL的相对路径部分(除了 http://domain部分)进行HASH,映射成磁盘中的存储路径。譬如,对于URL为http://vod.test, com/movie/file/path/name, ts 的 Cache 对象,我们用 /movie/f ile/path/name.ts 部分进行 MD5hash,计算得到MD5值是8f595e5b69f86bfb905ff6b9167f8138,然后把这个MD5值分为三段,第一个字节为一段,第二第三个字节为第二段,第四个及之后的字节为第三段,加上最后的文件名扩展名部分,映射成磁盘上的相对路径,如:8/f5/95e5b69f86bfb905ff6b9167f8138.ts,从而可以存储到磁盘上。

[0035]2.对于存储到磁盘上的Cache对象,为了实现LRU的管理,需要对它们标识访问时间。本身Linux文件系统可以对每个文件记录其最后访问时间的,但是如果不进行一些处理,本身Linux文件系统是不能对位于不同目录下面的所有文件自然地按照访问时间进行排序,并能够被程序按照访问时间的递增顺序进行扫描的。这样,必然导致实现LRU淘汰的时候计算复杂并且性能低下。而且,一般情况下,在对于i/o性能要求极高的Cache系统中,默认都会关闭Iinux文件系统的对文件和目录的访问时间的自动修改功能来减少不必要的磁盘1,从而也限制了利用文件系统自己记录的文件访问时间来进行LRU的实现。

[0036]为了解决这个问题,对于每个Cache对象对应的文件,本方法按照其访问日期,采用硬链接的方式,存储到以日期为根目录的路径中去。如上面的http://vod.test, com/movie/f ile/path/name.ts的Cache对象,如果2015-01-01日有访问这个文件,则在磁盘的 /.v_20150101/ 目录下面,存储相对路径为 8/f5/95e5b69f86bfb905ff6b9167f8138.ts这样一个文件。如有2015-01-02日又有该文件的访问,则在磁盘的/.v_20150102/目录下面,存储相对路径为8/f5/95e5b69f86bfb905ff6b9167f8138.ts这样一个文件。由于相同相对路径的文件,实际上对应同一个Cache对象,为了减少磁盘空间的消耗,采用/.v_20150101/8/f5/95e5b69f86bfb905ff6b9167f8138.ts 和 /.v_20150102/8/f5/95e5b69f86bfb905ff6b9167f8138.ts相互之间硬链接的方式进行链接,这样子虽然看到的是两个文件,但是实际上在磁盘上保存的只是一份Copy。

[0037]这样子,每个/.v_日期/的目录自然就对Cache对象按照访问日期进行了排序。从而能够对文件的访问时间根据所在的目录来进行识别。不失一般性,本方法中描述的按照日期来划分文件访问时间的方式,也可以进行更细粒度的划分,譬如按照小时,甚至分钟,这个需要根据缓存系统的实际业务需要来确定。

[0038]3.另外,对Cache对象最近一次被访问的记录用Linux文件系统软链接的方式进行标注,存储在不带“/.v_日期/”的相对目录中。譬如,对于以上http://vod.test, com/movie/f ile/path/name.ts对应的Cache对象,它映射到磁盘的相对路径为:8/f5/95e5b69f86bfb905ff6b9167f8138.ts,它在2015年10月I日被最后一次访问,那么在磁盘上对应存放一个路径为/8/f5/95e5b69f86bfb905ff6b9167f8138.ts软链接,并将该软链接指向路径为 1.v_20151001/8/f5/95e5b69f86bfb905ff6b9167f8138.ts 的真实物理文件。

[0039]依据以上文件存储方式,下面对Cache对象的存入、查找、淘汰、删除、更新五个必要环节的处理流程分别进行阐述。

[0040]Cache对象的存入:将一个原本在Cache系统里面不存在的Cache对象存储到磁盘上。

[0041]1.当有请求进入的时候,将请求的URL映射为相对路径。如将http://vod.test,com/movie/file/path/name.ts 对应的 Cache 对象,映射为:8/f5/95e5b69f86bfb905ff6b9167f813

你可能感兴趣的:(linux文件中链接文件系统)