一种云存储服务客户端高效细粒度数据缓存系统与方法

文档序号:7766613阅读:292来源:国知局
专利名称:一种云存储服务客户端高效细粒度数据缓存系统与方法
技术领域
本发明属于计算机数据存储技术领域,尤其是一种云存储服务客户端高效细粒 度数据缓存系统与方法,在网络带宽较低时,尽可能提高用户的使用体验,并节省网络 带宽和服务器端计算资源。
背景技术
云存储是一种目前迅速兴起、前景广阔的数据服务,它允许用户将数据放在专 业存储服务运营商提供的存储空间里,用户能够在任何时间从任何地点通过网络方便地 访问自己的数据。随着目前个人数据量的增长,以及越来越多的人共享数据,云存储服 务得到了越来越广的应用,同时,云存储中的数据量也越来越大。由于目前用户还是通 过网络来访问云存储中的数据,而网络带宽的增长速度远远跟不上数据量的增长速度, 所以如何在有限带宽下有效提高用户的使用感受就成为一个关键的技术问题。目前流行的云存储服务都是以文件作为最小操作单位的。一般用户态的应用程 序在访问文件时,文件系统需要能够提供完整的文件信息和文件内容才允许应用程序访 问,因此如果直接在用户态应用层提供缓存机制,那么一般只能实现文件粒度的缓存。 按文件粒度进行操作可以提供很多文件系统自有的特性,例如数据一致性,对一个文件 的关闭操作标志了这个文件的一个一致点,按照关闭操作来处理文件可以更简单地避免 客户端与云存储服务器端不一致的情况发生。但这种传统的以文件为粒度的缓存方法并 不高效,它要么占用客户端大量空间存储很多极少被访问的数据,要么牺牲大量网络带 宽靠频繁从服务器下载来实现缓存文件替换,难以同时实现缓存空间和网络带宽的高效 利用。当用户需要操作一个文件时,即使只是想访问或修改该文件的一小部分,也必须 要求客户端存储有该文件的完整副本,如果客户端没有这个文件的副本,则要从云存储 的服务器端通过网络有可能是广域网将整个文件取回,而且,当待访问的文件较大而本 地又无缓存时,将完整文件从云存储服务器下载到客户端会造成客户端长时间等待,这 一操作不仅耗费大量带宽和服务器端资源,而且还需要用户等候很长时间,例如,即使 在当前较好的网络条件下如2Mbps接入带宽,取回几十M大小的文件就至少需要让用户 等候几分钟的时间才能开始访问自己的数据,这无疑会严重损害用户体验。由于上述原因,目前大部分云存储服务,例如卓普鲍克斯(Dropbox)公司提供 的云存储服务客户端Dropbox,以及亚马逊(Amazon)公司提供的云存储服务S3,只能用 于备份文件,并要求客户端具有跟该用户在云存储服务端相同大小的存储空间来放置服 务器所有个人文件的副本,只有这样才能让用户快速、便捷地使用自己的数据。然而, 以上方法直接导致用户的云存储空间受限于本地客户端的存储能力,无法真正实现让云 存储服务提供无限存储能力,允许用户按需购买任意大存储空间的目标。这将导致云存 储服务无法充分发挥其优势,甚至难以在实际中得到广泛的应用和快速的发展。
发明内容
为克服现有技术的不足,本发明的目的在于提供一种云存储服务客户端高效细 粒度数据缓存系统与方法。为实现上述目的,本发明采取的总体技术方案为,一种云存储服务客户端高效 细粒度数据缓存系统,包括应用程序模块、文件系统模块、服务器、虚拟网络存储模 块,其特征在于,该系统还包括以下模块本地移动存储设备,用于缓存服务器文件的部分数据和服务器文件的全部元数 据;用户态文件系统模块,用于重新定向本地文件系统对虚拟网络设备的读写操 作,实现应用程序对本地文件与云存储服务器上文件的无差别访问。所述虚拟网络存储模块为卷形式,客户端对卷的操作全部由用户态文件系统模 块完成。所述客户端文件系统采用稀疏文件格式存储数据。所述稀疏文件与客户端原文件一一对应。一种云存储服务客户端高效细粒度数据缓存实现方法,包括以下步骤步骤1、客户端的用户态文件系统模块拦截对移动设备的读写操作;步骤2、根据读写操作的内容进行判断,如果读取的内容在本地有缓存,则从本 地的稀疏文件中读出,如果没有则按照读取操作的大小向服务器请求数据,并将写入的 数据直接放入本地缓存中;步骤3、同步线程检查本地的待同步数据表,将客户端新写入的数据上传到服务
ο所述步骤1中的读操作具体包括以下步骤步骤11、客户端应用程序模块读取文件内容,用户态文件系统模块捕获其读取 的文件偏移和请求长度;步骤12、根据本地缓存的索引检查需要读取的数据是否在本地存在,如果存在 则从本地缓存中读取需要的数据,更新被读取文件在本地缓存的文件元信息,并将更新 后的元信息放入本地的待同步缓存表中;步骤13、不存在则检查当前的联网状态,联网则从云存储服务器端读取需要的 数据,将从服务器端取得的数据复制一份存在本地移动设备中,并更新本地缓存数据的 索引,未联网则返回读取数据失败;所述步骤12中的文件元信息包括文件名、文件的完整路径、创建时间、最后访 问时间、最后修改时间、文件大小或文件属性等信息。所述步骤2中的同步缓存表记录有文件的全局标示,以及数据块相对于整个文 件的偏移地址和长度。所述步骤1中的写操作具体包括以下步骤步骤21、客户端应用程序模块向移动设备中的文件写入数据,用户态文件系统 模块捕获其写请求的文件偏移以及写入内容的长度;步骤22、检查当前联网状态,联网则将数据写入本地移动存储设备,更新本地 缓存数据索引和本地缓存的元数据信息,将数据写入远程数据存储服务器,并更新远程元数据服务器上的文件元信息,否则将数据写入本地移动存储设备,更新本地缓存数据索 弓丨,并更新本地缓存的元数据信息,将写入数据的信息记录到客户端待同步缓存表中;步骤23、检查服务器端数据与元数据是否写入成功,如果成功则结束,否则将写入数据的信息记录到客户端待同步缓存表中,等待联网后写入或者重新写入。所述步骤3进一步包括以下步骤步骤31、检查待同步缓存表中是否有需要同步的项;步骤32、检查是否处于联网状态,如果联网则从待同步缓存表中选取一项,将 需要同步的元数据发送到元数据服务器上,否则同步线程休眠,等待下一次唤醒;步骤33、检查发送是否成功,如果成功则删除待同步缓存表中已经处理的一 项,并继续检查待同步缓存表中是否有需要同步的项。本发具有明显的优点和积极效果。1、本发明解决了云存储系统中客户端在网络 带宽资源有限情况下不能够快速高效访问云存储中文件的问题。2、本发明通过用户态文 件系统,将客户端对云存储中文件的操作捕获,并利用客户端移动存储设备作为缓存介 质,通过缓存机制实现高效访问云存储中文件的目的,让云存储空间摆脱本地客户端存 储能力的限制,实现云存储服务对本地存储空间的无限扩展。3、与传统的以文件为操 作单位的客户端数据缓存方法相比,本发明提出的细粒度数据缓存方法还在客户端没有 待访问文件的缓存数据如客户端数据遗失,或者从某个新的位置首次访问云存储空间中 的文件等情况下具备显著优势,能够让用户立刻实现对任何文件任何位置的迅速随机访 问,而传统方法需要用户等候很长时间,直至整个文件下载完毕才能访问其数据,该发 明能有效节省和充分利用带宽资源。4、本发明能够捕获用户态应用程序对云存储空间内 文件的所有操作,并能够按照需要重新定向读写操作到客户端缓存,减少了客户端访问 云存储后台中文件的等待时间,在客户端缓存了所有访问过文件的元信息,提高了查看 文件列表的效率,在客户端缓存云存储中文件的内容时,利用稀疏文件作为存储方式, 不用缓存完整文件,提高了客户端存储空间的有效利用率,提升了客户端重复访问同一 文件的效率,同时减少了客户端访问未缓存文件的等待时间。5、本发明利用用户态文件 系统,将客户端对文件的各种操作捕获,判断每次读写操作的细粒度数据是否在客户端 缓存中,即使客户端缓存中没有需要的数据,那么也只是从云存储后台获取一次读写所 需的数据量,而和文件大小无关,所以,可以极大提高客户端存储空间和网络带宽的利 用效率,并减少客户端等待时间,提高客户端用户的体验。


图1为本发明的模块结构示意图;图2为本发明的客户端数据缓存结构图;图3为本发明的主流程图;图4为本发明的客户端读数据流程图;图5为本发明的客户端写数据流程图;图6本发明的本地待同步缓存表与服务器端同步流程图。
具体实施例方式下面结合说明书附图来说明本发明的具体实施方式
。本发明的系统模块组成结构如图1所示,包括以下模块应用程序模块1,该模块为操作系统上实际运行的程序,会对存储在云存储上的 文件进行操作;文件系统模块2,该模块为操作系统上的文件系统,客户端移动存储设备的文件 系统采用了 Windows操作系统中的NTFS文件系统;用户态文件系统模块3,该模块为自定义的文件系统模块,用于将文件系统对磁 盘的读写操作转化到文件系统上层的应用程序上,采用驱动实现,将文件系统的底层操 作转化到用户态上;服务器4,包括数据服务器和元数据服务器,分别记录数据和文件的元信息;虚拟网络存储模块5,该模块虚拟了云存储后台对客户端提供的存储空间,表现 为一个卷的形式,客户端对此卷的操作全部由用户态文件系统完成;本地移动存储设备6,用于缓存服务器文件的部分数据和服务器文件的全部元数 据。本发明的客户端数据缓存结构如图2所示,在客户端与服务器4端,数据可以按 照任意的文件格式存储。服务器4端有完整的文件,并且会有文件的索引,本发明用数 据库来做服务器4端文件的索引,每一个数据库的表项都由文件全局唯一标示和文件的 元信息,在文件的唯一标示上建立数据库索引,来快速找到需要的文件。客户端用稀疏 文件来存储数据,每个稀疏文件对应原来的一个文件,稀疏文件的好处是可以有效利用 客户端的存储空间,允许文件中间有空洞,不占用实际存储空间。在客户端首先有稀疏 文件与原文件对应的索引,客户端的索引同样用数据库实现,每个文件的索引包括一个 数据库表项,表项中记录文件的全局唯一标示和文件元数据,用以快速查找原文件在本 地缓存中对应的稀疏文件。同时,稀疏文件还有一个内容索引,由于稀疏文件允许中间 存在空洞,所以本发明建立了稀疏文件内容的索引,用以标示稀疏文件中实际存在的数 据,稀疏文件的内容索引同样用数据库记录,每条记录都包括文件的唯一标示、偏移地 址、记录长度。偏移地址是稀疏文件中一个包含实际数据的块的起始地址,记录长度是 相应数据块的大小。参阅图3,本发明的主流程图,云存储服务客户端高效细粒度数据缓存方法,包 括以下步骤,首先,客户端的用户态文件系统模块2拦截对本地移动存储设备6的读写操 作;然后,根据读写操作的内容进行判断,如果读取的内容在本地客户端有缓存,则从本地的稀疏文件中读出,如果没有,则按照读取操作的大小向服务器4请求数据, 并将写入的数据直接放入本地客户端缓存中;同步线程检查本地的待同步数据表,将客户端新写入的数据上传到服务器4端。本发明的客户端读数据流程如图4所示,包括以下步骤步骤1、客户端应用程序模块1读取文件内容,用户态文件系统捕获其读取的文件偏移和请求长度。例如读取文件位置从1024KB开始的64KB的数据。步骤2、根据本地缓存的索引检查需要读取的数据是否在本地存在,如果存在则 转步骤3,否则转步骤6。步骤3、从本地缓存中读取需要的数据。步骤4、更新被读取文件在本地缓存的文件元信息。文件元信息包括文件名、文 件的完整路径、创建时间、最后访问时间、最后修改时间、文件大小、文件属性等信息。步骤5、将更新后的元信息放入本地的待同步缓存表中。同步缓存表中记录了文 件的全局标示,以及数据块相对于整个文件的偏移地址和长度,返回成功;步骤6、检查当前的联网状态,如果为联网状态则转步骤7,否则返回读取数据 失败;步骤7、从云存储服务器端读取需要的数据;步骤8、将从服务器4端取得的数据复制一份存在本地移动设备中,并更新本地 缓存数据的索引,转步骤5。本发明的写数据流程图如图5所示,包括以下步骤步骤1、客户端应用程序向移动存储设备6中的文件写入数据,用户态文件系统 模块2捕获其写请求的文件偏移以及写入内容的长度。步骤2、检查当前的联网状态,如果联网则转步骤3,否则转7步骤。步骤3、将数据写入本地移动存储设备6,更新本地缓存数据索引,并更新本地 缓存的元数据信息。步骤4、将数据写入远程数据存储服务器,并更新远程元数据服务器上的文件元 fn息ο步骤5、检查服务器4端数据与元数据是否写入成功,如果成功则转步骤6,否则转步骤8。步骤6、返回写数据成功。步骤7、将数据写入本地移动存储设备6,更新本地缓存数据索引,并更新本地 缓存的元数据信息。步骤8、将写入数据的信息记录到客户端待同步缓存表中,等待联网后写入或者 重新写入,转步骤6。请参阅图6本发明的本地待同步缓存表与服务器端的同步过程示意图,同步过 程是时钟实现的一个守护线程,经过固定时间周期线程开始工作,同步过程包括以下步 骤步骤1、检查待同步缓存表中是否有需要同步的项。同步缓存表为数据库中的一 个表,如果该表中存在表项,则说明有需要同步的数据,否则没有,如果有则转步骤2, 否则转步骤6。步骤2、检查是否处于联网状态,如果联网则转步骤3,否则转步骤6。步骤3、从待同步缓存表中选取一项,将需要同步的元数据发送到元数据服务器 上,数据发送到数据服务器,转步骤4。步骤4、检查发送是否成功,如果成功则转步骤5,否则转步骤7。步骤5、删除待同步 缓存表中已经处理的一项,转步骤1。
步骤6、同步线程休眠,等待下一次唤醒。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的 技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的 任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
权利要求
1.一种云存储服务客户端高效细粒度数据缓存系统,包括应用程序模块、文件系统 模块、服务器、虚拟网络存储模块,其特征在于,该系统还包括以下模块本地移动存储设备,用于缓存服务器文件的部分数据和服务器文件的全部元数据;用户态文件系统模块,用于重新定向本地文件系统对虚拟网络设备的读写操作,实 现应用程序对本地文件与云存储服务器上文件的无差别访问。
2.根据权利要求1所述的一种云存储服务客户端高效细粒度数据缓存系统,其特征在 于,所述虚拟网络存储模块为卷形式,客户端对卷的操作全部由用户态文件系统模块完 成。
3.根据权利要求1所述的一种云存储服务客户端高效细粒度数据缓存系统,其特征在 于,所述客户端文件系统采用稀疏文件格式存储数据。
4.根据权利要求1所述的一种云存储服务客户端高效细粒度数据缓存系统,其特征在 于,所述稀疏文件与客户端原文件一一对应。
5.一种云存储服务客户端高效细粒度数据缓存实现方法,包括以下步骤步骤1 客户端的用户态文件系统模块拦截对移动设备的读写操作;步骤2:根据读写操作的内容进行判断,如果读取的内容在本地有缓存,则从本地 的稀疏文件中读出,如果没有则按照读取操作的大小向服务器请求数据,并将写入的数 据直接放入本地缓存中;步骤3:同步线程检查本地的待同步数据表,将客户端新写入的数据上传到服务器。
6.根据权利要求5所述的一种云存储服务客户端高效细粒度数据缓存实现方法,其特 征下在于,所述步骤1中的读操作具体包括以下步骤步骤11、客户端应用程序模块读取文件内容,用户态文件系统模块捕获其读取的文 件偏移和请求长度;步骤12、根据本地缓存的索引检查需要读取的数据是否在本地存在,如果存在则从 本地缓存中读取需要的数据,更新被读取文件在本地缓存的文件元信息,并将更新后的 元信息放入本地的待同步缓存表中;步骤13、不存在则检查当前的联网状态,如、联网则从云存储服务器端读取需要的 数据,将从服务器端取得的数据复制一份存在本地移动设备中,并更新本地缓存数据的 索引,未联网则返回读取数据失败。
7.根据权利要求6所述的一种云存储服务客户端高效细粒度数据缓存实现方法,其特 征下在于,所述步骤2中的文件元信息包括文件名、文件的完整路径、创建时间、最后 访问时间、最后修改时间、文件大小或文件属性等信息。
8.根据权利要求6所述的一种云存储服务客户端高效细粒度数据缓存实现方法,其特 征下在于,所述步骤2中的同步缓存表记录有文件的全局标示,以及数据块相对于整个 文件的偏移地址和长度。
9.根据权利要求5所述的一种云存储服务客户端高效细粒度数据缓存实现方法,其特 征下在于,所述步骤1中的写操作具体包括以下步骤步骤21、客户端应用程序模块向移动设备中的文件写入数据,用户态文件系统模块 捕获其写请求的文件偏移以及写入内容的长度;步骤22、检查当前联网状态,如果联网则将数据写入本地移动存储设备,更新本 地缓存数据索引和本地缓存的元数据信息,将数据写入远程数据存储服务器,并更新远 程元数据服务器上的文件元信息,否则将数据写入本地移动存储设备,更新本地缓存数 据索引,并更新本地缓存的元数据信息,将写入数据的信息记录到客户端待同步缓存表 中;步骤23、检查服务器端数据与元数据是否写入成功,如果成功则结束,否则将写入 数据的信息记录到客户端待同步缓存表中,等待联网后写入或者重新写入。
10.根据权利要求5所述的一种云存储服务客户端高效细粒度数据缓存实现方法,其 特征下在于,所述步骤3进一步包括以下步骤步骤31、检查待同步缓存表中是否有需要同步的项;步骤32、检查是否处于联网状态,如果联网则从待同步缓存表中选取一项,将需要 同步的元数据发送到元数据服务器上,否则同步线程休眠,等待下一次唤醒;步骤33、检查发送是否成功,如果成功则删除待同步缓存表中已经处理的一项,并 继续检查待同步缓存表中是否有需要同步的项。
全文摘要
一种云存储服务客户端高效细粒度数据缓存系统,包括应用程序模块,文件系统模块,服务器、虚拟网络存储模块和本地移动存储设备、用户态文件系统模块。客户端的用户态文件系统模块拦截对移动设备的读写操作;根据读写操作的内容进行判断,如果读取的内容在本地有缓存,则从本地的稀疏文件中读出,如果没有则按照读取操作的大小向服务器请求数据,并将写入的数据直接放入本地缓存中;同步线程检查本地的待同步数据表,将客户端新写入的数据上传到服务器。本发明具有在网络带宽资源有限情况下,能够快速高效访问云存储中的文件等优点。
文档编号H04L29/08GK102014158SQ20101056279
公开日2011年4月13日 申请日期2010年11月29日 优先权日2010年11月29日
发明者和晋阳, 徐涛, 汪东升, 牟宏磊, 郭松柳 申请人:北京兴宇中科科技开发股份有限公司, 清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1