CN114625325B - 分布式存储***及其存储节点离线处理方法 - Google Patents
分布式存储***及其存储节点离线处理方法 Download PDFInfo
- Publication number
- CN114625325B CN114625325B CN202210528182.4A CN202210528182A CN114625325B CN 114625325 B CN114625325 B CN 114625325B CN 202210528182 A CN202210528182 A CN 202210528182A CN 114625325 B CN114625325 B CN 114625325B
- Authority
- CN
- China
- Prior art keywords
- storage
- data
- metadata
- offline
- storage node
- 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/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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0727—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
-
- 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
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
本公开涉及一种分布式存储***及其存储节点离线处理方法。分布式存储***的多个存储节点的存储模块上存储数据副本,每份数据具有多个相同的数据副本。维护在线存储节点的存储模块的存活状态记录。保存分布式存储***所存储数据的元数据,包括多个数据副本的存储位置信息。响应于存储节点离线,保持为该存储节点的存储模块维护的存活状态记录为存活,而禁止对该存储节点进行读操作和写操作。响应于来自客户端的读请求和/或写请求,基于元数据,分配指向其它存储节点的路径来执行相应的读操作和/或写操作。由此,可以降低大容量存储节点离线后对多备份/纠删码***的影响,在提供稳定对外服务的同时,加速完成后台数据补齐。
Description
技术领域
本公开涉及分布式存储***,特别涉及分布式存储***的存储节点离线处理方法。
背景技术
为满足大规模数据存储的需要,分布式存储方案得到了越来越广泛地应用。
分布式存储***可以包括例如一个或多个存储节点集群。一个存储节点集群中可以设置多个存储节点。
图1示意性地示出了分布式存储***或其一个存储节点集群。
数据中心网络***,负责数据网络传输和控制,在一些层面如控制功能方面上也将其可以称为“控制节点”或“控制设备”,例如可以根据全局信息对数据读写任务进行整体调度。
多个存储节点在数据中心网络***的调度下存储数据副本。可以为每份数据提供多个相同的数据副本,并且分别存储在不同存储节点的存储模块上。
每个存储节点上可以设置有网卡(NIC)、CPU、内存、多个存储模块如对象存储设备OSD 1至OSDn。
为了降低成本,目前开发的存储节点中,在同一机箱中封装了越来越多的存储模块,以便多个存储模块共享一些公共模块,如网卡、CPU、内存等等。
存储模块例如可以是对象存储设备(OSD),可以由硬盘如固态硬盘(SSD)来实现。
另一方面,存储模块如SSD的存储容量也变得越来越高。这样,高容量的存储节点可以提供多达几百个万亿字节(TB)的存储容量。
然而,随着存储节点以及其中的存储模块如SSD的大规模部署,按照一定的故障概率,在所部署的高容量存储节点中将不可避免地出现较多的故障,并因而需要对出现故障的存储节点进行维护。
在对出现故障的高容量存储节点(例如图1中以虚线框绘制的存储节点)进行维护时,需要先将其下线(使其处于离线状态),在离线状态下执行修复操作,然后再将修复后的存储节点恢复上线(使其处于在线状态)。
当一个存储节点出现故障时,故障可能在于存储节点上任何模块。现有方案中,会将整个存储节点下线,启动修复程序以解决问题。而当存储节点修复完成重新移回到存储节点集群时,需要重新安装操作***,并且格式化存储模块。换言之,离线存储节点上的各个存储模块上所存储的所有数据将被丢弃。
待修复完成后,存储节点集群需要向修复后重新上线的存储节点填充整个存储节点的数据,就像对新并入的一个全新的存储节点所进行的操作一样。
然而,对于高容量存储节点,几百个TB的数据的离线(丢弃)可能会对数据可靠性和存储性能带来风险。
而且,故障存储节点离线后,可能需要从其它存储节点复制几百个TB的数据,以便维持数据副本的数量。而故障存储节点修复上线后,又需要从其它存储节点复制几百个TB的数据到恢复上线的存储节点。这都会导致巨量的网络流量。这样,在因故障离线再修复后恢复上线的存储节点准备好提供服务之前,会消耗很长的时间。
因此,仍然需要一种改进的分布式存储***的存储节点离线处理方案,以解决上述至少一方面问题。
发明内容
本公开要解决的一个技术问题是提供一种分布式存储***的存储节点离线处理方案,降低大容量存储节点离线后对多备份/纠删码***的影响,在提供稳定对外服务的同时,加速完成后台数据补齐。
根据本公开的第一个方面,提供了一种分布式存储***的存储节点离线处理方法,分布式存储***包括多个存储节点,存储节点的存储模块上存储数据副本,每份数据具有多个相同的数据副本,并且分别存储在不同存储节点的存储模块上,该方法包括:维护在线存储节点的存储模块的存活状态记录;保存分布式存储***所存储数据的元数据,元数据包括该数据的多个数据副本分别在分布式存储***中的存储位置信息;响应于存储节点离线,保持为该存储节点的存储模块维护的存活状态记录为存活,而禁止对该存储节点进行读操作和写操作;以及响应于来自客户端的读请求和/或写请求,基于元数据,分配指向从除离线存储节点之外的其它存储节点中选择的存储节点的路径来执行相应的读操作和/或写操作。
可选地,该方法还可以包括:响应于离线存储节点恢复在线,基于元数据判断恢复在线的存储节点的存储模块是否有需要修复的数据副本;以及在有需要修复的数据副本的情况下,基于元数据,使用其它存储节点的存储模块存储的数据副本修复需要修复的数据副本。
可选地,基于元数据判断恢复在线的存储节点的存储模块是否有需要修复的数据副本的步骤包括:判断恢复在线的存储节点的存储模块上存储的数据副本是否部分或全部丢失,其中丢失的数据副本为需要修复的数据副本;以及/或者判断恢复在线的存储节点的存储模块上存储的数据副本与其它存储节点上存储的对应于相同数据的数据副本是否一致,其中不一致的数据副本为需要修复的数据副本。
可选地,该方法还可以包括:在没有需要修复的数据副本的情况下,允许对恢复在线的存储节点进行读操作和写操作;以及/或者在恢复在线的存储节点的多个存储模块中的部分存储模块有需要修复的数据副本的情况下,允许对该存储节点上其它存储模块进行读操作和写操作,并在部分存储模块上的数据副本修复完成后允许对部分存储模块进行读操作和写操作。
可选地,在离线存储节点离线时间超过预定时间阈值的情况下,该方法还包括:在分布式存储***中部署新存储节点;基于元数据,在新存储节点的存储模块上重建离线存储节点的存储模块上存储的数据副本;以及将为离线存储节点的存储模块维护的存活状态记录修改为不再存活。
可选地,分布式存储***设定为每份数据在预定数量个处于存活状态的存储节点中分别存储一份数据副本。
可选地,元数据可以包括所存储数据在处于存活状态的多个存储模块中的多个数据副本的存储位置信息。该方法还可以包括:保留元数据中处于存活状态的存储模块中的数据副本的存储位置信息;以及/或者删除元数据中处于不再存活状态的存储模块中的数据副本的存储位置信息。
可选地,响应于来自客户端的读请求和/或写请求、基于元数据、分配指向从除离线存储节点之外的其它存储节点中选择的存储节点的路径来执行相应的读操作和/或写操作的步骤包括:响应于读请求,基于元数据,判断离线存储节点的存储模块上是否存储有所请求数据的数据副本;在离线存储节点的存储模块上存储有所请求数据的数据副本的情况下,从存储所请求数据的m个数据副本中的剩余m-1个数据副本的m-1个存储节点中选择一个存储节点,其中m为所请求数据的数据副本的个数,且m≥2;以及分配指向所选择存储节点的存储模块的路径来执行读操作。
可选地,响应于来自客户端的读请求和/或写请求、基于元数据、分配指向从除离线存储节点之外的其它存储节点中选择的存储节点的路径来执行相应的读操作和/或写操作的步骤包括:响应于写请求,从除离线存储节点之外的其它存储节点中选择m'个存储节点,其中m'为设定要写入数据的数据副本的个数,且m'≥2;以及分配分别指向m'个存储节点的存储模块的路径来执行写操作。
根据本公开的第二个方面,提供了一种分布式存储***,包括元数据存储装置和多个存储节点,其中,分布式存储***的控制设备或元数据存储装置维护在线存储节点的存储模块的存活状态记录;元数据存储装置保存分布式存储***所存储数据的元数据,元数据包括该数据的多个数据副本分别在分布式存储***中的存储位置信息;存储节点的存储模块上存储数据副本,每份数据具有多个相同的数据副本,并且分别存储在不同存储节点的存储模块上;响应于存储节点离线,控制设备或元数据存储装置保持为该存储节点的存储模块维护的存活状态记录为存活,而禁止对该存储节点进行读操作和写操作;并且响应于来自客户端的读请求和/或写请求,基于元数据,分配指向从除离线存储节点之外的其它存储节点中选择的存储节点的路径来执行相应的读操作和/或写操作。
可选地,响应于离线存储节点恢复在线,基于元数据,判断恢复在线的存储节点的存储模块是否有需要修复的数据副本;在有需要修复的数据副本的情况下,基于元数据,使用其它存储节点的存储模块存储的数据副本修复需要修复的数据副本。
根据本公开的第三个方面,提供了一种计算设备,包括:处理器;以及存储器,其上存储有可执行代码,当可执行代码被处理器执行时,使处理器执行如上述第一方面所述的方法。
根据本公开的第四个方面,提供了一种计算机程序产品,包括可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如上述第一方面所述的方法。
根据本公开的第五个方面,提供了一种非暂时性机器可读存储介质,其上存储有可执行代码,当可执行代码被电子设备的处理器执行时,使处理器执行如上述第一方面所述的方法。
由此,能够降低大容量存储节点离线后对多备份/纠删码***的影响,在提供稳定对外服务的同时,加速完成后台数据补齐。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示意性地示出了分布式存储***或其一个存储节点集群。
图2示意性地示出了根据本公开的分布式存储***。
图3是根据本公开的分布式存储***中有存储节点出现故障的情况下执行的处理方法的示意性流程图。
图4是有存储节点离线的情况下执行读操作的示意图。
图5是有存储节点离线的情况下执行写操作的示意图。
图6是离线存储节点恢复在线的情况下执行的处理方法的示意性流程图。
图7示意性地示出了离线存储节点恢复在线后需要修复数据副本的情况下的控制路径和数据路径。
图8是离线存储节点离线时间超过预定时间阈值的情况下执行的处理方法的示意性流程图。
图9示出了根据本发明一实施例可用于实现上述存储节点离线处理方法的计算设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
图2示意性地示出了根据本公开的分布式存储***。
如图2所示,分布式存储***10可以包括元数据存储装置200和多个存储节点300。
另外,如图2所示,分布式存储***10还可以包括数据中心网络***100,负责数据网络传输和控制,例如可以根据全局信息对数据读写任务进行整体调度。
客户端节点20可以经由数据中心网络***100来访问元数据存储装置200和存储节点300。
数据中心网络***100可以用来管理多个存储节点300,在存储节点300之间进行数据副本存储和读写任务的调度。
元数据存储装置200可以用来存储该分布式存储***所存储的数据(或各个存储节点300上所存储的数据副本)的元数据。元数据是有关数据属性的数据,属于对数据及信息资源的描述性信息,可以用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。
元数据存储装置200也可以是一个存储***或存储节点集群,例如可以是包括多个元数据节点(元数据节点1、元数据节点2、……、元数据节点n',参见图4、图5和图7)的元数据节点集群。
存储节点300可以与图1所示存储节点相同或相似,可以设置有网卡(NIC)、CPU、内存、多个存储模块如OSD 1至OSDn。这样,同一个存储节点300上设置的多个存储模块可以共享同一个机架上设置的网卡、CPU和内存。
考虑到数据可靠性的要求,分布式存储***10可以设定为每份数据存储预定数量例如m个数据副本,m为正整数。对于不同的数据,可以设定相同的预定数量m。或者,也可以针对不同类型的数据分别设定不同的预定数量m。或者,也可以针对各个数据,分别设定不同的预定数量m。
这m个数据副本可以分别存储在m个处于存活状态的存储节点300中。这m个存储节点300中的每一个分别存储一份数据副本。
可以为同一个数据维护一条元数据,而在这一条元数据中包括m个数据副本各自的信息如存储位置信息。或者,也可以分别为每一个数据副本维护一条元数据,每个数据副本对应的元数据中包括各自的信息如存储位置信息。
另外,分布式存储***10也可以包括多个数据存储节点集群,每个数据存储节点集群各自包括数据中心网络***100、元数据存储装置200以及多个存储节点300。
图3是根据本公开的分布式存储***中有存储节点出现故障的情况下执行的处理方法的示意性流程图。
首先,在步骤S310,可以维护在线存储节点300的存储模块如OSD 1至OSDn的存活状态记录。
该记录可以在元数据存储装置200中维护。
或者,该记录也可以在分布式存储***10的控制设备中维护。这里的控制设备例如可以是前述数据中心网络***100,也可以呈现为任何其它可能的形式。
控制设备(例如数据中心网络***100)例如可以进一步向在线存储节点300的存活存储模块分配数据副本存储和读写任务。
在步骤S320,保存分布式存储***10所存储数据的元数据。
在本公开的上下文中,除了其它有关数据的属性信息,元数据至少可以包括该数据的多个数据副本分别在分布式存储***中的存储位置信息。
在一些实施例中,元数据可以包括分布式***10所存储的数据在当前处于存活状态的多个存储模块中的多个数据副本的存储位置信息。换言之,可以在元数据中分别记录为数据的m个数据副本在m个存活存储模块中的存储位置信息。
这样,一方面,可以保留元数据中处于存活状态的存储模块中的数据副本的存储位置信息。
另一方面,在某个或某些存储模块处于不再存活的状态的情况下,可以删除元数据中原本位于这个或这些存储模块中的数据副本的存储位置信息。即,可以删除与这些数据副本对应的元数据,或者,可以删除相应数据的元数据中该数据副本对应的信息如其存储位置信息等。
这样,在因某个或某些存储模块不再存活的情况下,在存活存储模块中存储的相应数据的数据副本的数量将小于设定的预定数量m。
此时,需要基于相应元数据和对应于同一数据的其它m-1个存储模块上存储的数据副本,在其它存储节点的存活存储模块上重建相应数据的数据副本,以确保存活存储模块上的数据副本数量保持为预定数量m个。
在步骤S330,响应于某个存储节点300离线,可以保持为该存储节点的存储模块维护的存活状态记录为存活,而禁止对该存储节点300进行读操作和写操作。
离线存储节点可能因为各种原因而离线。相应地,可以对于离线存储节点的相应故障进行修复处理。在离线存储节点的故障修复完成之后,该离线存储节点可以再恢复在线。
应当理解,本公开在存储节点300的在线状态和离线状态之外,额外维护了存储节点300上的存储模块的存活状态记录,即存活状态和不再存活状态。
当存储节点300下线,进入离线状态之后,并不立即将其上的所有存储模块也都视为离线,而是暂时仍然认为这些存储模块处于存活状态。
这样,可以暂时保留元数据存储装置200上与这些离线存储节点300上仍然视为存活的存储模块上的数据副本对应的元数据或相应数据的元数据中与该数据副本对应的信息如其存储位置信息等,而不是随着存储节点300离线而立刻将其上存储模块存储的数据副本对应的元数据信息全都删除。
换言之,虽然存储节点300已经离线,但是仍然认为其上的存储模块处于存活状态,而其上的数据副本仍然处于有效状态。
这样,就不会立刻启动数据副本补齐的过程。即***仍然认为,当前数据副本的数量为预定数量m个,还不需要在其它存储节点300的存储模块上重建相应的数据副本。
这样,在步骤S340,响应于来自客户端的读请求和/或写请求,可以基于元数据,分配指向从除离线存储节点之外的其它存储节点中选择的存储节点的路径来执行相应的读操作和/或写操作。
图4是有存储节点离线的情况下执行读操作的示意图。
其中,各存储节点300中阴影部分代表已存储数据副本的区域。阴影部分下方的空白区域代表尚未存储数据副本的区域。
响应于来自客户端节点20针对数据A的读请求,可以基于所请求数据对应的元数据,判断离线存储节点(例如图4中以虚线框绘制的存储节点k)的存储模块上是否存储有所请求数据A的数据副本。
这里,可以先从元数据存储装置200,例如元数据节点集群中存储要读取的数据A的元数据的元数据节点1,获取所请求数据A的m个数据副本的存储位置信息。然后基于m个数据副本的存储位置信息判断是否有相应数据副本存储在离线存储节点的存储模块上。如上所述,m为所请求数据的数据副本的个数,且m≥2,例如,m可以等于3。
在离线存储节点k的存储模块上存储有所请求数据A的数据副本的情况下,从存储所请求数据的m个数据副本中的剩余m-1个数据副本的m-1个存储节点中选择一个存储节点,例如图4所示存储节点1。
于是,可以分配指向所选择存储节点1的存储模块的路径来执行相应的读操作。
另一方面,如果在离线存储节点k的存储模块上没有存储有所请求数据A的数据副本,换言之,所请求数据的m个数据副本都分别存储在其它在线存储节点上,就可以像没有丢失存储节点一样照常执行读操作。
图5是有存储节点离线的情况下执行写操作的示意图。
其中,各存储节点300中阴影部分代表已存储数据副本的区域。阴影部分下方的空白区域代表尚未存储数据副本的区域。
响应于来自客户端节点20的写入数据B的写请求,从除离线存储节点k之外的其它存储节点中选择m'个存储节点,其中m'为设定要写入数据B的数据副本的个数,且m'≥2,例如,m'可以等于3。
分配分别指向所选定m'个存储节点的存储模块的路径来执行相应的写操作。
在例如设定为各个数据存储相同数量个数据副本的情况下,m'=m。
这样,执行读操作时,从存储有相应数据副本的其它m-1个在线存储节点300中选择一个上读取数据副本,而在执行写操作时,则在m'个在线存储节点300的存储模块中存储数据副本。通过禁止对离线存储节点300进行读操作和写操作,不影响正常的数据副本读写操作。
下面描述离线存储节点恢复在线的情况下的处理方法。
图6是离线存储节点恢复在线的情况下执行的处理方法的示意性流程图。
如图6所示,在步骤S610,响应于离线存储节点恢复在线,可以基于元数据来判断恢复在线的存储节点的存储模块是否有需要修复的数据副本。
这里,可以根据元数据存储装置200上存储的元数据,确定恢复在线的离线存储节点上在离线前原本存储有哪些数据的数据副本。
判断是否有需要修复数据副本可以包括下述两个方面中的一项或两项。
一方面,可以判断恢复在线的存储节点的存储模块上存储的数据副本是否部分或全部丢失。这种情况下,丢失的数据副本为需要修复的数据副本。
另一方面,还可以判断恢复在线的存储节点的存储模块上存储的数据副本与其它存储节点上当前存储的对应于相同数据的数据副本是否一致。这种情况下,不一致的数据副本为需要修复的数据副本。
在有需要修复的数据副本的情况下,可以在步骤S620,基于元数据,使用其它存储节点的存储模块存储的相应数据副本修复需要修复的数据副本。
图7示意性地示出了离线存储节点恢复在线后需要修复数据副本的情况下的控制路径和数据路径。其中虚线箭头表示控制路径,实现箭头表示数据路径。
如图7所示,在先前离线的存储节点k恢复在线后,判定其中部分存储模块上的数据副本需要修复。图中以斜交叉网格部分示出。
基于元数据节点上的元数据,确定在存储节点1、存储节点N等上,还存储有与存储节点k上需要修复的数据副本对应于相同数据的数据副本。由此,可以使用存储节点1和存储节点N上的数据副本来修复存储节点k上需要修复的数据副本。
返回图6,进一步地,在步骤S630,在修复过程中,可以取消对该存储节点上其它存储模块的读写操作禁止,即在修复过程中便可允许对该存储节点上其它存储模块进行读操作和写操作。
在步骤S640,在需要修复的部分存储模块上的数据副本修复完成后,可以取消对修复的存储模块的读写操作禁止,即在修复完成后允许对修复的部分存储模块进行读操作和写操作。
通过上述步骤S630和步骤S640,实现了步骤S650的效果,即允许对恢复在线的存储节点进行读操作和写操作。
返回步骤S610,在判断没有需要修复的数据副本的情况下,在步骤S650,允许对恢复在线的存储节点进行读操作和写操作。
至此,描述了整个存储节点离线修复再恢复在线的处理过程。
图8是离线存储节点离线时间超过预定时间阈值的情况下执行的处理方法的示意性流程图。
当一个存储节点下线时,例如可以收集时间戳以进行倒计时。在离线存储节点不能够在预先限定的时间阈值期间内恢复上线的情况下,需要部署一个具有新存储模块的全新存储节点上线。
存储节点可能由于各种原因下线。一些原因导致的节点下线不需要进行硬件修复。而另一些原因导致的节点下线可能需要修复软件和/或硬件故障,而不需要触及存储模块本身。在完成修复,并且存储节点返回上线之后,***可以快速扫描该存储节点的存储模块的元数据部分。如果一些数据块丢失,则分布式存储***(或存储节点集群)会触发内部数据复制,从其它存储节点复制数据副本到恢复在线的存储节点的存储模块上,以解决数据完整性问题。
如图8所示,在存储节点离线的情况下,在步骤S810,可以累计该存储节点的离线时间。
在步骤S820,可以判断该存储节点是否已经修复完成恢复在线。
在离线节点恢复在线的情况下,操作可以返回图6所示的处理过程。
在离线节点还没有恢复在线的情况下,在步骤S830,可以判断该存储节点的离线时间是否超过了预定时间阈值。
如果还没有超过预定时间阈值,则返回步骤S810继续累计离线时间。
而在离线存储节点离线时间超过预定时间阈值的情况下,在步骤S840,可以在该分布式存储***10中部署新存储节点300。
在步骤S850,可以基于元数据,在新存储节点300的存储模块上重建前述离线存储节点的存储模块上原先存储的数据副本。
这样,新存储节点300可以替代离线存储节点。分布式存储***所存储的各数据在在线存储节点的存活存储模块上的数据副本的数量又恢复到原来设定的数量m。由此,可以以确保数据可靠性和服务水平协议(SLA)的要求。
在步骤S860,将先前暂时为离线存储节点的存储模块维护的存活状态记录修改为不再存活。
由此,本公开提出了一种减少了数据移动量和恢复时间的新颖的存储节点离线及返回在线过程的机制和实现方案。
由若干个元数据节点形成的元数据节点集群实时维护集群的元数据。当一个高容量存储节点出现事故而导致离线时,并不将该存储节点的所有存储模块都剔除,而是保持所有存储模块驱动存活,只是在后台临时停止对该存储节点上的这些存储模块的读写访问权限。
整个过程中将存储节点集群与出现功能障碍的一个存储节点解耦,而与出现功能障碍的存储节点关联的元数据仍然保持存活,即将存储节点上的各存储模块仍然视为存活。
这样,修复后的存储节点的后续返回在线时,其上先前存储的数据副本仍然有效,不需要进行数据回填操作,因而能够以较低的延迟时间完成离线后的上线操作。
在存储节点被修复,并且存储模块被部署返回之后,会有两种可能的情形。
一种情形是,该节点中具有现有数据的所有存储模块都工作良好。
另一种情形是,一些存储模块出现缺陷,并且使用没有数据的新存储模块进行了修复。
在第一种情形下,元数据节点集群只需要去除对该存储节点的读写限制,整个存储节点集群持有可用于正常操作的数据。
而第二种情形则要求进行数据恢复以准备丢失的数据,如图7所示。
恢复操作是将相应的存储模块信息发送给元数据节点集群,元数据节点集群则触发从该存储节点集群中的其它集群中的其它数据副本进行的数据复制操作。
在对修复存储模块的数据恢复过程中,该存储节点上的其它存储模块可以开始对客户端节点20提供服务。
在具有多个数据副本的存储节点集群(或分布式存储***)中,个别离线存储节点对存储节点集群的性能和数据可靠性的影响是有限的。
这样,在执行存储节点维护的过程中,元数据服务器(例如元数据存储装置200或元数据节点集群)关闭对离线存储节点上的数据副本的访问。所有来自客户端节点20的读请求都被重定向到其它m-1个副本。而新来的写入请求则被设置为将m个数据副本放置到剩余在线存储节点中。
由此,本公开创新性地提出了一种离线再修复的存储节点在减少数据移动和内部带宽消耗的情况下快速恢复在线的方案。临时使用其它存储节点上对应于相同数据的数据副本来相应涉及离线高容量存储节点上的数据副本的服务请求。
图9示出了根据本发明一实施例可用于实现上述存储节点离线处理方法的计算设备的结构示意图。
参见图9,计算设备900包括存储器910和处理器920。
处理器920可以是一个多核的处理器,也可以包含多个处理器。在一些实施例中,处理器920可以包含一个通用的主处理器以及一个或多个特殊的协处理器,例如图形处理器(GPU)、数字信号处理器(DSP)等等。在一些实施例中,处理器920可以使用定制的电路实现,例如特定用途集成电路(ASIC,Application Specific Integrated Circuit)或者现场可编程逻辑门阵列(FPGA,Field Programmable Gate Arrays)。
存储器910可以包括各种类型的存储单元,例如***内存、只读存储器(ROM),和永久存储装置。其中,ROM可以存储处理器920或者计算机的其他模块需要的静态数据或者指令。永久存储装置可以是可读写的存储装置。永久存储装置可以是即使计算机断电后也不会失去存储的指令和数据的非易失性存储设备。在一些实施方式中,永久性存储装置采用大容量存储装置(例如磁或光盘、闪存)作为永久存储装置。另外一些实施方式中,永久性存储装置可以是可移除的存储设备(例如软盘、光驱)。***内存可以是可读写存储设备或者易失性可读写存储设备,例如动态随机访问内存。***内存可以存储一些或者所有处理器在运行时需要的指令和数据。此外,存储器910可以包括任意计算机可读存储媒介的组合,包括各种类型的半导体存储芯片(DRAM,SRAM,SDRAM,闪存,可编程只读存储器),磁盘和/或光盘也可以采用。在一些实施方式中,存储器910可以包括可读和/或写的可移除的存储设备,例如激光唱片(CD)、只读数字多功能光盘(例如DVD-ROM,双层DVD-ROM)、只读蓝光光盘、超密度光盘、闪存卡(例如SD卡、min SD卡、Micro-SD卡等等)、磁性软盘等等。计算机可读存储媒介不包含载波和通过无线或有线传输的瞬间电子信号。
存储器910上存储有可执行代码,当可执行代码被处理器920处理时,可以使处理器920执行上文述及的存储节点离线处理方法。
上文中已经参考附图详细描述了根据本发明的存储节点离线处理方法。
此外,根据本发明的方法还可以实现为一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本发明的上述方法中限定的上述各步骤的计算机程序代码指令。
或者,本发明还可以实施为一种非暂时性机器可读存储介质(或计算机可读存储介质、或机器可读存储介质),其上存储有可执行代码(或计算机程序、或计算机指令代码),当所述可执行代码(或计算机程序、或计算机指令代码)被电子设备(或计算设备、服务器等)的处理器执行时,使所述处理器执行根据本发明的上述方法的各个步骤。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。
附图中的流程图和框图显示了根据本发明的多个实施例的***和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (9)
1.一种分布式存储***的存储节点离线处理方法,所述分布式存储***包括多个存储节点,存储节点的存储模块上存储数据副本,每份数据具有预定数量个相同的数据副本,并且所述预定数量个相同的数据副本分别存储在所述预定数量个处于存活状态的不同存储节点的存储模块上,该方法包括:
维护在线存储节点的存储模块的存活状态记录;
保存所述分布式存储***所存储数据的元数据,所述元数据包括该数据的所述预定数量个数据副本分别在所述分布式存储***中的存储位置信息;
响应于原本处于存活状态的存储模块的存活状态记录改变为不再存活,删除所述元数据中处于不再存活状态的存储模块中的数据副本的存储位置信息,并基于所述元数据,在其它存储节点的存活存储模块上重建所述不再存活的存储模块上存储的数据副本,以确保处于存活状态的存储模块上的数据副本数量保持为所述预定数量;
响应于存储节点离线,保持为该存储节点的存储模块维护的存活状态记录为存活,而禁止对该存储节点进行读操作和写操作;
响应于来自客户端的读请求和/或写请求,基于所述元数据,分配指向从除离线存储节点之外的其它存储节点中选择的存储节点的路径来执行相应的读操作和/或写操作;
响应于离线存储节点恢复在线,基于所述元数据判断恢复在线的存储节点的存储模块是否有需要修复的数据副本;
在有需要修复的数据副本的情况下,基于所述元数据,使用其它存储节点的存储模块存储的数据副本修复所述需要修复的数据副本;
在没有需要修复的数据副本的情况下,允许对所述恢复在线的存储节点进行读操作和写操作;
在所述恢复在线的存储节点的多个存储模块中的部分存储模块有需要修复的数据副本的情况下,允许对该存储节点上其它存储模块进行读操作和写操作,并在所述部分存储模块上的数据副本修复完成后允许对所述部分存储模块进行读操作和写操作;以及
在离线存储节点离线时间超过预定时间阈值的情况下,将为所述离线存储节点的存储模块维护的存活状态记录修改为不再存活。
2.根据权利要求1所述的方法,基于所述元数据判断恢复在线的存储节点的存储模块是否有需要修复的数据副本的步骤包括:
判断所述恢复在线的存储节点的存储模块上存储的数据副本是否部分或全部丢失,其中丢失的数据副本为需要修复的数据副本;以及/或者
判断所述恢复在线的存储节点的存储模块上存储的数据副本与其它存储节点上存储的对应于相同数据的数据副本是否一致,其中不一致的数据副本为需要修复的数据副本。
3.根据权利要求1所述的方法,在离线存储节点离线时间超过预定时间阈值的情况下,该方法还包括:
在分布式存储***中部署新存储节点,并且
所述在其它存储节点的存活存储模块上重建所述不再存活的存储模块上存储的数据副本的步骤包括:基于所述元数据,在所述新存储节点的存储模块上重建所述离线存储节点的存储模块上存储的数据副本。
4.根据权利要求3所述的方法,该方法还包括:
保留所述元数据中处于存活状态的存储模块中的数据副本的存储位置信息。
5.根据权利要求1所述的方法,其中,所述响应于来自客户端的读请求和/或写请求、基于所述元数据、分配指向从除离线存储节点之外的其它存储节点中选择的存储节点的路径来执行相应的读操作和/或写操作的步骤包括:
响应于读请求,基于所述元数据,判断离线存储节点的存储模块上是否存储有所请求数据的数据副本;
在离线存储节点的存储模块上存储有所请求数据的数据副本的情况下,从存储所请求数据的m个数据副本中的剩余m-1个数据副本的m-1个存储节点中选择一个存储节点,其中m为所请求数据的数据副本的个数,且m≥2;以及
分配指向所选择存储节点的存储模块的路径来执行所述读操作。
6.根据权利要求1所述的方法,其中,所述响应于来自客户端的读请求和/或写请求、基于所述元数据、分配指向从除离线存储节点之外的其它存储节点中选择的存储节点的路径来执行相应的读操作和/或写操作的步骤包括:
响应于写请求,从除离线存储节点之外的其它存储节点中选择m'个存储节点,其中m'为设定要写入数据的数据副本的个数,且m'≥2;以及
分配分别指向所述m'个存储节点的存储模块的路径来执行所述写操作。
7.一种分布式存储***,包括元数据存储装置和多个存储节点,其中,
分布式存储***的控制设备或元数据存储装置维护在线存储节点的存储模块的存活状态记录;
存储节点的存储模块上存储数据副本,每份数据具有预定数量个相同的数据副本,并且所述预定数量个相同的数据副本分别存储在所述预定数量个处于存活状态的不同存储节点的存储模块上;
元数据存储装置保存所述分布式存储***所存储数据的元数据,所述元数据包括该数据的所述预定数量个数据副本分别在所述分布式存储***中的存储位置信息;
响应于原本处于存活状态的存储模块的存活状态记录改变为不再存活,删除所述元数据中处于不再存活状态的存储模块中的数据副本的存储位置信息,并基于所述元数据,在其它存储节点的存活存储模块上重建所述不再存活的存储模块上存储的数据副本,以确保处于存活状态的存储模块上的数据副本数量保持为所述预定数量;
响应于存储节点离线,所述控制设备或元数据存储装置保持为该存储节点的存储模块维护的存活状态记录为存活,而禁止对该存储节点进行读操作和写操作;
响应于来自客户端的读请求和/或写请求,基于所述元数据,分配指向从除离线存储节点之外的其它存储节点中选择的存储节点的路径来执行相应的读操作和/或写操作;
响应于离线存储节点恢复在线,基于所述元数据,判断恢复在线的存储节点的存储模块是否有需要修复的数据副本;
在有需要修复的数据副本的情况下,基于所述元数据,使用其它存储节点的存储模块存储的数据副本修复所述需要修复的数据副本;
在没有需要修复的数据副本的情况下,允许对所述恢复在线的存储节点进行读操作和写操作;
在所述恢复在线的存储节点的多个存储模块中的部分存储模块有需要修复的数据副本的情况下,允许对该存储节点上其它存储模块进行读操作和写操作,并在所述部分存储模块上的数据副本修复完成后允许对所述部分存储模块进行读操作和写操作;并且
在离线存储节点离线时间超过预定时间阈值的情况下,将为所述离线存储节点的存储模块维护的存活状态记录修改为不再存活。
8.一种计算设备,包括:
处理器;以及
存储器,其上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如权利要求1至6中任何一项所述的方法。
9.一种非暂时性机器可读存储介质,其上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如权利要求1至6中任何一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210528182.4A CN114625325B (zh) | 2022-05-16 | 2022-05-16 | 分布式存储***及其存储节点离线处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210528182.4A CN114625325B (zh) | 2022-05-16 | 2022-05-16 | 分布式存储***及其存储节点离线处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114625325A CN114625325A (zh) | 2022-06-14 |
CN114625325B true CN114625325B (zh) | 2022-09-23 |
Family
ID=81907248
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210528182.4A Active CN114625325B (zh) | 2022-05-16 | 2022-05-16 | 分布式存储***及其存储节点离线处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114625325B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115373896B (zh) * | 2022-06-23 | 2023-05-09 | 北京志凌海纳科技有限公司 | 一种基于分布式块存储的副本数据恢复方法和*** |
CN116662081B (zh) * | 2023-08-01 | 2024-02-27 | 苏州浪潮智能科技有限公司 | 一种分布式存储冗余方法、装置、电子设备和存储介质 |
CN116954523B (zh) * | 2023-09-20 | 2024-01-26 | 苏州元脑智能科技有限公司 | 一种存储***、数据存储方法、数据读取方法和存储介质 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4371754A (en) * | 1980-11-19 | 1983-02-01 | Rockwell International Corporation | Automatic fault recovery system for a multiple processor telecommunications switching control |
US8229893B2 (en) * | 2010-02-01 | 2012-07-24 | Hitachi Data Systems Corporation | Metadata management for fixed content distributed data storage |
CN101350731B (zh) * | 2007-07-17 | 2011-06-08 | 北京大学 | 一种节点永久离开判别方法及长期数据维护方案 |
US8515915B2 (en) * | 2010-09-24 | 2013-08-20 | Hitachi Data Systems Corporation | System and method for enhancing availability of a distributed object storage system during a partial database outage |
CN103051691B (zh) * | 2012-12-12 | 2015-09-09 | 华为技术有限公司 | 分区分配方法、装置以及分布式存储*** |
US9021296B1 (en) * | 2013-10-18 | 2015-04-28 | Hitachi Data Systems Engineering UK Limited | Independent data integrity and redundancy recovery in a storage system |
CN104281506B (zh) * | 2014-07-10 | 2017-02-15 | 中国科学院计算技术研究所 | 一种文件***的数据维护方法及*** |
CN105577776A (zh) * | 2015-12-17 | 2016-05-11 | 上海爱数信息技术股份有限公司 | 基于数据仲裁者副本的分布式存储***及方法 |
CN107689983B (zh) * | 2017-07-05 | 2021-02-12 | 上海交通大学 | 基于低修复带宽的云存储***及方法 |
CN107357689B (zh) * | 2017-08-02 | 2020-09-08 | 郑州云海信息技术有限公司 | 一种存储节点的故障处理方法及分布式存储*** |
CN110445822B (zh) * | 2018-05-03 | 2021-11-30 | 中移(苏州)软件技术有限公司 | 一种对象存储方法及装置 |
CN110188007B (zh) * | 2019-06-05 | 2022-02-15 | 深圳市迅雷网络技术有限公司 | 分布式数据修复方法、装置、网络节点及存储介质 |
CN111031096B (zh) * | 2019-11-15 | 2022-05-31 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 一种基于拟态防御的分布式存储***构建方法 |
CN112948171A (zh) * | 2019-12-11 | 2021-06-11 | 华为技术有限公司 | 数据处理方法、装置、终端设备及计算机可读存储介质 |
CN111274205B (zh) * | 2020-01-07 | 2024-03-26 | 北京小米松果电子有限公司 | 数据块访问方法及装置、存储介质 |
CN112764968B (zh) * | 2020-12-29 | 2024-02-13 | 杭州海康威视***技术有限公司 | 数据处理方法、装置、设备及存储介质 |
CN113553217A (zh) * | 2021-07-08 | 2021-10-26 | 广州炒米信息科技有限公司 | 数据恢复方法、装置、存储介质及计算机设备 |
-
2022
- 2022-05-16 CN CN202210528182.4A patent/CN114625325B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN114625325A (zh) | 2022-06-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114625325B (zh) | 分布式存储***及其存储节点离线处理方法 | |
CN106776130B (zh) | 一种日志恢复方法、存储装置和存储节点 | |
KR960001748B1 (ko) | 컴퓨터 시스템 동작방법과 컴퓨터 시스템용의 기억 장치 및 기억제어장치 | |
US6859888B2 (en) | Data storage array apparatus storing error information without delay in data access, and method, program recording medium, and program for the same | |
US11422703B2 (en) | Data updating technology | |
JP6064608B2 (ja) | ストレージ装置、バックアッププログラム、およびバックアップ方法 | |
CN109726036B (zh) | 一种存储***中的数据重构方法和装置 | |
CN110018783B (zh) | 一种数据存储方法、装置及*** | |
WO2016137402A1 (en) | Data stripping, allocation and reconstruction | |
CN111309245B (zh) | 一种分层存储写入方法和装置、读取方法和装置及*** | |
CN114265670B (zh) | 一种内存块整理方法、介质及计算设备 | |
JP2017507427A (ja) | 分散データ・ストレージ・システムにおけるデータ回復を向上させる方法、システム、およびコンピュータ・プログラム | |
JP5245472B2 (ja) | 制御方法、ディスクアレイ装置 | |
CN113485874B (zh) | 数据处理方法及分布式存储*** | |
US11487628B1 (en) | System and method for rapidly transferring and recovering large data sets | |
US20160036653A1 (en) | Method and apparatus for avoiding performance decrease in high availability configuration | |
CN114077517A (zh) | 数据处理的方法、设备及*** | |
US20180217906A1 (en) | Method For Optimizing Reconstruction Of Data For A Hybrid Object Storage Device | |
CN111124740A (zh) | 一种数据读取方法、装置、存储设备及机器可读存储介质 | |
CN115470041A (zh) | 一种数据灾备管理方法及装置 | |
JP2023110180A (ja) | ストレージ装置および制御方法 | |
CN111176886B (zh) | 一种数据库模式的切换方法、装置及电子设备 | |
CN107122261A (zh) | 一种存储设备的数据读写方法及装置 | |
CN115391093B (zh) | 一种数据处理方法及*** | |
JP7212153B2 (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |