首页> 中国专利> 元数据服务系统、元数据同步方法与写服务器更新方法

元数据服务系统、元数据同步方法与写服务器更新方法

摘要

本发明公开了一种元数据服务系统、元数据同步方法和写服务器更新方法。本发明提供的元数据服务系统,包括:写服务器和读服务器;所述写服务器用于存储并行文件系统中的元数据,接受读访问;以及接受写访问,修改并行文件系统中的元数据,并将修改后的元数据同步更新到读服务器;读服务器,用于存储元数据,接受读访问;以及接受写服务器对元数据的同步更新;还用于当监测到所述写服务器失效时,转换为写服务。本发明通过读服务器和写服务器彼此互为备份,解决单点失效问题,并可满足高效率的大量并发访问需求。

著录项

  • 公开/公告号CN101751415A

    专利类型发明专利

  • 公开/公告日2010-06-23

    原文格式PDF

  • 申请/专利权人 中国移动通信集团公司;

    申请/专利号CN200810224708.X

  • 发明设计人 王旭;徐萌;罗治国;

    申请日2008-12-09

  • 分类号G06F17/30(20060101);

  • 代理机构11291 北京同达信恒知识产权代理有限公司;

  • 代理人魏杉

  • 地址 100032 北京市西城区金融大街29号

  • 入库时间 2023-12-18 00:22:50

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2012-03-28

    授权

    授权

  • 2010-08-18

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20081209

    实质审查的生效

  • 2010-06-23

    公开

    公开

说明书

技术领域

本发明涉及集群计算中的分布式存储,尤其涉及对并行文件系统中的元数据进行存储、修改与读取的元数据服务系统,以及元数据同步方法与写服务器更新方法。

背景技术

文件系统是计算机系统中用于数据的存储和读取的子系统,一般构建在磁盘之上。在网络应用场景中,计算与存储往往是分离的,即通过网络访问分布式的文件系统。对于使用大量计算机并行工作的高性能计算和高负载的网络服务应用,常常需要使用多台专用于存储的服务器共同提供文件系统服务,来满足访问带宽需求。

一种比较常用的高性能并行文件系统的架构是将文件系统的索引信息等“元数据”存放于元数据服务器,将数据存放在其他数据服务器,客户程序只需要从元数据服务器取回少量的索引信息,在大部分时候,直接和数据服务器交互。这种架构结构简单,可以提供较高的访问带宽,适用于大多数应用。

但是,这种架构的元数据服务器是一个单点,其失效将导致整个文件系统不可用,因此存在可用性问题,无法提供电信级服务。同时,元数据服务器作为一个单点,其性能在面对高密度的峰值访问时可能会成为性能瓶颈。

目前已有的多元数据服务器的并行文件系统架构中,大部分是通过共享存储设备构成的主备服务器,主备服务器之间的同步借助于共享存储设备完成,但在发生主备服务器倒换的时候,会丧失部分状态信息。

另外,现有技术中有些并行文件系统通过接力的多跳查询来访问位于多台服务器上的索引信息,如PVFS2,但这会导致查询时延的增加以及难以保证文件系统中多台服务器上信息的一致性。

综上所述,现有技术中,对于并行文件系统中的元数据管理存在如下缺点:

1、已有的由单服务器提供元数据服务的并行文件系统不具备高可用性,该元数据服务器失效将会导致整个文件系统不可用。

2、使用共享存储设备构成主备结构的元数据服务器,在发生倒换的时候会损失状态数据。并且,同一时刻只有一台服务器提供服务,当面向大量并发访问时,难以提供足够的负荷能力。

3、通过多节点分布式存储元数据,即通过互相查询信息的方式来提供多个元数据服务器服务的方式,会影响访问的效率,增加访问的时延。同时也没有解决状态数据的同步问题。

发明内容

本发明提供一种元数据服务系统,解决单点失效问题,并可满足高效率的大量并发访问需求。

根据本发明提供的元数据服务系统,本发明还提供一种元数据同步方法,实现各服务器之间存储的元数据的同步更新,保证各服务器存储数据的一致性。

根据本发明提供的元数据服务系统,本发明还提供一种写服务器更新方法,当写服务器失效时,由读服务器转换为写服务器,解决单点失效问题。

本发明提供的元数据服务系统,包括:写服务器和读服务器;

所述写服务器,用于存储并行文件系统中的元数据,接受读访问;以及接受写访问,修改所述元数据,并将修改后的元数据同步更新到所述读服务器;

所述读服务器,用于存储所述元数据,接受读访问;以及接受所述写服务器对元数据的同步更新;还用于监测所述写服务器是否失效,当监测到所述写服务器失效时,所述读服务器转换为所述写服务器。

本发明提供的元数据服务系统,包括至少两个读服务器,还包括仲裁服务装置;

所述仲裁服务装置,用于在所述读服务器测到所述写服务器失效时被启动,确定出所述读服务器中的至少一个转换为所述写服务器。

转换为所述写服务器的对应读服务器,还用于将最后一次修改的元数据同步到其余读服务器。

所述仲裁服务装置为独立于所述写服务器和读服务器的一个实体装置;或者

所述仲裁服务装置集成于所述读服务器中。

当所述仲裁服务装置为独立于所述写服务器和读服务器的一个实体装置时,还用于存储所述写服务器和读服务器信息;接收客户端发起的服务器信息查询请求,返回所述写服务器和读服务器信息。

本发明提供的元数据同步方法,应用于本发明提供的元数据服务系统,包括:

所述写服务器接受写请求,将本次修改的元数据写入临时区域,并向所述读服务器发送写请求通告;

所述读服务器接收到所述写请求通告后,对修改前的对应元数据禁止操作,或者等待正在读取的所述对应元数据读取完毕后禁止操作;并在禁止操作完成后向所述写服务器返回通告接收响应;

所述写服务器接收到所述读服务器返回的通告接收响应后,将所述临时区域中存储的所述元数据发送给所述读服务器;以及用所述临时区域中存储的所述元数据,更新本地存储的对应元数据记录;

所述读服务器更新本地存储的对应元数据记录,并在更新成功后解除禁止操作。

还包括:

所述写服务器监测所述读服务器是否失效;

所述写服务器仅向当前未失效的读服务器发送所述写请求通告;以及当确定当前未失效的读服务器都返回通告接收响应后,将所述临时区域中存储的所述元数据发送给当前未失效的读服务器。

若所述读服务器在禁止操作完成后监测到所述写服务器失效,则解除禁止操作。

本发明提供的写服务器更新方法,应用于本发明提供的元数据服务系统,包括:

所述读服务器监测所述写服务器的当前状态;

当所述读服务器监测到所述写服务器失效时,所述读服务器转换为所述写服务器。

当所述元数据服务系统中还包括仲裁服务装置,所述读服务器至少配置有两个,且所述读服务器监测到所述写服务器失效时,具体包括:

所述读服务器向所述仲裁服务装置发起仲裁请求;

所述仲裁服务装置为各读服务器排定继承写服务器的继承顺序;

根据所述继承顺序,拥有最大更新序列号的所述读服务器转换为所述写服务器;其中,所述更新序列号为所述写服务器分配给每次更新的元数据的按序递增的对应序列号,并在将修改后的元数据同步更新到所述读服务器时携带所述更新序列号。

上述写服务器更新方法,具体包括:

当所述读服务器监测到所述写服务器失效时,向所述仲裁服务装置发起请求加锁的仲裁请求,携带本地存储的最新的更新序列号;

所述仲裁服务装置存储各读服务器的最新的更新序列号,为各读服务器排定继承写服务器的继承顺序,并分配锁给第一继承顺序对应的读服务器;

得到锁的读服务器根据所述仲裁服务装置中存储的各读服务器的最新的更新序列号,判断本地存储的最新的更新序列号是否是其中最大的更新序列号;若是,则将自身转换为所述写服务器;否则,将锁让出给所述继承顺序中的下一个读服务器。

当所述仲裁服务装置集成于所述读服务器中时,预先设置任一所述读服务器中集成的所述仲裁服务装置为有权仲裁服务装置,由所述有权仲裁服务装置接收所述仲裁请求;

当所述有权仲裁服务装置所属读服务器转换为写服务器时,由该所属读服务器随机选择一个其余所述读服务器中集成的所述仲裁服务装置为有权仲裁服务装置,并通知给各读服务器。

本发明由写服务器和读服务器组成元数据服务系统。写服务器不仅能接受读访问,还能接受写访问,修改并行文件系统中的元数据,并将修改后的元数据同步更新到读服务器;读服务器存储元数据,接受读访问;并接受写服务器对元数据的同步更新;当读服务器监测到写服务器失效时,转换为写服务器。由于本发明提供的元数据服务系统中设置有互为备份的读服务器和写服务器,因此,有效解决了单点失效问题。通过数据同步,各读服务器存储一致的元数据,彼此可以互为备份,能满足大量并发访问需求;且由于各服务器并行设置,不需要多跳查询,每台读服务器可以直接接收客户端的读访问,读取效率高。

附图说明

图1为本发明实施例提供的元数据服务系统结构示意图之一;

图2为本发明实施例提供的元数据服务系统结构示意图之二;

图3为本发明实施例提供的元数据服务系统结构示意图之三;

图4为本发明实施例提供的元数据同步更新方法流程图;

图5为本发明实施例提供的写服务器更新方法流程图之一;

图6为本发明实施例提供的写服务器更新方法流程图之二;

图7为写服务器更新方法的一个具体实例信令流程图。

具体实施方式

本发明实施例提供一种元数据服务系统、元数据同步更新方法和写服务器更新方法,通过多台服务器彼此互为备份,各服务器之间存储的元数据的同步更新以及写服务器更新,解决单点失效问题,并可满足高效率的大量并发访问需求。

下面给合附图,对本发明提供的系统与方法进行详细描述。

参见图1,为本发明实施例提供的元数据服务系统结构示意图之一,包括:写服务器11和读服务器12;其中:

写服务器11,用于存储并行文件系统中的元数据,接受读访问;以及接受写访问,修改并行文件系统中的元数据,并将修改后的元数据同步更新到读服务器12;

读服务器12,用于存储并行文件系统中的元数据,接受读访问;以及接受写服务器11对元数据的同步更新;还用于监测写服务器11是否失效,当监测到写服务器11失效时,读服务器12转换为写服务器。

在图1所示系统中,配置了一个写服务器和一个读服务器。写服务器和读服务器都可以接受读访问;写服务器可以实现元数据的修改和数据同步;当该写服务器失效时,读服务器转换为写服务器,接受读访问和写访问,解决单点失效问题。

一实施例中,元数据服务系统还包括仲裁服务装置13,且读服务器12至少配置有两个,其结构示意图如图2所示,其中,仲裁服务装置13为一个独立于写服务器11和读服务器12的实体装置。各部件功能如下:

写服务器11,用于存储并行文件系统中的元数据,接受读访问;以及接受写访问,修改并行文件系统中的元数据,并将修改后的元数据同步更新到各读服务器12;

读服务器12,用于存储元数据,接受读访问;以及接受写服务器11对元数据的同步更新;还用于监测写服务器11是否失效,当监测到写服务器11失效时,启动仲裁服务装置13;

仲裁服务装置13,用于确定出读服务器12之一转换为写服务器。

一实施例中,仲裁服务装置13还可以存储写服务器11和读服务器12的相关信息;接收客户端发起的服务器信息查询请求,返回写服务器和读服务器信息。客户端可以根据返回的服务器信息,向任一读服务器发起读请求,以及向写服务器发起写请求。

实际应用中,写服务器和读服务器可以是具有相同功能的服务器。当某一服务器用作写服务器时,需要执行写服务器的相关功能,即:除了存储并行文件系统中的元数据,接受读访问外,还接受写访问,修改并行文件系统中的元数据,并将修改后的元数据同步更新到各读服务器。当某一服务器用作读服务器时,存储元数据并接受读访问。用作读服务器的各服务器都具备写服务器相关功能,只不过在用作读服务器时该相关功能没有开启或暂时闲置。当系统中的写服务器失效时,任意一个读服务器都可以转换为写服务器。

参见图3,为本发明实施例提供的元数据服务系统另一结构示意图,包括:写服务器11、至少两个读服务器12和仲裁服务装置13。其中,与图2所示结构不同的是,仲裁服务装置13不是一个独立设置的实体装置,而是集成于各读服务器中。集成于各读服务器中的仲裁服务装置13可以是纯软件模块,也可以是软件和硬件结合的相应功能模块。

下面结合本发明上述实施例提供的元数据服务系统,对元数据的同步更新流程以及当写服务器失效时的写服务器更新流程进行具体说明。

参见图4,为元数据同步更新方法流程图,具体包括:

步骤S401、写服务器接受写请求,将本次修改的元数据写入临时区域;

步骤S402、写服务器向读服务器发送写请求通告;

步骤S403、读服务器接收到写请求通告后,对修改前的对应元数据禁止操作,或者等待正在读取的对应元数据读取完毕后禁止操作;

步骤S404、禁止操作完成后向写服务器返回通告接收响应;

步骤S405、写服务器接收到读服务器返回的通告接收响应后,将临时区域中存储的元数据打包发送给读服务器;以及用临时区域中存储的元数据,更新本地存储的对应元数据记录;

步骤S406、读服务器更新本地存储的对应元数据记录,并在更新成功后解除禁止操作。

上述步骤402可以在写服务器接受写请求后即开始执行,即在本次修改的元数据被写入临时区域的过程中,可以向读服务器发送写请求通告,不必等待本次修改的全部元数据被写入完毕再执行步骤S402。

在步骤S403中,对应元数据被禁止读取;以免后续执行数据更新过程中同时执行读操作,使得读取的数据错误。

在步骤S406中,读服务器成功更新本地存储的对应元数据记录后,及时解除禁止操作,重新接受元数据读取访问。当元数据服务系统中配置有不止一个读服务器时,即使有其他读服务器的更新尚未完成,但这些处于不稳定状态的读服务器的对应元数据是不允许访问的,所以,不会有客户端进程访问到不一致的元数据,从而保证了文件系统元数据修改后的一致性。

一实施例中,写服务器和各读服务器相互监测彼此的状态,并可以相互通报监测到的状态信息。具体应用中,可以通过在写服务器和各读服务器中运行一个状态监视程序(具体监测方法为现有技术,在此不作详述)。在写服务器向读服务器发送写请求通告之前,写服务器根据当前监测结果,确定出是否有读服务器失效;仅向当前未失效的读服务器发送写请求通告。写服务器在接收读服务器返回的通告接收响应时,根据当前的监测结果,确定出当前未失效的各读服务器都返回了通告接收响应后,就将临时区域中存储的元数据打包发送给当前未失效的各读服务器。

通过写服务器和各读服务器相互监测彼此的状态,可以保证元数据的同步更新顺利进行,具体包括:

1、若读服务器在禁止操作过程中失效,写服务器获知后,不必等待该失效的读服务器返回通告接收响应,可以对其余未失效的读服务器继续进行元数据同步。

2、若读服务器在禁止操作过程中,监测到写服务器失效,读服务器之间会相互通报,并解除禁止操作。本次写操作失败,但不会让文件系统处于不稳定状态。

3、如果写服务器在数据打包发送的过程中失效,那么,已经接收到打包发送的更新后的元数据的读服务器可以完成更新;如果还有读服务器没有接收到更新后的元数据,那么可以由后继写服务器重新同步给它(在后述写服务器同步方法中进行具体描述),保证各读服务器中存储的元数据同步。

4、在元数据打包发送到读服务器后,如果某一读服务器失效,不会影响其它读服务器的数据更新,且写服务器能及时获知失效的读服务器,不必等待该读服务器返回信息就可以判断整个数据同步过程结束。

综上,在各种可能情况下,本发明提供的元数据同步方法都可以保持文件系统中元数据的一致性。同时,所有读服务器可以同时提供读访问服务,对于大量并发尤其是突发访问有很强的适用性。

根据本发明上述实施例提供的元数据服务系统,本发明还提供一种写服务器更新方法,其具体实现流程如图5所示,包括:

步骤S501、读服务器监测写服务器的当前状态;

步骤S502、判断写服务器是否失效,若否,转至步骤S501;若写服务器失效,执行步骤S503;

步骤S503、读服务器转换为写服务器。

当元数据系统中还包括仲裁服务装置,且读服务器至少配置有两个,读服务器监测到当前写服务器失效时,更新写服务器的具体流程如图6所示,包括:

步骤S601、读服务器向仲裁服务装置发起仲裁请求,携带本地存储的最新的更新序列号。

其中,更新序列号为写服务器分配给每次更新的元数据的按序递增的对应序列号,并在将修改后的元数据同步更新到读服务器时携带该更新序列号,各读服务器在本地保存最新的更新序列号。

本实施例中,读服务器向仲裁服务装置发起仲裁请求,是请求加锁的仲裁请求。

步骤S602、仲裁服务装置存储各读服务器的最新的更新序列号,并为各读服务器排定继承写服务器的继承顺序。

继承顺序的排序方法,可以由仲裁服务装置根据接收到的仲裁请求的先后顺序进行排定,或者也可以由仲裁服务装置随机排定。

步骤S603、仲裁服务装置分配锁给第一继承顺序对应的读服务器。

步骤S604、当前得到锁的读服务器将本地存储的最新的更新序列号与仲裁服务装置中存储的各读服务器的最新的更新序列号进行比较。

步骤S605、判断本地存储的最新的更新序列号是否是其中最大的更新序列号;若是,执行步骤S606;否则,执行步骤S607;

步骤S606、当前得到锁的读服务器将自身转换为写服务器,结束流程。

步骤S607、当前得到锁的读服务器将锁让出给继承顺序中的下一个读服务器,转至步骤S604。

参见图7,为写服务器更新方法的一个具体实例信令流程图。描述如下:

假设元数据服务系统中设置有读服务器1、读服务器2、读服务器3和读服务器4,读服务器1在本地保存的最新的更新序列号为1009,读服务器2在本地保存的最新的更新序列号为1008,读服务器3在本地保存的最新的更新序列号为1008,读服务器4在本地保存的最新的更新序列号为1009,根据前述元数据同步方法可知,各读服务器中存储的最新序列号最多只会相差1。

若监测到当前写服务器失效,则需要进行写服务器更新,在读服务器1、读服务器2、读服务器3和读服务器4中确定出一个服务器作为写服务器。具体信令过程为:

读服务器1、读服务器2、读服务器3和读服务器4分别向仲裁服务装置发起请求加锁的仲裁请求,并携带本地存储的最新的更新序列号;

仲裁服务装置存储读服务器1、读服务器2、读服务器3和读服务器4的最新的更新序列号,并为读服务器1、读服务器2、读服务器3和读服务器4排定继承写服务器的继承顺序,分别为:读服务器2为第一继承顺序,读服务器4为第二继承顺序,读服务器3为第三继承顺序,读服务器1为第四继承顺序;并分配锁给第一继承顺序对应的读服务器2;

仲裁服务装置可以将排定的顺序通知给各读服务器,也可以将排定的顺序保存在本地,由各读服务器主动来获知;

读服务器2获知自己是第一继承顺序并得到了锁,根据仲裁服务装置中存储的其余读服务器的最新的更新序列号,判断本地存储的最新的更新序列号是否是其中最大的更新序列号;由于读服务器2本地保存的最新的更新序列号为1008,而仲裁服务装置中存储的最大更新序列号为1009,从而判断本地存储的最新的更新序列号不是最大的更新序列号(也即不是最新的更新序列号,因为更新序列号是按照元数据的更新次数递增的);该读服务器2放弃锁,将锁让出给继承顺序中的下一个(第二继承顺序)读服务器4;

读服务器4重复读服务器2的比较判断过程,由于读服务器4本地保存的最新的更新序列号为1009,而仲裁服务装置中存储的最大更新序列号也为1009,因此,读服务器4判断本地存储的最新的更新序列号是仲裁服务装置中存储的最大的更新序列号,将其自身转换为写服务器(作为新的写服务器),并写入仲裁服务装置中;

其它的读服务器发现仲裁服务装置中已有服务器(即读服务器4)设置为写服务器,则设置自己为被同步的服务器,保持自己的读服务器身份;。

新仲裁出的写服务器拥有最大的更新序列号,其元数据的更新是最新的,为了使得各读服务器存储的元数据一致,该新仲裁出的写服务器(即读服务器4),将重发其最后一次更新的数据给其余读服务器,进行数据同步更新;即:读服务器4重发其最后一次更新的数据给读服务器1、读服务器2和读服务器3;其中,读服务器2和读服务器3接受更新,存储最新的更新序列号1009;读服务器1保存的最新更新序列号已是1009,表明之前已进行过相应更新,可以忽略已有更新,接受本次更新。

图7所示实例中,仲裁服务装置为独立于写服务器和读服务器的一个实体装置。当仲裁服务装置集成于各读服务器中时,可以预先设置任一读服务器中集成的仲裁服务装置为有权仲裁服务装置,当写服务器失效时,信令流程基本类似,各读服务器向设置的该有权仲裁服务装置发起仲裁请求。

为了避免有权仲裁服务装置所属读服务器转换为写服务器之后,若发生失效,下次仲裁新的写服务器时,各读服务器不知该向集成于哪一个读服务器中的仲裁服务装置发起仲裁请求,因此,当有权仲裁服务装置所属读服务器转换为写服务器时,由该所属读服务器随机选择一个其余读服务器中集成的仲裁服务装置作为下一任有权仲裁服务装置,并通知给各读服务器。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读取存储介质中,如:ROM/RAM、磁碟、光盘等。

综上所述,本发明由写服务器、至少两个读服务器和仲裁服务装置组成元数据服务系统。由于本发明提供的元数据服务系统中设置有至少两个读服务器,且当写服务器失效时,可以由读服务器其中之一转换为写服务器,因此,有效解决了单点失效问题。通过数据同步,多台读服务器存储一致的元数据,彼此可以互为备份,能满足大量并发访问需求;且由于多台读服务器并行设置,不需要多跳查询,每台读服务器可以直接接收客户端的读访问,读取效率高。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号