CN111782135A - 数据存储方法、系统、数据节点和计算机可读存储介质 - Google Patents
数据存储方法、系统、数据节点和计算机可读存储介质 Download PDFInfo
- Publication number
- CN111782135A CN111782135A CN201910515344.9A CN201910515344A CN111782135A CN 111782135 A CN111782135 A CN 111782135A CN 201910515344 A CN201910515344 A CN 201910515344A CN 111782135 A CN111782135 A CN 111782135A
- Authority
- CN
- China
- Prior art keywords
- data
- written
- disk array
- node
- data packet
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000013500 data storage Methods 0.000 title claims abstract description 24
- 238000005192 partition Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 9
- 238000007726 management method Methods 0.000 claims description 9
- 238000012795 verification Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 19
- 238000003491 array Methods 0.000 description 12
- 239000000872 buffer Substances 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 4
- 238000000638 solvent extraction Methods 0.000 description 2
- 101100476924 Caenorhabditis elegans sdc-1 gene Proteins 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及一种数据存储方法、系统、数据节点和计算机可读存储介质,涉及计算机技术领域。本公开的方法包括:数据节点接收客户端发送的待写入的数据包;数据节点为待写入的数据包分配一个磁盘阵列,磁盘阵列对应于多个磁盘;数据节点根据待写入的数据包的大小,将待写入的数据包划分为多个数据片,并行地将各个数据片分别写入磁盘阵列对应的不同的磁盘中。
Description
技术领域
本公开涉及计算机技术领域,特别涉及一种数据存储方法、系统、数据节点和计算机可读存储介质。
背景技术
分布式存储系统,例如,HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)等,将数据分布式地存储在多个数据节点上。目前,数据节点的常见存储方式为:将多个磁盘分别格式化为本地文件系统并挂载到多个本地目录,数据节点将这些本地目录作为数据目录,数据节点选择一个数据目录将数据块存储为一个文件。
客户端(Client)在读写数据块时以数据包(Packet)为单位串行传输,数据节点顺序地读写数据块对应的文件,也就是顺序的读写磁盘。
发明内容
发明人发现:目前的数据读写方式,在不考虑操作系统缓存的情况下,客户端写入数据块的速率不可能超越单个磁盘顺序读写的性能,写入速率较低。
本公开所要解决的一个技术问题是:如何提高数据的写入效率。
根据本公开的一些实施例,提供的一种数据存储方法,包括:数据节点接收客户端发送的待写入的数据包;数据节点为待写入的数据包分配一个磁盘阵列,磁盘阵列对应于多个磁盘;数据节点根据待写入的数据包的大小,将待写入的数据包划分为多个数据片,并行地将各个数据片分别写入磁盘阵列对应的不同的磁盘中。
在一些实施例中,磁盘阵列被划分为多个条带,每个条带中包含多个存储片,一个条带中不同的存储片分别属于不同的磁盘。
在一些实施例中,数据节点根据待写入的数据包的大小,将待写入的数据包划分为多个数据片包括:数据节点根据待写入的数据包的大小为待写入的数据包分配磁盘阵列中存储空间;数据节点根据该存储空间对应的各个存储片的剩余空间,将待写入的数据包划分为多个数据片。
在一些实施例中,存储片的容量小于或等于一个磁盘单次读写的数据量。
在一些实施例中,并行地将各个数据片分别写入磁盘阵列中不同磁盘分区包括:数据节点根据各个磁盘阵列的数据目录,向磁盘阵列发送数据片,以便并行地将各个数据片分别写入磁盘阵列对应的不同磁盘中;其中,磁盘阵列的数据目录是将磁盘阵列格式化为本地文件系统后挂载到本地目录后生成的。
在一些实施例中,该方法还包括:数据节点接收客户端针对待读取的数据包发送的数据读取请求;数据节点根据数据目录查找待读取的数据块存储的磁盘阵列,根据磁盘阵列对应的文件系统,查找待读取的数据包对应的至少一个数据片存储的磁盘;数据节点从各个存储的磁盘中并行读取待读取的数据包对应的各个数据片。
在一些实施例中,该方法还包括:客户端接收管理节点发送的块组信息,块组中信息包括多个数据节点的地址信息;客户端将待写入的数据划分为数据单元,并根据一组预设数量的数据单元计算对应的校验单元;客户端根据各个数据节点的地址信息将数据单元和校验单元的数据分别以待写入的数据包的形式发送至各个数据节点。
根据本公开的另一些实施例,提供的一种数据节点,包括:数据包接收模块,用于接收客户端发送的待写入的数据包;磁盘阵列确定模块,用于为待写入的数据包分配一个磁盘阵列,磁盘阵列对应于多个磁盘;数据写入模块,用于根据待写入的数据包的大小,将待写入的数据包划分为多个数据片,并行地将各个数据片分别写入磁盘阵列对应的不同的磁盘中。
在一些实施例中,磁盘阵列被划分为多个条带,每个条带中包含多个存储片,一个条带中不同的存储片分别属于不同的磁盘。
在一些实施例中,数据写入模块用于根据待写入的数据包的大小为待写入的数据包分配磁盘阵列中存储空间;根据该存储空间对应的各个存储片的剩余空间,将待写入的数据包划分为多个数据片。
在一些实施例中,存储片的容量小于或等于一个磁盘单次读写的数据量。
在一些实施例中,数据写入模块用于根据各个磁盘阵列的数据目录,向磁盘阵列发送数据片,以便并行地将各个数据片分别写入磁盘阵列对应的不同磁盘中;其中,磁盘阵列的数据目录是将磁盘阵列格式化为本地文件系统后挂载到本地目录后生成的。
在一些实施例中,数据节点还包括:读取请求接收模块,用于接收客户端针对待读取的数据包发送的数据读取请求;数据块查找模块,用于根据数据目录查找待读取的数据块存储的磁盘阵列,根据磁盘阵列对应的文件系统,查找待读取的数据包对应的至少一个数据片存储的磁盘;数据块读取模块,用于从各个存储的磁盘中并行读取待读取的数据包对应的各个数据片。
根据本公开的又一些实施例,提供的一种数据节点,包括:存储器;以及耦接至存储器的处理器,处理器被配置为基于存储在存储器中的指令,执行如前述任意实施例的数据存储方法。
根据本公开的再一些实施例,提供的一种计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现前述任意实施例的数据存储方法。
根据本公开的又一些实施例,提供的一种数据存储系统,包括:前述任意实施例的数据节点;以及客户端,用于接收管理节点发送的块组信息,块组中信息包括多个数据节点的地址信息;将待写入的数据划分为数据单元,并根据一组预设数量的数据单元计算对应的校验单元;根据各个数据节点的地址信息将数据单元和校验单元的数据分别以待写入的数据包的形式发送至各个数据节点。
本公开中多个磁盘的磁盘分区组成磁盘阵列,数据节点根据待写入的数据包的大小,将待写入的数据包划分为多个数据片,并行地将各个数据片分别写入磁盘阵列中不同磁盘分区。本公开的方法在待写入的数据包较大的情况下,由多个磁盘并行写入数据,提高了数据写入的效率。
通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其它特征及其优点将会变得清楚。
附图说明
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出本公开的一些实施例的数据存储方法的流程示意图。
图2示出本公开的一些实施例的划分磁盘阵列的示意图。
图3示出本公开的一些实施例的条带形布局的示意图。
图4示出本公开的另一些实施例的数据存储方法的流程示意图。
图5示出本公开的一些实施例的数据存储形式的示意图。
图6示出本公开的一些实施例的数据节点的结构示意图。
图7示出本公开的另一些实施例的数据节点的结构示意图。
图8示出本公开的又一些实施例的数据节点的结构示意图。
图9示出本公开的一些实施例的数据存储系统的结构示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
本公开提出一种数据存储方法,可以提高数据的读写效率,下面结合图1进行描述。
图1为本公开数据存储方法一些实施例的流程图。如图1所示,该实施例的方法包括:步骤S102~S106。
在步骤S102中,客户端向数据节点发送待写入的数据包,相应的,数据节点接收客户端发送的待写入的数据包。
客户端将待写入的数据划分为数据包(Packet)的形式发送至数据节点。后续将对客户端划分数据包和查找相应的数据节点的过程进行描述。
在一些实施例中,客户端发送的待写入的数据包的大小可以根据磁盘阵列对应的磁盘个数和每个磁盘单次读写的最大数据量进行预先设置。例如,磁盘阵列对应的磁盘个数和每个磁盘单次读写的最大数据量乘积作为待写入的数据包容量上限,待写入的数据包内的数据流需要小于或者等于该容量上限。例如,磁盘阵列对应4个磁盘,每个磁盘单次读写的最大数据量为256KiB,则待写入的数据包容量上限为1MiB。客户端可以根据容量上限划分数据包,或者,在客户端发送的待写入的数据包的大小超过预设的容量上限的情况下,可以由数据节点将待写入的数据包根据预设的容量上限分割成多个待写入的数据包。
在步骤S104中,数据节点为待写入的数据包分配一个磁盘阵列。磁盘阵列对应于多个磁盘。
在一些实施例中,将一个数据节点内的多个磁盘分别划分为预设个数的分区。例如,将每个磁盘划分为4个分区。每个磁盘各选择一个分区组成一个磁盘阵列。例如,磁盘阵列可以为RAID0形式。将每个磁盘阵列格式化为本地文件系统并挂载到本地目录,将这些本地目录作为数据节点的数据目录。进而,数据节点可以根据数据目录为待写入的数据包分配一个磁盘阵列。例如,数据节点可以根据负载均衡的原则为待写入的数据包分配一个磁盘阵列。
如图2为划分磁盘阵列的一个应用例。如图2所示,数据节点中包括四个磁盘,sda,sdb,sdc,sdd,每个磁盘被划分为四个分区,例如,sda被划分为sda1,sda2,sda3,sda4。每一行对应的四个分区属于不同的磁盘,组成一个磁盘阵列。例如,sda1,sdb1,sdc1,sdd1组成磁盘阵列md0(在Linux Kernel中RAID0可以通过md实现),对应数据目录/data0。如图2所示,可以将一个数据节点中的多个磁盘组合成条带设备,一行磁盘分区组成的磁盘阵列作为一个条带设备,以条带(Strip)的形式对数据进行存储。
在步骤S106中,数据节点根据待写入的数据包的大小,将待写入的数据包划分为多个数据片,并行地将各个数据片分别写入磁盘阵列对应的不同的磁盘中。
在一些实施例中,一个磁盘阵列可以作为一个条带设备,被划分为多个条带(Strip)。每个条带中包含多个存储片(Chunk),一个条带中不同的存储片分别属于不同的磁盘。也可以理解为,一个磁盘阵列中每个磁盘分区又被划分为更小的存储单位即存储片,每个磁盘选取一个存储片组成条带。
在一些实施例中,数据节点根据待写入的数据包的大小为待写入的数据包分配磁盘阵列中存储空间。在存储空间对应多个存储片的情况下,数据节点根据该存储空间对应的各个存储片的剩余空间,将待写入的数据包划分为多个数据片。例如,数据节点根据待写入的数据包为待写入的数据包分配连续的存储地址。分配的地址可能包含一个或多个存储片,甚至一个或多个条带中的存储空间。实际应用时,数据节点可能为待写入的数据包分配不连续的存储地址,例如,剩余的连续存储空间不满足待写入的数据包的大小,这种情况下,更容易出现分配的地址包含多个条带中的存储空间的情况。在存储空间对应多个存储片的情况下,根据分配的地址对应的各个存储片,将待写入的数据包分配为多个数据片。数据片小于或等于对应的存储片的剩余空间。存储片的容量小于或等于一个磁盘单次读写的数据量。
在待写入的数据包的大小超过阈值的情况下,可以优先为待写入的数据包分配同一个条带中的不同存储片。这样可以使待写入的数据包分散在不同的磁盘中进行并行写入,提高写入效率。如图3所示为将待写入的数据包以条带化的形式进行存储的应用例。如图3所示,待写入的文件被划分为多个数据包后,又划分为多个数据片,chunk0,chunk1,chunk2……。一个磁盘阵列RAID0包含多个条带,strip0,strip1……。理想情况下,一个待写入的数据包中4个数据片被存储至一个条带中4个不同的存储片中,4个不同的存储片分别位于不同的磁盘中。即Packet在RAID0设备上的存储位置以strip对齐,并被分割为四个chunk,分别位于四个磁盘,因此Packet被分割为四个IO,同时读写四个磁盘。例如,chunk0,chunk1,chunk2,chunk3分别存储于strip0上不同磁盘的存储片中。
数据节点根据各个磁盘阵列的数据目录,向磁盘阵列发送数据片,以便并行地将各个数据片分别写入磁盘阵列中不同磁盘分区。
上述实施例的方法中多个磁盘的磁盘分区组成磁盘阵列,数据节点根据待写入的数据包的大小,将待写入的数据包划分为多个数据片,并行地将各个数据片分别写入磁盘阵列中不同磁盘分区。上述实施例的方法在待写入的数据包较大的情况下,由多个磁盘并行写入数据,提高了数据写入的效率。此外,相对于现有技术中顺序写入热点数据容易导致数据节点的一直写入个别磁盘,致使磁盘持续繁忙,相应写入的效率下降,而其他磁盘处于空闲状态,上述实施例的方法能够均衡各个磁盘的负载,使各个磁盘整体的效率提高。
本公开的方案适用于纠删码的应用场景,HDFS纠删码(Erasure Code,EC)将大文件(通常为GiB以上)分割为多个数据块组(Block Group),数据块组由数据块(Data Block)和校验块(Parity Block)组成,数据节点(Data Node)作为HDFS的核心组件之一,核心功能是存储文件的块(Block)。下面结合图4描述本公开数据存储方法的另一些实施例。
图4为本公开数据存储方法另一些实施例的流程图。如图4所示,该实施例的方法包括:步骤S402~S414。
在步骤S402中,客户端向管理节点(Name Node)申请块组。
在客户端写满一个块组或者刚开始写数据时,会向Name Node申请一个新的块组。
在步骤S404中,客户端接收管理节点发送的块组信息,块组中信息包括多个数据节点的地址信息。
如图5所示,一个块组(Block Group)包括多个块(Block),例如,数据块(Block D0~Block D3),和校验块(Block P0~Block P1),不同的块对应不同的数据节点(DataNode)信息,后续将被存储至不同的数据节点。
在步骤S406中,客户端将待写入的数据划分为数据单元,并根据一组预设数量的数据单元计算对应的校验单元。
客户端待写入的数据(File)以条形布局分布在多个数据节点上。如图5所示,每个块被划分为多个Cell,一个块组对应的一行Cell分别写入不同的数据节点,不同行的Cell形成条形布局。也就是针对EC场景,数据在各个数据节点上以条形布局形式存储,在每个数据节点中也以条形布局进行存储,这种存储形式,提高写入的效率,减少缓存的占用。
客户端中设置缓存区(Buffer),缓存区中有多个缓存,每个缓存对应一个单元(Cell)。数据首先以条形布局的方式写入到多个Buffer中。每个单元对应着一个数据流(Data Streamer)。当一个条中的数据单元写完之后,会立刻根据纠删码计算出校验单元并写入到校验块缓存中。
在步骤S408中,客户端根据各个数据节点的地址信息将数据单元和校验单元的数据分别以待写入的数据包的形式发送至各个数据节点。
如图5所示,一个单元被划分为多个数据包(Packet),缓存就将数据包传给该缓存对应的数据流,发送至对应的数据节点。当数据写完准备关闭文件时,最后的一个条可能数据单元没有写满,这时需要对数据单元补零后生成该条的校验单元并写入校验块缓存中,然后生成数据包并将它们发送至各自的数据流。
在步骤S410中,针对每个数据节点,该数据节点接收客户端发送的待写入的数据包。
在步骤S412中,数据节点为待写入的数据包分配一个磁盘阵列。
在步骤S414中,数据节点根据待写入的数据包的大小,将待写入的数据包划分为多个数据片,并行地将各个数据片分别写入磁盘阵列对应的不同的磁盘中。
步骤S410~S414可以参考前述实施例的方法。
在一些实施例中,数据节点接收客户端针对待读取的数据包发送的数据读取请求;数据节点根据数据目录查找待读取的数据块存储的磁盘阵列,根据磁盘阵列对应的文件系统,查找待读取的数据包对应的至少一个数据片存储的磁盘;数据节点从各个存储的磁盘中并行读取待读取的数据包对应的各个数据片。
客户端写入的数据被分布到不同的数据节点,不同的磁盘上。客户端可以向管理节点查询待读取的数据块所在的数据节点,管理节点将数据块所在的数据节点的信息返回至客户端。客户端向数据节点发送数据读取请求。数据节点根据数据目录查找待读取的数据块中各个数据包存储的磁盘阵列。在数据写入磁盘阵列的过程中,对应的文件系统可以记录数据的存储地址,因此,数据节点向文件系统查询数据包中各个数据片的存储位置,进而并行地从各个磁盘中读取待读取的数据包所包含的各个数据片,返回至客户端。
上述实施例的方法,客户端将待写入的数据以条形布局分布到各个数据节点,在数据节点内以条形布局写入各个磁盘。并行写入数据节点和并行写入磁盘的两个过程都提高了数据的写入效率,节省了缓存空间。由于数据的条形布局存储,在读取数据时,仍然以条为单位进行读取,由多个数据节点的多个磁盘并行读取,进一步提高了数据的读取效率。
本公开还提供一种数据节点,下面结合图6进行描述。
图6为本公开数据节点的一些实施例的结构图。如图6所示,该实施例的数据节点60包括:数据包接收模块602,磁盘阵列确定模块604,数据写入模块606。
数据包接收模块602,用于接收客户端发送的待写入的数据包。
磁盘阵列确定模块604,用于为待写入的数据包分配一个磁盘阵列,磁盘阵列对应于多个磁盘。
数据写入模块606,用于根据待写入的数据包的大小,将待写入的数据包划分为多个数据片,并行地将各个数据片分别写入磁盘阵列对应的不同的磁盘中。
在一些实施例中,磁盘阵列被划分为多个条带,每个条带中包含多个存储片,一个条带中不同的存储片分别属于不同的磁盘。数据写入模块606用于根据待写入的数据包的大小为待写入的数据包分配磁盘阵列中存储空间;根据该存储空间对应的各个存储片的剩余空间,将待写入的数据包划分为多个数据片。
在一些实施例中,存储片的容量小于或等于一个磁盘单次读写的数据量。
在一些实施例中,数据写入模块606用于根据各个磁盘阵列的数据目录,向磁盘阵列发送数据片,以便并行地将各个数据片分别写入磁盘阵列对应的不同磁盘中。磁盘阵列的数据目录是将磁盘阵列格式化为本地文件系统后挂载到本地目录后生成的。
在一些实施例中,数据节点60还包括:读取请求接收模块608,数据块查找模块610,数据块读取模块612。
读取请求接收模块608,用于接收客户端针对待读取的数据包发送的数据读取请求。
数据块查找模块610,用于根据数据目录查找所述待读取的数据块存储的磁盘阵列,根据所述磁盘阵列对应的文件系统,查找所述待读取的数据包对应的至少一个数据片存储的磁盘。
数据块读取模块612,用于从各个存储的磁盘中并行读取所述待读取的数据包对应的各个数据片。
本公开的实施例中的数据节点可各由各种计算设备或计算机系统来实现,下面结合图7以及图8进行描述。
图7为本公开数据节点的一些实施例的结构图。如图7所示,该实施例的数据节点70包括:存储器710以及耦接至该存储器710的处理器720,处理器720被配置为基于存储在存储器710中的指令,执行本公开中任意一些实施例中的数据存储方法。
其中,存储器710例如可以包括系统存储器、固定非易失性存储介质等。系统存储器例如存储有操作系统、应用程序、引导装载程序(Boot Loader)、数据库以及其他程序等。
图8为本公开数据节点的另一些实施例的结构图。如图8所示,该实施例的数据节点80包括:存储器810以及处理器820,分别与存储器710以及处理器720类似。还可以包括输入输出接口830、网络接口840、存储接口850等。这些接口830,840,850以及存储器810和处理器820之间例如可以通过总线860连接。其中,输入输出接口830为显示器、鼠标、键盘、触摸屏等输入输出设备提供连接接口。网络接口840为各种联网设备提供连接接口,例如可以连接到数据库服务器或者云端存储服务器等。存储接口850为SD卡、U盘等外置存储设备提供连接接口。
本公开还提供一种数据存储系统,下面结合图9进行描述。
图9为本公开数据存储系统的一些实施例的结构图。如图9所示,该实施例的系统9包括:前述任意实施例的数据节点60/70/80,以及客户端92。
客户端92,用于接收管理节点发送的块组信息,块组中信息包括多个数据节点的地址信息;将待写入的数据划分为数据单元,并根据一组预设数量的数据单元计算对应的校验单元;根据各个数据节点的地址信息将数据单元和校验单元的数据分别以待写入的数据包的形式发送至各个数据节点。客户端92可以执行前述图4对应的实施例中的步骤。
本领域内的技术人员应当明白,本公开的实施例可提供为方法、系统、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解为可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本公开的较佳实施例,并不用以限制本公开,凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (14)
1.一种数据存储方法,包括:
数据节点接收客户端发送的待写入的数据包;
所述数据节点为所述待写入的数据包分配一个磁盘阵列,所述磁盘阵列对应于多个磁盘;
所述数据节点根据所述待写入的数据包的大小,将所述待写入的数据包划分为多个数据片,并行地将各个数据片分别写入所述磁盘阵列对应的不同的磁盘中。
2.根据权利要求1所述的方法,其中,
所述磁盘阵列被划分为多个条带,每个条带中包含多个存储片,一个条带中不同的存储片分别属于不同的磁盘。
3.根据权利要求2所述的方法,其中,
所述数据节点根据所述待写入的数据包的大小,将所述待写入的数据包划分为多个数据片包括:
所述数据节点根据所述待写入的数据包的大小为所述待写入的数据包分配所述磁盘阵列中存储空间;
所述数据节点根据该存储空间对应的各个存储片的剩余空间,将所述待写入的数据包划分为多个数据片。
4.根据权利要求1所述的方法,其中,
所述并行地将各个数据片分别写入所述磁盘阵列中不同磁盘分区包括:
所述数据节点根据各个磁盘阵列的数据目录,向所述磁盘阵列发送所述数据片,以便并行地将各个数据片分别写入所述磁盘阵列对应的不同磁盘中;
其中,所述磁盘阵列的数据目录是将所述磁盘阵列格式化为本地文件系统后挂载到本地目录后生成的。
5.根据权利要求1所述的方法,还包括:
数据节点接收客户端针对待读取的数据包发送的数据读取请求;
所述数据节点根据数据目录查找所述待读取的数据块存储的磁盘阵列,根据所述磁盘阵列对应的文件系统,查找所述待读取的数据包对应的至少一个数据片存储的磁盘;
所述数据节点从各个存储的磁盘中并行读取所述待读取的数据包对应的各个数据片。
6.根据权利要求1所述的方法,还包括:
所述客户端接收管理节点发送的块组信息,所述块组中信息包括多个数据节点的地址信息;
所述客户端将待写入的数据划分为数据单元,并根据一组预设数量的数据单元计算对应的校验单元;
所述客户端根据各个数据节点的地址信息将所述数据单元和所述校验单元的数据分别以待写入的数据包的形式发送至各个数据节点。
7.一种数据节点,包括:
数据包接收模块,用于接收客户端发送的待写入的数据包;
磁盘阵列确定模块,用于为所述待写入的数据包分配一个磁盘阵列,所述磁盘阵列对应于多个磁盘;
数据写入模块,用于根据所述待写入的数据包的大小,将所述待写入的数据包划分为多个数据片,并行地将各个数据片分别写入所述磁盘阵列对应的不同的磁盘中。
8.根据权利要求7所述的数据节点,其中,
所述磁盘阵列被划分为多个条带,每个条带中包含多个存储片,一个条带中不同的存储片分别属于不同的磁盘。
9.根据权利要求8所述的数据节点,其中,
所述数据写入模块用于根据所述待写入的数据包的大小为所述待写入的数据包分配所述磁盘阵列中存储空间;根据该存储空间对应的各个存储片的剩余空间,将所述待写入的数据包划分为多个数据片。
10.根据权利要求7所述的数据节点,其中,
所述数据写入模块用于根据各个磁盘阵列的数据目录,向所述磁盘阵列发送所述数据片,以便并行地将各个数据片分别写入所述磁盘阵列对应的不同磁盘中;
其中,所述磁盘阵列的数据目录是将所述磁盘阵列格式化为本地文件系统后挂载到本地目录后生成的。
11.根据权利要求7所述的数据节点,还包括:
读取请求接收模块,用于接收客户端针对待读取的数据包发送的数据读取请求;
数据块查找模块,用于根据数据目录查找所述待读取的数据块存储的磁盘阵列,根据所述磁盘阵列对应的文件系统,查找所述待读取的数据包对应的至少一个数据片存储的磁盘;
数据块读取模块,用于从各个存储的磁盘中并行读取所述待读取的数据包对应的各个数据片。
12.一种数据节点,包括:
存储器;以及
耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如权利要求1-6任一项所述的数据存储方法。
13.一种计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现权利要求1-6任一项所述方法的步骤。
14.一种数据存储系统,包括:权利要求7-11任一项所述的数据节点;以及
客户端,用于接收管理节点发送的块组信息,所述块组中信息包括多个数据节点的地址信息;将待写入的数据划分为数据单元,并根据一组预设数量的数据单元计算对应的校验单元;根据各个数据节点的地址信息将所述数据单元和所述校验单元的数据分别以待写入的数据包的形式发送至各个数据节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910515344.9A CN111782135A (zh) | 2019-06-14 | 2019-06-14 | 数据存储方法、系统、数据节点和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910515344.9A CN111782135A (zh) | 2019-06-14 | 2019-06-14 | 数据存储方法、系统、数据节点和计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111782135A true CN111782135A (zh) | 2020-10-16 |
Family
ID=72754909
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910515344.9A Pending CN111782135A (zh) | 2019-06-14 | 2019-06-14 | 数据存储方法、系统、数据节点和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111782135A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112199054A (zh) * | 2020-12-07 | 2021-01-08 | 上海七牛信息技术有限公司 | 一种文件存储的方法及系统 |
CN112667157A (zh) * | 2020-12-25 | 2021-04-16 | 深圳创新科技术有限公司 | 磁盘阵列的写控制方法和系统 |
CN112684985A (zh) * | 2021-01-04 | 2021-04-20 | 北京金山云网络技术有限公司 | 一种数据的写入方法和装置 |
CN113254392A (zh) * | 2021-07-12 | 2021-08-13 | 深圳比特微电子科技有限公司 | 用于片上系统的数据存储方法和基于片上系统的设备 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050102470A1 (en) * | 2003-11-11 | 2005-05-12 | Nec Corporation | Disk array device |
CN101566932A (zh) * | 2009-05-27 | 2009-10-28 | 杭州华三通信技术有限公司 | 多磁盘阵列系统的数据写入方法及多磁盘阵列系统 |
CN101976179A (zh) * | 2010-08-19 | 2011-02-16 | 北京同有飞骥科技有限公司 | 一种垂直型分组并行分布校验的磁盘阵列的构建方法 |
CN102508802A (zh) * | 2011-11-16 | 2012-06-20 | 刘大可 | 基于并行随机存储器的数据写入、读取方法、装置及系统 |
CN103699336A (zh) * | 2013-12-03 | 2014-04-02 | 中国科学院计算技术研究所 | 一种磁盘阵列数据分布与重建方法及系统 |
US20140201439A1 (en) * | 2013-01-17 | 2014-07-17 | Kabushiki Kaisha Toshiba | Storage device and storage method |
CN104778100A (zh) * | 2015-04-23 | 2015-07-15 | 成都博元时代软件有限公司 | 一种安全备份数据的方法 |
CN108701005A (zh) * | 2016-02-18 | 2018-10-23 | 华为技术有限公司 | 数据更新技术 |
CN109062512A (zh) * | 2018-07-26 | 2018-12-21 | 郑州云海信息技术有限公司 | 一种分布式存储集群、数据读写方法、系统及相关装置 |
CN109799948A (zh) * | 2017-11-17 | 2019-05-24 | 航天信息股份有限公司 | 一种数据存储方法及装置 |
-
2019
- 2019-06-14 CN CN201910515344.9A patent/CN111782135A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050102470A1 (en) * | 2003-11-11 | 2005-05-12 | Nec Corporation | Disk array device |
CN101566932A (zh) * | 2009-05-27 | 2009-10-28 | 杭州华三通信技术有限公司 | 多磁盘阵列系统的数据写入方法及多磁盘阵列系统 |
CN101976179A (zh) * | 2010-08-19 | 2011-02-16 | 北京同有飞骥科技有限公司 | 一种垂直型分组并行分布校验的磁盘阵列的构建方法 |
CN102508802A (zh) * | 2011-11-16 | 2012-06-20 | 刘大可 | 基于并行随机存储器的数据写入、读取方法、装置及系统 |
US20140201439A1 (en) * | 2013-01-17 | 2014-07-17 | Kabushiki Kaisha Toshiba | Storage device and storage method |
CN103699336A (zh) * | 2013-12-03 | 2014-04-02 | 中国科学院计算技术研究所 | 一种磁盘阵列数据分布与重建方法及系统 |
CN104778100A (zh) * | 2015-04-23 | 2015-07-15 | 成都博元时代软件有限公司 | 一种安全备份数据的方法 |
CN108701005A (zh) * | 2016-02-18 | 2018-10-23 | 华为技术有限公司 | 数据更新技术 |
CN109799948A (zh) * | 2017-11-17 | 2019-05-24 | 航天信息股份有限公司 | 一种数据存储方法及装置 |
CN109062512A (zh) * | 2018-07-26 | 2018-12-21 | 郑州云海信息技术有限公司 | 一种分布式存储集群、数据读写方法、系统及相关装置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112199054A (zh) * | 2020-12-07 | 2021-01-08 | 上海七牛信息技术有限公司 | 一种文件存储的方法及系统 |
CN112667157A (zh) * | 2020-12-25 | 2021-04-16 | 深圳创新科技术有限公司 | 磁盘阵列的写控制方法和系统 |
CN112667157B (zh) * | 2020-12-25 | 2024-04-26 | 深圳创新科技术有限公司 | 磁盘阵列的写控制方法和系统 |
CN112684985A (zh) * | 2021-01-04 | 2021-04-20 | 北京金山云网络技术有限公司 | 一种数据的写入方法和装置 |
CN112684985B (zh) * | 2021-01-04 | 2024-04-05 | 北京金山云网络技术有限公司 | 一种数据的写入方法和装置 |
CN113254392A (zh) * | 2021-07-12 | 2021-08-13 | 深圳比特微电子科技有限公司 | 用于片上系统的数据存储方法和基于片上系统的设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11379142B2 (en) | Snapshot-enabled storage system implementing algorithm for efficient reclamation of snapshot storage space | |
US11386042B2 (en) | Snapshot-enabled storage system implementing algorithm for efficient reading of data from stored snapshots | |
US10303365B1 (en) | Data fingerprint distribution on a data storage system | |
CN111782135A (zh) | 数据存储方法、系统、数据节点和计算机可读存储介质 | |
US10628043B1 (en) | Systems and methods for implementing a horizontally federated heterogeneous cluster | |
CN102622189B (zh) | 存储虚拟化的装置、数据存储方法及系统 | |
US20220137849A1 (en) | Fragment Management Method and Fragment Management Apparatus | |
JP5932043B2 (ja) | 不揮発性記憶装置セットの揮発メモリ表現 | |
CN110858124B (zh) | 数据迁移方法及装置 | |
CN107092442B (zh) | 存储系统资源分配方法及装置 | |
US10254993B2 (en) | Selecting first data sets in a first storage group to swap with second data sets in a second storage group | |
EP2378410A2 (en) | Method and apparatus to manage tier information | |
US9355121B1 (en) | Segregating data and metadata in a file system | |
CN103608784B (zh) | 网络卷创建方法、数据存储方法、存储设备和存储系统 | |
CN109144406B (zh) | 分布式存储系统中元数据存储方法、系统及存储介质 | |
CN103761053A (zh) | 一种数据处理方法和装置 | |
US10908997B1 (en) | Simple and efficient technique to support disk extents of different sizes for mapped RAID | |
US20090320041A1 (en) | Computer program and method for balancing processing load in storage system, and apparatus for managing storage devices | |
US20210326207A1 (en) | Stripe reassembling method in storage system and stripe server | |
CN104216664A (zh) | 网络卷创建方法、数据存储方法、存储设备和存储系统 | |
JP2015022327A (ja) | データ再配置装置、方法およびプログラム | |
US8468303B2 (en) | Method and apparatus to allocate area to virtual volume based on object access type | |
US8504764B2 (en) | Method and apparatus to manage object-based tiers | |
CN111936960A (zh) | 分布式存储系统中数据存储方法、装置及计算机程序产品 | |
CN108769123B (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 |