一种自动分布式系统重建方法与流程

文档序号:17261624发布日期:2019-03-30 09:42阅读:127来源:国知局
一种自动分布式系统重建方法与流程
本发明涉及一种自动分布式系统重建方法,属于计算机软件
技术领域

背景技术
:系统冗余在智能变电站自动化系统中起着重要作用。为了避免自动化系统故障或损坏引起不良影响,需要进行系统冗余重建设计。现有智能变电站自动化系统中要求服务不能中断,在最差的情况下,服务出现中断以后也要求能够自动重建或恢复。现有的系统重建方案,没有一种自动检测系统损坏的机制,需要人为的对系统进行监控,以便在系统损坏的时候,人为的到现场操作并重建系统,这无疑增加了人力成本,尤其在系统运行在偏远地区的时候,对于无人值守的智能变电站自动化系统来说,系统恢复周期将会更长,其造成的损失也更大;或对维护人员的要求较高,而通常维护人员或留守人员技术背景薄弱,无法进行复杂的操作以便对系统进行重建;或对系统较小的单机进行恢复,如在系统很大的情况下,在外部使用光盘或u盘以及单个硬盘来存储待恢复的系统将变的不现实。本发明基于分布式网络对系统进行备份和重建。完全基于软件实现,为系统重建或恢复提供了一种新的解决方案。该解决方案不依赖特殊的设备,对网络拓扑无要求,可满足变电站等领域对系统冗余重建的自动化和可靠性要求。easyrecoverytm(易恢复中国)是由数据厂商出品的一款数据文件恢复软件。支持恢复不同存储介质数据:硬盘、光盘、u盘/移动硬盘、数码相机、手机、raid文件恢复等,能恢复包括文档、表格、图片、音视频等各种文件。其主要工作在windows和mac下,其功能上是对存贮介质上为可格式化的数据进行恢复或找回,对操作系统的恢复将无能为力,因为它是运行在系统上的应用软件,在操作系统本身损坏的情况下将变得不可用。而且在也无法用于linux平台。mondorescue是一款工作在linux下的系统恢复的开源软件,由开源社区进行开发和维护,其主要是对操作系统的单机恢复,通过将操作系统备份到外部介质,由维护人员操作进行系统重建,其需要专业的技术人员进行操作,也无法检测系统是否损坏,同时mondorescue也无法从分布式网络进行系统重建。mondorescue流程简介如图1所示,其存在的问题包括:(1)需要进行两次bios配置,以选择引导介质,对于普通用户来说,在没有专业知识的情况下,操作bios是很难进行的。(2)其备份的文件存储在u盘上或者光盘上,由于u盘或者光盘容量有限,在文件系统本身很大的情况下,该方案将变得不可行。(3)需要人为的进行系统重建操作,对于普通用户来说,难度将变得更高。(4)交互式操作,无法进行自动重建。技术实现要素:针对现有技术中存在的技术问题,本发明的目的在于提供一种自动分布式系统重建方法。本发明的技术方案为:一种自动分布式系统重建方法,其步骤包括:1)在各设定主机的引导分区里增加一客户端adsrc;在各设定主机上设置一自动分布式系统重建工具adsrt,用于配置所在主机中文件系统重建所需的文件并将其以分布式的形式备份到分布式网络的各服务器adsrs上,然后在所在主机的引导分区里生成一存放分布式备份信息的adsrlist文件;2)当设定主机的文件系统需要重建时,该设定主机上的客户端adsrc根据该adsrlist文件从分布式网络的服务器adsrs上获取该设定主机的备份文件,并根据获取的文件重建一个或者多个能够提供正常应用程序运行环境的文件系统。进一步的,当设定主机的文件系统需要重建时,该设定主机重新启动操作系统,引导程序首先启动该设定主机上的客户端adsrc;该客户端adsrc根据adsrlist文件格式化文件系统并建立相应的分区,然后根据该adsrlist文件从分布式网络的服务器adsrs上获取该设定主机的备份文件,并根据获取的文件重建一个或者多个能够提供正常应用程序运行环境的文件系统。进一步的,所述adsrlist文件的文件头包括一分区个数字段;所述adsrlist文件包括若干条记录了分区信息的分区记录和若干条文件记录,每一所述分区记录中的信息包括:设备名称、文件系统类型、挂载点、起始块和结束块;每一所述文件记录中的信息包括:文件路径、文件访问权限、文件扩展属性、文件校验值、分布式服务器地址、文件类型和资源号。进一步的,自动分布式系统重建工具adsrt通过网络报文netpack1与各服务器adsrs进行通信,客户端adsrc通过网络报文netpack2与各服务器adsrs进行通信;其中,该网络报文netpack1的字段包括:命令字字段、资源id字段、文件碎片号字段、结束id字段、块数据长度字段和块数据字段;该网络报文netpack2的字段包括:命令字字段、资源文件个数字段和多个资源id。进一步的,客户端adsrc通过该网络报文netpack2向服务器adsrs请求文件,服务器adsrs通过该网络报文netpack1向客户端adsrc发送所请求的文件;客户端adsrc通过获取的文件重建文件系统的方法为:客户端adsrc配置多个线程用于并行处理收到的网络报文,每一线程根据收到的网络报文中的资源id在adsrlist文件中找到要存放的文件的文件路径;然后该线程根据网络报文中的文件碎片号找到该网络报文中的块数据在该文件的偏移;然后该线程根据该偏移将该块数据存储到该文件对应的位置。进一步的,所述步骤2)中,通过检查文件系统的超级块是否被损坏来判断设定主机的文件系统是否需要重建。进一步的,所述步骤2)中,通过计算文件系统中文件的md5值与adsrlit文件中存放的文件系统重建所需文件的md5值进行比较,来判断设定主机的文件系统是否需要重建。进一步的,该客户端被集成到设定主机的操作系统中,操作系统安装完成后该客户端自动安装到该设定主机的引导分区中。进一步的,文件系统重建成功后自动重启该设定主机,如果文件系统重建失败,则给adsrc中预定义的邮箱发送设定信息。一种自动分布式系统重建方法,其步骤包括:1)在各设定主机的引导分区里增加一客户端adsrc;在各设定主机上设置一自动分布式系统重建工具adsrt,用于配置所在主机中文件系统重建所需的文件并将其备份到所在主机的引导分区内;2)当设定主机的文件系统需要重建时,该设定主机上的客户端adsrc从该设定主机的引导分区内获取备份文件,重建一个或者多个能够提供正常应用程序运行环境的文件系统。与当前已有相关技术相比,本发明的积极效果为:(1)简单性本方案对维护人员技术背景要求简单,只要会重启计算机就能够完成自动分布式系统重建。(2)高可用通过和网络中的主机互为备份,以提高系统的高可用性。(3)无特殊网络设备需求本方案完全基于软件实现,只要求能够进行正常的网络传输,不要网络的拓扑结构和硬件等。(4)没有国外专利困扰自动分布式系统重建是申请人根据用户需求自主提出、论证、制定并已经初步开发完毕的适用于系统重建和恢复的一种新型的系统重建方法,因而不存在外国的专利干扰。(5)独立性自动分布式系统重建,只在正常的系统无法的运行时,才进行自动分布式系统重建,完全不影响正常业务(6)配置功能在开发设计时已经充分考虑到应用场景的差异性及用户的不同需求,允许用户对需要自动重建的文件进行选择,以完成特定场景的自动分布式系统重建。附图说明图1为mondorescue简要流程图;图2为自动分布式系统重建框图;图3为自动分布式系统重建流程图;图4为adsrt和adsrs通信流程示意图;图5为adsrc和adsrs通信流程示意图;图6为并行分块文件重建算法示意图。具体实施方式为了使本
技术领域
的人员更好地理解本发明实施例中的技术方案,并使本发明的目的、特征和优点能够更加明显易懂,下面结合附图对本发明中技术核心作进一步详细的说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。1、自动分布式系统重建方法整体介绍本发明以linux操作系统为平台,在已有的引导分区里增加了一个不依赖于文件系统运行的自动分布式系统重建客户端,该客户端被集成到系统中,系统安装完成后自动安装到引导分区中,同时可以作为单独的安装程序,安装到引导分区。功能是用于完成文件系统损坏时,自动从分布式网络上获取已备份的文件。并将这些文件重建成一个或者多个完整的文件系统,用于提供能够正常运行的系统环境。通过自动分布式系统重建为系统冗余备份提供一种全新的解决方案。本解决方案对系统的重建主要体现在以下三个方面:(1)分布式文件备份:通过纯软件的方式将主机文件以分布式的形式存储备份到分布式网络上。(2)分布式文件系统重建:通过自动分布式系统重建客户端从分布式网络上获取已经备份的文件,并根据这些文件重建一个或者多个能够提供正常应用程序运行环境的文件系统出来。(3)自动分布式系统重建客户端以最小的操作完成自动化分布式系统重建。本解决方案以四台主机进行自动分布式系统重建如图2所示。其中对涉及的相关术语解释:引导程序:一般主机上电后第一个运行的程序,该程序主要功能是引导os。os:操作系统,这里指的是linux内核镜像文件。init:操作系统运行的第一个程序,该程序用于完成初始化操作,比如图形界面的初始化等。adsrt:automateddistributesystemreconstructiontool,自动分布式系统重建工具,由本方案提出的,同时用于在正常的操作系统下运行,功能是和adsrs通信,以完成对需要重建的系统以分布式存储的方式将文件存储到指定的服务器。adsrc:automateddistributedsystemreconstructionclient,自动分布式系统重建客户端;该客户端从不同的自动分布式系统重建服务器(adsrs),下载需要的文件或信息,以便于重建系统。adsrs:automateddistributedsystemreconstructionserver,自动分布式系统重建服务器;该服务器接受adsrt和adsrc的命令接收或者发送需要重建的指定文件。客户端:指自动分布式系统重建客户程序(adsrc的简称)。服务器:服务器是adsrs的简称。工作流程如图3所示,工作流程主要分为以下几部分:需要重建的系统的分布式备份(以对主机a进行分布式备份为例):(1)在主机a的正常系统上运行的自动分布式系统重建工具(adsrt)配置该操作系统需要重建的文件。(2)主机上自动分布式系统重建工具(adsrt)和网络上运行着的adsrs进行通信,以返回当前在线的adsrs的状态,包括稳定性状态,磁盘容量状态等。其中adsrs主机,如主机b、主机c。(3)在主机a上的adsrt程序根据网络上的adsrs主机返回的信息,动态的选择用于分布式备份的adsrs服务器(如主机b、主机c、主机d)。(4)在主机a上运行的adsrt程序选择adsrs主机后,开始发起网络传输请求,将主机a上的文件以分布式存储的方式存储在网络上的adsrs服务器(如主机b、主机c)。(5)运行在主机a的adsrt程序完成对需要重建的文件进行分布式存储备份后,会在主机a的只读的可引导分区里生成了一个存放分布式备份信息的adsrlist文件。(adsrt具有修改只读可引导分区的权限)。(6)此时需要的重建的文件系统就已经以分布式存储的方式备份在网络上的adsrs服务器上(如主机b、主机c),后续自动分布式系统重建客户端将使用adsrlist文件来重建文件系统。对系统进行自动分布式重建(以对主机a的自动分布式系统重建为例):(1)此时主机a的文件系统已经被损坏,但只读的可引导分区并没有损坏(因为是只读的单独分区)。对于文件系统是否被损坏可以先通过检查文件系统的超级块是否被损坏来判断,也可通过计算文件系统中文件的md5值和adsrlit中存放的md5值进行比较,以判断文件系统中的文件是否相同。可以认为超级块被损坏则文件系统被损坏,也可认为文件不一致则文件系统被损坏。该判断条件是可配置的,也可以是其他判断条件,由具体应用场景决定。(2)引导程序从只读的引导分区加载os,此时操作系统启动后的第一个进程为自动分布式系统重建客户端(adsrc);(而并非系统正常引导时的init程序)。在主机a上预先对引导分区做出了配置,当需要重建时操作系统启动后的第一个进程为自动分布式系统重建客户端(adsrc),否则为init程序。(3)自动分布式系统重建客户端(adsrc)使用adsrlist文件格式化文件系统,建立相应的分区,为后续的文件系统重建做准备。(4)自动分布式系统重建客户端(adsrc)开始根据adsrlist文件,在分布式网络上向自动分布式系统重建服务器(adsrs)发起通信以及文件传输请求;(5)自动分布式重建客户端(adsrc)通过从自动分布式系统重建服务器(adsrs)获取的文件重建文件完成后,通过对整个文件系统的文件进行md5校验,以判断主机a上的文件系统是否重建成功。(6)如果重建成功则系统重建完成,并自动重启主机a,如果重建失败则发信息给预定义的邮箱告诉技术人员系统重建失败。预定义的邮箱内置在adsrc中。系统重建完成后引导程序的动作(以对主机a为例):(1)主机a上的系统重建完成后,重启进入引导程序,此时由引导程序(该引导程序增加了校验功能)通过只读分区上的adsrtlist对文件系统上的文件进行校验,以判断系统是否损坏,如果损坏则继续运行adsrc,来对文件系统进行重建,如果成功则正常引导系统,自此完成了一个完整的自动分布式系统重建循环。其中引导程序通过传递不同的引导参数来正常引导系统,或者调用adsr。第二种模式:自备份(以对主机a进行自备份为例):(1)在分布式备份的情况下,网络上存在着多个主机的情况,当分布式网络退化成单机网络时(即网络上只有主机a)或者在主机a上运行的自动分布式系统重建工具(adsrt)指定使用自备份模式时,则进入自备份和自重建状态。(2)在自备份模式,主机a的系统的备份文件都存放在自己只读可引导分区中,而不是存放在分布式网络上(如主机b,主机c)。对系统进行自重建(以对主机a进行自重建为例):(1)此时主机a的文件系统已经被损坏,但只读的可引导分区并没有损坏(因为是只读的单独分区,正常的系统或者用户并没有权限进行写操作)。(2)主机a从只读的可引导分区运行os,该操作系统启动后的第一个进程为自动分布式系统重建客户端程序(adsrc)。(3)自动分布式系统重建客户端程序(adsrc)直接从主机a的可引导分区读取备份文件进行文件系统重建。如果重建成功则系统重建完成,并自动重启主机a,如果重建失败则发信息给预定义的邮箱告诉技术人员系统重建失败。2.模块设计(1)自动分布式系统重建工具(adsrt)该解决方案引入了一个特定格式的文件结构用于存放分布式备份信息其结构如下:adsrlist文件的文件头部结构如下:数据域partioncount长度4字节含义分区个数文件前4个字节是记录文件系统的分区个数,后续接着是每条分区记录,该信息用于后边分布式重建系统时使用,如果有n个分区,那么n条分区记录;分区记录格式如下:数据域devicetypemountstartend长度16字节1字节32字节4字节4字节含义设备名称文件系统类型挂载点起始块结束块每一个分区条目记录了一个分区的信息,用于在分布式系统重建的时候重建分区;分区记录之后紧接着是文件记录,其结构如下:其含义如下:●文件路径:记录了需要系统重建的文件路径,以便在重建系统时恢复文件到对应的路径下;●文件访问权限:记录了该文件的访问权限,在重建系统时恢复文件时,同时也要恢复文件的访问权限;●文件扩展属性:记录了该文件的扩展属性,在重建系统时恢复文件时,同时也要恢复文件的扩展属性;●文件校验值:文件md5值,用于计算是否正确的恢复了该文件;●分布式服务器地址:记录了文件存放在那个分布式服务器;●type:类型,表明文件类型:这里可能的文件是:■压缩文件:这里的压缩文件指的是被自动分布式系统重建工具压缩后的文件(在文件很多的情况下,不可能单独的存放文件,因此需要进行压缩后存放);■直接文件:未经过自动分布式系统重建工具压缩的文件,被直接存放在分布式服务器上;■虚拟文件:虚拟文件指该文件是被压缩存放的,并不需要从分布式服务器上获取,只需要获取将压缩文解压后,校验给文件的md5值即可;●资源号:分布式服务器上文件以资源号的形式存储,后续自动分布式系统重建客户端使用该资源号来获取文件。以上是adsrlist文件的结构,该文件是由自动分布式系统重建工具和自动分布式系统重建服务器进行通信和文件传输后生成的文件。后续提供给自动分布式系统重建客户端程序使用。自动分布式系统重建工具(adsrt)和自动分布式系统重建服务器(adsrs)的通信协议(通信的网络报文netpack1)如下:数据域setresidpieceidtailidlengthblockdata长度4字节8字节8字节8字节8字节变长含义命令字资源id文件碎片号结束id块数据长度块数据该网络报文netpack1各个字段含义如下:●set:值固定为0x10,表示发送文件数据的自动分布式系统重建服务器。●resid:资源号(resid)和文件对应,resid就是在服务器中存放时使用的文件名。●pieceid:在发送文件的时候,将文件进行分隔发送,这样自动分布式系统重建服务器(adsrs)可以多线程多文件同步的接受数据和组装存储文件。●tailid:文件结束id,当文件碎片号和结束id相同的时候表示文件的结束,此时adsrs完成最后的文件组装。●length:块数据长度,表示blockdata的长度。●blockdata:文件的块数据。自动分布式系统重建工具(adsrt)和自动分布式系统重建服务器(adsrs)的通信流程如图4所示。(2)自动分布式系统重建客户端(adsrc)自动分布式系统重建客户端(adsrc)在向自动分布式系统重建服务器(adsrs)获取文件时通信协议(通信的网络报文netpack2)如下:数据域getcountresid1resid2resid3residn长度4字节8字节8字节8字节8字节....含义命令字资源文件个数资源id1资源id2资源id3netpack2中,如果有m个资源文件,那么对应有m个资源id。自动分布式系统重建客户端(adsrc)用该报文netpack2向自动分布式系统重建服务器(adsrs)发起请求,adsrs接受到该请求后,就根据自己所拥有的资源向adsrc发起传输请求(使用网络报文1)。此时adsrc将同时和多个adsrs进行传输,并通过接受网络报文1,对文件碎片一边进行组装一边进行系统重建。adsrc和adsrs的通信流程如图5所示。(3)自动分布式系统重建服务器(adsrs)自动分布式系统重建服务器(adsrs)从adsrt接收网络报文1,并通过接收到的网络报文完成多线程多文件的传输以及文件组装。同时自动分布式系统重建服务器(adsrs)也可以从adsrt接收网络报文2,然后向adsrc发起传输请求,以完成分布式网络数据的传输。并行分块文件重建算法如图6所示,其步骤包括:1.线程1处理一个网络报文,根据其resid找到要存放的文件。通过resid在adsrlist中找到文件的路径。2.线程1再根据pieceid找到该网络报文中的块数据在该文件的偏移。3.线程1根据该偏移将该网络报文中的该块数据存储到该文件对应的位置。4.线程1处理下一个网络报文。5.线程2同线程1同样的方式处理报文。6.线程3同线程1同样的方式处理报文。7.对于线程的多少没有要求,可以根据主机配置来决定线程的多少。并行分块文件重建算法有如下特点:1.多个网络报文到来时:线程可以根据每个报文的resid字段决定该报文中的数据是属于那个文件的。2.再根据报文中的pieceid知道该报文属于文件的第几个块。resid加上pieceid组成了唯一的定位器。同时定位了文件和文件偏移。3.这样多个线程处理的报文都是不相同的。因此多个线程可以同时写多个文件也可以同时处理多个报文。避免了竞争,极大的提高了网络和硬盘的吞吐量。以上所述实施例仅表达了本发明的实施方式,其描述较为具体,但并不能因此理解为对本发明专利范围的限制。应当指出,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明的保护范围应当以所附权利要求为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1