一种对象存储系统中修复副本一致性的方法转让专利

申请号 : CN201010536455.7

文献号 : CN102033786B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 付根希杨浩王勇苗艳超马照云张攀勇

申请人 : 曙光信息产业股份有限公司

摘要 :

本发明提供了一种对象存储系统中修复副本一致性的方法。通过失效记录的方式记载副本间的不一致,由可用副本和失效日志将不一致的副本进行修复在正常的对象数据修改过程中,出现数据不一致时,将不一致的信息记载到对象所有可用副本所在的磁盘设备上,并将故障的对象信息在MDS上进行记录。修复时,MDS将失效的信息发给OSD,OSD根据失效日志,将对象进行一致性修复,且修复时仅影响正在修复对象的修改操作。

权利要求 :

1.一种对象存储系统中修复副本一致性的方法,其特征在于:包括如下步骤:A、多副本中指定一个副本作为主副本,该副本接受对象的修改操作;

B、主副本将修改操作同步给从副本;

C、主副本无法同步给其他从副本时,将该修改操作记录到本地日志中,同时报告MDS该对象的副本不一致,MDS中进行记录,日志中记录修改位置,同时主副本将日志追加到其他可用从副本中,主副本记录对象副本不一致的信息,后续的修改操作直接记录日志中,并且在同步副本时,告知其他副本是否记录日志;

D、当主副本本身故障时,通过换主操作,由MDS从其他可用的从副本中选择新的主副本,如果该对象之前有日志记录,那么新主上一定存在该对象的全部日志记录;

E、当OSD单点故障时,客户端向MDS发出换主请求,如果在OSD故障之前客户端的修改操作没有得到回应,则客户端认为本次修改操作已经造成了副本不一致,则客户端将本次修改信息发给MDS,MDS将修改信息追加给可用副本的日志中,然后再选择新的主副本;

F、当从副本不一致时,启动副本一致性修复过程。

2.如权利要求1所述一种对象存储系统中修复副本一致性的方法,其特征在于:所述F步骤副本一致性修复过程如下:F1、MDS将所有不一致的对象发给主副本所在的OSD;

F2、主副本所在的OSD按照磁盘进行修复,修复一个磁盘时,将磁盘上的日志拷贝到内存中,然后设置日志的模式为修复模式,后续的日志同时追加到磁盘和内存中;

F3、逐个修复该磁盘上的对象;

F4、修复其他磁盘。

3.如权利要求2所述一种对象存储系统中修复副本一致性的方法,其特征在于:所述F3步骤修复过程如下:F31、冻结该对象,阻止新的修改操作;

F32、根据日志记录,逐条应用,如果是写操作,读取本地内容,发给不一致的从副本,如果是截断操作,读取本地的长度,向从副本发送截断操作,如果是删除操作,向从副本发送截断操作;

F33、日志应用完成,向本地和从副本日志中追加无效化日志信息;

F34、向MDS报告对象一致性修复完成;

F35、解冻对象。

4.如权利要求1所述一种对象存储系统中修复副本一致性的方法,其特征在于:日志用于记录副本之间内容的不一致,日志记录逻辑操作,存放在有效副本所在的磁盘上,DS日志中记录的内容是不一致副本出现后该对象上的增量修改操作,不一致的副本是对象在出现不一致时刻的快照,日志中的增量修改操作和有效副本相结合能够快速地使快照与有效副本一致,DS日志存储在对象有效副本所在的磁盘上。

说明书 :

一种对象存储系统中修复副本一致性的方法

技术领域

[0001] 本发明涉及计算机存储领域,具体涉及一种对象存储系统中修复副本一致性的方法。

背景技术

[0002] 在对象存储系统中,多个客户端经常并发地进行对象访问,而对象分散在不同的OSD上,为了提高对象的可靠性、可用性和高效性,往往将对象存储成多个副本,存储在不同的OSD上,这样访问所需的对象时,只需访问其中一个副本,这种机制称为复制机制。多复制主要是为了提高系统的可靠性和可用性,但是复制技术带来的问题是当一个副本发生变化时如何来保持各个副本的一致性,让使用者得到最新的对象更新。
[0003] 目前对象存储系统中处理网络的偶尔断开及磁盘的临时掉线等异常情况时,将未同步的副本视为丢失,通过重建新副本的方式来维持副本的数目,如GFS。在对象较大的情况下,往往拷贝了大量的数据,浪费了系统的带宽。

发明内容

[0004] 本发明目的是提供一种记录操作日志的方式来处理磁盘掉线及网络临时断开等偶发事件引起的副本不一致问题。
[0005] 一种对象存储系统中修复副本一致性的方法,包括如下步骤:
[0006] A、多副本中指定一个副本作为主副本,该副本接受对象的修改操作;
[0007] B、主副本将修改操作同步给从副本;
[0008] C、主副本无法同步给其他从副本时,将该修改操作记录到本地日志中,同时报告MDS该对象的副本不一致,MDS中进行记录,日志中记录修改位置,同时主副本将日志追加到其他可用从副本中,主副本记录对象副本不一致的信息,后续的修改操作直接记录日志中,并且在同步副本时,告知其他副本是否记录日志;
[0009] D、当主副本本身故障时,通过换主操作,由MDS从其他可用的从副本中选择新的主副本,如果该对象之前有日志记录,那么新主上一定存在该对象的全部日志记录;
[0010] E、当OSD单点故障时,客户端向MDS发出换主请求,如果在OSD故障之前客户端的修改操作没有得到回应,则客户端认为本次修改操作已经造成了副本不一致,则客户端将本次修改信息发给MDS,MDS向将修改信息追加给可用副本的日志中,然后再选择新的主副本;
[0011] F、当从副本不一致时,启动副本一致性修复过程。
[0012] 本发明的一种优选技术方案在于:所述F步骤副本一致性修复过程如下:
[0013] F1、MDS将所有不一致的对象发给主副本所在的OSD;
[0014] F2、主副本所在的OSD按照磁盘进行修复,修复一个磁盘时,向将磁盘上的日志拷贝到内存中,然后设置日志的模式为修复模式,后续的日志同时追加到磁盘和内存中;
[0015] F3、逐个修复该磁盘上的对象;
[0016] F4、修复其他磁盘。
[0017] 本发明的一种较优选技术方案在于:所述F3步骤修复过程如下:
[0018] F31、冻结该对象,阻止新的修改操作;
[0019] F32、根据日志记录,逐条应用,如果是写操作,读取本地内容,发给不一致的从副本,如果是截断操作,读取本地的长度,向从副本发送截断操作,如果是删除操作,向从副本发送截断操作;
[0020] F33、日志应用完成,向本地和从副本日志中追加无效化日志信息;
[0021] F34、向MDS报告对象一致性修复完成;
[0022] F35、解冻对象。
[0023] 本发明的又一优选技术方案在于:所述日志用于记录副本之间内容的不一致,日志记录逻辑操作,存放在有效副本所在的磁盘上,DS日志中记录的内容是不一致副本出现后该对象上的增量修改操作,不一致的副本是对象在出现不一致时刻的快照,日志中的增量修改操作和有效副本相结合能够快速地使快照与有效副本一致,DS日志存储在对象有效副本所在的磁盘上。
[0024] 本发明带来的有益效果如下:
[0025] 1、具备在线处理故障。
[0026] 2、能够快速修复副本间的不一致。
[0027] 3、修复时仅影响正在修复的对象。
[0028] 4、能够处理磁盘故障和单点故障,网络故障及磁盘掉线。
[0029] 5、提供较高的读取性能。

附图说明

[0030] 图1为日志示意图
[0031] 图2为使用日志修复图
[0032] 图3为日志磁盘结构图
[0033] 图4为正常修改流程图
[0034] 图5为修改时故障处理图
[0035] 图6为写操作的流程图
[0036] 图7为修复框架图

具体实施方式

[0037] 下面结合附图举例对本发明做更细地描述:
[0038] 图1为系统的日志示例图。
[0039] 在某一个时刻,OSD2与OSD3之间的连接完全断开,当客户端向主副本提交写操作后,主副本无法更新从副本S2,如图中所示,MDS和OSD中需要记载失效记录,其中DS中日志记录如下:
[0040] disk_mst中日志:flag,objidn,diskid_slv2,write range
[0041] disk_slv1中日志:flag,objidn,diskid_slv2,write range[0042] 图2为系统的利用日志修复示例图。
[0043] OSD根据日志中记录的不一致的位置信息,读取本地副本中的内容,发给不一致的从副本,完成数据修复。
[0044] 图3为系统的日志在磁盘上的结构图。
[0045] 日志在副本所在的磁盘上,记录的内容如图所示,
[0046] flag:表示在条日志是否被应用了,用于清理日志;
[0047] objid:表示一个对象;
[0048] diskid:的副本所在的磁盘,同一对象的副本存储在不同的磁盘上,因此objid和diskid唯一确定一个副本;
[0049] modify_ops:表示修改位置,即日志中记录的副本与最新的副本在该位置上有差异。
[0050] 图4为系统的正常写流程图。
[0051] 1客户端初次访问对象时,向MDS获取对象存储位置及副本信息,然后向主副本所在的OSD发送写操作,同时对象的副本信息;
[0052] 2主副本所在的OSD2接到客户端的写请求后,异步发给从副本S1和S2[0053] 3主副本得到所有副本成功应答后,向客户端回应写成功。
[0054] 图5为系统的写操作故障处理流程图。
[0055] 1客户端根据自身缓存的信息向主副本发送写操作,同时携带副本信息;
[0056] 2主副本所在OSD接受数据写操作,并向从副本发送写操作,从副本出现故障时,向MDS报告对象副本状态,同时在可用从副本所在的磁盘上记录操作日志;
[0057] 3应答客户端。
[0058] 图6为系统的写操作处理流程图。
[0059] OSD在写的过程中发现磁盘失效或坏道,向MDS报告,同时本地保存副本的状态,后续的写操作不再发给这些从副本。
[0060] 图7为数据修复的流程图
[0061] 数据修复时,MDS将所有不一致的对象发给主副本所在的OSD;
[0062] OSD按照磁盘进行修复;
[0063] 先将一块磁盘上的日志读入到内存中,然后设置日志的模式为修复模式,后续追加的日志将同时添加到磁盘和内存中;
[0064] OSD逐个修复磁盘上的对象,修复过程如下:
[0065] 冻结该对象,阻止新的修改操作;
[0066] 逐条应用该对象的日志;
[0067] 日志应用完成后,向所有副本发送无效化对象日志信息;
[0068] 向MDS报告对象修复完成;
[0069] 解冻该对象;
[0070] 修复其他对象,直到修复完成所有的对象;
[0071] 修复其他磁盘,直到所有的磁盘修复完成。