CN108958660A - 分布式存储系统及其数据处理方法和装置 - Google Patents

分布式存储系统及其数据处理方法和装置 Download PDF

Info

Publication number
CN108958660A
CN108958660A CN201810709888.4A CN201810709888A CN108958660A CN 108958660 A CN108958660 A CN 108958660A CN 201810709888 A CN201810709888 A CN 201810709888A CN 108958660 A CN108958660 A CN 108958660A
Authority
CN
China
Prior art keywords
data
region
stick
chunking
virtual
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.)
Granted
Application number
CN201810709888.4A
Other languages
English (en)
Other versions
CN108958660B (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.)
Shenzhen Ipanel TV Inc
Original Assignee
Shenzhen Ipanel TV Inc
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 Shenzhen Ipanel TV Inc filed Critical Shenzhen Ipanel TV Inc
Priority to CN201810709888.4A priority Critical patent/CN108958660B/zh
Publication of CN108958660A publication Critical patent/CN108958660A/zh
Application granted granted Critical
Publication of CN108958660B publication Critical patent/CN108958660B/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device

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

本申请公开了分布式存储系统及其数据处理方法和装置,以方便读用户能够及时的从磁盘上读取到新的内容。该方法包括:接收客户端发送的原始数据,将其写入一个虚拟组块上;在接收到客户端发送的fflush()函数调用请求时,确定第一条块区域和第二条块区域,对第一条块区域进行数据编码,得到的编码数据写入第二条块区域;对于所述原始数据在虚拟组块的原始数据块上占用的区域,虚拟组块的所有原始数据块上的所述区域共同组成第一条块区域,虚拟组块的所有编码数据块上的所述区域共同组成第二条块区域;将所述原始数据和所述编码数据写入一个物理组块上,所述原始数据和所述编码数据在所述物理组块上的位置与在所述虚拟组块上的位置相同。

Description

分布式存储系统及其数据处理方法和装置
技术领域
本发明涉及分布式存储技术领域,更具体地说,涉及分布式存储系统及其数据处理方法和装置。
背景技术
分布式存储系统,是指将数据分散存储在多台服务器的磁盘上,各服务器通过网络互联,对外作为一个整体提供存储服务。这些磁盘被划分成多个组,磁盘进行数据读/写的最小单位称为数据块,同一磁盘上各数据块按顺序编号,一组磁盘上同一编号的数据块合称为一个组块。所述组块采用m+n模式,即所述组块包含m+n个数据块,m>0,n>0,其中的m个数据块用来存储原始数据,称为原始数据块,其余的n个数据块用来存储编码数据,称为编码数据块。
目前,写用户在写入文件的时候,分布式存储系统是在每写满m个数据块容量的原始数据后,才把所述原始数据和对所述原始数据进行编码得到的编码数据写入到磁盘的一个组块中。但是,当写用户写入文件的速度比较慢,很长时间都无法写满m个数据块容量时,读用户就难以及时地从磁盘上读取到新的内容。
发明内容
有鉴于此,本发明提供了分布式存储系统及其数据处理方法和装置,以方便读用户能够及时的从磁盘上读取到新的内容。
一种分布式存储系统的数据处理方法,包括:
接收客户端发送的原始数据;
将所述原始数据写入一个虚拟组块上,所述虚拟组块是通过软件在内存上模拟出的一个组块,所述组块包括m个用来存储原始数据的原始数据块和n个用来存储编码数据的编码数据块,m>0,n>0;
判断是否接收到客户端发送的fflush()函数调用请求,当接收到客户端发送的fflush()函数调用请求时,确定第一条块区域和第二条块区域,对所述第一条块区域进行数据编码,得到的编码数据写入所述第二条块区域;其中,对于所述原始数据在所述虚拟组块的原始数据块上占用的区域,所述虚拟组块的所有原始数据块上的所述区域共同组成所述第一条块区域,所述虚拟组块的所有编码数据块上的所述区域共同组成所述第二条块区域;
将所述原始数据和所述编码数据写入一个物理组块上,所述原始数据和所述编码数据在所述物理组块上的位置与在所述虚拟组块上的位置相同。
可选的,所述将所述原始数据写入一个虚拟组块上,包括:
将所述原始数据写入一个虚拟组块的原始数据块上,一个原始数据块写满后再写下一个原始数据块,而且同一原始数据块上,新数据接着旧数据的尾部写。
可选的,所述确定第一条块区域和第二条块区域,包括:
如果所述原始数据位于所述虚拟组块的一个原始数据块上并且不足一个原始数据块的容量,则对于所述原始数据在这一原始数据块上占用的区域,将所述虚拟组块的所有原始数据块上的这一区域共同确定为第一条块区域,所述虚拟组块的所有编码数据块上的这一区域共同确定为第二条块区域;
对应的,所述对所述第一条块区域进行数据编码,得到的编码数据写入所述第二条块区域,包括:
对所述虚拟组块的所有原始数据块上的这一区域进行数据编码,得到的编码数据写入所述虚拟组块的所有编码数据块上的这一区域。
可选的,所述确定第一条块区域和第二条块区域,包括:
如果所述原始数据位于两个原始数据块上并且不足一个原始数据块的容量,则将所述原始数据在这两个原始数据块上分别占用的区域称为第一子区和第二子区,则所述虚拟组块的所有原始数据块上的所述第一子区合称为第一条块子区,所述虚拟组块的所有原始数据块上的所述第二子区合称为第二条块子区,所述虚拟组块的所有编码数据块上的所述第一子区合称为第三条块子区,所述虚拟组块的所有编码数据块上的所述第二子区合称为第四条块子区,将所述第一条块子区和所述第二条块子区共同确定为第一条块区域,将所述第三条块子区和所述第四条块子区共同确定为第二条块区域;
对应的,所述对所述第一条块区域进行数据编码,得到的编码数据写入所述第二条块区域,包括:
先对所述第一条块子区进行数据编码,得到的编码数据写入所述第三条块子区上;再对所述第二条块子区进行数据编码,得到的编码数据写入所述第四条块子区上。
可选的,所述确定第一条块区域和第二条块区域,包括:
如果所述原始数据等于或超过一个原始数据块的容量,则将所述虚拟组块的所有原始数据块确定为第一条块区域,将所述虚拟组块的所有编码数据块确定为第二条块区域;
对应的,所述对所述第一条块区域进行数据编码,得到的编码数据写入所述第二条块区域,包括:
对所述虚拟组块的所有原始数据块进行数据编码,得到的编码数据写入所述虚拟组块的所有编码数据块上。
可选的,所述将所述原始数据写入一个虚拟组块上之后,还包括:
判断所述虚拟组块的所有原始数据块是否已写满,若是,执行所述确定第一条块区域和第二条块区域的步骤,以及在执行所述将所述原始数据和所述编码数据写入一个物理组块上的步骤之后,清空所述虚拟组块。
一种分布式存储系统的数据处理装置,包括:
用户模块,用于接收客户端发送的原始数据;
数据管理模块,用于将所述原始数据写入一个虚拟组块上,所述虚拟组块是通过软件在内存上模拟出的一个组块,所述组块包括m个用来存储原始数据的原始数据块和n个用来存储编码数据的编码数据块,m>0,n>0;判断是否接收到客户端发送的fflush()函数调用请求,当接收到客户端发送的fflush()函数调用请求时,确定第一条块区域和第二条块区域,对所述第一条块区域进行数据编码,得到的编码数据写入所述第二条块区域;其中,对于所述原始数据在所述虚拟组块的原始数据块上占用的区域,所述虚拟组块的所有原始数据块上的所述区域共同组成所述第一条块区域,所述虚拟组块的所有编码数据块上的所述区域共同组成所述第二条块区域;
磁盘管理模块,用于将所述原始数据和所述编码数据写入一个物理组块上,所述原始数据和所述编码数据在所述物理组块上的位置与在所述虚拟组块上的位置相同。
可选的,所述数据管理模块具体用于将所述原始数据写入虚拟组块的原始数据块上,一个原始数据块写满后再写下一个原始数据块,而且同一原始数据块上,新数据接着旧数据的尾部写。
可选的,所述数据管理模块还用于,在所述虚拟组块的所有原始数据块写满时,执行所述确定第一条块区域和第二条块区域的步骤,并且在执行所述将所述原始数据和所述编码数据写入一个物理组块上的步骤之后,清空所述虚拟组块。
一种分布式存储系统,包括:如上述公开的任一种数据处理装置。
从上述的技术方案可以看出,写用户可以根据读用户的需求,在任意时刻通过客户端发送fflush()函数调用请求,分布式存储系统响应该请求,对写用户写入的原始数据进行编码,然后将所述原始数据和编码数据写入磁盘的相应位置上,从而读用户能够及时的从磁盘上读取到新的内容。相较于现有技术,读用户无需等到写用户写入足够的原始数据后才从磁盘上读取到新的内容,而是随时可读。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例公开的一种分布式存储系统的数据处理方法流程图;
图2为一个组块的结构示意图;
图3为本发明实施例公开的一种虚拟组块上第一次写入原始数据的示意图;
图4为所述虚拟组块上第二次写入原始数据的示意图;
图5为所述虚拟组块上第三次写入原始数据的示意图;
图6为本发明实施例公开的又一种分布式存储系统的数据处理方法流程图;
图7为本发明实施例公开的一种分布式存储系统的数据处理装置结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,本发明实施例公开了一种分布式存储系统的数据处理方法,包括:
步骤S01:接收客户端发送的原始数据。
具体的,分布式存储系统是将数据分散存储在多台服务器的磁盘上,这些磁盘被划分成多个组,磁盘进行数据读/写的最小单位称为数据块,同一磁盘上各数据块按顺序编号,一组磁盘上同一编号的数据块合称为一个组块。所述组块采用m+n模式,即:所述组块包含m+n个数据块,其中的m个数据块用来存储原始数据,称为原始数据块,其余的n个数据块用来存储编码数据,称为编码数据块,m>0,n>0,通常n≤m/2。图2为一个组块的结构示意图,为便于下文描述,以下将其m个原始数据块分别编号为0、1、…、m-1,将其n个编码数据块分别编号为m、m+1、m+2、…、m+n-1。
编码数据是对原始数据进行编码得到。编码数据的作用是,当一个组块的m+n个数据块中任意几个数据块损坏时,只要损坏的数据块的个数不超过n,就可以利用其余m个数据块对损坏的数据块进行数据恢复,这是一种通过对原始数据进行编码而保证原始数据可靠性的策略,是一种基于编码的容错策略。
在分布式存储系统中,读用户和写用户大都不在同一个进程中,读用户和写用户分散在分布式存储系统的各个节点上,读用户不知道写用户在哪个节点上,写用户也不知道有多少个读用户以及读用户在哪个节点上。
步骤S02:将客户端发送的原始数据写入一个虚拟组块上,所述虚拟组块是通过软件在内存上模拟出的一个组块。
具体的,磁盘上的组块是真实的硬件,是物理组块。内存上的虚拟组块是相对于磁盘上的物理组块而言的,虚拟组块实质是在内存上编写的一个完全模拟物理组块的软件。本发明实施例将用户写入的原始数据先缓存到内存的一个虚拟组块上。虚拟组块与物理组块的存取机制相同,为:将原始数据写入原始数据块,将编码数据写入编码数据块;在将原始数据写入原始数据块时,是一个原始数据块写满后再写下一个原始数据块,而且同一原始数据块上,新数据接着旧数据的尾部写。例如,当图2所示组块内数据存储量为0时,用户写入的原始数据将从0号原始数据块的顶部开始存储,当0号原始数据块写满后接着从1号原始数据块的顶部开始存储,以此类推。
步骤S03:判断是否接收到客户端发送的fflush()函数调用请求;若是,进入步骤S04;否则,返回步骤S03。
步骤S04:确定第一条块区域和第二条块区域,对所述第一条块区域进行数据编码,得到的编码数据写入所述第二条块区域;其中,对于所述原始数据在所述虚拟组块的原始数据块上占用的区域,所述虚拟组块的所有原始数据块上的所述区域共同组成所述第一条块区域,所述虚拟组块的所有编码数据块上的所述区域共同组成所述第二条块区域。
具体的,fflush()是一个计算机函数,其功能是冲洗流中的信息,该函数通常用于处理磁盘文件,将已缓存到内存上但还未写入到磁盘上的数据写入到指定的磁盘位置上。写用户可根据实际需要,在任意时刻通过客户端发送fflush()函数调用请求。
本发明实施例在接收到fflush()函数调用请求时,对于所述原始数据在所述虚拟组块的原始数据块上占用的区域,将所述虚拟组块的所有原始数据块上的所述区域合称为第一条块区域,将所述虚拟组块的所有编码数据块上的所述区域合称为第二条块区域。然后对所述第一条块区域进行数据编码(即对所述第一条块区域上的原始数据进行编码),得到的编码数据写入所述第二条块区域。其中,对第一条块区域上任一位置进行数据编码得到的编码数据,在第二条块区域上的位置是固定的。
由于在将原始数据写入原始数据块时,是一个原始数据块写满后再写下一个原始数据块,而且同一原始数据块上,新数据接着旧数据的尾部写,所以当接收到客户端发送的fflush()函数调用请求时,有以下三种情况:
1)本次写入的原始数据位于所述虚拟组块的同一原始数据块上并且不足一个原始数据块的容量,则此时所述确定第一条块区域和第二条块区域,是指:对于所述原始数据在这一原始数据块上占用的区域,将所述虚拟组块的所有原始数据块上的这一区域共同确定为第一条块区域,所述虚拟组块的所有编码数据块上的这一区域共同确定为第二条块区域;
对应的,所述对所述第一条块区域进行数据编码,得到的编码数据写入所述第二条块区域,包括:对所述虚拟组块的所有原始数据块上的这一区域进行数据编码,得到的编码数据写入所述虚拟组块的所有编码数据块上的这一区域。
2)本次写入的原始数据位于两个原始数据块上并且不足一个原始数据块的容量,则此时所述确定第一条块区域和第二条块区域,是指:将所述原始数据在这两个原始数据块上分别占用的区域称为第一子区和第二子区,则所述虚拟组块的所有原始数据块上的所述第一子区合称为第一条块子区,所述虚拟组块的所有原始数据块上的所述第二子区合称为第二条块子区,所述虚拟组块的所有编码数据块上的所述第一子区合称为第三条块子区,所述虚拟组块的所有编码数据块上的所述第二子区合称为第四条块子区,将所述第一条块子区和所述第二条块子区共同确定为第一条块区域,将所述第三条块子区和所述第四条块子区共同确定为第二条块区域;
对应的,所述对所述第一条块区域进行数据编码,得到的编码数据写入所述第二条块区域,包括:先对所述第一条块子区进行数据编码,得到的编码数据写入所述第三条块子区上;再对所述第二条块子区进行数据编码,得到的编码数据写入所述第四条块子区上。
3)本次写入的原始数据等于或超过一个原始数据块的容量,则此时所述确定第一条块区域和第二条块区域,是指:将所述虚拟组块的所有原始数据块确定为第一条块区域,将所述虚拟组块的所有编码数据块确定为第二条块区域;
对应的,所述对所述第一条块区域进行数据编码,得到的编码数据写入所述第二条块区域,包括:对所述虚拟组块的所有原始数据块进行数据编码,得到的编码数据写入所述虚拟组块的所有编码数据块上。
举例说明,假设图2中每个数据块为3k容量,初始状态下虚拟组块内数据存储量为0,则用户写入的数据将从0号原始数据块的顶部开始存储,假设用户写入了2k的原始数据时接收到了fflush()函数调用请求,则这2k的原始数据是存储于0号原始数据块的前2/3区域(如图3中标识有数字1的阴影部分),此时,只需对m个原始数据块的前2/3区域而非全部区域进行数据编码,得到的编码数据写入n个编码数据块的前2/3区域。
接下来,用户继续写入了2k的原始数据时再次接收到fflush()函数调用请求,则本次先写入的1k的原始数据位于0号原始数据块的后1/3区域,后写入的1k的原始数据位于1号原始数据块的前1/3区域(如图4中标识有数字2的阴影部分),则先对m个原始数据块的后1/3区域进行数据编码,得到的编码数据写入n个编码数据块的后1/3区域,再对m个原始数据块的前1/3区域进行数据编码,得到的编码数据写入n个编码数据块上的前1/3区域。
接下来,用户继续写入了3k的原始数据时再次接收到fflush()函数调用请求,则本次先写入的2k的原始数据位于1号原始数据块的后2/3区域,后写入的1k的原始数据位于2号原始数据块的前1/3区域(如图5中标识有数字3的阴影部分),此时需要对m个原始数据块的整块区域进行数据编码,得到的编码数据写入n个编码数据块的整块区域上。
由此可见,通过上述方式,本发明实施例在每次写入的原始数据不足一个数据块时,避免对整块原始数据块进行数据编码,从而提高了数据处理效率。
步骤S05:将所述原始数据和所述编码数据写入一个物理组块上,所述原始数据和所述编码数据在所述物理组块上的位置与在所述虚拟组块上的位置相同。具体的,以图3所示情况为例,就是将虚拟组块的0号原始数据块的前2/3区域上的原始数据写入物理组块的0号原始数据块的前2/3区域,将虚拟组块的n个编码组块的前2/3区域上的编码数据写入该物理组块的n个编码组块的前2/3区域上。
由以上描述可知,写用户可以根据读用户的需求,在任意时刻通过客户端发送fflush()函数调用请求,分布式存储系统响应该请求,对写用户写入的原始数据进行编码,然后将所述原始数据和编码数据写入磁盘的相应位置上,从而读用户能够及时的从磁盘上读取到新的内容。相较于现有技术,读用户无需等到写用户写入足够的原始数据后才从磁盘上读取到新的内容,而是随时可读。
可选的,本发明实施例还公开了又一种分布式存储系统的数据处理方法,如图6所示,包括:
步骤S01:接收客户端发送的原始数据。
步骤S02:将客户端发送的原始数据写入一个虚拟组块上,所述虚拟组块是通过软件在内存上模拟出的一个组块。
步骤S021:判断所述虚拟组块的所有原始数据块是否已写满,若是,进入步骤S04;否则,进入步骤S03;
步骤S03:判断是否接收到客户端发送的fflush()函数调用请求;若是,进入步骤S04;否则,返回步骤S03。
步骤S04:确定第一条块区域和第二条块区域,对所述第一条块区域进行数据编码,得到的编码数据写入所述第二条块区域;其中,对于所述原始数据在所述虚拟组块的原始数据块上占用的区域,所述虚拟组块的所有原始数据块上的所述区域共同组成所述第一条块区域,所述虚拟组块的所有编码数据块上的所述区域共同组成所述第二条块区域。
步骤S05:将所述原始数据和所述编码数据写入一个物理组块上,所述原始数据和所述编码数据在所述物理组块上的位置与在所述虚拟组块上的位置相同。
步骤S06:清空所述虚拟组块。
与图1相比,本实施例增加了步骤S021和步骤S06,当所述虚拟组块的所有原始数据块都写满时,不必等到客户端发送fflush()函数调用请求,就直接将当前写入的原始数据及对应的编码数据写入磁盘,最后,需要清空所述虚拟组块以方便重复使用,保证分布式存储系统的数据处理过程能够持续进行。
在将一个文件写入磁盘上时,一个物理组块写满后再写入下一物理组块,同一文件可能需要写到多个物理组块上,为方便读用户读取,所述分布式存储系统的数据处理方法还包括:记录并更新相关信息,例如:文件的大小,文件对应的组块列表,各组块生成的先后顺序,组块携带的磁盘信息(组块对应的磁盘列表和磁盘列表对应的磁盘位置信息)等。
与上述方法实施例相对应的,本发明实施例还公开了一种分布式存储系统的数据处理装置,如图7所示,包括:
用户模块100,用于接收客户端发送的原始数据;
数据管理模块200,用于将所述原始数据写入一个虚拟组块上,所述虚拟组块是通过软件在内存上模拟出的一个组块,所述组块包括m个用来存储原始数据的原始数据块和n个用来存储编码数据的编码数据块,m>0,n>0;判断是否接收到客户端发送的fflush()函数调用请求,当接收到客户端发送的fflush()函数调用请求时,确定第一条块区域和第二条块区域,对所述第一条块区域进行数据编码,得到的编码数据写入所述第二条块区域;其中,对于所述原始数据在所述虚拟组块的原始数据块上占用的区域,所述虚拟组块的所有原始数据块上的所述区域共同组成所述第一条块区域,所述虚拟组块的所有编码数据块上的所述区域共同组成所述第二条块区域;
磁盘管理模块300,用于将所述原始数据和所述编码数据写入一个物理组块上,所述原始数据和所述编码数据在所述物理组块上的位置与在所述虚拟组块上的位置相同。
可选的,数据管理模块200具体用于将所述原始数据写入虚拟组块的原始数据块上,一个原始数据块写满后再写下一个原始数据块,而且同一原始数据块上,新数据接着旧数据的尾部写。
可选的,数据管理模块200还用于,在所述虚拟组块的所有原始数据块写满时,执行所述确定第一条块区域和第二条块区域的步骤,并且在执行所述将所述原始数据和所述编码数据写入一个物理组块上的步骤之后,清空所述虚拟组块。
此外,本申请还公开了一种分布式存储系统,包括:上述公开的任一种数据处理装置。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
对于系统实施例而言,由于其基本相应于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明实施例的精神或范围的情况下,在其它实施例中实现。因此,本发明实施例将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (10)

1.一种分布式存储系统的数据处理方法,其特征在于,包括:
接收客户端发送的原始数据;
将所述原始数据写入一个虚拟组块上,所述虚拟组块是通过软件在内存上模拟出的一个组块,所述组块包括m个用来存储原始数据的原始数据块和n个用来存储编码数据的编码数据块,m>0,n>0;
判断是否接收到客户端发送的fflush()函数调用请求,当接收到客户端发送的fflush()函数调用请求时,确定第一条块区域和第二条块区域,对所述第一条块区域进行数据编码,得到的编码数据写入所述第二条块区域;其中,对于所述原始数据在所述虚拟组块的原始数据块上占用的区域,所述虚拟组块的所有原始数据块上的所述区域共同组成所述第一条块区域,所述虚拟组块的所有编码数据块上的所述区域共同组成所述第二条块区域;
将所述原始数据和所述编码数据写入一个物理组块上,所述原始数据和所述编码数据在所述物理组块上的位置与在所述虚拟组块上的位置相同。
2.根据权利要求1所述的分布式存储系统的数据处理方法,其特征在于,所述将所述原始数据写入一个虚拟组块上,包括:
将所述原始数据写入一个虚拟组块的原始数据块上,一个原始数据块写满后再写下一个原始数据块,而且同一原始数据块上,新数据接着旧数据的尾部写。
3.根据权利要求2所述的分布式存储系统的数据处理方法,其特征在于,所述确定第一条块区域和第二条块区域,包括:
如果所述原始数据位于所述虚拟组块的一个原始数据块上并且不足一个原始数据块的容量,则对于所述原始数据在这一原始数据块上占用的区域,将所述虚拟组块的所有原始数据块上的这一区域共同确定为第一条块区域,所述虚拟组块的所有编码数据块上的这一区域共同确定为第二条块区域;
对应的,所述对所述第一条块区域进行数据编码,得到的编码数据写入所述第二条块区域,包括:
对所述虚拟组块的所有原始数据块上的这一区域进行数据编码,得到的编码数据写入所述虚拟组块的所有编码数据块上的这一区域。
4.根据权利要求2所述的分布式存储系统的数据处理方法,其特征在于,所述确定第一条块区域和第二条块区域,包括:
如果所述原始数据位于两个原始数据块上并且不足一个原始数据块的容量,则将所述原始数据在这两个原始数据块上分别占用的区域称为第一子区和第二子区,则所述虚拟组块的所有原始数据块上的所述第一子区合称为第一条块子区,所述虚拟组块的所有原始数据块上的所述第二子区合称为第二条块子区,所述虚拟组块的所有编码数据块上的所述第一子区合称为第三条块子区,所述虚拟组块的所有编码数据块上的所述第二子区合称为第四条块子区,将所述第一条块子区和所述第二条块子区共同确定为第一条块区域,将所述第三条块子区和所述第四条块子区共同确定为第二条块区域;
对应的,所述对所述第一条块区域进行数据编码,得到的编码数据写入所述第二条块区域,包括:
先对所述第一条块子区进行数据编码,得到的编码数据写入所述第三条块子区上;再对所述第二条块子区进行数据编码,得到的编码数据写入所述第四条块子区上。
5.根据权利要求2所述的分布式存储系统的数据处理方法,其特征在于,所述确定第一条块区域和第二条块区域,包括:
如果所述原始数据等于或超过一个原始数据块的容量,则将所述虚拟组块的所有原始数据块确定为第一条块区域,将所述虚拟组块的所有编码数据块确定为第二条块区域;
对应的,所述对所述第一条块区域进行数据编码,得到的编码数据写入所述第二条块区域,包括:
对所述虚拟组块的所有原始数据块进行数据编码,得到的编码数据写入所述虚拟组块的所有编码数据块上。
6.根据权利要求1或2所述的分布式存储系统的数据处理方法,其特征在于,所述将所述原始数据写入一个虚拟组块上之后,还包括:
判断所述虚拟组块的所有原始数据块是否已写满,若是,执行所述确定第一条块区域和第二条块区域的步骤,以及在执行所述将所述原始数据和所述编码数据写入一个物理组块上的步骤之后,清空所述虚拟组块。
7.一种分布式存储系统的数据处理装置,其特征在于,包括:
用户模块,用于接收客户端发送的原始数据;
数据管理模块,用于将所述原始数据写入一个虚拟组块上,所述虚拟组块是通过软件在内存上模拟出的一个组块,所述组块包括m个用来存储原始数据的原始数据块和n个用来存储编码数据的编码数据块,m>0,n>0;判断是否接收到客户端发送的fflush()函数调用请求,当接收到客户端发送的fflush()函数调用请求时,确定第一条块区域和第二条块区域,对所述第一条块区域进行数据编码,得到的编码数据写入所述第二条块区域;其中,对于所述原始数据在所述虚拟组块的原始数据块上占用的区域,所述虚拟组块的所有原始数据块上的所述区域共同组成所述第一条块区域,所述虚拟组块的所有编码数据块上的所述区域共同组成所述第二条块区域;
磁盘管理模块,用于将所述原始数据和所述编码数据写入一个物理组块上,所述原始数据和所述编码数据在所述物理组块上的位置与在所述虚拟组块上的位置相同。
8.根据权利要求7所述的分布式存储系统的数据处理装置,其特征在于,所述数据管理模块具体用于将所述原始数据写入虚拟组块的原始数据块上,一个原始数据块写满后再写下一个原始数据块,而且同一原始数据块上,新数据接着旧数据的尾部写。
9.根据权利要求7或8所述的分布式存储系统的数据处理装置,其特征在于,所述数据管理模块还用于,在所述虚拟组块的所有原始数据块写满时,执行所述确定第一条块区域和第二条块区域的步骤,并且在执行所述将所述原始数据和所述编码数据写入一个物理组块上的步骤之后,清空所述虚拟组块。
10.一种分布式存储系统,其特征在于,包括:如权利要求7-9中任一项所述的数据处理装置。
CN201810709888.4A 2018-07-02 2018-07-02 分布式存储系统及其数据处理方法和装置 Active CN108958660B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810709888.4A CN108958660B (zh) 2018-07-02 2018-07-02 分布式存储系统及其数据处理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810709888.4A CN108958660B (zh) 2018-07-02 2018-07-02 分布式存储系统及其数据处理方法和装置

Publications (2)

Publication Number Publication Date
CN108958660A true CN108958660A (zh) 2018-12-07
CN108958660B CN108958660B (zh) 2021-03-19

Family

ID=64484674

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810709888.4A Active CN108958660B (zh) 2018-07-02 2018-07-02 分布式存储系统及其数据处理方法和装置

Country Status (1)

Country Link
CN (1) CN108958660B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111190537A (zh) * 2019-12-10 2020-05-22 优刻得科技股份有限公司 一种追加写场景下顺序存储磁盘管理的方法及系统
CN111352579A (zh) * 2018-12-24 2020-06-30 深圳市茁壮网络股份有限公司 数据存储方法及装置
CN111435286A (zh) * 2019-01-14 2020-07-21 深圳市茁壮网络股份有限公司 一种数据存储方法、装置和系统

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050086421A1 (en) * 2003-10-17 2005-04-21 Sami Nassar Method and apparatus for smart memory pass-through communication
CN1737745A (zh) * 2004-08-18 2006-02-22 华为技术有限公司 一种磁盘阵列数据的读写方法及并行读写方法
CN103595797A (zh) * 2013-11-18 2014-02-19 上海爱数软件有限公司 一种分布式存储系统中的缓存方法
US20150149819A1 (en) * 2013-11-27 2015-05-28 Electronics And Telecommunications Research Institute Parity chunk operating method and data server apparatus for supporting the same in distributed raid system
CN104750432A (zh) * 2015-03-16 2015-07-01 华为技术有限公司 一种数据存储方法及装置
CN105138655A (zh) * 2015-08-31 2015-12-09 深圳市茁壮网络股份有限公司 一种数据存储、读取方法及装置
CN105700973A (zh) * 2016-01-14 2016-06-22 汉柏科技有限公司 一种命令行cli故障重启方法及装置
CN105930103A (zh) * 2016-05-10 2016-09-07 南京大学 一种分布式存储ceph的纠删码覆盖写方法
CN106030501A (zh) * 2014-09-30 2016-10-12 株式会社日立制作所 分布式存储系统

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050086421A1 (en) * 2003-10-17 2005-04-21 Sami Nassar Method and apparatus for smart memory pass-through communication
CN1737745A (zh) * 2004-08-18 2006-02-22 华为技术有限公司 一种磁盘阵列数据的读写方法及并行读写方法
CN103595797A (zh) * 2013-11-18 2014-02-19 上海爱数软件有限公司 一种分布式存储系统中的缓存方法
US20150149819A1 (en) * 2013-11-27 2015-05-28 Electronics And Telecommunications Research Institute Parity chunk operating method and data server apparatus for supporting the same in distributed raid system
CN106030501A (zh) * 2014-09-30 2016-10-12 株式会社日立制作所 分布式存储系统
CN104750432A (zh) * 2015-03-16 2015-07-01 华为技术有限公司 一种数据存储方法及装置
CN105138655A (zh) * 2015-08-31 2015-12-09 深圳市茁壮网络股份有限公司 一种数据存储、读取方法及装置
CN105700973A (zh) * 2016-01-14 2016-06-22 汉柏科技有限公司 一种命令行cli故障重启方法及装置
CN105930103A (zh) * 2016-05-10 2016-09-07 南京大学 一种分布式存储ceph的纠删码覆盖写方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
HILARY GRIERSON: "A Set of Nine Principles for Distributed-Design Information Storing", 《DESIGN PRINCIPLES AND PRACTICES: AN INTERNATIONAL JOURNAL—ANNUAL REVIEW》 *
周逸文: "分布式存储技术和应用浅析", 《数码世界》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111352579A (zh) * 2018-12-24 2020-06-30 深圳市茁壮网络股份有限公司 数据存储方法及装置
CN111352579B (zh) * 2018-12-24 2023-11-10 深圳市茁壮网络股份有限公司 数据存储方法及装置
CN111435286A (zh) * 2019-01-14 2020-07-21 深圳市茁壮网络股份有限公司 一种数据存储方法、装置和系统
CN111435286B (zh) * 2019-01-14 2023-12-05 深圳市茁壮网络股份有限公司 一种数据存储方法、装置和系统
CN111190537A (zh) * 2019-12-10 2020-05-22 优刻得科技股份有限公司 一种追加写场景下顺序存储磁盘管理的方法及系统
CN111190537B (zh) * 2019-12-10 2023-08-25 优刻得科技股份有限公司 一种追加写场景下顺序存储磁盘管理的方法及系统

Also Published As

Publication number Publication date
CN108958660B (zh) 2021-03-19

Similar Documents

Publication Publication Date Title
CN102467408B (zh) 一种虚拟机数据的访问方法和设备
US5339427A (en) Method and apparatus for distributed locking of shared data, employing a central coupling facility
US7933938B2 (en) File storage system, file storing method and file searching method therein
CN104317736B (zh) 一种分布式文件系统多级缓存实现方法
US20030028718A1 (en) Data storage management system and method
US8205025B2 (en) Efficient buffered reading with a plug-in for input buffer size determination
CN108958660A (zh) 分布式存储系统及其数据处理方法和装置
JP2005258918A (ja) ストレージシステムおよびストレージシステムのキャッシュメモリ制御方法
CN106446159B (zh) 一种存储文件的方法、第一虚拟机及名称节点
CN110858162B (zh) 内存管理方法及装置、服务器
CN107256196A (zh) 基于闪存阵列的支持零拷贝的缓存系统及方法
US10789170B2 (en) Storage management method, electronic device and computer readable medium
CN106570113B (zh) 一种海量矢量切片数据云存储方法及系统
CN110109868A (zh) 用于索引文件的方法、装置和计算机程序产品
CN111435286B (zh) 一种数据存储方法、装置和系统
US11226778B2 (en) Method, apparatus and computer program product for managing metadata migration
CN111190537B (zh) 一种追加写场景下顺序存储磁盘管理的方法及系统
CN114138200B (zh) 一种基于RocksDB的预写日志方法及系统
CN101957728A (zh) 用于向本地物理卷复制远程虚拟卷的装置和方法
CN113467753B (zh) 一种分布式不重复随机序列生成方法和系统
CN109213423A (zh) 基于地址屏障无锁处理并发io命令
US7509461B1 (en) Method and apparatus for intelligent buffer cache pre-emption
CN109857553A (zh) 内存管理方法及装置
CN101008948A (zh) 一种实现论坛的方法及系统
CN111352579B (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