云存储系统和数据存储方法.pdf

上传人:000****221 文档编号:20178 上传时间:2018-01-12 格式:PDF 页数:21 大小:1.24MB
返回 下载 相关 举报
摘要
申请专利号:

CN201310745094.0

申请日:

2013.12.30

公开号:

CN104754001A

公开日:

2015.07.01

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):H04L 29/08申请日:20131230|||公开

IPC分类号:

H04L29/08

主分类号:

H04L29/08

申请人:

方正宽带网络服务股份有限公司

发明人:

赵强

地址:

100088北京市海淀区学院南路15号院北发大厦B座5层

优先权:

专利代理机构:

北京友联知识产权代理事务所(普通合伙)11343

代理人:

尚志峰; 汪海屏

PDF下载: PDF下载
内容摘要

本发明提供了一种云存储系统和一种数据存储方法,其中所述云存储系统包括存储服务器节点,所述存储服务器节点包括:对象获取单元,用于获取待存储对象;对象复制单元,用于复制所述待存储对象,得到包含所述待存储对象在内的多个对象副本;存储处理单元,用于将所述多个对象副本均匀地存储至所述云存储系统中的不同数据域。通过本发明的技术方案,可以使用标准化服务器创建冗余,从而避免了单点故障引起的数据丢失,可提高云存储数据的安全性,各个服务器在云存储系统中位置相等,维护方便,并且可方便的在系统中添加/删除存储服务器,存储空间可扩展。

权利要求书

1.  一种云存储系统,其特征在于,包括存储服务器节点,所述存储服务器节点包括:
对象获取单元,用于获取待存储对象;
对象复制单元,用于复制所述待存储对象,得到包含所述待存储对象在内的多个对象副本;
存储处理单元,用于将所述多个对象副本均匀地存储至所述云存储系统中的不同数据域。

2.
  根据权利要求1所述的云存储系统,其特征在于,所述存储处理单元用于通过哈希算法对所述多个对象副本执行存储操作。

3.
  根据权利要求1或2所述的云存储系统,其特征在于,所述存储处理单元还用于:
根据所述存储服务器节点中的每个存储节点的容量大小,配置每个存储节点的实际占用空间。

4.
  根据权利要求1或2所述的云存储系统,其特征在于,所述存储服务器节点还包括:
映射建立单元,用于获取所述待存储对象的标识,以及所述多个对象副本分别对应的存储位置,以建立所述待存储对象的标识和所有存储位置之间的映射关系;以及
所述云存储系统还包括:代理服务器节点,所述代理服务器节点包括:
接口提供单元,用于向外部提供服务接口;
对象查找单元,用于在所述服务接口接收到对所述待存储对象的操作请求时,根据所述待存储对象的标识和所述映射关系,查找并获取所述待存储对象。

5.
  根据权利要求4所述的云存储系统,其特征在于,还包括:身份认证服务器节点,所述身份认证服务器包括:
信息接收单元,用于接收来自所述代理服务器节点的对应于所述操作请求的用户身份信息;
身份认证单元,用于对所述用户身份信息进行认证,并将认证结果返回所述代理服务器节点,以由所述代理服务器节点确定是否响应于所述操作请求。

6.
  一种数据存储方法,用于云存储系统,其特征在于,所述数据存储方法包括:
获取待存储对象;
复制所述待存储对象,得到包含所述待存储对象在内的多个对象副本;
将所述多个对象副本均匀地存储至所述云存储系统中的不同数据域。

7.
  根据权利要求6所述的数据存储方法,其特征在于,还包括:
通过哈希算法对所述多个对象副本执行存储操作。

8.
  根据权利要求6或7所述的数据存储方法,其特征在于,还包括:
根据所述云存储系统中的每个存储节点的容量大小,配置每个存储节点的实际占用空间。

9.
  根据权利要求6或7所述的数据存储方法,其特征在于,还包括:
获取所述待存储对象的标识,以及所述多个对象副本分别对应的存储位置,以建立所述待存储对象的标识和所有存储位置之间的映射关系;
在接收到对所述待存储对象的操作请求时,根据所述待存储对象的标识和所述映射关系,查找并获取所述待存储对象。

10.
  根据权利要求9所述的数据存储方法,其特征在于,还包括:
对发出所述操作请求的用户身份信息进行认证;以及
根据认证结果确定是否响应于所述操作请求。

说明书

云存储系统和数据存储方法
技术领域
本发明涉及数据存储技术领域,具体而言,涉及一种云存储系统和一种数据存储方法。
背景技术
云存储系统与传统存储系统相比,具有如下不同:第一,从功能需求来看,云存储系统面向多种类型的网络在线存储服务,而传统存储系统则面向如高性能计算,事务处理等应用;第二,从性能需求来看,云存储系统首先要考虑的是数据的安全,可靠,效率等指标,而且由于用户规模大,服务范围广,网络环境复杂多变等特点,实现高质量的云存储服务必将面临很大的技术挑战;第三,从数据管理来看,云存储系统不仅要提供传统文件访问,还要能够支持海量数据管理并提供公共服务支撑功能,以方便云存储系统后台数据维护。
因此,如何保证云存储系统数据的安全性,维护的便捷性,系统的简单化及可扩展性成为目前亟待解决的技术问题。
发明内容
本发明正是基于上述问题,提出了一种新的面向对象的云存储解决方案,使用标准化服务器创建冗余,从而避免了单点故障引起的数据丢失,可提高云存储数据的安全性,各个服务器在云存储系统中位置相等,维护方便,并且可方便的在系统中添加/删除存储服务器,存储空间可扩展。
有鉴于此,本发明提出了一种云存储系统,包括存储服务器节点,所述存储服务器节点包括:对象获取单元,用于获取待存储对象;对象复制单元,用于复制所述待存储对象,得到包含所述待存储对象在内的多个对象副本;存储处理单元,用于将所述多个对象副本均匀地存储至所述云存 储系统中的不同数据域。
在该技术方案中,通过复制待存储对象,并将得到的多个对象副本均匀分布在存储区域不同的数据域中,实现对象的冗余备份,使得存储服务器节点中的单个数据域发生故障时,仍可通过其他数据域来提供服务,从而避免了单点故障引起的数据丢失,有助于提高数据的安全性和云存储系统的稳定性。
其中,获取待存储对象的过程可以是用户请求上传,也可以是对虚拟机镜像、照片、电子邮件等数据的定期备份。同时,数据域的选取非常的灵活,可以是某个设备、服务器、机架、甚至是数据中心,可以根据实际需求进行设置。
根据本发明的另一方面,还提供了一种数据存储方法,用于云存储系统,所述数据存储方法包括:获取待存储对象;复制所述待存储对象,得到包含所述待存储对象在内的多个对象副本;将所述多个对象副本均匀地存储至所述云存储系统中的不同数据域。
在该技术方案中,通过复制待存储对象,并将得到的多个对象副本均匀分布在存储区域不同的数据域中,实现对象的冗余备份,使得存储服务器节点中的单个数据域发生故障时,仍可通过其他数据域来提供服务,从而避免了单点故障引起的数据丢失,有助于提高数据的安全性和云存储系统的稳定性。
其中,获取待存储对象的过程可以是用户请求上传,也可以是对虚拟机镜像、照片、电子邮件等数据的定期备份。同时,数据域的选取非常的灵活,可以是某个设备、服务器、机架、甚至是数据中心,可以根据实际需求进行设置。
通过以上技术方案,可以使用标准化服务器创建冗余,从而避免了单点故障引起的数据丢失,可提高云存储数据的安全性,各个服务器在云存储系统中位置相等,维护方便,并且可方便的在系统中添加/删除存储服务器,存储空间可扩展。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施 例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
附图说明
图1示出了根据本发明的一个实施例的云存储系统的示意框图;
图2示出了根据本发明的一个实施例的云存储系统的结构示意图;
图3示出了根据本发明的一个实施例的存储服务器节点的结构示意图;
图4示出了根据本发明的一个实施例的哈希环空间的结构示意图;
图5示出了根据本发明的一个实施例的一致性哈希算法的数据移动的 示意图;
图6示出了根据本发明的一个实施例的一致性哈希算法构造虚拟节点的示意图;
图7示出了根据本发明的一个实施例的虚拟节点与存储服务器节点之间的对应关系的示意图;
图8示出了根据本发明的一个实施例的数据存储方法的示意流程图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明并不限于下面公开的具体实施例的限制。
图1示出了根据本发明的一个实施例的云存储系统的框图。
如图1所示,根据本发明的一个实施例的云存储系统100,包括存储服务器节点102,所述存储服务器节点102包括:对象获取单元1022,用于获取待存储对象;对象复制单元1024,用于复制所述待存储对象,得到包含所述待存储对象在内的多个对象副本;存储处理单元1026,用于将所述多个对象副本均匀地存储至所述云存储系统100中的不同数据域。
在该技术方案中,通过复制待存储对象,并将得到的多个对象副本均匀分布在存储区域不同的数据域中,实现对象的冗余备份,使得存储服务器节点102中的单个数据域发生故障时,仍可通过其他数据域来提供服务,从而避免了单点故障引起的数据丢失,有助于提高数据的安全性和云存储系统的稳定性。
其中,获取待存储对象的过程可以是用户请求上传,也可以是对虚拟机镜像、照片、电子邮件等数据的定期备份。
作为一种较为优选地实施例,所述存储处理单元1026用于通过哈希算法对所述多个对象副本执行存储操作。
在该技术方案中,利用哈希算法的特性,能够实现对多个对象副本的均匀分布,从而使得云存储系统中的各个数据域之间更为平衡,避免单点故障。进一步地,上述技术方案优选一致性哈希算法,以解决如节点较少时,无法实现多个对象副本的均匀分布问题。
作为一种较为优选地实施例,所述存储处理单元1026还用于:根据所述存储服务器节点102中的每个存储节点的容量大小,配置每个存储节点的实际占用空间。
在该技术方案中,实际上引入了“权重”的概念,即以每个存储节点的容量大小占总存储容量的比例来表示。由于云存储系统中的存储节点容量大小不尽相同,则通过为容量大的存储服务器配置较大的权重,容量小的服务器配置较小的权重,从而系统在分配待存储对象的存储区域时,应该分配更多的待存储对象至容量大的存储服务器,分配较少的待存储对象至容量小的存储服务器,以实现性能上的均衡,有助于提升云存储系统的运行性能和可靠性。
在具体的实施例中,例如:现有A和B两台存储服务器的容量大小分别为80G和20G,则总存储容量大小为100G,A服务器的权重为80%(80/100),B服务器的权重为20%(20/100),现若有用户上传40G的文件需要存储,则A服务器中应存储32G(40G×80%)的文件,而B服务器应存储8G(40G×20%)的文件。
作为一种较为优选地实施例,所述存储服务器节点102还包括:映射建立单元1028,用于获取所述待存储对象的标识,以及所述多个对象副本分别对应的存储位置,以建立所述待存储对象的标识和所有存储位置之间的映射关系;以及所述云存储系统100还包括:代理服务器节点104,所述代理服务器节点104包括:接口提供单元1042,用于向外部提供服务接口;对象查找单元1044,用于在所述服务接口接收到对所述待存储对象的操作请求时,根据所述待存储对象的标识和所述映射关系,查找并获取所述待存储对象。
在该技术方案中,通过“哈希”算法在所述存储对象及副本与其对应存储位置之间建立映射关系,不仅可保证存储对象及副本均匀的放在不同 的域中,而且在接收到对存储对象的操作请求时,根据存储对象的标识及映射关系就可以查询并获取存储对象。
其中,利用“哈希”算法建立映射的方法可以是:(1)检查存储对象的名称是否符合规定。(2)通过“哈希”计算出存储对象名称对应的哈希值,在环形哈希空间中确定该存储对象的存储位置。(3)所述存储对象及副本通过哈希值与其对应存储位置之间建立映射关系。
需要说明的是:不仅对多个对象副本的存储可采用上述方法存储,对于上述技术方案中提到的账户、容器同样可以采取映射到哈希环上的方法进行存储管理。
本领域技术人员应该理解的是,对于存储对象及副本与其存储位置之间建立映射的方式还存在很多,上述技术方案并不用于具体的限定。比如在一些其他的技术手段中,用户还可以通过存储对象的IP地址来分配存储位置。
作为一种较为优选地实施例,所述的云存储系统100还包括:身份认证服务器节点106,所述身份认证服务器106包括:信息接收单元1062,用于接收来自所述代理服务器节点104的对应于所述操作请求的用户身份信息;身份认证单元1064,用于对所述用户身份信息进行认证,并将认证结果返回所述代理服务器节点104,以由所述代理服务器节点104确定是否响应于所述操作请求。
在该技术方案中,有限的存储空间作为一种资源,对不同的用户会设定有不同的权限。当用户发出操作请求时,首先根据用户的身份信息,确定其拥有的权限,根据权限有无来确定是否响应操作请求。
具体来说,用户可分为普通用户和付费用户,普通用户有1G的存储空间,可实现上传、下载,存储对象定期保存的功能;付费用户有10G或更多的空间,可实现上传、下载、实时查看、存储对象永久保存等功能。当用户点击存储对象请求实时查看文件内容时,则系统需对用户的身份信息进行认证,如果为普通用户,则无实时查看权限,提示用户没有实时查看权限;如果为付费用户,则有实时查看权限,可响应用户的实时查看请求。
对应于图1所示的云存储系统100,图2示出了该云存储系统100的结构示意图。
如图2所示,结合图1所示的云存储系统100中的各个功能模块,云存储系统100中的每个服务器节点分别用于实现:
代理服务器节点(Proxy Node)104,主要承担对象存储系统的元数据服务器的功能,提供数据定位的能力。本方案中的代理服务器节点104,负责维护账户(account)、容器(container)以及对象(object)在环(ring)中的位置信息,同时向外部提供API服务,处理用户访问请求。另外,代理服务器负责协调存储服务器集群的节点调度工作,当某一台或者多台存储服务器节点102无法正常工作时,代理服务器节点104将会把用户的API请求转发至其他正常运作的存储服务器节点102,实现用户的无中断服务能力。
存储服务器节点(Storage Node)102,作为对象存储设备,主要实现用户对象数据的存储功能。存储服务器节点102基于通用标准的硬件服务器设备提供在能力方面不亚于昂贵的专用存储设备的文件对象存储服务,在成本方面具有明显优势。存储服务器节点102上运行着用户账户、容器和对象的服务进程以及其他相关进程。
身份鉴定认证服务器节点(Auth Node)106,提供用户身份鉴定认证服务,代理服务器节点104在处理用户请求时,需要对客户的身份进行鉴定认证,此时代理服务器节点104将用户所提供的身份资料信息转发至鉴定认证服务器节点106进行处理。
其中,上文涉及到了账户(account)、容器(container)、对象(object)和环(ring)等概念,下面进行详细说明。
1、账户
本方案设计目的是为多用户提供对象存储服务,每个用户拥有独立账户,用户在使用对象存储服务之前需要提交账户名以及密钥,代理服务器节点104接收并把用户提供的信息提交到身份鉴定认证系统。身份鉴定认证系统由身份鉴定认证服务器节点106维护,用于鉴定账户的有效性,并将结果返回给代理服务器节点104。代理服务器节点104根据结果判定用 户能够使用本方案对象存储服务进行数据处理。
2、容器
容器相当于Windows操作系统下的文件夹或者UNIX系统下的目录,用于组织数据,是独立的存储区间。但是容器与文件夹或目录最基本的区别在于容器是不能嵌套的,即容器不能有下级容器存在。在本方案的账户中,容器的数量没有上限,但是本方案要求对象(文件)必须存储在某个容器当中,因此在账户中最少应该有一个容器来提供对象(文件)的上传。
容器的命名没有太大的限制,本方案仅仅要去容器名称中不能包含斜杠符号以及名称长度必须小于256个字节。其中,容器名称的长度是指容器名称转换成URL编码的长度,如容器名称为“Course Docs”,该名称经过URL编码后转换成“Course%20Docs”,因而容器名称的长度为13个字节,而不是想象中的11个字节。
3、对象
对象由存储实体和元数据组成,相当于文件的概念。当向本方案对象存储系统(由存储服务器节点102维护)上传文件时,文件并不经过压缩或加密,而是和文件存放的地点(容器名)、对象名以及文件的元数据(键值对形式)的信息组成对象,继而存放于存储服务器节点102上。
另外,对象命名与容器命名类似,并无过多限制,本方案仅仅要求对象名称长度必须少于256个字节。类似容器名称长度,对象名称长度指的是对象名称经过URL编码转换成的字符串的长度。例如,对象名称为“C++final(v2).txt”,经过URL编码转换成字符串“C%2B%2Bfinal%28v2%29.txt”,该对象名称长度为24字节,而不是16字节。此外,本方案对象存储系统允许上传的对象最小为0字节,最大为5GB,但可以通过本方案的大对象支持功能对超过5GB的对象进行分割上传。本方案对于对象中的元数据也是有所限制的,每个对象的源数据不存放超过90个键值对,并且总的键值对占用空间不能超过4KB。
4、环
环表示存储实体名称和存储实体物理位置的映射关系,用于确定数据 存放在存储服务器集群中的具体位置。在本方案的对象存储系统中,账户、容器和对象都可以有独立的环,但每个环的工作原理是一样的。当用户从外部调用API访问本方案系统时,代理服务器节点104会根据所操作的实体(账户/容器/对象)寻找相对应的环,以确定所要操作的实体所在的物理位置。
(1)环使用了域(zone),设备(device),分区(partition)以及副本(replicas)的概念来维护实体和物理位置的映射关系。
首先,对于“域”和“设备”,图3示出了根据本发明的一个实施例的存储服务器节点的结构示意图。其中,存储服务器节点102具体可以分为多个数据域,以用于对数据进行隔离。一个“域”(即数据域)可以由一台“设备”构成;同时,由于域的定义非常灵活,也可以是若干数量的设备、服务器、机架、甚至是数据中心。通过对多个数据域的划分,能够保证在某个域失效的场景下,本方案系统可通过其他有效域继续提供服务。
其次,在整个存储服务器集群中,环的每个分区默认复制3份(用于举例;显然也可以为其他数目),即3个副本(包括本体);其中,分区存储的具体位置也是由环来维护。环的分区均匀分布在整个本方案对象存储系统的所有设备上。当有设备添加或删除时,环确保了每次移动的分区数据尽可能最小,而且每次移动的分区中只包含分区的一个副本。
实际上,分区的概念来源于“哈希(Hash)”算法中的虚节点,该算法主要用于解决互联网中的热点问题,即新增或删除集群中的服务器时,用户的链接应该尽可能少的迁移到其他服务器上,使系统不会因增减服务器而受到太大的影响。本方案同样应用了哈希算法,环的设计便是用于新增或删除存储设备时,本方案系统不会因此受到过多的影响。
(2)权重(weight)也是环中的重要概念。当本方案系统的存储服务器节点102的存储容量大小不一时,通过权重参数保证分区的均匀分布。容量较大的存储设备负责更多的分区,容量较小的存储设备只需要负责较少的分区,因此容量较大的分区具有较大的权重,而容量较小的分区权重也较小。
(3)具体地,本发明在环中使用了一致性哈希算法。一致性哈希算法的目的主要是为了解决分布式网络中的热点问题。一般来讲,衡量一个哈希算法的4个指标:
1)平衡性(Balance)
平衡性是指Hash的结果能够尽可能分布均匀,充分利用所有缓存空间。
2)单调性(Monotonicity)
单调性是指如果已经有一些内容通过哈希算法分派到了相应的缓冲中,又有新的缓冲加入到系统中。哈希的结果应能够保证原有已分配的内容可以被映射到新的缓冲中去,而不会被映射到旧的缓冲集合中的其他缓冲区。
3)分散性(Spread)
分散性定义了分布式环境中,不同终端通过Hash过程将内容映射至缓存上时,因可见缓存不同,Hash结果不一致,相同的内容被映射至不同的缓冲区。
4)负载(Load)
负载是对分散性要求的另一个纬度。既然不同的终端可以将相同的内容映射到不同的缓冲区中,那么对于一个特定的缓冲区而言,也可能被不同的用户映射为不同的内容。
本方案在换的设计中使用哈希算法的主要目的是在改变集群的node数量时(增加/删除服务器),能够尽可能少地改变已存在的键(key)和节点(node)的映射关系,以满足单调性。那么,对于一致性哈希算法的具体应用思路,下面结合图4至图7进行详细说明。其中,图4示出了根据本发明的一个实施例的哈希环空间的结构示意图;图5示出了根据本发明的一个实施例的一致性哈希算法的数据移动的示意图;图6示出了根据本发明的一个实施例的一致性哈希算法构造虚拟节点的示意图;图7示出了根据本发明的一个实施例的虚拟节点与存储服务器节点之间的对应关系的示意图。
如图4所示,根据本发明的一个实施例的哈希环空间结构中,存储服 务器1、存储服务器2等在存储对象时,采用的步骤包括:
a、首先,求出每个存储服务器节点(机器名或者是IP地址)的哈希值,并将其分配到一个如图4所示的圆环区间上(这里取0-232)。
b、然后,求出需要存储对象的哈希值,并根据该哈希值将其分配到上述圆环上。
c、最后,从对象映射到的位置开始顺时针查找,并将对象保存到找到的第一个存储服务器节点上。
基于上述存储方式,则对于存储服务器节点的增减,将极大地降低对数据的迁移量。比如图5所示,假设在环形的哈希空间中,存储服务器5被映射在存储服务器3和存储服务器4之间,那么受影响的将仅是:沿存储服务器5逆时针遍历,直到下一个存储服务器(即存储服务器3)之间的对象(这些对象原本映射到存储服务器4上)。
考虑到哈希算法并不是保证绝对的平衡,尤其node较少的话,对象并不能被均匀的映射到node上。为了解决这种情况,一致性哈希引入了“虚拟节点”的概念。如图6所示,“虚拟节点”(图中较大的圆形节点)是实际节点在环形空间的复制品,一个实际节点对应了若干个“虚拟节点”,“虚拟节点”在哈希空间中以哈希值排列。
具体地,图7示出了一种具体实施例下的虚拟节点与实际节点之间的对应关系。如图7所述,虚拟节点包括V1、V2……V8,而实际节点包括C1、C2……C4。对象1、对象2等经过哈希算法的运算后,被分配至对应的虚拟节点,而利用虚拟节点与实际节点之间的对应关系,比如V1、V2与C1之间的对应关系等,则最终能够将对象1、对象2等存储至对应的实际节点中,且确保了在实际节点的数量较少时,仍然能够实现均匀的对象分布。
图8示出了根据本发明的一个实施例的数据存储方法的示意流程图。
如图8所示,根据本发明的一个实施例的数据存储方法,用于云存储系统,所述数据存储方法包括:
步骤802,获取待存储对象;
步骤804,复制所述待存储对象,得到包含所述待存储对象在内的多 个对象副本;
步骤806,将所述多个对象副本均匀地存储至所述云存储系统中的不同数据域。
在该技术方案中,通过复制待存储对象,并将得到的多个对象副本均匀分布在存储区域不同的数据域中,实现对象的冗余备份,使得存储服务器节点中的单个数据域发生故障时,仍可通过其他数据域来提供服务,从而避免了单点故障引起的数据丢失,有助于提高数据的安全性和云存储系统的稳定性。
其中,获取待存储对象的过程可以是用户请求上传,也可以是对虚拟机镜像、照片、电子邮件等数据的定期备份。同时,数据域的选取非常的灵活,可以是某个设备、服务器、机架、甚至是数据中心,可以根据实际需求进行设置。
作为一种较为优选地实施例,通过哈希算法对所述多个对象副本执行存储操作。
在该技术方案中,利用哈希算法的特性,能够实现对多个对象副本的均匀分布,从而使得云存储系统中的各个数据域之间更为平衡,避免单点故障。进一步地,上述技术方案优选一致性哈希算法,以解决如节点较少时,无法实现多个对象副本的均匀分布问题。
作为一种较为优选地实施例,根据所述云存储系统中的每个存储节点的容量大小,配置每个存储节点的实际占用空间。
在该技术方案中,实际上引入了“权重”的概念,即以每个存储节点的容量大小占总存储容量的比例来表示。由于云存储系统中的存储节点容量大小不尽相同,则通过为容量大的存储服务器配置较大的权重,容量小的服务器配置较小的权重,从而系统在分配待存储对象的存储区域时,应该分配更多的待存储对象至容量大的存储服务器,分配较少的待存储对象至容量小的存储服务器,以实现性能上的均衡,有助于提升云存储系统的运行性能和可靠性。
在具体的实施例中,例如:现有A和B两台存储服务器的容量大小分别为80G和20G,即总存储容量大小为100G,则A服务器的权重可以 为80%(80/100),B服务器的权重可以为20%(20/100)。若有40G的文件需要存储,则根据上述权重配置方案,A服务器中应存储32G(40G×80%)的文件,而B服务器应存储8G(40G×20%)的文件。
作为一种较为优选地实施例,获取所述待存储对象的标识,以及所述多个对象副本分别对应的存储位置,以建立所述待存储对象的标识和所有存储位置之间的映射关系;在接收到对所述待存储对象的操作请求时,根据所述待存储对象的标识和所述映射关系,查找并获取所述待存储对象。
在该技术方案中,通过“哈希”算法在所述存储对象及副本与其对应存储位置之间建立映射关系,不仅可保证存储对象及副本均匀的放在不同的域中,而且在接收到对存储对象的操作请求时,根据存储对象的标识及映射关系就可以查询并获取存储对象。
其中,利用“哈希”算法建立映射的方法可以是:(1)检查存储对象的名称是否符合规定。(2)通过“哈希”计算出存储对象名称对应的哈希值,在环形哈希空间中确定该存储对象的存储位置。(3)所述存储对象及副本通过哈希值与其对应存储位置之间建立映射关系。
需要说明的是:不仅对多个对象副本的存储可采用上述方法存储,对于上述技术方案中提到的账户、容器同样可以采取映射到哈希环上的方法进行存储管理。
本领域技术人员应该理解的是,对于存储对象及副本与其存储位置之间建立映射的方式还存在很多,上述技术方案并不用于具体的限定。比如在一些其他的技术手段中,用户还可以通过存储对象的IP地址来分配存储位置。
作为一种较为优选地实施例,对发出所述操作请求的用户身份信息进行认证;以及根据认证结果确定是否响应于所述操作请求。
在该技术方案中,有限的存储空间作为一种资源,对不同的用户会设定有不同的权限。当用户发出操作请求时,首先根据用户的身份信息,确定其拥有的权限,根据权限有无来确定是否响应操作请求。
具体来说,用户可分为普通用户和付费用户,普通用户有1G的存储空间,可实现上传、下载,存储对象定期保存的功能;付费用户有10G或 更多的空间,可实现上传、下载、实时查看、存储对象永久保存等功能。当用户点击存储对象请求实时查看文件内容时,则系统需对用户的身份信息进行认证,如果为普通用户,则无实时查看权限,提示用户没有实时查看权限;如果为付费用户,则有实时查看权限,可响应用户的实时查看请求。
为了实现上述功能,在上述技术方案中提到的云存储系统100具体实施过程中,可通过运行于代理服务器节点104、存储服务器节点102、身份鉴定认证服务器节点106上的进程加以控制和实现,下面结合三个服务器节点中运行的主要进程予以说明。
一、代理服务器节点104
代理服务器进程:代理服务器进程(“proxy-server”)是本方案代理服务节点104运行的进程。代理服务进程维护账户,容器和对象在环中的位置信息,以及对外提供API服务(即外部网络可以通过代理服务器提供的API来进行数据的访问),处理用户API访问的请求。
其中,“memcached”是高性能的分布式内存对象缓存系统,它通过在内存中缓存数据和对象来减少读取数据库的次数。本方案代理服务进程使用“memcached”进行数据的缓存,以提高用户的访问速度。
二、存储服务器节点102
存储服务器进程主要包括三类:Account类进程,Container类进程和Object类进程,如下表1所示:

Accountaccount-server,account-replicator,account-auditoraccount-reaperContainercontainer-server,container-replicator,container-updater,container-auditorObjectobject-server,object-replicator,object-updater,object-auditor,object-expirer

表1
1、对象服务器进程(object-server)
对象服务器进程负责数据(对象)在本地设备的存储,获取以及删除等生命周期操作。对象以二进制文件的形式存储,而对象的元数据将会存放在二进制文件的额外属性(xattrs)当中。对象存放的路径是对象的名称经过哈希计算得出的结果加上操作的时间戳,对象的最后写入操作决定了对象的内容,在系统对外服务的同时保证最新对象版本。删除对象操作 也会当成是对象的一次更新,对象文件将变成0字节,而且文件名以“.ts”结束,其中ts是tombstone的缩写,意思为墓碑,说明该文件已经被删除。这样的做法是确保删除的对象能被正确复制,使得旧版本的对象不会因某些失败场景而重现。
2、容器服务器进程(container-server)
容器服务器进程主要负责对象的处理操作,该进程收集每个对象所存放的容器信息,并将这些信息数据存储为Sqlite数据库文件,与对象文件类似,该文件可以在集群中进行复制等操作。此外,容器服务器进程也会对容器进行统计,包括每个容器中对象的总数以及容器使用的存储空间等。
3、账户服务进程(account-server)
账户服务进程和容器服务进程类似,区别在于账户服务进程主要负责处理一系列的容器而不是对象。
4、数据复制进程(replicator)
数据复制主要是对数据文件的复制以及同步操作。其中,复制的目的是提供系统可靠性,避免单点故障;而同步的目标是保证文件处于一致性状态,使得对同户提供的文件都是一致的,并且是最新版本。本方案使用数据复制进程实现数据复制的操作,将会把本地存储的数据及其相对应每一份远程的副本作比较,来确保所有的数据都是最新版本。对象的数据复制进程采用哈希表来快速对比每个分区的子组成部分;容器和账户的数据复制进程则采用哈希表和水印技术来进行数据的快速对比,数据复制的更新操作基于Push技术,对于对象数据复制进程,更新操作只是简单的把文件同步到其他的远程存储服务器;而对于账户和容器数据的复制进程,需要通过HTTP协议把缺少的记录推送到远程存储服务器,或者同步整个Sqlite数据库文件。
5、数据库数据复制进程
“account-replicator”和“container-replicator”均属于数据库复制进程。数据库数据复制进程的第一步是使用哈希计算验证两个数据库的一致性,确认存储服务器集群中的数据库是否同步,如果存储服务器集群上的 数据库经过哈希计算后的结果不一致,那么数据复制进朝那个会共享最新的同步点记录,进行数据库的同步,同步点以“记录ID号”和“数据库ID号”元组的形式存储在每个数据库里面。其中,数据库ID是唯一的,即每个数据库ID号在存储服务器集群中都是独一无二的;而记录ID号则是单调递增的整数。如果某个存储服务器上的数据库完全消失,那么本地数据库文件竟会通过rsync同步软件传输到数据库消失的存储服务器上,此后该存储服务器上的数据库ID会修改成新的并且是唯一的ID号。
6、对象数据复制进程(object-replicator)
对象数据复制进程最初的实现方式仅仅是使用rsync同步软件进行本地存储服务器上的数据到远程存储服务器的推送。这种实现方式在小规模的存储服务器集群中表现良好,但是在内存不足的情况下,复制进程将消耗大量时间。目前的对象数据复制进程较之前的模式有所改进,通过计算每个分区中每个目录内容的哈希值,把结果保存至哈希文件,从而获知被修改之后的分区内容,继而将失效哈希值传送到同样拥有对应分区的每一个远程存储服务器上,远程存储服务器针对相关目录进行数据同步。在把修改的文件传送到远程存储服务器后,对象复制进程通知这些同步之后的存储服务器重新计算相应文件目录的哈希值,并保存至对应分区的哈希文件中去。
7、更新进程(-updater)
“account-updater”,“container-updater”,“object-updater”进程均属于更新进程。本方案运营环境中存在容器或账户数据没有被立即更新的情况,通常出现在服务器节点出错或者高负载的时段。如果容器或账户的更新操作失败,那么这些更新操作将会在本地服务上排成队列,最后由更新进程来处理这些失败的更新操作。例如1,当容器所在的服务器节点处于高负载状态的同时,需要将某个对象添加至本方案存储系统当中,此时代理服务器回应用户所添加的对象已经生效并且可读,然而服务器由于高负载而未能及时更新对象列表,也就是说,没有把用户对象添加到某个指定的容器之下,这个失败的更新操作就会添加到队列中稍后会由更新进程进行处理。在对象数据更新的过程中,涉及“一致性窗口”的概念。在实 际应用中,一致性窗口与更新进程的运行时间有关,其指定的是所有文件处于一致性状态的时间。当更新进程运行时,说明有失败的更新操作需要处理,此时说明系统中的对象文件已经处于不一致状态中;当更新进程不再运行时,说明所有的更新操作处理完毕,系统中的文件保持一致。更新进程没有运行的时间段,系统处于一致性状态,这段时间称为一致性窗口。一致性窗口或许不会被代理服务器所感应到,原因在于代理服务器会把一系列的请求转发到第一个相应的容器服务器进程,处于高负载的容器服务器并不是唯一可以处理请求的进程,所以才会导致代理服务器错误响应用户请求的情况。
8、审计进程(-auditor)
“account-auditor”,“container-auditor”,“object-auditor”均属于审计进程。审计进程运行在存储服务器上,执行检查对象,容器和账户的完整性。如果出现审计错误,数据将会被隔离,同时数据复制进程将会从其他存储服务器上获取数据对应的副本取代发生错误的数据。
9、账户清除进程(account-reaper)
账户清除进程是后台守护进程,运行于账户服务进程(account-server)所在的服务器,主要负责清除已经被删除账户中所包含的数据。账户清除进程偶尔扫描服务器,用于寻找是否存在标志为删除的账户数据库。
10、对象过期进程(object-expirer)
“object-expirer”进程提供在指定时间内删除对象的服务。本方案用户可在PUT或者POST方法的HTTP请求中使用X-Delete-At或X-Delete-After Header来指定对象的删除时间。当对象的存留时间到期,本方案集群系统会自动停止向外提供该对象的服务,并在短时间内把该对象从系统中删除。一个集群中只需要一个object-expirer进程,虽然存在单点故障的问题但是即使object-expirer进程在一段时间内停止运行,也不会影响哪个业务的正常运行。如果在object-expirer进程停止运行的过程中,用户通过GET或HEAD方法的HTTP请求访问过期但尚未被删除的对象,那么代理服务器将会向用户返回404NOT FOUND错误,object-expirer进程重 启之后,这些对象将很快被删除。Object-expirer后台守护进程通过自身内部的代理访问集群的后端存储服务器,但无须访问代理服务器或外部网络。
11、rsync同步进程
Rsync为remote sync的简写,意为远程同步。rsync是类UNIX操作系统的数据同步软件,能够同步更新文件以及目录,并适当利用差分编码以减少数据传输。本方案的存储服务进程内部调用rsync实现数据同步的功能。
身份鉴定认证服务器进程:
身份鉴定认证服务进程主要用于提供本方案身份鉴定认证服务,其工作主要包括以下两种:
(1)鉴定:用于验证请求中用户的有效性。
(2)认证:用于鉴别用户资源访问的权限。
目前,本方案支持的身份鉴定认证系统有三种:
TempAuth是本方案内嵌的身份鉴定认证系统,是基于Rackspace现有的身份鉴定认证系统开发的。TempAuth以WSGI中间件的形式,能够作为本方案的子系统或者外部系统运行。本方案通过TempAuth验证系统验证请求中Auth Token的有效性,并缓存验证结果;Auth Token的值不会再请求中改变,但是具有有效期,过期的Auth Token将失效。
Token可以通过HTTP请求中的X-Auth-Token和X-Storage-TokenHeader指定。本方案调用身份鉴定认证系统和发送要验证的Auth Token,对于有效Token,身份鉴定认证系统以Token的全局有效时间进行响应,同时本方案把Token放入缓存,直到超出有效期后,再把Token删除。
TempAuth身份鉴定认证系统包含了管理员和非管理员用户。管理员用户可以对所在的账户进行任何操作;非管理员用户只能在账户指定的容器内进行允许执行的操作。
以上结合附图详细说明了本发明的技术方案,考虑到相关技术中,服务器存储中存在单点故障,维护耗时,可扩展性差。本发明提出一种新的面向对象的云存储解决方案,使用标准化服务器创建冗余,从而避免了单 点故障引起的数据丢失,可提高云存储数据的安全性,各个服务器在云存储系统中位置相等,维护方便,并且可方便的在系统中添加/删除存储服务器,存储空间可扩展。
通过本方案可以非常方便的建立一个软件自定义的存储解决方案,尤其是为对象存储系统(Object-Based Storage System)。对象存储系统综合了NAS(Network Access Server,网络接入服务器)和SAN(Storage Area Network,集中式管理高速存储网络)的优点,同时具有SAN的高速直接访问和NAS的数据共享等优势,提供了高可靠性、跨平台性以及安全的数据共享的存储体系结构。这个平台可以从底层的基础设施中分离管理,使客户可以在硬件上建立大规模存储池,可以广泛应用于视频点播,用户网络数据存储,图书,资料,单据保存等等各个应用方向,随时间推移,必然发挥巨大的作用。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个 流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

云存储系统和数据存储方法.pdf_第1页
第1页 / 共21页
云存储系统和数据存储方法.pdf_第2页
第2页 / 共21页
云存储系统和数据存储方法.pdf_第3页
第3页 / 共21页
点击查看更多>>
资源描述

《云存储系统和数据存储方法.pdf》由会员分享,可在线阅读,更多相关《云存储系统和数据存储方法.pdf(21页珍藏版)》请在专利查询网上搜索。

本发明提供了一种云存储系统和一种数据存储方法,其中所述云存储系统包括存储服务器节点,所述存储服务器节点包括:对象获取单元,用于获取待存储对象;对象复制单元,用于复制所述待存储对象,得到包含所述待存储对象在内的多个对象副本;存储处理单元,用于将所述多个对象副本均匀地存储至所述云存储系统中的不同数据域。通过本发明的技术方案,可以使用标准化服务器创建冗余,从而避免了单点故障引起的数据丢失,可提高云存储数。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1