CN107018185B - 云存储系统的同步方法和装置 - Google Patents
云存储系统的同步方法和装置 Download PDFInfo
- Publication number
- CN107018185B CN107018185B CN201710195750.2A CN201710195750A CN107018185B CN 107018185 B CN107018185 B CN 107018185B CN 201710195750 A CN201710195750 A CN 201710195750A CN 107018185 B CN107018185 B CN 107018185B
- Authority
- CN
- China
- Prior art keywords
- hash value
- storage device
- file
- partition
- file object
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/178—Techniques for file synchronisation in file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Abstract
本发明公开了一种云存储系统的同步方法与装置,包括接收客户端发起的文件对象操作请求;根据所述文件对象创建请求的内容,计算出对应于所述文件对象的哈希值;根据所述哈希值获取所述文件对象所在的分区;根据所述文件对象所在的分区取得多个所述文件对象的每个副本对应的存储设备;向所取得的所述多个存储设备发起写入求,以将所述文件对象的副本写入到相应的存储设备中;计算新的分区的哈希值,并将所述新的哈希值传送给相邻的下一个存储设备。通过本申请的同步方法与装置,可以减少同步文件对象的网络开销与同步延迟。
Description
技术领域
本申请涉及云存储领域,特别涉及一种云存储系统的同步方法和装置。
背景技术
云存储服务为用户提供一种随时可在网络上存取文件的机制。随着互联网数据量的爆炸式增长,如何高效、可靠、稳定地存储这些数据变得十分迫切,因此云存储也成为网络存储领域的研究热点。
现有的使用最终一致性模型(eventual consistency model)对象存储系统(object storage system)是一种综合了网络附属存储(Network Attached Storage,NAS)和存储区域网络(Storage Area Network,SAN)的优点的云存储系统,同时具有SAN的高速直接访问和NAS的数据共享等优势,是一种高可靠性、跨平台性以及安全的数据共享的存储体系结构。对象存储系统是建构云计算系统的一个重要组成,然而现有的对象存储系统有着大量的带宽消耗和与高的时间延迟的问题需要解决。此外,也需要巨额资金来购买路由器和交换机等等以完成网络基础设施的建构。
另一方面,现有对象存储系统需要较长的时间来达到文件同步的一致性的状态。因此,对于大规模的系统而言,系统会消耗大量的运算资源以将各个存储端点中的文件对象复制到其他的存储节点。如此一来将导致用户端指令执行的延迟,这样的时间延迟会导致不佳的用户体验。同样的,对于数据密集型的对象存储系统,数据同步处理也常有显着延迟的现象,并且大量的网络开销变得无法令人接受。
发明内容
本发明所要解决的技术问题在于提供一种云存储系统的同步方法和装置,适用于使用多个数据副本的云存储系统。
为了解决上述问题,本发明提供了一种云存储系统的同步方法,包括:接收客户端发起的文件对象操作请求;根据所述文件对象创建请求的内容,计算出对应于所述文件对象的哈希值;根据所述哈希值获取所述文件对象所在的分区;所述文件对象所在的分区取得多个所述文件对象的每个副本对应的存储设备;向所述多个存储设备发起写入请求,以将所述文件对象的副本写入到相应的存储设备中;计算新的分区的哈希值,并将所述新的哈希值传送给相邻的下一个存储设备。
本申请的另一实施例提供一种云存储系统的同步装置,包括:第一计算模块,用于回应客户端发起的文件对象操作请求,以根据所述文件对象创建请求的内容,计算出对应于所述文件对象的哈希值,并根据所述哈希值获取所述文件对象所在的分区;写入模块,用于所述文件对象所在的分区确定多个所述文件对象的每个副本对应的存储设备,并向所确定的所述多个存储设备发起写入请求,以将所述文件对象的副本写入到相应的存储设备中;第二计算模块,用于计算新的分区的哈希值,并将所述新的哈希值传送给相邻的下一个存储设备。
本申请的另一实施例提供一种云存储系统的同步装置,包括:一个或多个处理器以及存储器;所述一个或者多个模块存储在所述存储器中,当被所述一个或者多个处理器执行时,执行下列步骤:接收客户端发起的文件对象操作请求;根据所述文件对象创建请求的内容,计算出对应于所述文件对象的哈希值;根据所述哈希值获取所述文件对象所在的分区;根据所述文件对象所在的分区取得多个所述文件对象的每个副本对应的存储设备;向所取得的所述多个存储设备发起写入请求,以将所述文件对象的副本写入到相应的存储设备中;计算新的分区的哈希值,并将所述新的哈希值传送给相邻的下一个存储设备。
与现有技术相比,通过本申请所提供的系统与方法,可以减少网络基础设施的建置成本。此外额外的网络开销和同步延迟,这两者都可以通过本申请的方法改善。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请所公开的云存储同步方法的流程图;
图2为本申请所公开的云存储同步方法的流程图,说明图1中步骤160计算新的分区的哈希值的详细流程;
图3A为本申请的云存储系统物理配置示意图;
图3B为本申请的云存储系统逻辑配置示意图以及全局的数据流向示意图;
图3C为现有技术的云存储系统进行同步时单节点的数据流向示意图以及逻辑配置示意图;
图3D为现有技术的云存储系统逻辑配置示意图以及全局数据流向示意图;
图4说明了某个存储设备为其中的一个分区选择下一个同步设备的流程图;
图5为本申请使用的分布式哈希表;
图6为本申请进行交换验证的步骤;
图7为本申请公开的云存储系统的同步装置的结构示意图;
图8为本申请公开的云存储系统的同步装置的另一结构示意图;
图9为使用本申请公开的同步方法的模拟结果;
图10为使用本申请公开的同步方法的模拟结果;
图11为使用本申请公开的同步方法的模拟结果;
图12为使用本申请公开的同步方法的模拟结果;
图13为使用本申请公开的同步方法的模拟结果;
图14为使用本申请公开的同步方法的模拟结果;
图15为使用本申请公开的同步方法的模拟结果;
图16为使用本申请公开的同步方法的模拟结果。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
另外,附图所示出的本发明实施例的方法所包含的步骤,可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然本发明实施例的方法在所示的流程图中体现出了本发明的技术方案在执行时的一定的逻辑顺序,但通常而言,该逻辑顺序仅限于通过该流程图所示出的实施例。在本发明的另一些实施例中,本发明的技术方案的逻辑顺序也可以以不同于附图所示的方式来实现。
需要说明的是,本发明各实施例的执行主体,可以集成在服务器中,也可以独立存在,本发明包括但不仅限于此。当然,本发明的各实施例除了单独存在,也可以相互融合补充或组合使用,二者组合使用同样能实现本发明实施例的技术方案。
下面将结合附图对本发明技术方案进行详细描述。
参考图1,为本申请所公开的云存储同步方法的流程图,该方法可以包括以下几个步骤:
步骤110:接收客户端发起的文件对象操作请求;
步骤120:根据所述文件对象创建请求的内容,计算出对应于所述文件对象的哈希值;
步骤130:根据所述哈希值获取所述文件对象所在的分区;
步骤140:根据所述文件对象所在的分区取得所述文件对象的每个副本对应的存储设备;
步骤150:向所取得的所述多个存储设备发起写入请求,以将所述文件对象的副本写入到相应的存储设备中;
步骤160:计算新的分区的哈希值,并将所述新的哈希值传送给相邻的下一个存储设备。
参考图2,为本申请所公开的云存储同步方法的流程图,是说明图1中步骤160计算新的分区的哈希值的详细流程。
步骤210:计算分区中每个文件的哈希值;
步骤220:根据每个文件的所述哈希值,生成组合哈希值;
步骤230:根据所述的组合哈希值,生成新的哈希值。
以下详细说明图1与图2的方法,并且使用Openstack Swift作为实施例说明。Openstack Swift是一种的开源对象存储系统,已在工业和学术界广泛使用。
在本申请中,存储节点都是通过由路由器或交换机所组成的網络系统300进行连接的,配置成如图3A所示的星型网络架构,图3A所示是实际的物理机配置,图中箭头表示网络连线。在本申请中所谓的环状结构是指逻辑上网络数据的流向是环状的,如图3B所示。在现有技术中,当需要进行同步时,每个存储节点都要向其他节点发送同步的数据与信息,例如存储节点311会向存储节点312、313、314、315发送同步的数据与信息,同样的存储节点312会向存储节点311、313、314、315发送同步的数据与信息,这样一来就会造成系统的负担。因此通过本申请所公开的方法,存储节点311、312、313、314、315以逻辑上环状的方式进行同步,使得网络数据的流向是环状的,这样每个存储节点只需要跟相邻的下一个存储节点交换数据,因此存储系统的网络负载与计算就可以大幅度的减少。
具体过程说明如下。本申请的主要技术效果在于采用环状同步路径的方式进行同步。
在现有技术的对象存储系统中,若某个存储节点(设备)需要对于其中的一个分区进行同步,则需要经过以下过程。图3C是现有技术中数据同步的逻辑关系,其中每个节点都需要向其他所有的节点进行数据请求。以设备r1为例,画出了其向其他节点推送数据的过程,将五个节点的请求合并画在一起就是图3D,也就是每个节点都向其他四个节点推送数据。下面以设备r1对某个分区进行同步为例说明对这个过程进行说明,其中,该例子中系统的副本数r=5。
同步时,包括下列步骤:
(1)取得文件分区的每个副本对应的存储设备;
(2)设备r1向所有远程的存储设备(r2、r3、r4、r5)同时发出同步请求,并比较返回的哈希值;
(3)如果某个(或多个)远程节点的分区内容和本地的分区内容不一致,则将本地分区的文件传输到那些拥有不一样版本的远程节点中;
(4)如果出现不一致,远程节点(比如r2)在后续访问分区时,会发现分区内新增另一个版本的文件,此时远程节点将选取最新的那一份保留下来,其余的版本全部删除。
这个过程在每个节点都进行一次,也就是说,对于每一个分区,每个节点都需要与其他的r-1个存有副本的设备进行同步。因此,在同步时,整个系统中的存储节点的逻辑关系会如图3D所示。
在本申请中,将单个文件对象在整个系统的同步过程改为如图3B所示,使得每个存储设备只需要与其下一个节点执行一次同步操作即可。假设系统对每个对象文件保存r个副本。那么原有的方式中每个对象文件需要进行r*(r-1)次同步操作,而新的方式仅需要r次即可,减少到原来的1/(r-1)。相应的,网络开销和同步一次所需的时间将大幅的下降。
接着详细说明本申请的同步流程,客户端(Client)向代理服务器(Proxy-Server)发起文件对象操作请求。这个代理服务器可以是存储节点311、312、313、314、315中的一个。代理服务器接收客户端发起的文件对象操作请求(步骤110),接着代理服务器会根据所述文件对象创建请求的内容,计算出对应于所述文件对象的哈希值(步骤120),并根据所述哈希值获取所述文件对象所在的分区(步骤130)。
以下说明如何根据所述哈希值获取所述文件对象所在的分区(步骤130)。在分布式对象存储系统中,可以通过拥有该对象的账户(Account)、账户下的容器(Container)、和容器里面的对象文件名称来唯一确定一个对象。比如/rmk/containerl/obj.txt表示的是rmk账户下,名字叫做“containerl”的容器下面的文件名为obj.txt的一个对象。系统首先生成/rmk/containerl/obj.txt的哈希值,然后取哈希值的前n位作为partition的号码。比如这里n=18,那么哈希值的前18位就是这个对象所在的partition。因此,当系统选择n=18时,在步骤120计算出所述文件对象的哈希值,步骤130就可以取所述文件对象的哈希值的前18位作为这个对象所在的partition。
典型的哈希算法有MD5、SHA-1算法等,本申请采用的是MD5算法,MD5即Message-Digest Algorithm 5(信息-摘要算法5),可以将任意长度的数据算出一个128bit的哈希值作为区别其他数据的特征,如果每4bit用一个十六进制字符表示,可以表示为一个32位长度的字符串。
步骤110中所提到的操作请求,包括有四种场景,包括创建、删除、节点失效以及稳定状态。也亦即本申请所公开的同步方法可以应用于这四种场景。
在创建的应用场景中,文件对象会被上传到云存储系统中。如果是在短时间中以较高的频率上传文件对象,那么由于数据频繁更新,所有节点的数据重新达到一致状态所需要的时间就变得相当地长。这个场景通常会发生在大规模的云存储系统中。
在删除的应用场景中,文件对象会被修改或删除。大部分的对象存储系统,在处理文件修改请求时,是把文件对象先删除然后再以新的文件重新创建。因此,所有存储设备的旧副本会先被删除,新的数据才会传送并写入到各个存储设备。因此在这个场景中,所消耗的网络资源可能会比其他的场景还多。
在节点失效的场景中,会有一个或多个存储设备或节点可能暂时没有在前述的环状结构中,因此暂时会无法处理任何的指令或操作。当日后恢复运作或者重新连上系统后,这些失效节点中原本的副本将变的过时。现有技术中,系统将有一个名为Rsync的程序来处理这些过时的副本,以将这些副本同步到最新的状态。本申请公开的方法不需要修改这个Rsync程序,也可以更快更有效率的达到一致性的状态。
在最后一个稳定状态的场景中,整个云存储系统会处于稳定状态,此时会有一段时间没有数据操作或者数据读取,亦即前述的创建、删除以及数据读取的指令会有一段时间暂停。
步骤130之后,接着代理服务器要找出多个所述文件对象的每个副本对应的存储设备(步骤140)。在这一实施例中,可以通过分布式哈希表来实现步骤140,亦即根据环数据结构所记录的分区、副本、存储设备三者的对应关系,来取得对应的存储设备。
具体来说,在分布式对象存储系统中,对象的存储位置是根据分布式哈希表(Distributed Hash Table,DHT)的数据结构实现的。DHT创建了一个有2的n次幂个分区(partition)的空间。在典型的应用中,n一般取18,即共有262144个分区。Swift通过ring的数据结构,将这262144个分区分别对应哪一个存储设备都记录下来,如图5所示。每一个分区的每一个备份(replica)写在哪个存储设备(device)上都由这张表记录下来。每次只需要计算出对象(object)所在的分区,就可确定其每一个备份所在的位置。
举例来说,obj.txt文件的分区(partition)是1,并且系统设置有3个备份,那么这三个备份将分别存储于设备(device)1、4和7。这三个设备连在一起,就形成了一个环。由于这个对应表在每个节点中都是一样的,因此某个节点就很容易知道其上游节点和下游节点乃至整个存储分布位置。
取得多个所述文件对象的每个副本对应的存储设备后,就向所述多个存储设备发起写入请求,以将所述文件对象的副本写入到相应的存储设备中(步骤150)。
例如,通过分布式哈希表取得副本对应的存储设备是设备1、4和7。那个就可以将副本写入这些对应的存储设备中。
完成写入的操作之后,每个存储设备计算新的分区的哈希值,并将所述哈希值与相邻的下一个存储设备进行交换验证(步骤160)。每个存储设备只主动与环中邻近的下一个设备进行同步,与上一个设备交换信息是被动进行的,是由上一个设备发起的。
由于分区内写入了新的文件,每个存有该分区的副本重新进行步骤210至步骤230的过程,计算新的分区的哈希值,并将哈希值与环上相邻的下一下一个节点进行交换验证。理论上同一个存储分区的不同副本内容及其哈希值应该是一致的,如果由于写入不及时出现不一致现象,还需要从分区的所有副本中选取内容最新的那一个,覆盖掉其他所有旧的内容。
更进一步,说明本申请对于失效节点的处理。
参考图3A,如果节点311需要对某个分区进行一次同步操作,在这个实施例中,假设系统中节点312因为断电、断网或者其他原因出现故障。
基于可扩展性考虑,一个存储节点无法得知远程的节点312是否处于故障当中,在原有的系统设计中,311依然会不断向312进行请求同步,即使一直无法获得正确的返回。对一个已经处于宕机状态的节点312进行的请求既增加了同步时间,同时也增加了网络流量,而这些都是不必要的。
原有的系统设计中,由于每一次同步都需要向其他所有的节点进行请求,因此虽然失效的节点会增加其他节点的同步时间和网络流量,但是系统依然是能够由剩下的节点提供服务的。
本申请采用了环形的同步流程后,文件对象需要通过在环中传播一轮从而实现在整个集群中的一致性。一旦某个节点失效,同步将卡在这个失效的节点中,无法往前进行传播。因此本申请设计了一个机制使得一个节点如果长时间没有收到下一个节点的回应时,就选择另外一个可用的节点,使得同步可以继续下去。环形的同步流程一定是省流量的,现有技术的设计不采用的原因是无法在节点失效时依然让系统可用,而本申请则可以进一步解决这个问题。
图4说明本申请中某个存储设备为其中的一个分区选择下一个同步节点的过程。在步骤150中,如果向所取得的所述多个存储设备发起写入请求後無法将所述文件对象的副本写入到相应的存储设备中,那么就进行图4的步骤。
参考图4,首先计算文件对象所在的分区p的所有副本对应的存储设备列表L与所述存储列表中每一存储设备的P(node)(步骤411),同时用一个失败次数纪录表记录对每个存储设备的最后N次同步请求是否失败,其中1表示失败一次,0表示成功一次。接着从所述存储设备列表L中随机取出一个存储设备(步骤412)。
再生成一个介于0与1之间的随机数(步骤413),并比较所述随机数与所述随机取出的存储设备的P(node)(步骤414)。
P(Node)是指同步时选择該存储设备的概率。例如计算出的P(314)就是在下一次同步中选择存储设备314的概率。
接著根据所述随机数与所述随机取出的存储设备的选择概率的比较结果,决定是否对所述随机取出的存储设进行同步请求。如果所述随机数小于所述随机取出的存储设备的P(node),那么向所述随机取出的存储设备进行同步请求(步骤415)。此时将判断所述随机取出的存储设备是否能正常回应同步请求(步骤416),如果正常,则在失败纪录表中将所述节点所在的行写入0(步骤417),并结束本次同步(步骤418)。如果不正常,则在失败次数纪录表中将所述节点所在的行写入1(步骤419),并重新进行一次存储设备选取(步骤412)。
在步骤414中,如果所述随机数大于所述随机取出的存储设备的P(node),那么在失败次数纪录表中将所述节点所在的行写入0(步骤420),并重新进行一次节点选取(步骤412)。
具体来说,用失败次数纪录来记录每个存储设备的最后N次操作的成功或者失败情况。Failure(node)表示保存有当前存储设备(例如311)对远程存储设备进行的最后N次操作的成功或者失败情况。用1代表失败,0代表成功,如果最后N次操作失败一定比例以上,可以认为该节点失效。下表是存储节点311维护的一个N=5的列表的例子。
根据此表计算存储设备的选择概率P(node)的公式为:
其中:
SUM=∑nodee-∈*distance+Failure(node),这里node为未失效的存储设备;
distance是指在当前分区的逻辑配置中,远程存储设备距离当前存储设备的顺序的逻辑距离。假设本例中五个设备的逻辑结构如图3B所示,以存储设备311而言,则存储设备312,313、314、315的distance值分别为1、2、3、4。本例中,设备数量device_count=5,并取α=0.5,ε=1,实际部署中这两个参数根据部署环境进行调整。
由于存储设备311对存储设备312的最后5次操作都是失败的,超过了N*0.5=2.5,因此认为节点312已经失效。并且注意到只有313、314、315为未失效节点,故SUM=e-2+1+e-3+1+e-4+2=(2e-2+e-1)。
可以看到,系统将更可能选择节点313作为下一个同步的节点。假如选择节点313进行同步,并且同步成功了,接着将313所在的行左移一位,并将0写入节点313所在的行中,得到的新的表如下:
该方案偏向于选择逻辑上邻近的且失败次数较多的未失效节点,因为这些节点有更大的概率处于未同步的状态。尽早与这些节点进行同步能够减少过时数据在系统中流转从而减少同步延迟和网络开销。同时,该方案按概率探测已失效节点,从而在该类节点重新接入系统后能够较快恢复其数据一致状态。
进行交换验证的步骤详细说明如下,参考图6。
以两个存储设备之间为例。存储设备311有三份文件对象,存储设备312也存有三份文件对象。首先,计算分区中每个文件的哈希值(步骤210),三份文件可以得到三个哈希值,接着根据三个哈希值生成组合哈希值(步骤220),再根据所述的组合哈希值,生成新的哈希值后,把新的哈希值传送给存储设备312。
在现有技术中,在步骤220后就把组合哈希值传送给存储设备312。所以,假设一个分区内有n个文件,哈希值长度为32,现有技术需要传递32*n个字符,而通过本申请所公开的方法,由于产生新的哈希值,因此只需要传递32个字符。
图7为本申请公开的云存储系统的同步装置的结构示意图,该装置可以包括:
第一计算模块610,用于回应客户端发起的文件对象操作请求,以根据所述文件对象创建请求的内容,计算出对应于所述文件对象的哈希值,并根据所述哈希值获取所述文件对象所在的分区;
写入模块620,用于根据所述文件对象所在的分确定多个所述文件对象的每个副本对应的存储设备,并向所确定的所述多个存储设备发起写入请求,以将所述文件对象的副本写入到相应的存储设备中;
第二计算模块630,用于计算新的分区的哈希值,并将所述新的哈希值传送给相邻的下一个存储设备。
其中,第二计算模块630,更用于:
计算分区中每个文件的哈希值;
根据每个文件的所述哈希值,生成组合哈希值;
根据所述的组合哈希值,生成新的哈希值。
在另一实施例中,如果所述写入模块向将所述文件对象的副本写入到相应的存储设备中,所述写入模块更包括用于:
取得所述文件对象所在的分区的所有副本对应的存储设备列表与所述存储列表中每一存储设备的选择概率;
从所述存储设备列表中随机取出一个存储设备;
生成一个介于0与1之间的随机数;
比较所述随机数与所述随机取出的存储设备的选择概率;以及
根据所述随机数与所述随机取出的存储设备的选择概率的比较结果,决定是否对所述随机取出的存储设进行同步请求。
上述的步骤可参考前述方法说明,在此不再赘述。
图8为本申请公开的云存储系统的同步装置。所述同步装置可以包括:
一个或多个处理器701以及存储器702,图7中以一个处理器701为例。处理器701和存储器702可以通过总线或者其他方式连接。
存储器702作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施例中的控制方法对应的程序指令/模块。处理器701通过运行存储在存储器702中的非暂态软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例所公开的同步方法。
存储器702可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据控制装置的使用所创建的数据等。此外,存储器702可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器402可选包括相对于处理器701远程设置的存储器,这些远程存储器可以通过网络连接至同步装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述一个或者多个模块存储在所述存储器702中,当被所述一个或者多个处理器401执行时,执行上述任意方法实施例中的同步方法。
上述产品可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例所提供的方法。
相应地,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有用于执行上述实施例方法的程序。
关于本申请所公开的云存储系统的同步方法的技术效果,请参考图9至图16的模拟结果。
数据模拟的设备采用五台Dell PowerEdge T620塔式服务器,每台服务器包含:(1)两片8核英特尔Xeon(至强)处理器,每核心频率为2GHz、(2)32GB 1600MHz DDR3内存、(3)8个600GB 15K-RPM SAS磁盘、(4)2个1-Gbps Broadcom Ethernet Interface。其中5台服务器通过一个TP-Link千兆交换机组成局域网。5台服务器都作为Openstack Swift中的存储节点,其中一台服务器作为处理客户端请求的Proxy以及认证服务Keystone的所在。物理架构与图3A相同。
软件的操作系统为:Ubuntu Server 14.04 64-bit,客户端为安装在普通PC上的ssbench软件,一种测试OpenStack Swift性能的工具,能够对系统发出创建、删除、修改、读取等一系列命令。
其中测量方法为监听节点开始一轮同步的消息(消息位于/var/log/syslog文件中),监听节点结束一轮同步的消息(消息位于/var/log/syslog文件中),最后计算出这两条消息之间以太网接口发生的流量以及经过的时间。
图9至图16的模拟结果是说明下面的情况,亦即当对象存储系统中保存的副本数设置为3的时候,也就是每一份数据在三个存储设备中进行备份保存,整个系统中存在3份一模一样的数据,在四种使用情境下,单个设备对自身所有分区与其他设备进行一次完整的同步所需要的网络流量和时间。特别说明的是,同步的最小单位是分区,分区里面包含多个文件对象,但是一次同步操作是针对一整个分区进行的,不会单独抽出一个对象来进行。以下“一轮同步过程”指的是对单个存储设备中存储的所有分区都进行一次同步操作,对某个分区执行一次同步操作是指,向其他保存有该分区副本的存储设备进行一次同步。这些图中,虚线长条图是现有技术,黑色长条图为使用本申请所公开的同步方法。
图9与图10为节点失效的情景。
在系统平稳运行时,人为使其中一个存储设备失效(关机或者断开网络,记该设备为node0),同时客户端向系统中发出修改指令,修改系统中十分之一的对象(比如当前系统中有4M(即4百万)对象时,则修改其中0.4M的对象),待修改完成后,重新将node0接入系统中,此时node0需要重新和其他存储设备同步以获得最新版本的对象数据,node0完成一轮同步所产生的网络流量为图9,所需时间为图10。
由图9与图10的数据可以看的出来,不论文件对象的数量,相较于现有技术,使用本申请所公开的同步方法的网络开销比较低。
图11与图12为10%数据删除情景。
在系统平稳运行时,客户端向系统发出修改指令,删除其中十分之一的对象,待删除完成后,测量其中一个存储设备完成一轮同步所产生的网络流量为图11,所需时间为图12。
图13与图14为10%数据创建场景。
在系统平稳运行时,客户端向系统发出修改指令,创建相当于当前对象数十分之一的对象,比如当前对象有4M个,创建完成后有4.4M个,,待创建完成后,测量其中一个存储设备完成一轮同步所产生的网络流量为图13,所需时间为图14。
图15与图16为系统正常运行的场景。
在图15与图16的场景中,系统处于正常运行的状态,文即件的添加、删除、修改等都没有达到10%的规模,系统处于相对稳定的状态。此时,测量其中一个节点在进行一轮同步操作所需要的网络流量为图15,同步时间为图16。
本申请所公开方法可应用于四种类型的场景:创建、频繁删除、节点故障和稳定状态。在这四种类型的场景中,与现有方法相比,本申请所公开的方法将实现更多的性能改进。应用本申请的方法,存储系统的最大存储容量可以超过四百万个文件,相当于一个中等容量的对象存储系统。从模拟的数据来看,应用本申请的方法可以降低同步运算的资源,也可以降低运算时的网络开销。
本说明书中的各个实施例一般采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。需要说明的是,如果不冲突,本发明实施例以及实施例中的各个特征可以相互结合,均在本发明的保护范围之内。另外,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所描述的程序模块或单元可以由软件、硬件或两者的结合来实现,本申请可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块或单元可以位于包括存储设备在内的本地和远程计算机存储介质中。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元或模块显示的部件可以是或者也可以不是物理单元或模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁盘、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (6)
1.一种云存储系统的同步方法,其特征在于,包括:
接收客户端发起的文件对象操作请求;
根据所述文件对象创建请求的内容,计算出对应于所述文件对象的哈希值;
根据所述哈希值获取所述文件对象所在的分区;
根据所述文件对象所在的分区取得多个所述文件对象的每个副本对应的存储设备;
向所取得的所述多个存储设备发起写入请求,以将所述文件对象的副本写入到相应的存储设备中;
计算新的分区的哈希值,并将所述新的哈希值传送给相邻的下一个存储设备,
其中,如果向所取得的所述多个存储设备发起写入请求后无法将所述文件对象的副本写入到相应的存储设备中,更包括:
取得所述文件对象所在的分区的所有副本对应的存储设备列表与所述存储列表中每一存储设备的选择概率;
从所述存储设备列表中随机取出一个存储设备;
生成一个介于0与1之间的随机数;
比较所述随机数与所述随机取出的存储设备的选择概率;
根据所述随机数与所述随机取出的存储设备的选择概率的比较结果,决定是否对所述随机取出的存储设备进行同步请求。
2.如权利要求1所述的方法,其特征在于,其中所述计算新的分区的哈希值的步骤更包括:
计算分区中每个文件的哈希值;
根据每个文件的所述哈希值,生成组合哈希值;
根据所述的组合哈希值,生成新的哈希值。
3.一种云存储系统的同步装置,其特征在于,包括:
第一计算模块,用于回应客户端发起的文件对象操作请求,以根据所述文件对象创建请求的内容,计算出对应于所述文件对象的哈希值,并根据所述哈希值获取所述文件对象所在的分区;
写入模块,用于根据所述文件对象所在的分区确定多个所述文件对象的每个副本对应的存储设备,并向所确定的所述多个存储设备发起写入请求,以将所述文件对象的副本写入到相应的存储设备中;
第二计算模块,用于计算新的分区的哈希值,并将所述新的哈希值传送给相邻的下一个存储设备,
其中,如果所述写入模块向将所述文件对象的副本写入到相应的存储设备中,所述写入模块更包括用于:
取得所述文件对象所在的分区的所有副本对应的存储设备列表与所述存储列表中每一存储设备的选择概率;
从所述存储设备列表中随机取出一个存储设备;
生成一个介于0与1之间的随机数;
比较所述随机数与所述随机取出的存储设备的选择概率;
根据所述随机数与所述随机取出的存储设备的选择概率的比较结果,决定是否对所述随机取出的存储设备进行同步请求。
4.如权利要求3所述的同步装置,其特征在于,所述第二计算模块,更用于:
计算分区中每个文件的哈希值;
根据每个文件的所述哈希值,生成组合哈希值;
根据所述的组合哈希值,生成新的哈希值。
5.一种云存储系统的同步装置,其特征在于,包括:
一个或多个处理器以及存储器;
一个或者多个模块存储在所述存储器中,当被所述一个或者多个处理器执行时,执行下列步骤:
接收客户端发起的文件对象操作请求;
根据所述文件对象创建请求的内容,计算出对应于所述文件对象的哈希值;
根据所述哈希值获取所述文件对象所在的分区;
根据所述文件对象所在的分区取得多个所述文件对象的每个副本对应的存储设备;
向所取得的所述多个存储设备发起写入请求,以将所述文件对象的副本写入到相应的存储设备中;
计算新的分区的哈希值,并将所述新的哈希值传送给相邻的下一个存储设备,
其中,如果向所取得的所述多个存储设备发起写入请求后无法将所述文件对象的副本写入到相应的存储设备中,更包括:
取得所述文件对象所在的分区的所有副本对应的存储设备列表与所述存储列表中每一存储设备的选择概率;
从所述存储设备列表中随机取出一个存储设备;
生成一个介于0与1之间的随机数;
比较所述随机数与所述随机取出的存储设备的选择概率;
根据所述随机数与所述随机取出的存储设备的选择概率的比较结果,决定是否对所述随机取出的存储设备进行同步请求。
6.如权利要求5所述的同步装置,其特征在于,所述一个或者多个模块存储在所述存储器中,当被所述一个或者多个处理器执行时,更执行下列步骤:
计算分区中每个文件的哈希值;
根据每个文件的所述哈希值,生成组合哈希值;
根据所述的组合哈希值,生成新的哈希值。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710195750.2A CN107018185B (zh) | 2017-03-28 | 2017-03-28 | 云存储系统的同步方法和装置 |
US15/610,441 US10296254B2 (en) | 2017-03-28 | 2017-05-31 | Method and device for synchronization in the cloud storage system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710195750.2A CN107018185B (zh) | 2017-03-28 | 2017-03-28 | 云存储系统的同步方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107018185A CN107018185A (zh) | 2017-08-04 |
CN107018185B true CN107018185B (zh) | 2020-04-07 |
Family
ID=59444969
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710195750.2A Active CN107018185B (zh) | 2017-03-28 | 2017-03-28 | 云存储系统的同步方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10296254B2 (zh) |
CN (1) | CN107018185B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019084782A1 (en) * | 2017-10-31 | 2019-05-09 | EMC IP Holding Company LLC | Shadow address space for sharing storage |
CN108984131B (zh) * | 2018-07-25 | 2021-07-16 | 浪潮电子信息产业股份有限公司 | 数据操作的处理方法以及相关装置 |
CN109362236A (zh) * | 2018-08-31 | 2019-02-19 | 深圳大学 | 基于双云端的数据安全存储方法、装置、设备及存储介质 |
CN109840166B (zh) * | 2019-01-14 | 2021-03-30 | 京东数字科技控股有限公司 | 一种跨集群对象存储异步备份方法、装置和系统 |
CN110795499B (zh) * | 2019-09-17 | 2024-04-16 | 中国平安人寿保险股份有限公司 | 基于大数据的集群数据同步方法、装置、设备及存储介质 |
CN111629028B (zh) * | 2020-04-10 | 2022-02-25 | 清华大学 | 面向分布式多云存储的数据传输调度系统 |
US11875836B2 (en) | 2021-06-04 | 2024-01-16 | Kepler Computing Inc. | Apparatus and method for endurance of non-volatile memory banks via wear leveling with linear indexing |
CN114327289B (zh) * | 2021-12-31 | 2023-08-11 | 展讯通信(天津)有限公司 | 数据同步方法、装置和电子设备 |
CN117112508B (zh) * | 2023-10-20 | 2024-02-06 | 杭州美创科技股份有限公司 | 基于序号的文件同步方法、装置、计算机设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2996308A1 (en) * | 2011-03-08 | 2016-03-16 | Rackspace Us, Inc. | Massively scalable object storage system |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101189766B1 (ko) * | 2008-12-22 | 2012-10-10 | 한국전자통신연구원 | 데이터 서버로 분산 수집된 접근 횟수 기반의 핫 데이터 관리 방법 |
CN102137157A (zh) * | 2011-02-28 | 2011-07-27 | 浪潮(北京)电子信息产业有限公司 | 一种云存储系统及其实现方法 |
US8510267B2 (en) * | 2011-03-08 | 2013-08-13 | Rackspace Us, Inc. | Synchronization of structured information repositories |
JP2013045378A (ja) * | 2011-08-26 | 2013-03-04 | Fujitsu Ltd | ストレージ制御方法、情報処理装置およびプログラム |
CN104754001A (zh) * | 2013-12-30 | 2015-07-01 | 方正宽带网络服务股份有限公司 | 云存储系统和数据存储方法 |
US20160342342A1 (en) * | 2014-02-05 | 2016-11-24 | Nec Corporation | Information processing device, information processing system, and data access method |
CN103929500A (zh) * | 2014-05-06 | 2014-07-16 | 刘跃 | 一种分布式存储系统的数据分片方法 |
KR101960339B1 (ko) * | 2014-10-21 | 2019-03-20 | 삼성에스디에스 주식회사 | 파일 동기화 방법 |
CN104408048B (zh) * | 2014-10-27 | 2017-06-13 | 清华大学 | 一种缓冲式云存储数据同步的方法和装置 |
US20170208052A1 (en) * | 2016-01-19 | 2017-07-20 | Hope Bay Technologies, Inc | Hybrid cloud file system and cloud based storage system having such file system therein |
-
2017
- 2017-03-28 CN CN201710195750.2A patent/CN107018185B/zh active Active
- 2017-05-31 US US15/610,441 patent/US10296254B2/en not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2996308A1 (en) * | 2011-03-08 | 2016-03-16 | Rackspace Us, Inc. | Massively scalable object storage system |
Also Published As
Publication number | Publication date |
---|---|
US10296254B2 (en) | 2019-05-21 |
CN107018185A (zh) | 2017-08-04 |
US20180285015A1 (en) | 2018-10-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107018185B (zh) | 云存储系统的同步方法和装置 | |
US9934242B2 (en) | Replication of data between mirrored data sites | |
JP7171757B2 (ja) | ブロックストレージシステムのための分散されたレプリカ | |
CN107885758B (zh) | 一种虚拟节点的数据迁移方法和虚拟节点 | |
US9904599B2 (en) | Method, device, and system for data reconstruction | |
US20150213100A1 (en) | Data synchronization method and system | |
US8839031B2 (en) | Data consistency between virtual machines | |
CN111182067B (zh) | 一种基于星际文件系统ipfs的数据写入方法及设备 | |
JP5952960B2 (ja) | 計算機システム、計算機システム管理方法及びプログラム | |
US8930751B2 (en) | Initializing replication in a virtual machine | |
KR20190049266A (ko) | 네트워크에서 메타데이터의 동기화를 제어하는 장치 및 그 방법 | |
US11074224B2 (en) | Partitioned data replication | |
CN106855834B (zh) | 一种数据备份方法、装置和系统 | |
US10097630B2 (en) | Transferring data between sites | |
CN106873902B (zh) | 一种文件存储系统、数据调度方法及数据节点 | |
Matri et al. | Towards efficient location and placement of dynamic replicas for geo-distributed data stores | |
US10521449B1 (en) | Cross-region replication architecture | |
KR20200057409A (ko) | 라이브 서비스를 위한 분산 파일 시스템 및 데이터 처리 방법 | |
CN115955488B (zh) | 基于副本冗余的分布式存储副本跨机房放置方法与装置 | |
US20150039847A1 (en) | Balancing data distribution in a fault-tolerant storage system | |
KR101748913B1 (ko) | 분산 저장 환경에서 게이트웨이를 선택하기 위한 클러스터 관리 방법 및 데이터 저장 시스템 | |
CN111522688B (zh) | 分布式系统的数据备份方法及装置 | |
CN112470112B (zh) | 块存储系统的分布式副本 | |
KR101748912B1 (ko) | 분산 저장 환경에서 데이터 저장 시스템 및 데이터 저장 시스템이 포함하는 클러스터의 업그레이드, 확장 및 축소를 위한 클러스터 관리 방법 | |
US11334455B2 (en) | Systems and methods for repairing a data store of a mirror node |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |