CN106250270B - 一种云计算平台下的数据备份方法 - Google Patents

一种云计算平台下的数据备份方法 Download PDF

Info

Publication number
CN106250270B
CN106250270B CN201610608671.5A CN201610608671A CN106250270B CN 106250270 B CN106250270 B CN 106250270B CN 201610608671 A CN201610608671 A CN 201610608671A CN 106250270 B CN106250270 B CN 106250270B
Authority
CN
China
Prior art keywords
file
data
client
backup
files
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
Application number
CN201610608671.5A
Other languages
English (en)
Other versions
CN106250270A (zh
Inventor
张敬华
程映忠
王松
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Olympic data Polytron Technologies Inc
Original Assignee
Guangdong Olympic Data Polytron Technologies Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangdong Olympic Data Polytron Technologies Inc filed Critical Guangdong Olympic Data Polytron Technologies Inc
Priority to CN201610608671.5A priority Critical patent/CN106250270B/zh
Publication of CN106250270A publication Critical patent/CN106250270A/zh
Application granted granted Critical
Publication of CN106250270B publication Critical patent/CN106250270B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore

Abstract

本发明提出了一种云计算平台下的数据备份方法,包括:1.基于客户端、备份服务器和Hadoop分布式文件系统集群构建云数据备份系统,所述系统的是基于Hadoop分布式文件系统的;2.当需要备份或恢复时客户端向备份服务器发出相应请求,所述客户端中保存着为本机提供服务的备份服务器的信息;3.接收到客户客户端的请求后,备份服务器进行文件的备份和恢复。本发明提出的所述方法提高了备份文件、更新文件的效率。

Description

一种云计算平台下的数据备份方法
技术领域
本发明涉及云计算领域,具体涉及一种云计算平台下的数据备份方法。
背景技术
随着计算机的普及与信息技术的进步,尤其是计算机网络的快速发展,信息日益成为国家和企业生存与和发展的重要基础,成为个人、企业、社会关注的焦点。如今的信息中心越来越复杂,不仅系统的规模每年翻番,系统的复杂性及面临的风险也在日益增加。但是,作为信息保护的一个重要手段)数据备份的重要性却经常被人们所忽视。只要发生了数据的传输、数据的存储以及数据的交换,就有可能产生数据的故障,这时如果没有采取适当的数据备份和数据恢复措施,就可能会导致数据的丢失。近几年,大量数据灾难的出现(如911事件、黑客服务器攻击、地震海啸等自然灾害),以及业务部门对业务连续运行的要求不断提高,甚至越来越多的系统要求。零数据丢失,这都使得数据备份问题更加迫切。目前,容灾备份系统在全球都很受到重视。
数据量的爆炸式增长对数据的快速可用性及可管理性等提出了严峻的挑战(如24x7的不停机服务、快速准确的数据恢复、容灾、低成本管理等),传统的数据备份方法已经越来越难以应对这些新的挑战。云备份,作为一种新兴的备份方式,以其按需存储、资源共享、绿色环保、低成本等众多优势而日益受到学术界和产业界的关注。目前云备份的研究和应用还处在起步阶段,如何研究和开发满足未来大规模数据增长需要的、实际可行的云备份系统是一个函待解决的问题。
云备份是通过集群应用、网格技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据备份和业务访问功能的服务。简单说它就是使用云存储的相关技术来为用户提供关键数据的异地备份和恢复的服务。用户可以通过互联网与云备份服务中心连接,进行关键数据的备份;当用户需要已备份的数据时,可利用该服务系统快速地进行数据恢复。
目前存在的云备份系统有我们熟悉的EMC的Mozy在线备份软件,亚马逊的云存储快速备份服务AWS,IBM和Verizon合作推出的面向企业级用户基于云的数据备份和恢复服务Managed Data Vault,微软的网络硬盘服务Windows Live SkyDrive,Google网络硬盘GDrive,中国电信携手EMC推出的“e云”备份服务等,同时也有越来越多的公司涉足云备份系统的设计与研发,但是由于知识产权的保护,这些公司并没有公开其系统后台的体系架构以及技术文档。云备份的研究和应用还处在起步阶段,如何研究和开发满足未来大规模数据增长需要的、实际可行的云备份系统是一个亟待解决的问题。
发明内容
至少部分的解决现有技术中存在的问题,本发明提出一种云计算平台下的数据备份方法,包括:
1.基于客户端、备份服务器和Hadoop分布式文件系统集群构建云数据备份系统,所述系统的是基于Hadoop分布式文件系统的;
2.当需要备份或恢复时客户端向备份服务器发出相应请求,所述客户端中保存着为本机提供服务的备份服务器的信息;
3.接收到客户客户端的请求后,备份服务器进行文件的备份和恢复。
优选的,客户端文件的备份过程具体为:
B1调用工具对备份数据打包;
B2调用压缩工具压缩打包文件;
B3向备份服务器提出备份请求;
B4判断备份请求是否通过;
B5如备份请求通过,将数据文件上传至备份服务器。
优选的,客户端文件的恢复过程具体为:
H1向备份服务器提出恢复请求;
H2判断恢复请求是否通过;
H3如恢复请求通过,下载数据文件;
H4调用工具解压缩打包文件;
H5调用工具解包备份文件。
优选的,备份服务器的备份操作具体包括:
备份服务器接收到客户客户端的备份请求后,首先对客户端进行识别认证,认证通过后接收客户端上传的备份文件,备份文件上传完毕后,备份服务器将备份文件加上时间戳编号后暂存,并将备份文件的信息记入备份文件信息表,然后将文件名作为参数调用云数据上传算法上传数据到Hadoop分布式文件系统集群。
优选的,云数据上传算法首先检测用户上传文件大小是否大于等于阈值th_size,如果大于等于则上传该文件到Hadoop分布式文件系统集群,上传成功后将文件备份数据信息表中对应的上传标志置为真,填写上传文件名,删除备份服务器上的文件;如果文件大小小于th_size,则读取备份文件信息表,得到所有未上传备份文件的信息,计算全部未上传文件的大小,如果大于等于th_size,则将所有未上传文件打包成一个文件,按照“文件名1-文件2…-文件名n”的方式对该文件命名后上传,上传成功后,将备份文件信息表中对应的上传标志位置为真,填写上传文件名后删除文件;如果全部为上传文件大小依然小于th_size,则暂时不将文件上传至Hadoop分布式文件系统集群。
优选的,备份服务器的恢复操作具体包括:
备份服务器接收到客户端的恢复请求后,首先对客户端进行识别认证,认证通过后,检查备份文件信息表,如果备份文件暂存在本地,则从备份服务器上发送文件给客户端;如果备份文件存于Hadoop分布式文件系统集群中,则从Hadoop分布式文件系统集群中下载文件后,再发送给客户端,如果备份文件是由多个文件打包而成,则还需要对文件解包,再发送给客户端。
本发明提出了一种新的基于云计算平台的备份文件、更新文件的方法,提高了备份文件、更新文件的效率。
附图说明
图1为本发明一种云计算平台下的数据备份方法的流程图;
具体实施方式
下面将结合本发明的附图,对本发明的技术方案进行清楚、完整地描述。这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
参见图1,本发明提出了一种云计算平台下的数据备份方法,包括:
1.构建基于Hadoop分布式文件系统的云数据备份系统,所述系统从物理上分为客户端、备份服务器和Hadoop分布式文件系统集群;
客户端是企业中众多需要数据备份/恢复服务的计算机节点,按照地域、系统类别等分成若干个群,当需要进行数据备份或者恢复时,他们向负责本群的备份服务器提出请求,得到许可后进行文件的备份和恢复操作。客户端用于实现数据备份恢复,包括文件打包、压缩策略,数据的备份和恢复。
备份服务器是客户端和Hadoop分布式文件系统集群间数据备份恢复的桥梁,由多个高性能、大存储量服务器构成,每个服务器负责一个客户端群。他们接受客户端的备份恢复请求,缓存客户端的备份数据,根据备份数据的不同情况,分别对他们进行合并、分割、压缩后上传到Hadoop分布式文件系统集群进行备份,同时保存客户端备份文件的映像表,当客户端提出恢复请求时,从Hadoop分布式文件系统集群中读取备份文件,按照文件映像表发送给客户端。
备份服务器包含以下几个具体功能模块:
(1)备份管理模块:系统的核心功能模块,主要负责文件的备份管理工作;
(2)恢复管理模块:负责备份文件的恢复工作;
(3)安全管理模块:该模块的功能包括控制文件的传输安全及存储安全,对客户端的认证与授权;
(4)目录管理模块:该模块负责是客户端管理和备份文件目录管理。文件备份信息表负责管理备份文件的目录,客户信息表负责管理备份服务器所负责的所有客户;
(5)用户接口模块:提供友好的用户操作界面,用于显示、配置备份操作信息,用户可以根据自己的需要选择备份方式;
(6)同步处理模块:该模块主要负责文件的同步处理,用于监视客户端文件的变化,进行客户端和Hadoop分布式文件系统集群端之间的同步工作,当监测到客户端文件改变时,将Hadoop分布式文件系统集群上的相应文件进行同步更新。
Hadoop分布式文件系统集群由安装了Hadoop分布式文件系统软件的计算机组成,在Hadoop分布式文件系统软件的架构下,通过配置向多个备份服务器提供上传、下载服务,实现系统的核心功能。
Hadoop分布式文件系统集群采用主/从结构,由一个名字节点Namenode和一定数量的数据节点Datanodes组成,Namenode作为为中心服务器负责管理文件系统的名字空间(namespace)以及客户对文件的访问;Namenode执行文件系统的打开、关闭、重命名文件或目录这些名字空间操作;也负责确定数据块到特定Datanode节点的映射,Namenode由企业云中具有较高性能的服务器配置而成,以实现高效的元数据管理,避免性能瓶颈,DataNode用于存储数据,由企业内部大量廉价计算机配置而成,并且可以根据备份数据的规模进行动态扩展。备份时文件被分成一个或多个数据块,这些块存储在一组Datanode上。Datanode负责对文件系统客户端的读写请求进行处理,并在Namenode的统一调度下进行数据块的创建、删除和复制等操作。
基于Hadoop分布式文件系统的云数据备份系统应用备份服务器作为客户端与备份集群的桥梁出于以下考虑:备份服务器可以屏蔽客户端对备份集群的直接访问,提高备份集群的安全性,同时在备份服务器和客户端之间通过防火墙、安全信道等技术手段实现数据安全,进而保证整个系统的安全;备份服务器可以暂存数据,并根据备份集群的负载状况,网络状况决定在合适的时间上传数据,从而保证备份集群的负载平衡;虽然在特殊情况下,备份服务器由于大量客户端的备份/恢复请求可能成为系统的瓶颈,但通过应用高性能的服务器作为备份服务器及客户端的合理调度可以最大可能地避免此种情况的发生;向Hadoop分布式文件系统集群上传、下载文件需要在计算机上安装Hadoop特定组件,这对数量众多、水平参差不齐的客户来说是不现实的,通过在备份服务器上收集用户需备份的数据,并在其上安装Hadoop组件实现备份、恢复功能,易于实现并充分发挥Hadoop分布式文件系统的功能。
2.客户端中保存着为本机提供服务的备份服务器的信息,当需要备份或恢复时向备份服务器发出相应请求;
客户端模块备份数据前,应用tar、winrar等工具将所有数据文件打包成一个备份文件,按照“客户Id-备份日期-bak”的规则命名;同时进行压缩以节省存储空间、减少备份恢复时间。
客户端文件的备份过程具体为:
B1调用工具对备份数据打包;
B2调用压缩工具压缩打包文件;
B3向备份服务器提出备份请求;
B4判断备份请求是否通过;
B5如备份请求通过,将数据文件上传至备份服务器。
客户端文件的恢复过程具体为:
H1向备份服务器提出恢复请求;
H2判断恢复请求是否通过;
H3如恢复请求通过,下载数据文件;
H4调用工具解压缩打包文件;
H5调用工具解包备份文件。
3.备份服务器接收到客户客户端的请求,进行文件的备份和恢复;
3.1备份服务器的备份操作具体包括:
备份服务器接收到客户客户端的备份请求后,首先对客户端进行识别认证,认证通过后接收客户端上传的备份文件,备份文件上传完毕后,备份服务器将备份文件加上时间戳编号后暂存,并将备份文件的信息记入备份文件信息表,然后将文件名作为参数调用云数据上传算法上传数据到Hadoop分布式文件系统集群。
云数据上传算法首先检测用户上传文件大小是否大于等于阈值th_size,如果大于等于则上传该文件到Hadoop分布式文件系统集群,上传成功后将文件备份数据信息表中对应的上传标志置为真,填写上传文件名,删除备份服务器上的文件;如果文件大小小于th_size,则读取备份文件信息表,得到所有未上传备份文件的信息,计算全部未上传文件的大小,如果大于等于th_size,则将所有未上传文件打包成一个文件,按照“文件名1-文件2…-文件名n”的方式对该文件命名后上传,上传成功后,将备份文件信息表中对应的上传标志位置为真,填写上传文件名后删除文件;如果全部为上传文件大小依然小于th_size,则暂时不将文件上传至Hadoop分布式文件系统集群。
3.2备份服务器的恢复操作具体包括:
备份服务器接收到客户端的恢复请求后,首先对客户端进行识别认证,认证通过后,检查备份文件信息表,如果备份文件暂存在本地,则从备份服务器上发送文件给客户端;如果备份文件存于Hadoop分布式文件系统集群中,则从Hadoop分布式文件系统集群中下载文件后,再发送给客户端,如果备份文件是由多个文件打包而成,则还需要对文件解包,再发送给客户端。
备份服务器在进行下载和上传数据时遵从以下规则:
备份服务器需要下载数据时,立即进行;而当需要上传数据时,如果没有其他备份服务器上传数据,立即上传,否则称之为产生冲突,等待一段时间再进行检测以决定是否上传,等待时间的长短由退避算法决定,退避算法具体包括:
1)当第一次检测发生冲突时,设置参数L=2;
2)退避间隔取1到L个时间片中的一个随机数;
3)重复检测发生冲突时,将参数L加倍,L的最大值为256,当L增加到256时,
L不再增加;
4)一旦检测次数超过8,则立即无条件上传数据。
通过应用退避算法,当备份服务器检测冲突较多时,产生较长等待时间的概率越大,从而保证在系统重负载时,尽可能少的对系统进行测试计算;同时当备份服务器退避次数超过8次时立即上传以保证公平性。
大文件的同步问题是云同步的难点。大文件同步不仅仅在云端要占据大量的存储空间,大文件的上传下载有很多难题需要解决,基于网络传输的不稳定性,文件安全性,文件校验,文件加密压缩等问题。目前国内外大多数的云同步应用只支持100MB以下的文件同步。大文件的同步主要面临以下几个问题:1.网络传输的不稳定性;2.文件传输的安全性;3.网络带宽的限制;4.大文件更新的效率问题。
为此,本发明采用文件分割的技术,将文件分割成多个独立的文件块,提高文件同步处理的效率。文件经过分割之后,文件块的大小在一个可控的范围内,无论原始文件本身多大,分割后的文件块都在云存储系统可接受的范围内。这样Hadoop分布式文件系统集群的文件存储系统就能够快速的处理云同步的文件存储问题,对相应的文件块进行管理避免Hadoop分布式文件系统集群出现大的文件块,造成Hadoop分布式文件系统集群存储系统的性能问题以及Hadoop分布式文件系统集群存储空间的浪费。
文件上传恢复的时候,采用文件分割的方式来管理文件。文件上传之前将文件分割成小文件块,再将文件块进行上传;文件恢复的时候是先下载文件的文件块,所有文件块下载完成之后将文件块合并成原来的文件。
文件的上传包含以下几个步骤:
1.文件分割:将原始的用户文件分割成几个小的文件块,文件分割是将大文件的存储文件变为了多个小文件的存储问题,可以直接避免大文件存储需要应对的多个技术难题;
2.文件块加密:文件块加密采用公钥加密的技术,文件块的公钥跟私钥都需用从Hadoop分布式文件系统集群获取。文件块加密是为了保证文件数据的包密性,对于任何云同步的应用,数据的保密性都是用户的必备需求,用户不会将数据存放在可能泄露的应用中;
3.文件块压缩:对加密后的文件块进行压缩;
4.文件块校验:文件块经过加密加压之后,通过hash算法算出文件块的hash值,文件的上传恢复都需要通过hash值校验,以确定文件块在传输过程中没有出现错误;同时,如果发现hash值已经存在,也就是已经有相同的文件块存放在服务器,那么文件块就不需要重复上传了。使用文件校验不仅仅可以保证数据的完整性,避免上传一样的文件内容可以节省服务器的存储空间,同时减少数据流量,提高文件同步的效率。
5.文件块上传:文件块通过Hadoop分布式文件系统集群提供的远程接口进行同步,将文件块上传到Hadoop分布式文件系统集群,文件块上传结束之后,Hadoop分布式文件系统集群需要通过hash值来确定文件块无错误。
文件的恢复包含以下几个步骤:
1.获取文件块列表:通过文件ID获取文件对应的文件块列表,根据文件块的ID获取详细的文件块信息,下载文件块来间接完成文件下载功能;
2.文件块下载:使用文件块的ID,到指定的位置查找文件块,将列表中的文件块下载到本地;
3.文件块校验:文件块下载完成之后,通过文件块大小以及hash值来校验文件块是否成功下载;如果文件块校验失败,则此文件块无效,需要重新下载或者采用人工策略进行处理;
4.文件块解压:采用文件块压缩时相对应的文件块解压缩算法,对文件块解压缩;
5.文件块解密:从Hadoop分布式文件系统集群获取文件块解密的私钥,采用文件块加密对应的解密算法对文件块进行解密;
6.文件块合并:文件块完成下载、校验、解压、解密之后,将分离的文件块重新合并,恢复用户的原始文件。
当监测到客户端的文件发生改变时,本发明使用以下方式同步更新Hadoop分布式文件系统集群上相应的文件:
1.当监测到客户端的文件CFold变更为文件CFnew时,将发生改变的文件ID发送给Hadoop分布式文件系统集群;
2.根据客户端发来的文件ID,Hadoop分布式文件系统集群将CFold对应的SFold划分为大小为B的块,SFold[(i-1)B,iB-1],表示文件从偏移地址(i-1)B到iB-1的内容,其中,i的取值为[1,2,3,……,N],N是文件SFold划分的块数;然后计算每个块Bi的的两个哈希值:qi=hq(Bi)和ri=hm(Bi),其中,hq(Bi)表示对块Bi进行alder-32校验计算,hm(Bi)表示对块Bi进行MD5校验计算,然后将两个校验值发送给客户端;
3.客户端接收Hadoop分布式文件系统集群发来的每个块的两个哈希值(qi,ri),建立哈希表;
4.客户端遍历文件CFnew,从偏移地址j=0开始,重复执行以下步骤4.1-4.4
4.1计算hq(CFnew[j,j+B-1]);
4.2从哈希表中查找是否具有匹配的哈希值;
4.3如果找到匹配哈希值,计算hm(CFnew[j,j+B-1]),如果hm也匹配,则发送该块的偏移地址j和该块的大小信息给分布式文件系统集群,并对j进行加B操作;
4.4如果没有找到匹配哈希值,或者hm不匹配,则传输CFnew[j]给Hadoop分布式文件系统集群,CFnew[j]表示文件CFnew在偏移地址j处的内容,j=j+1;
5.Hadoop分布式文件系统集群根据客户端传送的内容和SFold构建出与CFnew对应的文件SFnew
上述同步更新方式计算量小、速度快。对于文件修改量很小的情况,还可以对上述算法进行进一步的改进。当CFnew的第i块与SFold的第j块匹配时,极有可能CFnew的第i+1块与SFold的第j+1块匹配,而上述算法每次找到一个匹配的块时要传输的数据次数过多,对带宽的利用性不高。
当监测到客户端的文件发生改变时,本发明还可以使用以下方式同步更新Hadoop分布式文件系统集群上相应的文件:
1.当监测到客户端的文件CFold变更为文件CFnew时,将发生改变的文件ID发送给Hadoop分布式文件系统集群;
2.根据客户端发来的文件ID,Hadoop分布式文件系统集群将CFold对应的SFold划分为大小为B的块,SFold[(i-1)B,iB-1],表示文件从偏移地址(i-1)B到iB-1的内容,其中,i的取值为[1,2,3,……,N],N是文件SFold划分的块数;然后计算每个块Bi的的两个哈希值:qi=hq(Bi)和ri=hm(Bi),其中,hq(Bi)表示对块Bi进行alder-32校验计算,hm(Bi)表示对块Bi进行MD5校验计算,然后将两个校验值发送给客户端;
3.客户端接收Hadoop分布式文件系统集群发来的每个块的两个哈希值(qi,ri),建立哈希表;
4.客户端遍历文件CFnew,从偏移地址j=0开始,重复执行以下步骤4.1-4.4
4.1计算hq(CFnew[j,j+B-1]);
4.2从哈希表中查找是否具有匹配的哈希值;
4.3如果找到匹配哈希值,计算hm(CFnew[j,j+B-1]),如果hm也匹配,则将该块的偏移地址j和该块的大小信息存储到列表MatchList中,并对j进行加B操作;
4.4如果没有找到匹配哈希值,或者hm不匹配,则将CFnew[j]存储到列表MatchList中,CFnew[j]表示文件CFnew在偏移地址j处的内容,判断列表MatchList中所存储的CFnew[j]总容量是否达到Hadoop分布式文件系统集群中的最小存储单元CK,如果是,则将列表MatchList中存储的内容发送给Hadoop分布式文件系统集群并继续以下操作,否则直接继续以下操作,j=j+1;
5.Hadoop分布式文件系统集群根据客户端传送的内容和SFold构建出与CFnew对应的文件SFnew
本发明中,客户端读取文件的具体实现过程包括:
1.客户端通过调用分布式文件系统的一个实例FileStream对象的open()方法来打开希望读取的文件;
2.分布式文件系统通过RPC远程调用名称节点以获得文件开头部分的数据块的位置,对于每个块,名称节点返回该块所在的数据节点的地址,并且这些数据节点会根据其距离客户端的远近进行排序,如果客户端本身也是数据节点,则直接读取本地数据,分布式文件系统返回一个支持文件定位的输入流的FSDataInputStream对象给客户端,让客户端从FSDataInputStream中读取数据;
3.客户端调用FSDataInputStream的read()方法;
4.存储文件开头部分块的数据节点地址的DFSInputStream随即与这些块最近的数据节点相连接,通过在数据流中重复调用read(),读取数据从数据节点返回客户端;
5.当第一个块读完,DFSInputStream关掉与这个数据节点的连接,然后开始第二个块的操作;
6.客户端从流中读取数据时,块是按照DFSInputStream打开与数据节点的新连接的顺序读取的,DFSInputStream也会调用名称节点来检索下一组需要的块的数据节点的位置,客户端完成数据读取后,调用FSDataInputStream的close()方法关闭数据流。
在文件读取过程中,如果客户端从一个数据节点上读取出错,则选择下一个离它最近的数据节点。同时记住这个失败的数据节点,在读取后面的块的时候不再选择这个数据节点。
这个设计的一个重要方面是:客户端直接联系数据节点接收数据,并且客户端通过名字节点直接导向包含所需数据的最佳数据节点。这样的设计可以使Hadoop分布式文件系统扩展而适应大量的客户端,因为数据传输线路是通过集群中的所有数据节点的;名称节点只需要提供相应块的位置查询服务即可,并且名称节点是将块的位置信息存放在内存中的,这样效率就非常高,名称节点不需要提供数据传输服务,否则数据服务将随着客户端的增加将很快成为瓶颈。
本发明中,客户端写入文件的具体实现过程包括:
1.客户端通过调用分布式文件系统的create()方法来创建文件;
2.分布式文件系统通过RPC远程调用名称节点,在文件系统的名字空间里创建一个新文件,此时这个文件还没有任何块与之相联系;名称节点执行检查以确保这个文件不会已经存在,并且客户端拥有创建此文件的权限;如果上述检查通过,名称节点会生成一个新文件的记录;否则文件创建失败并向客户端抛出一个异常;分布式文件系统返回一个FSDataOutputStream,让客户端开始写入数据,FSDataOutputStream控制一个DFSOutputStream,DFSOutputStream负责处理数据节点和名称节点之间的通信;
3.当客户端写入数据时,DFSDataOutputStream把要写入的数据分成很多包,并将它们写入内部的数据队列,数据队列中的数据由数据流来读取,数据流让名称节点找出一个合适的数据节点列表,并要求这些数据节点分配一些新的块以存储作为副本而复制的数据,这个数据节点列表组成了一个管线;
4.FSDataInputStream将包分流给管线中第一个的数据节点,这个节点会对包进行存储并且发送给管线中的第二个数据节点,第二个数据节点存储包并且传给管线中第三个数据节点,直至将包传给管线中的最后一个数据节点;
5.DFSOutputStream有一个内部的包队列来等待数据节点收到确认,称为确认队列,只有当管线中所有的数据节点都返回写入成功,这个包才算写成功,发送确认给DFSOutputStream,包被移出确认队列,然后开始下一个包的写入;
如果在有数据写入期间,数据节点发生故障,则会执行下面的操作:首先管线被关闭,确认队列中的任何包都会被添加回数据队列的前面,以确保数据节点从失败的节点处是顺流的,不会漏掉任意一个包,当前的块在正常工作的数据节点中被给予一个新的身份并联系名称节点,以便能在故障数据节点后期恢复时其中的部分数据块会被删除;故障数据节点会从管线中删除并且余下块的数据会被写入管线中的两个好的数据节点;名称节点注意到块副本不足时,会在另一个节点上安排创建一个副本;随后,后续的块会继续正常处理;
6.客户端完成数据的写入后,就会在FSDataInputStream中调用close();
7.在块完成复制到最少的份数之后,名字节点将成功返回。
本发明提出了一种新的基于云计算平台的备份文件、更新文件的方法,提高了备份文件、更新文件的效率。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

Claims (3)

1.一种云计算平台下的数据备份方法,包括:
1.基于客户端、备份服务器和Hadoop分布式文件系统集群构建云数据备份系统,所述系统的是基于Hadoop分布式文件系统的;
2.当需要备份或恢复时客户端向备份服务器发出相应请求,所述客户端中保存着为本机提供服务的备份服务器的信息;
3.接收到客户客户端的请求后,备份服务器进行文件的备份和恢复;
3.1备份服务器的备份操作具体包括:
备份服务器接收到客户客户端的备份请求后,首先对客户端进行识别认证,认证通过后接收客户端上传的备份文件,备份文件上传完毕后,备份服务器将备份文件加上时间戳编号后暂存,并将备份文件的信息记入备份文件信息表,然后将文件名作为参数调用云数据上传算法上传数据到Hadoop分布式文件系统集群;
云数据上传算法首先检测用户上传文件大小是否大于等于阈值th_size,如果大于等于则上传该文件到Hadoop分布式文件系统集群,上传成功后将文件备份数据信息表中对应的上传标志置为真,填写上传文件名,删除备份服务器上的文件;如果文件大小小于th_size,则读取备份文件信息表,得到所有未上传备份文件的信息,计算全部未上传文件的大小,如果大于等于th_size,则将所有未上传文件打包成一个文件,按照“文件名1-文件2…-文件名n”的方式对该文件命名后上传,上传成功后,将备份文件信息表中对应的上传标志位置为真,填写上传文件名后删除文件;如果全部为上传文件大小依然小于th_size,则暂时不将文件上传至Hadoop分布式文件系统集群;
3.2备份服务器的恢复操作具体包括:
备份服务器接收到客户端的恢复请求后,首先对客户端进行识别认证,认证通过后,检查备份文件信息表,如果备份文件暂存在本地,则从备份服务器上发送文件给客户端;如果备份文件存于Hadoop分布式文件系统集群中,则从Hadoop分布式文件系统集群中下载文件后,再发送给客户端,如果备份文件是由多个文件打包而成,则还需要对文件解包,再发送给客户端;
备份服务器在进行下载和上传数据时遵从以下规则:
备份服务器需要下载数据时,立即进行;而当需要上传数据时,如果没有其他备份服务器上传数据,立即上传,否则称之为产生冲突,等待一段时间再进行检测以决定是否上传,等待时间的长短由退避算法决定,退避算法具体包括:
1)当第一次检测发生冲突时,设置参数L=2;
2)退避间隔取1到L个时间片中的一个随机数;
3)重复检测发生冲突时,将参数L加倍,L的最大值为256,当L增加到256时,
L不再增加;
4)一旦检测次数超过8,则立即无条件上传数据;
文件的上传包含以下几个步骤:
1.文件分割:将原始的用户文件分割成几个小的文件块,文件分割是将大文件的存储文件变为了多个小文件的存储问题,可以直接避免大文件存储需要应对的多个技术难题;
2.文件块加密:文件块加密采用公钥加密的技术,文件块的公钥跟私钥都需用从Hadoop分布式文件系统集群获取;文件块加密是为了保证文件数据的包密性,对于任何云同步的应用,数据的保密性都是用户的必备需求,用户不会将数据存放在可能泄露的应用中;
3.文件块压缩:对加密后的文件块进行压缩;
4.文件块校验:文件块经过加密加压之后,通过hash算法算出文件块的hash值,文件的上传恢复都需要通过hash值校验,以确定文件块在传输过程中没有出现错误;同时,如果发现hash值已经存在,也就是已经有相同的文件块存放在服务器,那么文件块就不需要重复上传了;使用文件校验不仅仅可以保证数据的完整性,避免上传一样的文件内容可以节省服务器的存储空间,同时减少数据流量,提高文件同步的效率;
5.文件块上传:文件块通过Hadoop分布式文件系统集群提供的远程接口进行同步,将文件块上传到Hadoop分布式文件系统集群,文件块上传结束之后,Hadoop分布式文件系统集群需要通过hash值来确定文件块无错误;
文件的恢复包含以下几个步骤:
1.获取文件块列表:通过文件ID获取文件对应的文件块列表,根据文件块的ID获取详细的文件块信息,下载文件块来间接完成文件下载功能;
2.文件块下载:使用文件块的ID,到指定的位置查找文件块,将列表中的文件块下载到本地;
3.文件块校验:文件块下载完成之后,通过文件块大小以及hash值来校验文件块是否成功下载;如果文件块校验失败,则此文件块无效,需要重新下载或者采用人工策略进行处理;
4.文件块解压:采用文件块压缩时相对应的文件块解压缩算法,对文件块解压缩;
5.文件块解密:从Hadoop分布式文件系统集群获取文件块解密的私钥,采用文件块加密对应的解密算法对文件块进行解密;
6.文件块合并:文件块完成下载、校验、解压、解密之后,将分离的文件块重新合并,恢复用户的原始文件;
当监测到客户端的文件发生改变时,使用以下方式同步更新Hadoop分布式文件系统集群上相应的文件:
1.当监测到客户端的文件CFold变更为文件CFnew时,将发生改变的文件ID发送给Hadoop分布式文件系统集群;
2.根据客户端发来的文件ID,Hadoop分布式文件系统集群将CFold对应的SFold划分为大小为B的块,SFold[(i-1)B,iB-1],表示文件从偏移地址(i-1)B到iB-1的内容,其中,i的取值为[1,2,3,……,N],N是文件SFold划分的块数;然后计算每个块Bi的的两个哈希值:qi=hq(Bi)和ri=hm(Bi),其中,hq(Bi)表示对块Bi进行alder-32校验计算,hm(Bi)表示对块Bi进行MD5校验计算,然后将两个校验值发送给客户端;
3.客户端接收Hadoop分布式文件系统集群发来的每个块的两个哈希值(qi,ri),建立哈希表;
4.客户端遍历文件CFnew,从偏移地址j=0开始,重复执行以下步骤4.1-4.4
4.1计算hq(CFnew[j,j+B-1]);
4.2从哈希表中查找是否具有匹配的哈希值;
4.3如果找到匹配哈希值,计算hm(CFnew[j,j+B-1]),如果hm也匹配,则发送该块的偏移地址j和该块的大小信息给分布式文件系统集群,并对j进行加B操作;
4.4如果没有找到匹配哈希值,或者hm不匹配,则传输CFnew[j]给Hadoop分布式文件系统集群,CFnew[j]表示文件CFnew在偏移地址j处的内容,j=j+1;
5.Hadoop分布式文件系统集群根据客户端传送的内容和SFold构建出与CFnew对应的文件SFnew
客户端读取文件的具体实现过程包括:
1.客户端通过调用分布式文件系统的一个实例FileStream对象的open()方法来打开希望读取的文件;
2.分布式文件系统通过RPC远程调用名称节点以获得文件开头部分的数据块的位置,对于每个块,名称节点返回该块所在的数据节点的地址,并且这些数据节点会根据其距离客户端的远近进行排序,如果客户端本身也是数据节点,则直接读取本地数据,分布式文件系统返回一个支持文件定位的输入流的FSDataInputStream对象给客户端,让客户端从FSDataInputStream中读取数据;
3.客户端调用FSDataInputStream的read()方法;
4.存储文件开头部分块的数据节点地址的DFSInputStream随即与这些块最近的数据节点相连接,通过在数据流中重复调用read(),读取数据从数据节点返回客户端;
5.当第一个块读完,DFSInputStream关掉与这个数据节点的连接,然后开始第二个块的操作;
6.客户端从流中读取数据时,块是按照DFSInputStream打开与数据节点的新连接的顺序读取的,DFSInputStream也会调用名称节点来检索下一组需要的块的数据节点的位置,客户端完成数据读取后,调用FSDataInputStream的close()方法关闭数据流;
在文件读取过程中,如果客户端从一个数据节点上读取出错,则选择下一个离它最近的数据节点;同时记住这个失败的数据节点,在读取后面的块的时候不再选择这个数据节点;
客户端写入文件的具体实现过程包括:
1.客户端通过调用分布式文件系统的create()方法来创建文件;
2.分布式文件系统通过RPC远程调用名称节点,在文件系统的名字空间里创建一个新文件,此时这个文件还没有任何块与之相联系;名称节点执行检查以确保这个文件不会已经存在,并且客户端拥有创建此文件的权限;如果上述检查通过,名称节点会生成一个新文件的记录;否则文件创建失败并向客户端抛出一个异常;分布式文件系统返回一个FSDataOutputStream,让客户端开始写入数据,FSDataOutputStream控制一个DFSOutputStream,DFSOutputStream负责处理数据节点和名称节点之间的通信;
3.当客户端写入数据时,DFSDataOutputStream把要写入的数据分成很多包,并将它们写入内部的数据队列,数据队列中的数据由数据流来读取,数据流让名称节点找出一个合适的数据节点列表,并要求这些数据节点分配一些新的块以存储作为副本而复制的数据,这个数据节点列表组成了一个管线;
4.FSDataInputStream将包分流给管线中第一个的数据节点,这个节点会对包进行存储并且发送给管线中的第二个数据节点,第二个数据节点存储包并且传给管线中第三个数据节点,直至将包传给管线中的最后一个数据节点;
5.DFSOutputStream有一个内部的包队列来等待数据节点收到确认,称为确认队列,只有当管线中所有的数据节点都返回写入成功,这个包才算写成功,发送确认给DFSOutputStream,包被移出确认队列,然后开始下一个包的写入;
如果在有数据写入期间,数据节点发生故障,则会执行下面的操作:首先管线被关闭,确认队列中的任何包都会被添加回数据队列的前面,以确保数据节点从失败的节点处是顺流的,不会漏掉任意一个包,当前的块在正常工作的数据节点中被给予一个新的身份并联系名称节点,以便能在故障数据节点后期恢复时其中的部分数据块会被删除;故障数据节点会从管线中删除并且余下块的数据会被写入管线中的两个好的数据节点;名称节点注意到块副本不足时,会在另一个节点上安排创建一个副本;随后,后续的块会继续正常处理;
6.客户端完成数据的写入后,就会在FSDataInputStream中调用close();
7.在块完成复制到最少的份数之后,名字节点将成功返回。
2.如权利要求1所述的云计算平台下的数据备份方法,其中,客户端文件的备份过程具体为:
B1调用工具对备份数据打包;
B2调用压缩工具压缩打包文件;
B3向备份服务器提出备份请求;
B4判断备份请求是否通过;
B5如备份请求通过,将数据文件上传至备份服务器。
3.如权利要求1所述的云计算平台下的数据备份方法,其中,客户端文件的恢复过程具体为:
H1向备份服务器提出恢复请求;
H2判断恢复请求是否通过;
H3如恢复请求通过,下载数据文件;
H4调用工具解压缩打包文件;
H5调用工具解包备份文件。
CN201610608671.5A 2016-07-28 2016-07-28 一种云计算平台下的数据备份方法 Active CN106250270B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610608671.5A CN106250270B (zh) 2016-07-28 2016-07-28 一种云计算平台下的数据备份方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610608671.5A CN106250270B (zh) 2016-07-28 2016-07-28 一种云计算平台下的数据备份方法

Publications (2)

Publication Number Publication Date
CN106250270A CN106250270A (zh) 2016-12-21
CN106250270B true CN106250270B (zh) 2019-05-21

Family

ID=57604593

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610608671.5A Active CN106250270B (zh) 2016-07-28 2016-07-28 一种云计算平台下的数据备份方法

Country Status (1)

Country Link
CN (1) CN106250270B (zh)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106850609A (zh) * 2017-01-24 2017-06-13 北京奇虎科技有限公司 一种文件的校验方法和装置
CN109428899A (zh) * 2017-08-21 2019-03-05 中国石油化工股份有限公司 文件安全传输管理方法及系统
CN107508813A (zh) * 2017-08-29 2017-12-22 南京中蓝数智信息技术有限公司 分布式数据加解密方法
CN107526657A (zh) * 2017-09-13 2017-12-29 沈阳东知科技有限公司 一种数据库联机备份方法及系统
CN109561120B (zh) * 2017-09-26 2022-03-01 杭州海康威视系统技术有限公司 小文件备份方法、系统和管理服务器
CN107861843A (zh) * 2017-11-30 2018-03-30 紫光股份有限公司 一种基于局域网计算机的文件备份系统
CN110309226A (zh) * 2018-03-16 2019-10-08 厦门靠谱云股份有限公司 一种云数据库统一备份与恢复系统
CN108647290A (zh) * 2018-05-06 2018-10-12 深圳市保千里电子有限公司 基于HBase的互联网手机云相册备份查询方法及系统
CN108984345B (zh) * 2018-07-11 2020-06-23 吉林吉大通信设计院股份有限公司 一种基于虚拟共享目录的大数据备份方法
CN109032847B (zh) * 2018-08-24 2020-08-18 南京壹进制信息科技有限公司 一种通用免缓存备份和恢复方法
CN111049779B (zh) * 2018-10-12 2022-04-26 伊姆西Ip控股有限责任公司 信息处理方法、电子设备以及计算机可读介质
CN111767166A (zh) * 2019-04-01 2020-10-13 广州精选速购网络科技有限公司 数据备份的方法和装置
CN110247986A (zh) * 2019-06-28 2019-09-17 北京奇艺世纪科技有限公司 一种文件传输方法、装置及电子设备
CN111339037B (zh) * 2020-02-14 2023-06-09 西安奥卡云数据科技有限公司 一种高效的并行分布式文件系统并行复制方法
CN111382137A (zh) * 2020-03-16 2020-07-07 上海英方软件股份有限公司 一种Hadoop集群文件备份系统及方法
CN111581160A (zh) * 2020-04-29 2020-08-25 上海中通吉网络技术有限公司 一种基于分布式文件管理系统的数据备份还原方法和系统
CN111858494A (zh) * 2020-07-23 2020-10-30 珠海豹趣科技有限公司 文件获取方法、装置、存储介质及电子设备
CN112269688A (zh) * 2020-10-29 2021-01-26 四川虹美智能科技有限公司 异地灾备系统及方法
CN112769801B (zh) * 2020-12-31 2023-05-02 深圳软牛科技有限公司 从云服务器提取备份的方法、装置、设备及存储介质
CN112947266B (zh) * 2021-04-30 2021-09-28 江苏航运职业技术学院 船舶动力装置远程监控通讯方法及系统
CN114138554B (zh) * 2021-11-22 2022-08-09 深圳互信互通科技有限公司 无线ap配置信息备份及系统恢复控制系统
US20230342334A1 (en) * 2022-04-22 2023-10-26 Dell Products L.P. Method to support temporary namespace in a deduplication filesystem

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1852534A (zh) * 2005-08-10 2006-10-25 华为技术有限公司 一种数据备份和恢复方法及其系统
CN103023996A (zh) * 2012-11-30 2013-04-03 江苏乐买到网络科技有限公司 一种云数据存储系统
CN105095300A (zh) * 2014-05-16 2015-11-25 阿里巴巴集团控股有限公司 一种数据库备份方法及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4786222B2 (ja) * 2005-05-11 2011-10-05 株式会社エヌ・ティ・ティ・ドコモ ディジタル権利管理システム、コンテンツサーバおよび携帯端末

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1852534A (zh) * 2005-08-10 2006-10-25 华为技术有限公司 一种数据备份和恢复方法及其系统
CN103023996A (zh) * 2012-11-30 2013-04-03 江苏乐买到网络科技有限公司 一种云数据存储系统
CN105095300A (zh) * 2014-05-16 2015-11-25 阿里巴巴集团控股有限公司 一种数据库备份方法及系统

Also Published As

Publication number Publication date
CN106250270A (zh) 2016-12-21

Similar Documents

Publication Publication Date Title
CN106250270B (zh) 一种云计算平台下的数据备份方法
CN106156359B (zh) 一种云计算平台下的数据同步更新方法
CN106294585B (zh) 一种云计算平台下的存储方法
CN107526626B (zh) 一种基于CRIU的Docker容器热迁移方法及系统
US9934242B2 (en) Replication of data between mirrored data sites
CN103095843B (zh) 一种基于版本矢量的数据备份方法及客户端
EP3258369B1 (en) Systems and methods for distributed storage
US8572136B2 (en) Method and system for synchronizing a virtual file system at a computing device with a storage device
JP5727020B2 (ja) クラウドコンピューティングシステム及びそのデータ同期化方法
US20200145374A1 (en) Scalable cloud hosted metadata service
EP3350723B1 (en) Hosted file sync with stateless sync nodes
CN103116615B (zh) 一种基于版本矢量的数据索引方法及服务器
CN103118104B (zh) 一种基于版本矢量的数据还原方法及服务器
CN105025053A (zh) 基于云存储技术的分布式文件的上传方法及其系统
WO2012126232A1 (zh) 一种数据备份恢复的方法、系统和服务节点
CN107734026A (zh) 一种网络附加存储集群的设计方法、装置及设备
CN104573064B (zh) 一种大数据环境下的数据处理方法
CN107819891A (zh) 数据处理方法、装置、计算机设备和存储介质
US9311314B2 (en) System and method for migrating data from a source file system to a destination file system with use of attribute manipulation
CN109144785A (zh) 用于备份数据的方法和装置
CN106657360A (zh) 一种Linux系统下NIS服务器的同步方法和系统
CN116560904A (zh) Nas数据备份容灾方法、系统、终端及存储介质
CN108566421A (zh) 一种基于网络附属存储器的网络式分布方法及系统
WO2011117921A1 (en) Method for concurrency control in a file versioning system
KR101748913B1 (ko) 분산 저장 환경에서 게이트웨이를 선택하기 위한 클러스터 관리 방법 및 데이터 저장 시스템

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20190424

Address after: 511458 Room 421, 80 Jingang Avenue, Nansha District, Guangzhou City, Guangdong Province

Applicant after: Guangdong Olympic data Polytron Technologies Inc

Address before: 610041 No. 4-4 Building 1, No. 9, Pioneer Road, Chengdu High-tech Zone, Sichuan Province

Applicant before: Sichuan Xinhuanjia Technology Development Co., Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant