CN116166196A - 一种分布式存储系统中存储池扩缩容恢复方法及装置 - Google Patents

一种分布式存储系统中存储池扩缩容恢复方法及装置 Download PDF

Info

Publication number
CN116166196A
CN116166196A CN202310173041.XA CN202310173041A CN116166196A CN 116166196 A CN116166196 A CN 116166196A CN 202310173041 A CN202310173041 A CN 202310173041A CN 116166196 A CN116166196 A CN 116166196A
Authority
CN
China
Prior art keywords
storage
data
expansion
contraction
hash ring
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
Application number
CN202310173041.XA
Other languages
English (en)
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 CN202310173041.XA priority Critical patent/CN116166196A/zh
Publication of CN116166196A publication Critical patent/CN116166196A/zh
Pending legal-status Critical Current

Links

Images

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/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • 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]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种分布式存储系统中存储池扩缩容恢复方法及装置,所述方法包括以下步骤:获取扩缩容请求,将存储池设置为维护模式,判断当前存储池是否满足允许扩缩容条件,若是,则执行扩缩容操作,若否,则反馈操作失败信号;完成所述扩缩容操作后,存储池内的所有存储节点基于更新后的集群视图,采用两层一致性静态哈希环分布算法,完成数据重平衡。与现有技术相比,本发明扩缩容过程中始终保持可用数据副本/分片不减少,从而实现存储池不降级,数据迁移过程对前端读写请求的影响最小化。

Description

一种分布式存储系统中存储池扩缩容恢复方法及装置
技术领域
本发明涉及计算机分布式块存储技术领域,尤其是涉及一种分布式存储系统中存储池扩缩容恢复方法及装置。
背景技术
近年来,分布式存储技术得到广泛应用,而分布式存储的核心为无中心架构,通过算法确定数据的存储位置,无需集中式的元数据管理,实现无限可扩展性。在通过算法确定数据分布位置的分布式存储中,存储集群节点的离线/上线,磁盘故障/更换,通过算法计算的存储位置大概率会发生大量变更,虽然可以通过算法比如一致性哈希算法将变动范围缩小,但这只能应对诸如磁盘故障/变更部分场景,在扩缩容场景,同时扩多个容错域节点,存储位置还是不可避免的发生大面积改动,对于前端应用的性能影响是巨大的,有时甚至是不可接受的。尤其对于纠删码分布式存储,各个数据分片是有序的,次序不能打乱,单个存储故障域节点的扩容行为,有可能导致所有数据分片的分布位置都发生改变。有些存储方案为了避免该问题,仅仅只支持以存储池的方式扩容,禁止存储池内的扩容行为;或者仅支持在存储池单次只扩容一个容错域,不同容错域间滚动扩容,这种方案则会导致可用副本减少,存储池降级,有一定的数据丢失风险,而且要求一次扩容升级必须扩多个容错域存储节点,否则会导致存储分布不均衡,可用容量未见增长。一次扩容多个存储节点也有可能超出客户预算规划。
发明内容
本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种分布式存储系统中存储池扩缩容恢复方法及装置,解决分布式存储容错域级扩缩容过程中存储性能下降以及存储池降级的问题。
本发明的目的可以通过以下技术方案来实现:
一种分布式存储系统中存储池扩缩容恢复方法,包括以下步骤:
获取扩缩容请求,将存储池设置为维护模式,判断当前存储池是否满足允许扩缩容条件,若是,则执行扩缩容操作,若否,则反馈操作失败信号;
完成所述扩缩容操作后,存储池内的所有存储节点基于更新后的集群视图,采用两层一致性静态哈希环分布算法,完成数据重平衡。
进一步地,所述两层一致性静态哈希环分布算法中,数据迁移前的存储集群数据分布哈希环记为第一数据分布哈希环,扩缩容后的最新数据分布哈希环记为第二数据分布哈希环,各存储节点执行所述数据重平衡的过程包括以下步骤:
生成当前存储节点的待恢复存储对象列表,该待恢复存储对象列表中的所有存储对象以当前存储节点为主存储节点;
采用至少一个并发的恢复工作线程,根据所述第一数据分布哈希环和第二数据分布哈希环中数据分布位置,逐个对所述待恢复存储对象列表中的存储对象进行数据恢复;
当前节点完成数据恢复后将状态同步至所有存储节点;
在获取到其他存储节点均完成数据恢复的信号后,从本节点存储对象列表过滤出第二数据分布哈希环分布位置不在本存储节点的存储对象列表,并清除相关存储对象。
进一步地,当前存储节点作为请求方存储节点,发送获取迁移存储对象列表请求到其他所有存储节点,收到所述获取迁移存储对象列表请求的存储节点,根据当前集群视图,采用哈希算法,在本地所有存储对象列表中筛选出所有主存储节点为请求方存储节点的存储对象列表,并将结果返回给请求方存储节点,请求方存储节点根据返回结果生成待恢复存储对象列表。
进一步地,所述恢复工作线程的并发个数根据当前存储集群负载状态及数据重平衡流控配置动态或静态调整。
进一步地,根据所述第一数据分布哈希环和第二数据分布哈希环中数据分布位置,标记需要恢复的数据副本/分片,从第一数据分布哈希环分布位置对应的存储节点中读取可用的数据副本/分片进行恢复。
进一步地,所述数据重平衡的过程中若发生二次故障,则变更集群视图后重新进行数据重平衡,且重新进行数据重平衡时,以所述第二数据分布哈希环为更高优先级,依次从所述第二数据分布哈希环和第一数据分布哈希环中读取对应的可用数据副本/分片进行恢复。
进一步地,在所述数据重平衡过程中,若接收到对存储对象的读写请求,则根据该存储对象的状态执行相应读写操作:
若该存储对象未恢复,则采用所述第一数据分布哈希环响应读写请求,且若该读写请求为写请求,则同时对该存储对象添加锁保护,直至写请求完成;
若该存储对象处于恢复中,则判断读写请求是否为写请求,若是,则响应重试指令,若否,则采用所述第一数据分布哈希环响应;
若该存储对象已恢复,若是,则采用所述第一数据分布哈希环响应读写请求。
进一步地,判断接收到所述读写请求时,是否存在二次故障恢复场景,若是则以所述第二数据分布哈希环为更高优先级,依次采用第二数据分布哈希环和/或第一数据分布哈希环响应读写请求。
进一步地,判断接收到所述读写请求时,是否处于所述待恢复存储对象列表生成阶段且读写请求为写请求,若是,则将该写请求对应的存储对象中,主存储节点为本地存储节点的,直接加入待恢复存储对象列表中。
本发明还提供一种分布式存储系统中存储池扩缩容恢复装置,包括一个或多个处理器、存储器和被存储在存储器中的一个或多个程序,所述一个或多个程序包括用于执行如上所述分布式存储系统中存储池扩缩容恢复方法的指令。
与现有技术相比,本发明具有以下有益效果:
1、本发明扩缩容过程采用双数据分布哈希环服务前端业务请求,支持扩缩容过程中不降低可用数据副本数,存储池不降级的同时,避免了扩缩容过程中因为数据分布位置大量改动导致的前端应用性能大幅下降问题,不会导致数据副本/分片减少,扩缩容过程中的数据可用性得到保证。
2、本发明的扩缩容过程中始终保持可用数据副本/分片不减少,从而实现存储池不降级,数据迁移过程对前端读写请求的影响最小化。
3、在多存储节点扩缩容场景,无需采用一个节点扩缩容完成后扩缩容下一个存储节点的滚动扩缩容模式,本发明能够支持一次性扩缩容多个故障域存储节点,从而达到降低数据迁移总体时间,降低运维难度及数据丢失的风险。
4、存储节点具有离线状态,在存储系统扩容缩容过程中,离线节点不从哈希分布环上移除,存储节点级离线故障不会导致数据分布位置产生二次变更,磁盘级故障只影响单个容错域内单个存储节点上的数据副本/分片,其分布位置仅在存储节点内部发生变动,其他数据副本/数据分片分布位置不发生变更,有效避免扩缩容过程中二次故障可能造成的数据分布再变动进而导致的无可用数据副本/分片。
附图说明
图1为本发明的扩容缩容操作流程示意图;
图2为本发明的存储节点扩缩容过程数据重平衡状态转换示意图;
图3为本发明的副本存储池存储节点扩缩容过程中读写处理逻辑示意图。
具体实施方式
下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
实施例1
本实施例提供一种分布式存储系统中存储池扩缩容恢复方法,包括以下步骤:获取扩缩容请求(新存储节点上线或存储节点缩容事件),将存储池设置为维护模式,判断当前存储池是否满足允许扩缩容条件,若是,则执行扩缩容操作,若否,则反馈操作失败信号;完成所述扩缩容操作后,存储池内的所有存储节点基于更新后的集群视图,采用两层一致性静态哈希环分布算法,完成数据重平衡。
上述方法采用两层一致性静态哈希环分布算法,数据迁移前的存储集群数据分布哈希环记为第一数据分布哈希环,扩缩容后的最新数据分布哈希环记为第二数据分布哈希环。存储池中的存储节点负责响应前端业务对存储对象的读写请求,每个存储对象在当前集群视图中根据哈希算法产生主存储节点和备存储节点,存储对象的主存储节点负责响应读写请求以及存储对象的数据迁移及恢复工作,如果收到读写请求的存储节点非该存储对象的主存储节点,则将读写请求转发给对应的存储节点执行。如果存储对象的主存储节点故障,在集群视图更新后,备存储节点提升为主存储节点,响应存储对象的读写请求。
如图1所示,本实施例的扩缩容操作流程包括:
执行扩缩容操作前,需先将存储池设置为维护模式,维护模式存储池恢复将暂停,数据分布不变更。每次扩缩容操作均需进行前置检查,如果存储池处于降级状态,或者扩缩容操作将导致存储池可用副本数不满足配置要求等情况视为不允许操作,拒绝执行扩缩容。对于扩容操作,每次仅将一个扩容存储节点上线加入存储池,即先将一个扩容存储节点上线加入存储池,存储池状态更新后,再次将第二个扩容存储节点上线加入存储池,相同操作直至所有待扩容存储节点加入存储池;对于缩容操作,每次仅标记一个缩容节点标记并更新,即将一个缩容节点标记为Offlining状态,存储池状态更新后,再次标记下一个待缩容存储节点Offlining状态,相同操作直至所有待缩容存储节点完成状态更新。扩缩容操作完成后退出维护模式,所有存储节点开始执行扩缩容数据重平衡,此时不再允许再次执行扩缩容操作,必须等待数据重平衡完成,存储池恢复状态重新变更为Healthy状态后操作。所有存储节点完成数据重平衡后,对缩容节点执行离线操作,正式将缩容节点从存储池视图(集群视图)中移除,完成整个扩缩容处理流程。
本实施例的存储节点引入离线状态,在存储系统扩容缩容过程中,离线节点不从哈希分布环上移除,存储节点级离线故障不会导致数据分布位置产生二次变更。同时,磁盘级故障只影响单个容错域内单个存储节点上的数据副本/分片,其分布位置仅在存储节点内部发生变动,其他数据副本/数据分片分布位置不发生变更,在算法层避免扩缩容过程中二次故障可能造成的数据分布再变动进而导致的无可用数据副本/分片。
在完成扩缩容操作(新存储节点上线或存储节点缩容事件)后,存储池中的所有存储节点进入静态扩缩容数据重平衡模式,所有存储节点并行执行数据迁移工作。各存储节点执行所述数据重平衡的具体步骤包括:
101)生成当前存储节点的待恢复存储对象列表,该待恢复存储对象列表中的所有存储对象以当前存储节点为主存储节点。
当前存储节点作为请求方存储节点,发送获取迁移存储对象列表请求到其他所有存储节点,收到所述获取迁移存储对象列表请求的存储节点,根据当前集群视图,采用哈希算法,在本地所有存储对象列表中筛选出所有主存储节点为请求方存储节点的存储对象列表,并将结果返回给请求方存储节点,请求方存储节点根据返回结果生成待恢复存储对象列表。
在该步骤中,存储节点的恢复主线程设置存储节点恢复状态为Preparing状态,待恢复存储对象列表按照存储对象ID排序,所待恢复有存储对象初始状态为Undone状态。
102)恢复主线程退出Preparing恢复状态,进入数据重平衡阶段,切换状态为Rebalancing恢复状态,在该状态下,恢复主线程从待恢复存储对象列表中设置存储对象状态为Processing状态,启动多个恢复工作线程,根据所述第一数据分布哈希环和第二数据分布哈希环中数据分布位置,逐个对所述待恢复存储对象列表中的存储对象进行数据恢复,逐个对存储对象将部分副本/分片数据从扩缩容前分布位置迁移到新扩容节点或新的分布位置。
恢复工作线程的并发个数根据当前存储集群负载状态及数据重平衡流控配置动态或静态调整。当采用动态配置时,存储节点根据前端读写请求的业务压力动态调整数据扩缩容迁移速率,降低数据迁移数据流对前端读写请求的性能影响,当采用静态配置时,以固定速率亦或以最快速度最短时间完成数据扩缩容迁移。
恢复工作线程计算存储对象在第一数据分布哈希环和第二数据分布哈希环的数据分布位置。如果存储对象在第一及第二数据分布哈希环上的分布位置未变更,则该存储对象无需进行数据迁移;只有部分数据副本/分片分布位置发生变更,则仅需迁移部分位置发生变更的副本/分片。
恢复工作线程从第一数据分布哈希环分布位置存储节点读取可用的数据副本/分片,副本策略的存储对象直接复制恢复到第二数据分布哈希环分布存储节点,对配置为N+M(N个数据分片,M个校验分片)纠删码EC策略的存储对象则读取至少N个数据分片,EC编码生成对应的数据/校验分片,依次恢复到第二数据分布哈希换分布的存储节点。
如果扩缩容过程中发生节点级或磁盘级二次故障,放弃本地恢复任务,重新构建待迁移存储对象列表,重新执行数据迁移任务,扩缩容过程能容忍的容错域故障数与迁移前存储池状态一致。在二次故障的恢复场景,恢复线程不管分布位置是否发生改变,首先检查存储对象在第二数据分布哈希环上的分布位置的数据副本/分片是否存在,不存在则标记对应数据副本/分片需要恢复,存在则优先从第二数据分布哈希环读取可用数据副本/分片进行恢复。
若发生所有存储节点均发送故障的奔溃后恢复场景,恢复线程无法获得可用的数据副本或者足够的数据分片,则执行回滚恢复逻辑,从存储对象的历史版本中恢复,如果仍然未能恢复,则标记为恢复失败,对应存储对象的读写请求返回EIO处理。
恢复工作线程恢复完成通知恢复主线程,恢复主线程标记相应存储对象状态为Done状态,继续恢复下一个存储对象。
103)恢复主线程完成所有存储对象恢复工作后,标记节点恢复状态为Pre_done状态,并将状态同步到所有存储节点,等待其他存储节点完成数据恢复。
104)当所有存储节点均完成了数据迁移工作后,存储节点检查本节点所有存储对象,对所有属于第一数据分布哈希环分布位置但不属于第二数据分布哈希换分布位置上的数据副本/分片执行删除操作。
如果在上述步骤中发生二次故障,恢复主线程放弃本次数据重平衡流程,变更存储集群状态后,再次按照上述步骤流程重新执行恢复流程。
如图2所示,本实施例的存储节点扩缩容数据重平衡流程具体包括:
集群视图更新后,恢复主线程将存储节点置为Preparing恢复状态,发送请求到集群所有存储节点,构建待恢复存储对象列表,完成后存储节点进入Rebalancing恢复状态,所有数据对象均迁移完成后,恢复主线程完成本存储节点数据迁移工作;本地存储节点进入Pre_done恢复状态,在该状态,恢复主线程通知所有存储节点本节点恢复状态,并等待所有存储节点恢复完成事件;所有存储节点完成数据迁移后,清除不存在于第二数据分布哈希环上的旧数据副本/分片数据,存储池完成数据迁移。Preparing及Rebalancing恢复状态中如果发生二次故障,本地恢复流程取消,重新开始恢复流程。
本实施例中,扩缩容恢复过程采用双数据分布哈希环服务前端业务请求,存储池不降级,不会导致数据副本/分片减少,扩缩容过程中的数据可用性得到保证。具体地,在数据重平衡过程中,若接收到对存储对象的读写请求,则根据该存储对象的状态执行相应读写操作:若该存储对象未恢复,则采用所述第一数据分布哈希环响应读写请求,且若该读写请求为写请求,则同时对该存储对象添加锁保护,直至写请求完成;若该存储对象处于恢复中,则判断读写请求是否为写请求,若是,则响应重试指令,若否,则采用所述第一数据分布哈希环响应;若该存储对象已恢复,若是,则采用所述第一数据分布哈希环响应读写请求。恢复线程必须等待存储对象解锁后才能执行对该存储对象的数据迁移恢复逻辑。
若在扩缩容过程存在二次故障的恢复场景中接收到读写请求,则优先采用第二数据分布哈希环响应读写请求,当第二数据分布哈希环无法找到可用的数据副本或足够的数据分片,则采用第一数据分布哈希环重试读写请求。存储节点恢复状态处于构建待迁移存储对象列表阶段时,对写请求对应的存储对象其主节点为本地存储节点的,直接将对应的存储对象加入待迁移存储对象列表,避免出现新创建的存储对象创建在第二数据分布哈希环,处理在第一数据分布哈希环,引发IO报错。
存储节点执行扩缩容存储对象迁移过程中处理读写请求逻辑具体如下:
201)存储节点恢复状态为Preparing状态,写请求直接将对应的存储对象加入待恢复存储对象列表,对该存储对象增加锁保护,采用第一数据分布哈希环数据副本/分片处理读写请求,写请求完成后,释放锁保护,恢复线程等待存储对象锁引用技术归零后执行恢复操作。
202)存储节点恢复状态为Rebalancing状态,查询读写请求对应存储对象在待恢复存储对象列表中状态,如果存储对象状态为Undone状态,采用第一数据分布哈希环处理读写请求,写请求对存储对象加锁;如果存储对象状态为Recovering,将读写请求加入存储对象的等待恢复完成列表,恢复线程完成恢复后从等待恢复列表取出读写请求重试处理;如果存储对象状态为Done状态或者待恢复存储对象列表不存在对应的存储对象,直接采用第二数据分布哈希环处理读写请求,无需对存储对象加锁保护。如果存储池重构发生二次故障,所有读写请求优先在第二数据分布哈希环上处理,请求失败且错误码为请求的对象副本/分片不存在,则在第一数据分布哈希环上重试读写请求。
203)存储节点恢复状态为Pre_done状态,直接采用第二数据分布哈希环处理读写请求。
204)在超过可容忍的容错域故障数后的存储池崩溃恢复场景,如果按照上述数据重平衡过程仍然无法完成数据恢复,则尝试执行回滚恢复。存储节点故障离线后上线重新加入存储集群前会将所有本存储节点进行标记为离线时的集群版本号。恢复工作线程根据第一数据分布哈希环数据副本/分片分布位置,尝试读取对应存储节点每个数据副本/分片的历史版本进行恢复。
以三副本存储池从四个容错域存储节点扩容为五个容错域存储节点为例,如图3所示,本实施例的副本存储池存储节点扩缩容过程中读写处理逻辑具体包括:
读写请求处理线程查询待恢复存储对象列表对应存储对象状态,已完成恢复的存储对象,采用第二数据分布哈希环响应读写请求,如图3中数据对象1,采用存储节点2、3、5副本数据完成写请求;对于尚未恢复的存储对象,采用第一数据分布哈希环响应读写请求,写操作对存储对象加锁,如图3中数据对象2,采用存储节点2、3、4中数据副本响应写请求;恢复过程中的存储对象等待恢复完成后重试;如果扩缩容过程伴随二次故障发生,读写IO优先采用第二数据分布哈希环相应读写请求,如果对应的存储副本数据不存在导致读写请求失败,则采用第一数据分布哈希环重试请求。整个数据重平衡过程中,始终保持三副本可用,存储池不降级。
上述过程中,存储节点负责扩缩容过程中存储对象的迁移工作,并响应前端应用的读写请求,处理存储对象读写请求的存储节点与负责该存储对象迁移工作的存储节点必须一致,如果收到读写请求的存储节点不是负责存储对象迁移的主存储节点,将读写请求转发给对应的存储节点处理。
上述方法如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
实施例2
本实施例提供一种分布式存储系统中存储池扩缩容恢复装置,包括一个或多个处理器、存储器和被存储在存储器中的一个或多个程序,所述一个或多个程序包括用于执行如实施例1所述分布式存储系统中存储池扩缩容恢复方法的指令。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本发明实施例中的方案可以采用各种计算机语言实现,例如,面向对象的程序设计语言Java和直译式脚本语言JavaScript等。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种分布式存储系统中存储池扩缩容恢复方法,其特征在于,包括以下步骤:
获取扩缩容请求,将存储池设置为维护模式,判断当前存储池是否满足允许扩缩容条件,若是,则执行扩缩容操作,若否,则反馈操作失败信号;
完成所述扩缩容操作后,存储池内的所有存储节点基于更新后的集群视图,采用两层一致性静态哈希环分布算法,完成数据重平衡。
2.根据权利要求1所述的分布式存储系统中存储池扩缩容恢复方法,其特征在于,所述两层一致性静态哈希环分布算法中,数据迁移前的存储集群数据分布哈希环记为第一数据分布哈希环,扩缩容后的最新数据分布哈希环记为第二数据分布哈希环,各存储节点执行所述数据重平衡的过程包括以下步骤:
生成当前存储节点的待恢复存储对象列表,该待恢复存储对象列表中的所有存储对象以当前存储节点为主存储节点;
采用至少一个并发的恢复工作线程,根据所述第一数据分布哈希环和第二数据分布哈希环中数据分布位置,逐个对所述待恢复存储对象列表中的存储对象进行数据恢复;
当前节点完成数据恢复后将状态同步至所有存储节点;
在获取到其他存储节点均完成数据恢复的信号后,从本节点存储对象列表过滤出第二数据分布哈希环分布位置不在本存储节点的存储对象列表,并清除相关存储对象。
3.根据权利要求2所述的分布式存储系统中存储池扩缩容恢复方法,其特征在于,当前存储节点作为请求方存储节点,发送获取迁移存储对象列表请求到其他所有存储节点,收到所述获取迁移存储对象列表请求的存储节点,根据当前集群视图,采用哈希算法,在本地所有存储对象列表中筛选出所有主存储节点为请求方存储节点的存储对象列表,并将结果返回给请求方存储节点,请求方存储节点根据返回结果生成待恢复存储对象列表。
4.根据权利要求2所述的分布式存储系统中存储池扩缩容恢复方法,其特征在于,所述恢复工作线程的并发个数根据当前存储集群负载状态及数据重平衡流控配置动态或静态调整。
5.根据权利要求2所述的分布式存储系统中存储池扩缩容恢复方法,其特征在于,根据所述第一数据分布哈希环和第二数据分布哈希环中数据分布位置,标记需要恢复的数据副本/分片,从第一数据分布哈希环分布位置对应的存储节点中读取可用的数据副本/分片进行恢复。
6.根据权利要求2所述的分布式存储系统中存储池扩缩容恢复方法,其特征在于,所述数据重平衡的过程中若发生二次故障,则变更集群视图后重新进行数据重平衡,且重新进行数据重平衡时,以所述第二数据分布哈希环为更高优先级,依次从所述第二数据分布哈希环和第一数据分布哈希环中读取对应的可用数据副本/分片进行恢复。
7.根据权利要求2所述的分布式存储系统中存储池扩缩容恢复方法,其特征在于,在所述数据重平衡过程中,若接收到对存储对象的读写请求,则根据该存储对象的状态执行相应读写操作:
若该存储对象未恢复,则采用所述第一数据分布哈希环响应读写请求,且若该读写请求为写请求,则同时对该存储对象添加锁保护,直至写请求完成;
若该存储对象处于恢复中,则判断读写请求是否为写请求,若是,则响应重试指令,若否,则采用所述第一数据分布哈希环响应;
若该存储对象已恢复,若是,则采用所述第一数据分布哈希环响应读写请求。
8.根据权利要求7所述的分布式存储系统中存储池扩缩容恢复方法,其特征在于,判断接收到所述读写请求时,是否存在二次故障恢复场景,若是则以所述第二数据分布哈希环为更高优先级,依次采用第二数据分布哈希环和/或第一数据分布哈希环响应读写请求。
9.根据权利要求7所述的分布式存储系统中存储池扩缩容恢复方法,其特征在于,判断接收到所述读写请求时,是否处于所述待恢复存储对象列表生成阶段且读写请求为写请求,若是,则将该写请求对应的存储对象中,主存储节点为本地存储节点的,直接加入待恢复存储对象列表中。
10.一种分布式存储系统中存储池扩缩容恢复装置,其特征在于,包括一个或多个处理器、存储器和被存储在存储器中的一个或多个程序,所述一个或多个程序包括用于执行如权利要求1-9任一所述分布式存储系统中存储池扩缩容恢复方法的指令。
CN202310173041.XA 2023-02-28 2023-02-28 一种分布式存储系统中存储池扩缩容恢复方法及装置 Pending CN116166196A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310173041.XA CN116166196A (zh) 2023-02-28 2023-02-28 一种分布式存储系统中存储池扩缩容恢复方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310173041.XA CN116166196A (zh) 2023-02-28 2023-02-28 一种分布式存储系统中存储池扩缩容恢复方法及装置

Publications (1)

Publication Number Publication Date
CN116166196A true CN116166196A (zh) 2023-05-26

Family

ID=86416178

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310173041.XA Pending CN116166196A (zh) 2023-02-28 2023-02-28 一种分布式存储系统中存储池扩缩容恢复方法及装置

Country Status (1)

Country Link
CN (1) CN116166196A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117851132A (zh) * 2024-03-07 2024-04-09 四川省华存智谷科技有限责任公司 一种分布式对象存储的数据恢复优化方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117851132A (zh) * 2024-03-07 2024-04-09 四川省华存智谷科技有限责任公司 一种分布式对象存储的数据恢复优化方法
CN117851132B (zh) * 2024-03-07 2024-05-07 四川省华存智谷科技有限责任公司 一种分布式对象存储的数据恢复优化方法

Similar Documents

Publication Publication Date Title
CN110019140B (zh) 数据迁移方法、装置、设备以及计算机可读存储介质
CN106776130B (zh) 一种日志恢复方法、存储装置和存储节点
US7908600B2 (en) Fault-tolerant patching system
US8433947B2 (en) Computer program, method, and apparatus for controlling data allocation
RU2208834C2 (ru) Способ и система восстановления целостности базы данных в системе секционированных баз данных без разделения ресурсов с использованием виртуальных дисков коллективного использования и машиночитаемый носитель для них
US7698391B2 (en) Performing a provisioning operation associated with a software application on a subset of the nodes on which the software application is to operate
US9513894B2 (en) Database software upgrade using specify-validate-execute protocol
CN111581020B (zh) 一种分布式块存储系统中数据恢复的方法和装置
CN110807064B (zh) Rac分布式数据库集群系统中的数据恢复装置
GB2484086A (en) Reliability and performance modes in a distributed storage system
CN111078667B (zh) 一种数据迁移的方法以及相关装置
JPH11506556A (ja) データベースフラグメントレプリカの共通部分が最小の複数のノードのグループを有する連続的に使用可能なデータベースサーバ
CN116166196A (zh) 一种分布式存储系统中存储池扩缩容恢复方法及装置
CN113326006A (zh) 一种基于纠删码的分布式块存储系统
CN114138192A (zh) 存储节点在线升级方法、装置、系统及存储介质
CN113986450A (zh) 一种虚拟机备份方法及装置
CN107943615B (zh) 基于分布式集群的数据处理方法与系统
CN115826876B (zh) 数据写入方法、系统、存储硬盘、电子设备及存储介质
CN114791901A (zh) 数据处理方法、装置、设备及存储介质
CN104407806A (zh) 独立磁盘冗余阵列组硬盘信息的修改方法和装置
CN111400098B (zh) 一种副本管理方法、装置、电子设备及存储介质
CN115373896A (zh) 一种基于分布式块存储的副本数据恢复方法和系统
CN112540875B (zh) 一种基于xtrabackup的mysql数据库备份、恢复校验可用性的方法
CN115470041A (zh) 一种数据灾备管理方法及装置
JP2009265973A (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