CN112714910B - 分布式存储系统及计算机程序产品 - Google Patents
分布式存储系统及计算机程序产品 Download PDFInfo
- Publication number
- CN112714910B CN112714910B CN201880003830.6A CN201880003830A CN112714910B CN 112714910 B CN112714910 B CN 112714910B CN 201880003830 A CN201880003830 A CN 201880003830A CN 112714910 B CN112714910 B CN 112714910B
- Authority
- CN
- China
- Prior art keywords
- data
- stripe
- client
- storage node
- host
- 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
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- 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/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/0653—Monitoring storage devices or systems
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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]
-
- 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/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本方案公开了一种分布式存储系统,数据存储节点Nx收到提供该存储地址的硬盘返回的写入成功响应,数据存储节点Nx向客户端返回写成功响应,客户端收到数据存储节点Nx返回的写成功响应,客户端向主机返回写完成响应,从而减少了分布式存储系统中的写时延,提高了写性能。
Description
技术领域
本发明涉及信息技术领域,尤其涉及分布式存储系统及计算机程序产品。
背景技术
分布式存储系统中包含多个存储节点,客户端根据主机发送的写请求向分布式存储系统中写入数据时,数据是以分条的形式存储到相应的存储节点的。例如,基于纠删码(Erasure Coding,EC)算法,分长中数据条带数量为N,校验条带的数量为M,分条的长度为N+M,其中N和M均为正整数。客户端将待存储的数据划分为N个数据条带的数据,根据EC算法生成M个校验条带的数据,客户端将N+M长度的分条的条带的数据写入相应的N+M存储节点时,为了保证写操作的原子性,写操作分为两个阶段:
准备阶段:N+M个存储节点中的每一个存储节点记录写日志并且将写日志持久化保存,向客户端返回响应。存储节点上的写日志记录存储节点收到的条带的数据的主机访问地址与条带标识的映射。此时,该写日志内容为客户端不可访问的内容。
在提交(Commit)或退出(Absort)阶段:当该N+M个存储节点均完成写日志持久化,并向客户端返回响应后,客户端分别向该N+M个存储节点发送Commit命令。当该N+M个存储节点中有一个存储节点向客户端返回响应失败,客户端向该N+M个存储节点发送Absort指令。该N+M个存储节点中的每一个存储节点根据Commit或Absort命令完成操作后,分别向客户端返回响应。
客户端在发送Commit命令,存储节点将写日志中的内容以可访问的元数据形式存储,即建立条带的数据的主机访问地址与条带标识的映射,然后向主机发送写完成响应。
现有技术的上述操作虽然可以保证分布式存储系统中客户端写操作的原子性,但一个写操作过程中,存储节点需要向客户端发送2次响应,客户端才会向主机发送写完成响应,增加了写操作时延,从而影响了写性能。
发明内容
本申请提供了一种分布式存储系统及计算机程序产品,减少了分布式存储系统中写操作的时延,提高了分布式存储系统的写性能。
第一方面,本发明提供了一种分布式存储系统,该分布式存储系统包含客户端和M个存储节点Nj;其中,j为整数1到M中的每一个值,该M个存储节点Nj包含L个数据存储节点Nx,x为整数1到L中的每一个值,L与M均为正整数,且L小于M;
该客户端用于:
接收主机写请求;其中,该写请求包含主机的数据和数据的主机访问地址;
基于纠删码EC算法为该数据生成M个条带SUNj的数据;其中,该M个条带SUNj组成分条,该M个条带SUNj中包含L个数据条带SUNx,L个数据条带SUNx用于存储划分该主机的数据得到的数据条带SUNx的数据,该L个数据条带SUNx外的其他条带用于存储该该L个数据条带SUNx的数据的校验数据;
向存储节点Nj发送条带SUNj的数据;
该数据存储节点Nx用于:
接收该客户端发送的数据条带SUNx的数据;
建立该数据条带SUNx的数据的主机访问地址与数据条带SUNx标识的映射;
向该数据存储节点Nx的硬盘写入该数据条带SUNx的数据;
接收该硬盘返回的写入成功响应;
响应于该写入成功响应,向该客户端发送写成功响应;
该客户端还用于:
响应于该数据存储节点Nx返回的写成功响应,向该主机返回写完成响应。因此,数据存储节点Nx收到提供该存储地址的硬盘返回的写入成功响应,数据存储节点Nx向客户端返回写成功响应,客户端收到数据存储节点Nx返回的写成功响应,客户端向主机返回写完成响应,从而减少了分布式存储系统中的写时延,提高了写性能。
一种实现,数据存储节点Nx向该硬盘写入该数据条带SUNx的数据为向硬盘的逻辑地址写入该数据条带SUNx的数据;另一种实现,在支持开放通道(Open-channel)的SSD中,数据存储节点Nx向该硬盘写入该数据条带SUNx的数据为向SSD的物理地址写入该数据条带SUNx的数据。另一种实现,硬盘还可以为存储阵列中的逻辑单元(Logical Unit,LU),LU又称为LUN。
结合第一方面,在一些可能的实现方式中,该数据存储节点Nx还用于:
响应于该硬盘返回的写入成功响应,将该数据条带SUNx的数据的主机访问地址与数据条带SUNx标识的映射的状态设置为已经写入状态。
结合第一方面,在一些可能的实现方式中,该分布式存储系统还包括分条服务器,该分条服务器记录该分条与该M个条带SUNj标识的映射以及该分条的条带SUNj标识与存储节点Nj的映射;
该客户端还用于:
接收该主机发送的第一读请求;该第一读请求包含该数据条带SUNx的数据的主机访问地址;
向该数据存储节点Nx发送读取所述数据条带SUNx的数据的第一请求;
该数据存储节点Nx还用于:
响应于该读取该数据条带SUNx的数据的第一请求,检测该数据条带SUNx的数据的主机访问地址与数据条带SUNx标识的映射的状态为已经写入状态;
向该分条服务器发送校验请求;该校验请求包含条带SUNx标识;
该分条服务器用于:
根据该条带SUNx标识确定该分条;
根据该分条的条带SUNj标识与存储节点Nj的映射读取条带SUNj的数据;
基于该EC算法判断该条带SUNj的数据是否准确;
当该条带SUNj的数据准确,向该数据存储节点Nx发送通知,该通知用于指示该数据条带SUNx的数据准确;
该数据存储节点Nx还用于:
响应于该通知,向该客户端返回该数据条带SUNx的数据;
该客户端还用于:
接收该数据条带SUNx的数据;
向该主机返回数据条带SUNx的数据。
本发明在客户端发送Commit命令前,客户端就可以向主机返回写完成响应,本发明实施例通过EC算法判断条带SUNj的数据是否准确,从而保证了数据的一致性。
结合第一方面及其多种可能实现方式,在一些可能的实现方式中,该客户端还用于:
响应于来自该数据存储节点Nx的所述写成功响应,向该数据存储节点Nx发送提交Commit命令;
该数据存储节点Nx还用于:
接收来自该客户端的该Commit命令;
将该数据条带SUNx的数据的主机访问地址与数据条带SUNx标识的映射的状态置为可读状态。响应于客户端向主机发送写完成响应,客户端向数据存储节点Nx发送Commit命令,数据存储节点Nx将数据条带SUNx的数据的主机访问地址与数据条带SUNx的标识的映射的状态置为可读状态,数据存储节点Nx不再向客户端返回响应,从而减少了客户端与存储节点的交互。
结合第一方面及其多种可能实现方式,在一些可能的实现方式中,该客户端还用于:
接收该主机发送的第二读请求;该第二读请求包含该数据条带SUNx的数据的主机访问地址;
向该存储节点Nx发送读取该数据条带SUNx的数据的第二请求;
该存储节点Nx还用于:
响应于该读取该数据条带SUNx的数据的第二请求,检测该数据条带SUNx的数据的主机访问地址与数据条带SUNx标识的映射的状态为可读状态;
向该客户端返回该数据条带SUNx的数据;
该客户端还用于:
接收来自该数据存储节点Nx的该数据条带SUNx的数据;
向该主机返回来自该数据存储节点Nx的该数据条带SUNx的数据。客户端向数据存储节点Nx发送Commit命令,从而客户端读取数据存储节点Nx的数据条带SUNx的数据时不需要根据EC算法进行的校验操作,进一步提高分布式存储系统的读性能。
第二方面,本发明提供了一种计算机程序产品,该计算机程序产品包含计算机指令,该计算机程序产品应用于分布式存储系统,该分布式存储系统包含本发明第一方面中的客户端和M个存储节点Nj;其中,j为整数1到M中的每一个值,该M个存储节点Nj包含L个数据存储节点Nx,x为整数1到L中的每一个值,L小于M;该客户端和数据存储节点Nx分别执行该计算机指令中的相关指令子集,用于实施本发明第一方面各种实现方式。
第三方面,本发明实施例提供了一种存储节点,该分布式存储系统包含客户端和M个存储节点Nj;其中,j为整数1到M中的每一个值,该M个存储节点Nj包含L个数据存储节点Nx,x为整数1到L中的每一个值,L小于M;该数据存储节点Nx包括处理器和接口,处理器和接口通信,处理器用于实现本发明第一方面中存储节点Nx的各种实现。
第四方面,本发明实施例提供了一种存储节点,该分布式存储系统包含客户端和M个存储节点Nj;其中,j为整数1到M中的每一个值,该M个存储节点Nj包含L个数据存储节点Nx,x为整数1到L中的每一个值,L小于M;该数据存储节点Nx包括各种单元,用于实现本发明第一方面中存储节点Nx的各种实现。
第五方面,本发明实施例提供了一种客户端,该分布式存储系统包含该客户端和M个存储节点Nj;其中,j为整数1到M中的每一个值,该M个存储节点Nj包含L个数据存储节点Nx,x为整数1到L中的每一个值,L小于M;该客户端包括处理器和接口,处理器和接口通信,处理器用于实现本发明第一方面中客户端的各种实现。
第六方面,本发明实施例提供了一种客户端,该分布式存储系统包含该客户端和M个存储节点Nj;其中,j为整数1到M中的每一个值,该M个存储节点Nj包含L个数据存储节点Nx,x为整数1到L中的每一个值,L小于M;该客户端包括各种单元,处理器用于实现本发明第一方面中客户端的各种实现。
附图说明
图1为本发明实施例分布式存储系统示意图;
图2为本发明实施例分布式块存储系统中服务器结构示意图;
图3为本发明实施例分布式块存储系统分区视图示意图;
图4为本发明实施例分布式块存储系统中条带与存储节点关系示意图;
图5为本发明实施例分布式块存储系统中客户端写数据的方法流程图;
图6为本发明实施例分布块存储系统中客户端确定分区示意图。
图7为本发明实施例存储节点写条带的数据的方法流程图。
本发明实施例
本发明实施例中的分布式存储系统,如的系列,9000系列。示例性的如图1所示,分布式存储系统包括多台服务器,如服务器1、服务器2、服务器3、服务器4、服务器5和服务器6,服务器间通过InfiniBand或以太网络等互相通信。本发明实施例中,分布式存储系统中的服务器又称为存储节点。在实际应用当中,分布式存储系统中服务器的数量可以根据实际需求增加,本发明实施例对此不作限定。
分布式存储系统的服务器中包含如图2所示的结构。如图2所示,分布式存储系统中的每台服务器包含中央处理单元(Central Processing Unit,CPU)201、内存202、接口203、硬盘1、硬盘2和硬盘3,内存202中存储计算机指令,CPU201执行内存202中的计算机指令执行相应的操作。接口203可以为硬件接口,如网络接口卡(Network Interface Card,NIC)或主机总线适配器(Host Bus Adaptor,HBA)等,也可以为程序接口模块等。硬盘包含固态硬盘(Solid State Disk,SSD)、机械硬盘或者混合硬盘。机械硬盘如HDD(Hard DiskDrive),硬盘接口可以为串行高级技术连接(Serial Advanced Technology Attachment,SATA)接口,串行连接小型计算机系统接口(Serial Attached Small Computer SystemInterface,SAS)接口,光纤通道(Fiber Channel,FC)接口,快速外设互联(PeripheralComponent Interconnect-Express,PCIe)接口,或者快速非易失性存储器(Non-VolatileMemory Express,NVMe)接口等。CPU201可以由现场可编程逻辑门阵列(FieldProgrammable Gate Array,FPGA)或其他硬件代替,或者,FPGA或其他硬件与CPU201共同执行上述相应的操作。为方便描述,本发明实施例将CPU201与内存202称为处理器,或者将替代CPU201和内存202的硬件称为处理器,或者将CPU201和内存202以及其他硬件的组合称为处理器。
分布式存储系统中的客户端根据主机写请求向分布式存储系统写入数据或根据主机的读请求从分布式存储系统中读取数据。本发明实施例中所示的服务器可以作为客户端。另外客户端也可以由独立于图2所示的服务器的设备。本发明实施例中的主机的具体形态可以为服务器、虚拟机(Virtual Machine,VM)、终端设备等,本发明实施例对此不作限定。分布式存储系统的客户端为主机提供分布式存储系统的存储资源。例如,在分布式块存储系统中,客户端为主机提供块资源,如逻辑单元,从而为主机提供数据访问操作。其中,逻辑单元又称为逻辑单元号(Logical Unit Number,LUN)。在分布式文件存储系统中,客户端为主机提供文件资源,在分布式对象存储系统中,客户端为主机提供对象资源。
本发明实施例以分布式块存储系统为例,客户端提供块协议访问接口,从而客户端提供分布式块存储接入点服务,主机可以通过客户端访问分布式块存储系统中存储资源池中的存储资源。通常,该块协议访问接口用于向主机提供LUN。服务器运行分布式块存储系统程序使包含硬盘的服务器作为存储节点,用于存储客户端数据。示例性的,服务器可以以一块硬盘默认作为一个存储节点,即当服务器中包含多块硬盘时,可以作为多个存储节点,另一种实现,服务器运行分布式块存储系统程序作为一个存储节点,本发明实施例对此不作限定。因此,存储节点的结构可参考图3及相关描述。分布式块存储系统初始化时,将哈希空间(如0~2^32,)划分为N等份,每1等份是1个分区(Partition),这N等份按照硬盘数量进行均分。例如,分布式块存储系统中N默认为3600,即分区分别为P1,P2,P3…P3600。假设当前分布式块存储系统有18块硬盘(存储节点),则每块存储节点承载200个分区。分区P包含M个存储节点Nj,分区与存储节点对应关系,即分区与分区包含的存储节点Nj的映射,也称为分区视图,如图3所示,以分区包含4个存储节点Nj为例,分区视图为“P2-存储节点N1-存储节点N2-存储节点N3-存储节点N4”。其中,j为整数1到M中的每一个值。在分布式块存储系统初始化时会分配好,后续会随着分布式块存储系统中硬盘数量的变化进行调整。客户端保存该分区视图。
根据分布式块存储系统的可靠性要求,可以使用纠删码(Erasure Coding,EC)算法提高数据可靠性,如使用3+1模式,即3个数据条带和1个校验条带组成分条。在本发明实施例中,分区以分条的形式存储数据,一个分区包含R个分条Si,其中,i为整数1到R中的每一个值。本发明实施例以P2为例进行描述。
分布式块存储系统按照8千字节(Kilobyte,KB)为单位对硬盘进行分片管理,并在硬盘的元数据管理区域记录每个8KB分片的分配信息,硬盘的分片组成存储资源池。分布式块存储系统包含分条服务器,具体实现可以为分条管理程序运行在分布式块存储系统中的一台或多台服务器上。分条服务器为分区分配分条。仍以图4所示分区视图为例,分条服务器根据分区视图,如图4所示,分条服务器为分区P2的分条Si从分区对应的存储节点Nj分配分条中条带SUij的存储地址,即存储空间,具体包括:为SUi1从存储节点N1分配存储地址,为SUi2从存储节点N2分配存储地址,为SUi3从存储节点N3分配存储地址,为SUi4从存储节点N4分配存储地址。另一种实现,分条服务器不为分区P2的分条Si从分区对应的存储节点Nj分配分条中条带SUij的存储地址,即当客户端向存储节点写入数据时,存储节点Nj分配分条中条带SUij的存储地址。为条带SUij分配的存储地址,具体可以是存储节点Nj中硬盘的逻辑地址,例如逻辑块地址(Logical Block Address,LBA);另外一种实现,在支持开放通道(Open-channel)的SSD中,分条服务器从存储节点Nj分配分条中条带SUij的存储地址还可以为SSD的物理地址。另外一种实现方式,存储节点Nj中硬盘为LUN,即存储节点挂载的LUN。分条元数据记录分条标识与条带标识的映射关系,即Si和存储节点Nj分配分条中条带SUij的对应关系,根据该对应关系可以查找到分条Si所包含的条带SUij。进一步的,分条服务器还记录条带SUij和分条Si的对应关系,根据该对应关系,可以使用条带SUij查找到分条Si,从而查询分条信息,例如Si所包含的所有条带SUij。
为减少分条服务器管理的条带标识的数量,分条服务器为分条中条带标识分配版本号,当一个分条释放后,更新该释放后的分条中条带的条带标识版本号,从而作为新的分条中条带的条带标识。分条服务器预先为分条Si分配条带SUij,可以减少客户端写入数据时的等待时间,从而提升分布式块存储系统的写性能。本发明实施例中,分条Si中条带SUij在分布式块存储系统中具有唯一的标识。
本发明实施例中,分条Si中条带SUij在客户端写数据之前,仅仅为一段存储空间。当客户端接收主机的数据,基于纠删码EC算法为该数据生成包含M个条带SUNj的数据,其中,M个条带SUNj包括L个数据条带SUNx以及(M-L)个校验条带,L与M均为正整数,且L小于M。校验条带的长度与数据条带的长度相同。客户端将主机的数据划分为L份数据条带的数据,并且基于EC算法生成L份数据条带的数据的(M-L)个校验条带的数据。本发明实施例中称存储数据条带的数据的存储节点为数据存储节点,存储校验条带的数据的存储节点为校验存储节点。
本发明实施例中,客户端为主机提供分布式块存储系统分配的逻辑单元,主机挂载客户端提供的LUN,从而为主机提供数据访问操作。主机的访问地址为LUN的LBA。
本发明实施例中,如图5所示,客户端执行如下步骤:
步骤501:客户端接收主机发送的写请求。
客户端接收主机发送的写请求,写请求中包含主机的数据以及待存储数据主机访问地址。在本发明实施例中,主机访问地址为LUN的LBA,主机的数据为待存储的数据。
步骤502:客户端确定主机的数据所在分区P。
本发明实施例以分区P2为例,结合图3,客户端存储有分布式块存储系统的分区视图。如图6所示,根据分区视图,确定待存储数据所在的分区。其中一种实现,客户端根据待存储数据的LUN的LBA生成键Key,根据哈希算法计算Key的哈希值,确定哈希值对应的分区,从而确定LUN的LBA分布在分区P2。也称为待存储数据分布在分区P2。
步骤503:客户端从R个分条中获得分条SN;其中,N为整数1到R中的一个值。
分条服务器管理分区与分条的对应关系,分条服务器记录分条与该分条的条带的映射以及分条中条带与存储节点的映射。其中客户端从R个分条中获得分条SN的一种实现,客户端确定LUN的LBA分布在分区P2,客户端查询分条服务器获得分区P2包含的R个分条中的一个分条SN。因为LUN的LBA是分布式块存储系统中存储客户端写入数据的地址,所为,LUN的LBA分布在分区P与待存储数据分布在分区P具有相同的含义。客户端从R个分条中获得分条SN的另一种实现,可以为客户端从R个分条中已经分配给客户端的分条中获得分条SN。
步骤504:客户端将主机的数据划分为分条SN中条带SUNj的数据。
分条SN由条带组成,客户端根据分条中条带的大小划分主机的数据,示例性的,客户端根据分条中条带的长度划分主机的数据得到条带大小的数据,根据条带大小的数据的LUN的LBA对分区中的存储节点数M(例如4)取模,从而确定条带大小的数据在分条中的位置,即对应的条带SUNj,进而根据分区视图确定条带SUNj对应存储节点Nj,从而LUN的LBA的条带的数据分布在相同的存储节点。例如将主机的数据划分为1个或多个条带SUNj的数据。本发明实施例以P2为例,结合图4,分条SN包含4个条带,分别为SUN1、SUN2、SUN3和SUN4。以将主机的数据划分为3个数据条带的数据为例,即分别为数据条带SUN1的数据、数据条带SUN2的数据和数据条带条带SUN3的数据。进而根据SUN1的数据、SUN2的数据和SUN3的数据生成校验条带SUN4的数据,校验条带SUN4的数据也称为校验数据。关于分条中数据条带的数据如何生成校验条带的数据可参考现有分条实现的EC算法,本发明实施例不再赘述。本发明实施例中,数据条带的数据及校验条带的数据均称为条带SUNj的数据。
步骤505:客户端将条带SUNj的数据发送到对应的存储节点Nj。
本发明实施例中,客户端将数据条带SUN1的数据发送到存储节点N1,将数据条带SUN2的数据发送到存储节点N2,将数据条带SUN3的数据发送到存储节点N3,将校验条带SUN4的校验数据发送到存储节点N4。数据条带SUNj的数据还包括元数据,例如数据条带SUNj标识、数据条带SUNj的数据的主机访问地址。在本发明实施例的分布式块存储系统中,数据条带SUNj的数据的主机访问地址为数据条带SUNj的数据的LUN的逻辑地址。这里的LUN是指主机挂载的LUN。
与图5所示的客户端实施例相对应,如图7所示,存储节点Nj执行如下步骤:
步骤701:存储节点Nj接收客户端发送的分条SN中的条带SUNj的数据。
结合图5所示实施例,数据存储节点N1接收客户端发送数据条带SUN1的数据,数据存储节点N2接收客户端发送数据条带SUN2的数据,数据存储节点N3接收客户端发送数据条带SUN3的数据,存储节点N4接收客户端发送校验条带SUN4的校验数据。
步骤702:存储节点Nj存储条带SUNj的数据到存储地址,数据存储节点Nx建立数据条带SUNx的数据的主机访问地址与数据条带SUNx的标识的映射。X的取值为1到L中的每一个整数,其中,L为整数,并且L小于M。L为分条SN中数据条带的数量,M为分条SN中条带的数量。本发明实施例中数据条带SUNx的数据的主机访问地址为主机挂载的LUN的LBA。
存储节点Nj存储条带SUNj的数据到存储地址,具体为存储节点Nj存储条带SUNj的数据到存储节点Nj的硬盘的存储地址。一种实现,硬盘的存储地址为硬盘的逻辑地址;另一种实现,在支持开放通道(Open-channel)的SSD中,为SSD的物理地址。另一种实现,为硬盘还可以为存储阵列中LUN。
具体的,数据存储节点N1为数据条带SUN1的数据分配的存储地址为Ad1,数据存储节点N2为数据条带SUN2的数据分配的存储地址为Ad2,数据存储节点N3为数据条带SUN3的数据分配的存储地址为Ad3,数据存储节点N4为校验条带SUN4的校验数据分配的存储地址为Ad4。
步骤703:响应于建立数据条带SUNx的数据的主机访问地址与数据条带SUNx的标识的映射,数据存储节点Nx将建立数据条带SUNx的数据的主机访问地址与数据条带SUNx的标识的映射的状态设置为未生效状态。
该未生效状态表示数据存储节点Nx的该存储地址存储的数据的状态为未生效,即数据存储节点Nx尚未收到提供该存储地址的硬盘返回的写成功响应,因此,数据存储节点Nx不能访问该存储地址存储的数据,客户端不能向主机返回写完成响应。当客户端收到主机发送的读请求时,数据存储节点Nx收到客户端读取数据条带SUNx的数据请求,数据存储节点Nx检测数据条带SUNx的数据的主机访问地址与数据条带SUNx的标识的映射的状态,即数据条带SUNx的数据的主机访问地址与数据条带SUNx的标识的映射的状态为未生效状态,则不对数据条带SUNx的数据进行读操作。
步骤704:响应于数据存储节点Nx将数据条带SUNx写入成功,向客户端返回写成功响应,数据存储节点Nx将数据条带SUNx的数据的主机访问地址与数据条带SUNx的标识的映射的状态设置为已经写入状态。
数据存储节点Nx收到硬盘返回的写入成功响应,数据存储节点Nx向客户端返回写成功响应,客户端收到数据存储节点Nx返回的写成功响应,客户端向主机返回写完成响应,从而减少了分布式存储系统中的写时延,提高了写性能。进一步的,响应于数据存储节点Nx将数据条带SUNx写入成功,数据存储节点Nx建立数据条带SUNx的标识与存储数据条带SUNx的数据的该存储地址的映射。如前所述,该存储地址可以由分条服务器为数据条带SUNx分配,也可以由数据存储节点Nx为数据条带SUNx分配。本发明实施例中,校验存储节点也建立相应的校验条带的标识与存储校验条带的校验数据的存储地址的映射。
主机发起读操作,客户端根据主机的读请求,向数据存储节点Nx读取数据条带SUNx的数据。其中主机的读请求包含存储读数据的LUN的LBA。这里的LUN是指主机挂载的LUN。数据存储节点Nx检测数据条带SUNx的数据的主机访问地址与数据条带SUNx的标识的映射的状态,即数据条带SUNx的数据的主机访问地址与数据条带SUNx的标识的映射的状态为已经写入状态。数据存储节点Nx向分条服务器发送校验请求,校验请求中包括条带SUNx标识。分条服务器记录分条SN和条带SUNx的映射以及分条SN的条带SUNj和存储节点Nj的映射,从而分条服务器根据分条SN和条带SUNx的映射确定确定条带SUNx属于分条SN,根据分条SN包含的条带SUNj和存储节点Nj的映射读取条带SUNj的数据,基于EC算法判断数据条带SUNx的数据是否准确,如果数据条带SUNx的数据准确,分条服务器向数据存储节点Nx发送通知,该通知用于指示数据存储节点Nx数据条带SUNx的数据准确,数据存储节点Nx向客户端返回数据条带SUNx的数据。本发明实施例另一种实现方式,存储节点Nx检测数据条带SUNx的数据的主机访问地址与数据条带SUNx的标识的映射的状态为已经写入状态,存储节点Nx向客户端发送校验请求,校验请求中包括条带SUNx标识,客户端查询分条服务器记录的分条SN和条带SUNx的映射以及分条SN的条带SUNj和存储节点Nj的映射,基于EC算法判断数据条带SUNx的数据是否准确。进一步的,为减少数据存储节点Nx与客户端的交互次数,数据存储节点Nx向客户端发送的校验请求还可以包括数据条带SUNx的数据。本发明实施例中,基于EC算法判断数据条带SUNx的数据是否准确具体包括基于相同的EC算法为数据条带SUNx的数据生成校验条带的数据,比较生成的校验条带的数据与从校验存储节点读取的校验条带的数据是否相同。如果相同,则认为数据条带SUNx的数据是准确的。因此,本发明实施例在客户端发送Commit命令前,客户端就可以向主机返回写完成响应,从而主机可以进行数据读操作。本发明实施例在客户端发送Commit命令前,客户端就可以向主机返回写完成响应,本发明实施例通过EC算法判断条带SUNj的数据是否准确,从而保证了数据的一致性。本发明另一实施例,主机可以只读取某一个数据条带的数据。
步骤705:数据存储节点Nx在收到客户端发送的Commit命令后,将数据条带SUNx的数据的主机访问地址与数据条带SUNx的标识的映射的状态设置为可读状态,数据存储节点Nx不再向客户端返回响应。
收到客户端读取数据条带SUNx的数据请求,存数据储节点Nx检测数据条带SUNx的数据的主机访问地址与数据条带SUNx的标识的映射的状态,即数据条带SUNx的数据的主机访问地址与数据条带SUNx的标识的映射的状态为可读状态,客户端可以直接读取存储数据条带SUNx的存储地址中的数据作为数据条带SUNx的数据。响应于客户端向主机发送写完成响应,客户端向数据存储节点Nx发送Commit命令,数据存储节点Nx将数据条带SUNx的数据的主机访问地址与数据条带SUNx的标识的映射的状态置为可读状态,数据存储节点Nx不再向客户端返回响应,从而减少了客户端与存储节点的交互。客户端向数据存储节点Nx发送Commit命令,从而客户端读取存储节点Nx的数据条带SUNx的数据时不需要根据EC算法进行的校验操作,进一步提高分布式存储系统的读性能。
本发明实施例数据条带SUNx的数据的主机访问地址与数据条带SUNx的标识的映射的状态,具体实现可以使用标识来表示,标识可以是数字或字母,或数字与字母的组合,或其他表示形式。
本发明实施例中,EC算法除包含数据条带和校验条带的分外,还可以包括多副本条带组成的分条。在多副本组成的分条时,分条中的条带SUij均为数据条带,并且条带SUij的数据相同。
本发明实施例另外一种实现方式,客户端存储条带SUnx的数据可以先向主存储节点发送条带SUnx的数据,然后由主存储节点将其他存储节点存储的条带的数据发送到相应的存储节点。
本发明实施例也适用于不基于分区进行分条管理的分布式存储系统。
本发明实施例中,可以有多个客户端访问同一个存储节点存储的同一个条带的数据,如数据条带的数据,也可以由多个主机挂载同一个LUN,多个主机访问同一个存储节点存储的同一个数据条带的数据。
本发明实施例中描述分条、数据条带、校验条带和存储节点所使用的标识只是为更清楚地描述本发明实施例,实际产品实现中并不要求一定带有类似的标识,因此,本发明实施例描述分条、数据条带、校验条带和存储节点所使用的标识并不是对本发明的限定。
相应的,本发明实施例还提供了计算机可读存储介质和计算机程序产品,计算机可读存储介质和计算机程序产品中包含计算机指令用于实现本发明实施例中描述的各种方案。
相应的,本发明实施例还提供了客户端及存储节点,用于执行本发明实施例相应的操作。
本发明实施例中,M个存储节点Nj,j为整数1到M中的每一个值,并不是严格限定存储节点本身的标识,而是用于表示M个存储节点。同理,本发明实施例中一个分条的M个条带SUNj,也不是严格限定存条带本身的标识,而是用于表示一个分条中M个条带。
本发明实施例也可以应用于存储阵列,存储阵列包含控制器和硬盘。相应的,本发明实施例中分布式存储系统中的客户端和分条服务器的功能可以由存储阵列的控制器实现,数据条带SUNx的数据的主机访问地址与数据条带SUNx的标识的映射的建立以及状态维护可以由存储阵列的控制器实现。客户端向存储节点发送条带的数据可以由存储阵列的控制器向硬盘发送数据实现。存储节点Nx收到提供该存储地址的硬盘返回的写入成功响应,存储节点Nx向客户端返回写成功响应,也可以由存储阵列的控制器实现。
在本发明所提供的几个实施例中,应该理解到,所公开的装置、方法,可以通过其它的方式实现。例如,以上所描述的装置实施例所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例各方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
Claims (5)
1.一种分布式存储系统,其特征在于,所述分布式存储系统包含客户端和M个存储节点Nj;其中,j为整数1到M中的每一个值,所述M个存储节点Nj包含L个数据存储节点Nx,x为整数1到L中的每一个值,L与M均为正整数,且L小于M;
所述客户端用于:
接收主机写请求;其中,所述写请求包含主机的数据和数据的主机访问地址;
基于纠删码EC算法为所述数据生成M个条带SUNj的数据;其中,所述M个条带SUNj组成分条,所述M个条带SUNj中包含L个数据条带SUNx,L个数据条带SUNx用于存储划分所述主机的数据得到的数据条带SUNx的数据,所述L个数据条带SUNx外的其他条带用于存储所述L个数据条带SUNx的数据的校验数据;
向存储节点Nj发送条带SUNj的数据;
所述数据存储节点Nx用于:
接收客户端发送的数据条带SUNx的数据;
建立所述数据条带SUNx的数据的主机访问地址与数据条带SUNx标识的映射;
向所述数据存储节点Nx的硬盘写入所述数据条带SUNx的数据;
接收所述硬盘返回的写入成功响应;
响应于所述写入成功响应,向所述客户端发送写成功响应;
所述客户端还用于:
响应于所述数据存储节点Nx返回的写成功响应,向所述主机返回写完成响应。
2.根据权利要求1所述的分布式存储系统,其特征在于,所述数据存储节点Nx还用于:
响应于所述硬盘返回的写入成功响应,将所述数据条带SUNx的数据的主机访问地址与数据条带SUNx标识的映射的状态设置为已经写入状态。
3.根据权利要求2所述的分布式存储系统,其特征在于,所述分布式存储系统还包括分条服务器,所述分条服务器记录所述分条与所述M个条带SUNj标识的映射以及所述分条的条带SUNj标识与存储节点Nj的映射;
所述客户端还用于:
接收所述主机发送的第一读请求;所述第一读请求包含所述数据条带SUNx的数据的主机访问地址;
向所述数据存储节点Nx发送读取所述数据条带SUNx的数据的第一请求;
所述数据存储节点Nx还用于:
响应于所述读取所述数据条带SUNx的数据的第一请求,检测所述数据条带SUNx的数据的主机访问地址与数据条带SUNx标识的映射的状态为已经写入状态;
向所述分条服务器发送校验请求;所述校验请求包含条带SUNx标识;
所述分条服务器用于:
根据所述条带SUNx标识确定所述分条;
根据所述分条的条带SUNj标识与存储节点Nj的映射读取条带SUNj的数据;
是否准确;
当所述条带SUNj的数据准确,向所述数据存储节点Nx发送通知,所述通知用于指示所述数据条带SUNx的数据准确;
所述数据存储节点Nx还用于:
响应于所述通知,向所述客户端返回所述数据条带SUNx的数据;
所述客户端还用于:
接收所述数据条带SUNx的数据;
向所述主机返回数据条带SUNx的数据。
4.根据权利要求1至3任一所述的分布式存储系统,其特征在于,所述客户端还用于:
响应于来自所述存储节点Nx的所述写成功响应,向所述存储节点Nx发送提交Commit命令;
所述存储节点Nx还用于:
接收来自所述客户端的所述Commit命令;
将所述数据条带SUNx的数据的主机访问地址与数据条带SUNx标识的映射的状态设置为可读状态。
5.根据权利要求1至3任一所述的分布式存储系统,其特征在于,所述客户端还用于:
接收所述主机发送的第二读请求;所述第二读请求包含所述数据条带SUNx的数据的主机访问地址;
向所述数据存储节点Nx发送读取所述数据条带SUNx的数据的第二请求;
所述数据存储节点Nx还用于:
响应于所述读取所述数据条带SUNx的数据的第二请求,检测所述数据条带SUNx的数据的主机访问地址与数据条带SUNx标识的映射的状态为可读状态;
向所述客户端返回所述数据条带SUNx的数据;
所述客户端还用于:
接收来自所述数据存储节点Nx的所述数据条带SUNx的数据;
向所述主机返回来自所述数据存储节点Nx的所述数据条带SUNx的数据。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2018/122935 WO2020124608A1 (zh) | 2018-12-22 | 2018-12-22 | 分布式存储系统及计算机程序产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112714910A CN112714910A (zh) | 2021-04-27 |
CN112714910B true CN112714910B (zh) | 2022-12-27 |
Family
ID=71102492
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880003830.6A Active CN112714910B (zh) | 2018-12-22 | 2018-12-22 | 分布式存储系统及计算机程序产品 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20210311654A1 (zh) |
EP (1) | EP3889778B1 (zh) |
CN (1) | CN112714910B (zh) |
WO (1) | WO2020124608A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11314608B1 (en) * | 2020-10-02 | 2022-04-26 | Dell Products L.P. | Creating and distributing spare capacity of a disk array |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105612489A (zh) * | 2014-09-15 | 2016-05-25 | 华为技术有限公司 | 重复数据删除方法和存储阵列 |
CN108780386A (zh) * | 2017-12-20 | 2018-11-09 | 华为技术有限公司 | 一种数据存储的方法、装置和系统 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6766430B2 (en) * | 2000-07-06 | 2004-07-20 | Hitachi, Ltd. | Data reallocation among storage systems |
US7266716B2 (en) * | 2003-10-23 | 2007-09-04 | Hewlett-Packard Development Company, L.P. | Method and recovery of data using erasure coded data from stripe blocks |
US7827439B2 (en) * | 2007-09-28 | 2010-11-02 | Symantec Corporation | System and method of redundantly storing and retrieving data with cooperating storage devices |
US9015431B2 (en) * | 2009-10-29 | 2015-04-21 | Cleversafe, Inc. | Distributed storage revision rollbacks |
US8103903B2 (en) * | 2010-02-22 | 2012-01-24 | International Business Machines Corporation | Read-modify-write protocol for maintaining parity coherency in a write-back distributed redundancy data storage system |
US8583866B2 (en) * | 2010-02-22 | 2013-11-12 | International Business Machines Corporation | Full-stripe-write protocol for maintaining parity coherency in a write-back distributed redundancy data storage system |
US20120266044A1 (en) * | 2011-04-18 | 2012-10-18 | The Chinese University Of Hong Kong | Network-coding-based distributed file system |
KR101569428B1 (ko) * | 2013-08-09 | 2015-11-16 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 파일 처리 방법 및 저장 디바이스 |
US9471585B1 (en) * | 2013-12-20 | 2016-10-18 | Amazon Technologies, Inc. | Decentralized de-duplication techniques for largescale data streams |
JP6106901B2 (ja) * | 2013-12-31 | 2017-04-05 | ▲ホア▼▲ウェイ▼技術有限公司Huawei Technologies Co.,Ltd. | 分散ファイルストレージシステムにおけるデータ処理の方法およびデバイス |
CN106062721B (zh) * | 2014-12-31 | 2018-11-16 | 华为技术有限公司 | 一种将数据写入存储系统的方法和存储系统 |
US10540504B2 (en) * | 2015-05-12 | 2020-01-21 | Datrium, Inc. | Distributed data method for encrypting data |
CN107748702B (zh) * | 2015-06-04 | 2021-05-04 | 华为技术有限公司 | 一种数据恢复方法和装置 |
CN107844268B (zh) * | 2015-06-04 | 2021-09-14 | 华为技术有限公司 | 一种数据分发方法、数据存储方法、相关装置以及系统 |
CN105242879B (zh) * | 2015-09-30 | 2018-11-06 | 华为技术有限公司 | 一种数据存储方法以及协议服务器 |
-
2018
- 2018-12-22 CN CN201880003830.6A patent/CN112714910B/zh active Active
- 2018-12-22 EP EP18943795.7A patent/EP3889778B1/en active Active
- 2018-12-22 WO PCT/CN2018/122935 patent/WO2020124608A1/zh unknown
-
2021
- 2021-06-21 US US17/352,951 patent/US20210311654A1/en active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105612489A (zh) * | 2014-09-15 | 2016-05-25 | 华为技术有限公司 | 重复数据删除方法和存储阵列 |
CN108780386A (zh) * | 2017-12-20 | 2018-11-09 | 华为技术有限公司 | 一种数据存储的方法、装置和系统 |
Non-Patent Citations (1)
Title |
---|
瞿天善.Ceph存储系统纠删码覆盖写的设计与实现.《中国优秀硕士学位论文全文数据库信息科技辑》.2016, * |
Also Published As
Publication number | Publication date |
---|---|
EP3889778A4 (en) | 2021-12-29 |
CN112714910A (zh) | 2021-04-27 |
WO2020124608A1 (zh) | 2020-06-25 |
EP3889778B1 (en) | 2023-05-10 |
US20210311654A1 (en) | 2021-10-07 |
EP3889778A1 (en) | 2021-10-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9733848B2 (en) | Method and system for pooling, partitioning, and sharing network storage resources | |
CN110235098B (zh) | 存储系统访问方法及装置 | |
CN109144406B (zh) | 分布式存储系统中元数据存储方法、系统及存储介质 | |
WO2021017782A1 (zh) | 分布式存储系统访问方法、客户端及计算机程序产品 | |
US11709603B2 (en) | Multi-tier write allocation | |
US10552389B2 (en) | Object and sequence number management | |
CN110325958B (zh) | 分布式块存储系统中数据存储方法、装置及计算机可读存储介质 | |
US20210326207A1 (en) | Stripe reassembling method in storage system and stripe server | |
US11775194B2 (en) | Data storage method and apparatus in distributed storage system, and computer program product | |
CN110199270B (zh) | 存储系统中存储设备的管理方法及装置 | |
CN110199512B (zh) | 存储系统中存储设备的管理方法及装置 | |
CN112714910B (zh) | 分布式存储系统及计算机程序产品 | |
US11327895B1 (en) | Protocol for processing requests that assigns each request received by a node a sequence identifier, stores data written by the request in a cache page block, stores a descriptor for the request in a cache page descriptor, and returns a completion acknowledgement of the request | |
US9501290B1 (en) | Techniques for generating unique identifiers | |
US9778850B1 (en) | Techniques for zeroing non-user data areas on allocation | |
JP2021182309A (ja) | クラウドサーバ、ストレージシステム、及び計算機システム |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220301 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Applicant after: Huawei Cloud Computing Technology Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Applicant before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |