一种在分布式系统中实现多文件副本读写的方法与设备与流程

文档序号:11234124阅读:677来源:国知局
一种在分布式系统中实现多文件副本读写的方法与设备与流程

本申请涉及计算机领域,尤其涉及一种在分布式系统中实现多文件副本读写的技术。



背景技术:

随着大数据时代的来临,分布式数据存储应用越来越广泛,为保障数据安全避免数据损坏丢失,通常使用多副本实时写入的方式,即直至所有副本均写成功才返回用户写入成功。在这一方式实施过程中由于各种环境异常会引起部分副本写入失败,因此在失败情况下需要快速恢复写操作并保证副本间的数据一致性。现有技术,往往通过剔除异常的副本并先反馈用户写入成功后进行副本数据补齐,或剔除异常副本后先加入新的副本并在数据补齐后反馈用户写入成功,或通过将要写入数据以日志的方式记录并转储等方式对副本写入失败后进行恢复。

然而,现有技术在需要保证副本间一致性的情况下存在恢复读写安全风险高,等待延时长,后台流量大占用带宽等问题。且在允许数据可以随机改写的情况,这一过程需要保证写入的原子性,当这一情况下副本写入异常后现有技术在保证数据可靠性和强一致性上有所欠缺。



技术实现要素:

本申请的一个目的是提供一种在分布式系统中实现多文件副本读写的方法与设备,用以解决分布式存储系统中副本写异常后存在的延时以及无法保障强一致性的问题。

根据本申请的一个方面,本申请提供了一种在元数据服务器端用于在分布式系统中实现多文件副本读写的方法,该方法解决了分布式存储系统中副本写异常后存在的延时以及无法保障强一致性的问题,该方法包括:

接收对应用户设备基于文件写入异常发送的关于目标文件的重映射请求,其中,所述用户设备在对所述目标文件的第一文件副本执行写操作时获得所述文件写入异常;

根据所述重映射请求为所述用户设备重新分配多个副本服务器,并在每个副本服务器上建立所述目标文件的第二文件副本,其中,所述第二文件副本引用所述第一文件副本;

将所述第二文件副本的信息提供至所述用户设备。

根据本申请的另一个方面,本申请提供了一种在用户设备端用于在分布式系统中实现多文件副本读写的方法,该方法解决了分布式存储系统中副本写异常后存在的延时以及无法保障强一致性的问题,该方法包括:

若在对目标文件的第一文件副本执行写操作时获得文件写入异常,向对应元数据服务器发送对应的重映射请求;

接收所述元数据服务器基于所述重映射请求发送的、所述目标文件的第二文件副本的信息;

向所述元数据服务器为所述用户设备重新分配的多个副本服务器分别发送关于所述第二文件副本的读写请求,其中,每个副本服务器分别存储有所述第二文件副本。

根据本申请的另一个方面,本申请提供了一种在副本服务器端用于在分布式系统中实现多文件副本读写的方法,该方法解决了分布式存储系统中副本写异常后存在的延时以及无法保障强一致性的问题,该方法包括:

接收对应元数据服务器发送的文件副本建立请求;

根据所述文件副本建立请求建立对应目标文件的第二文件副本,其中,所述第二文件副本引用所述目标文件的第一文件副本;

接收对应用户设备对所述第二文件副本的读写请求。

根据本申请的另一个方面,本申请提供了一种用于在分布式系统中实现多文件副本读写的元数据服务器,该设备解决了分布式存储系统中副本写异常后存在的延时以及无法保障强一致性的问题,该设备包括:

重映射请求接收装置,用于接收对应用户设备基于文件写入异常发送的关于目标文件的重映射请求,其中,所述用户设备在对所述目标文件的第一文件副本执行写操作时获得所述文件写入异常;

副本服务器重分配装置,用于根据所述重映射请求为所述用户设备重新分配多个副本服务器,并在每个副本服务器上建立所述目标文件的第二文件副本,其中,所述第二文件副本引用所述第一文件副本;

第二文件副本信息反馈装置,用于将所述第二文件副本的信息提供至所述用户设备。

根据本申请的另一个方面,本申请提供了一种用于在分布式系统中实现多文件副本读写的用户设备,该设备解决了分布式存储系统中副本写异常后存在的延时以及无法保障强一致性的问题,该设备包括:

重映射请求发送装置,用于若在对目标文件的第一文件副本执行写操作时获得文件写入异常,向对应元数据服务器发送对应的重映射请求;

第二文件副本信息接收装置,用于接收所述元数据服务器基于所述重映射请求发送的、所述目标文件的第二文件副本的信息;

第二文件副本文件读写请求发送装置,用于向所述元数据服务器为所述用户设备重新分配的多个副本服务器分别发送关于所述第二文件副本的读写请求,其中,每个副本服务器分别存储有所述第二文件副本。

根据本申请的另一个方面,本申请提供了一种用于在分布式系统中实现多文件副本读写的副本服务器,该设备解决了分布式存储系统中副本写异常后存在的延时以及无法保障强一致性的问题,该设备包括:

文件副本建立请求接受装置,用于接收对应元数据服务器发送的文件副本建立请求;

第二文件副本建立装置,用于根据所述文件副本建立请求建立对应目标文件的第二文件副本,其中,所述第二文件副本引用所述目标文件的第一文件副本;

第二文件副本文件读写请求接受装置,用于接收对应用户设备对所述第二文件副本的读写请求。

根据本申请的另一个方面,本申请提供了一种用于在分布式系统中实现多文件副本读写的元数据服务器,其中,该设备包括:

处理器;

以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:

接收对应用户设备基于文件写入异常发送的关于目标文件的重映射请求,其中,所述用户设备在对所述目标文件的第一文件副本执行写操作时获得所述文件写入异常;

根据所述重映射请求为所述用户设备重新分配多个副本服务器,并在每个副本服务器上建立所述目标文件的第二文件副本,其中,所述第二文件副本引用所述第一文件副本;

将所述第二文件副本的信息提供至所述用户设备。

根据本申请的另一个方面,本申请提供了一种用于在分布式系统中实现多文件副本读写的用户设备,其中,该设备包括:

处理器;

以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:

若在对目标文件的第一文件副本执行写操作时获得文件写入异常,向对应元数据服务器发送对应的重映射请求;

接收所述元数据服务器基于所述重映射请求发送的、所述目标文件的第二文件副本的信息;

向所述元数据服务器为所述用户设备重新分配的多个副本服务器分别发送关于所述第二文件副本的读写请求,其中,每个副本服务器分别存储有所述第二文件副本。

根据本申请的另一个方面,本申请提供了一种用于在分布式系统中实现多文件副本读写的副本服务器,其中,该设备包括:

处理器;

以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:

接收对应元数据服务器发送的文件副本建立请求;

根据所述文件副本建立请求建立对应目标文件的第二文件副本,其中,所述第二文件副本引用所述目标文件的第一文件副本;

接收对应用户设备对所述第二文件副本的读写请求。

根据本申请的再一方面,还提供了一种用于在分布式系统中实现多文件副本读写的系统,解决了分布式存储系统中副本写异常后存在的延时以及无法保障强一致性的问题,其中,该系统包括如前所述根据本发明一个方面的一种用于在分布式系统中实现多文件副本读写的元数据服务器,如前所述根据本发明另一个方面的一种用于在分布式系统中实现多文件副本读写的用户设备,以及如前所述根据本发明另一个方面的一种用于在分布式系统中实现多文件副本读写的副本服务器。

与现有技术相比,本申请用户设备获得文件写入异常,向对应元数据服务器发送对应的重映射请求,元数据服务器重新分配多个副本服务器,并在每个副本服务器上建立目标文件的第二文件副本,所述第二文件副本引用第一文件副本,用户设备向所述元数据服务器为所述用户设备重新分配的多个副本服务器分别发送关于所述第二文件副本的读写请求,副本服务器接收并响应执行。即本申请通过建立新旧副本间的引用关系,在不中断读写的情况下进行新旧副本间的数据转储和响应,从而在副本写入发生异常后快速恢复读写,保证了数据的强一致性和可靠性,降低了在线写入的处理延时,减少后台转储流量消耗,提高系统的稳定性。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1示出根据本申请一个方面的元数据服务器端、用户设备端以及副本服务器端配合实现的一种用于在分布式系统中实现多文件副本读写的方法流程图;

图2示出根据本申请一个优选实例的一种用于在分布式系统中实现多文件副本读写的方法中的副本服务器端流程图;

图3示出根据本申请另一个优选实例的一种用于在分布式系统中实现多文件副本读写的方法中的元数据服务器端以及用户设备端配合工作流程图;

图4示出根据本申请另一个方面的元数据服务器、用户设备以及副本服务器配合实现的一种用于在分布式系统中实现多文件副本读写的设备示意图;

图5示出根据本申请另一个优选实例的一种用于在分布式系统中实现多文件副本读写的设备中副本服务器示意图;

图6示出根据本申请另一个优选实例的一种实现在分布式存储系统中执行文件写入的设备中元数据服务器以及用户设备配合使用示意图。

附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

下面结合附图对本申请作进一步详细描述。

在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

图1示出根据本申请一个方面的元数据服务器端、用户设备端以及副本服务器端配合实现的一种用于在分布式系统中实现多文件副本读写的方法流程图。所述元数据服务器端包括步骤s11、步骤s12、步骤s13;所述用户设备端包括步骤s21、步骤s22、步骤s23;所述副本服务器端包括步骤s31、步骤s32、步骤s33。

其中,在步骤s21中用户设备若在对目标文件的第一文件副本执行写操作时获得文件写入异常,向对应元数据服务器发送对应的重映射请求;在步骤s11中元数据服务器接收对应用户设备基于文件写入异常发送的关于目标文件的重映射请求,其中,所述用户设备在对所述目标文件的第一文件副本执行写操作时获得所述文件写入异常;在步骤s12中元数据服务器根据所述重映射请求为所述用户设备重新分配多个副本服务器,并在每个副本服务器上建立所述目标文件的第二文件副本,其中,所述第二文件副本引用所述第一文件副本;在步骤s31中副本服务器接收对应元数据服务器发送的文件副本建立请求;在步骤s32中副本服务器根据所述文件副本建立请求建立对应目标文件的第二文件副本,其中,所述第二文件副本引用所述目标文件的第一文件副本;在步骤s13中元数据服务器将所述第二文件副本的信息提供至所述用户设备;在步骤s22中用户设备接收所述元数据服务器基于所述重映射请求发送的、所述目标文件的第二文件副本的信息;在步骤s23中用户设备向所述元数据服务器为所述用户设备重新分配的多个副本服务器分别发送关于所述第二文件副本的读写请求,其中,每个副本服务器分别存储有所述第二文件副本;在步骤s33中副本服务器接收对应用户设备对所述第二文件副本的读写请求。

具体地,在步骤s21中用户设备若在对目标文件的第一文件副本执行写操作时获得文件写入异常,向对应元数据服务器发送对应的重映射请求;在步骤s11中元数据服务器接收对应用户设备基于文件写入异常发送的关于目标文件的重映射请求,其中,所述用户设备在对所述目标文件的第一文件副本执行写操作时获得所述文件写入异常。其中,所述用户设备端即客户端,多用于发起文件读写操作。所述元数据服务器端用于记录文件属性和对应文件副本所在的副本服务器信息,在此副本服务器管理文件副本,提供对所管理文件副本的读写操作。所述目标文件即为有读写需求的文件,在此用文件f代称。所述第一文件副本是指目标文件在写入时所建立的写入副本,多由用户设备提出目标文件的写入请求以后由元数据服务器反馈指定并存储在对应的副本服务器上,在此用fv1代称。例如,客户端向元数据服务器请求读写文件f,元数据服务器内部查表返回f当前副本镜像为fv1,即元数据服务器提供文件f至副本镜像fv1的映射,存储在a、b、c三台副本服务器上。所述文件写入异常即在目标文件的写入过程中发生的异常,包括但不限于网络异常、副本服务器自身异常等。前述异常信息由用户设备获取后,用户设备向元数据服务器发送建立新的目标文件映射,建立新的副本与目标文件的映射关系,其中,获取方式包括但不限于用户设备周期检测,或由副本服务器上报等。接上文举例,文件f的副本fv1在写入时a副本服务器出现异常,获取异常信息后客户端将请求元数据服务器重新映射文件f的副本。用户设备获取第一副本文件执行写操作时发生的异常并与元数据服务器通信要求重新映射,会使得发生异常后重映射建立迅速,从而目标文件得以在写异常后迅速切换副本,继续进行写入,保证快速恢复写入缩短延迟。

本领域技术人员应能理解上述用户设备向元数据服务器请求重映射的方式仅为举例,其他现有的或今后可能出现的用户设备向元数据服务器请求重映射的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

接着,在步骤s12中元数据服务器根据所述重映射请求为所述用户设备重新分配多个副本服务器,并在每个副本服务器上建立所述目标文件的第二文件副本,其中,所述第二文件副本引用所述第一文件副本;在步骤s31中副本服务器接收对应元数据服务器发送的文件副本建立请求。即元数据服务器根据用户设备所发送的重映射请求,为目标文件建立新的副本映射,并为新的副本分配相应的副本服务器,从而将副本建立在服务器上。所述第二文件副本是指基于元数据服务器为目标文件分配的新的映射所建立在各副本服务器上的的镜像副本,在此以fv2代称。所述副本服务器有一个以上,从而可以保障副本数据的安全,在某一副本服务器损坏或丢失后有备份可查。例如接上文举例,fv1当前写入时a副本服务器出现异常,客户端请求元数据服务器重新映射f文件为fv2,fv2包含了引用fv1的信息,在此假设fv2也有三个副本,对应重新分配的d、e、f三台副本服务器,元数据服务器将fv2三个副本需要存放在d、e、f三台副本服务器上的请求发送给相应的副本服务器,副本服务器d、e、f对请求进行接收。在此,所述第二文件副本引用所述第一文件副本是指所述第二文件副本的信息中包含第一副本文件引用或指向信息,例如,设置每个文件副本基本属性包含对另外文件的指向信息,这里用base属性代称,每个文件副本会有base属性,它指向另一个文件,fv2的base是fv1即表示f2是基于f1的内容修改完成,在此,所述文件副本的基本属性可以进行设置或是在现有的基本属性上进行添加但不限于此。所述第二文件副本引用所述第一文件副本的方式包括但不限于下述举例,在fv2的文件属性信息由键值对描述:base:fv1,或采用includexxx.h等方式进行记录。建立第二文件副本和第一副本文件之间的引用关系,使得第二文件副本在数据读写时可以从第一副本文件转存或读取自身没有的数据,从而快速切换副本使得写失败带来延时减少。

本领域技术人员应能理解上述第二文件副本引用第一文件副本的方式仅为举例,其他现有的或今后可能出现的第二文件副本引用第一文件副本的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

优选地,在步骤s12中元数据服务器根据所述重映射请求为所述用户设备重新分配多个副本服务器,并在每个副本服务器上建立所述目标文件的第二文件副本,其中,所述第二文件副本为空且引用所述第一文件副本。即元数据服务器根据用户设备所发送的重映射请求,为目标文件建立新的副本映射,并为新的副本分配相应的副本服务器,从而将副本建立在服务器上,在此,所建立的新的副本即为第二文件副本,在建立初始其所存储的数据为空,采用文件引用机制,这一机制即每个文件有基本属性,指向另一个文件,这里即为每个新建立的副本文件均包含对在其之前副本文件的引用信息,例如设置每个文件有基本数据,这里使用base属性代称,假设fv2的base是fv1,表示fv2是基于fv1的内容修改完成。接上文举例,如果写入时fv1所在的副本服务器a发生异常,则客户端请求元数据服务器重新映射f文件为fv2,fv2当前是空文件,它的base指向fv1,其中,fv2为新建的空文件,用于接替出现写入失败的副本文件fv1,并假设fv2也有三个副本存放在d、e、f三台副本服务器上,其中,新建的fv2即为第二副本文件,其刚建立时为空即投入使用不需要等待数据的转储,使得第二副本文件快速建立并接替fv1进行目标文件f的写入,从而在写入失败进一步降低延迟。

接着,在步骤s32中副本服务器根据所述文件副本建立请求建立对应目标文件的第二文件副本,其中,所述第二文件副本引用所述目标文件的第一文件副本。即副本服务器被分配给第二文件副本后,根据元数据服务器所发送的副本建立请求,将第二文件副本建立在各自的服务器上。即接上文举例,元数据服务器分配fv2三台新的副本服务器,将fv2三个副本分别存放在d、e、f三台副本服务器上。所建立的副本服务器上的第二副本文件均包含与第二文件副本的引用关系,即例如,fv2在三个副本服务器上的base属性均指向fv1,从而基于任一台副本服务器上的副本均能根据引用信息找到fv1的文件所在,进而读取其中的内容。

接着,在步骤s13中元数据服务器将所述第二文件副本的信息提供至所述用户设备;在步骤s22中元数据服务器用户设备接收所述元数据服务器基于所述重映射请求发送的、所述目标文件的第二文件副本的信息。即元数据服务器在建立文件与第二文件副本的映射后将第二文件副本的信息提供给用户设备,其中,所述第二文件副本的信息包括但不限于第二文件副本的名称、第二文件副本服务器相关信息等。用户设备接收重映射后的第二副本信息,从而在第二文件副本上进行相应的读写操作。接上文举例,客户端基于写失败请求重映射的完整过程即为如果fv1当前写入时a副本服务器出现异常,客户端请求元数据服务器重新映射f文件为fv2,fv2当前是空文件,它的base指向fv1,元数据服务器将fv2三个副本存放在d、e、f三台副本服务器,并将这些信息返回给客户端,是的客户端可以科技与第二文件副本信息进行读写操作,恢复因写失败造成的中断。因为第二副本文件建立映射后即将信息提供给用户设备,使得用户设备基于第二副本文件可以快速恢复读写。

优选地,所述设备还包括步骤s14(未示出),在步骤s14中元数据服务器通过数据复制补足所述第一文件副本。所述第一文件副本在出现写失败后,其所在的多个副本服务器上的副本数据不一定处于一致状态,通过数据复制进行数据补足,从而使得第一文件副本的有效数据不丢失,且在补足后副本处于可响应状态,从而第二文件副本根据引用关系可对第一文件副本的数据进行读取或转存。接上文举例,即元数据服务器对fv1发起后台复制,补足副本,从而使得fv1的有效数据丢失并处于可读取状态,这一过程是对fv1进行的,因此对恢复读写的时间基本无影响。

接着,在步骤s23中元数据服务器用户设备向所述元数据服务器为所述用户设备重新分配的多个副本服务器分别发送关于所述第二文件副本的读写请求,其中,每个副本服务器分别存储有所述第二文件副本;在步骤s33中副本服务器接收对应用户设备对所述第二文件副本的读写请求。即用户设备根据所受到的重新映射后的第二副本文件的信息进行读写,读写时的副本为第二副本文件,因此将读写请求发送至第二副本文件所在的所有副本服务器。第二副本文件对应的副本服务器接收到读写请求后即执行具体的读写请求。接上文举例,即为客户端继续将f的读写请求发送到d、e、f副本服务器,对fv2的请求读写,fv2开始接受所有f文件的读写请求,写请求发送到d、e、f都写成功后返回成功,读请求发送到fv2副本后,如果数据范围已存在于fv2文件内则直接返回数据,否则请求b、c上fv1的副本来读取数据。第二副本文件所在副本服务器接收读写请求后读写操作即可恢复,因为第二副本文件的副本服务器数量与之前第一副本文件等同,因此不会牺牲数据读写的可靠性,同时因为第二副本文件包含对第一副本文件的引用信息,在读数据时可以直接从第一副本文件进行读取,从而节约了在重新读写之前的数据转存时间,使得出现副本写异常快速恢复,保证在线写入的低延迟。

本领域技术人员应能理解上述在第二文件副本服务器上响应读写请求的方式仅为举例,其他现有的或今后可能出现的在第二文件副本服务器上响应读写请求的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

图2示出根据本申请一个优选实例的一种用于在分布式系统中实现多文件副本读写的方法中的副本服务器端流程图。所述副本服务器端包括步骤s31、步骤s32、步骤s33、步骤s34、步骤s35、步骤s36、步骤s37。

其中,在步骤s31中副本服务器接收对应元数据服务器发送的文件副本建立请求;在步骤s32中副本服务器根据所述文件副本建立请求建立对应目标文件的第二文件副本,其中,所述第二文件副本引用所述目标文件的第一文件副本;在步骤s33中副本服务器接收对应用户设备对所述第二文件副本的读写请求;在步骤s34中副本服务器根据所述用户设备对所述第二文件副本的读请求,读取所述读请求对应的数据;在步骤s35中副本服务器将所述读请求对应的数据返回至所述用户设备;在步骤s36中副本服务器根据所述用户设备对所述第二文件副本的写请求,对所述第二文件副本执行写操作;在步骤s37中副本服务器若所述写操作执行成功,向所述用户设备返回写成功信息。

在此,图2中的步骤s31、步骤s32、步骤s33与图1中的步骤s31、步骤s32、步骤s33相同或相似,在此不再赘述。

具体地,副本服务器端所接受读写请求中,若为读请求则在步骤s34中副本服务器根据所述用户设备对所述第二文件副本的读请求,读取所述读请求对应的数据;接着,在步骤s35中副本服务器将所述读请求对应的数据返回至所述用户设备。即用户设备在需要进行读操作时对第二文件副本所在的副本服务器发送度请求,副本服务器收到读请求后进行相应的响应。接上文举例,即为客户端向fv2所在的副本服务器d、e、f发送读请求,副本服务器d、e、f接收到读请求即在fv2查询相应数据进行反馈,其中,fv2未有的数据可根据引用信息向之前的副本文件进行查询,从而对读请求进行反馈。

优选地,在步骤s34中副本服务器若所述第二文件副本包含所述读请求对应的数据,从所述第二文件副本读取所述读请求对应的数据;否则,从所述第一文件副本读取所述读请求对应的数据。即当副本服务器收到读请求后会对第二文件副本的数据内容进行查找,若存在读请求所需的所需数据则进行相应反馈,若不存在读请求所需数据则根据第二文件副本中所包含的与第一文件副本的引用关系,到第一文件副本中进行查找并对读请求进行反馈。其中,根据引用关系从第一文件副本读取读请求对应数据的方法包括但不限于根据引用关系中的地址或其它指向数据向第一文件副本转发读请求,并由第一文件副本将数据反馈至第二文件副本进而进行进一步反馈。接上文举例,第二副本文件对应的副本服务器接到读请求后,如果读请求的数据在fv2文件中存在,则fv2副本服务器直接返回结果;如果发现数据不存在,则需要从base的fv1读取,它向fv1的副本服务器转发读请求,fv1副本服务器返回数据给fv2副本服务器,然后由fv2副本服务器返回给客户端。根据第二文件副本中包含的与第一副本文件的引用关系,将第二文件副本所没有的数据进行读取并反馈,使得第二文件副本可以正常对读请求进行响应,且不需要数据预先转存即可以进行操作,使得第二文件副本建立后恢复响应的时间缩短。

本领域技术人员应能理解上述从第一文件副本读取读请求对应数据的方式仅为举例,其他现有的或今后可能出现的从第一文件副本读取读请求对应数据的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

优选地,所述设备还包括步骤s38(未示出),在步骤s38中副本服务器将所述第一文件副本中的数据写入所述第二文件副本。即将第二文件副本中没有且第一文件副本中有的数据转存或写回到第二文件副本,从而使得第二文件副本的数据被补足。其中,第一文件副本中数据写入第二文件副本的方法包括但不限于,每次从第一副本文件读取数据时启动写入,定期利用闲时进行写入等。接上文举例,fv2副本服务器可以后台主动将fv1的有用数据主动写回到fv2副本,主要采用lazy写回,主动写回发生在总要从fv1拿数据的时候,相当于readahead。在此,这一写入可以写入此时所需要读的数据,或就此持续进行写入,写入的停止条件可以是检测是否第一副本文件的所有有效数据是否都已经在第二副本文件上。将所述第一文件副本中的数据写入所述第二文件副本使得写失败之前的数据得以被转存至新的副本,从而保证了数据的完整。

本领域技术人员应能理解上述第一文件副本中数据写入第二文件副本的方式仅为举例,其他现有的或今后可能出现的第一文件副本中数据写入第二文件副本的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

优选地,所述设备还包括步骤s39(未示出),在步骤s39中副本服务器若所述第二文件副本已包括所述第一文件副本中所有数据,删除所述第二文件副本对所述第一文件副本的引用关系。即接上文所述,若检测第一文件副本中所有数据均已写入第二文件副本,则将第二文件副本中所包含的对第一文件副本的引用信息删除。同时被引用的第一文件副本可对被引用的关系进行记录,在删除时,第二文件副本和第一文件上引用和被应用信息均被删除,第一文件副本对被引用数目进行监测,若引用数变为零,则可以对第一文件副本进行回收,从而释放相应资源,例如,当发现所有有效数据已经在fv2上时,可以解除对fv1的base关系,如果fv1被引用数变为0,fv1将被回收。

其中,第二文件副本与第一文件副本记录引用信息采用的是文件引用机制,这一机制的使用可举例为,每个文件会有基本属性,例如base属性,它指向另一个文件。假设文件f2的base是文件f1,表示f2是基于f1的内容修改完成,当读f2的数据时,如果访问数据已更新到f2上,f2直接返回数据给客户端;如果f2上没有这部分数据,表明数据当前没有更新,仍存储在basef1文件里,f2会转发请求给f1,读取相应的数据。f2可以选择把从f1读取的数据转储到自身,这样后续从f2读取数据不再需要转发。如果f2发现所有依赖f1的数据都已存在于自身,它可以解除与f1的base关系。这样如果f1没有被其它文件引用,可以被删除回收空间。

本领域技术人员应能理解上述文件引用机制仅为举例,其他现有的或今后可能出现的文件引用机制如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

接着,副本服务器端所接受读写请求中,若为写请求则在步骤s36中副本服务器根据所述用户设备对所述第二文件副本的写请求,对所述第二文件副本执行写操作;接着,在步骤s37中副本服务器若所述写操作执行成功,向所述用户设备返回写成功信息。优选地,所述方法还包括步骤s24(未示出),在步骤s24中用户设备若接收到所述重新分配的多个副本服务器中每个副本服务器返回的写成功信息,确认对应写请求完成。

即副本服务器接到用户设备所发送的写请求后,即对第二文件副本执行写操作,当第二文件副本所在的服务器均返回用户设备写成功后,用户设备即认为写成功,并向用户反馈写成功的相关信息。接上文举例,对fv2的写与fv1一致,需要等d、e、f副本服务器都返回成功才返回用户成功,从而完成多文件副本的写入。

优选地,所述设备还包括步骤s310(未示出),在步骤s310中副本服务器若所述写操作执行失败,向所述用户设备报告文件写入异常。即,若在对第二副本文件的写入过程出现写失败,则反馈写入异常至用户设备,进而用户设备再次向元数据服务器申请重映射重复上文所述的相关步骤。接上文举例即为,如果fv2写入过程中出现有副本服务器异常,由客户端再次申请fv3的副本映射,由fv3接替fv2进行读写操作,fv3中包含对fv2的引用,从而继续进行写失败的快速恢复处理。

图3示出根据本申请另一个优选实例的一种用于在分布式系统中实现多文件副本读写的方法中的元数据服务器端以及用户设备端配合工作流程图。所述元数据服务器端包括步骤s15、步骤s16、步骤s17;所述用户设备端包括步骤s25、步骤s26、步骤s27。

其中,在步骤s25中用户设备向对应元数据服务器发送关于目标文件的读写请求;在步骤s15中元数据服务器接收用户设备发的送关于目标文件的读写请求;在步骤s16中元数据服务器根据所述关于目标文件的读写请求为所述用户设备分配多个副本服务器,并在每个副本服务器上建立所述目标文件的第一文件副本;在步骤s17中元数据服务器将所述第一文件副本的信息提供至所述用户设备;在步骤s26中用户设备接收所述元数据服务器基于所述关于目标文件的读写请求发送的、所述目标文件的第一文件副本的信息;在步骤s27中用户设备向所述元数据服务器为所述用户设备分配的多个副本服务器分别发送关于所述第一文件副本的读写请求,其中,每个副本服务器分别存储有所述第一文件副本。

具体地,在步骤s25中用户设备向对应元数据服务器发送关于目标文件的读写请求;在步骤s15中元数据服务器接收用户设备发的送关于目标文件的读写请求。是指在初次进行读写时,用户设备向元数据服务器发送读写请求,元数据服务器接收关于目标文件的读写请求后对目标文件的副本及其多个副本服务器进行指定。例如假设用户逻辑操作的文件名是f,副本服务器存储f副本的名称为fv1,元数据服务器提供f到fv1的映射关系,即客户端向元数据服务器请求读写f,元数据服务器接收并进行响应。这一过程为目标文件的读写启动和准备阶段,设置副本保障数据安全,防止数据的丢失和损坏。

接着,在步骤s16中元数据服务器根据所述关于目标文件的读写请求为所述用户设备分配多个副本服务器,并在每个副本服务器上建立所述目标文件的第一文件副本。是指元数据服务器基于所接收的读写请去,为目标文件分配副本文件并建立相应的映射,同时指定对应的副本所在服务器,并将所分配的副本文件在每个服务器上进行建立。例如,客户端向元数据服务器请求读写f的时候,元数据服务器通过内部查表得知当前文件副本名称为fv1,存储在a、b、c三台副本服务器上。分配副本服务器是的每个副本有相应的服务器负责,从而在某一台服务器出现故障而导致写失败时或数据异常时,其它服务器上的副本数据不受影响。

接着,在步骤s17中元数据服务器将所述第一文件副本的信息提供至所述用户设备;在步骤s26中用户设备接收所述元数据服务器基于所述关于目标文件的读写请求发送的、所述目标文件的第一文件副本的信息。是指用户设备接收到元数据服务器发送的相应的映射的第一副本文件及其服务器信息,在此这一信息中包括但不限于服务器位置信息,从而可以基于此向相应的副本服务器发送相应的读写信息,开始对目标文件的读写操作。例如,元数据服务器将fv1的相关信息及其副本服务器信息发送给客户端,客户端基于此进行进一步的读写操作。

接着,在步骤s27中用户设备向所述元数据服务器为所述用户设备分配的多个副本服务器分别发送关于所述第一文件副本的读写请求,其中,每个副本服务器分别存储有所述第一文件副本。即用户设备向第一副本文件所在的副本服务器发送读写请求,从而相应的服务器进行执行。例如,客户端写入请求直接发给a、b、c三个fv1的副本服务器,当全部写成功时返回用户成功。

综合上文所有举例,整体的流程整体举例如下:客户端向元数据服务器请求读写文件f。元数据服务器内部查表返回f当前副本镜像为fv1,存储在a、b、c三台副本服务器上。客户端直接将读写请求发送到a、b、c副本服务器,对fv1请求读写。所有副本写入成功后返回用户成功。如果fv1当前写入时a副本服务器出现异常,客户端请求元数据服务器重新映射f文件为fv2,fv2当前是空文件,它的base指向fv1。元数据服务器将fv2三个副本存放在d、e、f三台副本服务器,并将这些信息返回给客户端。元数据服务器对fv1发起后台复制,补足三个副本。客户端继续将f的读写请求发送到d、e、f副本服务器,对fv2的请求读写。如果读请求的数据在fv2文件中存在,则fv2副本服务器直接返回结果;如果发现数据不存在,则需要从base的fv1读取,它向fv1的副本服务器转发读请求。fv1副本服务器返回数据给fv2副本服务器,然后由fv2副本服务器返回给客户端。fv2副本服务器可以后台主动将fv1的有用数据主动写回到fv2副本,当发现所有有效数据已经在fv2上时,可以解除对fv1的base关系。如果fv1被引用数变成0,fv1将被回收。对fv2的写与fv1一致,需要等d、e、f副本服务器都返回成功才返回用户成功。如果fv2写入过程中出现有副本服务器异常,需要进行前述类似的恢复读写过程。

上述异常的恢复过程中,时间消耗非常小,保证了快速恢复写的低延迟。通过引用机制,随着数据不断写入和后台转储,转发会被直接读取替代。最后,没有日志带来的每次写数据的转储流量,只有在异常发生时才有转储发生,提高了系统的有效读写带宽。

图4示出根据本申请另一个方面的元数据服务器、用户设备以及副本服务器配合实现的一种用于在分布式系统中实现多文件副本读写的设备示意图。所述元数据服务器包括重映射请求接收装置111、副本服务器重分配装置112、第二文件副本信息反馈装置113;所述用户设备包括重映射请求发送装置121、第二文件副本信息接收装置122、第二文件副本文件读写请求发送装置123;所述副本服务器包括文件副本建立请求接受装置131、第二文件副本建立装置132、第二文件副本文件读写请求接受装置133。

其中,用户设备中重映射请求发送装置121若在对目标文件的第一文件副本执行写操作时获得文件写入异常,向对应元数据服务器发送对应的重映射请求;元数据服务器中重映射请求接收装置111接收对应用户设备基于文件写入异常发送的关于目标文件的重映射请求,其中,所述用户设备在对所述目标文件的第一文件副本执行写操作时获得所述文件写入异常;元数据服务器中副本服务器重分配装置112根据所述重映射请求为所述用户设备重新分配多个副本服务器,并在每个副本服务器上建立所述目标文件的第二文件副本,其中,所述第二文件副本引用所述第一文件副本;副本服务器中文件副本建立请求接受装置131接收对应元数据服务器发送的文件副本建立请求;副本服务器中第二文件副本建立装置132根据所述文件副本建立请求建立对应目标文件的第二文件副本,其中,所述第二文件副本引用所述目标文件的第一文件副本;元数据服务器中第二文件副本信息反馈装置113将所述第二文件副本的信息提供至所述用户设备;用户设备中第二文件副本信息接收装置122接收所述元数据服务器基于所述重映射请求发送的、所述目标文件的第二文件副本的信息;用户设备中第二文件副本文件读写请求发送装置123向所述元数据服务器为所述用户设备重新分配的多个副本服务器分别发送关于所述第二文件副本的读写请求,其中,每个副本服务器分别存储有所述第二文件副本;副本服务器中第二文件副本文件读写请求接受装置133接收对应用户设备对所述第二文件副本的读写请求。

具体地,用户设备中重映射请求发送装置121若在对目标文件的第一文件副本执行写操作时获得文件写入异常,向对应元数据服务器发送对应的重映射请求;元数据服务器中重映射请求接收装置111接收对应用户设备基于文件写入异常发送的关于目标文件的重映射请求,其中,所述用户设备在对所述目标文件的第一文件副本执行写操作时获得所述文件写入异常。其中,所述用户设备端即客户端,多用于发起文件读写操作。所述元数据服务器端用于记录文件属性和对应文件副本所在的副本服务器信息,在此副本服务器管理文件副本,提供对所管理文件副本的读写操作。所述目标文件即为有读写需求的文件,在此用文件f代称。所述第一文件副本是指目标文件在写入时所建立的写入副本,多由用户设备提出目标文件的写入请求以后由元数据服务器反馈指定并存储在对应的副本服务器上,在此用fv1代称。例如,客户端向元数据服务器请求读写文件f,元数据服务器内部查表返回f当前副本镜像为fv1,即元数据服务器提供文件f至副本镜像fv1的映射,存储在a、b、c三台副本服务器上。所述文件写入异常即在目标文件的写入过程中发生的异常,包括但不限于网络异常、副本服务器自身异常等。前述异常信息由用户设备获取后,用户设备向元数据服务器发送建立新的目标文件映射,建立新的副本与目标文件的映射关系,其中,获取方式包括但不限于用户设备周期检测,或由副本服务器上报等。接上文举例,文件f的副本fv1在写入时a副本服务器出现异常,获取异常信息后客户端将请求元数据服务器重新映射文件f的副本。用户设备获取第一副本文件执行写操作时发生的异常并与元数据服务器通信要求重新映射,会使得发生异常后重映射建立迅速,从而目标文件得以在写异常后迅速切换副本,继续进行写入,保证快速恢复写入缩短延迟。

本领域技术人员应能理解上述用户设备向元数据服务器请求重映射的方式仅为举例,其他现有的或今后可能出现的用户设备向元数据服务器请求重映射的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

接着,元数据服务器中副本服务器重分配装置112根据所述重映射请求为所述用户设备重新分配多个副本服务器,并在每个副本服务器上建立所述目标文件的第二文件副本,其中,所述第二文件副本引用所述第一文件副本;副本服务器中文件副本建立请求接受装置131接收对应元数据服务器发送的文件副本建立请求。即元数据服务器根据用户设备所发送的重映射请求,为目标文件建立新的副本映射,并为新的副本分配相应的副本服务器,从而将副本建立在服务器上。所述第二文件副本是指基于元数据服务器为目标文件分配的新的映射所建立在各副本服务器上的的镜像副本,在此以fv2代称。所述副本服务器有一个以上,从而可以保障副本数据的安全,在某一副本服务器损坏或丢失后有备份可查。例如接上文举例,fv1当前写入时a副本服务器出现异常,客户端请求元数据服务器重新映射f文件为fv2,fv2包含了引用fv1的信息,在此假设fv2也有三个副本,对应重新分配的d、e、f三台副本服务器,元数据服务器将fv2三个副本需要存放在d、e、f三台副本服务器上的请求发送给相应的副本服务器,副本服务器d、e、f对请求进行接收。在此,所述第二文件副本引用所述第一文件副本是指所述第二文件副本的信息中包含第一副本文件引用或指向信息,例如,设置每个文件副本基本属性包含对另外文件的指向信息,这里用base属性代称,每个文件副本会有base属性,它指向另一个文件,fv2的base是fv1即表示f2是基于f1的内容修改完成,在此,所述文件副本的基本属性可以进行设置或是在现有的基本属性上进行添加但不限于此。所述第二文件副本引用所述第一文件副本的方式包括但不限于下述举例,在fv2的文件属性信息由键值对描述:base:fv1,或采用includexxx.h等方式进行记录。建立第二文件副本和第一副本文件之间的引用关系,使得第二文件副本在数据读写时可以从第一副本文件转存或读取自身没有的数据,从而快速切换副本使得写失败带来延时减少。

本领域技术人员应能理解上述第二文件副本引用第一文件副本的方式仅为举例,其他现有的或今后可能出现的第二文件副本引用第一文件副本的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

优选地,所述副本服务器重分配装置112根据所述重映射请求为所述用户设备重新分配多个副本服务器,并在每个副本服务器上建立所述目标文件的第二文件副本,其中,所述第二文件副本为空且引用所述第一文件副本。即元数据服务器根据用户设备所发送的重映射请求,为目标文件建立新的副本映射,并为新的副本分配相应的副本服务器,从而将副本建立在服务器上,在此,所建立的新的副本即为第二文件副本,在建立初始其所存储的数据为空,采用文件引用机制,这一机制即每个文件有基本属性,指向另一个文件,这里即为每个新建立的副本文件均包含对在其之前副本文件的引用信息,例如设置每个文件有基本数据,这里使用base属性代称,假设fv2的base是fv1,表示fv2是基于fv1的内容修改完成。接上文举例,如果写入时fv1所在的副本服务器a发生异常,则客户端请求元数据服务器重新映射f文件为fv2,fv2当前是空文件,它的base指向fv1,其中,fv2为新建的空文件,用于接替出现写入失败的副本文件fv1,并假设fv2也有三个副本存放在d、e、f三台副本服务器上,其中,新建的fv2即为第二副本文件,其刚建立时为空即投入使用不需要等待数据的转储,使得第二副本文件快速建立并接替fv1进行目标文件f的写入,从而在写入失败进一步降低延迟。

接着,副本服务器中第二文件副本建立装置132根据所述文件副本建立请求建立对应目标文件的第二文件副本,其中,所述第二文件副本引用所述目标文件的第一文件副本。即副本服务器被分配给第二文件副本后,根据元数据服务器所发送的副本建立请求,将第二文件副本建立在各自的服务器上。即接上文举例,元数据服务器分配fv2三台新的副本服务器,将fv2三个副本分别存放在d、e、f三台副本服务器上。所建立的副本服务器上的第二副本文件均包含与第二文件副本的引用关系,即例如,fv2在三个副本服务器上的base属性均指向fv1,从而基于任一台副本服务器上的副本均能根据引用信息找到fv1的文件所在,进而读取其中的内容。

接着,元数据服务器中第二文件副本信息反馈装置113将所述第二文件副本的信息提供至所述用户设备;用户设备中第二文件副本信息接收装置122接收所述元数据服务器基于所述重映射请求发送的、所述目标文件的第二文件副本的信息。即元数据服务器在建立文件与第二文件副本的映射后将第二文件副本的信息提供给用户设备,其中,所述第二文件副本的信息包括但不限于第二文件副本的名称、第二文件副本服务器相关信息等。用户设备接收重映射后的第二副本信息,从而在第二文件副本上进行相应的读写操作。接上文举例,客户端基于写失败请求重映射的完整过程即为如果fv1当前写入时a副本服务器出现异常,客户端请求元数据服务器重新映射f文件为fv2,fv2当前是空文件,它的base指向fv1,元数据服务器将fv2三个副本存放在d、e、f三台副本服务器,并将这些信息返回给客户端,是的客户端可以科技与第二文件副本信息进行读写操作,恢复因写失败造成的中断。因为第二副本文件建立映射后即将信息提供给用户设备,使得用户设备基于第二副本文件可以快速恢复读写。

优选地,所述设备还包括副本补足装置114(未示出),所述副本补足装置114通过数据复制补足所述第一文件副本。所述第一文件副本在出现写失败后,其所在的多个副本服务器上的副本数据不一定处于一致状态,通过数据复制进行数据补足,从而使得第一文件副本的有效数据不丢失,且在补足后副本处于可响应状态,从而第二文件副本根据引用关系可对第一文件副本的数据进行读取或转存。接上文举例,即元数据服务器对fv1发起后台复制,补足副本,从而使得fv1的有效数据丢失并处于可读取状态,这一过程是对fv1进行的,因此对恢复读写的时间基本无影响。

接着,用户设备中第二文件副本文件读写请求发送装置123向所述元数据服务器为所述用户设备重新分配的多个副本服务器分别发送关于所述第二文件副本的读写请求,其中,每个副本服务器分别存储有所述第二文件副本;副本服务器中第二文件副本文件读写请求接受装置133接收对应用户设备对所述第二文件副本的读写请求。即用户设备根据所受到的重新映射后的第二副本文件的信息进行读写,读写时的副本为第二副本文件,因此将读写请求发送至第二副本文件所在的所有副本服务器。第二副本文件对应的副本服务器接收到读写请求后即执行具体的读写请求。接上文举例,即为客户端继续将f的读写请求发送到d、e、f副本服务器,对fv2的请求读写,fv2开始接受所有f文件的读写请求,写请求发送到d、e、f都写成功后返回成功,读请求发送到fv2副本后,如果数据范围已存在于fv2文件内则直接返回数据,否则请求b、c上fv1的副本来读取数据。第二副本文件所在副本服务器接收读写请求后读写操作即可恢复,因为第二副本文件的副本服务器数量与之前第一副本文件等同,因此不会牺牲数据读写的可靠性,同时因为第二副本文件包含对第一副本文件的引用信息,在读数据时可以直接从第一副本文件进行读取,从而节约了在重新读写之前的数据转存时间,使得出现副本写异常快速恢复,保证在线写入的低延迟。

本领域技术人员应能理解上述在第二文件副本服务器上响应读写请求的方式仅为举例,其他现有的或今后可能出现的在第二文件副本服务器上响应读写请求的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

图5示出根据本申请另一个优选实例的一种用于在分布式系统中实现多文件副本读写的设备中副本服务器示意图。所述副本服务器包括文件副本建立请求接受装置231、第二文件副本建立装置232、第二文件副本文件读写请求接受装置233、读请求响应装置234、读请求反馈装置235、写请求响应装置236、写请求反馈装置237。

其中,文件副本建立请求接受装置231接收对应元数据服务器发送的文件副本建立请求;第二文件副本建立装置232根据所述文件副本建立请求建立对应目标文件的第二文件副本,其中,所述第二文件副本引用所述目标文件的第一文件副本;第二文件副本文件读写请求接受装置233接收对应用户设备对所述第二文件副本的读写请求;读请求响应装置234根据所述用户设备对所述第二文件副本的读请求,读取所述读请求对应的数据;读请求反馈装置235将所述读请求对应的数据返回至所述用户设备;写请求响应装置236根据所述用户设备对所述第二文件副本的写请求,对所述第二文件副本执行写操作;写请求反馈装置237若所述写操作执行成功,向所述用户设备返回写成功信息。

在此,图5中的文件副本建立请求接受装置231、第二文件副本建立装置232、第二文件副本文件读写请求接受装置233与图4中的文件副本建立请求接受装置131、第二文件副本建立装置132、第二文件副本文件读写请求接受装置133相同或相似,在此不再赘述。

具体地,副本服务器所接受读写请求中,若为读请求则所述读请求响应装置234根据所述用户设备对所述第二文件副本的读请求,读取所述读请求对应的数据;接着,读请求反馈装置235将所述读请求对应的数据返回至所述用户设备。即用户设备在需要进行读操作时对第二文件副本所在的副本服务器发送度请求,副本服务器收到读请求后进行相应的响应。接上文举例,即为客户端向fv2所在的副本服务器d、e、f发送读请求,副本服务器d、e、f接收到读请求即在fv2查询相应数据进行反馈,其中,fv2未有的数据可根据引用信息向之前的副本文件进行查询,从而对读请求进行反馈。

优选地,所述读请求响应装置234若所述第二文件副本包含所述读请求对应的数据,从所述第二文件副本读取所述读请求对应的数据;否则,从所述第一文件副本读取所述读请求对应的数据。即当副本服务器收到读请求后会对第二文件副本的数据内容进行查找,若存在读请求所需的所需数据则进行相应反馈,若不存在读请求所需数据则根据第二文件副本中所包含的与第一文件副本的引用关系,到第一文件副本中进行查找并对读请求进行反馈。其中,根据引用关系从第一文件副本读取读请求对应数据的方法包括但不限于根据引用关系中的地址或其它指向数据向第一文件副本转发读请求,并由第一文件副本将数据反馈至第二文件副本进而进行进一步反馈。接上文举例,第二副本文件对应的副本服务器接到读请求后,如果读请求的数据在fv2文件中存在,则fv2副本服务器直接返回结果;如果发现数据不存在,则需要从base的fv1读取,它向fv1的副本服务器转发读请求,fv1副本服务器返回数据给fv2副本服务器,然后由fv2副本服务器返回给客户端。根据第二文件副本中包含的与第一副本文件的引用关系,将第二文件副本所没有的数据进行读取并反馈,使得第二文件副本可以正常对读请求进行响应,且不需要数据预先转存即可以进行操作,使得第二文件副本建立后恢复响应的时间缩短。

本领域技术人员应能理解上述从第一文件副本读取读请求对应数据的方式仅为举例,其他现有的或今后可能出现的从第一文件副本读取读请求对应数据的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

优选地,所述设备还包括数据写入装置238(未示出),所述数据写入装置238将所述第一文件副本中的数据写入所述第二文件副本。即将第二文件副本中没有且第一文件副本中有的数据转存或写回到第二文件副本,从而使得第二文件副本的数据被补足。其中,第一文件副本中数据写入第二文件副本的方法包括但不限于,每次从第一副本文件读取数据时启动写入,定期利用闲时进行写入等。接上文举例,fv2副本服务器可以后台主动将fv1的有用数据主动写回到fv2副本,主要采用lazy写回,主动写回发生在总要从fv1拿数据的时候,相当于readahead。在此,这一写入可以写入此时所需要读的数据,或就此持续进行写入,写入的停止条件可以是检测是否第一副本文件的所有有效数据是否都已经在第二副本文件上。将所述第一文件副本中的数据写入所述第二文件副本使得写失败之前的数据得以被转存至新的副本,从而保证了数据的完整。

本领域技术人员应能理解上述第一文件副本中数据写入第二文件副本的方式仅为举例,其他现有的或今后可能出现的第一文件副本中数据写入第二文件副本的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

优选地,所述设备还包括副本引用关系删除装置239(未示出),所述副本引用关系删除装置239若所述第二文件副本已包括所述第一文件副本中所有数据,删除所述第二文件副本对所述第一文件副本的引用关系。即接上文所述,若检测第一文件副本中所有数据均已写入第二文件副本,则将第二文件副本中所包含的对第一文件副本的引用信息删除。同时被引用的第一文件副本可对被引用的关系进行记录,在删除时,第二文件副本和第一文件上引用和被应用信息均被删除,第一文件副本对被引用数目进行监测,若引用数变为零,则可以对第一文件副本进行回收,从而释放相应资源,例如,当发现所有有效数据已经在fv2上时,可以解除对fv1的base关系,如果fv1被引用数变为0,fv1将被回收。

其中,第二文件副本与第一文件副本记录引用信息采用的是文件引用机制,这一机制的使用可举例为,每个文件会有基本属性,例如base属性,它指向另一个文件。假设文件f2的base是文件f1,表示f2是基于f1的内容修改完成,当读f2的数据时,如果访问数据已更新到f2上,f2直接返回数据给客户端;如果f2上没有这部分数据,表明数据当前没有更新,仍存储在basef1文件里,f2会转发请求给f1,读取相应的数据。f2可以选择把从f1读取的数据转储到自身,这样后续从f2读取数据不再需要转发。如果f2发现所有依赖f1的数据都已存在于自身,它可以解除与f1的base关系。这样如果f1没有被其它文件引用,可以被删除回收空间。

本领域技术人员应能理解上述文件引用机制仅为举例,其他现有的或今后可能出现的文件引用机制如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

接着,副本服务器所接受读写请求中,若为写请求则所述写请求响应装置236根据所述用户设备对所述第二文件副本的写请求,对所述第二文件副本执行写操作;接着,写请求反馈装置237若所述写操作执行成功,向所述用户设备返回写成功信息。优选地,所述设备还包括写成功确认装置124(未示出),所述写成功确认装置124若接收到所述重新分配的多个副本服务器中每个副本服务器返回的写成功信息,确认对应写请求完成。

即副本服务器接到用户设备所发送的写请求后,即对第二文件副本执行写操作,当第二文件副本所在的服务器均返回用户设备写成功后,用户设备即认为写成功,并向用户反馈写成功的相关信息。接上文举例,对fv2的写与fv1一致,需要等d、e、f副本服务器都返回成功才返回用户成功,从而完成多文件副本的写入。

优选地,所述设备还包括写失败反馈装置2310(未示出),所述写失败反馈装置2310若所述写操作执行失败,向所述用户设备报告文件写入异常。即,若在对第二副本文件的写入过程出现写失败,则反馈写入异常至用户设备,进而用户设备再次向元数据服务器申请重映射重复上文所述的相关步骤。接上文举例即为,如果fv2写入过程中出现有副本服务器异常,由客户端再次申请fv3的副本映射,由fv3接替fv2进行读写操作,fv3中包含对fv2的引用,从而继续进行写失败的快速恢复处理。

图6示出根据本申请另一个优选实例的一种实现在分布式存储系统中执行文件写入的设备中元数据服务器以及用户设备配合使用示意图。所述元数据服务器包括读写请求接收装置315、副本服务器分配装置316、第一文件副本信息反馈装置317;所述用户设备包括读写请求发送装置325、第一文件副本信息接收装置326、第一文件副本文件读写请求发送装置327。

其中,用户设备中读写请求发送装置325向对应元数据服务器发送关于目标文件的读写请求;元数据服务器中读写请求接收装置315接收用户设备发的送关于目标文件的读写请求;元数据服务器中副本服务器分配装置316根据所述关于目标文件的读写请求为所述用户设备分配多个副本服务器,并在每个副本服务器上建立所述目标文件的第一文件副本;元数据服务器中第一文件副本信息反馈装置317将所述第一文件副本的信息提供至所述用户设备;用户设备中第一文件副本信息接收装置326接收所述元数据服务器基于所述关于目标文件的读写请求发送的、所述目标文件的第一文件副本的信息;用户设备中第一文件副本文件读写请求发送装置327向所述元数据服务器为所述用户设备分配的多个副本服务器分别发送关于所述第一文件副本的读写请求,其中,每个副本服务器分别存储有所述第一文件副本。

具体地,用户设备中读写请求发送装置325向对应元数据服务器发送关于目标文件的读写请求;元数据服务器中读写请求接收装置315接收用户设备发的送关于目标文件的读写请求。是指在初次进行读写时,用户设备向元数据服务器发送读写请求,元数据服务器接收关于目标文件的读写请求后对目标文件的副本及其多个副本服务器进行指定。例如假设用户逻辑操作的文件名是f,副本服务器存储f副本的名称为fv1,元数据服务器提供f到fv1的映射关系,即客户端向元数据服务器请求读写f,元数据服务器接收并进行响应。这一过程为目标文件的读写启动和准备阶段,设置副本保障数据安全,防止数据的丢失和损坏。

接着,元数据服务器中副本服务器分配装置316根据所述关于目标文件的读写请求为所述用户设备分配多个副本服务器,并在每个副本服务器上建立所述目标文件的第一文件副本。是指元数据服务器基于所接收的读写请去,为目标文件分配副本文件并建立相应的映射,同时指定对应的副本所在服务器,并将所分配的副本文件在每个服务器上进行建立。例如,客户端向元数据服务器请求读写f的时候,元数据服务器通过内部查表得知当前文件副本名称为fv1,存储在a、b、c三台副本服务器上。分配副本服务器是的每个副本有相应的服务器负责,从而在某一台服务器出现故障而导致写失败时或数据异常时,其它服务器上的副本数据不受影响。

接着,元数据服务器中第一文件副本信息反馈装置317将所述第一文件副本的信息提供至所述用户设备;用户设备中第一文件副本信息接收装置326接收所述元数据服务器基于所述关于目标文件的读写请求发送的、所述目标文件的第一文件副本的信息。是指用户设备接收到元数据服务器发送的相应的映射的第一副本文件及其服务器信息,在此这一信息中包括但不限于服务器位置信息,从而可以基于此向相应的副本服务器发送相应的读写信息,开始对目标文件的读写操作。例如,元数据服务器将fv1的相关信息及其副本服务器信息发送给客户端,客户端基于此进行进一步的读写操作。

接着,用户设备中第一文件副本文件读写请求发送装置327向所述元数据服务器为所述用户设备分配的多个副本服务器分别发送关于所述第一文件副本的读写请求,其中,每个副本服务器分别存储有所述第一文件副本。即用户设备向第一副本文件所在的副本服务器发送读写请求,从而相应的服务器进行执行。例如,客户端写入请求直接发给a、b、c三个fv1的副本服务器,当全部写成功时返回用户成功。

综合上文所有举例,整体的流程整体举例如下:客户端向元数据服务器请求读写文件f。元数据服务器内部查表返回f当前副本镜像为fv1,存储在a、b、c三台副本服务器上。客户端直接将读写请求发送到a、b、c副本服务器,对fv1请求读写。所有副本写入成功后返回用户成功。如果fv1当前写入时a副本服务器出现异常,客户端请求元数据服务器重新映射f文件为fv2,fv2当前是空文件,它的base指向fv1。元数据服务器将fv2三个副本存放在d、e、f三台副本服务器,并将这些信息返回给客户端。元数据服务器对fv1发起后台复制,补足三个副本。客户端继续将f的读写请求发送到d、e、f副本服务器,对fv2的请求读写。如果读请求的数据在fv2文件中存在,则fv2副本服务器直接返回结果;如果发现数据不存在,则需要从base的fv1读取,它向fv1的副本服务器转发读请求。fv1副本服务器返回数据给fv2副本服务器,然后由fv2副本服务器返回给客户端。fv2副本服务器可以后台主动将fv1的有用数据主动写回到fv2副本,当发现所有有效数据已经在fv2上时,可以解除对fv1的base关系。如果fv1被引用数变成0,fv1将被回收。对fv2的写与fv1一致,需要等d、e、f副本服务器都返回成功才返回用户成功。如果fv2写入过程中出现有副本服务器异常,需要进行前述类似的恢复读写过程。

上述异常的恢复过程中,时间消耗非常小,保证了快速恢复写的低延迟。通过引用机制,随着数据不断写入和后台转储,转发会被直接读取替代。最后,没有日志带来的每次写数据的转储流量,只有在异常发生时才有转储发生,提高了系统的有效读写带宽。

此外,本申请还提供了一种用于在分布式系统中实现多文件副本读写的元数据服务器,其中,该设备包括:

处理器;

以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:

接收对应用户设备基于文件写入异常发送的关于目标文件的重映射请求,其中,所述用户设备在对所述目标文件的第一文件副本执行写操作时获得所述文件写入异常;

根据所述重映射请求为所述用户设备重新分配多个副本服务器,并在每个副本服务器上建立所述目标文件的第二文件副本,其中,所述第二文件副本引用所述第一文件副本;

将所述第二文件副本的信息提供至所述用户设备。

此外,本申请还提供了一种用于在分布式系统中实现多文件副本读写的用户设备,其中,该设备包括:

处理器;

以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:

若在对目标文件的第一文件副本执行写操作时获得文件写入异常,向对应元数据服务器发送对应的重映射请求;

接收所述元数据服务器基于所述重映射请求发送的、所述目标文件的第二文件副本的信息;

向所述元数据服务器为所述用户设备重新分配的多个副本服务器分别发送关于所述第二文件副本的读写请求,其中,每个副本服务器分别存储有所述第二文件副本。

此外,本申请还提供了一种用于在分布式系统中实现多文件副本读写的副本服务器,其中,该设备包括:

处理器;

以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:

接收对应元数据服务器发送的文件副本建立请求;

根据所述文件副本建立请求建立对应目标文件的第二文件副本,其中,所述第二文件副本引用所述目标文件的第一文件副本;

接收对应用户设备对所述第二文件副本的读写请求。

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

需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(asic)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,ram存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。

另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。

对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1