一种数据写入、修改及恢复的方法、装置及服务器的制作方法

文档序号:6583986阅读:107来源:国知局
专利名称:一种数据写入、修改及恢复的方法、装置及服务器的制作方法
技术领域
本发明涉及分布式系统技术领域,尤其涉及一种数据写入、修改及恢复的方法、装
置及服务器。
背景技术
随着计算机网络,特别是Internet的迅猛发展,传统的信息系统概念发生了巨大的变化,这些变化突出地表现在信息的存储、传递、发布以及获取方式所发生的革命性变革。与此同时,基于网络的分布式信息系统在各个领域得到了广泛的应用,在整个社会生活中正发挥着日益突出的作用。其中,分布式文件系统开始广泛地应用于存储解决方案中。
分布式文件系统和传统的磁盘阵列在存储方式有很大差别。磁盘阵列采用的是集中存储的方式,所有的数据都集中在同一阵列中,通过控制器和RAID实现数据的备份和恢复。而分布式文件系统则不同,在分布式文件系统中,为了保证数据的可靠性,需要将数据对象进行冗余。 一种典型的方法是在将一个对象复制成多个副本,然后把这些副本存放到不同的对象存储服务器上。 发明人通过研究发现,现有的分布式文件系统中所使用的方法虽然能够保证数据的可靠性,但是也带来一个问题,即副本之间的数据一致性问题。由于各种原因,在分布式系统中可能导致副本的数据不一致,例如在副本上写入数据时出现中断导致某个对象服务器中的某个副本写入不完整但是没有被及时发现;或者,当需要对某个数据进行修改,在对多个对象服务器上的副本进行修改时某个对象服务器上出现故障而导致该对象服务器上的数据修改失败但是没有被及时发现;或者,存储了某个副本的对象服务器发生故障不能正常运转但是没有被及时发现,从而导致没有对其上存储的副本进行及时恢复等等。因为每个分布式文件系统由多个存储节点组成,随着分布式文件系统存储节点数的增多,使得分布式文件系统的规模越来越大。如此庞大的分布式文件系统中存储节点发生故障的概率也越来越大,从而造成同一对象在不同存储节点上副本的数据一致性也越来越难以保证。

发明内容
有鉴于此,本发明实施例的目的在于提供一种数据写入、修改及恢复的方法、装置及服务器,以保证同一个对象在不同存储节点上副本的数据一致性。
为实现上述目的,本发明实施例提供了如下技术方案 —种数据写入方法,用于包括至少两个对象服务器的分布式文件系统中,该方法包括 在接收到客户端发送的写操作请求时,将布局信息发送给所述客户端,所述布局信息中包含写操作请求中的待写入数据将被写入的对象服务器信息; 根据所述布局信息指示所述客户端将所述待写入数据写入所述布局信息中记录的第一对象服务器,在所述客户端完成写操作后,指示所述第一对象服务器将所述待写入数据写入所述布局信息中记录的第二对象服务器;
指示所述客户端向所述第一对象服务器和所述第二对象服务器发送写入结果确
认请求,并接收所述第一对象服务器和所述第二对象服务器返回的写入结果。
—种数据写入服务器,包括 发送单元,用于在接收到客户端发送的写操作请求时,将布局信息返回给所述客户端,所述布局信息中包含写操作请求中的待写入数据将被写入的对象服务器信息;
第一指示单元,用于根据所述布局信息指示所述客户端将待写入数据写入所述布局信息中记录的第一对象服务器,在所述客户端完成写操作后,指示所述第一对象服务器将所述待写入数据写入所述布局信息中记录的第二对象服务器。 第二指示单元,用于指示所述客户端向所述第一对象服务器和所述第二对象服务器发送写入结果确认请求,并接收所述第一对象服务器和所述第二对象服务器返回的写入结果。 —种数据修改方法,用于包括至少两个对象服务器的分布式文件系统中,该方法包括 检测待修改数据所在的至少两个对象服务器是否为正常状态; 当所述至少两个对象服务器为正常状态时,对所述至少两个对象服务器上的待修改数据进行加锁,并确保加锁成功; 对所述至少两个对象服务器上的待修改数据进行修改;
解除对所述至少两个待修改数据的锁定状态。 —种数据修改装置,用于包括至少两个对象服务器的分布式文件系统中,该装置包括 检测单元,用于检测待修改数据所在的至少两个对象服务器是否为正常状态;
锁定单元,用于在所述对象服务器为正常状态时,对所述至少两个对象服务器上的待修改数据进行加锁,并确保加锁成功; 修改单元,用于对所述至少两个对象服务器上的待修改数据进行修改;
解锁单元,用于解除对所述至少两个待修改数据的锁定状态。 —种数据恢复方法,用于包括至少两个对象服务器的分布式文件系统中,该方法包括 通过心跳检查检测所述至少两个对象服务器的运行状况; 当发现故障所述至少两个对象服务器中存在故障对象服务器后时,根据布局信息确定待恢复的对象数据; 向目标对象服务器发送恢复消息,使得目标对象服务器恢复所述待恢复的数据,所述恢复消息中记录所述目标对象服务器的标识以及待恢复的数据; 在所述目标对象服务器根据所述恢复消息对所述待恢复数据恢复成功时,根据所述目标对象服务器标识以及被恢复的数据对所述布局信息进行更新。 —种数据恢复服务器,用于包括至少两个对象服务器的分布式文件系统中,该服务器包括 检测单元,用于通过心跳检查检测所述至少两个对象服务器的运行状况; 确定单元,用于当所述至少两个对象服务器中存在故障对象服务器时,根据布局
信息确定待恢复的数据;
发送单元,用于向目标对象服务器发送恢复消息,使得目标对象服务器恢复所述待恢复的数据,所述恢复消息中记录所述目标对象服务器的标识以及待恢复的数据;
更新单元,用于在所述目标对象服务器根据所述恢复消息对所述待恢复数据恢复成功时,根据所述目标对象服务器标识以及被恢复的数据对所述布局信息进行更新。
可见,本发明实施例所提供的方案分别从对象服务器上的数据写入、修改以及恢复三个基本操作出发,通过一系列的方法保证同一个对象数据的多个副本同时存储在不同
对象服务器上时的一致性,极大地降低了副本间数据不一致的可能性,从根本上防止了单个副本出现的情况,大大提高了分布式文件系统的可靠性。


为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例所提供的方法的流程图; 图2为本发明一实施例所提供的方法的信令交互图; 图3为本发明一实施例所提供的服务器的结构示意图; 图4为本发明一实施例所提供的另一方法的流程图; 图5为本发明一实施例所提供的方法中一子步骤的流程图; 图6为本发明一实施例所提供的方法中一场景的示意图; 图7为本发明一实施例所提供的装置的结构示意图; 图8为本发明另一实施例所提供的装置中一单元的结构示意图; 图9为本发明又一实施例所提供的装置中一单元的结构示意图; 图10为本发明另一实施例所提供的装置中一单元的结构示意图; 图11为本发明一实施例所提供的另一方法的流程图; 图12为本发明另一实施例所提供的服务器的结构示意图。
具体实施例方式
本发明实施例公开了一种数据写入、修改及恢复的方法、装置和系统,为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明作进一步详细说明。 在分布式文件系统中,为了保证数据的可靠性,需要将数据对象进行冗余备份。一种典型的方法是在对一个对象复制多个副本,然后把这些副本存放到不同的对象服务器上。这种方法能保证数据的可靠性,但是也提出一个问题,即副本之间的数据一致性问题。只有各个副本之间的数据保持一致,这些冗余的副本的存在才是有价值的。但是实际上,由于副本数据写入时故障等众多的原因,分布式系统中的多个副本的数据存在不一致的风险。本发明实施例所通过的方法就是为了实现分布式系统中不同对象服务器中数据的一致性而提出的。 发明人通过对现有技术的研究发现,影响分布式系统中对不同对象服务器中同一数据的不一致主要出现在数据写入、数据修改以及数据恢复等过程中,下面,本发明实施例所提供的方法分别针对这几种过程进行详细描述。 参见图l,本发明一实施例所提供数据写入方法,用于包括至少两个对象服务器的分布式文件系统中,该方法包括 S101、在接收到客户端发送的写操作请求时,将布局信息返回给所述客户端。 本发明实施例所提供的方法所涉及的写入过程都是按照布局信息来完成的。而在
本发明一实施例中该布局信息是由元数据服务器根据客户端的写操作请求形成的。即本发
明实施例所提供的写操作都是在由元数据服务器通过布局信息控制实现。 本发明实施例所提供的方法中,布局信息具有重要的地位,相当于分布式文件系
统中的数据分布地图,记录了分布式文件系统中各个数据的分布情况,当然也包含待写入
数据将被写入的对象服务器信息; 例如一个分布式文件系统中有三个对象服务器,编号为1 3,那么对于一个待写入数据对象Datal,布局信息中可能记录的信息为Datal 对象服务器1、对象服务器3。这就表示需要将Datal这个数据对象写入到对象服务器1和对象服务器3中。
S102、根据所述布局信息指示所述客户端将所述待写入数据写入所述布局信息中记录的第一对象服务器,在所述客户端完成写操作后,指示所述第一对象服务器将所述待写入数据写入所述布局信息中记录的第二对象服务器。S103、指示所述客户端向所述第一对象服务器和所述第二对象服务器发送写入结果确认请求,并接收所述第一对象服务器和所述第二对象服务器返回的写入结果。 本发明实施例的写入过程为顺序写入,一个待写入数据至少要被写入当前分布式文件系统中的两台对象服务器中,当客户端完成在第一对象服务器中的写入工作之后,由第一对象服务器再将待写入数据写入到第二对象服务器中。 这里,用第一对象服务器来表示由客户端首先写入数据的对象服务器,用第二对象服务器来表示由第一对象服务器写入数据的服务器。 可见,本发明实施例所提供的方法应用于至少包含两台对象服务器的分布式文件系统中,本方法在第一对象服务器和第二对象服务器中顺序写入数据、以及写入数据之后的确认过程来保证写入操作在第一对象服务器和第二对象服务器上同时成功,从而从根本上避免了单个副本数据的出现,保证了写操作过程中第一对象服务器和第二对象服务器保存的同一数据的副本的一致性。 实际应用中,当所述第一对象服务器完成在所述第二对象服务器上的写入工作后,还可以在其他对象服务器,例如第三对象服务器上进行写入工作,相当于并行写入。
以上述Datal的写入过程为例,以对象服务器1为第一对象服务器,对象服务器2和3为第二对象服务器和第三对象服务器,则客户端先在对象服务器1写入Datal ;对象服务器1分别在对象服务器2和对象服务器3上写入Datal。 在其他实施例中,当第一对象服务器完成在第二对象服务器上的写入工作后,也可以由第二对象服务器继续在其他对象服务器,如第三对象服务器上继续执行数据写入工作。 以上述Datal的写入过程为例,当客户端在对象服务器1写入Datal ;对象服务器1在对象服务器2上写入Datal,对象服务器2继续在对象服务器3上写入Datal。实现了串行写入过程。 需要说明的是,本发明实施例所提供的方法,无论是通过并行方式还是采用串行
方式将数据写入了第N对象服务器(N大于等于3),所述客户端都要根据指示向所述第N对
象服务器发送写入结果确认请求,并接收所述第N对象服务器返回的写入结果。 实际应用中,可能出现第一对象服务器或者第二对象服务器写入失败的情况,在
本发明实施例所提供的方法中,当所述第一对象服务器或者所述第二对象服务器返回写入
数据失败时,元数据服务器指示所述第一对象服务器和所第二对象服务器重新执行所述数
据写入操作。 可选地,当存在第N对象服务器时,如果在第N对象服务器中写入失败,则重新执 行N个对象服务器上的写入操作。 可见,本发明实施例所提供的方法应用于至少包含两台对象服务器的分布式文件 系统中,本方法通过在至少两个对象服务器中顺序写入数据、以及写入数据之后的确认过 程来保证写入操作在至少两个对象服务器上同时成功。如果出现不成功的情况,则在至少 两台服务器上都重写,从根本上避免了孤立副本的出现。 图2为本发明一实施例所提供的本发明的应用示意图,图中包括客户端、元数据 服务器、对象服务器1和对象服务器2。 元数据服务器为本例中的核心服务器,所有的写入动作都是由元数据服务器根据 布局信息指示客户端和不同对象服务器配合完成的,具体包括 S201、客户端向元数据服务器发送数据写入请求,该数据写入请求中记录待写入 的数据对象。 S202 、元数据服务器将布局信息返回给客户端。 布局信息中包含该待写入数据将被写入的对象服务器的信息,例如对象服务器的 标识等等。为了描述方便,本发明实施例中假设待写入数据需要被写入对象服务器1和对 象服务器2。 S203,客户端根据布局信息向给定的第一个对象服务器写数据,并等待写操作的 完成情况。 S204、当客户端完成在第一个对象服务器的写操作后,第一个对象服务器将数据 写入到第二对象服务器,并等待写操作的完成情况; S205、第二个对象服务器将写操作的完成情况返回给第一个对象服务器。 S206 、第一个对象服务器将写操作的所有结果返回给客户端。 S207、客户端向第一个服务器确认写入数据成功。 S208、第一个对象服务器向第二对象服务器确认写入数据成功。 S209、第二个对象服务器返回写入成功的结果返回给第一个对象服务器; S210、第一个对象服务器将写入成功的结果返回给客户端。 通过本发明实施例可以看出,本发明实施例所提供的方法通过同一个对象在至少 两个不同的对象服务器的写操作成功来保证写操作过程中不同对象服务器上保存的同一 数据的副本的一致性。 本发明另一实施例还提供一种数据写入服务器,参见图3,该服务器包括 第一发送单元301,用于在接收到客户端发送的写操作请求时,将布局信息返回给所述客户端,所述布局信息中包含待写入数据将被写入的对象服务器信息; 第一指示单元302,用于根据所述布局信息指示所述客户端将待写入数据写入所
述布局信息中记录的第一对象服务器,并指示所述第一对象服务器在所述客户端完成写操
作后,将所述待写入数据写入所述布局信息中记录的第二对象服务器。 第二指示单元303,用于指示所述客户端向所述第一对象服务器和所述第二对象 服务器发送写入结果确认请求,并接收所述第一对象服务器和所述第二对象服务器返回的 写入结果。 可选地,在本发明另一实施例中,图3所示的服务器还包括 第三指示单元304,用于指示所述第一对象服务器在所述客户端完成写操作后,将
所述待写入数据写入所述布局信息中记录的第N对象服务器,N为大于3的自然数; 或者,用于指示所述第二对象服务器在所述第一对象服务器完成写操作后,将所
述待写入数据写入所述布局信息中记录的第N对象服务器,N为大于3的自然数。 相应的,所述第二指示单元303,还用于指示所述客户端向所述第N对象服务器发
送写入结果确认请求,并接收所述第N对象服务器返回的写入结果。 可选地,本发明的其他实施例中,图3所示的服务器还可以包括 第一控制单元,用于在所述第一对象服务器或者所述第二对象服务器返回写入数
据失败时,指示所述第一对象服务器和所第二对象服务器重新执行所述数据写入操作。 本发明实施例所提供的服务器根据布局信息对客户端和与待写入数据对应的对
象服务器进行控制,指示各个客户端和对象服务器按照顺序写入的方式在第一对象服务器
和第二对象服务器上写入数据,并且确认写入操作的执行结果,通过保证同一对象的2个
副本至少在两个不同的对象服务器上写入成功来避免不同对象服务器上同一数据对应的
副本中的数据不一致的情况。 参见图4,本发明一实施例还提供一种数据修改方法,该方法用于包括至少两个对 象服务器的分布式文件系统中,包括 S401、检测待修改数据所在的至少两个对象服务器是否为正常状态; S402、当所述对象服务器为正常状态时,对所述至少两个对象服务器上的待修改
数据进行加锁,并确保加锁成功; 本发明实施例中,对待修改数据加锁,是为了防止在同一个时刻,有多个主体对位 于不同服务器上的同一个对象都进行修改操作而导致错误的出现。以两个服务器上同时记 录的一个电子表格为例。如果A用户对该S1服务器上的电子表格进行操作的同时,B用户 在S2服务器上也对该电子表格继续操作,那么将导致破坏不同服务器上同一个电子表格 的一致性。所以当A用户要对Sl服务器上的电子表格进行操作时,对S2服务器上的电子 表格加锁,使之出于锁定状态,从而避免多个用户同时对同一个文件进行操作。
对待修改数据进行加锁并且还要保证加锁成功对保证数据的一致性必须的。如果 不加锁,则可能出现同一个对象服务器中的同一个数据同时被多个客户端修改的情况,出 现冲突,最终将导致数据修改失败。 S403、对所述至少两个对象服务器上的待修改数据进行修改;
S404,解除对所述至少两个待修改数据的锁定状态。 本发明实施例所提供的数据副本的修改方法,在确定至少两个对象服务器为正常状态时,对所述至少两个对象服务器上的待修改数据进行加锁,在锁定状态下对至少两个 对象服务器上的待修改数据进行修改,保证了同一对象的2个副本至少在两个不同的对象 服务器上修改成功,从根本上避免了单个副本数据的出现,保证了数据修改过程中至少两 台对象服务器上保存的同一数据的副本的一致性。 可选地,参见图5,在上述实施例中,对所述至少两个对象服务器上的待修改数据 进行修改包括 S501、将所述至少两个对象服务器上的待修改数据复制到客户端; S502、在客户端对所述待修改数据进行修改; S503、将修改后的数据写入所述至少两个对象服务器。 在执行步骤S503的数据写入步骤时,可以按照本发明实施例前面提供的数据写 入方法进行。 当修改操作完成后,需要解除对数据的锁定状态,使得其他的终端能够对该的数 据进行操作。 可选地,本发明实施例中,对所述至少两个对象服务器上的待修改数据进行加锁 可以同步进行,包括 检查所述至少两个对象服务器上的待修改数据是否为被锁定状态; 当所述至少两个对象服务器上的待修改数据均为未被锁定时,对所述至少两个对
象服务器上的待修改数据进行加锁。 在其他实施例中,对所述至少两个对象服务器上的待修改数据进行加锁也可以顺 序进行,包括 给所述至少两个对象服务器中的第一对象服务器上的待修改数据进行加锁后,再 对至少两个对象服务器上第一对象服务器上的待修改数据进行加锁。 当采用顺序加锁的方式为对象服务器上的待修改数据进行加锁时,可能出现死锁 的情况,参见图6,即当客户端-1锁定对象服务器-1上obj-l后,准备锁定对象服务器_2 上的obj-l时,此时对象服务器_2上的obj-l已经被其他客户端锁定。
如果出现死锁情况,本发明一实施例所提供的解决方法是 给所述至少两个对象服务器中的第一对象服务器上的待修改数据进行加锁后,检 测所述至少两个对象服务器中的第二对象服务器上的待修改数据是否处于被锁定状态;
如果是,则对所述第二对象服务器上的待修改数据上最新的锁进行解锁,并通知 最先成功加锁的客户端对所述待修改数据进行加锁;否则,对所述至少两个对象服务器中 的第二对象服务器上的待修改数据进行加锁。 本发明实施例中通过时间戳对不同对象服务器上同一文件上所加的锁的先后进 行比较。下面举例对死锁情况的解锁方法进行说明 例如,对象服务器1上有一个对象l,对象服务器2上也存有对象1。当用户A对 对象服务器1上的对象1进行加锁(记为锁1)后准备对对象服务器2上的对象1进行加 锁时,通过检测发现其已经被对象服务器2加锁(记为锁2),显然,如果不做相应的处理,对 象服务器1和对象服务器上的对象1都无法被处理,所以这样导致死锁的出现,本发明实施 例通过比较不同对象服务器上同一个对象数据的时间戳来进行解锁。假设,锁1的时间戳 是10:01,锁2的时间锁是10:02,即说明用户A先于用户B对对象1进行加锁。则根据时间戳的判断,时间戳最新的锁_锁2被释放,最先加锁成功的客户端被保留。通知所述最先 成功加锁的客户端对对象服务器2上的对象1进行加锁即可。 本发明实施例所提供的数据副本的修改方法,通过对待修改数据的锁定状态下进 行修改,保证了同一对象的2个副本至少在两个不同的对象服务器上修改成功来避免不同 对象服务器上同一数据对应的副本中的数据不一致的情况。 参见图7,本发明一实施例还提供一种数据修改装置,该装置用于包括至少两个对 象服务器的分布式文件系统中,包括 第一检测单元701,用于检测待修改数据所在的至少两个对象服务器是否为正常 状态; 锁定单元702,用于在所述对象服务器为正常状态时,对所述至少两个对象服务器 上的待修改数据进行加锁,并确保加锁成功; 修改单元703,用于对所述至少两个对象服务器上的待修改数据进行修改;
解锁单元704,用于解除对所述至少两个待修改数据的锁定状态。
可选地,参见图8,对各个对象服务器上的待修改数据的锁定可以同步进行,具体 地,所述锁定单元702包括 第一检查子单元801,用于检查所述至少两个对象服务器上的待修改数据是否为 被锁定状态; 第一锁定子单元802,用于当所述至少两个对象服务器上的待修改数据均为未被 锁定时,对所述至少两个对象服务器上的待修改数据进行加锁。 在本发明另一实施例中,参见图9,对各个对象服务器上的待修改数据的锁定可以 顺序进行,具体地,所述锁定单元702包括 第二锁定子单元901,用于给所述至少两个对象服务器上第一对象服务器上的待 修改数据进行加锁; 第二检查子单元902,用于检测所述至少两个对象服务器中的第二对象服务器上 的待修改数据是否处于被锁定状态; 第三锁定子单元903,用于在所述第二对象服务器上的待修改数据处于被锁定状 态时对所述第二对象服务器上的待修改数据上最新的锁进行解锁,并通知最先成功加锁的 客户端对所述待修改数据进行加锁; 第四锁定子单元904,用于在所述第二对象服务器上的待修改数据未处于被锁定
状态时对所述至少两个对象服务器中的第二对象服务器上的待修改数据进行加锁。
参见图IO,本发明一实施例中,所述修改单元703包括 复制子单元1001,用于将所述至少两个对象服务器上的待修改数据复制到客户
丄山
顺; 修改子单元1002,用于在客户端对所述待修改数据进行修改; 写入子单元1003,用于将修改后的数据写入所述至少两个对象服务器。 本发明实施例所提供的数据副本的修改装置,通过对待修改数据的锁定状态下进
行修改,保证了同一对象的2个副本至少在两个不同的对象服务器上修改成功来避免不同
对象服务器上同一数据对应的副本中的数据不一致的情况。 本发明一实施例还提供一种数据恢复方法,用于包括至少两个对象服务器的分布式文件系统中,参见图ll,该方法包括 S1101、通过心跳检查检测所述至少两个对象服务器的运行状况; S1102、当发现故障对象服务器后,根据布局信息确定待恢复的对象; 布局信息中记录了该故障对象服务器存储的对象的副本的信息,因为该对象服务
器已经发生了故障,所以需要将该对象服务器上存储的所有对象的副本转存至其他对象服
务器中。 S1103、向目标对象服务器发送恢复消息,所述恢复消息中记录所述目标服务器标识以及待恢复的数据; 本发明实施例中将副本将被转存的对象服务器称为目标对象服务器。目标服务器可以是当前分布式文件系统中其他未发生故障的对象服务器,也可以是当前分布式文件系统之外的一个对象服务器。 S1104、在所述目标对象服务器根据所述恢复消息对所述待恢复数据恢复成功时,
根据所述目标对象服务器标识以及被恢复的数据对所述布局信息进行更新。 所述目标对象服务器对所述待恢复数据的恢复操作实质就是根据所述恢复消息
将待恢复数据写入到本地。 在本发明的其他实施例中,可能首次在第一目标服务器上执行恢复数据并未成功,此时,图11所示的方法还包括 在所述目标对象服务器根据所述恢复消息对所述待恢复数据恢复失败时,重新向所述目标对象服务器发送恢复消息。 实际应用中,可以通过预设的重试次数来控制重新向所述目标对象服务器发送恢复信息的次数。 通过重试机制有效避免了操作一失败就返回结果的情况,通过自动重试,节约了处理时间,提高了处理效率。 本发明实施例所提供的数据恢复方法,在检查到故障对象服务器时,及时在目标服务器中重新恢复故障对象服务器中保存的对象的副本,同时对布局信息进行了更新,从而避免了因个别对象服务器故障而出现同一对象的副本在不同对象服务器上不一致的情况。 参见图12,本发明另一实施例还提供一种数据恢复服务器,该服务器用于包括至少两个对象服务器的分布式文件系统中,包括 第二检测单元1201,用于通过心跳检查检测所述至少两个对象服务器的运行状况; 确定单元1202,用于在发现故障对象服务器后,根据布局信息以及所述故障对象服务器的信息确定待恢复的对象; 第二发送单元1203,用于向目标对象服务器发送恢复消息,所述恢复消息中记录所述目标服务器标识以及待恢复的数据; 更新单元1204,用于在所述目标对象服务器根据所述恢复消息对所述待恢复数据恢复成功时,根据所述目标对象服务器标识以及被恢复的数据对所述布局信息进行更新。
可选地,若第一目标服务器上执行恢复数据并未成功时,图12所示的服务器还包括
第二控制单元,用于在所述目标对象服务器根据所述恢复消息对所述待恢复数据
恢复失败时,控制所述发送单元重复执行向目标对象服务器发送恢复消息的动作。 本发明实施例所提供的数据恢复服务器,在检查到故障对象服务器时,及时在目
标服务器中重新恢复故障对象服务器中保存的对象的副本,同时对布局信息进行了更新,
从而避免了因个别对象服务器故障而出现同一对象的副本在不同对象服务器上不一致的情况。 本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。 一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
权利要求
一种数据写入方法,其特征在于,用于包括至少两个对象服务器的分布式文件系统中,该方法包括在接收到客户端发送的写操作请求时,将布局信息发送给所述客户端,所述布局信息中包含写操作请求中的待写入数据将被写入的对象服务器信息;根据所述布局信息指示所述客户端将所述待写入数据写入所述布局信息中记录的第一对象服务器,在所述客户端完成写操作后,指示所述第一对象服务器将所述待写入数据写入所述布局信息中记录的第二对象服务器;指示所述客户端向所述第一对象服务器和所述第二对象服务器发送写入结果确认请求,并接收所述第一对象服务器和所述第二对象服务器返回的写入结果。
2. 根据权利要求l所述的方法,其特征在于,还包括在所述客户端完成写操作后,指示所述第一对象服务器写操作将所述待写入数据写入 所述布局信息中记录的第三对象服务器; 或者,在所述第一对象服务器完成所述写操作后,指示所述第二对象服务器写操作将所述待 写入数据写入所述布局信息中记录的第三对象服务器; 相应地,该方法还包括指示所述客户端向所述第三对象服务器发送写入结果确认请求,并接收所述第三对象 服务器返回的写入结果。
3. 根据权利要求l所述的方法,其特征在于,还包括当所述第一对象服务器或者所述第二对象服务器返回写入数据失败时,指示所述第一 对象服务器和所第二对象服务器重新执行写操作。
4. 一种数据写入服务器,其特征在于,包括第一发送单元,用于在接收到客户端发送的写操作请求时,将布局信息返回给所述客 户端,所述布局信息中包含写操作请求中的待写入数据将被写入的对象服务器信息;第一指示单元,用于根据所述布局信息指示所述客户端将待写入数据写入所述布局信 息中记录的第一对象服务器,在所述客户端完成写操作后,指示所述第一对象服务器将所 述待写入数据写入所述布局信息中记录的第二对象服务器;第二指示单元,用于指示所述客户端向所述第一对象服务器和所述第二对象服务器 发送写入结果确认请求,并接收所述第一对象服务器和所述第二对象服务器返回的写入结 果。
5. 根据权利要求4所述的数据写入服务器,其特征在于,还包括第三指示单元,用于在所述客户端完成写操作后,指示所述第一对象服务器将所述待 写入数据写入所述布局信息中记录的第三对象服务器;或者,用于在所述第一对象服务器完成写操作后,指示所述第二对象服务器将所述待 写入数据写入所述布局信息中记录的第三对象服务器;相应的,所述第二指示单元,还用于指示所述客户端向所述第三对象服务器发送写入 结果确认请求,并接收所述第三对象服务器返回的写入结果。
6. 根据权利要求4所述的数据写入服务器,其特征在于,还包括第一控制单元,用于在所述第一对象服务器或者所述第二对象服务器返回写入数据失败时,指示所述第一对象服务器和所第二对象服务器重新执行所述数据写入操作。
7. —种数据修改方法,其特征在于,用于包括至少两个对象服务器的分布式文件系统 中,该方法包括检测待修改数据所在的至少两个对象服务器是否为正常状态;当所述至少两个对象服务器为正常状态时,对所述至少两个对象服务器上的待修改数 据进行加锁,并确保加锁成功;对所述至少两个对象服务器上的待修改数据进行修改; 解除对所述至少两个待修改数据的锁定状态。
8. 根据权利要求7所述的方法,其特征在于,对所述至少两个对象服务器上的待修改数据进行加锁包括检查所述至少两个对象服务器上的待修改数据是否为被锁定状态;当所述至少两个对象服务器上的待修改数据均为未被锁定时,对所述至少两个对象服 务器上的待修改数据进行加锁。
9. 根据权利要求7所述的方法,其特征在于,对所述至少两个对象服务器上的待修改 数据进行加锁包括给所述至少两个对象服务器中的第一对象服务器上的待修改数据进行加锁; 检测所述至少两个对象服务器中的第二对象服务器上的待修改数据是否处于被锁定 状态;如果是,则对所述第二对象服务器上的待修改数据上最新的锁进行解锁,并通知最先 成功加锁的客户端对所述待修改数据进行加锁;否则,对所述至少两个对象服务器中的第二对象服务器上的待修改数据进行加锁。
10. 根据权利要求7 9任意一项所述的方法,其特征在于,对所述至少两个对象服务 器上的待修改数据进行修改包括将所述至少两个对象服务器上的待修改数据复制到客户端; 在客户端对所述待修改数据进行修改; 将修改后的数据写入所述至少两个对象服务器。
11. 一种数据修改装置,其特征在于,用于包括至少两个对象服务器的分布式文件系统 中,该装置包括第一检测单元,用于检测待修改数据所在的至少两个对象服务器是否为正常状态; 锁定单元,用于在所述对象服务器为正常状态时,对所述至少两个对象服务器上的待 修改数据进行加锁,并确保加锁成功;修改单元,用于对所述至少两个对象服务器上的待修改数据进行修改; 解锁单元,用于解除对所述至少两个待修改数据的锁定状态。
12. 根据权利要求11所述的装置,其特征在于,所述锁定单元包括第一检查子单元,用于检查所述至少两个对象服务器上的待修改数据是否为被锁定状态;第一锁定子单元,用于当所述至少两个对象服务器上的待修改数据均为未被锁定时, 对所述至少两个对象服务器上的待修改数据进行加锁。
13. 根据权利要求11所述的装置,其特征在于,所述锁定单元包括第二锁定子单元,用于给所述至少两个对象服务器中的第一对象服务器上的待修改数 据进行加锁;第二检查子单元,用于检测所述至少两个对象服务器中的第二对象服务器上的待修改 数据是否处于被锁定状态;第三锁定子单元,用于在所述第二对象服务器上的待修改数据处于被锁定状态时对所 述第二对象服务器上的待修改数据上最新的锁进行解锁,并通知最先成功加锁的客户端对 所述待修改数据进行加锁;第四锁定子单元,用于在所述第二对象服务器上的待修改数据未处于被锁定状态时对 所述至少两个对象服务器中的第二对象服务器上的待修改数据进行加锁。
14. 根据权利要求11 13任意一项所述的装置,其特征在于,所述修改单元包括 复制子单元,用于将所述至少两个对象服务器上的待修改数据复制到客户端; 修改子单元,用于在客户端对所述待修改数据进行修改; 写入子单元,用于将修改后的数据写入所述至少两个对象服务器。
15. —种数据恢复方法,其特征在于,用于包括至少两个对象服务器的分布式文件系统 中,该方法包括通过心跳检查检测所述至少两个对象服务器的运行状况;当所述至少两个对象服务器中存在故障对象服务器时,根据布局信息确定待恢复的数据;向目标对象服务器发送恢复消息,使得目标对象服务器恢复所述待恢复的数据,所述 恢复消息中记录所述目标对象服务器的标识以及待恢复的数据;在所述目标对象服务器根据所述恢复消息对所述待恢复数据恢复成功时,根据所述目 标对象服务器标识以及被恢复的数据对所述布局信息进行更新。
16. 根据权利要求15所述的方法,其特征在于,还包括在所述目标对象服务器根据所述恢复消息对所述待恢复数据恢复失败时,重新向所述 目标对象服务器发送恢复消息。
17. —种数据恢复服务器,其特征在于,用于包括至少两个对象服务器的分布式文件系 统中,该服务器包括第二检测单元,用于通过心跳检查检测所述至少两个对象服务器的运行状况; 确定单元,用于当所述至少两个对象服务器中存在故障对象服务器时,根据布局信息 确定待恢复的数据;第二发送单元,用于向目标对象服务器发送恢复消息,使得目标对象服务器恢复所述 待恢复的数据,所述恢复消息中记录所述目标对象服务器的标识以及待恢复的数据;更新单元,用于在所述目标对象服务器根据所述恢复消息对所述待恢复数据恢复成功 时,根据所述目标对象服务器标识以及被恢复的数据对所述布局信息进行更新。
18. 根据权利要求17所述的服务器,其特征在于,还包括第二控制单元,用于在所述目标对象服务器根据所述恢复消息对所述待恢复数据恢复 失败时,控制所述发送单元重复执行向目标对象服务器发送恢复消息的动作。
全文摘要
本发明实施例公开了一种数据写入、修改及恢复的方法、装置及服务器。本发明实施例所提供的方案分别从对象服务器上的数据写入、修改以及恢复三个基本操作出发,通过一系列的方法保证同一个对象数据的多个副本同时存储在不同对象服务器上时的一致性,极大地降低了副本间数据不一致的可能性,从根本上防止了单个副本出现的情况,大大提高了分布式文件系统的可靠性。
文档编号G06F17/30GK101706802SQ200910224819
公开日2010年5月12日 申请日期2009年11月24日 优先权日2009年11月24日
发明者程菊生 申请人:成都市华为赛门铁克科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1