一种云端存储系统的数据缓存方法

文档序号:7766061阅读:243来源:国知局
专利名称:一种云端存储系统的数据缓存方法
一种云端存储系统的数据缓存方法技术领域
本发明属于计算机数据存储技术领域,特别涉及到一种云端存储系统中缓存数据 的方法。
背景技术
随着信息技术的快速发展,社会信息化程度越来越高,个人拥有的数字化信息也 呈爆炸性趋势增长,在这样的背景下,存储设备成了人们日常生活中必不可少的工具。但是 各种繁杂的存储设备同时也带来了很多问题,例如个人用户多个存储设备之间如何保证数 据的一致性,如何保证所有存储设备中存放的数据的安全可靠,如何解决存储设备空间有 限等。因此,如何提供一种高效的、便于管理、空间动态增长的存储服务变成了研究的热点 问题。
计算机网络技术的快速发展给存储技术带来的新的突破,网络附属存储(NAS),存 储区域网络(SAN)等技术方兴未艾,给传统的存储技术带来了很大程度上的改观,但是这 些技术一方面非常昂贵,另一方面不适合应用在广域网范围内。由全球网络存储工业协会 (SNIA)以及亚马逊(Amazon)等公司提出的云存储(Cloud Storage)的概念针对目前的存 储技术发展趋势对未来的网络存储提出了革命性的构想数据的存储服务可以做到就像现 在的水和电的服务一样,将网络铺设到每家每户,提供各种各样的资费标准,对不同用户提 供不同的服务。这样做一方面可以为用户提供非常优质的存储服务,例如可以提供存储空 间的动态增长服务和网络中任意点接入;另一方面做到了对用户透明,将所有的技术问题 都交给专门的云存储服务提供商去解决,用户不必担心数据的可靠性和安全性等问题;同 时还可以为用户提供更加优质便宜的存储服务,使得用户不必花大量的开销维护升级存储 系统。
云存储按照架构一般分为两大块,分别是云存储服务和云端存储系统。云存储服 务是指少数几家大型公司作为服务提供商提供的部署在整个因特网环境中的数据服务,可 以使用一定的接口对云存储服务进行相应的数据访问,存放在云存储服务中的数据称为云 存储数据。云端存储系统是指在客户端进行安装部署的存储系统,一般包括可动态加载的 内核模块,用于捕获文件系统命令,与云存储服务接口进行交互以提供云存储数据的网络 通信模块和用于对捕获到的命令进行处理的执行模块,执行模块通过网络通信模块与云存 储服务进行交互,不同的云端存储系统差异体现在执行模块中。存储在云端存储系统中的 文件和存储在硬盘上的文件一样,也是由很多逻辑上的数据块组成,但不同的是,云端存储 系统中的数据块也是文件,称之为数据块文件。云端存储系统负责将数据块文件存放到云 存储服务中、获取云存储服务中的数据块文件、按照捕获的文件系统命令修改数据块文件 中的数据以及管理数据块文件。
目前主流的云存储服务提供商包括亚马逊(Amazon)的S3和微软的mesh。针对不 同的云存储服务提供商,也出现了一些相应的云端存储系统。具有代表性的云端存储系统 包括Dropbox和SugarSync等,它们都是利用在客户端存放一份完整的数据备份,然后每次修改后,计算差量数据传回云存储服务;当云端存储系统访问云存储数据时,需要首先将数 据完整的下载一份存放到客户端,然后再针对已经存放至客户端的数据进行操作。这样的 策略存在以下几个明显的缺点一、访问云存储数据的效率低下云端存储系统访问云存 储服务时,需要无差别的下载所有的云存储数据到客户端,全部下载完了以后方可进行相 应的操作,使得用户需要花费大量时间等待期间的下载过程,并且如果用户仅仅只需要操 作一个小文件,却不得不将所有的数据全部从云存储服务下载下来;二、对用户不透明用 户不能够做到像访问本地文件系统数据一样访问云存储数据,需要每次打开相应的云端存 储系统,进行数据同步操作后才可以访问到云存储数据;三、对网络状态过于敏感,如果云 端存储系统在向云存储服务请求数据时出现网络故障,则所有云存储数据均不可用;发明内容
本发明的目是为克服已有技术的不足之处,提出一种云端存储系统的数据缓存方 法,该方法利用缓存数据块文件的策略以及程序局部性(locality)的优势,达到提高响应 速度的目的,同时还可以实现在断网情况下访问本地数据缓存区中的云存储数据。
本发明提出的一种云端存储系统的数据缓存方法,其特征在于,该方法使用闪存 盘(或使用SIM卡,SSD盘等存储介质)作为云端文件系统的载体,并将闪存盘划分成系统 区和数据区,系统区中存放操作系统,计算机从闪存盘进行启动;该数据区进一步划分为本 地数据缓存区和元数据数据库,本地数据缓存区中存放从云存储服务中获取的数据块缓存 文件,元数据数据库用来记录云存储数据的描述信息;
该方法中的云端存储系统包括可动态加载的内核模块,网络通信模块,以及可进 行缓存管理的执行模块;该方法包括以下步骤
1)采用闪存盘作为云端存储系统的载体,从闪存盘启动计算机,将闪存盘系统区 中的操作系统加载到计算机内存中;云端存储系统作为后台程序,随着操作系统的启动而 运行,将云端存储系统的可动态加载的内核模块加入到操作系统内核中,使得云端存储系 统对用户的表现形式为本地文件系统;
2)云端存储系统的可进行缓存管理的执行模块扫描本地数据缓存区中的数据块 缓存文件,将获取的每个数据块缓存文件对应的该数据块缓存文件所组成的文件中的数据 块编号,存放在一个内存中的有序表中;
3)对网络通信模块进行初始化,建立消息队列,通过消息队列在因特网上与云存 储服务进行交互;上层应用程序通过POSIX文件系统接口向虚拟文件系统层(vre)发送文 件系统命令;
4)云存储系统的可动态加载的内核模块透过虚拟文件系统层捕获上层应用程序 创建文件、修改文件、读取文件和删除文件的操作命令,并将这些命令重定向到可进行缓存 管理的执行模块;
5)可进行缓存管理的执行模块将捕获到的操作命令进行具体的创建文件操作、写 入数据到现有文件操作、读取文件数据操作和删除文件操作,这些操作后形成的新数据块 以文件的形式缓存到本地数据缓存区中;当写入数据到现有文件和读取现有文件时本地数 据缓存区中的数据超过设定阈值,触发可进行缓存管理的执行模块对本地数据缓存区中的 数据块缓存文件进行缓存替换,并当所需要的数据块缓存文件不在本地数据缓存区时,向云存储服务获取数据块缓存文件;
6)网络通信模块将步骤幻中形成的新的数据块缓存文件存回云存储服务,并当 所需要的数据块缓存文件不在本地数据缓存区时,从云存储服务获取。
本发明的特点及有益效果是
1、利用本发明的方法,可以利用本地数据缓存区有效地加快云端存储系统的响应 速度,带来更好的用户体验;
2、利用本发明的方法,可以实现在断网状态下访问存放在本地数据缓存区中的云 存储数据,而目前已有的云端存储系统对网络状态过于敏感,在断网状态完全无法工作;
3、与现有的云存储系统相比,本发明方法可以实现对文件的随机读写操作,从而 可以做到支持随机拖动的视频播放等操作,而不需要等待文件下载到本地后才能进行相关 操作;
4、本发明方法避免了在云端存储系统和云存储服务之间传输对方已有的数据,大 幅度降低了网络开销;
5、本发明方法避免了大量读写操作时带来的对云存储服务的压力,如果数据块缓 存文件存放在本地数据缓存区中,则直接对数据块缓存文件进行操作,避免了大量向云存 储服务请求数据时给云存储服务带来的压力;
6、与现有的云端存储系统相比,本发明方法尤其适用于具有云端存储系统本地存 储设备容量有限、云端存储系统与云存储服务之间的带宽受限、云端存储系统与云存储服 务之间网络易出现故障特点的云存储环境。


图1是本发明方法示意图。
图2是本发明方法中云端存储系统响应应用程序写入数据到现有文件命令的处 理流程图。
图3是本发明方法中云端存储系统响应应用程序读取现有文件数据命令的处理 流程图。
图4是本发明方法中云端存储系统响应应用程序删除文件命令的处理流程图。
具体实施方式
本发明提出的一种云端存储系统的数据缓存方法,结合附图及实施例详细说明如 下
本发明使用闪存盘(或使用SIM卡,SSD盘等存储介质)作为云端文件系统的载 体,并将闪存盘划分成系统区和数据区,系统区中存放操作系统,计算机从闪存盘进行启 动;该数据区进一步划分为本地数据缓存区和元数据数据库,本地数据缓存区中存放从云 存储服务中获取的数据块缓存文件,元数据数据库用来记录云存储数据的描述信息;
该方法中的云端存储系统包括可动态加载的内核模块,网络通信模块,以及可进 行缓存管理的执行模块;该方法包括以下步骤
1)采用闪存盘作为云端存储系统的载体,从闪存盘启动计算机,将闪存盘系统区 中的操作系统加载到计算机内存中;云端存储系统作为后台程序,随着操作系统的启动而运行,将云端存储系统的可动态加载的内核模块加入到操作系统内核中,使得云端存储系 统对用户的表现形式为本地文件系统;
2)云端存储系统的可进行缓存管理的执行模块扫描本地数据缓存区中的数据块 缓存文件,将获取的每个数据块缓存文件对应的该数据块缓存文件所组成的文件中的数据 块编号,存放在一个内存中的有序表中;
3)对网络通信模块进行初始化,建立消息队列,通过消息队列在因特网上与云存 储服务进行交互;上层应用程序通过POSIX文件系统接口向虚拟文件系统层(vre)发送文 件系统命令;
4)云存储系统的可动态加载的内核模块透过虚拟文件系统层捕获上层应用程序 创建文件、修改文件、读取文件和删除文件的操作命令,并将这些命令重定向到可进行缓存 管理的执行模块;
5)可进行缓存管理的执行模块将捕获到的操作命令进行具体的创建文件操作、写 入数据到现有文件操作、读取文件数据操作和删除文件操作,这些操作后形成的新数据块 以文件的形式缓存到本地数据缓存区中;当写入数据到现有文件和读取现有文件时本地数 据缓存区中的数据超过设定阈值,触发可进行缓存管理的执行模块对本地数据缓存区中的 数据块缓存文件进行缓存替换,并当所需要的数据块缓存文件不在本地数据缓存区时,向 云存储服务获取数据块缓存文件;
6)网络通信模块将步骤幻中形成的新的数据块缓存文件存回云存储服务,并当 所需要的数据块缓存文件不在本地数据缓存区时,从云存储服务获取。如图1所示。
所述闪存盘本地数据缓存区中的数据块缓存文件用来组成可以供应用程序使用 的文件;元数据数据库中设置文件(可供应用程序使用的文件)信息表、数据块信息表和文 件组成表。
所述的文件信息表如表1所示,该表中记录所有通过云端存储系统存放在云存储 服务中的文件元数据信息,包括文件标识、文件大小、文件类型、文件名、文件父目录标识、 用户访问权限以及文件的创建时间(Ctime)、修改时间(Mtime)和最后访问时间(Vtime);
表1 文件信息表
权利要求
1.一种云端存储系统的数据缓存方法,其特征在于,该方法使用闪存盘作为云端文件 系统的载体,并将闪存盘划分成系统区和数据区,系统区中存放操作系统,计算机从闪存盘 进行启动;该数据区进一步划分为本地数据缓存区和元数据数据库,本地数据缓存区中存 放从云存储服务中获取的数据块缓存文件,元数据数据库用来记录云存储数据的描述信 息;该方法中的云端存储系统包括可动态加载的内核模块,网络通信模块,以及可进行缓存 管理的执行模块;该方法包括以下步骤1)采用闪存盘作为云端存储系统的载体,从闪存盘启动计算机,将闪存盘系统区中的 操作系统加载到计算机内存中;云端存储系统作为后台程序,随着操作系统的启动而运行, 将云端存储系统的可动态加载的内核模块加入到操作系统内核中,使得云端存储系统对用 户的表现形式为本地文件系统;2)云端存储系统的可进行缓存管理的执行模块扫描本地数据缓存区中的数据块缓存 文件,将获取的每个数据块缓存文件对应的该数据块缓存文件所组成的文件中的数据块编 号,存放在一个内存中的有序表中;3)对网络通信模块进行初始化,建立消息队列,通过消息队列在因特网上与云存储服 务进行交互;上层应用程序通过POSIX文件系统接口向虚拟文件系统层(vre)发送文件系 统命令;4)云存储系统的可动态加载的内核模块透过虚拟文件系统层捕获上层应用程序创建 文件、修改文件、读取文件和删除文件的操作命令,并将这些命令重定向到可进行缓存管理 的执行模块;5)可进行缓存管理的执行模块将捕获到的操作命令进行具体的创建文件操作、写入数 据到现有文件操作、读取文件数据操作和删除文件操作,这些操作后形成的新数据块以文 件的形式缓存到本地数据缓存区中;当写入数据到现有文件和读取现有文件时本地数据缓 存区中的数据超过设定阈值,触发可进行缓存管理的执行模块对本地数据缓存区中的数据 块缓存文件进行缓存替换,并当所需要的数据块缓存文件不在本地数据缓存区时,向云存 储服务获取数据块缓存文件;6)网络通信模块将步骤幻中形成的新的数据块缓存文件存回云存储服务,并当所需 要的数据块缓存文件不在本地数据缓存区时,从云存储服务获取。
2.如权利要求1所述方法,其特征在于,所述闪存盘本地数据缓存区中的数据块缓存 文件用来组成可以供应用程序使用的文件;元数据数据库中设置文件信息表、数据块信息 表和文件组成表;所述的文件信息表中记录所有通过云端存储系统存放在云存储服务中的 文件元数据信息,包括文件标识、文件大小、文件类型、文件名、文件父目录标识、用户访问 权限以及文件的创建时间(Ctime)、修改时间(Mtime)和最后访问时间(Vtime)。
3.如权利要求2所述方法,其特征在于,所述步骤5)中的创建文件操作包括在元数据 数据库文件信息表和文件组成表中添加被创建文件的元数据信息,尔后将数据库文件以差 量传输的方式备份到云存储服务。
4.如权利要求2所述方法,其特征在于,所述步骤5)中的写入数据到现有文件操作具 体包括以下步骤(5-11)内核模块将捕获到的写入命令的参数传递给可进行缓存管理的执行模块;可 进行缓存管理的执行模块首先判断写入的字符数组长度是否包括多个数据块,如果是,则将待写入数据截断,使截断后的写入数据保证都在一个数据块内,余下数据循环此过程写 入,直至写完;接着可进行缓存管理的执行模块根据命令参数中的文件名查询文件信息表, 获得该文件的文件标识,通过获得的文件标识和命令参数中的文件偏移查询文件组成表, 获得数据块标识,通过数据块标识查询有序表,判断出该文件对应的数据块缓存文件是否 已经在本地数据缓存区中;(5-12)若判断得出数据块缓存文件不在本地数据缓存区,则根据(5-11)中获得的文 件标识和数据块标识向云存储服务发出获取数据请求,云存储服务根据文件标识和数据块 标识找到相应的数据块缓存文件并传回保存到本地数据缓存区中;若数据块缓存文件在本 地数据缓存区中,则跳过本步骤;(5-13)将数据块缓存文件中的数据读入到计算机内存中,根据(5-11)中获得的写入 命令参数,将待写入的字符数组写入该内存区域中,对该内存区域计算哈希值,通过哈希值 查询数据块信息表,如果该内存区域中的数据和某个数据块缓存文件中的数据一致,则将 该数据块缓存文件的引用数加1,否则,将内存区域中的数据写入到本地数据缓冲区中,存 放成一个新的数据块缓存文件,并将该新的数据块缓存文件标识为脏(dirty),通知内核模 块成功写入,内核模块进而通知上层应用程序成功写入;(5-14)根据写入数据的大小,修改元数据数据库中的文件信息表、数据块信息表以及 文件组成表,尔后将数据库文件以差量传输的方式备份到云存储服务;(5-15)当本地数据缓存区容量大小超过设定阈值)时,开始对本地数据缓存区进行缓 存替换;首先将没有标记为脏的数据块缓存文件传回到云存储服务,并删除这些数据块缓 存文件;如果此时本地数据缓存区容量大小已经小于设定阈值,则停止缓存替换过程;如 果此时本地数据缓存区的大小仍然大于设定阈值,则采用LRU替换算法对标记为脏的数据 块缓存文件进行替换;替换具体包括按照最后访问时间对数据块缓存文件进行排序,依次 调用云存储服务接口将存储在云存储服务中与当前标记为脏的数据块缓存文件同名的数 据块缓存文件删除,尔后将标记为脏的数据块缓存文件传回至云存储服务,接着将该数据 块缓存文件从本地数据缓存区中删除;一旦本地数据缓存区容量大小小于设定阈值,则停 止缓存替换过程。
5.如权利要求2所述方法,其特征在于,所述步骤5)中的读取现有文件数据操作具体 包括以下步骤(5-21)内核模块将捕获到的读取命令的参数传递给可进行缓存管理的执行模块,;可 进行缓存管理的执行模块首先判断待读取的数据长度是否包含文件的多个数据块,如果包 含多个数据块,则将待读取长度截断在一个数据块内,余下长度循环此过程读入,直至读 完;接着可进行缓存管理的执行模块根据命令参数中的文件名查询文件信息表,获得该文 件的文件标识,通过获得的文件标识和命令参数中的文件偏移查询文件组成表,获得数据 块标识,通过数据块标识查询有序表,判断出该文件对应的数据块缓存文件是否在本地数 据缓存区中;(5-22)若判断得出数据块缓存文件不在本地数据缓存区,则根据获得的文件标识和数 据块标识向云存储服务发出获取数据请求,云存储服务根据文件标识和数据块标识找到相 应的数据块缓存文件并传回保存到本地数据缓存区中;若数据块缓存文件在本地数据缓存 区中,则本步骤跳过;(5-23)当待读取的数据块缓存文件已经从云存储服务复制到本地数据缓存区中,缓存 管理器将数据块缓存文件读入到内存,根据(5-21)中获得的读取命令参数,读取数据块缓 存文件相应的数据,并将读取的数据返回给内核模块,内核模块进而将数据返回给上层应 用;(5-24)修改文件信息表中所读取文件标识对应的最后访问时间项,尔后将数据库文件 以差量传输的方式备份到云存储服务。
6.如权利要求2所述方法,其特征在于,所述步骤幻中的删除现有文件命令具体包括 以下步骤(5-31)内核模块将捕获到的删除文件命令的参数传递给可进行缓存管理的执行模块, 命令参数包括文件标识;根据文件标识查询文件组成表,获得组成文件的数据块标识;(5-32)根据得到的结果查询数据块信息表,将结果中的数据块标识对应的引用数减 1,当引用数为0时,将该数据块标识保存至删除表中;(5-33)根据删除表中的数据块标识,依次查询有序表,判断该数据块标识对应的数 据块缓存文件是否在本地数据缓存区中,若在本地数据缓存区中,则将数据块缓存文件删 除;(5-34)根据删除表中的数据块标识,依次调用云存储服务的删除文件接口,将云存储 服务中的相应数据块缓存文件删除;(5-35)在元数据数据库文件信息表和文件组成表中删除被删除文件的元数据信息,尔 后将数据库文件以差量传输的方式备份到云存储服务;(5-36)根据删除表中的数据块标识,依次删除数据块信息表中的记录项,接着删除文 件信息表和文件组成表中的相应记录项,通过返回值通知内核模块删除成功,内核模块进 而通知上层应用删除文件成功。
全文摘要
本发明涉及一种云端存储系统的数据缓存方法,属于计算机数据存储技术领域;该方法包括采用闪存盘作为云端存储系统的载体,从闪存盘启动计算机,将闪存盘系统区中的操作系统加载到计算机内存中;云端存储系统扫描本地数据缓存区中的数据块缓存文件,将获取的每个数据块缓存文件存放在内存中;云存储系统透过虚拟文件系统层捕获上层应用程序创建文件、修改文件、读取文件和删除文件的操作命令,这些操作后形成的新数据块以文件的形式缓存到本地数据缓存区中;网络通信模块将形成的新的数据块缓存文件存回云存储服务,并当所需要的数据块缓存文件不在本地数据缓存区时,从云存储服务获取。该方法提高了响应速度,实现了在断网情况下访问云存储数据。
文档编号H04L29/08GK102035881SQ201010554529
公开日2011年4月27日 申请日期2010年11月19日 优先权日2010年11月19日
发明者汪东升, 石伟 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1