一种基于用户协作云的云存储系统的制作方法

文档序号:8005519阅读:231来源:国知局
一种基于用户协作云的云存储系统的制作方法
【专利摘要】一种基于用户协作云的云存储系统,用户访问层为用户提供个人网盘、数据备份、数据归档、数据存储报务;应用接口层为用户提供互联网的网络接入后,进行用户认证和初始化,完成用户的权限管理、文件分块及文件加密操作;数据管理层完成对文件的管理,通过P2P的路由功能把分块存储到系统确定的存储节点中,完成系统数据备份及副本管理功能;数据存储层形成具有海量存储资源的用户协作云。本发明能够充分利用互联网用户自身闲散存储资源,在P2P技术基础上通过分布式文件系统对这些资源按云存储要求加以组织、管理和调度,为用户提供文件管理和存储的服务,并提供数据安全保障,构建满足用户需求的云存储系统。
【专利说明】—种基于用户协作云的云存储系统
【技术领域】
[0001]本发明涉及云存储【技术领域】,具体是一种基于用户协作云的云储存系统。
【背景技术】
[0002]当前以数据中心为基础的云存储系统,其数据访问模式沿用缺少交互、被动管控的主从模式,其内部组织依赖传统的分层体系结构,随着数据中心规模的发展,面对网络存储应用日趋复杂,当应用需求发生变化时,存储系统难以做出相应满足,基于数据中心的云存储系统将面临如下几个方面的问题(以GFS为例):
[0003](I)集中式元数据管理瓶颈问题。GFS最初设计的存储容量是百万到千万GB级的大文件,随着数据中心的发展,现有文件数量已经达到百亿量级,2?3年后可能达到万亿量级。对于如此庞大的文件数量,GFS依赖单个元数据服务器的内存来管理整个文件系统的所有元数据信息的集中式处理已经不能满足需求,集中管理已经成为瓶颈,系统访问性能急剧下降。面对这些问题,谷歌新一代的文件系统Colossus已经采用分布式元数据管理和备份恢复等技术来尽量避免,但是系统生而有之的缺陷仍末得到根本性的解决。
[0004](2)小文件高度并发访问导致性能下降问题。网上大量交互式用户产生了大量、高度并发的访问,如网上购物的商品图片、社交网络的照片、邮件等。这些访问的文件小,大多不超过1MB,具有高并发、交互式访问的特征,因此需要高吞吐率和低访问延迟来满足需求。而GFS和传统文件系统在访问一个文件时需要多次磁盘访问和多次网络传输,这难以满足低延迟的需求。Facebook和淘宝分别开发了专用文件系统来构建相应的云存储系统,如Haystack和Oceanbase。但这些文件系统与特定应用的稱合度高,定制性强,对文件系统的很多操作接口都不支持,因此它们虽然在特定访问模式下的性能比较高,但适应性差。
[0005](3)存储成本较高问题。GFS的存储成本主要来自它的容错机制,由于GFS是运行于低成本和较低可靠性的硬件上,因此通过多副本来保障数据的可靠性和可用性。每个数据在GFS中通常保存3个副本,这导致存储成本提高了 3倍。目前产业界也在尝试各种方法来降低存储的成本。例如,将数据压缩后再存储,或采用纠删码(Erasure Code)。
[0006](4)多个数据中心构成全局数据视图带来的问题。GFS是针对一个数据中心的数据存储,在多数据中心下将存在如何放置和移动数据,如何保证数据一致性等问题。
[0007]综上所述,针对目前以数据中心为基础的云存储系统,存在访问性能瓶颈,主从访问模式灵活性不足等问题,特别是用户对“云”中海量存储需求不断增长,导致云计算面临海量存储资源高效管理和精确定位等突出问题。
[0008]目前,网络海量存储系统在向大规模存储异质异构方向发展,这需要融合不同层次、不同类型的器件、设备、子系统、区域的存储单元组建大规模海量网络存储系统。
[0009]P2P是一种分布式网络,网络的参与者共享他们所拥有的一部分硬件资源(处理能力、存储空间、网络带宽等),这些共享资源需要通过网络连接,使对等节点(Peer)之间能直接访问到对方的资源而无需经过中间实体。网络的参与者既是资源提供者,又是资源获取者。[0010]P2P网络的一个重要的目标就是让所有的客户端都能提供资源,包括带宽,存储空间和计算能力。因此,当不断有节点加入且对系统请求增多时,整个系统的容量也随之增大。
[0011]P2P网络具有如下特点:
[0012]1.首先,P2P网络已实现无中心服务器,可以很好的分散网络的数据存储以及搜索等操作的计算压力。
[0013]2.P2P网络具有极佳的自适应性,可针对不同文件的访问量,自动调节数据的冗余度,并使得热门资源的可下载源自动增加,网络始终处于一种动态平衡中。节点的加入与退出也无需对应用做任何调整,网络可以实现高度的自由组网与自治管理的能力,系统的资源可得到透明化的动态扩充。
[0014]3.P2P网络本身具有备份与共享的概念,用户可以从任意具有用户所要文件的节点下载数据,只要有同一个文件索引,用户也可以在不同的终端和地点,下载同一个文件,并且,通过对文件索引的自动数据校验功能(散列计算),用户可以确认下载的文件是否是同一个版本的文件。
[0015]从上述可知,P2P存储节点以功能对等方式组成存储网络,既可以是完全由统一管辖的服务器节点以对等方式组成封闭式对等网络存储系统,又可以是完全由客户端组成的开放式对等网络存储系统,还可以是服务器与客户端共同以对等方式组成的混合存储系统。因此,P2P存储技术可用来组织大型存储服务系统,将P2P存储系统融入主要以数据中心为主的云存储系统,组建网络海量数据存储体系,可以提高存储性能和效率,改善存储系统的可扩展性及健壮性。
[0016]同时,从目前互联网用户的硬盘使用情况来看,多数用户可以提供自身30%左右闲散存储资源,如果采用一定激励机制来引导其贡献自己的存储空间,并对这些存储加以统一组织管理与利用,那么这些普通互联网用户的存储空间将成为文件存储的基本实体和路由转发的中间节点。
[0017]但是,P2P技术并不具有云存储特点,不能提供云存储服务,相对于云存储它具有如下的明显弱点:
[0018]1.用户对自有文件的可管理性:目前的P2P网络是针对文件共享下载的,而不是针对个人数据备份的,对于下载完成后的文件,不具可管理性,可没有办法对于不同设备/终端上的文件版本进行有效控制。
[0019]2.用户私有文件的安全性问题:P2P网络没有私有文件属性的安全管理机制,如果文件加入了 P2P网络,那么,它将对所有访问者公开,当然,它是极易被获取的。
[0020]3.加入网络中的文件,都是以文件的原始形式存在的,只要找到文件索引,任何文件都可被轻易下载并还原,而恰恰,文件索引本身就是公开的,这对于查找文件是件好事,但是对私有文件,这是极其不安全的。
[0021]4.典型P2P技术只能保证热门资源不断源,即下载的人越多,分享的人也就越多,但对于冷门资源,则往往找不到源,或来源断断续续,不稳定,通常要花几天的时间才能下载完文件的所有部分。这对于私有文件的备份与同步是不可接受的,这些文件往往使用频率高,同步实时性要求强。
【发明内容】

[0022]本发明的目的在于提供一种基于用户协作云的云存储系统及其构建方法,充分利用数以亿计互联网用户自身闲散存储资源,在P2P技术基础上通过分布式文件系统对这些资源按云存储要求加以组织、管理和调度,为用户提供文件管理和存储的服务,并提供数据安全保障,构建基于互联网的海量高可用、高可靠的满足用户需求的云存储系统,并且能克服以数据中心为主的云存储系统中存在的元数据集中索引、访问性能瓶颈、主从访问模式灵活性不足等问题。
[0023]本发明实现上述目的所采取的技术方案是:一种基于用户协作云的云存储系统,包括用户访问层、应用接口层、数据管理层和数据存储层,
[0024]所述的用户访问层为普通的用户提供文件的管理与数据存取的个人网盘服务,并利用用户提供的闲散存储资源,为一些特殊的系统用户提供数据备份、数据归档和数据存储服务,对存储需求较大的在线社交网络或在线视频网站提供媒体存储报务;
[0025]应用接口层为用户提供互联网的网络接入后,进行用户认证;对通过认证的用户初始化,为用户生成可视化的目录及文件空间;完成用户的权限管理,给不同用户不同权限以便于管理;用户上传文件至系统之前,完成文件分块及文件加密操作;
[0026]数据管理层通过分布式文件系统完成对文件的管理,包括文件与目录的操作;通过分布式哈希表把应用接口层加密后的文件分块上传到系统,并通过P2P的路由功能把分块存储到系统确定的存储节点中,完成系统数据备份及副本管理功能;
[0027]数据存储层包括存储节点,存储节点为Internet范围内能提供闲余存储资源和计算能力的零散桌面计算机,各存储节点贡献各自的存储空间和计算资源,通过P2P技术互连起来,形成具有海量存储资源的用户协作云。
[0028]本发明具有以下有益效果:
[0029]I)协作云用户自愿提供存储资源给协作云系统。协作云用户为了在有需求时获得更大存储空间,按照“我为人人,人人为我”的存储资源共享协作原则,根据自身机器实际情况向协作云系统提供自身机器的闲散存储资源,系统通过虚拟化等相关技术组织和管理协作云用户所提供的资源,形成海量存储资源池。
[0030]2)协作云用户按需申请存储资源。当协作云用户需要存储数据,而自身的机器的存储空间又无法满足该需求时,可按需要随时向系统申请存储资源。
[0031]3)系统按协作云用户需求为其提供存储空间。系统根据协作云用户提供的原始存储资源的大小Ss(S0UrCe space)、提供资源到申请资源时间间隔长短T(Time)以及系统存储资源总量Ts(Total space)来确定提供给用户存储空间的大小Ns (Need space),Ns大小与Ss、T、Ts大小成正比,能够满足用户需求,即Ns ≤Ss0
[0032]4)用户协作云按实际使用情况合理分配。协作云用户申请存储容量如果大于实际使用存储空间,系统可以只分配给用户实际使用空间,其余空间再作统一管理和调度,当用户有实际的存储需求时再为其分配存储空间,实际上用户并没有感觉到自身存储空间有任何的不足。
[0033]5)用户协作云随时随地可用。用户协作云是一种海量的网络资源池,协作云用户可以用智能手机、掌上电脑(Pad)等移动接入设备以及个人电脑等其他互联网接入设备来随时随地来申请及使用申请存储资源,给用户带有极大便利。[0034]6)存储资源透明共享,所需即可得。通过上述机制及分布式文件系统等相关存储资源组织与管理技术,系统可为用户提供存储资源的可靠、安全、高效、可用等方面的技术保障,并屏蔽底层相关的技术细节,最终为用户提供统一透明,资源共享,互助协作,所需即可得的存储空间,以满足协作云用户及其他一些网络服务的存储需求,这些网络存储服务指的是单位数据备份、数据归档、数据存储等服务,以及提供在线社会网络媒体存储、在线视频存储等服务。
【专利附图】

【附图说明】
[0035]图1是本发明所述的基于用户协作云的云存储系统的所有节点简化互连示意图。
[0036]图2是本发明所述的基于用户协作云的云存储系统的逻辑体系结构图。
[0037]具体的实施方式
[0038]如图1所示,基于用户协作云的云存储系统的所有节点相互连接,各节点代表所有协作云用户,协作云用户既是服务消费者,即需要云存储服务需求者,或者说是云存储系统的客户端;同时,也是服务提供者,或者说是云存储服务供应商,它也为系统中其它用户提云存储服务,是云存储系统的数据服务器。图1中每个用户与其他的所有用户有边相连,这是系统中所有用户互连的一种形象化表示,说明用户通过P2P覆盖网络有可能与整个系统中任意的用户有联系,进行数据的存储与读取的访问。
[0039]如图2所示,一种基于用户协作云的云存储系统,把整个系统按功能划分成用户访问层、应用接口层、数据管理层和数据存储层;每层完成系统的部分功能,把联系紧密的功能放到同一层,下层对上层透明,隐藏实现细节,并为上层提供应用接口 ;
[0040]所述的用户访问层为普通的用户提供文件的管理与数据存取的个人网盘服务,并利用用户提供的闲散存储资源,为一些特殊的系统用户提供数据备份、数据归档和数据存储服务,对存储需求较大的在线社交网络或在线视频网站提供媒体存储报务;
[0041]应用接口层为用户提供互联网的网络接入后,进行用户认证;对通过认证的用户初始化,为用户生成可视化的目录及文件空间;完成用户的权限管理,给不同用户不同权限以便于管理;用户上传文件至系统之前,完成文件分块及文件加密操作;
[0042]数据管理层通过分布式文件系统完成对文件的管理,包括文件与目录的操作;通过分布式哈希表把应用接口层加密后的文件分块上传到系统,并通过P2P的路由功能把分块存储到系统确定的存储节点中,完成系统数据备份及副本管理功能;
[0043]数据存储层包括存储节点,存储节点为Internet范围内能提供闲余存储资源和计算能力的零散桌面计算机,各存储节点贡献各自的存储空间和计算资源,通过P2P技术互连起来,形成具有海量存储资源的用户协作云。
[0044]用户认证:
[0045]用户根据已注册的用户名和密码登录用户协作云系统。系统为每个用户创建独立的存储空间.根据用户标识和对应权限对用户空间的数据进行访问控制,避免未授权用户访问到其他用户的数据以及用户信息。
[0046]文件和目录的组织:
[0047]系统中存储的对象是文件,文件按照目录的形式进行组织,目录本身也属于文件,本文所指的文件名指目录或者包含路径的文件。[0048]系统中每个用户都有唯一的目录文件,用二叉树的方式对目录进行保存,二叉树的格式为:根(root)、孩子节点(Lchild)、孩子的兄弟节点(Rchild)。每个节点包括的信息有:nodeType、name、Lchild、Rchild。其中nodeType是表明所述的节点是目录还是文件,其中I表示节点是目录,0表示节点是文件;name是文件或目录的名称;Lchild是上一级目录的孩子节点;而Rchild是上一级目录的孩子的兄弟节点。
[0049]文件和目录的操作:
[0050]客户端文件管理模块需要支持用户文件增、删、改、查操作,包括:
[0051]文件上传将文件上传至云端。
[0052]文件下载将文件下载至本地磁盘。
[0053]文件创建在网盘创建空文件或者非空文件。
[0054]文件移动将文件在云端与本地磁盘间移动或者在云端不同目录项里移动。
[0055]文件删除删除云端文件。
[0056]文件更新修改并保存云端文件文件拷贝。
[0057]文件拷贝将文件在云端与本地磁盘间拷贝或者在云端拷贝。
[0058]与此同时,客户端服务模块需要支持一系列目录操作,包括列目录中,查询目录以及相关的目录项修改操作,包括:
[0059]目录增加在云端增加目录。
[0060]目录删除将目录在云端删除。
[0061]目录移动将目录在云端与本地磁盘间移动或者在云端移动。
[0062]文件分块:
[0063]系统的文件在系统中被划分为固定大小的数据块(如GFS中为64M),并且每个数据块以完全冗余副本的形式分散存储在覆盖网络各存储节点上,文件分块存储不仅能提高整个系统的负载平衡,同时还能实现数据的并行下载。
[0064]协作云用户使用的数据,可以分为两类:即私有数据及可公开数据。典型的私有数据有自己写的各种文案,即用户自己创建的数据,而可公开数据则大多来自与网络摘抄、下载,即其来源本来就是公开的资源,但不管数据是私有的还是可公开的,用户在使用之前就知道数据的属性。
[0065]协作云用户使用的文件大部分是小文件,这些小文件一般在IOM以下,很少超过64M。这是因为,第一,用户创建的文件以小文件居多,大多为文字、图片等,其私有属性概率较高;其次,越小的文件,往往使用概率与频率就越高。一般用户计算机中的大文件多半为视频,另外,大文件的使用频率较低,比如视频,一般同一个视频不会频繁重复使用。
[0066]基于上述分析,系统规定:对于小于64M的文件,文件分块的数据块的大小为1M,对于文件最后一块数据,如果不足1M,则也分配IM存储空间给它;而对大于64M的文件,文件数据块大小为64M,同样,对于文件最后一块数据,如果不足64M,则也分配64M存储空间给它。
[0067]数据管理模块:
[0068](I)用户元数据
[0069]协作云用户元数据文件记录该用户的不涉及其他用户的隐私信息但对系统有用的相关信息,包括用户作为存储节点时的160位ID值,用户机器的硬件信息,用户在线时间长短,在线的时间段,用户作为系统的数据服务器存储的其他用户数据量大小,系统为用户分配的WD,用户目录文件的Key。
[0070]除此之外,用户元数据还记录协作云用户提供的原始存储资源的大小Ss (Sourcespace)、提供资源到申请资源时间间隔长短T (Time)以及系统存储资源总量Ts (Totalspace)来确定提供给用户存储空间的大小Ns(Need space),据此来确定用户对系统的贡献,为用户提供更好的存储服务。
[0071](2)目录元数据
[0072]目录元数据用于记录用户存储在系统的文件、目录树结构、fileID与文件名映射、文件所有者、共享方式等信息。用户登录存储系统时,系统根据其UID唯一对应的用户目录文件fileID取得用户目录文件,并生成该用户的独立目录空间。用户目录文件属于私有文件,只有文件所有者才能访问其所有的目录文件,用户目录文件也有一个filelD,并像普通文件一样被存放在系统各节点上用户拥有。
[0073](3)文件元数据
[0074]根据据文件(或块)内容生成FileID,在文件内容与文件标识符之间形成一个映射,也将文件属性(文件属主、文件名等)和文件标识符在逻辑上分离开来。
[0075]文件元数据包括FileID、文件名、文件大小、类型、文件夹路径、属性、创建者、创建时间、访问权限列表、共享计数、数据块列表及其存储位置等信息。
[0076]用户协作云存储系统:
[0077]负责把客户端的用户的个人数据和系统的数据存储进行通信及管理,系统中所有数据是去信息化表述的,都被表示成了 Key键值对的形式,并采有AES对称加密算法对所有的数据进行加密,然后在网络上传输与存储,这样有助于数据的统一管理及数据安全存储,把用户个人的文件信息与整个系统的存储数据信息进行了映射与隔离,使用户的个人信息得以保护,提高存储的安全性、隐蔽性。采用Kademlia结构化路由算法,将系统中松散的节点结合到一起,形成一个结构化的分布式P2P覆盖网络,建立起节点地址空间与文件地址空间之间的映射关系。
[0078]用户协作云存储系统负责文件的上传、下载、节点管理等功能,完全不需要有其他独立服务器的参与,网络中的所有终端都可以随时上传文件存储到其他终端,存储有完整文件的终端,又可独立成为服务端,为其他客户端提供这份文件。不仅分担了存储压力、网络流量压力,还具有高度的容灾备份的作用,只要拥有同一个文件的终端大于等于I台在线,那么这个文件就可以被找到,并且通过不断下载重新建立多份拷贝。另外,由于同一份具有共享属性的文件共享用户越多,其备份数也就越多,这样就可以自动调节热门资源与冷门资源之间的服务带宽比重,达到优化网络利用率的目的。
[0079]应用实施例
[0080]1.基于分布式哈希表DHT的文件数据部署方法
[0081]在本发明中,所谓的数据报务器也就是协作云用户,因为协作云既是服务消费者,即需要云存储服务需求者,或者说是云存储系统的客户端;同时,也是服务提供者,或者说是云存储服务供应商,它也为系统中其它用户提云存储服务,是云存储系统的数据服务器。
[0082]DHT全称叫分布式哈希表(Distributed Hash Table),是一种分布式存储方法。在不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个DHT网络的寻址和存储。DHT网络中所有信息均以的哈希表条目形式加以存储,这些条目被分散地存储在各个节点上,从而以全网方式构成一张巨大的分布式哈希表。可以形象地把这张哈希大表看成是一本字典:只要知道了信息索引Key,便可以通过Kademlia协议来查询其所对应的Value信息,而不管这个Value信息究竟是存储在哪一个节点之上。在eMule、BitTorrent等P2P文件交换系统中,Kademlia主要充当了文件信息检索协议这一关键角色。一致性哈希算法SHAl是目前主流的分布式哈希表协议之一,包括Amazon的Dynamo键值存储系统使用了该算法。使用一致性哈希算法能够使每个节点只需处理落在它和前驱节点之间的数据,由于系统构建在普通互联网用户之上,出错的概率较高,当发生增/删节点时对系统造成的振荡较小。另外,一致性哈希算法满足平衡性能够保证数据均匀分布。
[0083]为了有效利用协作云用户的离散特性并降低运算的复杂度,系统的核心数据结构为一个参考DHT设计的键值对〈Key,Value〉,其中,基于160Bit的安全一致性哈希算法SHAl算法生成的Key (即索引指针),这里Key值有216°个,而Key所代表的文件数据块所组成的Value,数据块Value的大小由系统规定的文件分块大小而确定。
[0084]系统中的各种配置、数据全都依赖这种存储方式,这使得协作云存储系统中的任何数据,包括用户元数据文件以及用户其他的相关信息,如文件元数据,包括文件的Fi I e ID、文件名、文件大小、类型、文件夹路径、属性、创建者、创建时间、访问权限列表、文件索引列表、数据块列表及其位置信息等都可以以文件形式放置与云中,通过数据块索引列表(本身也是一个文件)将基础的键值对串接嵌套使用,来表述一个用户的完整云存储配置和数据。
[0085]从上述可知,云存储系统中的以文件形式存在的任何数据可以把是能够表述成为字典的键值对〈Key,Value)形式的信息存储在网络,这通过文件索引字典得以实现,文件索引字典用于根据给出的文件信息来查询文件的拥有者(即该文件的下载服务提供者,在本系统就是存储文件的数据服务器),其中Key的值等于由文件内容通过SHAl算法生成的FileID,从统计学角度而言,160比特的FileID可以唯一地确定一份特定数据内容的文件,而对应的Value也是一个列表,它给出了当前所有拥有该文件的节点的网络信息,其中的列表条目可以用一个3元组表示:(拥有者IP,下载侦听端口,拥有者节点ID),根据这些信息,协作云用户便知道该到哪里去下载具备同一 SHAl校验值的同一份文件了。
[0086]另一方面,在用户协作云存储系统中,网络的每一个节点均拥有一个专属ID,该ID的具体形式与SHAl散列值类似,为一个长达160位的整数,它是由节点自己随机生成的,两个节点拥有同一 ID的可能性非常之小,因此可以认为这几乎是不可能的。由于每个节点都有一个唯一的160位长的ID值作为标识符,并且,每个节点都保存一个〈Key,Value〉对,其中Key为节点标识符即ID值,Vlaue为对应文件的名称、所在节点的地址信息等。
[0087]由于节点ID与键值对〈Key,Value〉中Key值的具有相似性,都是160位,因此,节点的ID值也就决定了哪些键值对可以存储在该节点之中,完全可以把某一键值对〈Key,Value〉简单地存放在节点ID值恰好等于键值对〈Key, Value〉中Key值的那个节点处,可以将满足(ID==Key)这一条件的节点确定为目标节点N。这样的话,一个查找键值对〈Key,Value〉的问题便被简单地转化成为了一个查找节点ID等于Key值的的问题。
[0088]2.协作云用户初始化[0089]当系统为一个新用户创建账号时,系统会为这个新用户分配一个全局唯一的编号,我们称作nD。只要知道入口的键值对,就可以得到完整的用户数据,每个用户的入口键值对可以表示一个二元组〈Key,Value〉,其中Key由UID和用户密码通过SHAl算法生成160位二进制位,而Value则是用户元数据文件的数据块。
[0090]当该用户登陆用户协作云存储系统时,用户在客户端输入UID和密码,然后在客户端生成用户的入口键值对〈Key,Value〉,此时,我们只需要根据哈希得到的Key值与数据服务器节点ID的对应关系,即可得到用户元数据文件存储的位置,获取用户元数据后在客户端进行进一步的用户元数据表初始化操作。
[0091]用户客户端进行用户元数据表初始化操作后,系统根据用户元数据文件中保存的用户目录文件的Key来获得该用户唯一的目录文件,进一步进行用户目录空间的初始化操作,生成用户目录空间,为用户生成像本地一样目录虚拟视图,使用户能像操作本地目录一样方便地操作自己在云存储系统中的文件与目录。
[0092]3.文件数据的存储过程
[0093]文件数据存储是系统最基本的功能,用户对本地的某一具体实体文件进行文件更新、文件上传、文件创建操作后,文件数据存储过程发生,文件存储的一般过程如下:
[0094](I)用户UID选择在节点Node要存入系统的文件File ;
[0095](2)根据File的文件内容由SHAl算法获得的FileID ;
[0096](3)搜索系统中所有共享文件,如果存在有该文件,则将该文件的FileID、文件名、文件大小、类型、文件夹路径、属性、创建者、创建时间、访问权限列表、共享计数、数据块列表(包括Hi和HHDi)及其位置等信息保存到用户目录文件,并更新拥有该文件各节点用户目录文件,把目录文件中该文件的共享计数值加I。
[0097](4)如果系统中些文件,则根据文件的大小,把文件划分为固定大小(64M或1M)的数据块Di,并对各块分别进行以下操作。
[0098]a.利用SHAl对数据块Di进行哈希运算,计算得到值Hi ;
[0099]b.采用AES对称加密算法以Hi为密钥对Di进行加密,得到加密后的数据块ADi ;
[0100]C.再次利用SHAl对ADi进行哈希运算,计算得到值HADi ;
[0101]d.如果找到ID=HADi的节点,把数据块ADi存储到相应的该存储节点上,并把数据块备份到离上述节点最近的n-1个在线节点(n指的是系统设定数据备份数),并返回所有存储节点ID值作为数据块的存储位置;如果找不到ID=HADi的节点,把数据块备份到离上述节点最近的n个在线节点,并返回所有存储节点ID值作为数据块的存储位置;
[0102]e.最后一个存储成功的节点向Node,向Node返回数据块ADi存储成功的消息,同时每个存储成功的修改节点上file对应的用户目录文件。
[0103](5)Node收到全部数据块存储成功的消息后,将File的FileID、文件名、文件大小、类型、文件夹路径、属性、创建者、创建时间、访问权限列表、共享计数、数据块列表(包括Hi和HADi)及其位置等信息保存到用户目录文件,并更新该用户目录文件。
[0104]4.文件数据读取到过程
[0105]文件数据读取过程是用户从存储文件对应的数据块的各存储节点处将文件数据下载到本地或下载后加载到本地应用程序的操作,一般过程描述如下:
[0106](I)根据FileID获得所读取文件File在用户目录文件上该文件的数据块列表及位置信息;
[0107](2)对File所有数据块,进行下述操作:
[0108]a.根据数据块的存储位置,从相应在线的节点获得数据块ADi ;
[0109]b.用HADi验证密文;
[0110]c?用Hi解密数据;
[0111]d.对明文进行验证。
[0112](3)对解密后的数据块进行合成,读取文件成功。
[0113]5.文件删除
[0114]文件删除的一般过程描述如下:
[0115](I)根据用户操作时确定的fileID,读取用户目录文件中的该文件的相关信息,如果该文件是用户的私 有文件,则进行如下操作,否则转到(5);
[0116](2)读取文件File在用户目录文件上该文件的数据块列表及其位置信息,根据位置信息,到相应的存储有该文件数据块的所有在线节点,进行数据块的删除操作,完成删除操作的节点向用户节点返回删除成功信息,然后删除数据列表中删除成功节点的位置信息;
[0117](3)若存储有该文件数据块的节点有不在线,则系统周期性做文件删除操作,直至拥有该文件数据块的所有节点都完成了删除操作;
[0118](4)文件删除成功后,转到(6);
[0119](5)若文件是共享文件,则修改其他拥有该文件的用户的目录文件,把文件的共享计数减1,并在共享用户列表中删除请求删除该文件用户,并更新共享用户的目录文件;
[0120](6)更新要删除该文件的用户目录文件,把该文件所有信息在目录文件中删除。
[0121]6.目录操作
[0122]用户做文件删除、文件移动、目录增加、目录删除、目录移动等操作时,会引起用户目录文件内容的更新,用户目录文件更新后,必须重新存储目录文件。
[0123]7.文件数据备份
[0124]文件数据生成键值对〈Key,Value)后,进行存储该键值对时,要在系统查找ID ==Key节点,如果找到ID=Key的节点,把数据块存储到相应的该存储节点上,并把数据块备份到离上述节点最近的n-1个在线节点;如果找不到ID=Key的节点,把数据块备份到离上述节点最近的n个在线节点,这样每一份文件的数据,在系统中至少有n份备份,n值可根据系统的规模而定,一般来说,系统规模越大,n值也越大,充分利用Kademlia网络已经实现的成熟数据冗余算法,为系统的数据路由,数据可用性和系统容错提供保障。
[0125]任意两个节点之间的距离定义为其节点ID值的逐比特二进制和数,即XOR运算的结果。每一个节点都可以根据这一距离来判断其它节点距离自己的逻辑距离,当距离值较大时,我们定义节点间距离较远,而当距离值小时,则可逻辑上认为两个节点相距较近。这里的“远近”和“距离”都只是一种逻辑上的度量描述而已,由于其与实际的物理机器位置无关,可以近似的认为,这些节点是随机分布在整个网络中的,网络越大,物理分布位置越远越分散,这使得系统具有很好的容灾备份能力。同样,距离这一度量是无方向性的,也就是说它表示的两节点之间的距离绝对值。
【权利要求】
1.一种基于用户协作云的云存储系统,其特征在于,包括用户访问层、应用接口层、数据管理层和数据存储层, 所述的用户访问层为普通的用户提供文件的管理与数据存取的个人网盘服务,并利用用户提供的闲散存储资源,为一些特殊的系统用户提供数据备份、数据归档和数据存储服务,对存储需求较大的在线社交网络或在线视频网站提供媒体存储报务; 应用接口层为用户提供互联网的网络接入后,进行用户认证;对通过认证的用户初始化,为用户生成可视化的目录及文件空间;完成用户的权限管理,给不同用户不同权限以便于管理;用户上传文件至系统之前,完成文件分块及文件加密操作; 数据管理层通过分布式文件系统完成对文件的管理,包括文件与目录的操作;通过分布式哈希表把应用接口层加密后的文件分块上传到系统,并通过P2P的路由功能把分块存储到系统确定的存储节点中,完成系统数据备份及副本管理功能; 数据存储层包括存储节点,存储节点为Internet范围内能提供闲余存储资源和计算能力的零散桌面计算机,各存储节点贡献各自的存储空间和计算资源,通过P2P技术互连起来,形成具有海量存储资源的用户协作云。
【文档编号】H04L29/08GK103442057SQ201310378545
【公开日】2013年12月11日 申请日期:2013年8月27日 优先权日:2013年8月27日
【发明者】朱晓姝, 王贞东 申请人:玉林师范学院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1