一种基于LRC纠删码的可恢复云存储系统的制作方法

文档序号:12463821阅读:556来源:国知局
一种基于LRC纠删码的可恢复云存储系统的制作方法与工艺

本发明属于文件存储技术领域,具体涉及一种基于LRC纠删码的可恢复云存储系统。



背景技术:

云存储系统具有以下优点:无需本地存储、节省大量的存储空间、可以随时随地进行上传和下载、无需专门的管理人员、节省管理和经济成本等显著优点,且能提供可用性、可维护性和扩展性保障。

然而当前的云存储服务器面临着安全性的威胁:当个人或企业用户将数据上传到服务器时,如果发生不可预知的事情,如自然灾害、病毒入侵、服务器受到攻击或者工作人员管理疏忽问题时,数据的完整性和机密性都得到了威胁。因此,确保在文件部分破坏时能完整的恢复出来越来越得到重视。

纠删码技术是一类源于信道传输的编码技术,由于具有容忍多个数据帧丢失的特点被广泛应用在分布式存储领域中。在分布式存储系统中,纠删码将数据编码成数据块和校验块,当部分数据块损坏时,系统可以根据剩余的数据块和校验块恢复原来完整的文件,从而保证数据的完整性和可靠性。基于纠删码的容错技术因为它较高的资源利用率、较强的容错能力成为最常用的容错技术。

纠删码通过技术含量较高的算法,提供和副本近似的可靠性,同时减小了额外所需冗余设备的数量,从而提高了存储设备的利用率。但纠删码所带来的额外负担主要是计算量和数倍的网络负载,优缺点都相当明显。尤其是在出现硬盘故障后,重建数据非常耗CPU,而且计算一个数据块需要通过网络读出N倍的数据并传输,所以网络负载也有数倍甚至10数倍的增加。

当前大多数的云存储系统采用的是RS纠删码技术,但为了满足分布式存储的要求,即当单个存储磁盘发生故障时,只需要对该磁盘中的存储进行恢复,这样就能把影响范围缩小到一个磁盘当中,从而恢复的效率就会更高。

LRC编码的核心思想为:将校验块(parity block)分为全局校验块(global parity)、局部校验块(local reconstruction parity),故障恢复时分组计算。当发生任何一个数据块错误时,只需用本地组内的数据和校验块用于计算,即可恢复出原始数据。



技术实现要素:

针对上述现有技术存在的不足,本发明提供一种基于LRC纠删码的可恢复云存储系统。

本发明的技术方案如下:

一种基于LRC纠删码的可恢复云存储系统,包括:用户信息管理模块、文件管理模块和服务器端;

所述服务器端包括:数据库服务器、业务处理服务器和多个数据存储服务器;

所述用户信息管理模块,用于判断用户所需操作是注册操作还是登陆操作,如果为注册操作,获取用户输入的用户名、密码和确认密码,并发送给数据库服务器,如果为登陆操作,获取用户输入的用户名和密码,并发送给数据库服务器;接收数据库服务器发送的注册完成消息并提示用户注册完成;接收数据库服务器发送的登陆成功消息或用户名或密码错误消息,如果为登录成功消息,提示用户登陆成功,并向文件管理模块发送认证成功消息及用户名,如果为用户名或密码错误消息,提示用户登陆失败;

所述数据库服务器,用于接收用户信息管理模块发送的用户名、密码和确认密码,存储用户名、密码和确认密码,并向用户信息管理模块发送注册完成消息;接收用户信息管理模块发送的用户名和密码,判断用户名与密码是否匹配,是,向用户信息管理模块发送登陆成功消息,否则,向用户信息管理模块发送用户名或密码错误消息;

所述文件管理模块,用于接收用户信息管理模块发送的认证成功消息和用户名,并判断用户所需操作类型:

如果为上传操作,获取待上传文件,提取文件名、是否可以共享、共享码、文件大小和文件类型,基于RSA算法,生成公钥、私钥,将公钥公开,私钥私密传输给业务处理服务器;将待上传文件分为多个数据块,并生成一个验证码,利用LRC纠删码生成待上传文件的全局校验块,同时对数据块进行分组,利用LRC纠删码为每个组生成对应的局部校验块,对每一个数据块和校验块进行Hash处理,并将处理之后的数据块、文件名、全局校验块和局部校验块发送给数据存储服务器,将Hash处理和生成校验块参数信息存入元数据文件,将文件名、是否可以共享、共享码、文件大小、文件类型、验证码和元数据文件发送给业务处理服务器,将文件名存储到本地数据库;接收文件存储成功消息,并显示;

如果为下载操作,获取待下载文件的文件名和存储位置,将文件名和下载请求发送给业务处理服务器;接收业务处理服务器发送的文件不可恢复消息,并显示;接收业务处理服务器发送的待下载文件,并根据存储位置存储待下载文件;

如果为删除操作,获取待删除文件的文件名,将文件名和删除请求发送给业务处理服务器;接收业务处理服务器发送的删除成功消息,并删除本地数据库存储的待删除文件的文件名;

如果为搜索操作,获取搜索文件名,将文件名和搜索请求发送给业务处理服务器;接收业务处理服务器发送用户名、文件名、是否可以共享、共享码、文件大小和文件类型,并显示;

本实施方式中,所述利用LRC纠删码生成校验块的具体方法为:打开待上传参数文件读取数据,并开辟数据空间;对数据进行分块得到分块矩阵,利用LRC纠删码生成编码矩阵,然后将编码矩阵与分块矩阵相乘生成全局校验块;再把数据块分成若干个组,每个数据组同样利用上述方式生成局部校验块。

由于要保证分块后数据块的机密性,需要对数据块和校验块进行Hash处理,可以增强文件的机密性,也可以对分块进行完整性验证。本实施方式中,用DealEXE(“Deal_with_File”)和DealEXE(“hash_before”)两个外部的可执行文件。所述对每一个数据块和校验块进行Hash处理的具体方法为:对数据块和校验块经过DealEXE(“Deal_with_File”)处理后,生成每个文件相应的_TaoFile.txt文本文件和_Cigema.txt文本文件,经过DealEXE(“hash_before”)处理后,会生成每个对应的_h.txt文件。

所述数据存储服务器,用于接收文件管理模块发送的数据块、文件名、全局校验块和局部校验块,并分散存储,向文件管理模块发送文件存储成功消息;接收业务处理服务器发送的私钥并存储;接收业务处理服务器发送的文件名,根据文件名提取该文件名对应的数据块、全局校验块和局部校验块,调用签名生成算法利用私钥生成签名,然后将签名连同数据块、全局校验块和局部校验块发送给业务处理服务器;接收业务处理服务器发送的文件名和删除指令,删除文件名对应的数据块、全局校验块和局部校验块,并向业务处理服务器发送删除成功消息;

所述业务处理服务器,用于接收文件管理模块发送的文件名、是否可以共享、共享码、文件大小、文件类型、验证码和元数据文件并存储;接收文件管理模块发送的私钥并转发给数据存储服务器;接收文件管理模块发送的文件名和下载请求,根据文件名提取该文件名对应的元数据文件,并将文件名发送给数据存储服务器;接收数据存储服务器发送的数据块、签名、全局校验块和局部校验块,用公钥解密加密签名,如果不能解密,说明发生错误,视为严重损坏,向文件管理模块发送文件不可恢复消息,如果能解密,将解密后的签名与验证码对比,能够判断是否有数据块及校验块丢失,未丢失,说明能完整保存,根据元数据文件将数据块组合为待下载文件,并将待下载文件发送给文件管理模块;丢失,判断数据块及校验块丢失数量是否小于校验块的数量,是,则为非严重损坏即能够恢复,根据元数据判断局部校验块是否丢失,丢失,利用全局校验块恢复为完整文件即待下载文件,并将待下载文件发送给文件管理模块,未丢失,利用局部校验块恢复为完整文件即待下载文件,并将待下载文件发送给文件管理模块,如果数据块及校验块丢失数量大于校验块的数量,视为严重损坏,向文件管理模块发送文件不可恢复消息;接受文件管理模块发送的待删除文件的文件名和删除请求,将文件名和删除指令发送给数据存储服务器;将数据存储服务器发送的删除成功消息转发给文件管理模块;接收文件管理模块发送的文件名和搜索请求,并将文件名对应的是否可以共享、共享码、文件大小、文件类型发送给文件管理模块。

有益效果:本发明的一种基于LRC纠删码的可恢复云存储系统与现有技术相比,具有以下优点:

1、纠删码通过技术含量较高的算法,提供和副本近似的可靠性,保证了文件的可用性和完整性,同时减小了额外所需冗余设备的数量,从而提高了存储设备的利用率;

2、采用的LRC编码是基于对ES编码的改进。这种纠删码由于减少了网络I/O传输的数据量,参与数据恢复运算的数据量和运算量也随之减半,恢复过程的时间开销减半,所以具有很高的效率;

3、使用LRC纠删码,支持分布式存储,有更加良好的可拓展性;

4、对编码后的数据块和校验块利用OpenSSL库进行了文件加密和Hash处理,保证了数据传输过程中的机密。

附图说明

图1本发明一种实施方式的基于LRC纠删码的可恢复云存储系统硬件连接图;

图2本发明一种实施方式的基于LRC纠删码的可恢复云存储系统结构图;

图3本发明一种实施方式的利用基于LRC纠删码的可恢复云存储系统的文件上传方法流程图;

图4本发明一种实施方式的利用基于LRC纠删码的可恢复云存储系统的文件下载方法流程图。

具体实施方式

下面结合附图对本发明的一种实施方式作详细说明。

如图1-2所示,本实施方式的一种基于LRC纠删码的可恢复云存储系统,包括设置在系统客户端PC机上的用户信息管理模块和文件管理模块以及服务器端;

所述服务器端包括:数据库服务器、业务处理服务器和多个数据存储服务器;

本实施方式中,客户端PC机一台,型号为:Dell optiplex 360;数据库服务器和业务处理服务器各一台;数据存储服务器三台;

操作系统:win10;

开发工具:Visual studio 2012;

数据库:MySql;

数据库图形化处理工具:Navicat for MySQL;

所述用户信息管理模块,用于判断用户所需操作是注册操作还是登陆操作,如果为注册操作,获取用户输入的用户名、密码和确认密码,并发送给数据库服务器,如果为登陆操作,获取用户输入的用户名和密码,并发送给数据库服务器;接收数据库服务器发送的注册完成消息并提示用户注册完成;接收数据库服务器发送的登陆成功消息或用户名或密码错误消息,如果为登录成功消息,提示用户登陆成功,并向文件管理模块发送认证成功消息及用户名,如果为用户名或密码错误消息,提示用户登陆失败;

所述数据库服务器,用于接收用户信息管理模块发送的用户名、密码和确认密码,存储用户名、密码和确认密码,并向用户信息管理模块发送注册完成消息;接收用户信息管理模块发送的用户名和密码,判断用户名与密码是否匹配,是,向用户信息管理模块发送登陆成功消息,否则,向用户信息管理模块发送用户名或密码错误消息;

所述文件管理模块,用于接收用户信息管理模块发送的认证成功消息和用户名,并判断用户所需操作类型:

如果为上传操作,获取待上传文件,提取文件名、是否可以共享、共享码、文件大小和文件类型,基于RSA算法,生成公钥、私钥,将公钥公开,私钥私密传输给业务处理服务器;将待上传文件分为多个数据块,并生成一个验证码,利用LRC(Locally Repairable Codes)纠删码生成待上传文件的全局校验块,同时对数据块进行分组,利用LRC纠删码为每个组生成对应的局部校验块,对每一个数据块和校验块进行Hash处理,并将处理之后的数据块、文件名、全局校验块和局部校验块发送给数据存储服务器,将Hash处理和生成校验块参数信息存入元数据文件,将文件名、是否可以共享、共享码、文件大小、文件类型、验证码和元数据文件发送给业务处理服务器,将文件名存储到本地数据库;接收文件存储成功消息,并显示;

如果为下载操作,获取待下载文件的文件名和存储位置,将文件名和下载请求发送给业务处理服务器;接收业务处理服务器发送的文件不可恢复消息,并显示;接收业务处理服务器发送的待下载文件,并根据存储位置存储待下载文件;

如果为删除操作,获取待删除文件的文件名,将文件名和删除请求发送给业务处理服务器;接收业务处理服务器发送的删除成功消息,并删除本地数据库存储的待删除文件的文件名;

如果为搜索操作,获取搜索文件名,将文件名和搜索请求发送给业务处理服务器;接收业务处理服务器发送用户名、文件名、是否可以共享、共享码、文件大小和文件类型,并显示;

本实施方式中,所述利用LRC纠删码生成校验块的具体方法为:打开待上传参数文件读取数据,并开辟数据空间;对数据进行分块得到分块矩阵,利用LRC纠删码生成编码矩阵,然后将编码矩阵与分块矩阵相乘生成全局校验块;再把数据块分成若干个组,每个数据组同样利用上述方式生成局部校验块。

由于要保证分块后数据块的机密性,需要对数据块和校验块进行Hash处理,可以增强文件的机密性,也可以对分块进行完整性验证。本实施方式中,用DealEXE(“Deal_with_File”)和DealEXE(“hash_before”)两个外部的可执行文件。所述对每一个数据块和校验块进行Hash处理的具体方法为:对数据块和校验块经过DealEXE(“Deal_with_File”)处理后,生成每个文件相应的_TaoFile.txt文本文件和_Cigema.txt文本文件,经过DealEXE(“hash_before”)处理后,会生成每个对应的_h.txt文件。

所述数据存储服务器,用于接收文件管理模块发送的数据块、文件名、全局校验块和局部校验块,并分散存储,向文件管理模块发送文件存储成功消息;接收业务处理服务器发送的私钥并存储;接收业务处理服务器发送的文件名,根据文件名提取该文件名对应的数据块、全局校验块和局部校验块,调用签名生成算法利用私钥生成签名,然后将签名连同数据块、全局校验块和局部校验块发送给业务处理服务器;接收业务处理服务器发送的文件名和删除指令,删除文件名对应的数据块、全局校验块和局部校验块,并向业务处理服务器发送删除成功消息;

所述业务处理服务器,用于接收文件管理模块发送的文件名、是否可以共享、共享码、文件大小、文件类型、验证码和元数据文件并存储;接收文件管理模块发送的私钥并转发给数据存储服务器;接收文件管理模块发送的文件名和下载请求,根据文件名提取该文件名对应的元数据文件,并将文件名发送给数据存储服务器;接收数据存储服务器发送的数据块、签名、全局校验块和局部校验块,用公钥解密加密签名,如果不能解密,说明发生错误,视为严重损坏,向文件管理模块发送文件不可恢复消息,如果能解密,将解密后的签名与验证码对比,能够判断是否有数据块及校验块丢失,未丢失,说明能完整保存,根据元数据文件将数据块组合为待下载文件,并将待下载文件发送给文件管理模块;丢失,判断数据块及校验块丢失数量是否小于校验块的数量,是,则为非严重损坏即能够恢复,根据元数据判断局部校验块是否丢失,丢失,利用全局校验块恢复为完整文件即待下载文件,并将待下载文件发送给文件管理模块,未丢失,利用局部校验块恢复为完整文件即待下载文件,并将待下载文件发送给文件管理模块,如果数据块及校验块丢失数量大于校验块的数量,视为严重损坏,向文件管理模块发送文件不可恢复消息;接受文件管理模块发送的待删除文件的文件名和删除请求,将文件名和删除指令发送给数据存储服务器;将数据存储服务器发送的删除成功消息转发给文件管理模块;接收文件管理模块发送的文件名和搜索请求,并将文件名对应的是否可以共享、共享码、文件大小、文件类型发送给文件管理模块。

如图3所示,本实施方式中,利用基于LRC纠删码的可恢复云存储系统的文件上传方法,包括如下步骤:

步骤1:文件管理模块获取待上传文件,提取文件名、是否可以共享、共享码、文件大小和文件类型,基于RSA算法,生成公钥、私钥,将公钥公开,私钥私密传输给业务处理服务器;

步骤2:文件管理模块将待上传文件分为多个数据块,并生成一个验证码,利用LRC纠删码生成待上传文件的全局校验块,同时对数据块进行分组,利用LRC纠删码为每个组生成对应的局部校验块,对每一个数据块和校验块进行Hash处理,并将处理之后的数据块、文件名、全局校验块和局部校验块发送给数据存储服务器,将Hash处理过程中和生成校验块时的参数信息存入元数据文件,将文件名、是否可以共享、共享码、文件大小、文件类型、验证码和元数据文件发送给业务处理服务器,将文件名存储到本地数据库;

步骤3:业务处理服务器接收文件管理模块发送的文件名、是否可以共享、共享码、文件大小、文件类型、验证码和元数据文件并存储;

步骤4:业务处理服务器接收文件管理模块发送的私钥并转发给数据存储服务器;

步骤5:数据存储服务器接收文件管理模块发送的数据块、文件名、私钥、全局校验块和局部校验块,并分散存储,向文件管理模块发送文件存储成功消息;

步骤6:文件管理模块接收文件存储成功消息,并显示。

如图4所示,本实施方式中,利用基于LRC纠删码的可恢复云存储系统的文件下载方法,包括如下步骤:

步骤1:文件管理模块获取待下载文件的文件名和存储位置,将文件名和下载请求发送给业务处理服务器;

步骤2:业务处理服务器接收文件管理模块发送的文件名和下载请求,根据文件名提取该文件名对应的元数据文件,并将文件名发送给数据存储服务器;

步骤3:数据存储服务器接收业务处理服务器发送的文件名,根据文件名提取该文件名对应的数据块、全局校验块和局部校验块,调用签名生成算法利用私钥生成签名,然后将签名连同数据块、全局校验块和局部校验块发送给业务处理服务器;

步骤4:业务处理服务器接收数据存储服务器发送的数据块、签名、全局校验块和局部校验块,用公钥解密签名,如果不能解密,说明发生错误,视为严重损坏,向文件管理模块发送文件不可恢复消息,执行步骤5,如果能解密,执行步骤6;

步骤5:文件管理模块接收业务处理服务器发送的文件不可恢复消息,并显示;

步骤6:业务处理服务器将解密后的签名与验证码对比,能够判断是否有数据块及校验块丢失,未丢失,说明能完整保存,根据元数据文件将数据块组合为待下载文件,并将待下载文件发送给文件管理模块,执行步骤9,丢失,执行步骤7;

步骤7:业务处理服务器判断数据块及校验块丢失数量是否小于校验块的数量,是,则为非严重损坏即能够恢复,执行步骤8,否则,视为严重损坏,向文件管理模块发送文件不可恢复消息,执行步骤5;

步骤8:业务处理服务器根据元数据判断局部校验块是否丢失,丢失,利用全局校验块恢复为完整文件即待下载文件,并将待下载文件发送给文件管理模块,未丢失,利用局部校验块恢复为完整文件即待下载文件,并将待下载文件发送给文件管理模块;

步骤9:文件管理模块接收业务处理服务器发送的待下载文件,并根据存储位置存储待下载文件。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1