CN113326006B - 一种基于纠删码的分布式块存储系统 - Google Patents

一种基于纠删码的分布式块存储系统 Download PDF

Info

Publication number
CN113326006B
CN113326006B CN202110670284.5A CN202110670284A CN113326006B CN 113326006 B CN113326006 B CN 113326006B CN 202110670284 A CN202110670284 A CN 202110670284A CN 113326006 B CN113326006 B CN 113326006B
Authority
CN
China
Prior art keywords
data
erasure code
storage
read
write request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110670284.5A
Other languages
English (en)
Other versions
CN113326006A (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.)
Shanghai Phegda Technology Co ltd
SHANGHAI DRAGONNET TECHNOLOGY CO LTD
Original Assignee
Shanghai Phegda Technology Co ltd
SHANGHAI DRAGONNET TECHNOLOGY CO LTD
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Phegda Technology Co ltd, SHANGHAI DRAGONNET TECHNOLOGY CO LTD filed Critical Shanghai Phegda Technology Co ltd
Priority to CN202110670284.5A priority Critical patent/CN113326006B/zh
Publication of CN113326006A publication Critical patent/CN113326006A/zh
Application granted granted Critical
Publication of CN113326006B publication Critical patent/CN113326006B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种基于纠删码的分布式块存储系统,包括块访问客户端、元数据服务集群和存储服务器集群,其中,该块访问客户端接收上层应用请求,基于纠删码配置策略将所述上层应用请求转化为对后端存储对象的读写请求;该存储服务器集群包括多个存储服务节点,接收并响应所述读写请求;该元数据服务集群监视所有存储服务节点状态,形成集群状态;各所述存储服务节点采用三层分布式哈希算法逻辑进行数据分布。与现有技术相比,本发明不仅能提供不输于副本存储系统的吞吐量性能,在节点/磁盘故障、扩容等异常场景对前端应用的读写请求性能的影响很小。

Description

一种基于纠删码的分布式块存储系统
技术领域
本发明涉及一种分布式块存储系统,尤其是涉及一种基于纠删码的分布式块存储系统。
背景技术
分布式块存储系统中,一般采用多副本的存储方式,即同一份数据在不同故障域存储多份的方式,通过提高数据冗余度方法以解决通用硬件不可靠性带来的数据安全性,但同样存在存储空间利用率低的问题。例如,市场上分布式块存储普遍采用三副本策略存储数据,其空间利用率只有1/3。相比之下,纠删码技术在不降低冗余度的情况下,可以获得更高的存储空间利用率,例如采用4:2配置的纠删码存储系统,存储空间利用率为2/3,比之副本技术,空间利用率足足提高了一倍。虽然比之副本块存储系统,纠删码(Erasure Code,EC)存储系统读写延迟会相对较高,但在某些对延时相对不敏感,对存储吞吐量要求较高的场景,纠删码存储系统不仅可以提供不输于副本块存储系统的吞吐量,还可以提供较高的存储空间利用率,从而降低成本。
当前大部分分布式存储系统使用分布式一致性哈希算法或CRUSH伪随机分布算法进行数据分布,在发生故障时,均无法解决部分未产生故障的存储对象的分布位置发生变更的问题。而纠删码各数据分块之间是有序的,比之副本存储系统,这种变动,无疑会对前端应用的读写访问影响更大,大负载场景甚至可能导致整个存储系统不可用。而且,当前大部分纠删码存储系统也主要应用于对象存储领域,一般不支持块访问方式,且存在不支持覆盖写的问题。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种能够保证吞吐性能且对读写请求性能影响小的基于纠删码的分布式块存储系统。
本发明的目的可以通过以下技术方案来实现:
一种基于纠删码的分布式块存储系统,包括块访问客户端、元数据服务集群和存储服务器集群,其中,
该块访问客户端接收上层应用请求,基于纠删码配置策略将所述上层应用请求转化为对后端存储对象的读写请求;
该存储服务器集群包括多个存储服务节点,接收并响应所述读写请求;
该元数据服务集群监视所有存储服务节点状态,形成集群状态;
各所述存储服务节点采用三层分布式哈希算法逻辑进行数据分布,以故障域层、节点层和磁盘层构建分布式哈希,对存储对象的数据进行纠删码编码,生成校验数据,将存储对象的数据及校验数据写入不同故障域的多个数据块中,所述块访问客户端根据集群状态,将读写请求发送给存储对象的第一纠删码数据分块所在的存储服务节点进行处理。
进一步地,当所述上层应用请求为写请求时,所述块访问客户端接收写请求,基于所述纠删码配置策略判断该写请求是否纠删码条带对齐,若是,则直接发送至所述存储服务器集群,若否,则从所述存储服务器集群中读取数据使该写请求满足纠删码条带对齐要求后,再发送至所述存储服务器集群。
进一步地,当所述上层应用请求为写请求时,所述块访问客户端检查并行写请求是否存在写位置冲突,将存在冲突的写请求放入等待队列。
进一步地,所述存储服务节点包括数据路由单元、纠删码单元、集群状态代理、数据恢复单元和数据读写单元,其中,
该数据路由单元根据所述集群状态构建所述分布式哈希,接收并处理所述读写请求;
该纠删码单元处理数据读写及恢复数据时的纠删码编解码请求;
该集群状态代理用于与元数据服务集群通信并建立心跳,实时获取集群状态;
该数据恢复单元用于集群异常触发数据重构逻辑时进行数据恢复处理;
该数据读写单元向所述数据路由单元反馈对应的请求处理结果。
进一步地,所述读写请求包含逻辑存储对象ID、逻辑空间偏移及数据长度,所述数据路由单元基于逻辑存储对象ID,在故障域层和节点层的哈希环中寻找对应的纠删码数据分片及校验数据分片所在存储服务节点,将所述读写请求转发至各存储服务节点的数据读写单元;
数据读写单元采用纠删码数据分块的ID为参数,在磁盘层的哈希环中该纠删码数据分块所分布的磁盘,返回请求处理结果。
进一步地,若读写请求对应数据块所在的存储服务节点存在磁盘故障或者节点离线,对于读请求直接根据正常节点的条带数据调用纠删码单元编解码功能构建出读请求需要的数据块;对于写请求,则只写入无故障的数据块。
进一步地,所述集群异常包括有存储服务节点离线上线存储服务节点中有磁盘异常或者增加磁盘场景。
进一步地,所述数据恢复处理具体为:
基于所述集群状态生成需要恢复到本地的数据对象合集;
检查数据对象是否为Dirty,若是,则从其他故障域读取纠删码数据分块,调用纠删码单元的解码函数构建出本地的纠删码数据分块数据对象,若否,则直接从本地恢复。
进一步地,所述数据恢复处理过程中,当无法满足纠删码解码所需的纠删码数据分块数量时,结合集群状态执行回滚恢复模式。
进一步地,所述故障域层每个故障域的权重固定,所述节点层和磁盘层均按照存储容量配置权重比例。
进一步地,所述纠删码配置策略中,纠删码数据分片大小最小为512字节。
本发明基于改进的一致性哈希分布算法,实现分布式纠删码块存储系统。相较于其他纠删码存储系统实现,本发明不仅能提供不输于副本存储系统的吞吐量性能,在节点/磁盘故障、扩容等异常场景对前端应用的读写请求性能的影响很小。与现有技术相比,本发明具有以下有益效果:
1)纠删码条带分块通过vDomain、vNode、vDisk三层分布式哈希算法进行数据分布。所有添加故障域采用固定的权重比构建第一层的vDomain的一致性哈希环,只要不存在故障域级集群事件,故障域内故障仅影响本故障域内的纠删码数据/校验分块,其他分块分布位置不会变动。对于M:K的纠删码配置策略,只要发生故障的故障域<K,前端的写请求性能均不受故障影响,读请求仅需增加一次纠删码解码操作就能获得正确的数据。故障域内的所有存储节点根据节点容量权重构建第二层的vNode一致性哈希环,同时引入节点OFFLINE状态,节点离线后仅标记节点为OFFLINE,不从vNode一致性哈希环中将节点移除,存储服务节点重新上线后清除OFFLINE状态,从而保证故障域单节点配置场景时纠删码数据/校验分片分布位置不变动。
2)配置纠删码策略时可以设置最小512字节的纠删码数据分片大小,将写条带补齐造成的写惩罚影响降到最低。例如,文件系统IO通常为4K大小对齐,数据库系统IO通常为8K,设置合理的条带大小几乎可以避免条带不对齐带来的写惩罚。
3)本发明数据路由单元中采用的数据分布实现方式,使得本发明的分布式纠删码存储系统在配置不满足K+M的情况下,仍可以先行部署,即支持不满足纠删码数据块/校验块配比的部署方式。例如对于4+2的纠删码配置策略,服务器级冗余方式下,至少需要6台存储服务器节点才能完成存储池搭建,本发明支持只有3台存储服务器节点下完成4+2的纠删码存储池搭建,后续可以通过增加存储服务器节点方式扩容到6个及6个以上的存储服务器节点,而无需重新生成校验数据块。
4)本发明采用优化的纠删码数据恢复逻辑,服务器级节点故障一般均能再短时间内恢复,可以大量减少没必要的纠删码数据重构,大量缩短存储池从降级状态恢复到健康状态所需要的时间。
附图说明
图1为本发明的结构示意图;
图2为纠删码数据分布逻辑示意图;
图3为本发明采用的三层分布式哈希数据分布算法原理示意图;
图4为写IO处理方式流程示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
如图1所示,本实施例提供一种基于纠删码的分布式块存储系统,包括块访问客户端1、元数据服务集群2和存储服务器集群3,存储服务器集群3包括多个存储服务节点31。
块访问客户端1为Linux内核模块,包括块设备接口单元和存储链路传输模块。块设备接口用于创建Linux块设备,提供IO访问接口,存储链路传输模块用于与存储服务节点建立连接,支持RDMA/TCP传输协议。
块访问客户端1接收上层应用读写请求,将请求转化为对后端存储系统的存储对象的读写请求。如果上层应用请求为写请求,根据后端对应存储池纠删码配置信息,检查写请求是否条带对齐,不对齐则从后端读取数据,使之满足纠删码条带对齐要求;进一步检查并行写请求是否存在写位置冲突,将存在冲突的写请求放入等待队列,等待前序写请求完成后再行处理。
块访问客户端1实时监控后端的存储服务器集群3的状态,并根据特有的分布式哈希分布算法,将读写请求发送给存储对象的第一纠删码数据分块所在的存储服务节点处理。
图2为分布式纠删码的数据对象分布逻辑。以纠删码存储池4+2的配置策略为例,若底层数据对象大小设置为1M,则虚拟存储卷的4M存储空间由底层六个数据对象组成。其中P1、P2两个为纠删码校验数据分片,其他四个D1~D4为纠删码数据分片,每个数据对象有唯一编号。块访问客户端接收到应用的读写请求时,根据请求的offset及length,根据卷配置和纠删码配置策略,转化为对逻辑卷的某个4M的逻辑存储对象的读写请求。
元数据服务集群2为分布式集群管理服务,监视所有存储服务器状态及保存存储集群配置信息。
各存储服务节点31包括数据路由单元311、纠删码单元312、集群状态代理313、数据恢复单元314和数据读写单元315。纠删码单元312处理数据读写及恢复数据时的纠删码编解码请求,数据恢复单元314用于当有存储服务节点离线上线或者存储服务节点中有磁盘异常或者增加磁盘场景时恢复纠删码数据及校验块数据;集群状态代理313用于与元数据服务集群2通信并建立心跳,及时获取集群状态更新,数据路由单元311根据集群状态构建分布式哈希。
存储服务节点的数据路由单元31采用三层分布式哈希(DHT)算法逻辑进行数据分布,分别为故障域层vDomain、节点层vNode和磁盘层vDisk。故障域层每个故障域的权重固定,节点层以及磁盘层均按照存储容量配置权重比例。数据块分布在不同故障域,磁盘及节点故障只会导致数据在本故障域内恢复,不会导致无异常存储节点的数据块重新分布,从而保证故障恢复阶段整个纠删码存储系统的读写性能不会发生较大波动。
所有添加故障域采用固定的权重比构建第一层的vDomain的一致性哈希环,只要不存在故障域级集群事件,故障域内故障仅影响本故障域内的纠删码数据/校验分块,其他分块分布位置不会变动。对于M:K的纠删码配置策略,只要发生故障的故障域<K,前端的写请求性能均不受故障影响,读请求仅需增加一次纠删码解码操作就能获得正确的数据。
故障域内的所有存储节点根据节点容量权重构建第二层的vNode一致性哈希环,同时引入节点OFFLINE状态,节点离线后仅标记节点为OFFLINE,不从vNode一致性哈希环中将节点移除,存储服务节点重新上线后清除OFFLINE状态,从而保证故障域单节点配置场景时纠删码数据/校验分片分布位置不变动,节点状态由集群状态代理负责。
存储节点内所有存储磁盘根据磁盘容量权重构建节点内磁盘分布的第三层vDisk一致性哈希环。
图3为三层分布式哈希数据分布算法原理示意图。存储服务节点的数据路由单元接收到的前端块访问客户端的读写请求,该读写请求包含OID(逻辑存储对象ID)、offset(逻辑空间偏移)及length(数据长度)。数据路由单元使用OID作为输入参数,在vDomain及vNode哈希环中找到纠删码数据分片D1~D4,校验数据分片P1~P2所在的存储服务节点,将请求转化为对纠删码数据分块的读写请求并转发给对应的存储服务节点的数据读写单元处理。数据读写单元再采用纠删码的数据分块的ID为参数,在vOSD哈希环中找到数据分块所分布的磁盘,最终转化为对对应的存储对象的读写请求。
数据路由单元31根据三层一致性哈希环状态,处理块访问客户端1的读写请求,处理逻辑如下:
a)根据请求的存储对象的ID在vDomain分布式哈希环中找到纠删码第一数据分块所在的故障域,再在对应故障域的vNode分布式哈希环中找到具体的第一数据分块所在的存储服务节点;按照顺时针方式在vDomain中找到区别于第一数据分块故障域的第二数据分块所在的故障域,同样在vNode哈希环中找到第二数据分块所在的存储服务节点;直到确定所有纠删码K+M数据分块及校验数据分块的所有分布存储服务节点,最后M个分布的存储服务节点存储校验数据分块。
b)对于写请求,调用纠删码单元的编码函数生成对应的校验数据块,构建K+M个写请求发送到本地或其他存储服务节点的数据读写单元;对于读请求,无需读取校验数据,直接构建K个读请求发送到本地或其他存储服务节点的数据读写单元。
c)数据路由单元收到后端数据读写单元返回处理结果,或者收到集群状态代理的集群状态变更,更新三层哈希环状态,重试本次读写请求。
步骤a)中,如果配置部署的故障域数nr_domains<K+M,不同的纠删码数据/校验数据分片可能位于同一个存储服务节点,算法保证前面n<nr_domains的数据分块分布在不同的故障域,nr_domains<n<2*nr_domains的数据分块也分布在不同的故障域。由此,该数据分布实现使本发明的分布式纠删码存储系统在配置不满足K+M的情况下,仍可以先行部署。
步骤b)中,如果纠删码数据/校验数据分块的所有K+M个分布的存储服务节点中状态为OFFLINE的存储服务节点个数<=M,数据路由单元只需完成K个数据/校验数据分块的写操作即可返回块访问客户端写请求成功,如果存储对象的数据分块位于OFFLINE的存储服务节点,则需读取K+M份数据分片数据,再调用纠删码单元解码函数构建出OFFLINE的存储服务节点所存储的数据分片,再经过数据整合后再返回给块访问客户端完整的数据。如果读请求需要读取的数据大小不足条带数据大小,仅需读取<K个数据分片的数据。
如果读写请求对应条带块所在的存储节点存在磁盘故障或者节点离线,读请求直接根据正常节点的条带数据调用纠删码单元的编解码功能构建出读请求需要的数据块返回客户端;对于写请求,则对故障磁盘/节点对应的条带块,无需进行纠删码编码,只需写入的无故障的条带块,无需等待故障条带块恢复再写入,从而降低故障对前端读写请求的影响。
本存储系统采用了优化的纠删码数据恢复逻辑。当集群状态代理监测到集群状态变迁,集群从健康状态变为数据降级状态,存储池启动Dirty存储对象增量修改记录。节点离线上线场景下,数据恢复单元314恢复条带块时,优先检查对应条带块是否Dirty,Clean的存储对象(条带块)从本地直接恢复,无需跨节点读取数据。Dirty的条带块或其他场景,则从其他故障域读取条带块,调用纠删码单元的编解码功能恢复本地数据。服务器级节点故障一般均能再短时间内恢复,该机制可以大量减少没必要的纠删码数据重构,大量缩短存储池从降级状态恢复到健康状态所需要的时间。
图4为纠删码数据恢复单元处理方式流程示意图。当集群异常触发数据重构逻辑时,每个存储服务节点会根据集群元数据生成需要恢复到本节点的数据对象合集,恢复时,首先检查数据对象(OBJ)是否为Dirty,若否,即集群异常后未覆盖更新的存储对象满足增量恢复逻辑,直接从本地恢复(Recover from local);否则读取其他纠删码数据分块,调用纠删码单元解码函数构建出本地的纠删码数据分块数据对象(EC Rebuild Recover)。当无法满足纠删码解码所需的纠删码数据分块数量时,结合集群状态判断是否可执行从历史数据恢复的回滚恢复模式(RollbackRecover)。
本存储系统在节点扩容时,无需改变数据对象的条带分布,也无需重新计算校验数据块,仅需将对应的纠删码数据分块或校验块迁移到新扩容的存储节点上。
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。

Claims (8)

1.一种基于纠删码的分布式块存储系统,其特征在于,包括块访问客户端、元数据服务集群和存储服务器集群,其中,
该块访问客户端接收上层应用请求,基于纠删码配置策略将所述上层应用请求转化为对后端存储对象的读写请求;
该存储服务器集群包括多个存储服务节点,接收并响应所述读写请求;
该元数据服务集群监视所有存储服务节点状态,形成集群状态;
各所述存储服务节点采用三层分布式哈希算法逻辑进行数据分布,以故障域层、节点层和磁盘层构建分布式哈希,对存储对象的数据进行纠删码编码,生成校验数据,将存储对象的数据及校验数据写入不同故障域的多个数据块中,所述块访问客户端根据集群状态,将读写请求发送给存储对象的第一纠删码数据分块所在的存储服务节点进行处理;
当所述上层应用请求为写请求时,所述块访问客户端接收写请求,基于所述纠删码配置策略判断该写请求是否纠删码条带对齐,若是,则直接发送至所述存储服务器集群,若否,则从所述存储服务器集群中读取数据使该写请求满足纠删码条带对齐要求后,再发送至所述存储服务器集群;
当所述上层应用请求为写请求时,所述块访问客户端检查并行写请求是否存在写位置冲突,将存在冲突的写请求放入等待队列。
2.根据权利要求1所述的基于纠删码的分布式块存储系统,其特征在于,所述存储服务节点包括数据路由单元、纠删码单元、集群状态代理、数据恢复单元和数据读写单元,其中,
该数据路由单元根据所述集群状态构建所述分布式哈希,接收并处理所述读写请求;
该纠删码单元处理数据读写及恢复数据时的纠删码编解码请求;
该集群状态代理用于与元数据服务集群通信并建立心跳,实时获取集群状态;
该数据恢复单元用于集群异常触发数据重构逻辑时进行数据恢复处理;
该数据读写单元向所述数据路由单元反馈对应的请求处理结果。
3.根据权利要求2所述的基于纠删码的分布式块存储系统,其特征在于,所述读写请求包含逻辑存储对象ID、逻辑空间偏移及数据长度,所述数据路由单元基于逻辑存储对象ID,在故障域层和节点层的哈希环中寻找对应的纠删码数据分片及校验数据分片所在存储服务节点,将所述读写请求转发至各存储服务节点的数据读写单元;
数据读写单元采用纠删码数据分块的ID为参数,在磁盘层的哈希环中该纠删码数据分块所分布的磁盘,返回请求处理结果。
4.根据权利要求3所述的基于纠删码的分布式块存储系统,其特征在于,若读写请求对应数据块所在的存储服务节点存在磁盘故障或者节点离线,对于读请求直接根据正常节点的条带数据调用纠删码单元编解码功能构建出读请求需要的数据块;对于写请求,则只写入无故障的数据块。
5.根据权利要求2所述的基于纠删码的分布式块存储系统,其特征在于,所述数据恢复处理具体为:
基于所述集群状态生成需要恢复到本地的数据对象合集;
检查数据对象是否为Dirty,若是,则从其他故障域读取纠删码数据分块,调用纠删码单元的解码函数构建出本地的纠删码数据分块数据对象,若否,则直接从本地恢复。
6.根据权利要求5所述的基于纠删码的分布式块存储系统,其特征在于,所述数据恢复处理过程中,当无法满足纠删码解码所需的纠删码数据分块数量时,结合集群状态执行回滚恢复模式。
7.根据权利要求1所述的基于纠删码的分布式块存储系统,其特征在于,所述故障域层每个故障域的权重固定,所述节点层和磁盘层均按照存储容量配置权重比例。
8.根据权利要求1所述的基于纠删码的分布式块存储系统,其特征在于,所述纠删码配置策略中,纠删码数据分片大小最小为512字节。
CN202110670284.5A 2021-06-17 2021-06-17 一种基于纠删码的分布式块存储系统 Active CN113326006B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110670284.5A CN113326006B (zh) 2021-06-17 2021-06-17 一种基于纠删码的分布式块存储系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110670284.5A CN113326006B (zh) 2021-06-17 2021-06-17 一种基于纠删码的分布式块存储系统

Publications (2)

Publication Number Publication Date
CN113326006A CN113326006A (zh) 2021-08-31
CN113326006B true CN113326006B (zh) 2023-09-29

Family

ID=77423417

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110670284.5A Active CN113326006B (zh) 2021-06-17 2021-06-17 一种基于纠删码的分布式块存储系统

Country Status (1)

Country Link
CN (1) CN113326006B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115098467A (zh) * 2022-07-18 2022-09-23 重庆紫光华山智安科技有限公司 数据存储方法、装置、存储节点及存储介质
CN115878046B (zh) * 2023-01-09 2023-05-12 苏州浪潮智能科技有限公司 数据处理方法、系统、装置、存储介质及电子设备
CN117240873B (zh) * 2023-11-08 2024-03-29 阿里云计算有限公司 云存储系统、数据读写方法、设备及存储介质
CN117851132B (zh) * 2024-03-07 2024-05-07 四川省华存智谷科技有限责任公司 一种分布式对象存储的数据恢复优化方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103561057A (zh) * 2013-10-15 2014-02-05 深圳清华大学研究院 基于分布式哈希表和纠删码的数据存储方法
CN105630423A (zh) * 2015-12-25 2016-06-01 华中科技大学 一种基于数据缓存的纠删码集群存储扩容方法
CN106909470A (zh) * 2017-01-20 2017-06-30 深圳市中博科创信息技术有限公司 基于纠删码的分布式文件系统存储方法及装置
CN107094186A (zh) * 2017-06-15 2017-08-25 深圳市云舒网络技术有限公司 一种分布式存储系统的纠删码优化方法
CN107844268A (zh) * 2015-06-04 2018-03-27 华为技术有限公司 一种数据分发方法、数据存储方法、相关装置以及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8495417B2 (en) * 2009-01-09 2013-07-23 Netapp, Inc. System and method for redundancy-protected aggregates

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103561057A (zh) * 2013-10-15 2014-02-05 深圳清华大学研究院 基于分布式哈希表和纠删码的数据存储方法
CN107844268A (zh) * 2015-06-04 2018-03-27 华为技术有限公司 一种数据分发方法、数据存储方法、相关装置以及系统
CN105630423A (zh) * 2015-12-25 2016-06-01 华中科技大学 一种基于数据缓存的纠删码集群存储扩容方法
CN106909470A (zh) * 2017-01-20 2017-06-30 深圳市中博科创信息技术有限公司 基于纠删码的分布式文件系统存储方法及装置
CN107094186A (zh) * 2017-06-15 2017-08-25 深圳市云舒网络技术有限公司 一种分布式存储系统的纠删码优化方法

Also Published As

Publication number Publication date
CN113326006A (zh) 2021-08-31

Similar Documents

Publication Publication Date Title
CN113326006B (zh) 一种基于纠删码的分布式块存储系统
US11307776B2 (en) Method for accessing distributed storage system, related apparatus, and related system
CN106407040B (zh) 一种远程数据复制方法及系统
US6912669B2 (en) Method and apparatus for maintaining cache coherency in a storage system
US20190196728A1 (en) Distributed storage system-based data processing method and storage device
CN106776130B (zh) 一种日志恢复方法、存储装置和存储节点
US6970987B1 (en) Method for storing data in a geographically-diverse data-storing system providing cross-site redundancy
US5845061A (en) Redundant client server system
JP2888401B2 (ja) 冗長ディスクドライブアレイに対する同期方法
US5423037A (en) Continuously available database server having multiple groups of nodes, each group maintaining a database copy with fragments stored on multiple nodes
US7418620B1 (en) Fault tolerant distributed storage method and controller using (N,K) algorithms
US6553389B1 (en) Resource availability determination mechanism for distributed data storage system
US5907849A (en) Method and system for recovery in a partitioned shared nothing database system using virtual share disks
JPH0731582B2 (ja) パリティ保護データを回復するための方法および装置
US20060080574A1 (en) Redundant data storage reconfiguration
US8626722B2 (en) Consolidating session information for a cluster of sessions in a coupled session environment
JPH0683717A (ja) 大型耐故障不揮発性複数ポート・メモリー
JP2004536404A (ja) Raid装置からのデータ伝送
JPH03505643A (ja) 複数の記憶域クラス用のファイルシステム
CN106227464B (zh) 一种双层冗余存储系统及其数据写入、读取及恢复方法
CN110427156B (zh) 一种基于分片的mbr的并行读方法
CN114415976A (zh) 一种分布式数据存储系统与方法
CN108205573B (zh) 一种数据分布式存储方法及系统
CN110121694B (zh) 一种日志管理方法、服务器和数据库系统
CN116204137B (zh) 基于dpu的分布式存储系统、控制方法、装置及设备

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