CN104636088B - 一种将数据写入数据服务器的方法及存储*** - Google Patents

一种将数据写入数据服务器的方法及存储*** Download PDF

Info

Publication number
CN104636088B
CN104636088B CN201510085669.XA CN201510085669A CN104636088B CN 104636088 B CN104636088 B CN 104636088B CN 201510085669 A CN201510085669 A CN 201510085669A CN 104636088 B CN104636088 B CN 104636088B
Authority
CN
China
Prior art keywords
data
metadata
write
lock
read
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
CN201510085669.XA
Other languages
English (en)
Other versions
CN104636088A (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 CN201510085669.XA priority Critical patent/CN104636088B/zh
Publication of CN104636088A publication Critical patent/CN104636088A/zh
Application granted granted Critical
Publication of CN104636088B publication Critical patent/CN104636088B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0637Permissions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Landscapes

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

Abstract

本发明提供一种将数据写入数据服务器的方法及存储***,当客户端需要对数据进行写操作时,首先通过一次创建锁的请求从锁服务器获得元数据读写锁和数据读写锁;客户端缓存元数据读写锁和数据读写锁。在确定缓存有数据读写锁时,客户端将数据写入至少一个数据服务器,无需采用现有技术的交互流程再向锁服务器申请数据读写锁,进一步的,当客户端将数据写入数据服务器后,该数据对应的元数据可能发生变化,此时,客户端会将改变后的元数据写入元数据服务器,由于客户端已将元数据读写锁缓存,无需采用现有技术的交互流程再向锁服务器申请元数据读写锁,从而降低了客户端在写入数据过程中与锁服务器之间的交互次数,提高了写入数据的效率。

Description

一种将数据写入数据服务器的方法及存储***
技术领域
本发明涉及存储***领域,尤其涉及一种将数据写入数据服务器的方法及存储***。
背景技术
在当前的分布式存储***中,用户会从不同的分布式客户端访问***中的数据,在这种场景下,分布式锁管理(Distributed Lock Manager,简称:DLM)机制应运而生,分布式锁管理机制是保证分布式存储***正常运行和数据一致性的关键,在实现DLM机制时,***通常包括:分布式锁客户端(Distributed Lock Manager Client,简称:DLMC)与分布式锁服务器(Distributed Lock Manager Server,简称:DLMS),其中DLMC为***的业务层提供锁管理接口,业务层在针对业务进行操作的前后,都需要通过锁管理接口向DLMC进行锁操作,DLMC再与DLMS通信完成锁的授权操作,以保证DLMC并发访问时数据的一致性。图1为现有技术提供的分布式存储***文件创建写机制的流程示意图,参照图1,该分布式存储***包括:客户端代理(Client Agent,简称:CA),DLMC,DLMS,元数据服务器(Meta Server)和数据服务器(Data Server);该流程包括:步骤1、CA向元数据服务器发送创建文件的请求消息;步骤2,DLMC与元数据服务器进行交互获得元数据并行读锁(Meta Concurrent ReadLock);步骤3,CA与元数据服务器进行操作元数据的交互,CA根据元数据并行读锁提供的权限,对创建文件相关的元数据进行读写操作;步骤4、DLMC与DLMS进行交互获得条带独占锁(Stripe Exclusive Lock);步骤5、DLMC与数据服务器进行数据写入的操作交互,具体的,CA根据条带独占锁提供的权限,进行数据写的操作。
但是,采用现有技术的写入数据的机制,DLMC与DLMS、DLMC与元数据服务器之间需要进行多次交互才能够完成锁的授权操作,导致存储***在完成创建写的过程中,不同节点之间的交互次数过多,从而降低了写数据的效率。
发明内容
本发明提供一种将数据写入数据服务器的方法及存储***,用于提高写入数据的效率。
本发明的第一个方面是提供一种将数据写入数据服务器的方法,所述方法应用于存储***中,所述存储***包括客户端、元数据服务器、锁服务器和至少一个数据服务器,所述方法由所述客户端执行,包括:
向锁服务器发送创建锁的请求,所述创建锁的请求用于创建元数据读写锁和数据读写锁,所述元数据读写锁用于所述客户端获得读取或修改元数据的唯一权限,所述数据读写锁用于所述客户端获得读取或修改数据的唯一权限;
将所述元数据读写锁和所述数据读写锁保存在所述客户端的缓存中;
确定所述缓存中保存有所述数据读写锁;
将所述数据写入所述至少一个数据服务器;
确定所述缓存中保存有所述元数据读写锁;
将第一元数据写入所述元数据服务器。
结合第一个方面,在第一种可行的实现方式中,所述数据的大小小于或等于预设的阈值。
结合第一个方面或第一个方面的第一种可行的实现方式,在第二种可行的实现方式中,在所述将数据写入所述数据服务器之前,还包括:
向所述元数据服务器发送元数据请求,所述元数据请求用于请求所述第二元数据,所述第二元数据包含所述数据的分布信息,所述数据的分布信息表示所述数据在所述至少一个数据服务器的存储位置;
所述将数据写入所述至少一个数据服务器,包括:
根据所述数据的分布信息将所述数据写入所述至少一个数据服务器的存储位置。
结合第一个方面的第二种可行的实现方式,在第三种可行的实现方式中,在所述根据所述数据的分布信息将所述数据写入所述至少一个数据服务器的存储位置之后,还包括:
将所述第二元数据修改为所述第一元数据,其中,所述第一元数据包括写入所述数据的时刻信息,所述写入所述数据的时刻信息表示所述客户端将所述数据写入所述至少一个数据服务器的时刻。
本发明的第二个方面是提供一种存储***,所述存储***,包括:客户端、元数据服务器、锁服务器和至少一个数据服务器;
所述元数据服务器,用于存储所述客户端写入的第一元数据;
所述数据服务器,用于存储所述客户端写入的数据;
所述锁服务器,用于接收所述客户端发送的创建锁的请求,所述创建锁的请求用于创建元数据读写锁和数据读写锁,所述元数据读写锁用于所述客户端获得读取或修改元数据的唯一权限,所述数据读写锁用于所述客户端获得读取或修改数据的唯一权限;向所述客户端发送所述元数据读写锁和所述数据读写锁;
所述客户端,用于:
向所述锁服务器发送所述创建锁的请求;
将所述元数据读写锁和所述数据读写锁保存在所述客户端的缓存中;
确定所述缓存中保存有所述数据读写锁;
将所述数据写入所述至少一个数据服务器;
确定所述缓存中保存有所述元数据读写锁;
将所述第一元数据写入所述元数据服务器。
结合第二个方面,在第一种可行的实现方式中,所述数据的大小小于或等于预设的阈值。
结合第二个方面或第二个方面的第一种可行的实现方式,在第二种可行的实现方式中,所述客户端,还用于在所述将数据写入所述数据服务器之前,向所述元数据服务器发送元数据请求,所述元数据请求用于请求所述第二元数据,所述第二元数据包含所述数据的分布信息;所述数据的分布信息表示所述数据在所述至少一个数据服务器的存储位置;根据所述数据的分布信息将所述数据写入所述至少一个数据服务器的存储位置;
所述元数据服务器,还用于接收所述元数据请求;向所述客户端发送所述第二元数据。
结合第二个方面的第二种可行的实现方式,在第三种可行的实现方式中,所述至少一个客户端,还用于在根据所述数据的分布信息将所述数据写入所述至少一个数据服务器的存储位置之后,将所述第二元数据修改为所述第一元数据,其中,所述第一元数据包括写入所述数据的时刻信息,所述写入所述数据的时刻信息表示所述客户端将所述数据写入所述至少一个数据服务器的时刻。
本发明提供的一种将数据写入数据服务器的方法及存储***,当客户端需要对数据进行写操作时,首先通过一次创建锁的请求从锁服务器获得元数据读写锁和数据读写锁,所述元数据读写锁用于所述客户端获得读取或修改元数据的唯一权限,所述数据读写锁用于所述客户端获得读取或修改数据的唯一权限;客户端缓存元数据读写锁和数据读写锁。在确定缓存有数据读写锁时,客户端将所述数据写入所述至少一个数据服务器,无需采用现有技术的交互流程再向锁服务器申请数据读写锁,进一步的,当客户端将所述数据写入所述数据服务器后,该数据对应的元数据可能发生变化,此时,客户端会将改变后的元数据写入所述元数据服务器,即所述第一元数据,由于客户端已将元数据读写锁缓存,无需采用现有技术的交互流程再向锁服务器申请元数据读写锁,从而降低了客户端在写入数据过程中与锁服务器之间的交互次数,提高了写入数据的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术提供的分布式存储***文件创建写机制的流程示意图;
图2为一种分布式存储***部署示意图;
图3为本发明实施例提供的存储***示意图;
图4为本发明实施例提供的一种将数据写入数据服务器的方法的流程示意图;
图5为本发明实施例提供的另一种将数据写入数据服务器的方法的流程示意图;
图6为本发明实施例提供的另一种将数据写入数据服务器的方法的流程示意图;
图7为本发明实施例提供的一种将数据写入数据服务器的方法的信令交互示意图;
图8为本发明实施例提供的另一种将数据写入数据服务器的方法的信令交互示意图;
图9为本发明实施例提供的另一种将数据写入数据服务器的方法的信令交互示意图;
图10为本发明实施例提供的另一种分布式锁的实现方法的信令交互示意图;
图11为本发明实施例提供的一种通用网络设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
以分布式存储***为例,该分布式存储***包含多个节点,每个节点可以部署在不同的地点,每个节点具有存储功能,用于存储数据和元数据;节点之间通过网络进行通信和数据传输。
首先,每个节点包括:数据服务器、元数据服务器、CA;
其中,数据服务器用于存储数据,其可以与CA进行交互,当用户通过CA向数据服务器发送数据读取请求时,数据服务器将存储的数据发送给CA,并由CA发送给用户使用的用户设备;当用户通过CA写入(修改)数据时,数据服务器存储用户写入的数据。
元数据服务器用于存储元数据,其也可以与CA进行交互,当CA向元数据服务器发送元数据读取请求时,元数据服务器将存储的元数据发送给CA;元数据服务器还可以存储写入的元数据;进一步的,用户也可以通过CA向元数据服务器发送元数据读写请求,元数据服务器通过CA将用户所需的元数据发送给用户,或者,元数据服务器保存用户写入的元数据;
CA作为用户与每个节点之间的媒介,用于接收用户发送的数据读取请求或写入的数据,并将数据读取请求或写入的数据发送给数据服务器;或者,用于向元数据服务器发送元数据读取请求或写入的元数据;或者,用于接收用户发送的元数据读取请求或写入的元数据,并将元数据读取请求或写入的元数据发送给元数据服务器;
进一步的,由于在分布式存储***中,用户可以通过不同CA访问该***中节点存储的数据,为了保证***中不同节点存储的数据具有一致性,分布式存储***中每个节点还包括:DLMC、DLMS;
DLMC用于在CA与数据服务器交互实现数据的读取或者写入之前,向DLMS请求相应的数据读写锁,从而保证该CA获得读取或修改数据的唯一权限;
DLMC还用于在CA与元数据服务器交互实现元数据的读取或者写入之前,向DLMS请求相应的元数据读写锁,从而保证该CA获得读取或修改元数据的唯一权限;
DLMS用于存储上述数据读写锁和元数据读写锁,并在DLMC请求数据读写锁或元数据读写锁时,将相应的锁发送给DLMC。
具体的,数据读写锁包含数据读锁和数据写锁,其中,数据读锁作用在于当CA与数据服务器交互进行数据的读取时,保证CA获得读取数据的唯一权限;数据写锁作用在于当CA与数据服务器交互进行数据的写入时,保证CA获得修改数据的唯一权限;类似的,元数据读写锁包含元数据读锁和元数据写锁,其中,元数据读锁作用在于当CA与元数据服务器交互进行元数据的读取时,保证CA获得读取元数据的唯一权限;元数据写锁作用在于当CA与元数据服务器交互进行元数据的写入时,保证CA获得修改元数据的唯一权限;
进一步的,元数据读写锁具体的功能包括:保护数据的元数据信息,比如数据的文件名、数据的大小、数据的基本权限等属性。在获取或者改变元数据状态的操作时加此锁保护,例如,文件更新属性、重命名、删除等。
另外,数据读写锁的一种实现形式为条带读写锁。
具体的,条带是节点的磁盘上一块由若干个地址连接的磁盘块构成的大小固定的区域,而位于磁盘阵列(Redundant Arrays of Independent Disks,简称:RAID)集所有磁盘上相同位置的条带构成了分条。条带读写锁的作用在于保证CA获得读取或修改每个分条上存储的数据的唯一权限;进一步的,该条带读写锁包含条带读锁和条带写锁。
需要说明的是,通常会将CA与DLMC合并为一个功能模块。
进一步的,图2为一种分布式存储***部署示意图,图2示出了一种分布式存储***的实现形式,参照图2,该分布式存储***包括:用户设备(用户设备1、用户设备2、用户设备3)、前端交换机、节点(节点1、节点2、节点3、节点4)、后端交换机;
其中,每个节点包含数据服务器、元数据服务器、CA、DLMC、DLMS;
数据服务器、元数据服务器、CA、DLMC、DLMS分别能够实现上文描述的对应功能;
前端交换机,用于连接用户设备和各个节点。
例如,当用户通过用户设备上装载的应用请求读取或写入数据时,用户的请求会通过前端交换机发送给相应节点上的CA;当CA在经过上文所述的方式完成数据的读取或者写入操作后,会将读取的数据通过前端交换机发送给相应的用户设备,或者将写入数据完成的响应信息通过前端交换机发送给相应的用户设备。
后端交换机,用于连接分布式存储***中的各个节点。
例如,当CA将数据写入数据服务器时,其写入多个节点的数据服务器,此时,写入操作即需要通过后端交换机将写入的数据分别发送给多个节点的数据服务器。
需要说明的是,图2仅给出了一种分布式存储***的实现形式,分布式存储***也可以采用其他的结构,本发明实施例不予限定。
下面通过具体实施例对本发明实施例提供的存储***进行说明,图3为本发明实施例提供的存储***示意图,参照图3,该存储***,包括:客户端100、元数据服务器101、锁服务器102和至少一个数据服务器103;
所述元数据服务器101,用于存储所述客户端100写入的第一元数据;
所述数据服务器103,用于存储所述客户端100写入的数据;
所述锁服务器102,用于接收所述客户端100发送的创建锁的请求,所述创建锁的请求用于创建元数据读写锁和数据读写锁,所述元数据读写锁用于所述客户端100获得读取或修改元数据的唯一权限,所述数据读写锁用于所述客户端100获得读取或修改数据的唯一权限;向至少一个客户端100发送所述元数据读写锁和所述数据读写锁;
所述至少一个客户端100,用于:
向所述锁服务器102发送所述创建锁的请求;
将所述元数据读写锁和所述数据读写锁保存在所述客户端100的缓存中;
确定所述缓存中保存有所述数据读写锁;
将所述数据写入所述至少一个数据服务器103;
具体的,由于分布式存储***中,数据可能被写入多个节点的数据服务器103,因此,客户端100可能将该数据分别写入多个数据服务器103。
确定所述缓存中保存有所述元数据读写锁;
将所述第一元数据写入所述元数据服务器101。
需要说明的是,本发明实施例涉及的客户端具有上文CA和DLMC的功能。
本发明实施例提供的存储***,当客户端需要对数据进行写操作时,首先通过向所述锁服务器发送一次创建锁的请求获得元数据读写锁和数据读写锁,所述元数据读写锁用于所述客户端获得读取或修改元数据的唯一权限,所述数据读写锁用于所述客户端获得读取或修改数据的唯一权限;客户端缓存元数据读写锁和数据读写锁。在确定缓存有数据读写锁时,客户端将所述数据写入所述至少一个数据服务器,无需采用现有技术的交互流程再向锁服务器申请数据读写锁,进一步的,当客户端将所述数据写入所述数据服务器后,该数据对应的元数据可能发生变化,此时,客户端会将改变后的元数据写入所述元数据服务器,即所述第一元数据,由于客户端已将元数据读写锁缓存,无需采用现有技术的交互流程再向锁服务器申请元数据读写锁,从而降低了客户端在写入数据过程中与锁服务器之间的交互次数,提高了写入数据的效率。
对于分布式存储***,通常会将数据存储在多个节点上,每个节点的存储单元(例如,磁盘)通常会被划分为多个条带,条带是磁盘上一块由若干个地址连接的磁盘块构成的大小固定的区域;当客户端100要写入的数据占用的存储空间小于一个条带的时候,其在进行写入前只需要针对一个条带申请一个数据读写锁,该数据读写锁可以为条带读写锁。采用本方案时,由于数据读写锁已通过创建锁的请求获得并缓存在客户端100,客户端100无需通过与锁服务器102交互获得该数据读写锁,避免了额外申请数据读写锁的交互流程,提高了写入数据的效率。因此,可以将数据大小作为发送创建锁的请求的触发机制,即所述数据的大小小于或等于预设的阈值。需要说明的是,该预设的阈值可以设置为条带的大小,也可以采用其他的存储单元的大小作为阈值,只要保证该存储单元的大小满足数据的大小即可。
在客户端100在所述将数据写入所述数据服务器103之前,通常需要获得与该数据对应的元数据的相关信息,从而确定将数据写入数据服务器103的具体存储位置。因此,一种可行的方式为:
客户端100,还用于在所述将数据写入所述数据服务器103之前,向所述元数据服务器101发送元数据请求,所述元数据请求用于请求所述第二元数据,所述第二元数据包含所述数据的分布信息;所述数据的分布信息表示所述数据在所述至少一个数据服务器103的存储位置;
所述元数据服务器101,还用于接收所述元数据请求;向所述客户端100发送所述第二元数据;
所述客户端100,还用于根据所述数据的分布信息将所述数据写入所述至少一个数据服务器103的存储位置。
可选的,所述至少一个客户端100,还用于在根据所述数据的分布信息将所述数据写入所述至少一个数据服务器103的存储位置之后,将所述第二元数据修改为所述第一元数据,其中,所述第一元数据包括写入所述数据的时刻信息,所述写入所述数据的时刻信息表示所述客户端100将所述数据写入所述至少一个数据服务器103的时刻。
需要说明的是,由于所述元数据读写锁已经被缓存在了客户端100,因此,与现有技术的流程相比,客户端100不需要在与锁服务器进行交互已获得该元数据读写锁,从而降低了客户端在写入数据过程中与锁服务器之间的交互次数,进一步提高了写入数据的效率。
在上述实施例的基础上,下面通过具体实施例对上文中涉及到的客户端进行说明,图4为本发明实施例提供的一种将数据写入数据服务器的方法的流程示意图,所述方法应用于存储***中,所述存储***包括客户端、元数据服务器、锁服务器和至少一个数据服务器,所述方法由所述客户端执行,参照图4,该方法包括如下步骤:
步骤100、向锁服务器发送创建锁的请求,所述创建锁的请求用于创建元数据读写锁和数据读写锁,所述元数据读写锁用于所述客户端获得读取或修改元数据的唯一权限,所述数据读写锁用于所述客户端获得读取或修改数据的唯一权限;
步骤101、将所述元数据读写锁和所述数据读写锁保存在所述客户端的缓存中;
步骤102、确定所述缓存中保存有所述数据读写锁;
步骤103、将所述数据写入所述至少一个数据服务器;
步骤104、确定所述缓存中保存有所述元数据读写锁;
步骤105、将第一元数据写入所述元数据服务器。
本发明实施例提供的将数据写入数据服务器的方法,当客户端需要对数据进行写操作时,首先向锁服务器发送创建锁的请求,获得元数据读写锁和数据读写锁,所述元数据读写锁用于所述客户端获得读取或修改元数据的唯一权限,所述数据读写锁用于所述客户端获得读取或修改数据的唯一权限;客户端缓存元数据读写锁和数据读写锁。在确定缓存有数据读写锁时,客户端将所述数据写入所述至少一个数据服务器,无需采用现有技术的交互流程再向锁服务器申请数据读写锁,进一步的,当客户端将所述数据写入所述数据服务器后,该数据对应的元数据可能发生变化,此时,客户端会将改变后的元数据写入所述元数据服务器,即所述第一元数据,由于客户端已将元数据读写锁缓存,无需采用现有技术的交互流程再向锁服务器申请元数据读写锁,从而降低了客户端在写入数据过程中与锁服务器之间的交互次数,提高了写入数据的效率。
需要说明的是,本发明实施例通常应用在客户端创建文件的场景中,当客户端创建文件时,通常需要对元数据和数据都进行写入操作,此时,同时将元数据读写锁和数据读写锁下发给该客户端,能够明显的提高创建文件的效率。同时,本发明实施例提供的方案对于其他的场景并不会造成负面影响。
可选的,参照上文描述可知,可以将数据大小作为发送创建锁的请求的触发机制,因此,可以设置所述数据的大小小于或等于预设的阈值。
在图4基础上,图5为本发明实施例提供的另一种将数据写入数据服务器的方法的流程示意图,参照图5,在步骤103之前,还包括:
步骤106、向所述元数据服务器发送元数据请求,所述元数据请求用于请求所述第二元数据,所述第二元数据包含所述数据的分布信息;
具体的,所述数据的分布信息表示所述数据在所述至少一个数据服务器的存储位置;
相应的,步骤103的一种可行的实现方式为:
步骤103a、根据所述数据的分布信息将所述数据写入所述至少一个数据服务器的存储位置。
在图5基础上,图6为本发明实施例提供的另一种将数据写入数据服务器的方法的流程示意图,参照图6,在步骤103a之后,还包括:
步骤107、将所述第二元数据修改为所述第一元数据;
其中,所述第一元数据包括写入所述数据的时刻信息,所述写入所述数据的时刻信息表示所述客户端将所述数据写入所述至少一个数据服务器的时刻。
下面通过具体的交互流程对本发明的方案进行说明,图7为本发明实施例提供的一种将数据写入数据服务器的方法的信令交互示意图,参照图7,该分布式存储***中包含的设备有:客户端、元数据服务器(Meta Server,简称:MDS)、DLMS和数据服务器(DataServer,简称:DS);下面参照图7,通过整个分布式存储***在将数据写入数据服务器的方法过程中的信令交互,对本发明上述实施例进行说明,该信令交互包括如下步骤:
步骤1-0、所述客户端向MDS发送创建文件请求;
具体的,在所述客户端创建文件之前,需要向MDS发送该请求,以获得创建文件对应的元数据的基本信息,例如该文件的属性信息等;
步骤1-1、所述客户端接收所述MDS发送的创建文件请求响应;
具体的,该创建文件请求响应包含创建文件对应的元数据的基本信息,客户端根据创建文件请求响应获知该创建文件对应元数据服务器侧的相关操作已完成。
步骤1-2、客户端向DLMS发送创建锁的请求;
步骤1-3、所述客户端接收DLMS发送的元数据读写锁和数据读写锁;
步骤1-4、所述客户端向所述MDS发送元数据请求;
具体的,步骤1-4的目的在于,在具有读取或修改元数据的唯一权限后,获得与写入数据(例如,创建文件的操作)相关的第二元数据。
步骤1-5、所述客户端接收所述MDS发送的第二元数据;
步骤1-6、所述客户端确定所述缓存中保存有所述数据读写锁,
步骤1-7、所述客户端将所述数据写入所述至少一个DS的存储位置;
参照图7可知,本发明实施例的方案,将现有技术中申请所述元数据读写锁和所述数据读写锁的方案,优化为只申请一个锁,该锁包含元数据读写锁和数据读写锁,从而降低了客户端与锁服务器之间的交互次数,提高了写数据的效率。
进一步的,图8为本发明实施例提供的另一种将数据写入数据服务器的方法的信令交互示意图,参照图8,该分布式存储***中包含的设备有:客户端、MDS、DLMS和DS;下面参照图8,通过整个分布式存储***在将数据写入数据服务器的方法过程中的信令交互,对本发明上述实施例进行说明,该信令交互包括如下步骤:
步骤2-0、所述客户端向MDS发送创建文件请求;
步骤2-1、所述客户端接收所述MDS发送的创建文件请求响应;
步骤2-2:客户端向DLMS发送创建锁的请求;
步骤2-3、所述客户端接收DLMS发送的元数据读写锁和数据读写锁;
具体的,所述客户端缓存元数据读写锁和数据读写锁。
步骤2-4、所述客户端向MDS发送元数据请求;
步骤2-5、所述客户端接收MDS发送的第二元数据;
步骤2-6:所述客户端确定所述缓存中保存有所述数据读写锁;
步骤2-7:所述客户端将所述数据写入所述至少一个DS的存储位置;
具体的,在步骤2-7之后,客户端接收所述数据服务器发送的写入响应消息,所述写入响应消息用于指示数据写入成功;
步骤2-8:客户端确定所述缓存中保存有所述元数据读写锁;
具体的,步骤2-8的目的在于:保护接下来的元数据写动作,由于写入新的数据,相应该数据对应的元数据也需要更新,因此需要对元数据进行修改,此时需要元数据读写锁对该修改动作进行保护,而当客户端确定所述缓存中保存有所述元数据读写锁后,其与步骤2-6类似,不会通过与DLMS交互来获得所述元数据读写锁。从而进一步减少了修改元数据过程中的客户端与DLMS的交互次数,进而提高了数据写入过程的效率。
步骤2-9:客户端将第一元数据写入所述MDS;
具体的,客户端通过步骤2-9将本次写入数据的所述数据的大小信息和写入所述数据的时刻信息等信息写入MDS;
在上面的场景中,数据的写入过程中,现有技术需要分别申请元数据读写锁和数据读写锁,本方案优化为只需要通过一次交互既可以获得元数据读写锁和数据读写锁,锁的资源占用上减少一半以上,大大提升了资源利用率。
进一步的,对于写入数据大于预设阈值的场景,本发明实施例也能够保证性能不会降低。图9为本发明实施例提供的另一种将数据写入数据服务器的方法的信令交互示意图,参照图9,该信令交互包括如下步骤:
步骤3-0、所述客户端向MDS发送创建文件请求;
步骤3-1、所述客户端接收所述MDS发送的创建文件请求响应;
步骤3-2:所述客户端向DLMS发送创建锁的请求;
步骤3-3、所述客户端接收所述DLMS发送的元数据读写锁和数据读写锁;
具体的,所述客户端缓存元数据读写锁和数据读写锁。
步骤3-4、所述客户端向所述MDS发送元数据请求;
步骤3-5、所述客户端接收所述MDS发送的第二元数据;
步骤3-6:所述客户端确定所述缓存中保存有所述数据读写锁;
步骤3-7:客户端将所述数据写入所述至少一个DS的存储位置;
具体的,客户端将该数据小于阈值的一部分先写入所述DS;
步骤3-8:客户端向DLMS发送数据读写锁的请求;
步骤3-9、所述客户端接收所述DLMS发送的数据读写锁;
步骤3-10:客户端根据所述数据的分布信息将所述数据写入所述至少一个数据服务器的存储位置;
具体的,客户端将该数据剩余的部分先写入所述至少一个数据服务器,若两次不能将数据完全写入数据服务器,则重复步骤3-10直至完成写入操作。
进一步的,上文涉及元数据读写锁和数据读写锁可以具有如下模式:
独占锁模式(Lock_Exclusive mode)。其含义为:同一时刻只能有一个客户端访问被采用独占锁模式的锁保护的数据,例如,当客户端A写入数据,并且客户端A已缓存采用独占锁模式的数据写锁,此时,存储该数据的条带只能被当前的客户端A操作,即客户端A的数据写锁与其他客户端的数据写锁互斥。对于一个文件来说,由于该文件可以存储在不同节点上,因此,当数据写锁采用独占锁模式时,可以允许不同客户端同时在不同节点上的写入文件。
并行读模式(Lock_Concurrent Read mode)。其含义为:不同客户端可以同时访问被采用并行读模式的锁保护的数据。例如,当客户端A和客户端B分别写入数据,并且该客户端A和客户端B都已缓存采用并行读模式的数据写锁,则此时客户端A和客户端B均可以分别写入该数据。即客户端A的数据写锁与其他客户端的数据写锁不互斥。
需要说明的是,对于上述两种模式,元数据读写锁与数据读写锁类似,此处不再赘述。
下面通过表1对本实施例中元数据读写锁(元数据读锁和元数据写锁)、数据读写锁(以条带读锁和条带写锁为例)采用的模式进行说明。
表1
需要说明的是,表1中仅以客户端A与客户端B作为示例进行说明,在实际的场景中,可能涉及的更多的客户端,而客户端之间申请得到的元数据读写锁和数据读写锁的模式,都可以采用表1所示的方式。
下面针对表1的各个情况进行说明。
情况一:
当客户端A已缓存元数据读写锁和数据读写锁后,该客户端A再申请元数据读锁时,该客户端A不需要再向DLMS申请元数据读锁,而是直接获得缓存的元数据读锁;而客户端B申请元数据读锁时,此时,客户端B申请的元数据读锁与客户端A已缓存元数据读写锁和数据读写锁互斥,即客户端A已缓存的锁与客户端B申请的元数据读锁采用了上文所述独占锁模式,因此,DLMS会召回分配给客户端A已缓存元数据读写锁和数据读写锁,在客户端A释放已缓存元数据读写锁和数据读写锁后,DLMS将元数据读锁分配给客户端B;另外,元数据写锁与元数据读锁类似,此处不再赘述。
情况二:
当客户端A已缓存元数据读写锁和数据读写锁后,该客户端A再申请第一个分条数据块的条带读锁时,由于客户端A已缓存数据读写锁即可以在客户端在读取第一个分条数据块的数据时提供唯一的读取权限,因此,该客户端A不需要再向DLMS申请第一个分条数据块的条带读锁,而是直接获得该已缓存的数据读写锁;而客户端B申请第一个分条数据块的条带读锁时,此时,客户端B申请的第一个分条数据块的条带读锁与客户端A已缓存的锁采用了上文所述独占锁模式,DLMS会召回分配给客户端A的已缓存元数据读写锁和数据读写锁,在客户端A释放创建锁后,DLMS将第一个分条数据块的条带读锁分配给客户端B;另外,第一个分条数据块的条带写锁与第一个分条数据块的条带读锁类似,此处不再赘述。
情况三:
当客户端A已缓存元数据读写锁和数据读写锁后,该客户端A再申请其他分条数据块的条带读锁时,该其他分条数据块的条带读锁与客户端A已缓存元数据读写锁和数据读写锁不互斥,因此,DLMS将其他分条数据块的条带读锁分配给客户端A;需要说明的是,当数据大于一个条带的大小时,可以将该数据分别存储在多个分条数据块上,将数据分成数据1和数据2,其中数据1存储在第一个分条数据块上,数据2存储在第二个分条数据块上,首先客户端A在读取存储在第一个分条数据块上的数据1时,客户端A已缓存的数据读写锁为客户端A提供唯一读取该数据1的权限。进一步的,在客户端A读取存储在第二个分条数据块上的数据2时,客户端A需要再向DLMS申请其他分条数据块的条带读锁。
进一步的,对于客户端A已缓存元数据读写锁和数据读写锁后,若客户端B需要申请其他分条数据块的条带读锁,该其他分条数据块的条带读锁与客户端A已获得的已缓存元数据读写锁和数据读写锁不互斥,即客户端A已获得的锁与客户端B申请的其他分条数据块的条带读锁采用了上文所述并行读模式,因此,DLMS将其他分条数据块的条带读锁分配给客户端B;另外,其他分条数据块的条带写锁与其他分条数据块的条带读锁类似,此处不再赘述。
进一步的,下面通过具体实施例对元数据读写锁和数据读写锁被召回的过程进行说明,图10为本发明实施例提供的另一种分布式锁的实现方法的信令交互示意图,参照图10,该信令交互包括如下步骤:
步骤4-0、客户端A向DLMS发送创建锁的请求;
步骤4-1、客户端A收所述DLMS发送的元数据读写锁和数据读写锁;
具体的,在步骤4-1之后,客户端A也可以执行例如图9所示步骤3-4至步骤3-10。
步骤4-2、客户端B向DLMS发送创建锁的请求;
具体的,当客户端B申请的锁与客户端A已缓存的锁采用了上文所述独占锁模式,此时参照上文表1和情况一可知,客户端B申请的锁与客户端A已缓存的锁互斥。则执行步骤4-3。
需要说明的是,客户端B向DLMS请求的锁只要与元数据读写锁和数据读写锁互斥,既可以触发步骤4-3的召回请求,其不仅限于创建锁的请求。例如,客户端B请求元数据读锁、元数据写锁等。
步骤4-3、DLMS向客户端A发送召回请求;
步骤4-4、客户端A将元数据读写锁和数据读写锁发送给DLMS;
具体的,释放动作可以是在客户端A将第一元数据写入所述MDS以及将所述数据写入所述DS之后。
步骤4-5、DLMS将元数据读写锁和数据读写锁发送给客户端B。
具体的,基于步骤4-2的描述,DLMS也可以仅将元数据读写锁、元数据读锁、元数据写锁、数据读写锁、数据读锁或数据写锁发送给客户端B。
步骤4-6、客户端B根据元数据读写锁和数据读写锁执行对应的业务操作;
之后,若客户端A操作元数据或数据时,可以分别向DLMS申请元数据读写锁或数据读写锁。
图11为本发明实施例提供的一种通用网络设备的结构示意图,参照图11,该通用网络设备包括:处理器10,缓存器11,收发器12;
进一步的,当客户端采用该通用网络设备结构时,相应的,收发器12,用于向锁服务器发送创建锁的请求;将所述数据写入所述至少一个数据服务器;将第一元数据写入所述元数据服务器;
处理器10,用于确定所述缓存中保存有所述数据读写锁;确定所述缓存中保存有所述元数据读写锁;
缓存器11,用于将所述元数据读写锁和所述数据读写锁保存在所述客户端的缓存中;
本发明实施例提供的客户端,当客户端需要对数据进行写操作时,首先收发器向锁服务器发送创建锁的请求,获得元数据读写锁和数据读写锁,所述元数据读写锁用于所述客户端获得读取或修改元数据的唯一权限,所述数据读写锁用于所述客户端获得读取或修改数据的唯一权限;缓存器缓存元数据读写锁和数据读写锁。在处理器确定缓存有数据读写锁时,收发器将所述数据写入所述至少一个数据服务器,无需采用现有技术的交互流程再向锁服务器申请数据读写锁,进一步的,当收发器将所述数据写入所述数据服务器后,该数据对应的元数据可能发生变化,此时,收发器会将改变后的元数据写入所述元数据服务器,即所述第一元数据,由于缓存器已将元数据读写锁缓存,无需采用现有技术的交互流程再向锁服务器申请元数据读写锁,从而降低了客户端在写入数据过程中与锁服务器之间的交互次数,提高了写入数据的效率。
可选的,所述数据的大小小于或等于预设的阈值。
收发器12,还用于在将数据写入所述数据服务器之前,向所述元数据服务器发送元数据请求,所述元数据请求用于请求所述第二元数据,所述第二元数据包含所述数据的分布信息,所述数据的分布信息表示所述数据在所述至少一个数据服务器的存储位置;根据所述数据的分布信息将所述数据写入所述至少一个数据服务器的存储位置。
处理器10,具体用于在根据所述数据的分布信息将所述数据写入所述至少一个数据服务器的存储位置之后,将所述第二元数据修改为所述第一元数据,其中,所述第一元数据包括写入所述数据的时刻信息,所述写入所述数据的时刻信息表示所述客户端将所述数据写入所述至少一个数据服务器的时刻。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (8)

1.一种将数据写入数据服务器的方法,其特征在于,所述方法应用于存储***中,所述存储***包括客户端、元数据服务器、锁服务器和至少一个数据服务器,所述方法由所述客户端执行,包括:
向锁服务器发送创建锁的请求,所述创建锁的请求用于创建元数据读写锁和数据读写锁,所述元数据读写锁用于所述客户端获得读取或修改元数据的唯一权限,所述数据读写锁用于所述客户端获得读取或修改数据的唯一权限;
将所述元数据读写锁和所述数据读写锁保存在所述客户端的缓存中;
确定所述缓存中保存有所述数据读写锁;
将所述数据写入所述至少一个数据服务器;
确定所述缓存中保存有所述元数据读写锁;
将第一元数据写入所述元数据服务器。
2.根据权利要求1所述的方法,其特征在于,所述数据的大小小于或等于预设的阈值。
3.根据权利要求1或2所述的方法,其特征在于,在所述将数据写入所述数据服务器之前,还包括:
向所述元数据服务器发送元数据请求,所述元数据请求用于请求第二元数据,所述第二元数据包含所述数据的分布信息,所述数据的分布信息表示所述数据在所述至少一个数据服务器的存储位置;
所述将数据写入所述至少一个数据服务器,包括:
根据所述数据的分布信息将所述数据写入所述至少一个数据服务器的存储位置。
4.根据权利要求3所述的方法,其特征在于,在所述根据所述数据的分布信息将所述数据写入所述至少一个数据服务器的存储位置之后,还包括:
将所述第二元数据修改为所述第一元数据,其中,所述第一元数据包括写入所述数据的时刻信息,所述写入所述数据的时刻信息表示所述客户端将所述数据写入所述至少一个数据服务器的时刻。
5.一种存储***,其特征在于,所述存储***,包括:客户端、元数据服务器、锁服务器和至少一个数据服务器;
所述元数据服务器,用于存储所述客户端写入的第一元数据;
所述数据服务器,用于存储所述客户端写入的数据;
所述锁服务器,用于接收所述客户端发送的创建锁的请求,所述创建锁的请求用于创建元数据读写锁和数据读写锁,所述元数据读写锁用于所述客户端获得读取或修改元数据的唯一权限,所述数据读写锁用于所述客户端获得读取或修改数据的唯一权限;向所述客户端发送所述元数据读写锁和所述数据读写锁;
所述客户端,用于:
向所述锁服务器发送所述创建锁的请求;
将所述元数据读写锁和所述数据读写锁保存在所述客户端的缓存中;
确定所述缓存中保存有所述数据读写锁;
将所述数据写入所述至少一个数据服务器;
确定所述缓存中保存有所述元数据读写锁;
将所述第一元数据写入所述元数据服务器。
6.根据权利要求5所述的存储***,其特征在于,所述数据的大小小于或等于预设的阈值。
7.根据权利要求5或6所述的存储***,其特征在于,所述客户端,还用于在所述将数据写入所述数据服务器之前,向所述元数据服务器发送元数据请求,所述元数据请求用于请求第二元数据,所述第二元数据包含所述数据的分布信息;所述数据的分布信息表示所述数据在所述至少一个数据服务器的存储位置;根据所述数据的分布信息将所述数据写入所述至少一个数据服务器的存储位置;
所述元数据服务器,还用于接收所述元数据请求;向所述客户端发送所述第二元数据。
8.根据权利要求7所述的存储***,其特征在于,所述至少一个客户端,还用于在根据所述数据的分布信息将所述数据写入所述至少一个数据服务器的存储位置之后,将所述第二元数据修改为所述第一元数据,其中,所述第一元数据包括写入所述数据的时刻信息,所述写入所述数据的时刻信息表示所述客户端将所述数据写入所述至少一个数据服务器的时刻。
CN201510085669.XA 2015-02-17 2015-02-17 一种将数据写入数据服务器的方法及存储*** Active CN104636088B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510085669.XA CN104636088B (zh) 2015-02-17 2015-02-17 一种将数据写入数据服务器的方法及存储***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510085669.XA CN104636088B (zh) 2015-02-17 2015-02-17 一种将数据写入数据服务器的方法及存储***

Publications (2)

Publication Number Publication Date
CN104636088A CN104636088A (zh) 2015-05-20
CN104636088B true CN104636088B (zh) 2018-04-10

Family

ID=53214899

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510085669.XA Active CN104636088B (zh) 2015-02-17 2015-02-17 一种将数据写入数据服务器的方法及存储***

Country Status (1)

Country Link
CN (1) CN104636088B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105426271B (zh) * 2015-12-22 2018-09-21 华为技术有限公司 对分布式存储***的锁管理的方法和装置
WO2017113351A1 (zh) * 2015-12-31 2017-07-06 华为技术有限公司 写数据方法和装置以及***
CN105653406B (zh) * 2015-12-31 2019-05-24 华为技术有限公司 一种管理分布式存储***的方法及分布式存储***
CN106603729A (zh) * 2017-02-23 2017-04-26 郑州云海信息技术有限公司 一种分布式文件***多客户端同步方法及***
CN109857341B (zh) * 2019-01-15 2022-04-12 新华三技术有限公司成都分公司 写锁预取长度的确定方法及装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU4210800A (en) * 1999-04-09 2000-11-14 Liquid Audio, Inc. Secure online music distribution system
CN101159556B (zh) * 2007-11-09 2011-01-26 清华大学 基于组密钥服务器的共享加密文件***中的密钥管理方法
EP2651072A3 (en) * 2010-09-20 2013-10-23 Security First Corp. Systems and methods for secure data sharing
EP2715601A1 (en) * 2011-06-01 2014-04-09 Security First Corp. Systems and methods for secure distributed storage

Also Published As

Publication number Publication date
CN104636088A (zh) 2015-05-20

Similar Documents

Publication Publication Date Title
JP7378870B2 (ja) ファイルシステムデータアクセス方法およびファイルシステム
CN104636088B (zh) 一种将数据写入数据服务器的方法及存储***
JP5411250B2 (ja) 冗長データ記憶システムへの指示に従ってのデータ配置
CN106407040B (zh) 一种远程数据复制方法及***
CN107798130B (zh) 一种分布式存储快照的方法
CN109213420A (zh) 数据存储方法、装置及***
CN103870202B (zh) 一种块设备的分布式存储方法和***
CN107436725A (zh) 一种数据写、读方法、装置及分布式对象存储集群
CN106126374B (zh) 数据写入方法、数据读取方法及装置
CN106446159B (zh) 一种存储文件的方法、第一虚拟机及名称节点
CN102982182B (zh) 一种数据存储规划方法及装置
CN109582213A (zh) 数据重构方法及装置、数据存储***
CN104050102B (zh) 一种电信***中的对象存储方法及装置
US20100306462A1 (en) Virtual tape apparatus, control method of virtual tape apparatus, and control section of electronic device
CN109471843A (zh) 一种元数据缓存方法、***及相关装置
CN103812934B (zh) 基于云存储***的遥感数据发布方法
CN106528338A (zh) 一种远程数据复制方法、存储设备及存储***
CN104715044B (zh) 一种分布式***及其数据操作方法
CN106873902A (zh) 一种文件存储***、数据调度方法及数据节点
CN107506466A (zh) 一种小文件存储方法及***
CN108153759A (zh) 一种分布式数据库的数据传输方法、中间层服务器及***
JP6406283B2 (ja) ストレージ装置およびストレージ方法
US11188258B2 (en) Distributed storage system
CN107896248B (zh) 一种基于客户端通信的并行文件***应用方法
US11163642B2 (en) Methods, devices and computer readable medium for managing a redundant array of independent disks

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