CN105550362B - 一种存储系统的索引数据修复方法和存储系统 - Google Patents

一种存储系统的索引数据修复方法和存储系统 Download PDF

Info

Publication number
CN105550362B
CN105550362B CN201511033269.0A CN201511033269A CN105550362B CN 105550362 B CN105550362 B CN 105550362B CN 201511033269 A CN201511033269 A CN 201511033269A CN 105550362 B CN105550362 B CN 105550362B
Authority
CN
China
Prior art keywords
back end
data block
information
server
data
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
CN201511033269.0A
Other languages
English (en)
Other versions
CN105550362A (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.)
Zhejiang Dahua Technology Co Ltd
Original Assignee
Zhejiang Dahua 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 Zhejiang Dahua Technology Co Ltd filed Critical Zhejiang Dahua Technology Co Ltd
Priority to CN201511033269.0A priority Critical patent/CN105550362B/zh
Publication of CN105550362A publication Critical patent/CN105550362A/zh
Application granted granted Critical
Publication of CN105550362B publication Critical patent/CN105550362B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/134Distributed indices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Library & Information Science (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例提供了一种存储系统的索引数据修复方法和存储系统,用于解决现有技术中因在全盘扫描时各数据节点无序执行扫描任务所导致的服务器压力过大的问题。所述方法包括:所述服务器生成分别与每一数据节点对应的、包含所述数据节点的标识信息的任务指令,并优先将所述任务指令发送给IO负载较小的数据节点,以使得接收到所述任务指令的数据节点根据所述任务指令扫描并上报与该数据节点对应的数据块存储信息;接收所述数据节点上报的数据块存储信息,并更新所述索引数据中的该数据节点的数据块存储信息。

Description

一种存储系统的索引数据修复方法和存储系统
技术领域
本发明涉及数据存储领域,尤其涉及一种存储系统的索引数据修复方法和存储系统。
背景技术
大型分布式存储系统应用在安防行业中时,由于安防行业固有的周期长存储容量大,监控录像时时以稳定的高压力码流连续写入到存储系统中,因此要求存储系统服务不可中断。
但是,存储系统在长期运行过程中,总会在写入/读出的过程中出现诸如网络中断、数据位翻转、断电、磁盘故障、程序异常退出等异常问题。当出现这些问题时,数据节点中的数据块存储信息并不能总是和存储服务器的索引数据中记载的数据块存储信息保持一致。当出现不一致的情况时,就会导致在读取时数据读取失败,以及因为不能及时感知到使得本该能通过冗余数据进行恢复的数据块无法恢复,或者数据块存储的位置信息记载错误导致有些数据节点内部存储了脏数据。
为解决该问题,目前常见的实现方式是通过让数据节点在随机的时间点触发全盘扫描,并在完成扫描之后向元数据进行汇报,以此进行对存储服务器中的索引数据进行校正,所述索引数据包含每一数据节点镜像中的数据块存储信息。但是在安防监控行业,每时每刻都会从前端摄像头等监控设备拉取数据流写入到存储系统中,且存储系统中的数据节点使用的都是高密度存储设备。这也意味着每台数据节点的每块磁盘都在提供读写能力,由于所有数据节点是在随机时刻触发该动作,那也就意味着各个数据节点之间没有一个统一的调度器进行调度哪些数据节点该先做、哪些数据节点该后做;几十甚至上百台数据节点在同一时间段内执行汇报任务,每台数据节点汇报几百万乃至千万条的数据块存储信息,最终会导致存储服务器压力突然增大,使得存储服务器在瞬间出现僵死而无法对外提供服务。
发明内容
本发明实施例提供了一种存储系统的索引数据修复方法和存储系统,用于解决现有技术中因在全盘扫描时各数据节点无序执行扫描任务所导致的服务器压力过大的问题。
本发明实施例提供了一种存储系统的索引数据修复方法,所述方法包括:
所述存储系统中的服务器获取与自身建立连接的、该存储系统中的各数据节点的IO负载;
所述服务器生成分别与每一数据节点对应的、包含所述数据节点的标识信息的任务指令,并优先将所述任务指令发送给IO负载较小的数据节点,以使得接收到所述任务指令的数据节点根据所述任务指令扫描并上报与该数据节点对应的数据块存储信息;
接收所述数据节点上报的数据块存储信息,并将所述上报的数据块存储信息与索引数据中的该数据节点的数据块存储信息进行比较;
当所述上报的数据块存储信息与索引数据中的该数据节点的数据块存储信息存在差异时,更新所述索引数据中的该数据节点的数据块存储信息。
本发明实施例提供的方法中,根据获取的数据节点的IO负载,然后服务器优先所述任务指令发送给IO负载较小的数据节点,以使得所述数据节点根据所述任务指令扫描并上报与该数据节点对应的数据块存储信息;接收所述数据节点上报的数据块存储信息,并将所述上报的数据块存储信息与索引数据中的该数据节点的数据块存储信息进行比较;当所述上报的数据块存储信息与索引数据中的该数据节点的数据块存储信息存在差异时,更新所述索引数据中的该数据节点的数据块存储信息。本发明中通过对数据按照其IO负载大小进行排序,然后在使得数据节点根据该排序依次执行扫描任务,减小全盘扫描给服务器造成的压力,避免出现现有技术中因无序的全盘扫描所导致的服务器压力过大而僵死的问题。此外,由于IO负载较小的数据节点压力小、扫描运行速度更快,对服务器造成的压力也较小,因此服务器先调用IO负载较小的数据节点执行扫描任务时,可进一步减缓服务器上的压力,使服务器运行更加稳定。
较佳的,所述服务器获取与自身建立连接的、该存储系统中的各数据节点的IO负载,包括:
服务器周期性获取与自身建立连接的、该存储系统中的各数据节点的IO负载。
较佳的,在将任务指令发送给所述数据节点之前,所述方法还包括:生成用于阻止为所述数据节点分配写入任务的拦截指令并发送给所述服务器的负载均衡器,以使得所述负载均衡器根据所述拦截指令在预设的拦截时间长度内拦截所有针对该数据节点的访问请求。
较佳的,所述更新所述索引中的该数据节点的数据块存储信息,包括:
将所述数据节点上报的数据块存储信息中新增的数据块存储信息添加到所述索引数据中,删除所述索引数据中多余的数据块存储信息,以及对存在差异的数据块存储信息进行更新;其中,所述多余的数据块存储信息为所述上报的数据块存储信息中没有的、但存在于所述索引数据中的数据块存储信息。
较佳的,所述方法还包括:根据获取的所述各数据节点的IO负载确定任务指令的下发时延,以使得服务器根据所述下发时延下发任务指令。
较佳的,所述方法还包括:
服务器根据所述数据节点的任务执行时间和预设执行时间,判断所述数据节点的任务执行时间是否超时;其中,所述任务执行时间是指所述数据节点根据所述任务指令进行扫描并上报数据块存储信息的时间;若所述数据节点的任务执行时间大于预设执行时间长度时,则判定所述数据节点的任务执行时间超时;
当所述指定数据节点的任务执行时间超时,所述服务器向所述数据节点发送任务终止指令,使该数据节点终止扫描并上报数据块存储信息的任务。
基于同一发明构思,本发明实施例还提供了一种存储系统,所述存储系统包括存储服务器,所述服务器包括:
服务模块,用于获取与自身建立连接的、该存储系统中的各数据节点的IO负载;
调度模块,用于生成分别与每一数据节点对应的、包含所述数据节点的标识信息的任务指令,并优先将所述任务指令发送给IO负载较小的数据节点,以使得接收到所述任务指令的数据节点根据所述任务指令扫描并上报与该数据节点对应的数据块存储信息;
存储模块,用于接收所述数据节点上报的数据块存储信息,并将所述上报的数据块存储信息与索引数据中的该数据节点的数据块存储信息进行比较;当所述上报的数据块存储信息与索引数据中的该数据节点的数据块存储信息存在差异时,更新所述索引数据中的该数据节点的数据块存储信息。
本发明实施例提供的服务器中,通过服务模块获取与自身建立连接的、该存储系统中的各数据节点的IO负载,然后再通过调度模块生成分别与每一数据节点对应的、包含所述数据节点的标识信息的任务指令,并优先将所述任务指令发送给IO负载较小的数据节点,以使得接收到所述任务指令的数据节点根据所述任务指令扫描并上报与该数据节点对应的数据块存储信息;然后再通过存储模块接收所述数据节点上报的数据块存储信息,并将所述上报的数据块存储信息与索引数据中的该数据节点的数据块存储信息进行比较;当所述上报的数据块存储信息与索引数据中的该数据节点的数据块存储信息存在差异时,更新所述索引数据中的该数据节点的数据块存储信息。本发明中服务器通过对数据按照其IO负载大小进行排序,然后在使得数据节点根据该排序依次执行扫描任务,减小全盘扫描给服务器造成的压力,避免出现现有技术中因无序的全盘扫描所导致的服务器压力过大而僵死的问题。此外,由于IO负载较小的数据节点压力小、扫描运行速度更快,对服务器造成的压力也较小,因此服务器先调用IO负载较小的数据节点执行扫描任务时,可进一步减缓服务器上的压力,使服务器运行更加稳定。
较佳的,所述服务模块具体用于:周期性获取与自身建立连接的、该存储系统中的各数据节点的IO负载。
较佳的,所述调度模块还用于:在将任务指令发送给所述数据节点之前,生成用于阻止为所述数据节点分配写入任务的拦截指令并发送给所述服务器的负载均衡器,以使得所述负载均衡器根据所述拦截指令在预设的拦截时间长度内拦截所有针对该数据节点的访问请求。
较佳的,在执行更新所述索引中的该数据节点的数据块存储信息的步骤时,所述存储模块具体用于:
将所述数据节点上报的数据块存储信息中新增的数据块存储信息添加到所述索引数据中,删除所述索引数据中多余的数据块存储信息,以及对存在差异的数据块存储信息进行更新;其中,所述多余的数据块存储信息为所述上报的数据块存储信息中没有的、但存在于所述索引数据中的数据块存储信息。
较佳的,所述调度模块还用于:根据获取的所述各数据节点的IO负载确定任务指令的下发时延,以使得所述服务器根据所述下发时延下发任务指令。
较佳的,所述服务器还包括判断模块,
所述判断模块,用于根据所述数据节点的任务执行时间和预设执行时间长度,判断所述数据节点的任务执行时间是否超时;其中,所述任务执行时间是指所述数据节点根据所述任务指令进行扫描并上报数据块存储信息的时间;若所述数据节点的任务执行时间大于预设执行时间长度时,则判定所述数据节点的任务执行时间超时;
所述调度模块,还用于当所述数据节点的任务执行时间超时时,向所述数据节点发送任务终止指令,使该数据节点终止扫描并上报数据块存储信息的任务。
附图说明
图1为本发明实施例一提供的存储系统的索引数据修复方法;
图2为本发明实施例二提供的另一种存储系统的索引数据修复方法;
图3为本发明实施例三提供的服务器的功能结构示意图;
图4为本发明实施例四提供的另一种服务器的功能结构示意图。
具体实施方式
本发明实施例提供了一种存储系统的索引数据修复方法和存储系统,用于解决现有技术中因在全盘扫描时各数据节点无序执行扫描任务所导致的服务器压力过大的问题。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,图1为本发明实施例一提供的一种存储系统的索引数据修复方法的流程示意图,所述方法包括:
步骤101,所述存储系统中的服务器获取与自身建立连接的、该存储系统中的各数据节点的IO负载;
步骤102,所述服务器生成分别与每一数据节点对应的、包含所述数据节点的标识信息的任务指令,并优先将所述任务指令发送给IO负载较小的数据节点,以使得接收到所述任务指令的数据节点根据所述任务指令扫描并上报与该数据节点对应的数据块存储信息;
步骤103,接收所述数据节点上报的数据块存储信息,并将所述上报的数据块存储信息与索引数据中的该数据节点的数据块存储信息进行比较;
步骤104,当所述上报的数据块存储信息与索引数据中的该数据节点的数据块存储信息存在差异时,更新所述索引数据中的该数据节点的数据块存储信息。
据获取的数据节点的IO负载,然后服务器优先所述任务指令发送给IO负载较小的数据节点,以使得所述数据节点根据所述任务指令扫描并上报与该数据节点对应的数据块存储信息,可减小全盘扫描给服务器造成的压力,避免出现现有技术中因无序的全盘扫描所导致的服务器压力过大而僵死的问题。此外,由于IO负载较小的数据节点压力小、扫描运行速度更快,对服务器造成的压力也较小,因此服务器先调用IO负载较小的数据节点执行扫描任务时,可进一步减缓服务器上的压力,使服务器运行更加稳定。
进一步的,服务器周期性获取与自身建立连接的、该存储系统中的各数据节点的IO负载。
通过周期性获取与自身建立连接的、该存储系统中的各数据节点的IO负载,实现周期性对与之连接的数据节点下方任务指令,进而周期性的对所述索引数据进行更新。
进一步的,在将任务指令发送给所述数据节点之前,所述方法还包括:生成用于阻止为所述数据节点分配写入任务的拦截指令并发送给所述服务器的负载均衡器,以使得所述负载均衡器根据所述拦截指令在预设的拦截时间长度内拦截所有针对该数据节点的访问请求。
在所述数据节点在执行任务指令时,负载均衡器拦截所有针对该数据节点的访问请求,可减小该数据节点的压力,提高该数据节点的扫描速度,缩短该数据节点扫描和上报数据块信息所需的时间。此外,通过拦截所有针对该数据节点的访问请求,使得该数据节点上IO负载减少到最小,因此减小了扫描任务对IO的影响,避免写入或读出因超时访问而失败。
进一步的,所述更新所述索引中的该数据节点的数据块存储信息,包括:
将所述数据节点上报的数据块存储信息中新增的数据块存储信息添加到所述索引数据中,删除所述索引数据中多余的数据块存储信息,以及对存在差异的数据块存储信息进行更新;其中,所述多余的数据块存储信息为所述上报的数据块存储信息中没有的、但存在于所述索引数据中的数据块存储信息。
通过将所述数据节点上报的数据块存储信息中新增的数据块存储信息添加到所述索引数据中、删除所述索引数据中多余的数据块存储信息、以及对存在差异的数据块存储信息进行更新的方式对索引数据进行修复,只需对有存储信息有差异的数据块存储信息进行更新,有利于减小服务器的负荷,缩短索引数据修复所需的时间。
进一步的,所述方法还包括:根据获取的所述各数据节点的IO负载确定任务指令的下发时延,以使得服务器根据所述下发时延下发任务指令。
通过计算每一数据节点的IO负载确定任务指令的下发时延,有利于服务器更好的控制每一数据节点扫描和上报所需的时间以及完成一次全盘扫描所需的周期,可以更好的保证IO尽可能少受影响。
进一步的,所述方法还包括:
服务器根据所述数据节点的任务执行时间和预设执行时间,判断所述数据节点的任务执行时间是否超时;其中,所述任务执行时间是指所述数据节点根据所述任务指令进行扫描并上报数据块存储信息的时间;若所述数据节点的任务执行时间大于预设执行时间长度时,则判定所述数据节点的任务执行时间超时;
当所述指定数据节点的任务执行时间超时,所述服务器向所述数据节点发送任务终止指令,使该数据节点终止扫描并上报数据块存储信息的任务。
当所述数据节点的任务执行时间超时时,通过终止该数据节点上报的数据块存储信息的任务,以使得排在该数据节点后面的下一数据节点能够正常的进行扫描和上报数据块存储信息,避免服务器陷入死循环而导致无法继续进行全盘扫描。
为了更清晰直观的描述本发明提供的技术方案,下面以分布式存储系统为例,具体描述一下本发明技术方案。
分布式存储系统中主要由两部分组成,一部分是数据节点,用于负责数据块的实际存储,管理本机已存储的数据文件等;另一部分是控制和管理所述数据节点的服务器。
用户写入数据的过程总是先在服务器中创建文件,并申请数据写入空间,这时服务器在其索引数据中会记录用户写入的文件名,存储的位置信息等,并返回给用户真实可以写入数据的具体数据节点的地址,数据内容会写入到这些数据节点内,在这些数据节点内是按数据块的模式记录一个完整写入到当前节点内的数据内容。在写入完成后,用户会向数据节点发送关闭创建文件结束的指令,同时已经写入完成的数据节点会向服务器汇报已经写完的数据块存储信息,服务器根据该数据节点汇报的数据块存储信息更新所述服务器中的索引数据中的该数据节点的数据块存储信息。
参见图2,所述分布式存储系统利用本发明提供的方法进行索引数据修改的详细步骤包括:
步骤201,服务器在程序启动后开启针对数据节点的网络服务层,通过网络服务层获取与服务器建立连接的数据节点的IO负载。
步骤202,服务器生成分别与每一数据节点对应的、包含所述数据节点的标识信息的任务指令、拦截指令以及下发时延,并存储在服务器中的该数据节点的镜像中。其中,所述镜像中包含有所述数据节点的全部的数据块存储信息的索引信息,通过镜像可以和后续上报的全部的数据块的索引信息进行对比,得知存在差异的数据块并进行修复。
步骤203,根据所述下发时延,向所述服务器中负载均衡器的下发拦截指令。
步骤204,服务器中的负载均衡器据所述拦截指令在预设的拦截时间长度内拦截所有针对该数据节点的访问请求。
步骤205,当网络服务层检测到所述数据节点中的镜像中存在任务指令时,从所述节点的镜像中获取所述任务指令;以及根据所述下发时延将所述任务指令发送给所述数据节点,以使得所述数据节点根据所述任务指令扫描并上报与该数据节点对应的数据块存储信息。
具体的,数据节点和服务器之间通过心跳保持会话的持久存活,服务器在接收到数据节点的心跳信息后,会查看对应的这个数据节点的镜像中是否存在对应的全量汇报的任务指令。若存在,则将通过网络服务层从镜像中获取该任务指令并在给数据节点的心跳回复中发送给该数据节点;若不存在,则不需要进行回复。
步骤206,数据节点中的网络层在接收到服务器发送的任务指令时,将任务指令转换为扫描任务发送到数据节点中的存储层。
步骤207,数据节点中的存储层对扫描任务进行解析,分发给各个磁盘对象层。并且,该存储层会周期性检测各个磁盘对象层针对该扫描任务的完成情况,直至所有磁盘对象层都完成了扫描任务。其中,所述磁盘对象层是指将每个磁盘都在内存中映射成一个实例用于描述磁盘所存在的索引信息以及提供操作接口。
步骤208,磁盘对象层在接收到扫描任务后,会通过扫描线程扫描磁盘中的所有块,扫描完成会等待存储层提取结果。
步骤209,存储层提取到各个磁盘中的数据块存储信息并提交给数据节点的网络层,以使得通过网络层将提取到的数据块存储信息发送给服务器。
步骤210,服务器接收所述指定数据节点上报的数据块存储信息,并将所述上报的数据块存储信息与索引数据中的该指定数据节点的数据块存储信息进行比较。其中所述比较的过程具体包括:
服务器将接收到所述数据节点上报数据块存储信息,和自身管理的对应的这个数据节点镜像中的数据块存储信息进行比对,比对出在上一次到当前汇报完成的这一个周期内,镜像中有哪些数据块的信息和所述数据节点实际存储的数据块存储信息有差异了,有哪些是新增的数据块信息,以及哪些是镜像中多余的数据块信息;其中,所述多余的数据块存储信息为所述上报的数据块存储信息中没有的、但存在于所述索引数据中的数据块存储信息。
步骤211,当所述上报的数据块存储信息与索引数据中的该数据节点的数据块存储信息存在差异时,更新所述索引数据中的该数据节点的数据块存储信息。该步骤具体包括:
将所述数据节点上报的数据块存储信息中新增的数据块存储信息添加到所述索引数据中,删除所述索引数据中多余的数据块存储信息,以及对存在差异的数据块存储信息进行更新。
基于同一发明构思,本发明实施例还提供了一种存储服务器。参见图3,所述服务器包括:
服务模块301,用于获取与自身建立连接的、该存储系统中的各数据节点的IO负载;
调度模块302,用于生成分别与每一数据节点对应的、包含所述数据节点的标识信息的任务指令,并优先将所述任务指令发送给IO负载较小的数据节点,以使得接收到所述任务指令的数据节点根据所述任务指令扫描并上报与该数据节点对应的数据块存储信息;
存储模块303,用于接收所述数据节点上报的数据块存储信息,并将所述上报的数据块存储信息与索引数据中的该数据节点的数据块存储信息进行比较;当所述上报的数据块存储信息与索引数据中的该数据节点的数据块存储信息存在差异时,更新所述索引数据中的该数据节点的数据块存储信息。
本发明实施例提供的服务器中,通过服务模块获取与自身建立连接的、该存储系统中的各数据节点的IO负载,然后再通过调度模块生成分别与每一数据节点对应的、包含所述数据节点的标识信息的任务指令,并优先将所述任务指令发送给IO负载较小的数据节点,以使得接收到所述任务指令的数据节点根据所述任务指令扫描并上报与该数据节点对应的数据块存储信息;然后再通过存储模块接收所述数据节点上报的数据块存储信息,并将所述上报的数据块存储信息与索引数据中的该数据节点的数据块存储信息进行比较;当所述上报的数据块存储信息与索引数据中的该数据节点的数据块存储信息存在差异时,更新所述索引数据中的该数据节点的数据块存储信息。本发明中服务器通过对数据按照其IO负载大小进行排序,然后在使得数据节点根据该排序依次执行扫描任务,减小全盘扫描给服务器造成的压力,避免出现现有技术中因无序的全盘扫描所导致的服务器压力过大而僵死的问题。此外,由于IO负载较小的数据节点压力小、扫描运行速度更快,对服务器造成的压力也较小,因此服务器先调用IO负载较小的数据节点执行扫描任务时,可进一步减缓服务器上的压力,使服务器运行更加稳定。
进一步的,所述服务模块具体用于:周期性获取与自身建立连接的、该存储系统中的各数据节点的IO负载。
进一步的,所述调度模块302还用于:在将任务指令发送给所述数据节点之前,生成用于阻止为所述数据节点分配写入任务的拦截指令并发送给所述服务器的负载均衡器,以使得所述负载均衡器根据所述拦截指令在预设的拦截时间长度内拦截所有针对该数据节点的访问请求。
在所述数据节点在执行任务指令时,拦截所有针对该数据节点的访问请求,可减小该数据节点的压力,提高该数据节点的扫描速度,缩短该数据节点扫描和上报数据块信息所需的时间。此外,通过拦截所有针对该数据节点的访问请求,使得该数据节点上IO负载减少到最小,因此减小了扫描任务对IO的影响,避免写入或读出因超时访问而失败。
进一步的,在执行更新所述索引中的该数据节点的数据块存储信息的步骤时,所述存储模块303具体用于:
将所述数据节点上报的数据块存储信息中新增的数据块存储信息添加到所述索引数据中,删除所述索引数据中多余的数据块存储信息,以及对存在差异的数据块存储信息进行更新;其中,所述多余的数据块存储信息为所述上报的数据块存储信息中没有的、但存在于所述索引数据中的数据块存储信息。
通过将所述数据节点上报的数据块存储信息中新增的数据块存储信息添加到所述索引数据中、删除所述索引数据中多余的数据块存储信息、以及对存在差异的数据块存储信息进行更新的方式对索引数据进行修复,只需对有存储信息有差异的数据块存储信息进行更新,有利于减小服务器的负荷,缩短索引数据修复所需的时间。
进一步的,所述调度模块302还用于:根据获取的每一数据节点的IO负载确定任务指令的下发时延,以使得服务器根据所述下发时延下发任务指令。
通过计算每一数据节点的IO负载确定任务指令的下发时延,有利于服务器更好的控制每一数据节点扫描和上报所需的时间以及完成一次全盘扫描所需的周期,可以更好的保证IO尽可能少受影响。
进一步的,参见图4,为了找出上报的数据块信息与索引数据中的数据块信息的差异,所述服务器还包括判断模块304,
所述判断模块304,用于根据所述数据节点的任务执行时间和预设执行时间长度,判断所述数据节点的任务执行时间是否超时;其中,所述任务执行时间是指所述数据节点根据所述任务指令进行扫描并上报数据块存储信息的时间;若所述数据节点的任务执行时间大于预设执行时间长度时,则判定所述数据节点的任务执行时间超时;
所述调度模块302,还用于当所述数据节点的任务执行时间超时时,向所述数据节点发送任务终止指令,使该数据节点终止扫描并上报数据块存储信息的任务。
当所述数据节点的任务执行时间超时时,通过终止该数据节点上报的数据块存储信息的任务,以使得排在该数据节点后面的下一数据节点能够正常的进行扫描和上报数据块存储信息,避免服务器陷入死循环而导致无法继续进行全盘扫描。
综上,本发明实施例提供了一种存储系统的索引数据修复方法和存储系统。其中,在所述方法中通过对数据按照其IO负载大小进行排序,然后在使得数据节点根据该排序依次执行扫描任务,减小全盘扫描给服务器造成的压力,避免出现现有技术中因无序的全盘扫描所导致的服务器压力过大而僵死的问题。此外,由于IO负载较小的数据节点压力小、扫描运行速度更快,对服务器造成的压力也较小,因此服务器先调用IO负载较小的数据节点执行扫描任务时,可进一步减缓服务器上的压力,使服务器运行更加稳定。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (8)

1.一种存储系统的索引数据修复方法,其特征在于,所述方法包括:
所述存储系统中的服务器获取与自身建立连接的、该存储系统中的各数据节点的IO负载;
所述服务器生成分别与每一数据节点对应的、包含所述数据节点的标识信息的任务指令,并优先将所述任务指令发送给IO负载较小的数据节点,以使得接收到所述任务指令的数据节点根据所述任务指令扫描并上报与该数据节点对应的数据块存储信息;其中,对数据节点按照其IO负载大小进行排序,使得数据节点根据该排序依次执行扫描任务;
接收所述数据节点上报的数据块存储信息,并将所述上报的数据块存储信息与索引数据中的该数据节点的数据块存储信息进行比较;当所述上报的数据块存储信息与索引数据中的该数据节点的数据块存储信息存在差异时,更新所述索引数据中的该数据节点的数据块存储信息;
所述比较的过程具体包括:
服务器将接收到所述数据节点上报数据块存储信息,和自身管理的对应的这个数据节点镜像中的数据块存储信息进行比对,比对出在上一次到当前汇报完成的这一个周期内,镜像中和所述数据节点实际存储的数据块存储信息有差异的数据块信息,新增的数据块信息,以及镜像中多余的数据块信息;
其中,所述服务器生成分别与每一数据节点对应的、包含所述数据节点的标识信息的任务指令之后,所述方法还包括:
根据获取的所述各数据节点的IO负载确定任务指令的下发时延,以使得服务器根据所述下发时延下发任务指令;
服务器生成分别与每一数据节点对应的、包含所述数据节点的标识信息的任务指令、拦截指令以及下发时延,并存储在服务器中的该数据节点的镜像中,其中,所述镜像中包含有所述数据节点的全部的数据块存储信息的索引信息;根据所述下发时延,向所述服务器中负载均衡器的下发拦截指令,以使得所述负载均衡器根据所述拦截指令在预设的拦截时间长度内拦截所有针对该数据节点的访问请求。
2.如权利要求1所述的方法,其特征在于,所述服务器获取与自身建立连接的、该存储系统中的各数据节点的IO负载,包括:
服务器周期性获取与自身建立连接的、该存储系统中的各数据节点的IO负载。
3.如权利要求1所述的方法,其特征在于,所述更新所述索引中的该数据节点的数据块存储信息,包括:
将所述数据节点上报的数据块存储信息中新增的数据块存储信息添加到所述索引数据中,删除所述索引数据中多余的数据块存储信息,以及对存在差异的数据块存储信息进行更新;其中,所述多余的数据块存储信息为所述上报的数据块存储信息中没有的、但存在于所述索引数据中的数据块存储信息。
4.如权利要求1所述的方法,其特征在于,所述方法还包括:
服务器根据所述数据节点的任务执行时间和预设执行时间长度,判断所述数据节点的任务执行时间是否超时;其中,所述任务执行时间是指所述数据节点根据所述任务指令进行扫描并上报数据块存储信息的时间;若所述数据节点的任务执行时间大于预设执行时间长度时,则判定所述数据节点的任务执行时间超时;
当所述数据节点的任务执行时间超时,所述服务器向所述数据节点发送任务终止指令,使该数据节点终止扫描并上报数据块存储信息的任务。
5.一种存储系统,所述存储系统包括存储服务器,其特征包括,所述服务器包括:
服务模块,用于获取与自身建立连接的、该存储系统中的各数据节点的IO负载;
调度模块,用于生成分别与每一数据节点对应的、包含所述数据节点的标识信息的任务指令,并优先将所述任务指令发送给IO负载较小的数据节点,以使得接收到所述任务指令的数据节点根据所述任务指令扫描并上报与该数据节点对应的数据块存储信息;其中,对数据节点按照其IO负载大小进行排序,使得数据节点根据该排序依次执行扫描任务;
存储模块,用于接收所述数据节点上报的数据块存储信息,并将所述上报的数据块存储信息与索引数据中的该数据节点的数据块存储信息进行比较;当所述上报的数据块存储信息与索引数据中的该数据节点的数据块存储信息存在差异时,更新所述索引数据中的该数据节点的数据块存储信息;
所述比较的过程具体包括:
服务器将接收到所述数据节点上报数据块存储信息,和自身管理的对应的这个数据节点镜像中的数据块存储信息进行比对,比对出在上一次到当前汇报完成的这一个周期内,镜像中和所述数据节点实际存储的数据块存储信息有差异的数据块信息,新增的数据块信息,以及镜像中多余的数据块信息;
其中,所述调度模块,还用于根据获取的所述各数据节点的IO负载确定任务指令的下发时延,以使得服务器根据所述下发时延下发任务指令;
服务器生成分别与每一数据节点对应的、包含所述数据节点的标识信息的任务指令、拦截指令以及下发时延,并存储在服务器中的该数据节点的镜像中,其中,所述镜像中包含有所述数据节点的全部的数据块存储信息的索引信息;根据所述下发时延,向所述服务器中负载均衡器的下发拦截指令,以使得所述负载均衡器根据所述拦截指令在预设的拦截时间长度内拦截所有针对该数据节点的访问请求。
6.如权利要求5所述的存储系统,其特征在于,所述服务模块具体用于:
周期性获取与自身建立连接的、该存储系统中的各数据节点的IO负载。
7.如权利要求5所述的存储系统,其特征在于,在执行更新所述索引中的该数据节点的数据块存储信息的步骤时,所述存储模块具体用于:
将所述数据节点上报的数据块存储信息中新增的数据块存储信息添加到所述索引数据中,删除所述索引数据中多余的数据块存储信息,以及对存在差异的数据块存储信息进行更新;其中,所述多余的数据块存储信息为所述上报的数据块存储信息中没有的、但存在于所述索引数据中的数据块存储信息。
8.如权利要求5所述的存储系统,其特征在于,所述服务器还包括判断模块,
所述判断模块,用于根据所述数据节点的任务执行时间和预设执行时间长度,判断所述数据节点的任务执行时间是否超时;其中,所述任务执行时间是指所述数据节点根据所述任务指令进行扫描并上报数据块存储信息的时间;若所述数据节点的任务执行时间大于预设执行时间长度时,则判定所述数据节点的任务执行时间超时;
所述调度模块,还用于当所述数据节点的任务执行时间超时时,向所述数据节点发送任务终止指令,使该数据节点终止扫描并上报数据块存储信息的任务。
CN201511033269.0A 2015-12-31 2015-12-31 一种存储系统的索引数据修复方法和存储系统 Active CN105550362B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201511033269.0A CN105550362B (zh) 2015-12-31 2015-12-31 一种存储系统的索引数据修复方法和存储系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201511033269.0A CN105550362B (zh) 2015-12-31 2015-12-31 一种存储系统的索引数据修复方法和存储系统

Publications (2)

Publication Number Publication Date
CN105550362A CN105550362A (zh) 2016-05-04
CN105550362B true CN105550362B (zh) 2019-11-19

Family

ID=55829551

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201511033269.0A Active CN105550362B (zh) 2015-12-31 2015-12-31 一种存储系统的索引数据修复方法和存储系统

Country Status (1)

Country Link
CN (1) CN105550362B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109491786A (zh) * 2018-11-01 2019-03-19 郑州云海信息技术有限公司 一种基于云平台的任务处理方法和装置
CN111159131A (zh) * 2018-11-07 2020-05-15 中兴通讯股份有限公司 性能优化方法、装置、设备及计算机可读存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102004778A (zh) * 2010-11-19 2011-04-06 清华大学 一种云环境中的文本索引在线更新方法
CN103049354A (zh) * 2012-12-21 2013-04-17 华为技术有限公司 数据修复方法、数据修复装置以及存储系统
CN103744745A (zh) * 2013-12-13 2014-04-23 北京奇虎科技有限公司 一种数据存储的检测方法、设备及分布式存储系统
CN104156381A (zh) * 2014-03-27 2014-11-19 深圳信息职业技术学院 Hadoop分布式文件系统的副本存取方法、装置和Hadoop分布式文件系统
CN104679772A (zh) * 2013-11-29 2015-06-03 深圳市腾讯计算机系统有限公司 分布式数据仓库中删除文件的方法、装置、设备及系统
CN105069019A (zh) * 2015-07-14 2015-11-18 惠龙易通国际物流股份有限公司 数据库无间断更新方法及系统
CN105162878A (zh) * 2015-09-24 2015-12-16 网宿科技股份有限公司 基于分布式存储的文件分发系统及方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4621273B2 (ja) * 2008-08-05 2011-01-26 株式会社日立製作所 データ同期方法、データ同期プログラム、データベースサーバ装置、および、データベースシステム

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102004778A (zh) * 2010-11-19 2011-04-06 清华大学 一种云环境中的文本索引在线更新方法
CN103049354A (zh) * 2012-12-21 2013-04-17 华为技术有限公司 数据修复方法、数据修复装置以及存储系统
CN104679772A (zh) * 2013-11-29 2015-06-03 深圳市腾讯计算机系统有限公司 分布式数据仓库中删除文件的方法、装置、设备及系统
CN103744745A (zh) * 2013-12-13 2014-04-23 北京奇虎科技有限公司 一种数据存储的检测方法、设备及分布式存储系统
CN104156381A (zh) * 2014-03-27 2014-11-19 深圳信息职业技术学院 Hadoop分布式文件系统的副本存取方法、装置和Hadoop分布式文件系统
CN105069019A (zh) * 2015-07-14 2015-11-18 惠龙易通国际物流股份有限公司 数据库无间断更新方法及系统
CN105162878A (zh) * 2015-09-24 2015-12-16 网宿科技股份有限公司 基于分布式存储的文件分发系统及方法

Also Published As

Publication number Publication date
CN105550362A (zh) 2016-05-04

Similar Documents

Publication Publication Date Title
CN109064345A (zh) 消息处理方法、系统以及计算机可读存储介质
CN106878473A (zh) 一种消息处理方法、服务器集群及系统
CN108337303A (zh) 一种数据同步方法和分布式系统
CN109831500A (zh) Kubernetes集群中配置文件与Pod的同步方法
US20220245173A1 (en) Blockchain-based data synchronization method, apparatus, and computer-readable storage medium
CN104765661B (zh) 一种云存储服务中元数据服务节点的多节点热备方法
CN107291787A (zh) 主备数据库切换方法和装置
EP3623963A1 (en) Log entry duplication method and device, computer equipment, and storage medium
CN111338773A (zh) 一种分布式定时任务调度方法、调度系统及服务器集群
US20230098190A1 (en) Data processing method, apparatus, device and medium based on distributed storage
CN110099084B (zh) 一种保证存储服务可用性的方法、系统及计算机可读介质
CN104750573B (zh) 分布式数据系统数据节点的全局一致性备份和还原方法
US20180121531A1 (en) Data Updating Method, Device, and Related System
CN105049258B (zh) 网络容灾系统的数据传输方法
CN109656992A (zh) 一种数据传输对账方法、装置及设备
CN106933843A (zh) 数据库心跳检测方法以及装置
CN110334072A (zh) 一种分布式文件系统、文件更新方法及装置
CN108664521B (zh) 一种提供序列号的方法、装置、电子设备和可读存储介质
CN107948318A (zh) 多节点间的缓存同步方法和系统
CN111352943A (zh) 实现数据一致性的方法和装置、服务器和终端
CN105550362B (zh) 一种存储系统的索引数据修复方法和存储系统
CN109918261A (zh) 故障监听方法、装置、设备及计算机可读存储介质
CN110456984A (zh) 一种对Ceph存储的块设备进行连续数据保护的方法
CN104753987B (zh) 一种分布式会话管理方法及系统
CN108197222A (zh) 一种异常流数据的修复方法、系统及相关装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant