一种故障数据的下线方法及设备的制作方法

文档序号:6523701阅读:145来源:国知局
一种故障数据的下线方法及设备的制作方法
【专利摘要】本发明的实施例公开了一种故障数据的下线方法及设备,其中,所述方法包括:当请求访问分布式存储系统中的数据节点中存储的数据文件出现异常时,统计所述数据文件当前的异常访问次数;判断所述数据文件当前的异常访问次数是否超过第一预设阈值,如果是,则删除与所述数据文件对应的索引信息,其中,所述索引信息用于定位所述数据文件。通过本发明的实施例,可以保证读请求的正常应答以及故障文件的顺利修复。
【专利说明】一种故障数据的下线方法及设备
【技术领域】
[0001]本发明涉及计算机【技术领域】,尤其涉及一种故障数据的下线方法及设备。
【背景技术】
[0002]Cassandra是依赖DHT (Distributed Hash Table,分布式哈希表)技术实现的一种典型的无中心节点的环形结构的分布式存储系统。Cassandra数据存储空间可以抽象为一个环形结构,数据就是通过hash分散在这个环形存储空间上。每个数据节点负责管理这个环形存储空间上的某一块连续的范围(也叫Range),落在此Range空间上的数据就存储在这个数据节点上。
[0003]在相关技术中,数据是以SSTable (Sorted String Table,有序字符串表)文件格式存储在这个节点的磁盘上。系统启动时,将每个SSTable文件的索引加载到内存中,并在内存中创建一个唯一的SSTable内存对象与该SSTable文件一一对应。当读数据时候,通过内存对象中的索引来定位数据,进而访问SSTable文件读取对应数据。
[0004]在实际应用中,由于存储介质故障而导致整块磁盘不可访问或者磁盘上存储的某些文件部分损坏。文件或磁盘故障后无法读取,内存中的SSTable对象和索引却仍然可以正常访问,当接入节点的读请求访问数据节点上的故障文件时,数据节点的工作线程读取数据,出现I / 0(输入/输出)异常直接退出。
[0005]由此可见,在相关技术中,当数据节点中的文件或磁盘出现故障时,在接收到接入节点对故障文件的读请求访问时,数据节点的工作线程出现异常而直接退出,从而导致接入节点的读请求访问超时。并且,由于数据节点的工作线程的异常退出,导致正常的扫描修复模块也无法成功拿到数据的副本,因而无法对故障数据进行比较和修复。

【发明内容】

[0006]签于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种故障数据的下线方法及设备。
[0007]根据本发明的一个方面,提供了一种故障数据的下线方法,所述方法包括:当请求访问分布式存储系统中的数据节点中存储的数据文件出现异常时,统计所述数据文件当前的异常访问次数;判断所述数据文件当前的异常访问次数是否超过第一预设阈值,如果是,则删除与所述数据文件对应的索引信息,其中,所述索引信息用于定位所述数据文件。
[0008]可选地,在删除与所述数据文件对应的索引信息的步骤之后,所述方法还包括:确定所述数据文件所在的磁盘目录;判断所述磁盘目录下已被删除的索引信息的数据文件所占的比例是否超过第二预设阈值,如果是,则删除所述磁盘目录下的所有数据文件对应的索引信息。
[0009]可选地,所述索引信息包括:内存队列中创建的与所述数据文件对应的内存对象。
[0010]可选地,所述数据文件为有序字符串表SSTable文件。
[0011]可选地,统计所述数据文件当前的异常访问次数的步骤包括:为所述数据文件设置一计数器,当请求访问所述数据文件出现异常时,所述计数器加I。
[0012]根据本发明的另一方面,还提供了一种故障数据的下线设备,所述设备包括:统计模块,用于在请求访问分布式存储系统中的数据节点中存储的数据文件出现异常时,统计所述数据文件当前的异常访问次数;第一判断模块,用于判断所述数据文件当前的异常访问次数是否超过第一预设阈值;第一执行模块,用于在所述第一判断模块的判断结果为是的情况下,删除与所述数据文件对应的索引信息,其中,所述索引信息用于定位所述数据文件。
[0013]可选地,所述设备还包括:确定模块,用于确定所述数据文件所在的磁盘目录;第二判断模块,用于判断所述磁盘目录下已被删除的索引信息的数据文件所占的比例是否超过第二预设阈值;第二执行模块,用于在所述第二判断模块的判断结果为是的情况下,删除所述磁盘目录下的所有数据文件对应的索引信息。
[0014]可选地,所述索引信息包括:内存队列中创建的与所述数据文件对应的内存对象。
[0015]可选地,所述数据文件为有序字符串表SSTable文件。
[0016]可选地,所述统计模块包括:
[0017]检测模块,用于检测当前请求访问所述数据文件是否出现异常;
[0018]计数器,用于在所述检测模块检测到出现异常时,计算访问出现异常的次数。
[0019]由上述技术方案可知,本发明的实施例具有如下有益效果:在本发明实施例中,数据节点对数据文件的异常访问次数进行统计,在数据文件的异常访问次数超过预设阈值时,删除该数据文件对应的索引信息,从而保证了读请求的正常应答,并且,由于及时将故障数据文件下线,也保证了后台数据扫描修复模块能够顺利地进行数据的比较修复工作,缩短故障数据的恢复时间。
[0020]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并目为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的【具体实施方式】。
【专利附图】

【附图说明】
[0021]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0022]图1示出了根据本发明的实施例的故障数据的下线方法100的流程图;
[0023]图2示出了根据本发明的实施例的分布式存储系统的结构示意图;
[0024]图3示出了根据本发明的实施例的Cassandra文件存储系统中发生故障的SSTable文件自动下线的方法300的流程图,以及
[0025]图4示出了根据本发明的实施例的故障数据的下线设备的结构示意图。
【具体实施方式】
[0026]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0027]参见图1,其中示意性地示出了根据本发明的实施例的故障数据的下线方法100的流程图,该方法100应用于如图2的分布式存储系统,该分布式存储系统包括接入节点和数据节点。其中,接入节点负责计算数据及副本的分布;数据节点负责数据副本的存储,在具体实施中,每个节点既可以作为接入节点也可以作为数据节点,例如,在Cassandra系统中,每个节点都既作为接入节点,又作为数据节点而存在。
[0028]本发明实施例中,该方法100的主要目的在于:(I)在数据节点出现文件故障时,能够尽快地自动摘除故障文件的索引信息,从而保证在数据文件发生故障时,能够正常应答接入节点的读访问请求;(2)通过及时将故障文件下线,保证后台数据扫描修复模块能够顺利地进行数据的比较修复工作,缩短故障数据的恢复时间。
[0029]如图1所示,所述方法100主要包括以下步骤S110、S120和S130。方法100始于步骤S110,在步骤SllO中,当请求访问分布式存储系统中的数据节点中存储的数据文件出现异常时,统计该数据文件当前的异常访问次数。
[0030]在实际应用中,例如,图2所示的系统中,当接入节点210请求访问数据节点220中的存储的数据文件时,数据节点220接收到接入节点210发出的访问请求后,读取该数据文件对应的索引信息,对该数据文件进行定位,如果出现异常,则统计当前该数据文件出现异常访问的次数。
[0031]可选地,可以为数据文件设置一计数器,通过该计数器统计数据文件当前的异常访问次数,每次请求访问该数据文件出现异常时,则计数器加I。
[0032]在统计数据文件当前的异常访问次数后,执行步骤S120。在步骤S120中,判断所述数据文件当前的异常访问次数是否超过第一预设阈值,如果是,则说明该数据文件出现故障,执行步骤S130,删除与该数据文件对应的索引信息。如果所述数据文件当前的异常访问次数没有超过第一预设阈值,则暂不认定该数据文件出现故障,结束本次处理。
[0033]在本发明的可选实施例中,删除的与数据文件对应的索引信息可以是在加载数据文件时,在内存队列中生成的与该数据文件唯一对应的内存对象,该内存对象中存储了该数据文件对应的一个或多个索引信息。例如,在Cassandra系统中,当系统启动后,数据节点将SSTable文件的相关信息加载到内存中,这些相关信息称之为SSTable内存对象。数据节点的磁盘上存储有多个SSTable文件,加载完成后,每个SSTable文件对应一个SSTable内存对象。数据节点在内存中维护一个内存队列,内存队列的每个队列项即为一个SSTab I e内存对象。SSTable内存对象中存储的信息包括但不限于=SSTable文件对应的多个索引(其中,每个索引对应SSTable文件的一个数据块(或者称为一行数据(row)) ;SSTable文件的大小;SSTable文件的本地存储路径等。
[0034]在本发明的另一个可选实施例中,在删除所述数据文件的索引信息之后,所述方法100还可以包括:步骤S140,确定所述数据文件所在的磁盘目录;步骤S150,判断所述磁盘目录下已被删除的索引信息的数据文件所占的比例是否超过第二预设阈值,如果是,则在步骤S160删除所述磁盘目录下的所有数据文件对应的索引信息。在本可选实施例中,在判定一个磁盘目录下的一定比例的数据文件已经出现故障后,可以判定该磁盘目录已经出现故障,为了使后续访问该磁盘目录下其他文件时,能够正常应答以及及时恢复该磁盘目录下的其他文件,删除该磁盘目录下的所有数据文件对应的索引信息。[0035]在上述实施例中,第一预设阈值和第二预设阈值可以根据实际情况(例如,网络状况等)进行设置。
[0036]下面以Cassandra文件存储系统为例来介绍本发明的实施例,但本发明的实施例提供的方法并不仅限于Cassandra文件系统。在Cassandra文件系统中数据处理和交换采用有序字符串表(SSTable)文件存储格式,SSTable中存储一组任意有序键-值对的文件,SSTable 一旦完成写入,就不可更改,只能读取。
[0037]图3示意性地示出了 Cassandra文件存储系统中发生故障的SSTable文件自动下线的方法300的流程图。方法300主要通过对SSTable文件的I / O异常访问进行计数,当计数达到一定阈值,确定该SSTable文件故障且影响正常请求的处理,触发SSTable文件摘除,即删除该SSTable文件对应的索引信息;而当磁盘上摘除的故障文件个数超过一定的比例,则确定该磁盘目录下的所有文件都发生故障且影响正常请求的处理,触发磁盘目录的摘除,即摘除该磁盘下的所有SSTable文件对应的索引信息。如图3所示,所述方法300主要包括步骤S310、S320、S330、S340、S350以及S360。方法300始于步骤S310,在步骤S310中,读请求访问文件出现I / O异常,步骤S320将统计该文件异常的计数加1,步骤S330判断文件异常访问次数是否超过预定阈值,如果超过阈值,则在步骤S340中摘除内存队列中的SSTable对象,即摘除该SSTable文件对应的索引信息。然斤在步骤S350中判断该SSTable文件所在的磁盘目录中SSTable文件的摘除比例是否超过指定阈值,如果超过阈值,则在步骤S360中从内存队列中摘除该磁盘目录下剩余的所有SSTable文件的内存对象。
[0038]根据本发明的第二方面,与如上所述的根据本发明的实施例的故障数据的下线方法100相对应,本发明还提供了一种故障数据的下线设备400。
[0039]如图4所示,根据本发明的实施例的故障数据的下线设备可以主要包括统计模块410、第一判断模块420和第一执行模块430。应当理解,图4中所表示的各个模块的连接关系仅为示例,本领域技术人员完全可以采用其它的连接关系,只要在这样的连接关系下各个模块也能够实现本发明的功能即可。
[0040]在本说明书中,各个模块的功能可以通过使用专用硬件、或者能够与适当的软件相结合来执行处理的硬件来实现。这样的硬件或专用硬件可以包括专用集成电路(ASIC)、各种其它电路、各种处理器等。当由处理器实现时,该功能可以由单个专用处理器、单个共享处理器、或者多个独立的处理器(其中某些可能被共享)来提供。另外,处理器不应该被理解为专指能够执行软件的硬件,而是可以隐含地包括、而不限于数字信号处理器(DSP)硬件、用来存储软件的只读存储器(ROM)、随机存取存储器(RAM)、以及非易失存储设备。
[0041]在本发明的实施例中,统计模块410,用于在请求访问分布式存储系统中的数据节点中存储的数据文件出现异常时,统计所述数据文件当前的异常访问次数;第一判断模块420,用于判断所述数据文件当前的异常访问次数是否超过第一预设阈值;第一执行模块430,用于在所述第一判断模块420的判断结果为是的情况下,删除与所述数据文件对应的索引信息,其中,所述索引信息用于定位所述数据文件。
[0042]根据本发明的实施例,所述故障数据的下线设备400还可以包括一个或者多个可选模块,以实现额外或者附加的功能,然而这些可选模块对于实现本发明的目的而言并非是不可或缺的,根据本发明的实施例的故障数据的下线设备40完全可以在没有这些可选模块的情况下,实现本发明的目的。这些可选模块尽管未在图4中示出,但它们与上述各模块之间的连接关系可以由本领域技术人员根据下述教导而容易地得出。
[0043]可选地,在本发明的实施例中,所述设备400还包括:确定模块,用于确定所述数据文件所在的磁盘目录;第二判断模块,用于判断所述磁盘目录下已被删除的索引信息的数据文件所占的比例是否超过第二预设阈值;第二执行模块,用于在所述第二判断模块的判断结果为是的情况下,删除所述磁盘目录下的所有数据文件对应的索引信息。
[0044]可选地,在本发明的实施例中,所述索引信息包括:内存队列中创建的与所述数据文件对应的内存对象。
[0045]可选地,在本发明的实施例中,所述数据文件为有序字符串表SSTable文件。
[0046]可选地,在本发明的实施例中,所述统计模块410可以包括:检测模块,用于检测当前请求访问所述数据文件是否出现异常;计数器,用于在所述检测模块检测到出现异常时,计算访问出现异常的次数。
[0047]通过本发明实施例提供的上述技术方案能够在数据节点出现磁盘或文件故障的第一时间自动摘除故障文件或磁盘目录,从而保证了正常读请求不受影响以及数据扫描修复机制能够及时启动并顺利执行修复,并且缩短了故障数据的恢复时间,提高了数据的可靠性。
[0048]在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0049]在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0050]类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循【具体实施方式】的权利要求书由此明确地并入该【具体实施方式】,其中每个权利要求本身都作为本发明的单独实施例。
[0051 ] 本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。[0052]此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0053]本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的浏览器客户端中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
[0054]应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
【权利要求】
1.一种故障数据的下线方法,所述方法包括: 当请求访问分布式存储系统中的数据节点中存储的数据文件出现异常时,统计所述数据文件当前的异常访问次数; 判断所述数据文件当前的异常访问次数是否超过第一预设阈值,如果是,则删除与所述数据文件对应的索引信息,其中,所述索引信息用于定位所述数据文件。
2.根据权利要求1所述的方法,其中,在删除与所述数据文件对应的索引信息的步骤之后,所述方法还包括: 确定所述数据文件所在的磁盘目录; 判断所述磁盘目录下已被删除的索引信息的数据文件所占的比例是否超过第二预设阈值,如果是,则删除所述磁盘目录下的所有数据文件对应的索引信息。
3.根据权利要求1或2所述的方法,其中,所述索引信息包括:内存队列中创建的与所述数据文件对应的内存对象。
4.根据权利要求3所述的方法,其中,所述数据文件为有序字符串表SSTable文件。
5.根据权利要求1所述的方法,其中,统计所述数据文件当前的异常访问次数的步骤包括: 为所述数据文件设置一计数器,当请求访问所述数据文件出现异常时,所述计数器加1
6.一种故障数据的下线设备,所述设备包括: 统计模块,用于在请求访问分布式存储系统中的数据节点中存储的数据文件出现异常时,统计所述数据文件当前的异常访问次数; 第一判断模块,用于判断所述数据文件当前的异常访问次数是否超过第一预设阈值;第一执行模块,用于在所述第一判断模块的判断结果为是的情况下,删除与所述数据文件对应的索引信息,其中,所述索引信息用于定位所述数据文件。
7.根据权利要求6所述的设备,所述设备还包括: 确定模块,用于确定所述数据文件所在的磁盘目录; 第二判断模块,用于判断所述磁盘目录下已被删除的索引信息的数据文件所占的比例是否超过第二预设阈值; 第二执行模块,用于在所述第二判断模块的判断结果为是的情况下,删除所述磁盘目录下的所有数据文件对应的索引信息。
8.根据权利要求6或7所述的设备,其中,所述索引信息包括:内存队列中创建的与所述数据文件对应的内存对象。
9.根据权利要求8所述的设备,其中,所述数据文件为有序字符串表SSTable文件。
10.根据权利要求6所述的设备,其中,所述统计模块包括: 检测模块,用于检测当前请求访问所述数据文件是否出现异常; 计数器,用于在所述检测模块检测到出现异常时,计算访问出现异常的次数。
【文档编号】G06F17/30GK103744859SQ201310684986
【公开日】2014年4月23日 申请日期:2013年12月13日 优先权日:2013年12月13日
【发明者】王 锋 申请人:北京奇虎科技有限公司, 奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1