分布式存储系统及其存储节点离线处理方法技术方案

技术编号:33840633 阅读:18 留言:0更新日期:2022-06-16 12:06
本公开涉及一种分布式存储系统及其存储节点离线处理方法。分布式存储系统的多个存储节点的存储模块上存储数据副本,每份数据具有多个相同的数据副本。维护在线存储节点的存储模块的存活状态记录。保存分布式存储系统所存储数据的元数据,包括多个数据副本的存储位置信息。响应于存储节点离线,保持为该存储节点的存储模块维护的存活状态记录为存活,而禁止对该存储节点进行读操作和写操作。响应于来自客户端的读请求和/或写请求,基于元数据,分配指向其它存储节点的路径来执行相应的读操作和/或写操作。由此,可以降低大容量存储节点离线后对多备份/纠删码系统的影响,在提供稳定对外服务的同时,加速完成后台数据补齐。加速完成后台数据补齐。加速完成后台数据补齐。

【技术实现步骤摘要】
分布式存储系统及其存储节点离线处理方法


[0001]本公开涉及分布式存储系统,特别涉及分布式存储系统的存储节点离线处理方法。

技术介绍

[0002]为满足大规模数据存储的需要,分布式存储方案得到了越来越广泛地应用。
[0003]分布式存储系统可以包括例如一个或多个存储节点集群。一个存储节点集群中可以设置多个存储节点。
[0004]图1示意性地示出了分布式存储系统或其一个存储节点集群。
[0005]数据中心网络系统,负责数据网络传输和控制,在一些层面如控制功能方面上也将其可以称为“控制节点”或“控制设备”,例如可以根据全局信息对数据读写任务进行整体调度。
[0006]多个存储节点在数据中心网络系统的调度下存储数据副本。可以为每份数据提供多个相同的数据副本,并且分别存储在不同存储节点的存储模块上。
[0007]每个存储节点上可以设置有网卡(NIC)、CPU、内存、多个存储模块如对象存储设备OSD 1至OSDn。
[0008]为了降低成本,目前开发的存储节点中,在同一机箱中封装了越来越多的存储模块,以便多个存储模块共享一些公共模块,如网卡、CPU、内存等等。
[0009]存储模块例如可以是对象存储设备(OSD),可以由硬盘如固态硬盘(SSD)来实现。
[0010]另一方面,存储模块如SSD的存储容量也变得越来越高。这样,高容量的存储节点可以提供多达几百个万亿字节(TB)的存储容量。
[0011]然而,随着存储节点以及其中的存储模块如SSD的大规模部署,按照一定的故障概率,在所部署的高容量存储节点中将不可避免地出现较多的故障,并因而需要对出现故障的存储节点进行维护。
[0012]在对出现故障的高容量存储节点(例如图1中以虚线框绘制的存储节点)进行维护时,需要先将其下线(使其处于离线状态),在离线状态下执行修复操作,然后再将修复后的存储节点恢复上线(使其处于在线状态)。
[0013]当一个存储节点出现故障时,故障可能在于存储节点上任何模块。现有方案中,会将整个存储节点下线,启动修复程序以解决问题。而当存储节点修复完成重新移回到存储节点集群时,需要重新安装操作系统,并且格式化存储模块。换言之,离线存储节点上的各个存储模块上所存储的所有数据将被丢弃。
[0014]待修复完成后,存储节点集群需要向修复后重新上线的存储节点填充整个存储节点的数据,就像对新并入的一个全新的存储节点所进行的操作一样。
[0015]然而,对于高容量存储节点,几百个TB的数据的离线(丢弃)可能会对数据可靠性和存储性能带来风险。
[0016]而且,故障存储节点离线后,可能需要从其它存储节点复制几百个TB的数据,以便
维持数据副本的数量。而故障存储节点修复上线后,又需要从其它存储节点复制几百个TB的数据到恢复上线的存储节点。这都会导致巨量的网络流量。这样,在因故障离线再修复后恢复上线的存储节点准备好提供服务之前,会消耗很长的时间。
[0017]因此,仍然需要一种改进的分布式存储系统的存储节点离线处理方案,以解决上述至少一方面问题。

技术实现思路

[0018]本公开要解决的一个技术问题是提供一种分布式存储系统的存储节点离线处理方案,降低大容量存储节点离线后对多备份/纠删码系统的影响,在提供稳定对外服务的同时,加速完成后台数据补齐。
[0019]根据本公开的第一个方面,提供了一种分布式存储系统的存储节点离线处理方法,分布式存储系统包括多个存储节点,存储节点的存储模块上存储数据副本,每份数据具有多个相同的数据副本,并且分别存储在不同存储节点的存储模块上,该方法包括:维护在线存储节点的存储模块的存活状态记录;保存分布式存储系统所存储数据的元数据,元数据包括该数据的多个数据副本分别在分布式存储系统中的存储位置信息;响应于存储节点离线,保持为该存储节点的存储模块维护的存活状态记录为存活,而禁止对该存储节点进行读操作和写操作;以及响应于来自客户端的读请求和/或写请求,基于元数据,分配指向从除离线存储节点之外的其它存储节点中选择的存储节点的路径来执行相应的读操作和/或写操作。
[0020]可选地,该方法还可以包括:响应于离线存储节点恢复在线,基于元数据判断恢复在线的存储节点的存储模块是否有需要修复的数据副本;以及在有需要修复的数据副本的情况下,基于元数据,使用其它存储节点的存储模块存储的数据副本修复需要修复的数据副本。
[0021]可选地,基于元数据判断恢复在线的存储节点的存储模块是否有需要修复的数据副本的步骤包括:判断恢复在线的存储节点的存储模块上存储的数据副本是否部分或全部丢失,其中丢失的数据副本为需要修复的数据副本;以及/或者判断恢复在线的存储节点的存储模块上存储的数据副本与其它存储节点上存储的对应于相同数据的数据副本是否一致,其中不一致的数据副本为需要修复的数据副本。
[0022]可选地,该方法还可以包括:在没有需要修复的数据副本的情况下,允许对恢复在线的存储节点进行读操作和写操作;以及/或者在恢复在线的存储节点的多个存储模块中的部分存储模块有需要修复的数据副本的情况下,允许对该存储节点上其它存储模块进行读操作和写操作,并在部分存储模块上的数据副本修复完成后允许对部分存储模块进行读操作和写操作。
[0023]可选地,在离线存储节点离线时间超过预定时间阈值的情况下,该方法还包括:在分布式存储系统中部署新存储节点;基于元数据,在新存储节点的存储模块上重建离线存储节点的存储模块上存储的数据副本;以及将为离线存储节点的存储模块维护的存活状态记录修改为不再存活。
[0024]可选地,分布式存储系统设定为每份数据在预定数量个处于存活状态的存储节点中分别存储一份数据副本。
[0025]可选地,元数据可以包括所存储数据在处于存活状态的多个存储模块中的多个数据副本的存储位置信息。该方法还可以包括:保留元数据中处于存活状态的存储模块中的数据副本的存储位置信息;以及/或者删除元数据中处于不再存活状态的存储模块中的数据副本的存储位置信息。
[0026]可选地,响应于来自客户端的读请求和/或写请求、基于元数据、分配指向从除离线存储节点之外的其它存储节点中选择的存储节点的路径来执行相应的读操作和/或写操作的步骤包括:响应于读请求,基于元数据,判断离线存储节点的存储模块上是否存储有所请求数据的数据副本;在离线存储节点的存储模块上存储有所请求数据的数据副本的情况下,从存储所请求数据的m个数据副本中的剩余m

1个数据副本的m

1个存储节点中选择一个存储节点,其中m为所请求数据的数据副本的个数,且m≥2;以及分配指向所选择存储节点的存储模块的路径来执行读操作。
[0027]可选地,响应于来自客户端的读请求和/或写请求、基于元数据、分配指向从除离线存储节点之外的其它存储节点中选择的存储节点的路径来执行相应的读操作和/或写操作的步骤包括:响应于写请求,从除离线存储节点之外的其它存储节点中选择本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种分布式存储系统的存储节点离线处理方法,所述分布式存储系统包括多个存储节点,存储节点的存储模块上存储数据副本,每份数据具有多个相同的数据副本,并且分别存储在不同存储节点的存储模块上,该方法包括:维护在线存储节点的存储模块的存活状态记录;保存所述分布式存储系统所存储数据的元数据,所述元数据包括该数据的多个数据副本分别在所述分布式存储系统中的存储位置信息;响应于存储节点离线,保持为该存储节点的存储模块维护的存活状态记录为存活,而禁止对该存储节点进行读操作和写操作;以及响应于来自客户端的读请求和/或写请求,基于所述元数据,分配指向从除离线存储节点之外的其它存储节点中选择的存储节点的路径来执行相应的读操作和/或写操作。2.根据权利要求1所述的方法,还包括:响应于离线存储节点恢复在线,基于所述元数据判断恢复在线的存储节点的存储模块是否有需要修复的数据副本;以及在有需要修复的数据副本的情况下,基于所述元数据,使用其它存储节点的存储模块存储的数据副本修复所述需要修复的数据副本。3.根据权利要求2所述的方法,基于所述元数据判断恢复在线的存储节点的存储模块是否有需要修复的数据副本的步骤包括:判断所述恢复在线的存储节点的存储模块上存储的数据副本是否部分或全部丢失,其中丢失的数据副本为需要修复的数据副本;以及/或者判断所述恢复在线的存储节点的存储模块上存储的数据副本与其它存储节点上存储的对应于相同数据的数据副本是否一致,其中不一致的数据副本为需要修复的数据副本。4.根据权利要求2所述的方法,还包括:在没有需要修复的数据副本的情况下,允许对所述恢复在线的存储节点进行读操作和写操作;以及/或者在所述恢复在线的存储节点的多个存储模块中的部分存储模块有需要修复的数据副本的情况下,允许对该存储节点上其它存储模块进行读操作和写操作,并在所述部分存储模块上的数据副本修复完成后允许对所述部分存储模块进行读操作和写操作。5.根据权利要求2所述的方法,在离线存储节点离线时间超过预定时间阈值的情况下,该方法还包括:在分布式存储系统中部署新存储节点;基于所述元数据,在所述新存储节点的存储模块上重建所述离线存储节点的存储模块上存储的数据副本;以及将为所述离线存储节点的存储模块维护的存活状态记录修改为不再存活。6.根据权利要求1所述的方法,其中,所述分布式存储系统设定为每份数据在预定数量个处于存活状态的存储节点中分别存储一份数据副本。7.根据权利要求5所述的方法,其中,所述元数据包括所存储数据在处于存活状态的多个存储模块中的多个数据副本的存储位置信息,该方法还包括:保留所述元数据中处于存活状态的存储模块中的数据副本的存储位置信息;以及/或者
删除所述元数据中处于不再存活状态的存储模块中的...

【专利技术属性】
技术研发人员:李舒
申请(专利权)人:阿里巴巴中国有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1