CN111522685A - 分布式存储方法和装置、服务器、计算机可读存储介质 - Google Patents
分布式存储方法和装置、服务器、计算机可读存储介质 Download PDFInfo
- Publication number
- CN111522685A CN111522685A CN202010208746.7A CN202010208746A CN111522685A CN 111522685 A CN111522685 A CN 111522685A CN 202010208746 A CN202010208746 A CN 202010208746A CN 111522685 A CN111522685 A CN 111522685A
- Authority
- CN
- China
- Prior art keywords
- file
- server
- preset number
- modules
- file modules
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1464—Management of the backup or restore process for networked environments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- 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]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02A—TECHNOLOGIES FOR ADAPTATION TO CLIMATE CHANGE
- Y02A30/00—Adapting or protecting infrastructure or their operation
- Y02A30/30—Adapting or protecting infrastructure or their operation in transportation, e.g. on roads, waterways or railways
Abstract
本申请涉及一种分布式存储方法和装置、服务器、计算机可读存储介质,根据第一服务器的数目将文件对应分割为预设数目个文件模块,将预设数目个文件模块存储在第一服务器上。采用服务器编码对预设数目个文件模块进行编码,采用纠错码ECC对预设数目个文件模块进行编码,生成与预设数目个文件模块对应的平行文件模块。计算出预设数目个文件模块的消息认证码MAC,将消息认证码MAC存储在平行文件模块里,将包含了消息认证码MAC的平行文件模块存储在第二服务器上。通过第二服务器上所存储的包含了消息认证码MAC的平行文件模块,来对存储在第一服务器上的文件进行修复。从而,保证文件能够正常读取,提高该存储方法的可用性和安全性。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种分布式存储方法和装置、服务器、计算机可读存储介质。
背景技术
云存储是在云计算(cloud computing)概念上延伸和衍生发展出来的一个新的概念。云存储现在越来越成为解决用户存储问题的一个主流解决方案,它可以方便的实现归档、备份,甚至成为了文件存储的主要载体。但是,随着网络技术的不断发展,传统的云存储方法面临着可用性和安全性较低的问题。
因此,急需解决传统的云存储方法可用性和安全性较低的问题。
发明内容
本申请实施例提供一种分布式存储方法和装置、服务器、计算机可读存储介质,可以提高存储过程中的可用性和安全性。
一种分布式存储方法,应用于服务器,所述服务器包括第一服务器和第二服务器,所述方法包括:
根据所述第一服务器的数目将文件对应分割为预设数目个文件模块,将所述预设数目个文件模块存储在所述第一服务器上;
采用服务器编码对所述预设数目个文件模块进行编码,采用纠错码ECC对所述预设数目个文件模块进行编码,生成与所述预设数目个文件模块对应的平行文件模块;
计算出所述预设数目个文件模块的消息认证码MAC,将所述消息认证码MAC存储在所述平行文件模块里,将包含了消息认证码MAC的平行文件模块存储在所述第二服务器上。
一种分布式存储装置,应用于服务器,所述服务器包括第一服务器和第二服务器,所述装置包括:
文件分割模块,用于根据所述第一服务器的数目将文件对应分割为预设数目个文件模块,将所述预设数目个文件模块存储在所述第一服务器上;
平行文件模块生成模块,用于采用服务器编码对所述预设数目个文件模块进行编码,采用纠错码ECC对所述预设数目个文件模块进行编码,生成与所述预设数目个文件模块对应的平行文件模块;
消息认证码生成模块,用于计算出所述预设数目个文件模块的消息认证码MAC,将所述消息认证码MAC存储在所述平行文件模块里,将包含了消息认证码MAC的平行文件模块存储在所述第二服务器上。
一种服务器,包括存储器及处理器,所述存储器中储存有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如上所述的分布式存储方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如上的分布式存储方法的步骤。
上述分布式存储方法和装置、服务器、计算机可读存储介质,根据第一服务器的数目将文件对应分割为预设数目个文件模块,将预设数目个文件模块存储在第一服务器上。采用服务器编码对预设数目个文件模块进行编码,采用纠错码ECC对预设数目个文件模块进行编码,生成与预设数目个文件模块对应的平行文件模块。计算出预设数目个文件模块的消息认证码MAC,将消息认证码MAC存储在平行文件模块里,将包含了消息认证码MAC的平行文件模块存储在第二服务器上。
因为,在将文件对应分割的预设数目个文件模块存储在第一服务器上的同时,采用服务器编码对预设数目个文件模块进行编码,并采用纠错码ECC对预设数目个文件模块进行编码,生成与预设数目个文件模块对应的平行文件模块。再计算出预设数目个文件模块的消息认证码MAC,将消息认证码MAC存储在平行文件模块里。最后,一并将包含了消息认证码MAC的平行文件模块存储在第二服务器上。如此,在第二服务器上实现了对文件的冗余存储,就可以在第一服务器遭受攻击导致存储在第一服务器上的文件不能够正常读取时,通过第二服务器上所存储的包含了消息认证码MAC的平行文件模块,来对存储在第一服务器上的文件进行修复。从而,保证文件能够正常读取,进而,提高该存储方法的可用性和安全性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一个实施例中分布式存储方法的应用环境图;
图2为一个实施例中分布式存储方法的流程图;
图3为一个实施例中分布式存储方法的流程图;
图4为一个实施例中分布式存储方法的流程图;
图5为一个实施例中分布式存储方法的流程图;
图6为一个实施例中分布式存储方法的流程图;
图7为一个具体的实施例中分布式存储方法的流程图;
图8为一个实施例中分布式存储装置的结构框图;
图9为一个实施例中分布式存储装置的结构框图;
图10为一个实施例中分布式存储装置的结构框图;
图11为一个实施例中服务器的内部结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
可以理解,本申请所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。举例来说,在不脱离本申请的范围的情况下,可以将第一服务器称为第二服务器,且类似地,可将第二服务器称为第一服务器。第一服务器和第二服务器两者都是服务器,但其不是同一服务器。
图1为一个实施例中分布式存储方法的应用场景图。如图1所示,该应用环境包括电子设备120及服务器140。服务器140包括第一服务器142和第二服务器144,根据第一服务器的数目将文件对应分割为预设数目个文件模块,将预设数目个文件模块存储在第一服务器上;采用服务器编码对预设数目个文件模块进行编码,采用纠错码ECC对预设数目个文件模块进行编码,生成与预设数目个文件模块对应的平行文件模块;计算出预设数目个文件模块的消息认证码MAC,将消息认证码MAC存储在平行文件模块里,将包含了消息认证码MAC的平行文件模块存储在第二服务器上。该电子设备120可以是各种手机、电脑、可携带设备等。
图2为一个实施例中分布式存储方法的流程图。本实施例中的分布式存储方法,以运行于图1中的服务器上为例进行描述,服务器包括第一服务器和第二服务器。如图2所示,分布式存储方法包括步骤220至步骤260。其中,
步骤220,根据第一服务器的数目将文件对应分割为预设数目个文件模块,将预设数目个文件模块存储在第一服务器上。
具体的,第一服务器包括多个服务器,第二服务器也包括多个服务器。其中,第一服务器指的是主服务器,第二服务器指的是次服务器。在将文件存储至服务器上的时候,首先,根据第一服务器的数目将文件对应分割为预设数目个文件模块,然后将预设数目个文件模块存储在第一服务器上。例如,主服务器包括l个服务器,分别为S1,……,Sl,将文件F分为l个独立的文件模块F(1),……,F(l)。然后,将这些独立的文件模块对应分布到主服务器S1,……,Sl中。即将文件模块F(j)存储在j号服务器Sj上,其中j=[1,l]。其中,预设数目个文件模块F(1),……,F(l)就构成了矩阵Fd。
在根据第一服务器的数目将文件对应分割为预设数目个文件模块时,具体可以采用cut函数的方式来进行分割。
例如,假设主服务器编号是j则:
Cj=codep(cutp(F))
假设次要服务器是i则:
Ci=codes(ECCi,cuts(F))
其中cut函数包含管理员认定的排列方式和分割方式,纠错码ECC为采用下文的代数方程式所生成。
其中,取mF=|F|/l表示将文件F分割后所得的文件模块的模块数。然后,可以得到一个mF*l的矩阵{Fij}i=[1,mF],j=[1,l]。
步骤240,采用服务器编码对预设数目个文件模块进行编码,采用纠错码ECC对预设数目个文件模块进行编码,生成与预设数目个文件模块对应的平行文件模块。
采用服务器编码对预设数目个文件模块进行编码,即为采用服务器编码对矩阵Fd进行编码,这样就相当于扩展了矩阵Fd的列。从而,对矩阵Fd实现了扩充,可以保护主服务器免受小型的攻击。同时,采用纠错码ECC对预设数目个文件模块进行编码,生成与预设数目个文件模块对应的平行文件模块,这样就相当于扩展了矩阵Fd的行。与预设数目个文件模块对应的平行文件模块是存储在次服务器上,因此,就实现了文件F在主服务器和次服务器上的冗余存储,即实现了文件F在全服务器上的冗余存储。
其中,服务器编码指的是将预设数目个文件模块先排序再分组,再给予各分组一个密码,这个密码和分组号就构成了服务器编码。纠错码ECC算法(error-correctingcode)指的是一种能够实现“错误检查和纠正”的技术。ECC的生成方式是:ECC=(KGenECC,MTagECC,MVerECC),其中KGenECC是随机选取的数字k;MTagECC包含输入的数字k以及消息标签m;MVerECC表示所存储文件的完整性与否。
ECC对应的代数方程式:
ECC=Pr[k<-KGenECC;MTagECC<-k&m;MVerECC=(m,1)∧MTagECC]。通过纠错码ECC就可以实现对文件对应的矩阵的扩充,使得文件能够自我修复。
例如,假设主服务器的数目为n,次服务器的数目为k,则对文件F对应的矩阵Fd进行矩阵扩展的过程为:
步骤260,计算出预设数目个文件模块的消息认证码MAC,将消息认证码MAC存储在平行文件模块里,将包含了消息认证码MAC的平行文件模块存储在第二服务器上。
其中,在无线通信中,为了防止攻击者更改消息内容,需要验证消息的完整性。消息认证码(MessageAuthenticationCode,MAC)是用来验证消息是否完整的数值。因此,消息认证码在移动无线网络中应用广泛。使用MAC验证消息完整性的具体过程是:假设通信双方A和B共享密钥K,A用消息认证码算法将K和消息M计算出消息验证码MAC,然后将MAC和M一起发送给B。B接收到MAC和M后,利用M和K计算出新的验证码MAC*,若MAC*和MAC相等则验证成功,证明消息未被篡改。由于攻击者没有密钥K,攻击者修改了消息内容后无法计算出相应的消息验证码,因此B就能够发现消息完整性遭到破坏。本申请中计算出预设数目个文件模块的消息认证码MAC,将消息认证码MAC存储在平行文件模块里,将包含了消息认证码MAC的平行文件模块存储在次服务器上。消息验证码有多种计算方式,其中一种是利用已有的加密算法,如采用数据加密标准(Data Encryption Standard,DES)等直接对摘要值进行加密处理;另一种是使用专门的MAC算法进行计算。这里,DES是一种使用密钥加密的块算法。本申请对此不做限定。
本申请实施例中,因为在将文件对应分割的预设数目个文件模块存储在第一服务器上的同时,采用服务器编码对预设数目个文件模块进行编码,并采用纠错码ECC对预设数目个文件模块进行编码,生成与预设数目个文件模块对应的平行文件模块。再计算出预设数目个文件模块的消息认证码MAC,将消息认证码MAC存储在平行文件模块里。最后,一并将包含了消息认证码MAC的平行文件模块存储在第二服务器上。如此,通过ECC算法可以在不影响预设数目个文件模块的秩的条件下,创建平行文件模块,实现扩充预设数目个文件模块对应的矩阵,最终在第二服务器上实现了冗余存储。因为在第二服务器上实现了对文件的冗余存储,所以就可以在第一服务器遭受攻击导致存储在第一服务器上的文件不能够正常读取时,通过第二服务器上所存储的包含了消息认证码MAC的平行文件模块,来对存储在第一服务器上的文件进行修复。从而,保证文件能够正常读取,进而,提高该分布式存储方法的可用性和安全性。
在一个实施例中,如图3所示,提供了一种分布式存储方法,还包括:
步骤320,对预设数目个文件模块的行进行解码。
将文件采用分布式存储方法分别存储在了主服务器和次服务器上之后,在需要从主服务器和次服务器上读取该文件时,则首先需要对预设数目个文件模块的每一行进行解码,然后再对预设数目个文件模块的每一列进行解码。
步骤330,若预设数目个文件模块的行能够被正确解码,采用消息认证码MAC对正确解码后的行进行认证。
在一种情况下,预设数目个文件模块的每一行都能够被正确解码,那么就可以采用消息认证码MAC来检测预设数目个文件模块的完整性。具体为采用消息认证码MAC对正确解码后的行进行认证。其中,预设数目个文件模块的行能够被正确解码的标准是:对该行进行解码所出现的错误数量小于等于预设阈值。例如,本申请中所采用纠错码ECC对预设数目个文件模块进行编码,则要求预设数目个文件模块的每一行的错误数量小于等于预设阈值
步骤340,若采用消息认证码MAC对正确解码后的行进行认证成功,则对预设数目个文件模块的列进行解码,得到解码后的文件。
若采用消息认证码MAC对正确解码后的行进行认证且认证成功,则说明采用消息认证码MAC来检测预设数目个文件模块完整性的结果为文件是完整的。因此,就可以继续对预设数目个文件模块的列进行解码,得到解码后的文件。
本申请实施例中,对预设数目个文件模块的每一行进行解码,若预设数目个文件模块的所有行都能够被正确解码,则进一步采用消息认证码MAC对正确解码后的行进行认证。若采用消息认证码MAC对正确解码后的行进行认证成功,则对预设数目个文件模块的列进行解码,得到解码后的文件。在预设数目个文件模块的所有行都能够被正确解码的情况下,加入了采用消息认证码MAC对正确解码后的行进行认证的步骤,从而实现对预设数目个文件模块的完整性进行检测,及时检测出文件被攻击的情况,避免解码失败。在检测出预设数目个文件模块为完整的文件时,继续对预设数目个文件模块的列进行解码,最终得到解码后的文件,提高本申请所提供的分布式存储方法的可用性和安全性。
在一个实施例中,如图4所示,在对预设数目个文件模块的行进行解码之后,包括:
步骤350,若预设数目个文件模块的行不能够被正确解码或采用消息认证码MAC对正确解码后的行进行认证失败,则将预设数目个文件模块中不能够被正确解码或认证失败的行标注为待擦除行。
一种情况为,在对预设数目个文件模块的每一行进行解码之后,若出现预设数目个文件模块的某一行不能够被正确解码,将预设数目个文件模块中不能够被正确解码的行标注为待擦除行(erasure)。
还存在另一种情况,在对预设数目个文件模块的每一行进行解码之后,预设数目个文件模块的所有行都能够被正确解码,则采用消息认证码MAC对正确解码后的行进行认证。若采用消息认证码MAC对正确解码后的行进行认证但认证失败,则说明采用消息认证码MAC来检测预设数目个文件模块完整性所输出的检测结果为文件是不完整的。将认证失败的行,标注为待擦除行(erasure)。
步骤360,对预设数目个文件模块的列进行解码。
步骤370,采用服务器编码和纠删码erasure code对待擦除行进行修复,得到修复后的预设数目个文件模块。
因为预设数目个文件模块中存在不能够被正确解码或认证失败的待擦除行,所以就先对预设数目个文件模块的列进行解码。然后,采用服务器编码和纠删码erasure code对待擦除行进行修复。
erasure code(也称擦除码或纠删码)是一组数据冗余和恢复算法的统称。erasure code是一种可以将n份原始数据,增加m份数据(用来存储erasure编码),并能将n+m份中的任意n份数据,还原为原始数据的技术。
步骤380,对修复后的预设数目个文件模块的行进行解码,得到解码后的文件。
采用服务器编码和纠删码erasure code对待擦除行进行修复,得到修复后的预设数目个文件模块。此时,预设数目个文件模块为完整的文件。因此,就可以继续对预设数目个文件模块的行进行解码,得到解码后的文件。
本申请实施例中,若预设数目个文件模块的行不能够被正确解码或采用消息认证码MAC对正确解码后的行进行认证失败,则将预设数目个文件模块中不能够被正确解码或认证失败的行标注为待擦除行。对预设数目个文件模块的列进行解码,采用服务器编码和纠删码erasure code对待擦除行进行修复,得到修复后的预设数目个文件模块。对修复后的预设数目个文件模块的行进行解码,得到解码后的文件。
本申请将预设数目个文件模块中不能够被正确解码或认证失败的行标注为待擦除行,然后先对预设数目个文件模块的列进行解码,再采用服务器编码和纠删码erasurecode对待擦除行进行修复。最后,对修复后的预设数目个文件模块的行进行解码,得到解码后的文件。从而,在解码的过程中及时发现文件存在的问题,并对文件进行修复,从而最终能够准确地解码出文件,提高本申请所提供的分布式存储方法的可用性和安全性。
在一个实施例中,如图5所示,提供了一种分布式存储方法,还包括:
步骤520,接收对文件的询问消息,根据询问消息生成第一服务器的应答。
在询问-回答协议中,用户可以向存储文件的所有服务器(包括主服务器及次服务器)输入对文件的询问消息。其中,询问消息的用户钥匙由用户本地存储的主键所生成。然后,服务器接收到对文件的询问消息,对文件进行询问后向用户反馈应答。服务器的应答用矩阵R=(R1,……,Rn)来表示。例如,用户向存储文件的所有服务器发送询问消息kc,服务器接收到对询问消息kc之后,服务器Sj生成集合D=i1,……,iv,和一个u∈I,那么服务器Sj的应答
步骤530,根据第一服务器的应答检测第一服务器上所存储的预设数目个文件模块的编码是否正确。
对第一服务器的应答矩阵R=(R1,……,Rn)做线性运算,具体为对第一服务器的应答矩阵R通过ECC中的MVerECC算法来做线性运算,如果通过MVerECC算法做线性运算的输出是或者是(⊥,0),则表明第一服务器的应答为文件存在错误,此时MVerECC算法检测返回0。如果通过MVerECC算法做线性运算的输出是则表明第一服务器的应答为文件为正确的,此时MVerECC算法检测返回1。
步骤540,若检测出第一服务器上所存储的预设数目个文件模块的编码正确,则返回编码正确的提示信息。
当通过MVerECC算法检测出第一服务器上所存储的预设数目个文件模块的编码正确,则返回编码正确的提示信息。
本申请实施例中,接收对文件的询问消息,根据询问消息生成第一服务器的应答。根据第一服务器的应答检测第一服务器上所存储的预设数目个文件模块的编码是否正确,若检测出第一服务器上所存储的预设数目个文件模块的编码正确,则返回编码正确的提示信息。通过MVerECC算法检测出文件的完整与否,并反馈给用户,形成完整的询问-应答模式,提供了用户对文件完整性的审查入口,方便用户及时、直观地获取到文件的状态信息。
在一个实施例中,如图6所示,在根据询问消息检测第一服务器上所存储的预设数目个文件模块的编码是否正确之后,包括:
步骤550,若检测出第一服务器上所存储的预设数目个文件模块的编码错误,则返回编码错误的提示信息。
接收对文件的询问消息,根据询问消息生成第一服务器的应答。根据第一服务器的应答检测第一服务器上所存储的预设数目个文件模块的编码是否正确。若检测出第一服务器上所存储的预设数目个文件模块的编码错误,则返回编码错误的提示信息。
具体为:在询问-回答协议中,用户可以向存储文件的所有服务器(包括主服务器及次服务器)输入对文件的询问消息。然后,服务器接收到对文件的询问消息,对文件进行询问后向用户反馈应答。服务器的应答用矩阵R=(R1,……,Rn)来表示。例如,用户向存储文件的所有服务器发送询问消息kc,服务器接收到对询问消息kc之后,服务器Sj生成集合D=i1,……,iv,和一个u∈I,那么服务器Sj的应答
对第一服务器的应答矩阵R=(R1,……,Rn)做线性运算,具体为对第一服务器的应答矩阵R通过ECC中的MVerECC算法来做线性运算,如果通过MVerECC算法做线性运算的输出是或者是(⊥,0),则表明第一服务器的应答为文件存在错误,此时MVerECC算法检测返回0。如果通过MVerECC算法做线性运算的输出是则表明第一服务器的应答为文件为正确的,此时MVerECC算法检测返回1。
步骤560,采用消息认证码MAC确定预设数目个文件模块中编码错误的位置。
若检测出第一服务器上所存储的预设数目个文件模块的编码错误,则返回编码错误的提示信息。然后,采用消息认证码MAC确定预设数目个文件模块中编码错误的位置。消息认证码(Message Authentication Code,MAC)是用来验证消息是否完整的数值。具体的,在上述步骤中计算出预设数目个文件模块的消息认证码MAC,将消息认证码MAC存储在平行文件模块里。然后,一并将包含了消息认证码MAC的平行文件模块存储在第二服务器上。如此,在第二服务器上实现了对文件的冗余存储,就可以在第一服务器遭受攻击导致存储在第一服务器上的文件不能够正常读取时,通过第二服务器上所存储的包含了消息认证码MAC的平行文件模块,来对存储在第一服务器上的文件进行修复。
而修复的第一步,就是通过采用消息认证码MAC确定预设数目个文件模块中编码错误的位置。具体为,在对预设数目个文件模块的行进行解码之后,若预设数目个文件模块的行不能够被正确解码或采用消息认证码MAC对正确解码后的行进行认证失败,则将预设数目个文件模块中不能够被正确解码或认证失败的行标注为待擦除行。该待擦除行就是预设数目个文件模块中编码错误的位置。
步骤570,采用服务器编码和纠删码erasure code对预设数目个文件模块中编码错误的位置进行修复,得到修复后的预设数目个文件模块。
在确定出了预设数目个文件模块中编码错误的位置之后,就可以采用服务器编码和纠删码erasure code对待擦除行进行修复,得到修复后的预设数目个文件模块。其中,erasure code(也称擦除码或纠删码)是一组数据冗余和恢复算法的统称。erasure code是一种可以将n份原始数据,增加m份数据(用来存储erasure编码),并能将n+m份中的任意n份数据,还原为原始数据的技术。
本申请实施例中,因为一并将包含了消息认证码MAC的平行文件模块存储在第二服务器上。如此,在第二服务器上实现了对文件的冗余存储,就可以在第一服务器遭受攻击导致存储在第一服务器上的文件不能够正常读取时,实现对存储在第一服务器上的文件进行修复。具体为:通过MVerECC算法检测出文件的完整与否,并反馈给用户,形成完整的询问-应答模式,提供了用户对文件完整性的审查入口,方便用户及时、直观地获取到文件的状态信息。当返回编码错误的提示信息时,进一步采用消息认证码MAC确定预设数目个文件模块中编码错误的位置,采用服务器编码和纠删码erasure code对预设数目个文件模块中编码错误的位置进行修复,从而实现对存储在第一服务器上的文件进行修复。以便通过服务器最终能够准确地解码出文件,提高本申请所提供的分布式存储方法的可用性和安全性。
在一个实施例中,消息认证码MAC=(Mgen,Mtag,Mver),Mgen为预设安全密码,Mtag为根据Mgen所生成的消息标签,Mver在Mtag有效时为第一布尔值,Mver在Mtag无效时为第二布尔值。
具体的,消息认证码(MessageAuthenticationCode,MAC)是用来验证消息是否完整的数值。因此,消息认证码在移动无线网络中应用广泛。其中,第一布尔值可以是1,第二布尔值可以是0。使用MAC验证消息完整性的具体过程是:假设通信双方A和B共享密钥K,A用消息认证码算法将K和消息M计算出消息验证码MAC,然后将MAC和M一起发送给B。B接收到MAC和M后,利用M和K计算出新的验证码MAC*,若MAC*和MAC相等则验证成功,证明消息未被篡改。由于攻击者没有密钥K,攻击者修改了消息内容后无法计算出相应的消息验证码,因此B就能够发现消息完整性遭到破坏。本申请中计算出预设数目个文件模块的消息认证码MAC,将消息认证码MAC存储在平行文件模块里,将包含了消息认证码MAC的平行文件模块存储在次服务器上。消息验证码有多种计算方式,其中一种是利用已有的加密算法,如采用数据加密标准(Data Encryption Standard,DES)等直接对摘要值进行加密处理;另一种是使用专门的MAC算法进行计算。这里,DES是一种使用密钥加密的块算法。本申请对此不做限定。
一种情况下,在预设数目个文件模块的所有行都能够被正确解码的情况下,加入了采用消息认证码MAC对正确解码后的行进行认证的步骤,从而实现对预设数目个文件模块的完整性进行检测,及时检测出文件被攻击的情况,避免解码失败。在检测出预设数目个文件模块为完整的文件时,继续对预设数目个文件模块的列进行解码,最终得到解码后的文件,提高本申请所提供的分布式存储方法的可用性和安全性。
另一种情况下,若预设数目个文件模块的行不能够被正确解码或采用消息认证码MAC对正确解码后的行进行认证失败,则将预设数目个文件模块中不能够被正确解码或认证失败的行标注为待擦除行。对预设数目个文件模块的列进行解码,采用服务器编码和纠删码erasure code对待擦除行进行修复,得到修复后的预设数目个文件模块。对修复后的预设数目个文件模块的行进行解码,得到解码后的文件。
本申请实施例中,通过消息认证码MAC可以对解码后的行进行认证,从而实现对预设数目个文件模块的完整性进行检测,及时检测出文件被攻击的情况,避免整个文件解码失败。
在一个实施例中,纠错码ECC=(KGenECC,MTagECC,MVerECC),KGenECC为随机数字,MTagECC包含随机数字及消息标签,MVerECC用于表示服务器上所存储的文件是否完整。
其中,采用纠错码ECC对预设数目个文件模块进行编码,生成与预设数目个文件模块对应的平行文件模块。配合纠错码ECC的实现,至少需要一个正确的预设数目个文件模块的消息认证码MAC来检测预设数目个文件模块的完整性。
本申请实施例中,采用纠错码ECC对预设数目个文件模块进行编码,生成与预设数目个文件模块对应的平行文件模块,并存储在第一服务器上。如此,在第二服务器上实现了对文件的冗余存储,就可以在第一服务器遭受攻击导致存储在第一服务器上的文件不能够正常读取时,通过第二服务器上所存储的包含了消息认证码MAC的平行文件模块,来对存储在第一服务器上的文件进行修复。从而,保证文件能够正常读取,进而,提高该存储方法的可用性和安全性。
在一个具体的实施例中,如图7所示,提供了一种分布式存储方法,包括以下步骤:
步骤702,输入存储文件F;
步骤704,将服务器分为主服务器和次服务器;
步骤706,将存储文件F根据主服务器的数目进行分割;
步骤708,计算主服务器的文件模块;
步骤710,计算次服务器的平行文件模块;
步骤712,用户输入对存储文件F的询问消息;
步骤714,检测主服务器和次服务器上存储文件F的情况,判断主服务器上所存储的文件模块的编码是否正确;
步骤716,若检测出主服务器上所存储的文件模块的编码正确,则返回编码正确的提示信息;
步骤718,若检测出第一服务器上所存储的文件模块的编码错误,则返回编码错误的提示信息;
步骤720,采用消息认证码MAC对主服务器上所存储的文件模块进行修复。
步骤722,对修复后的文件模块的行进行解码,得到解码后的文件。
本申请实施例中,形成了完整的询问-应答模式,提供了用户对文件完整性的审查入口,方便用户及时、直观地获取到文件的状态信息。当返回编码错误的提示信息时,进一步采用消息认证码MAC确定主服务器上所存储的文件模块中编码错误的位置,采用服务器编码和纠删码erasure code对主服务器上所存储的文件模块中编码错误的位置进行修复,从而实现对存储在主服务器上的文件进行修复。以便通过服务器最终能够准确地解码出文件,提高本申请所提供的分布式存储方法的可用性和安全性。
应该理解的是,虽然图7的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图7中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图8所示,提供了一种分布式存储装置800,应用于服务器,服务器包括第一服务器和第二服务器,该装置包括:
文件分割模块820,用于根据第一服务器的数目将文件对应分割为预设数目个文件模块,将预设数目个文件模块存储在第一服务器上;
平行文件模块生成模块840,用于采用服务器编码对预设数目个文件模块进行编码,采用纠错码ECC对预设数目个文件模块进行编码,生成与预设数目个文件模块对应的平行文件模块;
消息认证码生成模块860,用于计算出预设数目个文件模块的消息认证码MAC,将消息认证码MAC存储在平行文件模块里,将包含了消息认证码MAC的平行文件模块存储在第二服务器上。
在一个实施例中,如图9所示,提供了一种分布式存储装置800,该装置还包括:解码模块880,用于对预设数目个文件模块的行进行解码;若预设数目个文件模块的行能够被正确解码,采用消息认证码MAC对正确解码后的行进行认证;若采用消息认证码MAC对正确解码后的行进行认证成功,则对预设数目个文件模块的列进行解码,得到解码后的文件。
在一个实施例中,解码模块880,还用于在对预设数目个文件模块的行进行解码之后,包括:若预设数目个文件模块的行不能够被正确解码或采用消息认证码MAC对正确解码后的行进行认证失败,则将预设数目个文件模块中不能够被正确解码或认证失败的行标注为待擦除行;对预设数目个文件模块的列进行解码;采用服务器编码和纠删码erasurecode对待擦除行进行修复,得到修复后的预设数目个文件模块;对修复后的预设数目个文件模块的行进行解码,得到解码后的文件。
在一个实施例中,如图10所示,提供了一种分布式存储装置800,该装置还包括:询问应答模块890,用于接收对文件的询问消息,根据询问消息生成第一服务器的应答;根据第一服务器的应答检测第一服务器上所存储的预设数目个文件模块的编码是否正确;若检测出第一服务器上所存储的预设数目个文件模块的编码正确,则返回编码正确的提示信息。
在一个实施例中,询问应答模块890,还用于在根据询问消息检测第一服务器上所存储的预设数目个文件模块的编码是否正确之后,包括:若检测出第一服务器上所存储的预设数目个文件模块的编码错误,则返回编码错误的提示信息;采用消息认证码MAC确定预设数目个文件模块中编码错误的位置;采用服务器编码和纠删码erasure code对预设数目个文件模块中编码错误的位置进行修复,得到修复后的预设数目个文件模块。
在一个实施例中,消息认证码MAC=(Mgen,Mtag,Mver),Mgen为预设安全密码,Mtag为根据Mgen所生成的消息标签,Mver在Mtag有效时为第一布尔值,Mver在Mtag无效时为第二布尔值。
在一个实施例中,纠错码ECC=(KGenECC,MTagECC,MVerECC),KGenECC为随机数字,MTagECC包含随机数字及消息标签,MVerECC用于表示服务器上所存储的文件是否完整。
上述分布式存储装置中各个模块的划分仅用于举例说明,在其他实施例中,可将分布式存储装置按照需要划分为不同的模块,以完成上述分布式存储装置的全部或部分功能。
关于分布式存储装置的具体限定可以参见上文中对于分布式存储方法的限定,在此不再赘述。上述分布式存储装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
图11为一个实施例中服务器(或云端等)的内部结构示意图。如图11所示,该服务器包括通过系统总线连接的处理器和存储器。其中,该处理器用于提供计算和控制能力,支撑整个服务器的运行。存储器可包括非易失性存储介质及内存储器。非易失性存储介质存储有操作系统和计算机程序。该计算机程序可被处理器所执行,以用于实现以下各个实施例所提供的一种分布式存储方法。内存储器为非易失性存储介质中的操作系统计算机程序提供高速缓存的运行环境。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。本领域技术人员可以理解,图11中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的服务器的限定,具体的服务器可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本申请实施例中提供的分布式存储装置中的各个模块的实现可为计算机程序的形式。该计算机程序可在服务器上运行。该计算机程序构成的程序模块可存储在服务器的存储器上。该计算机程序被处理器执行时,实现本申请实施例中所描述方法的步骤。
本申请实施例还提供了一种计算机可读存储介质。一个或多个包含计算机可执行指令的非易失性计算机可读存储介质,当计算机可执行指令被一个或多个处理器执行时,使得处理器执行分布式存储方法的步骤。
一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行分布式存储方法。
本申请实施例所使用的对存储器、存储、数据库或其它介质的任何引用可包括非易失性和/或易失性存储器。合适的非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM),它用作外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDR SDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种分布式存储方法,其特征在于,应用于服务器,所述服务器包括第一服务器和第二服务器,所述方法包括:
根据所述第一服务器的数目将文件对应分割为预设数目个文件模块,将所述预设数目个文件模块存储在所述第一服务器上;
采用服务器编码对所述预设数目个文件模块进行编码,采用纠错码ECC对所述预设数目个文件模块进行编码,生成与所述预设数目个文件模块对应的平行文件模块;
计算出所述预设数目个文件模块的消息认证码MAC,将所述消息认证码MAC存储在所述平行文件模块里,将包含了消息认证码MAC的平行文件模块存储在所述第二服务器上。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对所述预设数目个文件模块的行进行解码;
若所述预设数目个文件模块的行能够被正确解码,采用所述消息认证码MAC对正确解码后的行进行认证;
若采用所述消息认证码MAC对正确解码后的行进行认证成功,则对所述预设数目个文件模块的列进行解码,得到解码后的文件。
3.根据权利要求2所述的方法,其特征在于,在所述对所述预设数目个文件模块的行进行解码之后,包括:
若所述预设数目个文件模块的行不能够被正确解码或采用所述消息认证码MAC对正确解码后的行进行认证失败,则将所述预设数目个文件模块中不能够被正确解码或认证失败的行标注为待擦除行;
对所述预设数目个文件模块的列进行解码;
采用服务器编码和纠删码erasure code对所述待擦除行进行修复,得到修复后的预设数目个文件模块;
对所述修复后的预设数目个文件模块的行进行解码,得到解码后的文件。
4.根据权利要求1中所述的方法,其特征在于,所述方法还包括:
接收对所述文件的询问消息,根据所述询问消息生成第一服务器的应答;
根据所述第一服务器的应答检测所述第一服务器上所存储的所述预设数目个文件模块的编码是否正确;
若检测出所述第一服务器上所存储的所述预设数目个文件模块的编码正确,则返回编码正确的提示信息。
5.根据权利要求4所述的方法,其特征在于,在所述根据所述询问消息检测所述第一服务器上所存储的所述预设数目个文件模块的编码是否正确之后,包括:
若检测出所述第一服务器上所存储的所述预设数目个文件模块的编码错误,则返回编码错误的提示信息;
采用所述消息认证码MAC确定所述预设数目个文件模块中编码错误的位置;
采用服务器编码和纠删码erasure code对所述预设数目个文件模块中编码错误的位置进行修复,得到修复后的预设数目个文件模块。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述消息认证码MAC=(Mgen,Mtag,Mver),所述Mgen为预设安全密码,所述Mtag为根据所述Mgen所生成的消息标签,所述Mver在所述Mtag有效时为第一布尔值,所述Mver在所述Mtag无效时为第二布尔值。
7.根据权利要求1至5中任一项所述的方法,其特征在于,所述纠错码ECC=(KGenECC,MTagECC,MVerECC),所述KGenECC为随机数字,所述MTagECC包含随机数字及消息标签,所述MVerECC用于表示服务器上所存储的所述文件是否完整。
8.一种分布式存储装置,其特征在于,应用于服务器,所述服务器包括第一服务器和第二服务器,所述装置包括:
文件分割模块,用于根据所述第一服务器的数目将文件对应分割为预设数目个文件模块,将所述预设数目个文件模块存储在所述第一服务器上;
平行文件模块生成模块,用于采用服务器编码对所述预设数目个文件模块进行编码,采用纠错码ECC对所述预设数目个文件模块进行编码,生成与所述预设数目个文件模块对应的平行文件模块;
消息认证码生成模块,用于计算出所述预设数目个文件模块的消息认证码MAC,将所述消息认证码MAC存储在所述平行文件模块里,将包含了消息认证码MAC的平行文件模块存储在所述第二服务器上。
9.一种服务器,其特征在于,包括存储器及处理器,所述存储器中储存有计算机程序,其特征在于,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至7中任一项所述的分布式存储方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的分布式存储方法的步骤。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910982866 | 2019-10-16 | ||
CN201910982866X | 2019-10-16 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111522685A true CN111522685A (zh) | 2020-08-11 |
CN111522685B CN111522685B (zh) | 2023-05-12 |
Family
ID=71910525
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010208746.7A Active CN111522685B (zh) | 2019-10-16 | 2020-03-23 | 分布式存储方法和装置、服务器、计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111522685B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102419766A (zh) * | 2011-11-01 | 2012-04-18 | 西安电子科技大学 | 基于hdfs分布式文件系统的数据冗余及文件操作方法 |
CN102904726A (zh) * | 2012-11-08 | 2013-01-30 | 中国科学院信息工程研究所 | 用于量子密钥分配系统的经典信道消息认证方法和装置 |
CN103929467A (zh) * | 2013-01-14 | 2014-07-16 | 埃森哲环球服务有限公司 | 安全在线分布式的数据存储服务 |
US20190220349A1 (en) * | 2019-03-28 | 2019-07-18 | Intel Corporation | Combined secure mac and device correction using encrypted parity with multi-key domains |
-
2020
- 2020-03-23 CN CN202010208746.7A patent/CN111522685B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102419766A (zh) * | 2011-11-01 | 2012-04-18 | 西安电子科技大学 | 基于hdfs分布式文件系统的数据冗余及文件操作方法 |
CN102904726A (zh) * | 2012-11-08 | 2013-01-30 | 中国科学院信息工程研究所 | 用于量子密钥分配系统的经典信道消息认证方法和装置 |
CN103929467A (zh) * | 2013-01-14 | 2014-07-16 | 埃森哲环球服务有限公司 | 安全在线分布式的数据存储服务 |
US20190220349A1 (en) * | 2019-03-28 | 2019-07-18 | Intel Corporation | Combined secure mac and device correction using encrypted parity with multi-key domains |
Non-Patent Citations (1)
Title |
---|
芦欣;刘渊;: "基于纠删码的云计算存储备份及恢复策略" * |
Also Published As
Publication number | Publication date |
---|---|
CN111522685B (zh) | 2023-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8001383B2 (en) | Secure serial number | |
US8381062B1 (en) | Proof of retrievability for archived files | |
RU2696425C1 (ru) | Способ двумерного контроля и обеспечения целостности данных | |
CN105320899A (zh) | 一种面向用户的云存储数据完整性保护方法 | |
US11454968B2 (en) | Artificial neural network integrity verification | |
US11409872B2 (en) | Confirming a version of firmware loaded to a processor-based device | |
CN112035472A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
He et al. | Public integrity auditing for dynamic regenerating code based cloud storage | |
CN114329653A (zh) | 用于安全防护的方法、装置、电子设备及存储介质 | |
RU2707940C1 (ru) | Способ многоуровневого контроля и обеспечения целостности данных | |
CN111522685B (zh) | 分布式存储方法和装置、服务器、计算机可读存储介质 | |
CN116775145A (zh) | 一种服务器的启动恢复方法、装置、设备及存储介质 | |
CN115562579A (zh) | 数据存储方法、芯片和电子设备 | |
CN115514492A (zh) | Bios固件验证方法、装置、服务器、存储介质和程序产品 | |
CN114244519A (zh) | 密码的校验方法、装置、计算机设备和存储介质 | |
CN111526122B (zh) | 数据监控的方法、装置、设备及介质 | |
RU2771238C1 (ru) | Способ восстановления данных с подтвержденной целостностью | |
CN111143863A (zh) | 一种数据处理方法、装置、设备及计算机可读存储介质 | |
CN111273952A (zh) | 一种可信恢复更新的方法及装置 | |
CN110659522A (zh) | 存储介质安全认证方法、装置、计算机设备和存储介质 | |
CN115208554B (zh) | 一种密钥自校验、自纠错、自恢复的管理方法及系统 | |
US11960608B2 (en) | Fast secure booting method and system | |
CN117473020B (zh) | 数据存取方法、系统及计算机存储介质和终端设备 | |
US20240104184A1 (en) | Systems and methods for access control | |
CN112015582A (zh) | 自修正存储器系统、提供错误修正至存储器内容的方法 |
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 |