CN110245122B - 一种数据处理的方法和kv存储系统 - Google Patents
一种数据处理的方法和kv存储系统 Download PDFInfo
- Publication number
- CN110245122B CN110245122B CN201910381182.4A CN201910381182A CN110245122B CN 110245122 B CN110245122 B CN 110245122B CN 201910381182 A CN201910381182 A CN 201910381182A CN 110245122 B CN110245122 B CN 110245122B
- Authority
- CN
- China
- Prior art keywords
- directory
- target
- stripe
- information
- file
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
Abstract
本申请提供了一种数据处理的方法和KV存储系统。该方法包括:接收第一操作,该第一操作用于在键值KV存储系统的目标目录下创建目标文件,其中,该KV存储系统包括至少一个对象,该至少一个对象中的每一个对象用于存储一个条带目录的元数据,该每一个对象包括第一集合和第二集合,该第一集合包括目录项信息,该第二集合包括元数据信息;确定该目标文件在该目标目录下的条带目录的对象;在该条带目录的对象中第一集合建立该目标文件的目录项信息,在该条带目录的对象中第二集合建立与该目标文件的目录项信息对应的元数据信息。本申请提供的技术方案能够提高数据处理的性能。
Description
技术领域
本申请涉及通信技术领域,并且更具体地,涉及一种数据处理的方法和KV存储系统。
背景技术
本地文件系统是指文件的数据和元数据都保存在同一个服务器上,即所有的操作都是服务器的本地操作,而不需要将数据和元数据发送到远程服务器。本地文件系统包括Ext3、Ext4、XFS、ZFS等等。而分布式文件系统是相对本地文件系统而言的。分布式文件系统是指一个文件系统的各种操作(如文件和目录的创建、删除、修改、查找等)分布到多个台服务器上。分布式文件系统非常多,业界著名的文件包括GPFS、Lustre、GoogleFS、Hadoop FS、CephFS、Glustrefs、MooseFS、BeeGFSet等等。
在分布式文件系统中,经常出现热点数据。这些热点数据包括:(1)文件系统中的某个目录是大目录,该目录下有几万、几十万甚至上百万个文件。(2)文件系统同时出现多个热点目录和热点文件,在该目录下频繁地进行文件和子目录的创建、删除、修改、查找等操作。当文件系统的这些热点数据同时出现在某个服务器上,将会导致该服务器负荷非常重,而其他服务器负荷很轻,从而出现严重的负载不均,大幅降低整个文件系统的总体性能。
现有技术中,为了降低单个节点的负荷,将目录分成条带,每个条带分布到不同的节点上,并在指定的节点上利用本地文件系统创建文件和目录。但条带目录以及其他文件的元数据对象通常都使用本地文件系统来存储,在海量文件的情况下,每一个文件的元数据对象的读写都需要调用本地文件系统的接口进行条带目录信息的查询,影响数据处理的性能。
因此,如何提高数据处理性能成为亟待解决的问题。
发明内容
有鉴于此,本申请提供了一种数据处理的方法和KV存储系统,能够提高数据的处理性能。
第一方面,提供了一种数据处理的方法。具体地,该方法包括:接收第一操作,该第一操作用于在键值KV存储系统的目标目录下创建目标文件,其中,该KV存储系统包括至少一个对象,该至少一个对象中的每一个对象用于存储一个条带目录的元数据,该每一个对象包括第一集合和第二集合,该第一集合包括目录项信息,该第二集合包括元数据信息;确定该目标文件在该目标目录下的条带目录的对象;在该条带目录的对象中第一集合建立该目标文件的目录项信息,在该条带目录的对象中第二集合建立与该目标文件的目录项信息对应的元数据信息。
本申请通过利用KV存储系统中的至少一个对象中的每一个对象存储一个条带目录的元数据,其中,每一个对象中的第一集合包括目录项信息,第二集合包括元数据信息,在确定目标文件在目标目录下的条带目录的对象,并在该条带目录的对象中第一集合建立目标文件的目录项信息,在该条带目录的对象中第二集合建立与该目标文件的目录项信息对应的元数据信息,从而提高数据处理性能。
结合第一方面,在第一方面的某些可能的实现方式中,在确定目标文件在目标目录下的条带目录的对象之前,该方法还包括:确定该目标目录的父目录对象;在该父目录对象的第二集合中确定该目标目录的条带信息;其中,确定该目标文件在该目标目录下的条带目录的对象,包括:根据该目标目录的条带信息确定该条带目录的对象。
结合第一方面,在第一方面的某些可能的实现方式中,该条带信息包括目标目录的条带数量和目标目录的条带起始偏移。
可选地,该条带信息可以由用户根据实际需要定义,本申请实施例对此不作限定。
结合第一方面,在第一方面的某些可能的实现方式中,根据该目标目录的条带信息确定该条带目录的对象,包括:根据下式确定该条带目录的对象:
Index=hash(filename)%stripe_counter
其中,Index为该条带目录在该目标目录下的编号,filename为该目标文件的名称,stripe_counter为该目标目录的条带数量。
结合第一方面,在第一方面的某些可能的实现方式中,该方法还包括:更新该目标目录的元数据信息。
结合第一方面,在第一方面的某些可能的实现方式中,该方法还包括:接收第二操作,该第二操作用于在该KV存储系统中该目标目录的父目录下创建该目标目录;确定该父目录对象;在该父目录对象中第一集合建立该目标目录的目录项信息,在该父目录对象中第二集合建立与该目标目录的目录项信息对应的元数据信息;创建该目标目录的条带目录的对象。
结合第一方面,在第一方面的某些可能的实现方式中,创建该目标目录的条带目录的对象,包括:根据该目标目录的元数据信息确定该目标目录的条带信息;根据该目标目录的条带信息确定目标目录的条带目录;创建该条带目录的对象。
结合第一方面,在第一方面的某些可能的实现方式中,该方法还包括:在该目标目录的条带目录的对象中第二集合建立第一信息,其中,该第一信息继承该父目录对象中的该目标目录的元数据信息。
结合第一方面,在第一方面的某些可能的实现方式中,该元数据信息包括以下至少一种:该目标文件的标识信息;该目标文件的属性信息;该目标文件的扩展属性信息;该目标目录的条带信息。
第二方面,提供了一种键值KV存储系统。具体地,该KV存储系统包括:存储单元,用于存储至少一个对象,该至少一个对象中的每一个对象用于存储一个条带目录的元数据,该每一个对象包括第一集合和第二集合,该第一集合包括目录项信息,该第二集合包括元数据信息;控制单元,用于:接收第一操作,该第一操作用于在该KV存储系统的目标目录下创建目标文件;确定该目标文件在该目标目录下的条带目录的对象;在该条带目录的对象中第一集合建立该目标文件的目录项信息,在该条带目录的对象中第二集合建立与该目标文件的目录项信息对应的元数据信息。
结合第二方面,在第二方面的某些可能的实现方式中,该控制单元还用于确定该目标目录的父目录对象;在该父目录对象中的第二集合中确定该目标目录的条带信息;该控制单元具体用于:根据该目标目录的条带信息确定该条带目录的对象。
结合第二方面,在第二方面的某些可能的实现方式中,该条带信息包括条带数量和条带起始偏移。
结合第二方面,在第二方面的某些可能的实现方式中,该控制单元具体用于:根据下式确定该条带目录的对象:
Index=hash(filename)%stripe_counter
其中,Index为该条带目录在该目标目录下的编号,filename为该目标文件的名称,stripe_counter为该目标目录的条带数量。
结合第二方面,在第二方面的某些可能的实现方式中,该控制单元还用于:更新该目标目录的元数据信息。
结合第二方面,在第二方面的某些可能的实现方式中,该控制单元还用于:接收第二操作,该第二操作用于在该KV存储系统中该目标目录的父目录下创建该目标目录;确定该父目录对象;在该父目录对象中第一集合建立该目标目录的目录项信息,在该父目录对象中第二集合建立与该目标目录的目录项信息对应的元数据信息;创建该目标目录的条带目录的对象。
结合第二方面,在第二方面的某些可能的实现方式中,该控制单元还用于:根据该目标目录的元数据信息确定该目标目录的条带信息;根据该目标目录的条带信息确定该目标目录的条带目录;创建该条带目录的对象。
结合第二方面,在第二方面的某些可能的实现方式中,该控制单元还用于:该控制单元还用于:在该目标目录的条带目录的对象中第二集合建立第一信息,其中,该第一信息继承该父目录对象中的该目标目录的元数据信息。
结合第二方面,在第二方面的某些可能的实现方式中,其特征在于,该元数据信息包括以下至少一种:该目标文件的标识信息;该目标文件的属性信息;该目标文件的扩展属性信息;该目标目录的条带信息。
第三方面,提供了一种计算机可读介质,所述计算机可读介质存储有程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述各方面中的方法。
第四方面,提供了一种芯片,包括存储器、处理器和收发器,
所述存储器用于存储计算机程序;
所述处理器可以与收发器通信连接。所述存储器可以用于存储所述终端设备的程序代码和数据。因此,所述存储器可以是处理器内部的存储单元,也可以是与处理器独立的外部存储单元,还可以是包括处理器内部的存储单元和与处理器独立的外部存储单元的部件。
可选地,所述处理器可以是通用处理器,可以通过硬件来实现也可以通过软件来实现。当通过硬件实现时,所述处理器可以是逻辑电路、集成电路等;当通过软件来实现时,所述处理器可以是一个通用处理器,通过读取存储器中存储的软件代码来实现,所述存储器可以集成在处理器中,可以位于所述处理器之外,独立存在。
所述处理器用于从存储器中调用并运行该计算机程序,使得所述中央网络控制器执行第一方面或第一方面任意一种可能的实现方式中所述的方法。
第五方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述各方面中的方法。
附图说明
图1是本申请实施例的适用的分布式文件存储系统的结构图;
图2是现有技术中一种条带目录创建的示意图;
图3是现有技术中一种条带目录创建的示意图;
图4是适用于本申请实施例的KV存储系统的示意图;
图5是适用于本申请实施例的KV存储系统的第一集合和第二集合的示意图;
图6是本申请实施例提供的数据处理方法的示意性流程图;
图7是本申请实施例提供的创建目标文件的示意图;
图8和图9是本申请实施例提供的创建目标目录的示意图;
图10是本申请实施例提供的KV存储系统的结构示意图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
图1示出了本申请实施例中适用的分布式文件存储系统10的结构。如图1所示,包含有8个存储服务器101,多个存储服务器101之间通过低延迟、高吞吐量的网络(例如IB网络、10G以太网)互连形成集群。客户端代理30部署在应用服务器20中,并通过前端交换机50实现用户数据与集群间的通信。集群中的各个存储服务器节点101则通过后端交换机60实现内部通信。客户端代理30也可以部署在分布式文件存储系统10的各个存储服务器节点101中,其功能与部署在应用服务器20中的客户端代理30的功能类似,不再另行描述。
应用服务器20上的客户端代理30接收应用发送的用户的数据处理请求,所述数据处理请求中携带有目标文件的文件标识符描述符(file identifier descriptor,FID)、偏移地址offset、文件长度length等信息。所述目标文件为待处理的文件。根据数据处理请求中携带的偏移地址和长度信息计算出文件数据的有效条带块的数量(DataStrip Count,DSC)。有效条带块是指包含有文件数据的数据条带块。
当客户端代理30部署在分布式文件存储系统10的存储服务器节点101上时,应用服务器20接收到数据处理请求之后,将数据请求通过前端交换机50发送给某个存储服务器上的客户端代理30。应用服务器20将数据处理请求发送给存储服务器101上的客户端代理的方法与现有方法类似,在此不再详述。存储服务器101上的客户端代理30对数据处理请求的方法与应用服务器20上的客户端代理30的处理方式类似,不再另行描述。
分布式文件系统中文件存取是基本功能,但如果大量的文件存放在同一个目录中时,将会对文件数据的处理性能造成较大的影响。因此,现有技术在文件目录数量较多时,采用条带目录(Stripe Directory)技术将可能成为热点目录的目录分成条带,每个条带分布在不同的节点上,从而减轻单个节点的负荷。
图2和图3分别示出了两种不同方式的条带目录的创建。如图2和图3所示,以在条带目录dir中创建新的条带目录dir1为例:通过计算,确定需要在条带目录Shard2下创建条带目录,为新条带目录dir1在各个节点上创建条带,例如stripe1,stripe2,stripe3,stripe4。在指定节点上,利用本地系统文件,创建文件和目录。子目录的条带信息默认继承父目录的条带信息,例如图2中子目录dir1继承了父目录dir的条带分布,均是从Shard1开始到Shard4结束的4个条带目录。
可选地,子目录的条带信息也可以通过使用修改参数来自定义条带目录的分布,例如,通过使用Lustre自带的工具lctl命令修改参数,本申请实施例对此不作限定。如图3所示,子目录dir1的条带信息为从Shard2开始到Shard6结束的5个条带目录,而父目录的条带信息为从Shard1开始到Shard4结束的4个条带目录,子目录的条带分布与父目录的条带分布不同。
由于现有技术中使用的是本地文件系统来存储条带目录以及其他文件的元数据对象,而条带信息是存放在目录文件元数据(inode)信息的扩展属性(xattr)中,致使在条带目录下有大量文件读写的情况下,每次读写都会调用本地文件系统的接口进行条带目录信息的查询,并进行文件元数据的修改,同时也会修改条带目录的元数据信息。这样频繁的调用本地文件系统接口来读写磁盘的开销会比较大,因此依赖本地文件系统的元数据读写将会成为性能瓶颈,影响文件系统的数据处理性能。
有鉴于此,本申请实施例提供了一种数据处理的方法,通过使用键值(key-value,KV)存储系统来存储条带目录中的目录以及文件的元数据,从而提高数据处理性能。
图4示出了本申请实施例提供的KV存储系统的结构示意图。如图4所示,该KV存储系统将每一个文件或文件夹的信息分别存储在一个对象(Obj)的两个集合中,即第一集合DentrySet和第二集合InodeSet。该KV存储系统包括至少一个对象,每一个对象用于存储一个条带目录的元数据。如图5所示,每一个对象中的第一集合和第二集合为一系列键值对(key-value)。以目录dir0和文件file0为例,第一集合DentrySet中存储dir0和file0的目录项,例如dir0entry和file0entry,第二集合InodeSet中存储dir0和file0的文件对象的元数据信息,例如dir0inode和file0inode。另外,一般默认在第二集合InodeSet中第一条数据为第一信息BaseInode,这个BaseInode在当前Obj中没有对应的DentrySet项,它记录了当前这个Obj的条带信息的元数据对象与其关联的上一层的Obj的InodeSet中的对应的记录相同。
应说明,子目录可以认为是父目录下的一个文件,所以第二集合中存储的目录的元数据信息也可以称为文件对象的元数据信息,为了避免歧义,本申请实施例中将文件对象的元数据信息也称为元数据信息,即第二集合中存储元数据信息。
下边继续以dir0和file0为例说明第一集合DentrySet和第二集合InodeSet中键值对如何存储目录以及文件信息。如图5所示,第一集合DentrySet存储dir0以及file0的entry信息,其中键key存储目录或文件的名称name,例如“dir0”、“file0”,值value存储目录或文件的唯一标识信息,例如FID。第二集合InodeSet中存储与第一集合DentrySet中存储的目录项信息对应的元数据(inode)信息,其中键key为目录或文件的唯一标识信息,例如FID,值value存储目录或文件的属性信息,例如属性信息attr、扩展属性xattr以及条带信息等。
图6为本申请实施例提供的数据处理方法600的示意性流程图。该方法600包括步骤S601至S603,下面详细介绍这些步骤。
S601,接收第一操作,所述第一操作用于在KV存储系统的目标目录下创建目标文件。
服务器接收客户端发送的第一操作,该第一操作用于在图4和图5所示的KV存储系统的目标目录下创建目标文件。
为了便于说明,本申请实施例以在“/home/dir0”下创建“file0”为例来说明。其中,“file0”为需要创建的目标文件,“/home/dir0”为目标目录。
S602,确定目标文件在目标目录下的条带目录的对象。
在服务器接收到第一操作后,根据该第一操作确定目标目录以及目标文件,为了在该目标目录下创建目标文件,需要确定目标文件在目标目录下的条带目录的对象。如图7所示,在目标目录“/home/dir0”下的条带目录Shard4中创建目标文件“file0”。
例如,首先根据父目录“/”读取第一集合DentrySet中key为“/home”的记录,通过第二集合InodeSet的value得到父目录“/home”所在的条带(Shard)号,如图7中所示,“/home”所在的条带为Shard1。然后计算出“/home”对应的唯一标识,例如对象标识符(objectidentifier,OID),在Shard1中,根据OID找到“/home”对应的Obj,并在这个Obj中找到目标目录“dir0”对应的第一集合和第二集合。若在该目标目录的第二集合InodeSet中找到条带信息stripeInfo,确定该目标目录为条带目录,则从该目标目录的第二集合中确定该目标目录的条带信息,即条带数量stripe_counter和条带起始偏移offset。服务器根据“/home/dir0/file0”的文件名以及条带信息(以offset=1,stripe_counter=4为例)参照式(1)来确定目标文件“file0”在目标目录下的条带目录的对象:
Index=hash(filename)%stripe_counter 式(1)
式(1)中filename为需要创建的文件名,在本申请实施例中,filename为“file0”。
计算得到Index后,以Index=4为例,表明需要在Shard4中创建文件“file0”。
在一些可能的实现方式中,若在该目标目录的第二集合InodeSet中未找到条带信息stripeInfo,表明该目标目录为非条带目录,则直接在该目标目录下创建目标文件。
应说明,本申请实施例中的条带信息用户可以根据实际需要设置,上述具体数值仅仅为举例,本申请实施例对此并不作限定。
S603,在条带目录的对象中第一集合建立所述目标文件的目录项信息,在条带目录的对象中第二集合建立与所述目标文件的目录项信息对应的元数据信息。
可选地,在创建“file0”之前,先向S602中确定目标文件在目标目录下的条带目录,例如Shard4,发送查找(lookup)请求,查看Shard4中是否包含文件名为“file0”的信息,如图7所示。若Shard4中不存在“file0”,则在该条带目录Obj的第一集合DentrySet中插入file0的entry信息,在该条带目录Obj的第二集合InodeSet中插入file0的inode信息,同时更新目标目录“dir0”的entry信息,例如,更新BaseInode中attr的时间信息。创建成功后,服务器向客户端发送创建成功指示。
可选地,若Shard4中已经存在“file0”,则停止创建过程。
在一些可能的实施方式中,方法600还可用于在KV存储系统中目标目录的父目录下创建目标目录。为了便于说明,下边以在“/home”目录下创建条带目录“dir0”为例进行说明。其中,“home”为父目录,“dir0”为目标目录。
此时,S601还包括接收第二操作,其中,该第二操作用于在所述KV存储系统中目标目录的父目录下创建目标目录。
在S602中,首先根据父目录“/”读取第一集合DentrySet中key为“/home”的记录,通过第二集合InodeSet的value得到父目录home所在的条带(Shard)号,如图8所示“/home”所在的条带为Shard1。然后计算出“/home”对应的唯一标识,例如OID,并且在Shard1中,根据OID找到“/home”对应的Obj。
在找到父目录“/home”对应的Obj后,在该Obj中的第一集合DentrySet建立目标目录“dir0”的entry信息,在该Obj中的第二集合InodeSet建立“dir0”的inode信息,该inode信息包括以下至少一种:条带目录或文件的唯一编号,例如FID,属性信息attr,扩展属性信息xattr以及条带信息,其中,该条带信息包括目标目录的条带数量stripe_counter以及目标目录的条带的起始偏移offset。
在确定条带信息后,根据该条带信息中包括的目标目录的条带数量stripe_count以及目标目录的条带的起始偏移offset,向需要建立条带的每个Shard发送创建请求,创建目标目录“dir0”的条带目录Obj,并且向这个Obj的第二集合InodeSet中插入第一信息,例如BaseInode,该第一信息继承来自父目录“/home”对象中的目标目录“dir0”的元数据信息。如图8所示,以条带信息stripe_counter=4,offset=0为例,表明在条带Shard1下从条带起始偏移为0的位置开始创建4个目标目录的条带目录的对象,即分别在Shard1、Shard2、Shard3、Shard4下创建条带目录的对象Stripe-1obj、Stripe-2obj、Stripe-3obj、Stripe-4obj。
再例如,当条带信息stripe_counter=3,offset=1时,表明在条带Shard1下从条带起始偏移为1的位置开始创建3个目标目录的条带目录的对象,即分别在Shard2、Shard3、Shard4下创建条带目录的对象Stripe-2obj、Stripe-3obj、Stripe-4obj,如图9所示。
应说明,上述参数仅仅为举例说明,本申请实施例并不对此作限定。
图10是本申请实施例的KV存储系统的示意性结构图,图10所示的KV存储系统1000包括:存储单元1010和控制单元1020。
存储单元1010,用于存储至少一个对象,该至少一个对象中的每一个对象用于存储一个条带目录的元数据,该至少一个对象中的每一个对象包括第一集合和第二集合,该第一集合包括目录项信息,该第二集合包括元数据信息。
控制单元1020,用于接收第一操作,该第一操作用于在该KV存储系统的目标目录下创建目标文件。
控制单元1020还用于确定该目标文件在该目标目录下的条带目录的对象。
控制单元1020还用于在该条带目录的对象中第一集合建立该目标文件的目录项信息,在该条带目录的对象中第二集合建立与该目标文件的目录项信息对应的元数据信息。
上述技术方案中,KV存储系统中的至少一个对象中的每一个对象存储一个条带目录的元数据,并且在目标文件所在的目标目录下的条带目录的对象中第一集合建立该目标文件的目录项信息,第二集合建立与该目标文件的目录项信息对应的元数据信息,从而提高数据处理性能。
可选地,控制单元1020还用于确定该目标目录的父目录对象。
可选地,控制单元1020还用于在该父目录对象中的第二集合中确定该目标目录的条带信息。
可选地,该控制单元1020具体用于根据该目标目录的条带信息确定该条带目录的对象。
可选地,该条带信息包括该条带信息包括该目标目录的条带数量和该目标目录的条带起始偏移。
可选地,控制单元1020具体用于根据式(1)确定该条带目录的对象。
可选地,控制单元1020还用于更新该目标目录的元数据信息。
可选地,控制单元1020还用于接收第二操作,该第二操作用于在该KV存储系统中该目标目录的父目录下创建该目标目录。
可选地,控制单元1020还用于确定该父目录的对象。
可选地,控制单元1020还用于在该父目录对象中第一集合建立该目标目录的目录项信息,在该父目录对象中第二集合建立与该目标目录的目录项信息对应的元数据信息。
可选地,控制单元1020还用于创建该目标目录的条带目录的对象。
可选地,控制单元1020还用于根据该目标目录的元数据信息确定该目标目录的条带信息。
可选地,控制单元1020还用于根据该目标目录的条带信息确定该目标目录的条带目录。
可选地,控制单元1020还用于创建该条带目录的对象。
可选地,控制单元1020还用于在该目标目录的条带目录的对象中第二集合建立第一信息,其中,该第一信息继承该父目录对象中的该目标目录的元数据信息。
可选地,元数据信息包括以下至少一种:该目标文件的标识信息;该目标文件的属性信息;该目标文件的扩展属性信息;该目标目录的条带信息。
本申请还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有程序代码,当该计算机代码在计算机上运行时,使得计算机执行上述如图6所示的方法600中的各个步骤。
本申请还提供一种芯片,包括存储器、处理器和收发器,所述芯片可以用于执行步骤S601-S603中所述的方法和/或实现本文所描述的技术的其它步骤等。
具体地,所述存储器用于存储程序;
所述处理器可以与收发器通信连接。所述存储器可以用于存储所述终端设备的程序代码和数据。因此,所述存储器可以是处理器内部的存储单元,也可以是与处理器独立的外部存储单元,还可以是包括处理器内部的存储单元和与处理器独立的外部存储单元的部件。
可选地,所述处理器可以是通用处理器,可以通过硬件来实现也可以通过软件来实现。当通过硬件实现时,所述处理器可以是逻辑电路、集成电路等;当通过软件来实现时,所述处理器可以是一个通用处理器,通过读取存储器中存储的软件代码来实现,所述存储器可以集成在处理器中,可以位于所述处理器之外,独立存在。
可选地,本申请实施例还提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述各方面中的方法。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请中使用的术语“部件”、“模块”、“系统”等用于表示计算机相关的实体、硬件、固件、硬件和软件的组合、软件、或执行中的软件。例如,部件可以是但不限于,在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。通过图示,在计算设备上运行的应用和计算设备都可以是部件。一个或多个部件可驻留在进程和/或执行线程中,部件可位于一个计算机上和/或分布在2个或更多个计算机之间。此外,这些部件可从在上面存储有各种数据结构的各种计算机可读介质执行。部件可根据具有一个或多个数据分组(例如来自与本地系统、分布式系统和/或网络间的另一部件交互的二个部件的数据,例如通过信号与其它系统交互的互联网)的信号通过本地和/或远程进程来通信。
还应理解,在本申请的各实施例中,“第一”、“第二”、“第三”等仅是为了指代不同的对象,并不表示对指代的对象有其它限定。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
应理解,本申请实施例中,该处理器可以为中央处理单元(central processingunit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
还应理解,本申请实施例中,该存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。处理器的一部分还可以包括非易失性随机存取存储器。例如,处理器还可以存储设备类型的信息。
应理解,在本申请实施例中,“与A相应的B”表示B与A相关联,根据A可以确定B。但还应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够读取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,数字通用光盘(digital video disc,DVD))或者半导体介质(例如,固态硬盘(solid state disk,SSD))等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (17)
1.一种数据处理的方法,其特征在于,包括:
接收第一操作,所述第一操作用于在键值KV存储系统的目标目录下创建目标文件,其中,所述KV存储系统包括至少一个对象,所述至少一个对象中的每一个对象用于存储一个条带目录的元数据,所述每一个对象包括第一集合和第二集合,所述第一集合包括目录项信息,所述第二集合包括元数据信息;
确定所述目标目录的父目录对象;
在所述父目录对象的第二集合中确定所述目标目录的条带信息;
根据所述目标目录的条带信息,确定所述目标文件在所述目标目录下的条带目录的对象;
在所述条带目录的对象中第一集合建立所述目标文件的目录项信息,在所述条带目录的对象中第二集合建立与所述目标文件的目录项信息对应的元数据信息。
2.根据权利要求1所述的方法,其特征在于,所述条带信息包括所述目标目录的条带数量和所述目标目录的条带起始偏移。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述目标目录的条带信息确定所述条带目录的对象,包括:
根据下式确定所述条带目录的对象:
Index=hash(filename)%stripe_counter
其中,Index为所述条带目录在所述目标目录下的编号,filename为所述目标文件的名称,stripe_counter为所述目标目录的条带数量。
4.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
更新所述目标目录的元数据信息。
5.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
接收第二操作,所述第二操作用于在所述KV存储系统中所述目标目录的父目录下创建所述目标目录;
确定所述父目录对象;
在所述父目录对象中第一集合建立所述目标目录的目录项信息,在所述父目录对象中第二集合建立与所述目标目录的目录项信息对应的元数据信息;
创建所述目标目录的条带目录的对象。
6.根据权利要求5所述的方法,其特征在于,所述创建所述目标目录的条带目录的对象,包括:
根据所述目标目录的元数据信息确定所述目标目录的条带信息;
根据所述目标目录的条带信息确定所述目标目录的条带目录;
创建所述条带目录的对象。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在所述目标目录的条带目录的对象中第二集合建立第一信息,其中,所述第一信息继承所述父目录对象中的所述目标目录的元数据信息。
8.根据权利要求1或2所述的方法,其特征在于,所述元数据信息包括以下至少一种:
所述目标文件的标识信息;
所述目标文件的属性信息;
所述目标文件的扩展属性信息;
所述目标目录的条带信息。
9.一种键值KV存储系统,其特征在于,包括:
存储单元,用于存储至少一个对象,所述至少一个对象中的每一个对象用于存储一个条带目录的元数据,所述每一个对象包括第一集合和第二集合,所述第一集合包括目录项信息,所述第二集合包括元数据信息;
控制单元,用于:
接收第一操作,所述第一操作用于在所述KV存储系统的目标目录下创建目标文件;
确定所述目标目录的父目录对象;
在所述父目录对象的第二集合中确定所述目标目录的条带信息;
根据所述目标目录的条带信息,确定所述目标文件在所述目标目录下的条带目录的对象;
在所述条带目录的对象中第一集合建立所述目标文件的目录项信息,在所述条带目录的对象中第二集合建立与所述目标文件的目录项信息对应的元数据信息。
10.根据权利要求9所述的系统,其特征在于,所述条带信息包括所述目标目录的条带数量和所述目标目录的条带起始偏移。
11.根据权利要求9或10所述的系统,其特征在于,所述控制单元具体用于:
根据下式确定所述条带目录的对象:
Index=hash(filename)%stripe_counter
其中,Index为所述条带目录在所述目标目录下的编号,filename为所述目标文件的名称,stripe_counter为所述目标目录的条带数量。
12.根据权利要求9或10所述的系统,其特征在于,所述控制单元还用于:
更新所述目标目录的元数据信息。
13.根据权利要求9或10所述的系统,其特征在于,所述控制单元还用于:
接收第二操作,所述第二操作用于在所述KV存储系统中所述目标目录的父目录下创建所述目标目录;
确定所述父目录对象;
在所述父目录对象中第一集合建立所述目标目录的目录项信息,在所述父目录对象中第二集合建立与所述目标目录的目录项信息对应的元数据信息;
创建所述目标目录的条带目录的对象。
14.根据权利要求13所述的系统,其特征在于,所述控制单元具体用于:
根据所述目标目录的元数据信息确定所述目标目录的条带信息;
根据所述目标目录的条带信息确定所述目标目录的条带目录;
创建所述条带目录的对象。
15.根据权利要求13所述的系统,其特征在于,所述控制单元还用于:
在所述目标目录的条带目录的对象中第二集合建立第一信息,其中,所述第一信息继承所述父目录对象中的所述目标目录的元数据信息。
16.根据权利要求9或10所述的系统,其特征在于,所述元数据信息包括以下至少一种:
所述目标文件的标识信息;
所述目标文件的属性信息;
所述目标文件的扩展属性信息;
所述目标目录的条带信息。
17.一种计算机可读存储介质,包括计算机程序,当其在计算机上运行时,使得所述计算机执行如权利要求1至8中任一项所述的数据处理的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910381182.4A CN110245122B (zh) | 2019-05-08 | 2019-05-08 | 一种数据处理的方法和kv存储系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910381182.4A CN110245122B (zh) | 2019-05-08 | 2019-05-08 | 一种数据处理的方法和kv存储系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110245122A CN110245122A (zh) | 2019-09-17 |
CN110245122B true CN110245122B (zh) | 2022-08-09 |
Family
ID=67883905
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910381182.4A Active CN110245122B (zh) | 2019-05-08 | 2019-05-08 | 一种数据处理的方法和kv存储系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110245122B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113760853B (zh) * | 2021-08-16 | 2024-02-20 | 联想凌拓科技有限公司 | 一种目录处理方法、服务器以及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102385623A (zh) * | 2011-10-25 | 2012-03-21 | 曙光信息产业(北京)有限公司 | 一种分布式文件系统中目录的存取方法 |
CN102855294A (zh) * | 2012-08-13 | 2013-01-02 | 北京联创信安科技有限公司 | 一种智能哈希数据布局方法、集群存储系统及其方法 |
CN106021462A (zh) * | 2016-05-17 | 2016-10-12 | 深圳市中博科创信息技术有限公司 | 集群文件系统文件存储的方法及集群文件系统 |
WO2017223265A1 (en) * | 2016-06-22 | 2017-12-28 | Nasuni Corporation | Shard-level synchronization of cloud-based data store and local file systems |
CN108763589A (zh) * | 2018-06-20 | 2018-11-06 | 程慧泉 | 一种分布式文件系统的目录系统及其实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103744882B (zh) * | 2013-12-20 | 2018-05-25 | 浪潮(北京)电子信息产业有限公司 | 一种基于键值对的目录片段表示方法及装置 |
-
2019
- 2019-05-08 CN CN201910381182.4A patent/CN110245122B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102385623A (zh) * | 2011-10-25 | 2012-03-21 | 曙光信息产业(北京)有限公司 | 一种分布式文件系统中目录的存取方法 |
CN102855294A (zh) * | 2012-08-13 | 2013-01-02 | 北京联创信安科技有限公司 | 一种智能哈希数据布局方法、集群存储系统及其方法 |
CN106021462A (zh) * | 2016-05-17 | 2016-10-12 | 深圳市中博科创信息技术有限公司 | 集群文件系统文件存储的方法及集群文件系统 |
WO2017223265A1 (en) * | 2016-06-22 | 2017-12-28 | Nasuni Corporation | Shard-level synchronization of cloud-based data store and local file systems |
CN108763589A (zh) * | 2018-06-20 | 2018-11-06 | 程慧泉 | 一种分布式文件系统的目录系统及其实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110245122A (zh) | 2019-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210382646A1 (en) | Integrated hierarchical storage management | |
US9558205B2 (en) | Method for creating clone file, and file system adopting the same | |
US9361332B2 (en) | Index record-level locking for file systems using a B+ tree structure | |
EP2863310B1 (en) | Data processing method and apparatus, and shared storage device | |
US10657150B2 (en) | Secure deletion operations in a wide area network | |
US11907078B2 (en) | Data backup method, apparatus, and system | |
US10013312B2 (en) | Method and system for a safe archiving of data | |
US11093442B1 (en) | Non-disruptive and efficient migration of data across cloud providers | |
US11221921B2 (en) | Method, electronic device and computer readable storage medium for data backup and recovery | |
US11256720B1 (en) | Hierarchical data structure having tiered probabilistic membership query filters | |
CN110928498B (zh) | 一种目录遍历的方法、装置、设备和存储介质 | |
CN113360456B (zh) | 数据归档方法、装置、设备以及存储介质 | |
CN111400334B (zh) | 数据处理方法、装置、存储介质及电子装置 | |
US11275795B2 (en) | System and method for in-place record content management | |
CN107870940B (zh) | 一种文件存储方法及装置 | |
CN110245122B (zh) | 一种数据处理的方法和kv存储系统 | |
CN114610680A (zh) | 分布式文件系统元数据管理方法、装置、设备及存储介质 | |
CN113767378A (zh) | 文件系统元数据去重复 | |
CN112306957A (zh) | 获取索引节点号的方法、装置、计算设备和存储介质 | |
US20140006348A1 (en) | Opportunistic clearing of sync states associated with a database | |
CN114385657A (zh) | 数据存储方法、装置及存储介质 | |
CN113806309A (zh) | 基于分布式锁的元数据删除方法、系统、终端及存储介质 | |
CN113590586A (zh) | 分布式图数据库系统节点间迁移分片数据的方法、装置 | |
CN107463577B (zh) | 一种数据存储系统以及数据查找方法 | |
CN114328521A (zh) | 索引库的更新方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |