logo好方法网

一种分布式块存储系统中数据恢复的方法和装置


技术摘要:
本发明涉及一种分布式块存储系统中数据恢复的方法和装置,所述分布式块存储系统包括块存储访问客户端、存储服务集群和元数据服务集群,所述存储服务集群包括多个存储服务节点,所述方法包括以下步骤:1)实时监听集群状态,在监听到集群异常时执行步骤2);2)判断是否延  全部
背景技术:
分布式块存储系统中,一般均采用副本机制及DHT哈希计算数据存储位置。集群状 态改变时,比如节点离线/重新上线、磁盘故障、扩容,部分存储对象的部分数据副本存储位 置发生改变,数据恢复模块一般采用主副本Push方式恢复其他副本或者Pull方式从其他可 用副本执行恢复,当数据对象副本未恢复时,如果发生前端应用数据访问,一般均需要等待 数据对象恢复完后再执行写入操作,这对前端应用数据访问的性能影响是巨大的,可能导 致前端应用挂起,服务不可用。前端应用可能只写入4K,而数据对象恢复粒度一般都至少为 1M及以上,写放大问题严重,导致在集群异常时写性能可能降低到集群正常时的十分之一 水平。同时,存储节点短暂离线后重新上线没有记录增量写数据,每次执行数据恢复的数据 量是巨大的,很多未写过的数据均需要重新执行恢复。 现有公开技术中,为了减少恢复数据量,在集群异常甚至于集群正常场景均通过 Journal  Log记录增量写数据,等待Journal  Log持久化到存储介质后再执行写入操作,这 对前端应用数据访问的性能影响同样是巨大的。为了平衡数据恢复及对前端应用数据访问 的,一般通过设置恢复QOS,限制数据恢复的速率降低对前端应用数据访问的影响,但这种 设置一般均为静态的,完全可以通过动态的方式提升恢复效率。 上述诸多问题在性能敏感性应用场景例如数据库,是完全不可接受的,从而限制 了分布式块存储的应用场景,只能应用在边缘业务场景。
技术实现要素:
本发明的目的在于克服上述现有技术存在的存储集群进行数据恢复过程中的性 能问题而提供一种分布式块存储系统中数据恢复的方法和装置。 本发明的目的可以通过以下技术方案来实现: 一种分布式块存储系统中数据恢复的方法,所述分布式块存储系统包括块存储访 问客户端、存储服务集群和元数据服务集群,所述存储服务集群包括多个存储服务节点,所 述方法包括以下步骤: 1)实时监听集群状态,在监听到集群异常时执行步骤2); 2)判断是否延迟重构,若是,则延迟设定时间后执行步骤3),若否,则直接执行步 骤3); 3)构建待恢复数据对象列表; 4)根据所述待恢复数据对象列表进行数据恢复; 各存储服务节点并行执行上述数据恢复的步骤。 进一步地,该方法还包括: 3 CN 111581020 A 说 明 书 2/5 页 动态监测前端应用的数据访问压力,根据所述数据访问压力调节各存储服务节点 的恢复并发度。 进一步地,基于设定的最低并发度调节所述各存储服务节点的恢复并发度。 进一步地,在发生集群异常时,记录写入请求的数据对象的对象ID,加入Dirty  数 据对象列表,以所述Dirty数据对象列表作为所述待恢复数据对象列表。 进一步地,所述待恢复数据对象列表还包括设定时间内的数据对象列表。 进一步地,对于计划内的集群状态变更,根据配置增加临时副本,将所述临时加入 到对应节点的待恢复数据对象列表。 进一步地,构建完成所述待恢复数据对象列表时,同时执行故障副本的数据恢复 和所有可用数据对象副本的写入操作。 进一步地,通过心跳网络监听所述集群状态。 进一步地,所述数据恢复具体为: 从其他存储服务节点读取副本数据恢复到本地存储服务节点; 处于数据恢复状态的数据对象,若有前端应用的读写请求,则产生需前端应用请 求pending的提示信息,直至数据对象完成数据恢复; 处于数据恢复状态的数据对象,若有前端应用的写请求,则等待写请求完成,解锁 数据对象后再进行恢复。 本发明还提供一种分布式块存储系统中数据恢复的装置,所述分布式块存储系统 包括块存储访问客户端、存储服务集群和元数据服务集群,所述存储服务集群包括多个存 储服务节点,所述装置包括恢复管理器,该恢复管理器执行所述的方法的步骤。 与现有技术相比,本发明具有如下有益效果: 1、本发明解决了上述存储集群进行数据恢复过程中的性能问题,从而保证了天玑 分布式块存储在客户核心数据库应用场景的性能要求及落地部署实施,可提高数据恢复速 度,并降低数据恢复对前端应用性能影响。 2、本发明无需通过Journal  log方式记录所有增量写入数据,避免写Journal  log  导致的前端应用数据访问性能下降的问题。 3、本发明动态监测前端应用的数据访问压力,根据前端应用的数据访问压力动态 地调整数据恢复速率,降低数据恢复对前端应用数据访问的影响;同时也可以配置最低恢 复并发度,避免出现前端应用数据访问压力一直很大,数据恢复时间很长,加大出现二次故 障导致数据丢失的风险。 4、本发明在进行数据恢复时,仅恢复dirty的数据对象,clean的数据对象无需进 行恢复,从而加快数据恢复速度。 5、本发明Dirty数据对象列表仅在内存中保存,不进行持久化到存储介质,从而极 大避免了持久化带来的前端应用额外的数据访问延时。 6、本发明集群正常工作时,无需记录Dirty数据对象列表,仅仅在集群发生异常时 才开始记录,从而避免了集群正常时记录Dirty数据对象带来的前端应用数据访问额外延 时,集群恢复正常清除Dirty数据对象列表,停止记录。 7、本发明在特定状态恢复场景,比如节点短暂离线重新上线,仅从Dirty数据对象 列表执行恢复,避免存储服务节点单节点容量巨大时出现的增量恢复时各存储服务节点构 4 CN 111581020 A 说 明 书 3/5 页 建数据对象恢复列表耗时达几十分钟级问题,有效缩短数据恢复时间。 8、本发明当存储服务节点完成构建待恢复数据对象列表,如果前端应用需要写入 存储副本不全的数据对象时,无需等待故障副本数据恢复完成后再执行写入操作,而是写 入当前所有可用数据对象副本,从而极大降低了存储系统异常执行恢复时对前端应用数据 访问的性能影响。 9、本发明当发生节点离线、磁盘故障等存储集群事件,数据恢复不会马上进行,会 根据设定值延迟一段时间再启动数据恢复,避免因节点短暂离线后又重新上线导致的不必 要的数据重新分布。 10、本发明对于计划内的升级、节点维护或者磁盘替换,可临时将涉及的数据对象 副本提升副本冗余度,等数据重分布完成后,再移除相应节点或磁盘,避免数据可用副本数 的降低,提高存储数据可靠性。 附图说明 图1为本发明应用的分布式块存储系统示意图; 图2为本发明的数据恢复流程示意图; 图3为本发明分布式块存储系统数据恢复状态读请求处理流程; 图4为本发明分布式块存储系统数据恢复状态写请求处理流程。
下载此资料需消耗2积分,
分享到:
收藏