一种安全的云存储系统的制作方法

文档序号:13218625阅读:259来源:国知局
技术领域本发明涉及云存储应用技术技术领域,具体为一种安全的云存储系统。

背景技术:
云存储是在云计算(cloudcomputing)概念上延伸和发展出来的一个新的概念,是一种新兴的网络存储技术,是指通过集群应用、网络技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统。当云计算系统运算和处理的核心是大量数据的存储和管理时,云计算系统中就需要配置大量的存储设备,那么云计算系统就转变成为一个云存储系统,所以云存储是一个以数据存储和管理为核心的云计算系统。简单来说,云存储就是将储存资源放到云上供人存取的一种新兴方案。使用者可以在任何时间、任何地方,透过任何可连网的装置连接到云上方便地存取数据。近年来频发的云存储系统安全问题说明:现有的云存储系统存在着一些漏洞,导致用户数据的私密性、完整性受到一定的威胁。

技术实现要素:
现有技术难以满足人们的需要,为了解决上述存在的问题,本发明提出了一种安全的云存储系统,采用ExaBox系统解决了目前主流云存储系统易遭受攻击和服务提供方不可信的问题,能够在提供数据同步、数据共享、文件版本控制等功能的同时为用户数据提供较强的机密性、完整性保护。为实现上述目的,本发明提供如下技术方案:一种安全的云存储系统,包括ExaBox客户端、服务器、元存储服务器和目录元数据;所述ExaBox客户端和服务器通过WebServices协议连接;所述元存储服务器通过WebServices协议连接服务器;所述目录元数据由服务器内的目录数据管理进行维护和管理;目录元数据管理包括维护Acl列表、分发密钥密文及维护SDT;所述ExaBox客户端包括版本回滚、协议通信模块、数据解密、完整性校验、监听系统和数据共享模块;所述服务器内还包括身份认证、存储控制、访问控制、共享相关操作和维护操作日志。目录树数据同步协议的算法步骤如下:1)客户端通过用户名和密码向服务器确定身份;2)客户端下载当前用户所对应的的服务器端目录树,并在内存中进行构建;3)客户端根据本地保存的文件,在内存中构建当前用户的客户端目录树;4)客户端扫描用户的工作目录,构建当前机器上的磁盘目录树;5)客户端依次比对服务器端目录树,客户端目录树和磁盘目录树中每一个节点,并记录下所有信息不一致的节点,包括节点缺失、文件的版本号不一致、文件的最后修改时间不一致;6)客户端根据步骤5)中记录的信息,依次生成数据同步所需要执行的操作(例如文件上传、下载),并以一定的格式保存到操作队列中;由于此步骤的情况较多,在此通过以下典型案例进行描述:a)若某文件在服务器端目录树中存在,而在客户端目录树和磁盘目录树中均不存在,则说明该文件是在其他机器上被上传的,对该文件进行的同步操作是下载该文件;b)若某文件在磁盘目录树中存在,而在服务器端目录树与客户端目录树中均不存在,则说明该文件是在用户离线时被创建的,需要对该文件进行上传操作处理;c)若某文件在服务器端目录树,客户端目录树和磁盘目录树中都存在,但是客户端目录树和磁盘目录树中记录的最后修改时间不一致,则说明该文件用户在离线时做了修改,因此需要将文件的版本号加1后,执行上传操作;d)若某目录在服务器端目录树中存在,而在客户端目录树和磁盘目录树中不存在,则说明该目录为其他用户离线创建,需要下载该目录及其子目录下的所有文件;e)若某文件在服务器端目录树,客户端目录树和磁盘目录树中都存在,但是服务器端目录树和客户端目录树中的版本号不一致,则说明该文件被其他用户做了修改,因此需要去服务器下载最新的版本。7)依次执行操作队列中节点所记录的操作,完成同步过程。务器与客户端各自数据的变化情况,从而确定相应文件或目录需要进行的同步操作。作为本发明的进一步技术方案:目录树数据同步协议的算法步骤如下:1)客户端通过用户名和密码向服务器确定身份;2)客户端下载当前用户所对应的的服务器端目录树,并在内存中进行构建;3)客户端根据本地保存的文件,在内存中构建当前用户的客户端目录树;4)客户端扫描用户的工作目录,构建当前机器上的磁盘目录树;5)客户端依次比对服务器端目录树,客户端目录树和磁盘目录树中每一个节点,并记录下所有信息不一致的节点,包括节点缺失、文件的版本号不一致、文件的最后修改时间不一致;6)客户端根据步骤5)中记录的信息,依次生成数据同步所需要执行的操作(例如文件上传、下载),并以一定的格式保存到操作队列中;由于此步骤的情况较多,在此通过以下典型案例进行描述:a)若某文件在服务器端目录树中存在,而在客户端目录树和磁盘目录树中均不存在,则说明该文件是在其他机器上被上传的,对该文件进行的同步操作是下载该文件;b)若某文件在磁盘目录树中存在,而在服务器端目录树与客户端目录树中均不存在,则说明该文件是在用户离线时被创建的,需要对该文件进行上传操作处理;c)若某文件在服务器端目录树,客户端目录树和磁盘目录树中都存在,但是客户端目录树和磁盘目录树中记录的最后修改时间不一致,则说明该文件用户在离线时做了修改,因此需要将文件的版本号加1后,执行上传操作;d)若某目录在服务器端目录树中存在,而在客户端目录树和磁盘目录树中不存在,则说明该目录为其他用户离线创建,需要下载该目录及其子目录下的所有文件;e)若某文件在服务器端目录树,客户端目录树和磁盘目录树中都存在,但是服务器端目录树和客户端目录树中的版本号不一致,则说明该文件被其他用户做了修改,因此需要去服务器下载最新的版本。作为本发明的进一步技术方案:文件上传算法步骤如下:1)客户端计算待上传文件的哈希值,并以此为密钥加密文件。2)若为普通文件,客户端利用主密钥(即目录密钥)加密哈希值;若为共享文件,客户端则从临时文件中获取目录密钥来加密哈希值。3)客户端将哈希值密文和文件密文合并成一个文件,并上传至服务器。4)服务器将合并后的文件保存至后台云存储中,并更新该用户的服务器端目录树。作为本发明的进一步技术方案,文件下载算法步骤如下:1)客户端下载文件,若是共享文件,则同时下载当前用户所对应的目录密钥密文。2)若是共享文件,则客户端使用当前用户的私钥解密出目录密钥,并保存在临时文件中;若是非共享文件,当前用户的主密钥即是目录密钥。3)客户端利用目录密钥从下载的文件中解密出文件密钥,继而解密出文件明文。4)客户端重新计算文件明文的哈希值,并与文件密钥做比对,进行完整性校验。本发明的目录共享算法步骤如下:1)客户端根据当前配置,选择是否需要更换目录密钥,若更换,则随机生成新的目录密钥,并用新的目录密钥加密待共享目录及其子目录中所有的文件密钥。2)客户端使用当前用户(即拥有者)的公钥加密目录密钥,并和重新生成的文件密钥密文一起上传至服务器。3)服务器为共享目录生成目录元数据,并在目录元数据中插入绝对路径、拥有者ID和拥有者密钥密文(即步骤2)中生成的目录密钥密文)。4)服务器更新当前用户的服务器端目录树,将该目录设置为共享状态。5)服务器用新的文件密钥,依次替换相应的旧文件密钥(若用户选择不更换目录密钥,则跳过此步骤。本发明的添加访问权限算法步骤如下:1)客户端从服务器(或本地临时文件)中获取并解密目录密钥。2)客户端使用待添加用户的公钥加密目录密钥,并上传至服务器。3)服务器在该共享目录所对应目录元数据的访问控制列表中插入一条新纪录,其中包含共享用户ID及步骤2)中生成的目录密钥密文。与现有技术相比,本发明的有益效果是:本发明采用ExaBox系统解决了目前主流云存储系统易遭受攻击和服务提供方不可信的问题,能够在提供数据同步、数据共享、文件版本控制等功能的同时为用户数据提供较强的机密性、完整性保护。附图说明图1为本发明的工作原理框图;图2为本发明的层级密钥管理结构示意图;图3为本发明的目录树缓存与服务器集群结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。请参阅图1,本发明提供的一种实施例:一种安全的云存储系统,包括ExaBox客户端、服务器、元存储服务器和目录元数据;所述ExaBox客户端和服务器通过WebServices协议连接;所述元存储服务器通过WebServices协议连接服务器;所述目录元数据由服务器内的目录数据管理进行维护和管理;目录元数据管理包括维护Acl列表、分发密钥密文及维护SDT;所述ExaBox客户端包括版本回滚、协议通信模块、数据解密、完整性校验、监听系统和数据共享模块;所述服务器内还包括身份认证、存储控制、访问控制、共享相关操作和维护操作日志。目录树数据同步协议的算法步骤如下:1)客户端通过用户名和密码向服务器确定身份;2)客户端下载当前用户所对应的的服务器端目录树,并在内存中进行构建;3)客户端根据本地保存的文件,在内存中构建当前用户的客户端目录树;4)客户端扫描用户的工作目录,构建当前机器上的磁盘目录树;5)客户端依次比对服务器端目录树,客户端目录树和磁盘目录树中每一个节点,并记录下所有信息不一致的节点,包括节点缺失、文件的版本号不一致、文件的最后修改时间不一致;6)客户端根据步骤5)中记录的信息,依次生成数据同步所需要执行的操作(例如文件上传、下载),并以一定的格式保存到操作队列中;由于此步骤的情况较多,在此通过以下典型案例进行描述:a)若某文件在服务器端目录树中存在,而在客户端目录树和磁盘目录树中均不存在,则说明该文件是在其他机器上被上传的,对该文件进行的同步操作是下载该文件;b)若某文件在磁盘目录树中存在,而在服务器端目录树与客户端目录树中均不存在,则说明该文件是在用户离线时被创建的,需要对该文件进行上传操作处理;c)若某文件在服务器端目录树,客户端目录树和磁盘目录树中都存在,但是客户端目录树和磁盘目录树中记录的最后修改时间不一致,则说明该文件用户在离线时做了修改,因此需要将文件的版本号加1后,执行上传操作;d)若某目录在服务器端目录树中存在,而在客户端目录树和磁盘目录树中不存在,则说明该目录为其他用户离线创建,需要下载该目录及其子目录下的所有文件;e)若某文件在服务器端目录树,客户端目录树和磁盘目录树中都存在,但是服务器端目录树和客户端目录树中的版本号不一致,则说明该文件被其他用户做了修改,因此需要去服务器下载最新的版本。7)依次执行操作队列中节点所记录的操作,完成同步过程。务器与客户端各自数据的变化情况,从而确定相应文件或目录需要进行的同步操作。作为本发明的进一步技术方案:目录树数据同步协议的算法步骤如下:1)客户端通过用户名和密码向服务器确定身份;2)客户端下载当前用户所对应的的服务器端目录树,并在内存中进行构建;3)客户端根据本地保存的文件,在内存中构建当前用户的客户端目录树;4)客户端扫描用户的工作目录,构建当前机器上的磁盘目录树;5)客户端依次比对服务器端目录树,客户端目录树和磁盘目录树中每一个节点,并记录下所有信息不一致的节点,包括节点缺失、文件的版本号不一致、文件的最后修改时间不一致;6)客户端根据步骤5)中记录的信息,依次生成数据同步所需要执行的操作(例如文件上传、下载),并以一定的格式保存到操作队列中;由于此步骤的情况较多,在此通过以下典型案例进行描述:a)若某文件在服务器端目录树中存在,而在客户端目录树和磁盘目录树中均不存在,则说明该文件是在其他机器上被上传的,对该文件进行的同步操作是下载该文件;b)若某文件在磁盘目录树中存在,而在服务器端目录树与客户端目录树中均不存在,则说明该文件是在用户离线时被创建的,需要对该文件进行上传操作处理;c)若某文件在服务器端目录树,客户端目录树和磁盘目录树中都存在,但是客户端目录树和磁盘目录树中记录的最后修改时间不一致,则说明该文件用户在离线时做了修改,因此需要将文件的版本号加1后,执行上传操作;d)若某目录在服务器端目录树中存在,而在客户端目录树和磁盘目录树中不存在,则说明该目录为其他用户离线创建,需要下载该目录及其子目录下的所有文件;e)若某文件在服务器端目录树,客户端目录树和磁盘目录树中都存在,但是服务器端目录树和客户端目录树中的版本号不一致,则说明该文件被其他用户做了修改,因此需要去服务器下载最新的版本。作为本发明的进一步技术方案:文件上传算法步骤如下:1)客户端计算待上传文件的哈希值,并以此为密钥加密文件。2)若为普通文件,客户端利用主密钥(即目录密钥)加密哈希值;若为共享文件,客户端则从临时文件中获取目录密钥来加密哈希值。3)客户端将哈希值密文和文件密文合并成一个文件,并上传至服务器。4)服务器将合并后的文件保存至后台云存储中,并更新该用户的服务器端目录树。作为本发明的进一步技术方案,文件下载算法步骤如下:1)客户端下载文件,若是共享文件,则同时下载当前用户所对应的目录密钥密文。2)若是共享文件,则客户端使用当前用户的私钥解密出目录密钥,并保存在临时文件中;若是非共享文件,当前用户的主密钥即是目录密钥。3)客户端利用目录密钥从下载的文件中解密出文件密钥,继而解密出文件明文。4)客户端重新计算文件明文的哈希值,并与文件密钥做比对,进行完整性校验。本发明的目录共享算法步骤如下:1)客户端根据当前配置,选择是否需要更换目录密钥,若更换,则随机生成新的目录密钥,并用新的目录密钥加密待共享目录及其子目录中所有的文件密钥。2)客户端使用当前用户(即拥有者)的公钥加密目录密钥,并和重新生成的文件密钥密文一起上传至服务器。3)服务器为共享目录生成目录元数据,并在目录元数据中插入绝对路径、拥有者ID和拥有者密钥密文(即步骤2)中生成的目录密钥密文)。4)服务器更新当前用户的服务器端目录树,将该目录设置为共享状态。5)服务器用新的文件密钥,依次替换相应的旧文件密钥(若用户选择不更换目录密钥,则跳过此步骤。本发明的添加访问权限算法步骤如下:1)客户端从服务器(或本地临时文件)中获取并解密目录密钥。2)客户端使用待添加用户的公钥加密目录密钥,并上传至服务器。3)服务器在该共享目录所对应目录元数据的访问控制列表中插入一条新纪录,其中包含共享用户ID及步骤2)中生成的目录密钥密文。本发明中:服务器是整个系统的控制中心,它集身份认证、访问控制、数据同步以及文件版本控制等功能于一体,通过一系列数据传输与控制操作,维护客户端和存储服务器之间的数据一致性;云存储端是一个独立的云存储平台,ExaBox系统采用OpenStack的swift项目搭建底层云存储平台来存放用户数据和系统的一些元数据信息;客户端主要负责数据加解密以及数据的共享、同步等操作。客户端与服务器、服务器与云存储平台之间以Webservice的方式进行通信;客户端之间以存放在云存储中的目录元数据为媒介,通过公私钥加密的方式分发用户数据的加密密钥。通过以上的3层密钥管理的方式,ExaBox系统只需花费少量的时间与空间,就能方便地对数量众多的密钥进行管理分发,在保证系统功能的同时,在很大程度上降低了所需的密钥管理与维护开销。这种架构有以下优点:所有数据及密钥的加解密都是在客户端进行,服务器得不到用户的数据明文,从而无法偷窥用户的数据。系统通过公私钥加密的方式传递密钥,只有数据拥有者授权且通过服务器的身份认证后,用户才能获取到数据明文,二者缺一不可,提高了用户密钥在传递过程中的安全性。系统针对目前主流云存储系统中存在的安全漏洞及攻击方式,设计并实现了目录树同步协议,在高效进行数据同步的同时,有效地阻止了这些攻击方式,提高了系统安全性。系统具有较好的可用性、可靠性和可扩展性。云端采用的Swift项目是一个有较强可靠性机制的分布式存储系统。服务器之间共用的数据内容只是用户名、密码、用户服务器端目录树及其对应的日志操作等少量数据,因此可以很容易用集群实现,从而提高整个系统的效率与可扩展性。ExaBox系统用目录树协议使系统能够在数据明文与密文之间高效同步的同时,有效地防止哈希值操纵攻击;用3层密钥管理方式来提高数据存储与共享过程中的安全性与高效性;用一些维护一致性的技术来保证共享过程中系统的最终一致性;用数据分块与断点续传的方式提高单个大文件的传输效率与易用性;用服务器端目录树中文件号和历史文件为用户提供文件版本回滚功能;用目录树统一管理和服务器集群的方式提高系统的可扩展性与整体性能。目录树数据同步协议数据同步是云存储系统最基本的功能之一,目前,云存储系统的同步协议中大都采用了Rsync方法。Rsync方法是一种增量上传的同步方法,通过比对文件块的哈希值作为判断的依据来执行数据同步操作。但是,随着云存储系统中安全机制的添加,基于Rsync方法的数据同步方式对相同数据的明文和密文之间的同步支持并不是很好(客户端保存的是数据明文,云端保存的是数据密文),而且很容易受哈希值操纵等攻击方式(详见第4节相关工作)的影响。为此,本文提出了目录树同步协议,通过构建和比对目录树,使得添加了安全机制后的云存储系统也能正确、高效地同步数据。目录树是一种用于记录本地目录和文件的状态与属性的数据结构,ExaBox系统中包括以下3种目录树:服务器端目录树(SDT)。服务器端目录树存放在服务器端,用于记录存储服务器中数据状态的实时情况。由于存储服务器只是存放数据的密文而并不记录数据的状态,服务器端目录树必须与存储服务器中的数据状态保持实时一致,使得系统通过此目录树中记录的状态,就可以了解云端的数据分布情况。客户端目录树。客户端目录树存放在客户端,用于记录用户本地数据的状态。由于用户有可能在并未开启系统客户端的情况下对其本地数据进行操作,客户端目录树记录的其实是最近一次用户退出系统客户端时候的数据状态。磁盘目录树。磁盘目录树跟前面两棵目录树不太相同,它只是用来记录用户数据在磁盘中的实时情况,因此不需要持久化,使用时直接扫描磁盘进行构建即可。由于服务器端目录树记录了数据在服务器端的基本信息,客户端目录树记录了数据在上次关闭客户端之时的基本信息,磁盘目录树记录了数据在磁盘中的信息,因此通过比对这3棵目录树,系统就可以分析出。参见说明书附图2在安全云存储系统中,如何对密钥进行管理分发是一个非常重要的问题,因为它将直接影响到整个系统的机密性、稳定性以及高效性。密钥管理的关键在于如何减少管理密钥的开销和如何能够快速获得所需的密钥,并保障数据共享过程中密钥的机密性。ExaBox系统用文件密钥、目录密钥、用户公私钥三层式的结构对众多密钥进行管理与分发。文件密钥以密文的形式与原始文件的密文一同存放在上传文件中,是层级密钥的第1层。ExaBox系统使用文件明文的哈希值作为密钥对文件进行加密,这种加密方式的好处在于:第一,数据明文的哈希值可以用作完整性校验,减少了存储空间的使用;第二,相同内容的文件经加密后所生成的密文也相同,为系统后期进行重复数据删除操作提供了可行性,能够极大地提高云存储平台的空间利用率。目录密钥以密文形式保存在目录元数据中,负责数据共享时的密钥分发,是层级密钥的第2层。在ExaBox系统中,当目录在被设置为共享时,服务器需要为该目录生成目录元数据并保存在云端。目录元数据中包含目录的绝对路径、拥有者ID、拥有者密钥密文、访问控制列表这4项,其访问控制列表中的每一项又包含了共享者的ID和该共享者所对应的目录密钥密文,以控制共享用户的访问权限。此外,ExaBox系统中的每个用户都有一个主密钥,然后,在主密钥的基础上生成目录密钥,以用来加密文件密钥(即文件明文的哈希值)。一般来说,非共享目录所对应的目录密钥就是主密钥本身,由用户设置并保管。当用户需要共享某目录时,系统根据用户的配置选择是否重新生成目录密钥,并根据需要重新计算该目录及其子目录下的所有的文件密钥,然后上传至服务器替换原有的文件密钥。当目录的拥有者想将某共享目录授权给某用户时,只需使用该用户的公钥加密此共享目录的目录密钥,然后将其存放在目录元数据的访问控制列表中即可。用户公私钥对由用户自行保管,通过配置路径的方式使用,是层级密钥中的第3层。用户在注册新帐号的同时生成公私钥对,并将公钥存放在服务器端;私钥则是用户的绝密信息,不能让其他任何人知道,一旦泄漏则必须立即向服务器申请更换公私钥对,同时撤销所有跟此用户有关的授权信息。当用户需要访问共享目录时,首先由服务器端验证其访问权限后,将数据密文和目录密钥密文返回给该用户所在的客户端,之后再由客户端使用用户私钥解密出目录密钥,最后解密出数据明文并对其进行完整性校验。数据共享与一致性ExaBox系统的最小共享单位是文件夹,用户可以将自己的文件夹(及其包含的所有文件)共享给任意一个用户,前提是用户必须知道此用户的用户名。相对于以文件为最小共享单位而言,以文件夹为最小单位的共享方式在提高安全性的同时,不仅能够减少客户端大量的加解密开销,还能够有效地减少用户的冗余操作。此外,ExaBox系统客户端的监听模块能够即时监听用户对ExaBox工作目录下的文件或文件夹下进行的移动、删除、重命名等操作,当这些操作发生时,监听模块立刻调用相关接口对操作进行实时的处理。数据共享引发了系统的冲突问题。在云存储系统中,如何正确、高效地处理冲突以保证一致性,是一个很重要的问题。ExaBox系统在目录树的基础上提出了一种一致性协议,能够保证系统的最终一致性(eventualconsistency),即,若系统保证没有新的更新提交,则最终所有的访问都将获得最后更新的版本。在ExaBox系统中,最终一致性分为数据内容的最终一致性和路径的最终一致性。数据内容的最终一致性在数据同步时,由于操作的非实时性,用户上传文件时可能存在内容上的冲突。例如,用户A和B都是文件foo的合法用户(包括数据拥有者和授权用户,下同),用户A修改了文件foo,而用户B在用户A上传到云端前也修改了foo文件,然后A执行数据同步将foo文件上传到云端。此后,当用户B执行同步时就会产生数据内容的冲突,由此导致了数据内容的不一致。针对这类情况,ExaBox系统用在目录树中记录文件版本号的方式,在客户端上传文件的同时,将文件的版本号加1,并在其服务器端目录树中记录文件最新的版本号。这样一来,当用户B进行数据同步时,将会发现foo在服务器端的版本号不小于自己客户端目录树中的版本号,就不执行上传操作,而是转入冲突处理:将本地的foo重命名后上传至云端并下载云端的foo文件,再由合法用户根据需要进行处理。数据路径的最终一致性在ExaBox系统共享机制下,任何合法用户都可以对共享的目录/文件进行移动、重命名操作,而云端却只保留一份数据(加上n个副本,n由用户指定),这种多对一的关系势必会引起目录/文件名的不一致。为了解决这个问题,ExaBox专门设置了日志机制:每个共享目录均对应一个日志,用来记录所有授权用户对该共享目录及其子目录进行的操作。当某个授权用户同步时,服务器根据日志先在服务器端同步目录/文件名,然后根据情况将部分日志内容返回给客户端,客户端先进行目录/文件名同步,然后再进行数据同步。2.4大数据断点传输机制受网络或其他因素的影响,许多云存储系统都对文件大小有限制。例如,skydrive系统将文件大小限制在300M,金山快盘则是近期才从100M提升到了300M。为了突破单个文件的大小限制,ExaBox系统使用大数据分块断点续传的机制,在不限制文件大小的同时提高了传输效率。云存储系统中的大数据是指相对较大的数据文件。在ExaBox系统中,我们将64M以上的单个数据文件定义为大数据文件(可自行配置)。为了支持大数据文件上传,ExaBox系统在客户端按照固定的大小对其进行分块,再将数据块加密后逐一上传;当所有的数据块均上传至云存储后,服务器再调用云存储平台的“合并”指令,将所有的小块合并成原来的单个文件。若上传过程意外中止,待下次同步时,客户端会根据用户名、当前机器及服务器端目录树中的断点信息进行判断,并根据判断结果决定是否从中断点开始续传。大数据的断点传输机制不仅解决了ExaBox单个文件的大小限制的问题,而且还提供断点续传的功能,极大地提高了系统的实用性与大文件的传输效率。文件版本控制ExaBox系统在云存储端保存用户数据的所有历史版本,以提供数据回滚功能。在用户上传文件时,客户端根据同步比对结果,将当前文件版本的版本号上传至服务器,服务器根据版本号将上传文件重命名后,再保存至云存储服务器,同时更新该用户的服务器端目录树。这样,当用户需要回滚到某文件的历史版本时,系统只需根据服务器端目录树中记录的文件版本信息,将该文件所有历史版本的版本号及上传时间返回给客户端,客户端就能根据自己需要的文件选择合适的版本进行回滚。目录树缓存与服务器集群由于ExaBox服务器需要同时处理很多个客户端的请求,很容易成为整个系统的瓶颈,因此,本文用服务器集群来实现。为了保证集群后系统的正确性与一致性,本文设计并实现了目录树服务器,对用户的服务器端目录树进行统一管理,并添加缓存机制以减少服务器端目录树的构建与写回次数。参见说明书附图3服务器集群如图3所示,客户端将请求发送到服务器集群,由集群中随机的一台服务器进行响应。客户端与服务器之间的通信采用会话机制,能够保证客户端在会话失效前的所有请求均由同一台服务器处理。由于用户的服务器端目录树经持久化后保存在云端,当某台ExaBox服务器构建用户的服务器端目录树时,可能有其他服务器在修改此目录树后,还没来得及写入云端,从而导致系统出错。针对此问题,本文采用目录树服务器对所有用户的服务器端目录树进行统一的管理,并添加目录树缓存机制以提高效率。当ExaBox服务器需要构建某个目录树时,首先向目录树服务器发起请求,目录树服务器查看本地缓存是否有本次请求需要的目录树:若有,则直接返回;若没有,则从云端构建后返回给ExaBox服务器,同时将此目录树添加到缓存中。为了保证系统的正确性,在目录树服务器将某个目录树交给ExaBox服务器时,需要对该目录树锁定,直到服务器传回后再解除锁定。由于构建目录树所需要的内存资源较少,用户的服务器端目录树的使用时间也比较集中(主要在数据同步过程中使用),因此,目录树服务器采用相对简单的LRU替换算法,在替换发生时,将最近最少使用的目录树写回云存储。服务器端目录树的缓存机制使得系统减少了从云存储中读取目录树的次数,并在提高系统效率的同时,使得服务器能够方便用集群实现,从而突破了系统中单个服务器难响应更多用户的瓶颈,在很大程度上提高了系统的可扩展性和整体性能。对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1