CN104598168B - 一种数据恢复方法及对象存储设备 - Google Patents
一种数据恢复方法及对象存储设备 Download PDFInfo
- Publication number
- CN104598168B CN104598168B CN201510033827.7A CN201510033827A CN104598168B CN 104598168 B CN104598168 B CN 104598168B CN 201510033827 A CN201510033827 A CN 201510033827A CN 104598168 B CN104598168 B CN 104598168B
- Authority
- CN
- China
- Prior art keywords
- osd
- data
- hard disk
- data block
- storage device
- 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
Classifications
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- 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/1469—Backup restoration techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据恢复方法及对象存储设备,用于解决现有技术中恢复OSD上的丢失数据时效率低下,耗时过长的问题。该方法应用于对象存储系统中,所述对象存储系统包括多个OSD,所述方法由第一OSD执行,所述第一OSD包括硬盘;该方法包括:确定所述第一OSD丢失待写入所述第一OSD的硬盘的数据;向所述多个OSD中除所述第一OSD之外的其他OSD发送请求报文;接收所述其他OSD发送的所述请求报文的响应消息,所述响应消息携带有在设定时长内写入所述其他OSD的数据的信息,所述数据的信息包括与所述待写入所述第一OSD的硬盘的数据属于同一数据对象的其他数据;根据所述接收到的其他OSD的数据的信息在所述第一OSD的硬盘中恢复所述待写入所述第一OSD的数据。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种数据恢复方法及对象存储设备。
背景技术
对象存储系统(Object-Based Storage System)综合了网络存储技术(NetworkStorage Technologies,NAS)和存储区域网络技术(Storage Area Network,SAN)的优点,同时具有SAN的高速直接访问和NAS的数据共享等优势,提供了高可靠性、跨平台性以及高安全性的存储体系。
对象存储系统的基本构成单元是对象存储设备(Object-based Storage Device,OSD),OSD负责对象(Object)的存储,对象中保存有文件数据及文件的相关属性信息。为了确保存储的对象的可靠性,对于一个对象,采用擦除码(Erasure Code)的方式对其进行存储。具体的,将一个对象划分为N个等长的数据块,通过对这N份数据进行编码,得到M份校验数据块,将这个M+N份数据分别存放到M+N个不同的OSD上,从这M+N份数据中取出任意的M+N-i份数据,均可计算出余下的i份数据的数值,亦即可以得到该对象的原始数据,其中,i的取值不能大于校验数据块的个数M。这样,即使是单个或者多个OSD出现故障,导致对象的部分数据块丢失,也能根据剩余的数据块得到数据的原始值。
在每个OSD将数据写入其硬盘的过程中,可能会出现故障导致数据写入该OSD的硬盘失败,例如,OSD的内存或者非易失性双列插入式记忆模块(Non-volatile Dual InlineMemory Module,NVDIMM)出现故障时,数据将会在写入硬盘前丢失。
现有技术中,为了恢复该OSD上丢失的数据,对象存储系统中的每个OSD会定时启动对象扫描任务,每个OSD扫描自身硬盘上的所有对象数据,然后,服务器根据所有OSD的扫描结果进行一致性校验,确定出哪些OSD发生了数据丢失,以及具体丢失了哪些对象的哪些数据。其实现原理为:如果所有OSD的硬盘中仅保存有一个对象的M+N-i份数据,则表明该对象的另外i份数据丢失,通过查找该对象的元数据信息,可以确定丢失的i份数据本应存储在哪些OSD的上以及各自在对应OSD上的存储位置。
上述恢复OSD上丢失数据的技术方案,由于需要扫描所有OSD上存储的所有对象,运算量很大,且耗时很长。
发明内容
本发明实施例提供一种数据恢复方法及对象存储设备,用于解决现有技术中恢复OSD上的丢失数据时效率低下,耗时过长的问题。
第一方面,本发明实施例提供了一种数据恢复方法,所述方法应用于对象存储系统中,所述对象存储系统包括多个对象存储设备OSD,所述方法由第一OSD执行,所述第一OSD包括硬盘;所述方法包括:
确定所述第一OSD丢失待写入所述第一OSD的硬盘的数据;
向所述多个OSD中除所述第一OSD之外的其他OSD发送请求报文;
接收所述其他OSD发送的所述请求报文的响应消息,所述响应消息携带有在设定时长内写入所述其他OSD的数据的信息,所述数据的信息包括与所述待写入所述第一OSD的硬盘的数据属于同一数据对象的其他数据;
根据所述接收到的其他OSD的数据的信息在所述第一OSD的硬盘中恢复所述待写入所述第一OSD的数据。
基于第一方面,在第一方面的第一种可能的实现方式中,所述第一OSD还包括非易失性双列插入式记忆模块NVDIMM,所述NVDIMM中保存有所述待写入所述第一OSD的硬盘的数据;所述确定所述第一OSD丢失待写入所述第一OSD的硬盘的数据,包括:
在将所述待写入所述第一OSD的硬盘的数据从所述NVDIMM写入所述第一OSD的硬盘时,确定所述第一OSD发生故障。
第二方面,本发明实施例提供了一种数据恢复方法,所述方法应用于对象存储系统中,所述对象存储系统包括多个对象存储设备OSD,所述方法由第二OSD执行,包括:
接收第一OSD发送的请求报文;
向所述第一OSD发送所述请求报文的响应消息,所述响应消息携带有所述第二OSD在设定时长内保存的数据的信息,所述数据的信息包括目标数据,所述目标数据与所述第一OSD中保存的数据属于同一个数据对象。
基于第二方面,在第二方面的第一种可能的实现方式中,所述方法还包括:
接收所述目标数据;
将所述目标数据,以及所述目标数据所属的所述数据对象的标识保存在所述数据的信息中。
第三方面,本发明实施例提供了一种对象存储设备,所述对象存储设备OSD运行于对象存储系统中,所述对象存储系统包括多个OSD,所述OSD包括:
接口,用于与所述多个OSD中的其它OSD进行交互;
硬盘,用于存储数据对象的数据;
处理器,分别与所述接口以及所述硬盘相连,用于确定所述OSD丢失待写入所述OSD的硬盘的数据;以及控制所述接口向所述多个OSD中除所述OSD之外的其他OSD发送请求报文;以及控制所述接口接收所述其他OSD发送的所述请求报文的响应消息,所述响应消息携带有在设定时长内写入所述其他OSD的数据的信息,所述数据的信息包括与所述待写入所述OSD的硬盘的数据属于同一数据对象的其他数据;以及根据所述接收到的其他OSD的数据的信息在所述OSD的硬盘中恢复所述待写入所述OSD的数据。
基于第三方面,在第三方面的第一种可能的实现方式中,所述对象存储设备还包括:
非易失性双列插入式记忆模块NVDIMM,所述NVDIMM中保存有所述待写入所述OSD的硬盘的数据;
所述处理器具体用于:在将所述待写入所述OSD的硬盘的数据从所述NVDIMM写入所述OSD的硬盘时,确定所述OSD发生故障。
第四方面,本发明实施例提供了一种对象存储设备,所述对象存储设备OSD运行于对象存储系统中,所述对象存储系统包括多个OSD,所述OSD包括:
硬盘,用于存储数据对象的数据
接口,用于接收所述多个OSD中除所述OSD之外的第一OSD发送的请求报文;
处理器,分别与所述硬盘及所述接口相连,用于从所述硬盘保存的数据中确定出目标数据,所述目标数据与所述第一OSD中保存的数据属于同一个数据对象;并控制所述接口向所述第一OSD发送所述请求报文的响应消息,所述响应消息携带有所述OSD在设定时长内保存的数据的信息,所述数据的信息包括所述目标数据。
基于第四方面,在第四方面的第一种可能的实现方式中,所述接口还用于接收所述目标数据;
所述处理器还用于:将所述目标数据,以及所述目标数据所属的所述数据对象的标识保存在所述数据的信息中。
本发明实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
本发明实施例提供的技术方案中,第一OSD在检测到因自身故障导致待写入第一OSD的硬盘的数据发生丢失时,向对象存储系统中除自身之外的其它OSD发送请求报文,以获取其它OSD存储的与待写入第一OSD的硬盘的数据属于同一数据对象的其他数据,然后根据其他OSD返回的与待写入第一OSD的硬盘的数据属于同一数据对象的其他数据,计算出第一OSD丢失的待写入第一OSD的硬盘的数据,将计算出的数据写入第一OSD的硬盘,实现在第一OSD的硬盘中恢复丢失的数据。本发明实施例提供的技术方案中,发生数据丢失的OSD仅需要获取设定时长内写入其他OSD的数据的信息,由于设定时长内写入其它OSD的数据占其它OSD保存的数据的很小一部分,与现有技术中需要扫描每个OSD的硬盘上的全部对象数据才能确定出第一OSD上的丢失数据相比,数据扫描量大大减少,恢复丢失数据的耗时缩短,效率提高。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的数据恢复方法的流程示意图;
图2为本发明实施例提供的另一数据恢复方法的流程示意图;
图3为本发明实施例提供的对象存储设备300的结构示意框图;
图4为本发明实施例提供的对象存储设备400的结构示意框图。
具体实施方式
为了更好地理解本发明,首先介绍本发明实施例提供的数据恢复方法中涉及的对象存储系统。对象存储系统的组成部分包括:对象存储设备OSD、元数据服务器(MetadataServer,MDS)、对象存储系统的客户端。
其中,OSD自身具有处理器、内存、硬盘和网络接口,因此,OSD不仅能够存储对象数据,还能够利用自身的CPU和内存优化数据分布,并支持数据的预取,以及管理存储在其上对象的元数据。而对象存储系统的客户端上运行有文件系统,负责将用户对文件的操作请求进行解析,通过与OSD和MDS的通信,完成用户所请求的操作。MDS为客户端提供元数据,有效支持客户端访问OSD上的对象。
为了保证OSD存储的对象数据的可靠性,对于一个对象,采用擦除码的方式对其进行存储,即:将一个对象划分为N个等长的数据块,并通过编码计算生成M个校验数据块,将这个M+N份数据分别存放到M+N个不同的OSD上,从这M+N份数据中取出任意的M+N-i份数据,均可计算出余下的i份数据的数值,其中,i的取值不大于校验数据块的个数M。
实际情况中,在将数据写入到OSD的硬盘时,OSD可能会出现故障,如OSD的内存出现故障,导致本应存储在OSD的硬盘上的数据丢失。在这种情况下,发生NVDIMM故障的OSD并不知道自己到底丢失了哪些数据,现有技术中需要扫描所有OSD上存储的全部对象数据并进行一致性校验,才能确定出具体是哪些OSD丢失了哪些数据。但是扫描所有OSD上存储的全部对象数据将耗费大量的时间,效率很低。
为了解决现有技术中恢复OSD丢失的数据时效率低下,耗时过长的问题,本发明实施例提供了一种数据恢复方法,所述方法应用于对象存储系统中,所述对象存储系统包括多个对象存储设备OSD,所述方法由第一OSD执行,所述第一OSD包括硬盘;所述方法包括:确定所述第一OSD丢失待写入所述第一OSD的硬盘的数据;向所述多个OSD中除所述第一OSD之外的其他OSD发送请求报文;接收所述其他OSD发送的所述请求报文的响应消息,所述响应消息携带有在设定时长内写入所述其他OSD的数据的信息,所述数据的信息包括与所述待写入所述第一OSD的硬盘的数据属于同一数据对象的其他数据;根据所述接收到的其他OSD的数据的信息在所述第一OSD的硬盘中恢复所述待写入所述第一OSD的数据。
本发明实施例提供的技术方案中,发生数据丢失的OSD仅需要获取设定时长内写入其他OSD的数据的信息,由于设定时长内写入其它OSD的数据占其它OSD保存的数据的很小一部分,与现有技术中需要扫描每个OSD的硬盘上的全部对象数据才能确定出第一OSD上的丢失数据相比,数据扫描量大大减少,恢复丢失数据的耗时缩短,效率提高。
下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解本发明实施例以及实施例中的具体特征是对本发明技术方案的详细的说明,而不是对本发明技术方案的限定,在不冲突的情况下,本发明实施例以及实施例中的技术特征可以相互组合。
参照图1,为本发明实施例提供的数据恢复方法的流程示意图,该流程包括如下步骤:
步骤101:确定第一OSD丢失待写入第一OSD的硬盘的数据。
具体的,第一OSD为对象存储系统中的任一OSD,在将数据写入第一OSD的硬盘时,先要将数据写入第一OSD的数据缓存装置,然后再将数据从第一OSD的缓存装置写入第一OSD的硬盘。在这个过程中,如果有相关的硬件出现故障,将导致待写入第一OSD的硬盘的数据丢失。
例如,在将数据写入第一OSD的数据缓存装置后,且在将数据从第一OSD的数据缓存装置写入第一OSD的硬盘之前,数据缓存装置出现故障,将导致第一OSD丢失待写入第一OSD的硬盘的数据。具体实施时,数据缓存装置可以为第一OSD的内存,内存出现故障的情况可以为:断电导致内存中数据丢失,或者内存空间不足导致内存崩溃,等等。
为了保证在第一OSD发生数据丢失时,能够对丢失的数据进行恢复,本发明实施例中,第一OSD在检测到会导致待写入第一OSD的硬盘的数据发生丢失的硬件故障时,即执行步骤102~104,对第一OSD中可能丢失的数据进行恢复。
实际情况中,第一OSD在出现可能会导致数据丢失的硬件故障时,并不能确定是否有数据丢失,只有在执行数据恢复流程的过程中才能确定是否有数据丢失,因此,本发明实施例中,第一OSD在检测到可能会导致数据丢失的硬件故障时,先认定发生了数据丢失,执行步骤102~104,进行数据恢复,在这个过程中,如果确定出的确有数据丢失,则对其进行恢复;如果确定第一OSD没有丢失数据,则终止数据恢复流程。
步骤102:向多个OSD中除第一OSD之外的其他OSD发送请求报文。
具体的,第一OSD向对象存储系统中除自身之外的每一个OSD发送请求报文,请求报文中至少携带有第一OSD的标识,以便接收请求报文的OSD确定返回响应消息时的路径。为了便于描述,本发明实施例以下内容中将对象存储系统中除第一OSD之外的OSD中的任意一个OSD称为第二OSD。
另外,请求报文中还携带有表明第一OSD所请求获取的内容的信息。本发明实施例中,为了恢复丢失的数据,第一OSD向第二OSD请求获取的内容为:与丢失的待写入第一OSD的硬盘的数据属于同一数据对象的其他数据,为了便于描述,本发明实施例以下内容中将“丢失的待写入第一OSD的硬盘的数据所属的数据对象”称为受损数据对象。
在具体实施时,步骤102可以有以下两种实现方式:
方式1,第一OSD向第二OSD发送请求报文,请求获取在设定时长内写入第二OSD的目标数据,目标数据为目标数据对象的存储在第二OSD中的数据,目标数据对象为将将自身的M+N份数据中的一份数据存储在第一OSD之中,且将M+N份数据中的另一份数据存储在第二OSD中的数据对象。
由于一个数据对象在存储数据时,将数据分为M+N份,分别写入M+N个OSD上,因此,在向第一OSD写入一数据对象的数据时,同时还将该数据对象的其余M+N-1份数据写入了M+N-1个除第一OSD之外的OSD。所以,在对象存储系统中,除第一OSD之外的第二OSD中一定会存在OSD保存有目标数据对象的数据,即目标数据。
这些保存有目标数据的第二OSD在接收到第一OSD发送的请求报文之后,会将目标数据返回给第一OSD,第一OSD根据所有返回的目标数据即可恢复自身丢失的待写入第一OSD的硬盘的数据,这是因为丢失的待写入第一OSD的硬盘的数据所属的数据对象的其它M+N-1份数据必然在返回的目标数据之中。第一OSD根据这M+N-1份数据,利用擦除码算法即可确定出第一OSD中丢失的那份数据的数值。而如果接收请求报文的第二OSD在设定时长内没有存储目标数据,则其可以不向第一OSD返回响应消息。
其中,设定时长内写入第二OSD的目标数据,指的是从接收到请求报文时往前追溯设定时长,在这段时间内写入第二OSD的目标数据。由于第一OSD因硬件故障导致数据丢失时,因本次硬件故障而丢失的数据应当是较近的一段时间内存储在对象存储系统中的数据对象所属的数据,换言之,要恢复因本次硬件故障而丢失的数据,只需要获取较近的时间段内写入第二OSD的目标数据即可。设定时长的取值可以根据对象存储系统的具体应用环境进行设置,例如,在第一OSD按照设定时长T1周期性地检查自身的数据缓存装置是否出现故障时,设定时长应当大于T1,以保证所有可能会受到本次数据缓存装置故障而丢失的数据均能够被恢复。
方式2,首先,第一OSD向第二OSD发送请求报文,请求获取设定时长之内写入第二OSD的目标数据所属的目标数据对象的标识。
可选的,第一OSD向第二OSD发送请求报文,请求获取设定时长之内写入第二OSD的数据所属的数据对象的标识,其中自然包括有目标数据对象的标识。这种处理方式虽然可能会导致占用的带宽稍微变大,但是,第二OSD不需要从设定时长内写入第二OSD的所有数据中确定出目标数据,可以减小第二OSD的运算量,由于第二OSD的数量众多,可以节约很多运算能力。
然后,第一OSD接收设定时长内写入的数据中包含目标数据的第二OSD返回的目标数据对象的标识。
然后,第一OSD扫描自身硬盘上的数据,以确认针对返回的每一个标识对应的目标数据对象,是否在自身硬盘上保存有该目标数据对象的数据。
如果针对标识为A的目标数据对象,没有在第一OSD的硬盘上扫描到目标数据对象A的数据,则表明目标数据对象A的存储在第一OSD上的数据为第一OSD丢失的待写入第一OSD的硬盘的数据。
然后,第一OSD再次向保存有目标数据对象A的第二OSD发送请求报文,请求获取该第二OSD中保存的目标数据对象A的数据。
其中,设定时长的含义与前述方式1中相同,在此不再重复。
上述方式1、方式2的区别在于:
其一,发送请求报文的次数不同。方式1中第一OSD只需要向除第一OSD之外的每个OSD发送一次请求报文;而方式2中,第一OSD需要先向除自身之外的所有OSD发送请求报文,在根据返回的响应信息确定出的丢失的待写入第一OSD的硬盘的数据之后,再次向存储有受损数据对象的数据的OSD发送请求报文,请求获取该OSD中保存的受损数据对象的数据。
其二,占用带宽不同。方式1中,由于第一OSD请求获取存储有目标数据的第二OSD中存储的目标数据,对应的第二OSD在返回响应消息时需要发送所有的目标数据的数值;而在方式2中,第一OSD在发送第一次请求报文时,只是获取每个第二OSD中的目标数据对象的标识,由于标识的数据量很小,所以在第二OSD返回响应消息占用带宽极小,而在第一OSD发送第二次请求报文时,只是向存储有受损数据对象的数据的第二OSD发送请求,而且请求的内容只是受损对象的数据,由于存储有目标数据的第二OSD中只有少部分OSD存储有受损对象的数据,而且对应第二OSD返回数据时,只返回受损对象的数据,因此,相对于方式1,方式2中传输的数据量很小,占用带宽较小。
简言之,采用方式1时,第一OSD向所有第二OSD发送请求报文,获取与自身丢失的数据可能相关的所有目标数据;而采用方式2时,第一OSD先向所有第二OSD发送请求报文,以根据第二OSD返回的响应消息确定出自身具体丢失了哪些数据对象的数据,即确定出受损数据对象,然后,再进一步向保存有受损数据对象的第二OSD发送请求报文,请求获取该第二OSD保存的受损对象的数据。
步骤103:接收其他OSD发送的请求报文的响应消息,响应消息携带有在设定时长内写入其他OSD的数据的信息,数据的信息包括与待写入第一OSD的硬盘的数据属于同一数据对象的其他数据。
具体的,针对步骤102采用方式1的情形,保存有目标数据的第二OSD会向第一OSD发送响应消息,响应消息中携带有在设定时长内写入第二OSD的数据的信息,数据的信息中包含在设定时长内写入该第二OSD的目标数据,其中自然包括有第一OSD丢失的待写入第一OSD的硬盘的数据所属的数据对象(即,受损数据对象)的存储在该第二OSD上的数据。
可选的,所述数据的信息中包含设定时长内写入第二OSD的所有数据的数值,这种处理方式虽然可能会占用较大的带宽,但是,第二OSD不需要从设定时长内写入第二OSD的所有数据中确定出目标数据,可以减小第二OSD的运算量,由于第二OSD的数量众多,可以节约很多运算能力。
针对步骤102采用方式2的情形,保存有受损数据对象的数据的第二OSD会在接收第一OSD发送的第二次请求报文后,返回针对该请求报文的响应消息,响应消息中携带有在设定时长内写入第二OSD的数据的信息,数据的信息中包含在设定时长内写入该第二OSD的受损数据对象的数据。
步骤104:根据接收到的其他OSD的数据的信息在第一OSD的硬盘中恢复待写入第一OSD的数据。
具体的,针对步骤102采用方式1的情形,第一OSD在接收到的其他OSD的所述数据的信息之后,首先要根据所述数据的信息确定出第一OSD中丢失了哪些数据对象的数据,即确定出受损数据对象。其实现方式为:第一OSD接收的所述数据的信息中包括目标数据,对应的,可以确定出所有的目标数据对象,然后第一OSD扫描自身的硬盘,确定出自身硬盘上没有保存对应数据的目标数据对象,确定出的第一OSD的硬盘中没有保存对应数据的目标数据对象即为受损数据对象,受损数据对象的应保存在第一OSD中的数据即为第一OSD丢失的待写入第一OSD的硬盘的数据。
然后,第一OSD根据接收的受损数据对象的数据计算出该受损数据对象的存储在第一OSD中的数据的数值,其实现方式参照现有技术中利用擦除码算法计算数据对象的一份数据的技术方案,本发明实施例不再详述。
然后,第一OSD将计算出的数据写入第一OSD的硬盘,而数据在第一OSD的硬盘中的写入位置,可以通过两种方式进行确定:
其一,对象存储系统包括一个管理元数据信息的设备,该设备中保存有数据对象的每份数据在对应OSD的硬盘中存储位置的信息,第一OSD向该设备发送请求报文,请求获取受损数据对象的保存在第一OSD的数据在第一OSD硬盘中的存储位置的信息;
其二,对象存储系统中的每个OSD保存有一个操作对象列表,每当向该OSD中写入数据时,会在该操作对象列表中添加该数据的表项,该数据的表项中包含写入数据的标识以及该数据所属的数据对象的每份数据在对应OSD的硬盘中的存储位置。第二OSD在向第一OSD返回响应消息时,响应消息中携带有设定时长内写入第二OSD的数据的信息,所述数据的信息除了包括第二OSD中的目标数据,还包括有目标数据所属的目标数据对象的保存在第一OSD中的数据在第一OSD的硬盘中的存储位置的信息。第一OSD根据接收的第二OSD的响应消息中携带的存储位置的信息即可确定出丢失数据在第一OSD的硬盘中的存储位置。
而针对步骤102采用方式2的情形,由于在执行步骤102时已经确定出受损数据对象,第一OSD在接收到的其他OSD的所述数据的信息之后,直接根据第二OSD返回的受损对象存储在第二OSD中的数据,利用擦除码算法计算出该受损对象存储在第一OSD中的数据的数值。然后,第一OSD将计算出的数据写入第一OSD的硬盘,数据在第一OSD的硬盘中的写入位置的确定方式同样可以采用上述两种方式中的任意一种,在此不再重复。
另外,理想情况下,针对一个丢失数据(或受损数据对象),第一OSD可以获取到M+N-1份对应数据,但是,实际情况中,可能有两个或以上的OSD由于发生NVDIMM故障而导致数据丢失,因此,在有i个OSD丢失了同一数据对象的数据时,第一OSD还是可以获取到M+N-i份数据,只要i的值不大于校验数据块的个数M,第一OSD仍然可以根据这M+N-i份数据确定出丢失数据的数值。
上述数据恢复方法中,第一OSD在检测到因自身故障导致待写入第一OSD的硬盘的数据发生丢失时,向对象存储系统中除自身之外的其它OSD发送请求报文,以获取其它OSD存储的与待写入第一OSD的硬盘的数据属于同一数据对象的其他数据,然后根据其他OSD返回的与待写入第一OSD的硬盘的数据属于同一数据对象的其他数据,计算出第一OSD丢失的待写入第一OSD的硬盘的数据,将计算出的数据写入第一OSD的硬盘,实现在第一OSD的硬盘中恢复丢失的数据。
本发明实施例中,发生数据丢失的OSD仅需要获取设定时长内写入其他OSD的数据的信息,由于设定时长内写入其它OSD的数据占其它OSD保存的数据的很小一部分,与现有技术中需要扫描每个OSD的硬盘上的全部对象数据才能确定出第一OSD上的丢失数据相比,数据扫描量大大减少,恢复丢失数据的耗时缩短,效率提高。
另外,在本发明实施例提供的数据恢复方法的一种优选实施方式中,第二OSD只需要向第一OSD返回与第一OSD相关的数据(即,目标数据)的信息,从而可以减小数据传输量,减小第二OSD返回响应消息时占用的带宽。
可选的,本发明实施例中,如果第二OSD中保存有目标数据对象的保存在第一OSD中的数据在第一OSD的硬盘中的存储位置的信息,则第二OSD可以向第一OSD返回该存储位置的信息,第一OSD可以根据该存储位置的信息来确定第一OSD丢失了哪些数据对象的数据,即,确定出受损数据对象。其实现方式为:如果第二OSD返回的消息表明第一OSD的硬盘上的存储位置1为保存目标数据对象A的数据,第一OSD检查自身硬盘上的存储位置1是否保存有目标数据对象A的数据,如果保存有,则表明目标数据对象A的数据没有丢失,反之,则表明第一OSD丢失了目标数据对象A的数据。通过这种方式能够提高第一OSD确定受损数据对象的效率。
可选的,本发明实施例中,第一OSD还包括非易失性双列插入式记忆模块NVDIMM,NVDIMM中保存有待写入第一OSD的硬盘的数据。步骤101:确定第一OSD丢失待写入第一OSD的硬盘的数据,包括:
在将待写入第一OSD的硬盘的数据从NVDIMM写入第一OSD的硬盘时,确定第一OSD发生故障。
具体的,NVDIMM又称为超级内存,能够在完全断电的时候依然保存完整内存数据。在向第一OSD包括NVDIMM时,在向第一OSD写入数据时,先将数据写入第一OSD的NVDIMM,之后就返回业务成功,后续由事务来保证数据从第一OSD的NVDIMM写到OSD的硬盘中,进而提高数据的写入效率。
然而,在实际使用中,NVDIMM虽然不会因为断电而丢失数据,但是可能会因为其它的故障(例如,因内存不足导致崩溃)导致数据丢失。因此,在数据写入NVDIMM之后,且在将数据从NVDIMM写入第一OSD的硬盘之前,如果NVDIMM发生故障,导致NVDIMM中保存的待写入第一OSD的硬盘的数据丢失,将导致将该数据写入第一OSD的硬盘失败,第一OSD丢失了该待写入第一OSD的硬盘的数据,导致该数据所属的数据对象受损。
本发明实施例中,通过在第一OSD引入NVDIMM,提高数据的写入效率,而在检测到NVDIMM出现故障时,确定第一OSD丢失待写入第一OSD的硬盘的数据,即执行步骤102~104的流程,对第一OSD丢失的数据进行恢复。
可选的,本发明实施例中,第一OSD周期性地检查NVDIMM是否出现故障。其中NVDIMM的检查周期T1应当小于前述设定时长,以保证所有可能会受到本次NVDIMM故障的数据都能被恢复。
基于相同的发明构思,本发明实施例提供了一种数据恢复方法,由对象存储系统中的第二OSD执行。参照图2,为该数据恢复方法的流程示意图,该流程包括如下步骤:
步骤201:接收第一OSD发送的请求报文;
步骤202:向第一OSD发送请求报文的响应消息,响应消息携带有第二OSD在设定时长内保存的数据的信息,数据的信息包括目标数据,该目标数据与第一OSD中保存的数据属于同一个数据对象。
具体的,第一OSD为对象存储系统中发生数据丢失的OSD,第二OSD为对象存储系统中除第一OSD之外的其它OSD中的任一OSD。第一OSD在发生数据丢失,向其它OSD发送请求报文,获取第一OSD丢失的数据所属数据对象的存储在第二OSD中的数据。
第二OSD接收到第一OSD的请求报文之后,首先要判断自身是否在设定时长内写入有目标数据(目标数据及目标数据对象的定义与前述实施例相同),如果保存有目标数据,则向第一OSD返回响应消息,响应消息中携带有设定时间内写入第二OSD的目标数据,其中自然包含有第一OSD丢失的数据所属数据对象的存储在第二OSD中的数据。而如果第二OSD判断出在设定时长内自身没有写入目标数据,可以不向第一OSD返回响应消息。
本发明实施例中,第二OSD在接收到第一OSD的请求报文之后,向第一OSD返回设定时长内写入第二OSD的目标数据,能够极大的减小数据传输时占用的带宽和数据扫描量。首先,第二OSD向第一OSD返回的信息中只包含目标数据的信息,而目标数据是第二OSD存储的数据中的很小一部分,相对于现有技术中需要扫描每个OSD的所有数据,数据扫描量大大减小。其次,第二OSD向第一OSD返回的信息是设定时长内写入第二OSD的数据的信息,设定时长内的数据是第二OSD存储的数据中的很小一部分,且是第二OSD中全部与第一OSD丢失的数据可能县官的数据,减少了无关数据的传输,减小了数据传输所占带宽。
可选的,本发明实施例中,数据恢复方法还包括如下步骤:
接收目标数据;
将目标数据,以及目标数据所属的数据对象的标识保存在数据的信息中。
具体的,在向第二OSD中写入数据时,对象存储系统中的客户端向第二OSD发送写数据请求,写数据请求中携带有待写入的数据,第二OSD接收数据,将数据写入第二OSD的硬盘,同时,第二OSD会保存写入数据所属数据对象的信息,包括该数据对象的标识,以便在其他OSD需要恢复丢失数据向第二OSD发送请求报文,第二OSD能够根据保存的数据对象的信息确定出自身保存的目标数据,进而向第一OSD返回设定时长内写入第二OSD的目标数据。
可选的,第二OSD中保存有操作对象列表,表中的一个表项包含写入第一OSD的数据所属数据对象的信息,包括:数据对象的标识、保存数据对象的每份数据的OSD的标识。第二OSD在向第一OSD返回响应消息时,可以在响应消息中携带目标数据对象的标识,以便第一OSD根据目标数据对象的标识及硬盘扫描结果确定出受损数据对象。
优选的,操作对象列表中的一个表项还包含有数据对象的每份数据在对应OSD的硬盘中的存储位置的信息。第二OSD在向第一OSD返回响应消息时,可以在响应消息中携带目标数据保存在第一OSD中的数据在第一OSD的硬盘中的存储位置的信息,以便第一OSD通过检查对应位置是否保存有目标对象的数据来确定出受损数据对象,以及在该对应位置处写入恢复后的数据。
优选的,第二OSD的操作对象列表保存在第二OSD的NVDIMM之中,在将一数据写入第二OSD的NVDIMM之后,即在第二OSD的NVDIMM保存的操作队对象列表中增加该数据的表项。
优选的,第二OSD保存的操作对象列表中的每一个表项在创建时均设置有一个定时器,当定时器到达时,从操作对象列表中,删除该表项,其中,该定时器的时长即为前述设定时长。通过给每个表项设置定时器,能够在保证操作对象列表中保存有最近写入的数据的信息的同时,减少操作对象列表中表项的个数,不仅能够减轻第二OSD维护操作对象列表的负担,还能够减少第一OSD进行数据恢复时的数据扫描量以及数据传输量。
为了便于理解本发明实施例提供的数据恢复方法,
可选的,设定时长大于等于第一OSD检查NVDIMM故障的周期T1与数据从写入第一OSD的NVDIMM到写入第一OSD的硬盘的耗时T2之和。
可选的,在执行步骤102~104对第一OSD上的丢失数据进行恢复时,可能由于其它OSD中有OSD并未及时响应请求报文,没有返回响应消息,或者其返回的响应消息中携带的受损数据对象的数据损坏,导致无法确定出丢失数据的数据,导致第一OSD恢复丢失数据失败。这些恢复失败的丢失数据形成恢复失败列表,第一OSD将周期性地对恢复失败列表中的丢失数据进行恢复。
即:如果第一OSD将丢失数据的数值写入第一OSD的硬盘失败,则在第二设定时长之后,再次执行步骤102~104,对丢失数据进行恢复。
具体的,第二设定时长的取值可以综合分布式对象存储系统中的OSD间的网络连接质量、受损对象恢复失败出现的几率、第一OSD的运算能力等因素来进行设置。针对恢复失败列表中的丢失数据,第一OSD将按照第二设定时长周期性地执行步骤102~104,以对其进行恢复,如果回复成功,将丢失数据的数值写入其对应的存储位置之后,则将该丢失数据从恢复失败列表中删除,如果再次恢复失败,则在第二设定时长之后的时间点再次对其进行恢复。
可选的,如果第一OSD将丢失数据的数值写入第一OSD的硬盘失败的次数达到设定阈值,则第一OSD向用户发送告警信息。
具体的,如果恢复失败列表中有丢失数据的恢复流程执行失败的次数达到设定阈值,表明第一OSD无法恢复丢失数据,则应当向用户发送告警信息,提示用户在写入一数据对象的数据时,其中写入第一OSD的对象数据无法正确写入,以使用户能够及时解决故障,避免造成损失。
可选的,如果因为有第二OSD没有发送返回报文,导致确定丢失数据失败,或者,如果因为有第三OSD没有发送返回报文,导致恢复丢失数据失败,第一OSD可以请求主服务器,让主服务器采用现有技术中扫描分布式对象存储系统中的每个OSD的全部对象数据的方式,来对丢失数据进行恢复。
下面结合具体应用实例对本发明实施例提供的方法进行详细介绍。
对象存储系统在存储数据对象1时,将数据对象1的数据等分为N份,并根据这N份数据生成了M份校验数据,将这M+N份数据分别存储在OSD1至OSDM+N之中。其中的OSD1在存储数据对象1的数据时,在将该数据写入OSD1的NVDIMM时,在OSD1的操作对象列表中增加了一条数据对象1的表项,该表项中包含有数据对象1的标识,以及数据对象1的M+N份数据各自对应的OSD的标识,以及每份数据在对应OSD的硬盘上的存储位置的偏移量。
但是,在数据对象1的数据从OSD1的NVDIMM写入OSD1的硬盘之前,OSD1的NVDIMM发生故障,NVDIMM上存储的包括数据对象1的数据以及操作对象列表均丢失,无法将数据对象1的数据写入OSD1的硬盘。而且,由于存储在OSD1的NVDIMM中的操作对象列表也一并丢失,OSD1并不知道自身是否有数据丢失,以及丢失的是哪个对象的数据。
OSD1在周期性检查NVDIMM故障时,检查到自身的NVDIMM故障,为了确定出丢失数据,OSD1向对象存储系统中除OSD1之外的每个OSD发送请求报文。
对象存储系统中除OSD1之外的每个OSD接收到OSD1发送的请求报文,检查设定时长内自身是否写入有目标数据,其实现方式可以是查询自身保存的操作对象列表中的数据对象的信息,如果操作对象列表中有数据对象将自身的一份数据保存在OSD1,则表明该数据对象为目标数据。其中,每个OSD保存的操作对象列表中每个表项的存在周期即为设定时长。
由于OSD2~OSDM+N各自保存的操作对象列表中均包含有数据对象1的表项,因此,OSD2~OSDM+N均确定自身保存的数据对象1的数据为目标数据,均向OSD1返回响应消息,在响应消息中携带各自保存的数据对象1的数据。
另外,OSD2~OSDM+N保存的操作对象列表中还包括数据对象1的存储在OSD1中的数据在OSD1的硬盘中的存储位置的信息,OSD2~OSDM+N向OSD1返回的响应消息中还包括该存储位置的信息。
OSD1接收到OSD2~OSDM+N返回的响应消息后,检查自身硬盘上该存储位置的信息对应的存储位置处是否保存有数据对象1的数据,发现没有数据对象1的数据,确定自身丢失了数据对象1的数据。
然后,OSD1根据OSD2~OSDM+N返回的响应消息中携带的数据对象1的其它M+N-1份数据,利用擦除码算法计算出数据对象1的保存在OSD1中的数据的数值。然后,将计算出的数值写入自身硬盘上的与该存储位置的信息对应的存储位置处,恢复之前丢失的数据对象1的数据。
基于相同的发明构思,本发明实施例提供了一种对象存储设备300,对象存储设备300运行于对象存储系统中,对象存储系统包括多个OSD,参照图3,对象存储设备300包括:总线301,以及分别连接到总线301的处理器302、硬盘303、接口304。
其中,接口304用于与多个OSD中的其它OSD进行交互;硬盘303用于存储数据对象的数据。
处理器302用于:确定OSD300丢失待写入OSD的硬盘303的数据;以及控制接口304向多个OSD中除OSD300之外的其他OSD发送请求报文;以及控制接口304接收其他OSD发送的请求报文的响应消息,响应消息携带有在设定时长内写入其他OSD的数据的信息,数据的信息包括与待写入OSD的硬盘的数据属于同一数据对象的其他数据;以及根据接收到的其他OSD的数据的信息在OSD300的硬盘303中恢复待写入OSD的数据。
可选的,继续参照图3,对象存储设备300还包括:
非易失性双列插入式记忆模块NVDIMM305,NVDIMM305中保存有待写入OSD300的硬盘303的数据;
处理器302具体用于:在将待写入OSD300的硬盘303的数据从NVDIMM写入OSD300的硬盘303时,确定OSD300发生故障。
本实施例中的对象存储设备300与图1对应的恢复丢失数据的方法是基于同一发明构思下的两个方面,在前面已经对方法的实施过程作了详细的描述,所以本领域技术人员可根据前述描述清楚地了解本实施例中的对象存储设备300的结构及实施过程,为了说明书的简洁,在此就不再赘述了。
基于相同的发明构思,本发明实施例提供了一种对象存储设备400,对象存储设备400运行于对象存储系统中,对象存储系统包括多个OSD,参照图4,对象存储设备400包括:总线401,以及分别连接到总线401的处理器402、硬盘403以及接口404。
其中,硬盘403用于存储数据对象的数据;接口404用于接收多个OSD中除OSD之外的第一OSD发送的请求报文。
处理器402用于:从硬盘保存的数据中确定出目标数据,目标数据与第一OSD中保存的数据属于同一个数据对象;并控制接口向第一OSD发送请求报文的响应消息,响应消息携带有OSD400在设定时长内保存的数据的信息,数据的信息包括目标数据。
可选的,接口404还用于接收目标数据;
处理器402还用于:将目标数据,以及目标数据所属的数据对象的标识保存在数据的信息中。
本实施例中的对象存储设备400与图2对应的恢复丢失数据的方法是基于同一发明构思下的两个方面,在前面已经对方法的实施过程作了详细的描述,所以本领域技术人员可根据前述描述清楚地了解本实施例中的对象存储设备400的结构及实施过程,为了说明书的简洁,在此就不再赘述了。
基于相同的发明构思,本发明实施例提供了一种对象存储系统,包括前述对象存储设备300和对象存储设备400。
其中,对象存储设备300用于:确定对象存储设备300丢失待写入对象存储设备300的硬盘的数据;向对象存储设备400发送请求报文;
对象存储设备400用于:接收对象存储设备300发送的请求报文;向对象存储设备300发送所述请求报文的响应消息,所述响应消息携带有对象存储设备400在设定时长内保存的数据的信息,所述数据的信息包括目标数据,所述目标数据与对象存储设备300中保存的数据属于同一个数据对象。
对象存储设备300还用于:接收对象存储设备400发送的所述请求报文的响应消息,所述响应消息携带有在设定时长内写入对象存储设备400的数据的信息,所述数据的信息包括与所述待写入对象存储设备300的硬盘的数据属于同一数据对象的其他数据;根据所述接收到的对象存储设备400的数据的信息在对象存储设备300的硬盘中恢复所述待写入对象存储设备300的数据。
可选的,对象存储设备400还用于:接收所述目标数据;将所述目标数据,以及所述目标数据所属的所述数据对象的标识保存在所述数据的信息中。
可选的,对象存储设备300还包括NVDIMM,所述NVDIMM中保存有所述待写入对象存储设备300的硬盘的数据。对象存储设备300还用于:检查所述NVDIMM是否发生故障,以及在检测结果表明所述NVDIMM发生故障时,确定对象存储设备300丢失待写入对象存储设备300的硬盘的数据。
本实施例中的对象存储系统与图1、图2对应的恢复丢失数据的方法是基于同一发明构思下的两个方面,在前面已经对方法的实施过程作了详细的描述,所以本领域技术人员可根据前述描述清楚地了解本实施例中的对象存储系统的实施过程,为了说明书的简洁,在此就不再赘述了。
本发明实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
本发明实施例提供的技术方案中,第一OSD在检测到因自身故障导致待写入第一OSD的硬盘的数据发生丢失时,向对象存储系统中除自身之外的其它OSD发送请求报文,以获取其它OSD存储的与待写入第一OSD的硬盘的数据属于同一数据对象的其他数据,然后根据其他OSD返回的与待写入第一OSD的硬盘的数据属于同一数据对象的其他数据,计算出第一OSD丢失的待写入第一OSD的硬盘的数据,将计算出的数据写入第一OSD的硬盘,实现在第一OSD的硬盘中恢复丢失的数据。本发明实施例提供的技术方案中,发生数据丢失的OSD仅需要获取设定时长内写入其他OSD的数据的信息,由于设定时长内写入其它OSD的数据占其它OSD保存的数据的很小一部分,与现有技术中需要扫描每个OSD的硬盘上的全部对象数据才能确定出第一OSD上的丢失数据相比,数据扫描量大大减少,恢复丢失数据的耗时缩短,效率提高。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (8)
1.一种数据恢复方法,其特征在于,所述方法应用于对象存储系统中,所述对象存储系统包括多个对象存储设备OSD,所述对象存储系统存储的对象数据被划分为N个数据块,并根据所述N个数据块计算M个校验数据块,所述N个数据块以及所述M个校验数据块被分别存放到(M+N)个不同的OSD上,(M+N)个OSD中的每个OSD存放(M+N)个数据块中的一个,根据所述(M+N)个数据块中的(M+N-i)个数据块能够计算余下的i个数据块,i不大于M;所述方法由第一OSD执行,所述第一OSD包括硬盘;所述方法包括:
在所述第一OSD的数据缓存装置发生故障时,确定所述第一OSD丢失待写入所述第一OSD的硬盘的数据,所述数据缓存装置用于保存所述第一OSD的待写入所述第一OSD的硬盘的数据;
向所述多个OSD中除所述第一OSD之外的其他OSD发送请求报文;
接收所述其他OSD发送的所述请求报文的响应消息,所述响应消息携带有在设定时长内写入所述其他OSD的数据的信息,所述数据的信息包括与所述待写入所述第一OSD的硬盘的数据属于同一数据对象的其他数据;
根据所述接收到的其他OSD的数据的信息在所述第一OSD的硬盘中恢复所述待写入所述第一OSD的数据。
2.根据权利要求1所述的方法,其特征在于,所述数据缓存装置包括非易失性双列插入式记忆模块NVDIMM。
3.一种数据恢复方法,其特征在于,所述方法应用于对象存储系统中,所述对象存储系统包括多个对象存储设备OSD,所述对象存储系统存储的对象数据被划分为N个数据块,并根据所述N个数据块计算M个校验数据块,所述N个数据块以及所述M个校验数据块被分别存放到(M+N)个不同的OSD上,(M+N)个OSD中的每个OSD存放(M+N)个数据块中的一个,根据所述(M+N)个数据块中的(M+N-i)个数据块能够计算余下的i个数据块,i不大于M;所述方法由第二OSD执行,包括:
接收第一OSD发送的请求报文;
向所述第一OSD发送所述请求报文的响应消息,所述响应消息携带有所述第二OSD在设定时长内保存的数据的信息,所述数据的信息包括目标数据,所述目标数据与所述第一OSD中保存的数据属于同一个数据对象,以使所述第一OSD根据从包括所述第二OSD在内的多个OSD处接收的所述响应消息在所述第一OSD的硬盘中恢复待写入所述第一OSD的数据。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
接收所述目标数据;
将所述目标数据,以及所述目标数据所属的所述数据对象的标识保存在所述数据的信息中。
5.一种对象存储设备,其特征在于,所述对象存储设备OSD运行于对象存储系统中,所述对象存储系统包括多个OSD,所述对象存储系统存储的对象数据被划分为N个数据块,并根据所述N个数据块计算M个校验数据块,所述N个数据块以及所述M个校验数据块被分别存放到(M+N)个不同的OSD上,(M+N)个OSD中的每个OSD存放(M+N)个数据块中的一个,根据所述(M+N)个数据块中的(M+N-i)个数据块能够计算余下的i个数据块,i不大于M;所述OSD包括:
接口,用于与所述多个OSD中的其它OSD进行交互;
硬盘,用于存储数据对象的数据;
数据缓存装置,用于保存第一OSD的待写入所述第一OSD的硬盘的数据;
处理器,分别与所述接口以及所述硬盘相连,用于在所述OSD的数据缓存装置发生故障时,确定所述OSD丢失待写入所述OSD的硬盘的数据;以及控制所述接口向所述多个OSD中除所述OSD之外的其他OSD发送请求报文;以及控制所述接口接收所述其他OSD发送的所述请求报文的响应消息,所述响应消息携带有在设定时长内写入所述其他OSD的数据的信息,所述数据的信息包括与所述待写入所述OSD的硬盘的数据属于同一数据对象的其他数据;以及根据所述接收到的其他OSD的数据的信息在所述OSD的硬盘中恢复所述待写入所述OSD的数据。
6.根据权利要求5所述的对象存储设备,其特征在于,所述数据缓存装置包括NVDIMM。
7.一种对象存储设备,其特征在于,所述对象存储设备OSD运行于对象存储系统中,所述对象存储系统包括多个OSD,所述对象存储系统存储的对象数据被划分为N个数据块,并根据所述N个数据块计算M个校验数据块,所述N个数据块以及所述M个校验数据块被分别存放到(M+N)个不同的OSD上,(M+N)个OSD中的每个OSD存放(M+N)个数据块中的一个,根据所述(M+N)个数据块中的(M+N-i)个数据块能够计算余下的i个数据块,i不大于M;所述OSD包括:
硬盘,用于存储数据对象的数据;
接口,用于接收所述多个OSD中除所述OSD之外的第一OSD发送的请求报文;
处理器,分别与所述硬盘及所述接口相连,用于从所述硬盘保存的数据中确定出目标数据,所述目标数据与所述第一OSD中保存的数据属于同一个数据对象;并控制所述接口向所述第一OSD发送所述请求报文的响应消息,所述响应消息携带有所述OSD在设定时长内保存的数据的信息,所述数据的信息包括所述目标数据,以使所述第一OSD根据从包括第二OSD在内的多个OSD处接收的所述响应消息在所述第一OSD的硬盘中恢复待写入所述第一OSD的数据。
8.根据权利要求7所述的对象存储设备,其特征在于,所述接口还用于接收所述目标数据;
所述处理器还用于:将所述目标数据,以及所述目标数据所属的所述数据对象的标识保存在所述数据的信息中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510033827.7A CN104598168B (zh) | 2015-01-23 | 2015-01-23 | 一种数据恢复方法及对象存储设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510033827.7A CN104598168B (zh) | 2015-01-23 | 2015-01-23 | 一种数据恢复方法及对象存储设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104598168A CN104598168A (zh) | 2015-05-06 |
CN104598168B true CN104598168B (zh) | 2017-09-29 |
Family
ID=53123995
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510033827.7A Active CN104598168B (zh) | 2015-01-23 | 2015-01-23 | 一种数据恢复方法及对象存储设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104598168B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106469119B (zh) * | 2015-08-10 | 2020-07-07 | 北京忆恒创源科技有限公司 | 一种基于nvdimm的数据写缓存方法及其装置 |
EP3663901B1 (en) | 2017-08-31 | 2022-12-28 | Huawei Technologies Co., Ltd. | Information writing method and device |
CN110096220B (zh) * | 2018-01-31 | 2020-06-26 | 华为技术有限公司 | 一种分布式存储系统、数据处理方法和存储节点 |
CN109003373A (zh) * | 2018-08-22 | 2018-12-14 | 高新兴科技集团股份有限公司 | 智能门禁卡权限管理方法、装置、计算机存储介质及设备 |
CN109144789B (zh) * | 2018-09-10 | 2020-12-29 | 网宿科技股份有限公司 | 一种重启osd的方法、装置及系统 |
CN113316770B (zh) * | 2019-01-25 | 2023-08-22 | 华为技术有限公司 | 数据修复方法和装置 |
CN110085237B (zh) * | 2019-04-29 | 2022-01-07 | 大众问问(北京)信息科技有限公司 | 交互过程的恢复方法、装置及设备 |
CN110515899A (zh) * | 2019-07-31 | 2019-11-29 | 济南浪潮数据技术有限公司 | 文件定位方法及装置 |
CN113821377B (zh) * | 2021-08-27 | 2023-12-22 | 济南浪潮数据技术有限公司 | 一种分布式存储集群的数据恢复方法、系统及存储介质 |
CN115878508A (zh) * | 2021-09-29 | 2023-03-31 | 中兴通讯股份有限公司 | 数据缓存方法、装置、合并存储设备及数据缓存系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7734643B1 (en) * | 2004-06-30 | 2010-06-08 | Oracle America, Inc. | Method for distributed storage of data |
US7865471B1 (en) * | 2006-06-30 | 2011-01-04 | Symantec Operating Corporation | Apparatus and method for accelerating database recovery |
CN102024016A (zh) * | 2010-11-04 | 2011-04-20 | 天津曙光计算机产业有限公司 | 一种分布式文件系统快速数据恢复的方法 |
US8543761B2 (en) * | 2011-04-08 | 2013-09-24 | Lsi Corporation | Zero rebuild extensions for raid |
CN104011642A (zh) * | 2011-11-22 | 2014-08-27 | 森普利维蒂公司 | 将擦除码数据分配到磁盘存储器的方法和装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001356945A (ja) * | 2000-04-12 | 2001-12-26 | Anetsukusu Syst Kk | データバックアップ・リカバリー方式 |
US20060129614A1 (en) * | 2004-12-14 | 2006-06-15 | Kim Hong Y | Crash recovery system and method for distributed file server using object based storage |
US7533330B2 (en) * | 2005-06-27 | 2009-05-12 | Seagate Technology Llc | Redundancy for storage data structures |
-
2015
- 2015-01-23 CN CN201510033827.7A patent/CN104598168B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7734643B1 (en) * | 2004-06-30 | 2010-06-08 | Oracle America, Inc. | Method for distributed storage of data |
US7865471B1 (en) * | 2006-06-30 | 2011-01-04 | Symantec Operating Corporation | Apparatus and method for accelerating database recovery |
CN102024016A (zh) * | 2010-11-04 | 2011-04-20 | 天津曙光计算机产业有限公司 | 一种分布式文件系统快速数据恢复的方法 |
US8543761B2 (en) * | 2011-04-08 | 2013-09-24 | Lsi Corporation | Zero rebuild extensions for raid |
CN104011642A (zh) * | 2011-11-22 | 2014-08-27 | 森普利维蒂公司 | 将擦除码数据分配到磁盘存储器的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104598168A (zh) | 2015-05-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104598168B (zh) | 一种数据恢复方法及对象存储设备 | |
CN107704196A (zh) | 区块链数据存储系统和方法 | |
CN102843396B (zh) | 一种分布式缓存系统中的数据写入及读取方法及装置 | |
CN105912428B (zh) | 实现源数据实时转化为虚拟机镜像的系统及方法 | |
US20190354944A1 (en) | Edit transactions for blockchains | |
CN106610854A (zh) | 一种模型更新方法及装置 | |
CN107741977A (zh) | 用于在应用的后台对动作进行同步的系统和方法 | |
CN107329708A (zh) | 一种分布式存储系统实现缓存数据的方法及系统 | |
CN104794119B (zh) | 用于中间件消息的存储与传输方法及系统 | |
CN107273046B (zh) | 一种基于固态盘阵列的数据处理方法及系统 | |
CN103106124B (zh) | 一种基于纠删码集群存储系统的交叉重构方法 | |
CN106330788B (zh) | 报文分片传输方法和装置 | |
US10585600B2 (en) | Data access method and apparatus | |
CN105868054A (zh) | 一种在双机系统环境下备份数据的方法与设备 | |
CN103986779B (zh) | 一种应用数据传输方法、装置及终端设备 | |
CN106878370A (zh) | 一种本地缓存的更新方法和设备 | |
CN107608627A (zh) | 一种远端数据分级存储方法、电子设备及存储介质 | |
CN103605630A (zh) | 一种虚拟服务器系统及其数据读写方法 | |
CN102314322B (zh) | 一种基于raid阵列的数据处理方法和设备 | |
EP3980955A1 (en) | Subscription to edits of blockchain transaction | |
WO2015087509A1 (ja) | 状態保存復元装置、状態保存復元方法、および、記憶媒体 | |
CN106155835A (zh) | 一种基于同步复制技术的容灾方法 | |
CN103729269A (zh) | 一种基于云架构的网络考试数据双缓存方法 | |
CN105068760B (zh) | 数据存储方法、数据存储装置和存储设备 | |
CN103902232B (zh) | 一种写入的数据的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |