CN105653406B - 一种管理分布式存储系统的方法及分布式存储系统 - Google Patents

一种管理分布式存储系统的方法及分布式存储系统 Download PDF

Info

Publication number
CN105653406B
CN105653406B CN201511030713.3A CN201511030713A CN105653406B CN 105653406 B CN105653406 B CN 105653406B CN 201511030713 A CN201511030713 A CN 201511030713A CN 105653406 B CN105653406 B CN 105653406B
Authority
CN
China
Prior art keywords
storage equipment
data
request
lock
mark
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
Application number
CN201511030713.3A
Other languages
English (en)
Other versions
CN105653406A (zh
Inventor
陈业夫
姜军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201511030713.3A priority Critical patent/CN105653406B/zh
Publication of CN105653406A publication Critical patent/CN105653406A/zh
Priority to PCT/CN2016/111328 priority patent/WO2017114262A1/zh
Application granted granted Critical
Publication of CN105653406B publication Critical patent/CN105653406B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种管理分布式存储系统的方法及分布式存储系统,用于解决获得执行写数据请求的权限的存储设备发生故障后,该写数据请求无法被正常执行的问题。该方法包括:第一存储设备接收写数据请求,向锁服务器申请执行写数据请求的权限时,指示锁服务器保存第二存储设备的标识,将第二存储设备的标识作为执行写数据请求的备用存储设备的标识。第一存储设备在获得执行写数据请求的权限之后,将待写入数据存入本地缓存,并将待写入数据发送给第二存储设备。第二存储设备将第一存储设备发送的待写入数据存入本地缓存,以在第一存储设备发生故障后,向锁服务器申请执行写数据请求的权限。并在获得该权限之后,将本地缓存中的待写入数据写入硬盘。

Description

一种管理分布式存储系统的方法及分布式存储系统
技术领域
本发明涉及计算机技术领域,特别涉及一种管理分布式存储系统的方法及分布式存储系统。
背景技术
在分布式存储系统中,锁服务器负责管理多个存储设备对同一个资源的互斥访问。当存储设备需要对资源进行读/写操作时,需要向锁服务器申请相应的权限,只有在获得权限之后,存储设备才能执行对资源的对应的操作。
实际情况中,存储设备1在获得执行对数据资源的写操作的权限后,可能在写操作执行成功之前发生故障。这种情况下,若有存储设备2申请对该数据资源进行读操作的权限,或者申请对该数据进行另一写操作(请求写入的数据不同)的权限,锁服务器会收回授予存储设备1的权限,授予存储设备2执行其申请执行的操作的权限。这是因为锁服务器若让故障存储设备占用对数据资源进行操作的权限,将阻塞正常存储设备获得对该数据资源进行操作的权限,影响分布式存储系统的效率。
但是,收回故障存储设备拥有的对数据资源进行写操作的权限之后,将导致故障存储设备负责的该写操作无法完成,影响分布式系统的可靠性。
发明内容
本申请实施例提供一种管理分布式存储系统的方法及分布式存储系统,用于解决现有技术中获得执行写数据请求的权限的存储设备发生故障后,该写数据请求无法被正常执行的问题。
第一方面,本发明实施例提供一种管理分布式存储系统的方法,所述分布式存储系统包括多个存储设备和锁服务器,其中,每个存储设备均包括缓存和硬盘,所述方法包括如下步骤:第一存储设备接收写数据请求,向锁服务器发送第一写锁请求,第一写锁请求用于申请执行写数据请求的权限,第一写锁请求包括第一存储设备的标识和第二存储设备的标识,其中,第二存储设备的标识能够被锁服务器识别为执行写数据请求的备用存储设备的标识。锁服务器授予第一存储设备执行写数据请求的权限,并存储备用存储设备的标识;第一存储设备获得该权限之后,将待写入数据写入第一存储设备的缓存;并且,将待写入数据发送给第二存储设备;第二存储设备将该待写入数据写入本地缓存,并在确定第一存储设备发生故障时,向锁服务器申请执行写数据请求的权限,锁服务器在确认第二存储设备为前述备用存储设备后,授予第二存储设备该权限;第二存储设备在获得该权限之后,将本地缓存中的待写入数据写入第二存储设备的硬盘中。
上述实现方式中,在获得执行写数据请求的第一存储设备故障的情况下,仍然能够通过作为执行写数据请求的备用存储设备的第二存储设备继续执行写数据请求,保证写数据请求被成功执行,提高系统的可靠性。
结合第一方面,在第一方面的第一种可能的实现方式中,第一存储设备接收的写数据请求具体用于请求将第一数据更新为待写入数据,管理分布式存储系统的方法还包括如下步骤:在第一存储设备发生故障后,第三存储设备向锁服务器申请执行将第一数据更新为第二待写入数据的写操作的权限,锁服务器在确定第三存储设备不是备用存储设备之后,不授予第三存储设备所申请的权限。上述可能的实现方式中,锁服务器在第一存储设备故障后,优先将执行写数据请求的权限授予前述备用存储设备,并据此拒绝非备用存储设备申请的与执行前述写数据请求的权限相冲突的权限,以优先实现第一存储设备接收的写数据请求被成功执行,保证系统的可靠性。
结合第一方面,在第一方面的第二种可能的实现方式中,第一存储设备接收的写数据请求具体用于请求将第一数据更新为待写入数据,管理分布式存储系统的方法还包括如下步骤:在第一存储设备发生故障后,第三存储设备向锁服务器申请执行读取第一数据的读操作的权限,锁服务器在确定第三存储设备不是备用存储设备之后不授予第三存储设备所申请的权限。上述可能的实现方式中,锁服务器在第一存储设备故障后,优先将执行写数据请求的权限授予前述备用存储设备,并据此拒绝非备用存储设备申请的与执行前述写数据请求的权限相冲突的权限,以优先实现第一存储设备接收的写数据请求被成功执行,保证系统的可靠性。
结合第一方面以及第一方面的第一至第二种可能的实现方式中的任一实现方式,在本发明实施例的第三种可能的实现方式中,管理分布式存储系统的方法方法还包括:锁服务器与第一存储设备通过协商确定第一写锁请求中的预设字段的内容为执行写数据请求的备用存储设备的标识,第一存储设备在发送至锁服务器的第一写锁请求的预设字段中添加第二存储设备的标识,以使锁服务器将第二存储设备的标识识别为备用存储设备的标识。。上述可能的实现方式中,通过锁服务器与第一存储设备的协商,使得锁服务器能够识别第一写锁请求中的备用存储设备的标识,进而使得备用存储设备优先获得执行写数据请求的权限成为可能。
结合第一方面以及第一方面的第一至第二种可能的实现方式中的任一实现方式,在本发明实施例的第四种可能的实现方式中,第一存储设备具体通过与第二存储设备间的镜像通道将待写入数据发送给第二存储设备,第二存储设备将接收的待写入数据写入第二存储设备的缓存。上述可能的实现方式中,通过镜像通道发送待写入数据,不仅减少发送待写入数据的耗时,也能提高数据的安全。
第二方面,本发明实施例提供一种分布式存储系统,包括:至少两个存储设备以及锁服务器,每个存储设备均包括缓存和硬盘;其中,至少两个存储设备中的第一存储设备用于:接收写数据请求,写数据请求包括待写入数据;向锁服务器发送第一写锁请求,第一写锁请求用于申请执行写数据请求的权限,第一写锁请求包括第一存储设备的标识和至少两个存储设备中的第二存储设备的标识,第二存储设备是执行写数据请求的备用存储设备;锁服务器用于:接收第一写锁请求,向第一存储设备发送第一写锁请求的响应结果,第一写锁请求的响应结果用于指示第一存储设备获得执行写数据请求的权限,并确认第一写锁请求中的第二存储设备的标识是备用存储设备的标识,并存储备用存储设备的标识;第一存储设备还用于:在接收第一写锁请求的响应结果之后,将待写入数据写入第一存储设备的缓存;并且,将待写入数据发送给第二存储设备;第二存储设备用于:接收第一存储设备发送的待写入数据,将待写入数据存储在第二存储设备的缓存中;以及在确定第一存储设备发生故障时,向锁服务器发送第二写锁请求,第二写锁请求用于申请执行写数据请求的权限,第二写锁请求包括第二存储设备的标识;锁服务器还用于:接收第二写锁请求;在确认第二写锁请求携带的第二存储设备的标识与存储的备用存储设备的标识一致时,向第二存储设备发送第二写锁请求的响应结果,响应结果用于指示第二存储设备获得权限;第二存储设备还用于:接收第二写锁请求的响应结果,将待写入数据写入第二存储设备的硬盘中。
结合第二方面,在第二方面的第一种可能的实现方式中,写数据请求用于请求将第一数据更新为待写入数据,写数据请求还包括第一数据的标识;分布式存储系统还包括:第三存储设备,用于:在第一存储设备发生故障后,接收第二写数据请求,第二写数据请求用于请求将第一数据更新为第二待写入数据,第二写数据请求包括第一数据的标识以及第二待写入数据;向锁服务器发送第三写锁请求,第三写锁请求用于申请执行将第一数据更新为第二待写入数据的写操作的权限,第三写锁请求包括第三存储设备的标识;锁服务器还用于:接收第三写锁请求,确定第三写锁请求携带的第三存储设备的标识不是备用存储设备的标识;向第三存储设备发送第三写锁请求的响应结果,第三写锁请求的响应结果用于指示第三存储设备未获得执行将第一数据更新为第二待写入数据的写操作的权限。
结合第二方面,在第二方面的第二种可能的实现方式中,写数据请求用于请求将第一数据更新为待写入数据,写数据请求还包括第一数据的标识;分布式存储系统还包括:第三存储设备,用于:在第一存储设备发生故障后,接收读取第一数据的读请求,读请求包括第一数据的标识;向锁服务器发送第四读锁请求,第四读锁请求用于申请执行读取第一数据的读操作的权限,所述第四读锁请求包括所述第三存储设备的标识;锁服务器还用于:接收第四读锁请求,确定第四读锁请求携带的第三存储设备的标识不是备用存储设备的标识;向第三存储设备发送第四读锁请求的响应结果,第四读锁请求的响应结果用于指示第三存储设备未获得执行读取第一数据的读操作的权限。
结合第二方面以及第二方面的第一至第二种可能的实现方式中的任一实现方式,在本发明实施例的第三种可能的实现方式中,第一写锁请求的预设字段中包含第二存储设备的标识;锁服务器还用于:在确认第二存储设备的标识是备用存储设备的标识之前,与第一存储设备约定,第一写锁请求中的预设字段中的标识为执行写数据请求的备用存储设备的标识。
结合第二方面以及第二方面的第一至第二种可能的实现方式中的任一实现方式,在本发明实施例的第四种可能的实现方式中,第一存储设备通过与第二存储设备间的镜像通道将带写入数据发送给第二存储设备。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中分布式存储系统的示意图;
图2为本发明实施例中管理分布式存储系统的方法的流程示意图;
图3为本发明实施例中管理分布式存储系统的方法的另一流程示意图;
图4为本发明实施例中管理分布式存储系统的方法的又一流程示意图。
具体实施方式
下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本发明技术方案的详细的说明,而不是对本发明技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互组合。
如图1所示,分布式存储系统包括若干个存储设备,每个存储设备可以包括接口,缓存(cache),处理器以及硬盘。
其中,接口用于接收客户端发送的请求,例如,接口可以为基于传输控制协议/因特网互联协议(Transmission Control Protocol/Internet Protocol;简称:TCP/IP)的通信接口。
缓存可以为一单独的存储单元,如将存储设备中的非易失性随机访问存储器(Non-Volatile Random Access Memory;简称:NVRAM),也可以为存储设备的内存中的一个存储区域,用于在存储设备获得执行写数据请求的权限后,对待写入数据进行缓存。
处理器可以包括一个或多个处理单元,例如,处理器可以为中央处理器(CentralProcessing Unit;简称:CPU),也可以是特定集成电路(Application SpecificIntergrated Circuit;简称:ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路,例如:一个或多个微处理器(digital singnal processor;简称:DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array;简称:FPGA)。
在本发明实施例中,处理器用于调用内存中的指令以执行本发明实施例中管理分布式存储系统的方法包括的步骤。
硬盘用于存储待写入数据,在待写入数据写入硬盘之后,写数据请求才被成功执行。
另外,存储设备还包括缓冲区(buffer),该缓冲区可以为单独的存储单元,也可以为存储设备的内存中的一个存储区域,缓冲区单元用于存储存储设备的接口接收的请求。
本发明实施例中,存储设备采用分布式事务执行写数据请求。首先,存储设备通过接口接收写数据请求。然后,通过处理器执行指令,存储设备执行如下步骤:首先,将写数据请求保存在缓冲区之中,然后,向锁服务器申请执行写数据请求的权限,在获得该权限之后,将缓冲区存储的写数据请求包含的待写入数据写入缓存,然后,再将缓存中存储的待写入数据写入硬盘。
分布式存储系统还包括锁服务器,其作用包括:维护每个数据资源的锁权限的状态,处理存储设备发送的申请对数据资源进行读/写操作的权限,并根据数据资源的锁权限的状态向存储设备授予其申请的权限,或者,拒绝其申请的权限。
图2为本发明实施例提供的管理分布式存储系统的方法的流程示意图,该流程包括如下步骤:
步骤101:第一存储设备接收写数据请求,该写数据请求包括待写入数据。
步骤102:第一存储设备向锁服务器发送第一写锁请求,第一写锁请求用于申请执行写数据请求的权限,第一写锁请求包括第一存储设备的标识和第二存储设备的标识,第二存储设备是执行写数据请求的备用存储设备。
具体的,第一存储设备接收写数据请求之后,向锁服务器申请执行该写数据请求的权限,在发送给锁服务器的第一写锁请求中不仅包含自身的标识,还包括第二存储设备的标识,用于表示第二存储设备为执行写数据请求的备用存储设备。
其中,第一存储设备选择第二存储设备作为执行写数据请求的备用存储设备的方式包括:
其一,分布式存储系统中包含主存储设备,用于进行存储设备间的负载均衡,包括分配备用存储设备。
第一存储设备在接收到写数据请求之后,向主存储设备发送分配备用存储设备的请求,主存储设备可以根据各存储设备的负载情况或者个存储设备与第一存储设备间的通信质量等因素,为其分配第二存储设备作为执行写数据请求的备用存储设备。
其二,第一存储设备可以向分布式存储系统中的其他存储设备广播备用存储设备请求,接收该请求的存储设备根据自身的负载或与第一存储设备间的通信质量等因素,选择是否向第一存储设备返回确认响应。
第一存储设备可以确认最早返回确认响应的存储设备为上述备用存储设备,或者,确定返回确认响应的存储设备中当前负载最小的存储设备为上述备用存储设备,或者,确定返回确认响应的存储设备中与自己通信质量最好的存储设备为上述备用存储设备,等等,在此不一一举例。
步骤103:锁服务器确认第二存储设备的标识是备用存储设备的标识,并存储备用存储设备的标识。
具体的,锁服务器接收第一写锁请求之后,能够将第一写锁请求中的第二存储设备的标识解析为执行该写数据请求的备用存储设备的标识。其实现方式可以为:
其一,锁服务器与第一存储设备通过协商确定第一写锁请求中的预设字段的内容为执行写数据请求的备用存储设备的标识。该协商的过程可以在第一存储设备加入分布式存储系统时完成的,也可以是锁服务器与分布式存储系统连接时进行的,还可以是第一存储设备向锁服务器发送第一写锁请求之前完成的。
第一存储设备在生成第一写锁请求时,在协商出的预设字段中加入第二存储设备的标识,锁服务器即可将第二存储设备的标识识别为执行写数据请求的备用存储设备的标识。
其二,第一存储设备在生成第一写锁请求时,将第一存储设备的标识以及第二存储设备的标识顺序存放在存储设备标识字段中,其中,第一存储设备的标识在前。锁服务器接收第一写锁请求后,将存储设备标识字段中的第一个标识识别为执行写数据请求的存储设备的标识,而将第一个标识之后的标识识别为执行写数据请求的备用存储设备的标识。
步骤104:在第一存储设备获得权限之后,第一存储设备将待写入数据写入第一存储设备的缓存;并且,第一存储设备将待写入数据发送给第二存储设备。
具体的,锁服务器响应第一写锁请求,授予第一存储设备执行写数据请求的权限,而第一存储设备在获得该权限之后,将待写入数据写入第一存储设备的缓存,并向第二存储设备发送待写入数据。
其中,第一存储设备可以通过存储设备间通信的公用网络将待写入数据发送给第二存储设备。
第一存储设备也可以通过与第二存储设备间的镜像通道将待写入数据发送给第二存储设备,通过镜像通道发送待写入数据,不仅减少发送待写入数据的耗时,也能提高数据的安全。
另外,第一存储设备可以并行执行将待写入数据写入本地缓存(即,第一存储设备的缓存)以及将待写入数据发送给第二存储设备的操作,也可以先将待写入数据写入本地缓存,待写入本地缓存成功之后,再向第二存储设备发送待写入数据。
步骤105:第二存储设备接收第一存储设备发送的待写入数据,将待写入数据写入第二存储设备的缓存。
具体的,第二存储设备接收第一存储设备发送的待写入数据,将其写入第二存储设备的本地缓存,以在第一存储设备故障后,能够根据缓存中的待写入数据继续执行写数据请求。
步骤106:确定第一存储设备发生故障时,第二存储设备向锁服务器发送第二写锁请求,第二写锁请求用于申请执行写数据请求的权限,第二写锁请求包括第二存储设备的标识。
具体的,在确定第一存储设备故障时,第二存储设备保存有待写入数据,能够继续执行写数据请求,但是需要获得执行写数据请求的权限,因此,第二存储设备向锁服务器发送申请执行该写数据请求的权限。
其中,第二存储设备确定第一存储设备故障,包括但不限于以下实现方式:
方式1,分布式存储系统中的主存储设备能够通过心跳检测确定分布式存储系统中每个从存储设备的状态,在检测到第一存储设备发生故障后,向分布式存储系统中的每个从存储设备(包括第二存储设备)发送通知,指明第一存储设备发生故障。
而接收到该通知的存储设备均可以向锁服务器发送申请执行第一存储设备接收的写数据请求的权限的请求,其中的第二存储设备为执行该写数据请求的备用存储设备,能够从锁服务器获得该权限,而其余的存储设备将不能获得该权限。
上述方式1的一种变形为:而接收到该通知的存储设备中,只有存储有待写入数据的第二纯出设备会向锁服务器发送申请执行该写数据请求的权限。
上述方式1的另一种变形为:主存储设备在通过心跳检测确定第一存储设备故障后,只向存储有待写入数据的第二存储设备发送上述通知。
方式2,第二存储设备接收待写入数据之后,确定自身作为执行写数据请求的备用存储设备,故第二存储设备主动检测第一存储设备的状态(可以采用心跳检测的方式),以便在第一存储设备故障时,能够及时向锁服务器申请执行写数据请求的权限,以使写数据请求能够及时完成。
步骤107:锁服务器确认第二存储设备的标识与存储的备用存储设备的标识一致时,向第二存储设备发送第二写锁请求的响应结果,响应结果用于指示第二存储设备获得执行写数据请求的权限。
具体的,锁服务器在接收到上述第二写锁请求之后,判断第二写锁请求携带的存储设备标识与之前存储的备用存储设备标识是否一致,在确定二者一致之后,锁服务器授予第二存储设备执行写数据请求的权限。
步骤108:在第二存储设备获得权限之后,第二存储设备将待写入数据写入第二存储设备的硬盘中。
具体的,第二存储设备在获得该权限之后,将本地缓存中保存的待写入数据写入第二存储设备的硬盘,执行写数据请求成功。
一种可能的变形方案为:第二存储设备可以将待写入数据写入分布式存储系统中其他存储设备的硬盘中。例如,写数据请求中可能包含有目标存储位置的信息,第二存储设备根据该信息将待写入数据写入目标硬盘。
上述技术方案中,第一存储设备接收写数据请求,向锁服务器申请执行写数据请求的权限时,指示锁服务器保存第二存储设备的标识,将第二存储设备的标识作为执行写数据请求的备用存储设备的标识。第一存储设备在获得执行写数据请求的权限之后,将待写入数据存入本地缓存,并将待写入数据发送给第二存储设备。第二存储设备将第一存储设备发送的待写入数据存入本地缓存,以在第一存储设备发生故障后,向锁服务器申请执行写数据请求的权限。由于锁服务器保存的执行写数据请求的备用存储设备的标识与第二存储设备的标识一致,锁服务器将授予第二存储设备执行写数据请求的权限。第二存储设备在获得该权限之后,即可将本地缓存中的待写入数据写入硬盘,完成写数据请求执行成功。因此,在获得执行写数据请求的第一存储设备故障的情况下,仍然能够通过作为执行写数据请求的备用存储设备的第二存储设备继续执行写数据请求,保证写数据请求被成功执行,提高系统的可靠性。
可选的,本发明实施例中,第一存储设备接收的写数据请求用于请求将第一数据更新为待写入数据,该写数据请求还包括第一数据的标识。参见图3,管理分布式存储系统的方法还包括如下步骤:
步骤201:在第一存储设备发生故障后,第三存储设备向锁服务器发送第三写锁请求,第三写锁请求用于申请执行将第一数据更新为第二待写入数据的写操作的权限,第三写锁请求包括第三存储设备的标识;
步骤202:锁服务器确定第三存储设备的标识不是备用存储设备的标识;
步骤203:锁服务器向第三存储设备发送第三写锁请求的响应结果,第三写锁请求的响应结果用于指示第三存储设备未获得执行将第一数据更新为第二待写入数据的写操作的权限。
具体的,分布式存储系统还包括第三存储设备,第三存储设备能够接收第二写数据请求,该第二写数据请求与前述第一存储设备接收的写数据请求均对请求对第一数据进行更新,需要说明的是,本发明实施例中的第一数据,指的是数据资源,而不是数值。
第三存储设备在接收到该第二写数据请求之后,要向锁服务器申请执行第二写数据请求的权限。但是,针对同一数据的写操作具有互斥性,即,同一时刻只能有一个存储设备获得对第一数据进行写数据请求(数据更新请求)的权限。
如果第三存储设备在第一存储设备故障前发送上述第三写锁请求,锁服务器确定第一存储设备正拥有对第一数据进行写数据请求的权限,并据此拒绝将执行第二写数据请求的权限授予第三存储设备。
如果第三存储设备在第一存储设备故障后发送上述第三写锁请求,由于锁服务器需要优先将执行前述写数据请求的权限授予备用存储设备,锁服务器在确定第三存储设备不是执行写数据请求的备用存储设备之后,拒绝将执行第二写数据请求的权限授予第三存储设备。
上述技术方案中,锁服务器在第一存储设备故障后,优先将对写数据请求所请求更新的第一数据进行写操作的权限授予前述备用存储设备,并据此拒绝非备用存储设备申请的与执行前述写数据请求的权限相冲突的权限,以优先实现第一存储设备接收的写数据请求被成功执行,保证系统的可靠性。
可选的,本发明实施例中,第一存储设备接收的写数据请求用于请求将第一数据更新为待写入数据,该写数据请求还包括第一数据的标识。参见图4,管理分布式存储系统的方法还包括如下步骤:
步骤301:在第一存储设备发生故障后,第三存储设备向锁服务器发送第四读锁请求,第四读锁请求用于申请执行读取第一数据的读操作的权限,第四读锁请求包括第三存储设备的标识;
步骤302:锁服务器确定第三存储设备的标识不是备用存储设备的标识;
步骤303:锁服务器向第三存储设备发送第四读锁请求的响应结果,第四读锁请求的响应结果用于指示第三存储设备未获得执行读取第一数据的读操作的权限。
具体的,第三存储设备能够接收读取第一数据的读数据请求,因为执行写操作的权限为独占权限,执行该读数据请求的权限与执行前述写数据请求的权限相斥。
第三存储设备在接收到该第二写数据请求之后,要向锁服务器申请执行第二写数据请求的权限。如果第三存储设备在第一存储设备故障前发送上述第四读锁请求,锁服务器确定第一存储设备正拥有对第一数据进行写数据请求的权限,并据此拒绝将执行读数据请求的权限授予第三存储设备。
如果第三存储设备在第一存储设备故障后发送上述第四读锁请求,由于锁服务器需要优先将执行前述写数据请求的权限授予备用存储设备,锁服务器在确定第三存储设备不是执行写数据请求的备用存储设备之后,拒绝将执行读数据请求的权限授予第三存储设备。
上述技术方案中,锁服务器在第一存储设备故障后,优先将对写数据请求所请求更新的第一数据进行写操作的权限授予前述备用存储设备,并据此拒绝非备用存储设备申请的与执行前述写数据请求的权限相冲突的权限,以优先实现第一存储设备接收的写数据请求被成功执行,保证系统的可靠性。
可选的,本发明实施例中,第二存储设备可以为多个执行写数据请求的备用存储设备的统称,即,备用存储设备的数量可以为2个或以上。
这种情况下,在第一存储设备故障后,可以由多个备用存储设备竞争执行写数据请求的权限。或者,由主存储设备根据负载均衡等因素指定其中的一个备用存储设备执行步骤106,向锁服务器申请执行写数据请求的权限。又或者,多个备用存储设备具有优先级排序,锁服务器优先将执行写数据请求的权限授予优先级最高的备用存储设备。
基于相同的发明构思,本发明实施例提供一种分布式存储系统,继续参照图1,该系统包括:至少两个存储设备以及锁服务器,每个存储设备均包括缓存和硬盘;
其中,至少两个存储设备中的第一存储设备用于:接收写数据请求,写数据请求包括待写入数据;向锁服务器发送第一写锁请求,第一写锁请求用于申请执行写数据请求的权限,第一写锁请求包括第一存储设备的标识和至少两个存储设备中的第二存储设备的标识,第二存储设备是执行写数据请求的备用存储设备;
锁服务器用于:接收第一写锁请求,向第一存储设备发送第一写锁请求的响应结果,第一写锁请求的响应结果用于指示第一存储设备获得执行写数据请求的权限,并确认第一写锁请求中的第二存储设备的标识是备用存储设备的标识,并存储备用存储设备的标识;
第一存储设备还用于:在接收第一写锁请求的响应结果之后,将待写入数据写入第一存储设备的缓存;并且,将待写入数据发送给第二存储设备;
第二存储设备用于:接收第一存储设备发送的待写入数据,将待写入数据存储在第二存储设备的缓存中;以及在确定第一存储设备发生故障时,向锁服务器发送第二写锁请求,第二写锁请求用于申请执行写数据请求的权限,第二写锁请求包括第二存储设备的标识;
锁服务器还用于:接收第二写锁请求;在确认第二写锁请求携带的第二存储设备的标识与存储的备用存储设备的标识一致时,向第二存储设备发送第二写锁请求的响应结果,响应结果用于指示第二存储设备获得权限;
第二存储设备还用于:接收第二写锁请求的响应结果,将待写入数据写入第二存储设备的硬盘中。
可选的,本发明实施例中,第一存储设备接收的所述写数据请求用于请求将第一数据更新为待写入数据,写数据请求还包括第一数据的标识;分布式存储系统还包括:
第三存储设备,用于:在第一存储设备发生故障后,接收第二写数据请求,第二写数据请求用于请求将第一数据更新为第二待写入数据,第二写数据请求包括第一数据的标识以及第二待写入数据;向锁服务器发送第三写锁请求,第三写锁请求用于申请执行将第一数据更新为第二待写入数据的写操作的权限,第三写锁请求包括第三存储设备的标识;
锁服务器还用于:接收第三写锁请求,确定第三写锁请求携带的第三存储设备的标识不是备用存储设备的标识;向第三存储设备发送第三写锁请求的响应结果,第三写锁请求的响应结果用于指示第三存储设备未获得执行将第一数据更新为第二待写入数据的写操作的权限。
可选的,本发明实施例中,写数据请求用于请求将第一数据更新为待写入数据,写数据请求还包括第一数据的标识;系统还包括:
第三存储设备,用于:在第一存储设备发生故障后,接收读取第一数据的读请求,读请求包括第一数据的标识;向锁服务器发送第四读锁请求,第四读锁请求用于申请执行读取第一数据的读操作的权限,第四读锁请求包括第三存储设备的标识;
锁服务器还用于:接收第四读锁请求,确定第四读锁请求携带的第三存储设备的标识不是备用存储设备的标识;向第三存储设备发送第四读锁请求的响应结果,第四读锁请求的响应结果用于指示第三存储设备未获得执行读取第一数据的读操作的权限。
可选的,本发明实施例中,第一写锁请求的预设字段中包含第二存储设备的标识;
锁服务器还用于:在确认第二存储设备的标识是备用存储设备的标识之前,与第一存储设备约定,第一写锁请求中的预设字段中的标识为执行写数据请求的备用存储设备的标识。
可选的,本发明实施例中,第一存储设备用于:将待写入数据发送给第二存储设备,包括:
通过与第二存储设备间的镜像通道将带写入数据发送给第二存储设备。
本实施例中的分布式存储系统与前述管理分布式存储系统的方法是基于同一发明构思下的两个方面,在前面已经对方法的实施过程作了详细的描述,所以本领域技术人员可根据前述描述清楚地了解本实施例中的分布式存储系统的结构及实施过程,为了说明书的简洁,在此就不再赘述了。
本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
第一存储设备接收写数据请求,向锁服务器申请执行写数据请求的权限时,指示锁服务器保存第二存储设备的标识,将第二存储设备的标识作为执行写数据请求的备用存储设备的标识。第一存储设备在获得执行写数据请求的权限之后,将待写入数据存入本地缓存,并将待写入数据发送给第二存储设备。第二存储设备将第一存储设备发送的待写入数据存入本地缓存,以在第一存储设备发生故障后,向锁服务器申请执行写数据请求的权限。由于锁服务器保存的执行写数据请求的备用存储设备的标识与第二存储设备的标识一致,锁服务器将授予第二存储设备执行写数据请求的权限。第二存储设备在获得该权限之后,即可将本地缓存中的待写入数据写入硬盘,完成写数据请求执行成功。因此,在获得执行写数据请求的第一存储设备故障的情况下,仍然能够通过作为执行写数据请求的备用存储设备的第二存储设备继续执行写数据请求,保证写数据请求被成功执行,提高系统的可靠性。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种管理分布式存储系统的方法,其特征在于,所述分布式存储系统包括至少两个存储设备和锁服务器,其中,每个存储设备均包括缓存和硬盘,所述方法包括:
第一存储设备接收写数据请求,所述写数据请求包括待写入数据;
所述第一存储设备向所述锁服务器发送第一写锁请求,所述第一写锁请求用于申请执行所述写数据请求的权限,所述第一写锁请求包括所述第一存储设备的标识和第二存储设备的标识,所述第二存储设备是执行所述写数据请求的备用存储设备;
所述锁服务器确认所述第二存储设备的标识是所述备用存储设备的标识,并存储所述备用存储设备的标识;
在所述第一存储设备获得所述权限之后,所述第一存储设备将所述待写入数据写入所述第一存储设备的缓存;并且,所述第一存储设备将所述待写入数据发送给所述第二存储设备;
确定所述第一存储设备发生故障时,所述第二存储设备向所述锁服务器发送第二写锁请求,所述第二写锁请求用于申请执行所述写数据请求的权限,所述第二写锁请求包括所述第二存储设备的标识;
所述锁服务器确认所述第二存储设备的标识与存储的所述备用存储设备的标识一致时,向所述第二存储设备发送所述第二写锁请求的响应结果,所述响应结果用于指示所述第二存储设备获得执行所述写数据请求的权限;
在所述第二存储设备获得所述权限之后,所述第二存储设备将所述待写入数据写入所述第二存储设备的硬盘中。
2.根据权利要求1所述的方法,其特征在于,所述写数据请求用于请求将第一数据更新为所述待写入数据,所述写数据请求还包括所述第一数据的标识;所述方法还包括:
在所述第一存储设备发生故障后,第三存储设备向所述锁服务器发送第三写锁请求,所述第三写锁请求用于申请执行将所述第一数据更新为第二待写入数据的写操作的权限,所述第三写锁请求包括所述第三存储设备的标识;
所述锁服务器确定所述第三存储设备的标识不是所述备用存储设备的标识;
所述锁服务器向所述第三存储设备发送所述第三写锁请求的响应结果,所述第三写锁请求的响应结果用于指示所述第三存储设备未获得执行将所述第一数据更新为所述第二待写入数据的写操作的权限。
3.根据权利要求1所述的方法,其特征在于,所述写数据请求用于请求将第一数据更新为所述待写入数据,所述写数据请求还包括所述第一数据的标识;所述方法还包括:
在所述第一存储设备发生故障后,第三存储设备向所述锁服务器发送第四读锁请求,所述第四读锁请求用于申请执行读取所述第一数据的读操作的权限,所述第四读锁请求包括所述第三存储设备的标识;
所述锁服务器确定所述第三存储设备的标识不是所述备用存储设备的标识;
所述锁服务器向所述第三存储设备发送所述第四读锁请求的响应结果,所述第四读锁请求的响应结果用于指示所述第三存储设备未获得执行读取所述第一数据的读操作的权限。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述第二存储设备的标识携带在所述第一写锁请求的预设字段中;
所述方法还包括:
所述锁服务器与所述第一存储设备通过协商确定所述第一写锁请求中的所述预设字段的内容为执行所述写数据请求的备用存储设备的标识。
5.根据权利要求1-3任一项所述的方法,其特征在于,所述第一存储设备将所述待写入数据发送给所述第二存储设备,包括:
所述第一存储设备通过与所述第二存储设备间的镜像通道将所述待写入数据发送给所述第二存储设备;
所述方法还包括:所述第二存储设备将接收的所述待写入数据写入所述第二存储设备的缓存。
6.一种分布式存储系统,其特征在于,所述系统包括:至少两个存储设备以及锁服务器,每个存储设备均包括缓存和硬盘;
其中,所述至少两个存储设备中的第一存储设备用于:接收写数据请求,所述写数据请求包括待写入数据;向所述锁服务器发送第一写锁请求,所述第一写锁请求用于申请执行所述写数据请求的权限,所述第一写锁请求包括所述第一存储设备的标识和所述至少两个存储设备中的第二存储设备的标识,所述第二存储设备是执行所述写数据请求的备用存储设备;
所述锁服务器用于:接收所述第一写锁请求,向所述第一存储设备发送所述第一写锁请求的响应结果,所述第一写锁请求的响应结果用于指示所述第一存储设备获得执行所述写数据请求的权限,并确认所述第一写锁请求中的所述第二存储设备的标识是所述备用存储设备的标识,并存储所述备用存储设备的标识;
所述第一存储设备还用于:在接收所述第一写锁请求的响应结果之后,将所述待写入数据写入所述第一存储设备的缓存;并且,将所述待写入数据发送给所述第二存储设备;
所述第二存储设备用于:接收所述第一存储设备发送的所述待写入数据,将所述待写入数据存储在所述第二存储设备的缓存中;以及在确定所述第一存储设备发生故障时,向所述锁服务器发送第二写锁请求,所述第二写锁请求用于申请执行所述写数据请求的权限,所述第二写锁请求包括所述第二存储设备的标识;
所述锁服务器还用于:接收所述第二写锁请求;在确认所述第二写锁请求携带的所述第二存储设备的标识与存储的所述备用存储设备的标识一致时,向所述第二存储设备发送所述第二写锁请求的响应结果,所述响应结果用于指示所述第二存储设备获得权限;
所述第二存储设备还用于:接收所述第二写锁请求的响应结果,将所述待写入数据写入所述第二存储设备的硬盘中。
7.根据权利要求6所述的系统,其特征在于,所述写数据请求用于请求将第一数据更新为所述待写入数据,所述写数据请求还包括所述第一数据的标识;所述系统还包括:
第三存储设备,用于:在所述第一存储设备发生故障后,接收第二写数据请求,所述第二写数据请求用于请求将所述第一数据更新为第二待写入数据,所述第二写数据请求包括所述第一数据的标识以及所述第二待写入数据;向所述锁服务器发送第三写锁请求,所述第三写锁请求用于申请执行将所述第一数据更新为第二待写入数据的写操作的权限,所述第三写锁请求包括所述第三存储设备的标识;
所述锁服务器还用于:接收所述第三写锁请求,确定所述第三写锁请求携带的所述第三存储设备的标识不是所述备用存储设备的标识;向所述第三存储设备发送所述第三写锁请求的响应结果,所述第三写锁请求的响应结果用于指示所述第三存储设备未获得执行将所述第一数据更新为所述第二待写入数据的写操作的权限。
8.根据权利要求6所述的系统,其特征在于,所述写数据请求用于请求将第一数据更新为所述待写入数据,所述写数据请求还包括所述第一数据的标识;所述系统还包括:
第三存储设备,用于:在所述第一存储设备发生故障后,接收读取所述第一数据的读请求,所述读请求包括所述第一数据的标识;向所述锁服务器发送第四读锁请求,所述第四读锁请求用于申请执行读取所述第一数据的读操作的权限,所述第四读锁请求包括所述第三存储设备的标识;
所述锁服务器还用于:接收所述第四读锁请求,确定所述第四读锁请求携带的所述第三存储设备的标识不是所述备用存储设备的标识;向所述第三存储设备发送所述第四读锁请求的响应结果,所述第四读锁请求的响应结果用于指示所述第三存储设备未获得执行读取所述第一数据的读操作的权限。
9.根据权利要求6-8任一项所述的系统,其特征在于,所述第一写锁请求的预设字段中包含所述第二存储设备的标识;
所述锁服务器还用于:在确认所述第二存储设备的标识是所述备用存储设备的标识之前,与所述第一存储设备约定,所述第一写锁请求中的所述预设字段中的标识为执行所述写数据请求的备用存储设备的标识。
10.根据权利要求6-8任一项所述的系统,其特征在于,所述第一存储设备用于:将所述待写入数据发送给所述第二存储设备,包括:
通过与所述第二存储设备间的镜像通道将所述待写入数据发送给所述第二存储设备。
CN201511030713.3A 2015-12-31 2015-12-31 一种管理分布式存储系统的方法及分布式存储系统 Active CN105653406B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201511030713.3A CN105653406B (zh) 2015-12-31 2015-12-31 一种管理分布式存储系统的方法及分布式存储系统
PCT/CN2016/111328 WO2017114262A1 (zh) 2015-12-31 2016-12-21 一种管理分布式存储系统的方法及分布式存储系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201511030713.3A CN105653406B (zh) 2015-12-31 2015-12-31 一种管理分布式存储系统的方法及分布式存储系统

Publications (2)

Publication Number Publication Date
CN105653406A CN105653406A (zh) 2016-06-08
CN105653406B true CN105653406B (zh) 2019-05-24

Family

ID=56490265

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201511030713.3A Active CN105653406B (zh) 2015-12-31 2015-12-31 一种管理分布式存储系统的方法及分布式存储系统

Country Status (2)

Country Link
CN (1) CN105653406B (zh)
WO (1) WO2017114262A1 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105653406B (zh) * 2015-12-31 2019-05-24 华为技术有限公司 一种管理分布式存储系统的方法及分布式存储系统
CN106844108B (zh) * 2016-12-29 2019-05-24 成都华为技术有限公司 一种数据存储方法、服务器以及存储系统
CN109213427B (zh) 2017-06-30 2021-06-29 伊姆西Ip控股有限责任公司 用于管理存储系统的方法和设备
CN107463670B (zh) * 2017-08-03 2020-06-05 北京奇艺世纪科技有限公司 数据存储、读取方法及装置
CN111654519B (zh) * 2017-09-06 2024-04-30 华为技术有限公司 用于传输数据处理请求的方法和装置
CN110199270B (zh) * 2017-12-26 2022-09-02 华为技术有限公司 存储系统中存储设备的管理方法及装置
CN110879760B (zh) * 2018-09-05 2022-09-02 北京鲸鲨软件科技有限公司 一种统一存储系统及方法、电子设备
CN111857545B (zh) * 2019-04-28 2023-12-29 深信服科技股份有限公司 一种读写锁冲突判断方法、系统、设备及计算机介质
CN110321357B (zh) * 2019-06-14 2021-06-29 北京奇艺世纪科技有限公司 一种读写控制方法、装置及服务器
CN112087417B (zh) * 2020-07-22 2022-10-21 深圳奇迹智慧网络有限公司 终端权限控制方法、装置、计算机设备和存储介质
CN112333015B (zh) * 2020-10-28 2022-11-01 重庆紫光华山智安科技有限公司 媒体数据存储方法、装置、系统、电子设备及存储介质
KR102331734B1 (ko) 2021-03-19 2021-12-01 쿠팡 주식회사 분산 시스템의 데이터 처리 방법 및 이를 위한 전자 장치

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6574749B1 (en) * 1999-10-29 2003-06-03 Nortel Networks Limited Reliable distributed shared memory
CN102063338A (zh) * 2010-12-28 2011-05-18 华为技术有限公司 一种请求独占资源的方法及装置
CN104636088A (zh) * 2015-02-17 2015-05-20 华为技术有限公司 一种将数据写入数据服务器的方法及存储系统
CN105426271A (zh) * 2015-12-22 2016-03-23 华为技术有限公司 对分布式存储系统的锁管理的方法和装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101252603B (zh) * 2008-04-11 2011-03-30 清华大学 基于存储区域网络san的集群分布式锁管理方法
US9141440B2 (en) * 2011-12-29 2015-09-22 Red Hat, Inc. Fault tolerant distributed lock manager
CN104113587B (zh) * 2014-06-23 2017-08-01 华中科技大学 一种分布式文件系统客户端元数据缓存优化方法
CN105653406B (zh) * 2015-12-31 2019-05-24 华为技术有限公司 一种管理分布式存储系统的方法及分布式存储系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6574749B1 (en) * 1999-10-29 2003-06-03 Nortel Networks Limited Reliable distributed shared memory
CN102063338A (zh) * 2010-12-28 2011-05-18 华为技术有限公司 一种请求独占资源的方法及装置
CN104636088A (zh) * 2015-02-17 2015-05-20 华为技术有限公司 一种将数据写入数据服务器的方法及存储系统
CN105426271A (zh) * 2015-12-22 2016-03-23 华为技术有限公司 对分布式存储系统的锁管理的方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
并行网络文件系统中文件锁的设计与DS掉线问题的改进;陈丹威 等;《2011年通信与信息技术新进展——第八届中国通信学会学术年会论文集》;20111102;743-746页

Also Published As

Publication number Publication date
WO2017114262A1 (zh) 2017-07-06
CN105653406A (zh) 2016-06-08

Similar Documents

Publication Publication Date Title
CN105653406B (zh) 一种管理分布式存储系统的方法及分布式存储系统
CN110032571A (zh) 业务流程处理方法、装置、存储介质及计算设备
US11366768B2 (en) Data write method, apparatus, and system
CN103324533B (zh) 分布式数据处理方法、装置及系统
CN108897628A (zh) 一种分布式锁的实现方法、装置及电子设备
US20070126554A1 (en) Multiple RFID reader system and method for controlling multiple RFID readers in the same
CN106815218A (zh) 数据库访问方法、装置和数据库系统
JP2007122664A (ja) 情報処理方法および情報処理装置
CN110019112A (zh) 数据事务处理方法、装置以及电子设备
CN110599144B (zh) 一种区块链节点的入网方法以及装置
CN104639650A (zh) 一种细粒度分布式接口访问控制方法及装置
CN107818013A (zh) 一种应用调度方法及装置
JP2007122663A (ja) 情報処理方法および情報処理装置
CN104461705B (zh) 一种业务访问的方法及存储控制器、集群存储系统
CN110213266B (zh) 一种区块链跨链的信息处理方法及电子设备
CN111800494B (zh) 设备上线方法、系统、装置及电子设备
CN104008200B (zh) 锁申请的处理方法和装置
CN105450679A (zh) 进行数据云存储的方法及系统
CN108228750A (zh) 一种分布式数据库及其对数据进行管理的方法
CN109308167A (zh) 跟踪对于介质控制器的写入请求
JP2010186450A (ja) Icカードシステム、そのサーバ装置、プログラム
CN106302825A (zh) 文件访问控制方法和装置
CN108595537A (zh) 一种文件处理方法、装置及对象存储中间件
KR102335171B1 (ko) IoT 기기 제어용 블록체인 기반 고속 인증 제어 시스템 및 방법
US11381489B1 (en) Apparatus and method for tracking data in edge cloud environment

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