数据存储系统的硬盘维护方法和装置
技术领域
本发明涉及硬盘处理领域,具体而言,涉及一种数据存储系统的硬盘维护方法和装置。
背景技术
现在各种应用系统的存储设备上,信息争议数据存储的方式高速增长着,不断推进全球信息化的进程。随之而来的是海量信息存储的需求不断增加。对应的,对文件服务器和数据库服务器的存储需求也在不断增长,现有的信息存储一般以服务器为中心,使用存储设备作为服务器的外设应用。
在使用硬盘搭建的海量数据存储系统中需要使用大量的硬盘。如,网盘等应用,每时都有大量的用户使用网盘上传、下载文件,大量的文件存储需要海量的数据存储系统。
硬盘作为常见的存储设备,是保存用户资料的重要介质。但是硬盘作为物理设备也会发生故障,尤其是廉价硬盘搭建的海量数据存储系统,面对大量的数据访问量,更加容易产生坏盘,为了保证海量数据存储系统中数据的有效性和可用性,通常需要检测海量数据存储系统中各个硬盘的损坏情况。
具体地,现有技术中通常使用全量扫描的方式扫描海量数据存储系统的硬盘,可以在预定时间扫描海量数据存储系统的所有硬盘。采用这种方式,扫描全部的硬盘需要大量的时间才能扫描完成,不能及时发现系统中坏盘,检测到系统中坏盘的效率低;并且全部扫描硬盘长期占用系统的处理器,影响系统的性能,从而影响到系统中其他应用的运行。
针对上述的检测存储系统中的坏盘的效率低的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种数据存储系统的硬盘维护方法和装置,以至少解决检测存储系统中的坏盘的效率低的技术问题。
根据本发明实施例的一个方面,提供了一种数据存储系统的硬盘维护方法,包括:获取系统对第一硬盘中的存储区域执行访问操作失败的操作结果;判断操作结果所指示的执行访问操作失败的存储区域的数量是否大于预设阈值;若执行访问操作失败的存储区域的数量大于预设阈值,则对第一硬盘执行硬盘扫描;根据执行硬盘扫描的结果判断第一硬盘是否发生故障。
根据本发明实施例的另一方面,还提供了一种数据存储系统的硬盘维护装置,包括:第一获取模块,用于获取系统中对第一硬盘中的存储区域执行访问操作失败的操作结果;第一判断模块,用于判断操作结果所指示的执行访问操作失败的存储区域的数量是否大于预设阈值;扫描模块,用于在执行访问操作失败的存储区域的数量大于预设阈值的情况下,对第一硬盘执行硬盘扫描;第二判断模块,用于根据执行硬盘扫描的结果判断第一硬盘是否发生故障。
通过本发明实施例,仅对执行访问操作失败的存储区域的数量超过预设阈值的第一硬盘进行硬盘扫描,从而在对系统中的硬盘进行坏盘检查时,无需对所有的硬盘进行坏盘扫描,仅仅是对执行访问操作失败的存储区域的数量超过预设阈值的第一硬盘进行硬盘扫描,从而大大减少了对硬盘进行扫描的工作量,可以快速发现坏盘。解决了现有技术中检测存储系统中的坏盘的效率低的问题,无需全量扫描系统中的硬盘即可快速发现坏盘,实现了快速检测出系统中坏盘、提高了检测系统中的坏盘的效率的效果,以确保系统的数据安全。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的数据存储系统的硬盘维护方法的环境示意图;
图2是根据本发明实施例的存储系统中硬盘分区的示意图;
图3是根据本发明实施例的数据存储系统的硬盘维护方法的流程图;
图4是根据本发明实施例的存储区域的各个工作状态的转换关系示意图;
图5是根据本发明实施例的一种可选的数据存储系统的硬盘维护方法的流程图;
图6是根据本发明实施例的判断出第一硬盘发生故障时第一硬盘的存储区域的状态示意图;
图7是根据本发明实施例的坏盘自动处理的流程图;
图8是根据本发明实施例的进行数据迁移之前系统的存储区域的工作状态示意图;
图9是根据本发明实施例的完成数据迁移之后系统的存储区域的工作状态示意图;
图10是根据本发明实施例的更换第一硬盘的流程图;
图11是根据本发明实施例的IDC运维支撑系统处理更换第一硬盘的请求的流程;
图12是根据本发明实施例的恢复第一硬盘的服务之后的存储区域的工作状态示意图;
图13是根据本发明实施例的数据存储系统的硬盘维护装置的示意图;以及
图14是根据本发明实施例的一种终端的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本发明实施例,提供了一种数据存储系统的硬盘维护方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
可选地,在本实施例中,上述数据存储系统的硬盘维护方法可以应用于如图1所示的第一终端101和服务器102所构成的硬件环境中。如图1所示,第一终端101通过网络或数据线与服务器102连接,对服务器102的硬盘进行故障扫描;也可以直接在服务器102上直接使用数据存储系统的硬盘维护方法。
该硬件环境中的服务器102还可以为与第一终端相同的终端。
上述网络包括但不限于:广域网、城域网或局域网。在本发明实施例中,上述的第一终端和第二终端可以为移动终端、个人电脑上,具体地,第一终端和第二终端可以为智能手机、平板电脑、PDA等终端。
图2是根据本发明实施例的存储系统中硬盘分区的示意图。该图中示出了使用数据存储系统的硬盘维护方法的软件环境。
如图2所示,存储系统可以包括若干个数据仓库(即set),存储系统中的每个数据仓库set采用一份数据多份存储的方式。每个数据仓库set中有一台控制机器(即master机器)和若干对的存储机器,每台存储机器上挂载一块系统盘和若干块数据盘(该实施例中的数据盘即为上述实施例中的第一硬盘,同一对的不同机器的硬盘个数和容量相同),系统盘用于安装操作系统和应用程序,执行访问请求(如读写数据的操作)时直接操作数据盘。在该实施例中,可以按固定大小把每个数据盘(即上述实施例中的第一硬盘)划分成若干存储区域(即chunk),各个存储区域chunk之间相互独立。
以一份数据两份存储的方式为例,每两台存储机器存储相同的数据,互为对等机;对等机上相同位置的数据硬盘(即上述实施例中的第一硬盘)存储相同的数据,互为对等盘;对等盘上相同顺序的存储区域chunk按同样的方式存储相同的数据,互为对等存储区域chunk。
其中,数据仓库(set):包含若干对用于存储数据的机器和一个管理存储机器的master机器。
图2所示的实施例中,存储系统包括三个数据仓库set:数据仓库1(即set1)、数据仓库2(即set2)和数据仓库3(即set3)。其中,set1中包括一个控制机器(即master机器),还包括两对存储机器:存储机器A1和存储机器A2、存储机器B1和存储机器B2,具体地,存储机器A1和存储机器A2中均包括一个系统盘、数据盘1和数据盘2,数据盘1均包括chunk1和chunk2。
在图2所示的实施例中,存储机器A1和存储机器A2为对等机,存储机器B1和存储机器B2为对等机。
在上述实施例中,对第一硬盘中的存储区域执行访问操作失败的操作结果可以从系统的数据仓库set的master机器上读取。
根据本发明实施例,提供了一种数据存储系统的硬盘维护方法,如图3所示,该方法包括如下步骤:
步骤S302:获取系统对第一硬盘中的存储区域执行访问操作失败的操作结果。
步骤S304:判断操作结果所指示的执行访问操作失败的存储区域的数量是否大于预设阈值。
步骤S306:若执行访问操作失败的存储区域的数量大于预设阈值,则对第一硬盘执行硬盘扫描。
步骤S308:根据执行硬盘扫描的结果判断第一硬盘是否发生故障。
在本发明的上述实施例中,在执行步骤S304之后,该方法还包括:若执行访问操作失败的存储区域的数量不大于预设阈值,则确认第一硬盘没有损坏,不对该第一硬盘执行硬盘扫描的操作。
采用本发明实施例,可以在获取系统对第一硬盘中的存储区域执行访问操作失败的操作结果,并据此执行访问操作失败的操作结果判断该第一硬盘是否需要进行硬盘扫描。具体地,可以通过判断操作结果所指示的执行访问操作失败的存储区域的数量是否大于预设阈值,若执行访问操作失败的存储区域的数量大于预设阈值,则确定对第一硬盘执行硬盘扫描,并根据执行硬盘扫描的结果判断第一硬盘是否发生故障。
上述实施例中的操作结果可以是预先记录的系统对第一硬盘中的存储区域执行访问操作失败的操作结果。
在本发明实施例中,仅对执行访问操作失败的存储区域的数量超过预设阈值的第一硬盘进行硬盘扫描,从而在对系统中的硬盘进行坏盘检查时,无需对所有的硬盘进行坏盘扫描,仅仅是对执行访问操作失败的存储区域的数量超过预设阈值的第一硬盘进行硬盘扫描,从而大大减少了对硬盘进行扫描的工作量,可以快速发现坏盘。解决了现有技术中检测存储系统中的坏盘的效率低的问题,无需全量扫描系统中的硬盘即可快速发现坏盘,实现了快速检测出系统中坏盘、提高了检测系统中的坏盘的效率的效果,以确保系统的数据安全。
其中,上述实施例中的系统可以为存储系统,具体地,可以为海量存储系统,也可以是海量存储系统中的子系统,还可以是个人电脑的系统;每个存储系统中可以包括一个或多个第一硬盘,每个第一硬盘可以包括一个或多个存储区域chunk。存储区域chunk可以为硬盘上一块大小固定的连续存储区域,具体地,存储区域的大小可以为2GB,每个第一硬盘均可以包括若干个chunk。
上述实施例中的步骤S306可以通过如下方法实现:使用硬盘检测工具探测第一硬盘是否损坏,以对第一硬盘进行硬盘扫描,并根据执行硬盘扫描的结果判断第一硬盘是否发生故障。
根据图2所示的实施例,可以获取从数据仓库set1的master机器上读取存储机器A1的数据盘1的存储区域执行访问操作的操作结果,判断操作结果所指示的执行访问操作失败的存储区域的数量是否大于预设阈值,在执行访问操作失败的存储区域的数量大于预设阈值的情况下,则使用硬盘检测工具探测存储机器A1的数据盘1,并根据执行硬盘扫描的结果判断存储机器A1的数据盘1是否发生故障。
根据本发明的上述实施例,获取系统对第一硬盘中的存储区域执行访问操作失败的操作结果可以包括:获取客户端的访问请求,其中,访问请求中携带有访问地址;对访问地址所指向的存储区域执行访问操作;记录存储区域执行访问操作失败的操作结果。
在本发明的上述实施例中,在获取访问请求之后,该访问请求可以为对硬盘执行读/写操作的请求,该访问请求中携带有访问地址,如存储区域的ID;访问请求中还会携带有在存储区域中文件的索引ID,每个存储区域中均有一段位置存储该存储区域内每个文件的索引对应的偏移和文件大小。
具体地,对访问地址指向的存储区域执行访问操作,并通过存储系统的master机器记录该访问地址指向的存储区域执行访问操作的操作结果。
在上述实施例中,是通过客户端生成的访问请求触发对硬盘执行读写操作。
在海量数据存储系统会存在一种情况:部分冷数据长期不被用户访问,进而部分硬盘的读写请求量(即上述实施例中的访问请求)极低,在上述实施例中,极少的访问请求的量,在执行上述实施例中的步骤S204时,执行访问操作失败的存储区域的数量可能一直不大于预设阈值,则不对第一硬盘执行硬盘扫描,从而无法发现硬盘故障。
为了保证冷数据的安全,本发明还提供了另外一种可选的实施例在该另外一种可选的实施例中,在获取客户端的访问请求之后,方法还可以包括:统计第一硬盘接收到的访问请求的请求次数;在请求次数小于预设请求次数的情况下,触发第一硬盘执行访问操作。
具体地,在该实施例中可以通过运营系统定期主动触发第一硬盘的访问操作(如读写操作),并记录第一硬盘的存储区域执行访问操作的操作结果,在操作结果指示执行访问操作失败的存储区域的数量大于预设阈值的情况下,对第一硬盘执行硬盘扫描,以确定第一硬盘是否发生故障。通过上述实施例,可以对存储系统中存储冷数据的硬盘进行快速检测,发现坏盘,保证冷数据的安全性。
其中,上述实施例中的冷数据为:活动不频繁、很少访问或者永远不会被访问的数据。
根据本发明的上述实施例,在记录存储区域执行访问操作失败的操作结果之后,方法还可以包括:将操作结果所指示的执行访问操作失败的存储区域的工作状态标记为不可用状态。判断操作结果所指示的执行访问操作失败的存储区域的数量是否大于预设阈值可以包括:统计工作状态标记为不可用状态的存储区域的数量;在工作状态标记为不可用状态的存储区域的数量大于预设阈值的情况下,判断出执行访问操作失败的存储区域的数量大于预设阈值;在工作状态标记为不可用状态的存储区域的数量不大于预设阈值的情况下,判断出执行访问操作失败的存储区域的数量不大于预设阈值。
在系统中存在存储区域状态表,该存储区域状态表中保存有系统中各个第一硬盘的各个存储区域的工作状态。下面结合附图4详细介绍存储区域chunk的工作状态,如图4所示存储区域的工作状态的转换关系如下:
正常访问状态(即normal状态):存储区域(即第一硬盘上的存储空间)在该工作状态下,可以读写数据;读写失败后转化为error_online状态,数据迁出后转化为free状态。
异常访问状态(即error_online状态):存储空间在该工作状态下,存储了数据,不可读写,对等存储区域chunk的状态为ro_single状态;恢复正常后转化为normal状态,数据迁出后转化为error_free状态。
只读状态(即ro_single状态):存储空间在该工作状态下,不可写入数据,对等存储区域chunk的状态为error_online;对等存储区域chunk恢复正常后转化为normal状态,数据迁出后转化为free状态。
空闲状态(即free状态):存储空间在该工作状态下,没有存储数据,可以作为存储区域chunk迁移的目的,读写失败后转化为error_free状态,数据迁入后转化为normal状态。
异常空闲状态(即error_free状态):存储空间在该工作状态下,没有存储数据,不可作为chunk迁移的目的;正常后转换为free状态。
根据本发明的上述实施例,把数据或存储空间的工作状态标记为不可用状态为置脏操作,该操作的粒度可以是存储区域chunk、第一硬盘、存储机器;把数据或存储空间的工作状态标记为可用状态为恢复操作,该操作的粒度可以是存储区域chunk、第一硬盘、存储机器,恢复操作是置脏的逆操作。
上述实施例中的异常访问状态和异常空闲状态为不可用状态。
下面结合附图5详细介绍本发明上述实施例。
如图5所示,该实施例可以包括如下步骤:
步骤S501:获取客户端的访问请求。
步骤S502:对访问地址所指向的存储区域执行访问操作。
步骤S503:记录存储区域执行访问操作失败的操作结果。
具体地,对访问地址指向的存储区域执行访问操作,并通过存储系统的master机器记录该访问地址指向的存储区域执行访问操作的操作结果。
在第一硬盘接收到的访问请求的请求次数小于预设请求次数的情况下,触发第一硬盘执行访问操作。
具体地,可以访问量极小的情况下,定时触发第一硬盘执行访问操作。
在该实施例中还可以定时触发error_online状态的存储区域chunk的读写操作。
步骤S504:修改操作结果所指示的执行访问操作失败的存储区域的工作状态为不可用状态。
可以在读写存储区域chunk时发生的IO(输入输出设备接口)错误时,将存储区域chunk的工作状态标记成error_online状态。具体地,可以通过修改存储区域状态表中的状态数据实现。
在上述实施例中,还可以在人工发现硬盘损坏时手动将第一硬盘上的所有chunk标记成error_online状态或error_free状态。
需要进一步说明的是,如果没有发生IO(输入输出设备接口)错误,则将chunk的状态修改为normal状态。
步骤S505:判断操作结果所指示的执行访问操作失败的存储区域的数量是否大于预设阈值。
步骤S506:若执行访问操作失败的存储区域的数量大于预设阈值,则对第一硬盘执行硬盘扫描。
步骤S507:根据执行硬盘扫描的结果判断第一硬盘是否发生故障。
具体地,第一硬盘上状态为不可用状态(包括error_online状态、error_free状态)的存储区域chunk的数量超过预设阀值后,认为硬盘可能发生物理损坏;可以通过硬盘厂商提供的检测工具或通用的硬盘检测工具确认硬盘是否存在故障。
在执行步骤S507之后,该方法还可以包括步骤S508:若执行访问操作失败的存储区域的数量不大于预设阈值,则确认第一硬盘没有损坏,不对该第一硬盘执行硬盘扫描的操作。
上述的步骤S505至步骤S507的实现方法与上述的步骤S204至步骤S208的实现方法相同,在此不再赘述。
图6是根据本发明实施例的判断出第一硬盘发生故障时第一硬盘的存储区域的状态示意图。
如图6所示,存储机器A1上的数据盘1中包括两个状态为异常访问状态的存储区域、一个状态为正常访问状态的存储区域以及一个状态为空闲状态的存储区域。通过本发明的上述实施例判断出存储机器A1上的数据盘1发生故障。
根据本发明的上述实施例,在根据执行硬盘扫描的结果判断第一硬盘是否发生故障之后,方法还可以包括:若根据执行硬盘扫描的结果判断出第一硬盘发生故障,则将第一硬盘上存储的数据迁移至系统中第二硬盘的存储区域中,并停止第一硬盘上的访问进程;对第一硬盘执行硬盘修复操作;若执行硬盘修复操作成功,则重新启动第一硬盘的访问进程;若执行硬盘修复操作失败,则更换第一硬盘。
下面结合附图7详细介绍本发明实施例。
如图7所示,该实施例可以包括如下步骤:
步骤S701:根据执行硬盘扫描的结果判断出第一硬盘发生故障。
步骤S702:将第一硬盘上存储的数据迁移至系统中第二硬盘的存储区域中,并停止第一硬盘上的访问进程。
具体地,将第一硬盘上存储的数据迁移至系统中第二硬盘的存储区域中可以包括:从存储区域状态表中读取成对的处于空闲访问状态的存储区域的地址,其中,存储区域状态表中记录有系统中各个存储区域的工作状态,成对的处于空闲访问状态的存储区域位于第二硬盘;读取第一硬盘的对等盘中存储的数据,其中,第一硬盘的对等盘用于备份第一硬盘中存储的数据;将读取到的对等盘中存储的数据存储至成对的处于空闲访问状态的存储区域的地址中。其中,第二硬盘可以为多个。
进一步需要说明的是,以对等盘(在图8所示实施例中的存储机器A2的数据盘1)为源,把对等盘上存储的数据迁移到其它成对的处于可用状态的存储区域chunk;如果从对等盘读取数据失败,则尝试从故障硬盘读取在对等盘上读取失败的数据。
步骤S703:对第一硬盘执行硬盘修复操作。
具体地,在该进行硬盘修复操作的过程中,存储机器读写数据盘(即上述实施例中的第一硬盘)时不通过linux系统的普通输入输出接口(即IO接口),基于主机总线适配器(即Host Bus Adaper,HBA卡)驱动,实现对第一硬盘的IO接口的控制;通过第一硬盘的ID读写硬盘,防止乱序;对异常离线的硬盘进行重试,避免部分硬盘异常离线问题。
在该实施例中,发生故障的硬盘可以通过硬盘厂商提供的修复工具或其它通用的硬盘修复工具进行修复。
上述的HBA卡是一个在服务器和存储装置之间提供输入/输出处理和物理连接的电路板或集成电路适配器。
步骤S704:判断执行硬盘修复操作是否成功。
其中,在执行硬盘修复操作成功的情况下,执行步骤S706;在执行硬盘修复操作失败的情况下,执行步骤S705。
步骤S705:更换第一硬盘。
步骤S706:重新启动第一硬盘的访问进程。
需要进一步说明的是,在将第一硬盘上存储的数据迁移至系统中第二硬盘的存储区域中之前,方法还可以包括:将存储区域状态表中记录的第一硬盘上处于正常访问状态的存储区域的工作状态修改为异常访问状态;将存储区域状态表中记录的第一硬盘上处于空闲状态的存储区域的工作状态修改为异常空闲状态;以及将存储区域状态表中记录的第一硬盘的对等盘上处于正常访问状态的存储区域的工作状态修改为只读状态,其中,异常访问状态和异常空闲状态均为不可用状态。
可选地,在将读取到的对等盘中存储的数据存储至成对的处于可用状态的存储区域的地址中之后,方法还可以包括:将存储区域状态表中记录的第一硬盘的所有存储区域的工作状态修改为异常空闲状态;将存储区域状态表中记录的第一硬盘的对等盘的所有存储区域的工作状态修改为空闲状态;以及将存储区域状态表中记录的成对的处于空闲访问状态的存储区域的工作状态修改为正常访问状态。
如图8所示,在确定第一硬盘发生故障之后,将第一硬盘上为normal状态的存储区域的工作状态修改为error_online状态;将第一硬盘上为free状态的chunk修改为error_free状态;把对等盘(在该实施例中为存储机器A2上的数据盘1)上normal状态的chunk修改为ro_single状态。
图9是根据本发明实施例的完成数据迁移之后系统的存储区域的工作状态示意图。
如图9所示,数据迁移完成后,将第一硬盘的所有chunk标记成error_free状态,对等盘的所有chunk标记成free状态,迁移的目的chunk标记成normal状态。
在修改完各个存储区域的工作状态之后,停止发生故障的第一硬盘的访问进程。该访问进程可以包括读/写进程。
在本发明另外一个可选的实施例中,在根据执行硬盘扫描的结果判断第一硬盘是否发生故障之后,方法还可以包括:若执行硬盘扫描的结果判断出第一硬盘发生故障,则停止第一硬盘的访问进程,并对第一硬盘执行硬盘修复处理;在对第一硬盘执行硬盘修复处理完成之后,获取第一硬盘上存储的数据的校验数据;使用校验数据恢复第一硬盘上存储的数据。
根据本发明的上述实施例,在对第一硬盘执行硬盘修复之前,可以先将第一硬盘上的数据迁移至第二硬盘,该实施例中的数据迁移方法与上述实施例中的迁移方法相同,然后获取第一硬盘上存储的数据的校验数据,具体地,可以从第二硬盘上读取该校验数据。
在该实施例中,系统的数据存储方式可以是使用M+N份数据存储M份数据的方式,该中存储方式适用于访问量较低的场景,其中N份是校验数据,在数据丢失的情况下用于恢复数据。在该实施例中,可以在判断出第一硬盘为故障硬盘之后,修复硬盘,若修复失败则更换硬盘,并恢复数据和服务。
如,M=9,N=3,则可以使用12份数据存储9份数据,在12份数据中发生数据丢失或损坏时,如丢失1份,变为11份,则可以从11份数据中抽取9份数据进行数据恢复。
根据本发明上述实施例,对发生故障的第一硬盘进行硬盘更换的步骤可以通过图10和图11中所示的硬盘维护方法实现。
在该实施例中,此步骤可以通过互联网数据中心(即IDC)的运维支撑系统的支持实现,具体地,可以通过IDC运维支撑系统提供的线上处理硬件更换各步骤的接口。
如图10所示,上述实施例可以包括如下步骤:
步骤S1001:向互联网数据中心的运维支撑系统提交更换第一硬盘的请求。
步骤S1002:查询互联网数据中心的运维支撑系统依据该请求创建的事件单的状态。
步骤S1003:根据判断事件单的状态判断第一硬盘是否更换完成。
其中,在第一硬盘更换完成的情况下,执行步骤S1004;在第一硬盘未更换完成的情况下,返回执行步骤S1002。
步骤S1004:检测更换后的第一硬盘是否恢复服务。
其中,上述的服务可以包括访问进程。
在第一硬盘恢复服务的情况下,执行步骤S1005;在第一硬盘未恢复服务的情况下,执行步骤S1006。
步骤S1005:通知互联网数据中心的运维支撑系统第一硬盘更换成功。
步骤S1006:检测更换的第一硬盘是否发生故障。
其中,在更换的第一硬盘发生故障的情况下,执行步骤S1007;在更换的第一硬盘未发生故障的情况下,执行步骤S1008。
步骤S1007:通知互联网数据中心的运维支撑系统重新更换第一硬盘。
步骤S1008:通知工作人员请求人工处理。
如图11所示,上述实施例可以包括如下步骤:
步骤S1101:依据接收到的更换第一硬盘的请求创建事件单。
步骤S1102:发出更换第一硬盘的更换通知。
步骤S1103:接收换盘时间。
步骤S1104:更换第一硬盘。
步骤S1105:更新事件单的状态。
步骤S1106:等待硬盘更换成功的通知。
在该步骤中的通知即为上述实施例中步骤S1005或步骤S1007的通知。
步骤S1107:根据接收到的通知判断是否成功更换第一硬盘。
其中,若判断出成功更换第一硬盘,则结束流程;若判断出未成功更换第一硬盘,则返回执行步骤S1102。
在本发明的上述实施例中,IDC的运维支撑系统通知机房驻场工程师有硬盘需要更换;机房驻场工程师根据需求列表和紧急程度安排操作时间;机房驻场工程师更换硬盘;机房驻场工程师更新IDC的运维支撑系统中换盘流程的状态,更新为已换盘;定时查询换盘流程的状态,如果状态为已换盘则进入恢复服务步骤,否则继续查询。
根据本发明的上述实施例,重新启动第一硬盘的访问进程之后,如果启动失败并且失败原因是硬盘故障,则通知IDC的运维支撑系统硬盘更换失败需要重新更换,流程跳转至更换图11所示实施例中的步骤S1102;如果启动失败并且失败原因不是硬盘故障,则转由人工处理,执行步骤S1008,人工处理完成后重新进行恢复服务步骤。如果启动成功则进入下一步。
如图12所示,在通过上述方法更换第一硬盘之后,将设置硬盘上所有的chunk状态为free状态。
通过本发明实施例,无需对系统中的全部硬盘进行扫描,以发现硬盘,可以提高坏盘发现的效率,缩短坏盘发现时间,降低数据风;并且可以避免扫描全量硬盘对存储系统性能带来的影响;通过上述实施例可以自动提交换盘请求,节约人工处理坏盘带来的人力成本;并且上述实施例中通过自动进行数据迁移,避免人工进行数据迁移发生的误操作引起数据丢失或系统故障。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的硬盘维护方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的硬盘维护方法。
实施例2
根据本发明实施例,还提供了一种用于实施上述方法的数据存储系统的硬盘维护装置,如图13所示,该装置可以包括:第一获取模块10、第一判断模块30、扫描模块50以及第二判断模块70。
其中,第一获取模块,用于获取系统对第一硬盘中的存储区域执行访问操作失败的操作结果。
第一判断模块,用于判断操作结果所指示的执行访问操作失败的存储区域的数量是否大于预设阈值。
扫描模块,用于在执行访问操作失败的存储区域的数量大于预设阈值的情况下,对第一硬盘执行硬盘扫描。
第二判断模块,用于根据执行硬盘扫描的结果判断第一硬盘是否发生故障。
在本发明的上述实施例中,该装置还可以包括:确认模块,用于若执行访问操作失败的存储区域的数量不大于预设阈值,则确认第一硬盘没有损坏,不对该第一硬盘执行硬盘扫描的操作。
采用本发明实施例,可以在获取系统对第一硬盘中的存储区域执行访问操作失败的操作结果,并据此执行访问操作失败的操作结果判断该第一硬盘是否需要进行硬盘扫描。具体地,可以通过判断操作结果所指示的执行访问操作失败的存储区域的数量是否大于预设阈值,若执行访问操作失败的存储区域的数量大于预设阈值,则确定对第一硬盘执行硬盘扫描,并根据执行硬盘扫描的结果判断第一硬盘是否发生故障。
在本发明实施例中,仅对执行访问操作失败的存储区域的数量超过预设阈值的第一硬盘进行硬盘扫描,从而在对系统中的硬盘进行坏盘检查时,无需对所有的硬盘进行坏盘扫描,仅仅是对执行访问操作失败的存储区域的数量超过预设阈值的第一硬盘进行硬盘扫描,从而大大减少了对硬盘进行扫描的工作量,可以快速发现坏盘。解决了现有技术中检测存储系统中的坏盘的效率低的问题,无需全量扫描系统中的硬盘即可快速发现坏盘,实现了快速检测出系统中坏盘、提高了检测系统中的坏盘的效率的效果,以确保系统的数据安全。
其中,上述实施例中的系统可以为存储系统,具体地,可以为海量存储系统,也可以是海量存储系统中的子系统,还可以是个人电脑的系统;每个存储系统中可以包括一个或多个第一硬盘,每个第一硬盘可以包括一个或多个存储区域chunk。存储区域chunk可以为硬盘上一块大小固定的连续存储区域,具体地,存储区域的大小可以为2GB,每个第一硬盘均可以包括若干个chunk。
在上述实施例中,对第一硬盘中的存储区域执行访问操作失败的操作结果可以从系统的数据仓库set的master机器上读取。
根据本发明的上述实施例中的扫描模块可以通过如下方法实现:使用硬盘检测工具探测第一硬盘是否损坏,以对第一硬盘进行硬盘扫描,并根据执行硬盘扫描的结果判断第一硬盘是否发生故障。
根据图2所示的实施例,可以获取从数据仓库set1的master机器上读取存储机器A1的数据盘1的存储区域执行访问操作的操作结果,判断操作结果所指示的执行访问操作失败的存储区域的数量是否大于预设阈值,在执行访问操作失败的存储区域的数量大于预设阈值的情况下,则使用硬盘检测工具探测存储机器A1的数据盘1,并根据执行硬盘扫描的结果判断存储机器A1的数据盘1是否发生故障。
根据本发明上述实施例,第一获取模块可以包括:第一获取子模块,用于获取客户端的访问请求,其中,访问请求中携带有访问地址;第一执行模块,用于对访问地址所指向的存储区域执行访问操作;第一记录模块,用于记录存储区域执行访问操作失败的操作结果。
在本发明的上述实施例中,在获取访问请求之后,该访问请求可以为对硬盘执行读/写操作的请求,该访问请求中携带有访问地址,如存储区域的ID;访问请求中还会携带有在存储区域中文件的索引ID,每个存储区域中均有一段位置存储该存储区域内每个文件的索引对应的偏移和文件大小。
具体地,对访问地址指向的存储区域执行访问操作,并通过存储系统的master机器记录该访问地址指向的存储区域执行访问操作的操作结果。
在上述实施例中,是通过客户端生成的访问请求触发对硬盘执行读写操作。
在海量数据存储系统会存在一种情况:部分冷数据长期不被用户访问,进而部分硬盘的读写请求量(即上述实施例中的访问请求)极低,在上述实施例中,极少的访问请求的量,在执行上述实施例中的步骤S204时,执行访问操作失败的存储区域的数量可能一直不大于预设阈值,则不对第一硬盘执行硬盘扫描,从而无法发现硬盘故障。
为了保证冷数据的安全,本发明还提供了另外一种可选的实施例在该另外一种可选的实施例中,第一统计模块,用于在获取客户端的访问请求之后,统计第一硬盘接收到的访问请求的请求次数;触发模块,用于在请求次数小于预设请求次数的情况下,触发第一硬盘执行访问操作。
具体地,在该实施例中可以通过运营系统定期主动触发第一硬盘的访问操作(如读写操作),并记录第一硬盘的存储区域执行访问操作的操作结果,在操作结果指示执行访问操作失败的存储区域的数量大于预设阈值的情况下,对第一硬盘执行硬盘扫描,以确定第一硬盘是否发生故障。通过上述实施例,可以对存储系统中存储冷数据的硬盘进行快速检测,发现坏盘,保证冷数据的安全性。
其中,上述实施例中的冷数据为:活动不频繁、很少访问或者永远不会被访问的数据。
根据本发明的上述实施例,硬盘维护装置还包括:第一标记模块,用于在记录存储区域执行访问操作失败的操作结果之后,将操作结果所指示的执行访问操作失败的存储区域的工作状态标记为不可用状态;第一判断模块包括:第二统计模块,用于统计工作状态标记为不可用状态的存储区域的数量;第一判断子模块,用于在工作状态标记为不可用状态的存储区域的数量大于预设阈值的情况下,判断出执行访问操作失败的存储区域的数量大于预设阈值;第二判断子模块,用于在工作状态标记为不可用状态的存储区域的数量不大于预设阈值的情况下,判断出执行访问操作失败的存储区域的数量不大于预设阈值。
在系统中存在存储区域状态表,该存储区域状态表中保存有系统中各个第一硬盘的各个存储区域的工作状态。可以通过修改存储区域状态表中记录的工作状态将其标记为不可用状态。
上述实施例中的异常访问状态和异常空闲状态为不可用状态。
根据本发明的上述实施例,硬盘维护装置还可以包括:数据迁移模块,用于在根据执行硬盘扫描的结果判断第一硬盘是否发生故障之后,若根据执行硬盘扫描的结果判断出第一硬盘发生故障,则将第一硬盘上存储的数据迁移至系统中第二硬盘的存储区域中,并停止第一硬盘上的访问进程;第一修复模块,用于对第一硬盘执行硬盘修复操作;重启模块,用于若执行硬盘修复操作成功,则重新启动第一硬盘的访问进程;更换模块,用于若执行硬盘修复操作失败,则更换第一硬盘。
进一步需要说明的是,以对等盘(在图8所示实施例中的存储机器A2的数据盘1)为源,把对等盘上存储的数据迁移到其它成对的处于可用状态的chunk;如果从对等盘读取数据失败,则尝试从故障硬盘读取在对等盘上读取失败的数据。
在该实施例中,发生故障的硬盘可以通过硬盘厂商提供的修复工具或其它通用的硬盘修复工具进行修复。
可选地,数据迁移模块可以包括:第一读取模块,用于从存储区域状态表中读取成对的处于空闲访问状态的存储区域的地址,其中,存储区域状态表中记录有系统中各个存储区域的工作状态,成对的处于空闲访问状态的存储区域位于第二硬盘;第二读取模块,用于读取第一硬盘的对等盘中存储的数据,其中,第一硬盘的对等盘用于备份第一硬盘中存储的数据;存储模块,用于将读取到的对等盘中存储的数据存储至成对的处于空闲访问状态的存储区域的地址中。
在修改完各个存储区域的工作状态之后,停止发生故障的第一硬盘的访问进程。该访问进程可以包括读/写进程。
在本发明另外一个可选的实施例中,硬盘维护装置还可以包括:第一状态修改模块,用于在将第一硬盘上存储的数据迁移至系统中第二硬盘的存储区域中之前,将存储区域状态表中记录的第一硬盘上处于正常访问状态的存储区域的工作状态修改为异常访问状态;第二状态修改模块,用于将存储区域状态表中记录的第一硬盘上处于空闲状态的存储区域的工作状态修改为异常空闲状态;以及第三状态修改模块,用于将存储区域状态表中记录的第一硬盘的对等盘上处于正常访问状态的存储区域的工作状态修改为只读状态,其中,异常访问状态和异常空闲状态为不可用状态。
在本发明的上述实施例中,硬盘维护装置还可以包括:第四状态修改模块,用于在将读取到的对等盘中存储的数据存储至成对的处于可用状态的存储区域的地址中之后,将存储区域状态表中记录的第一硬盘的所有存储区域的工作状态修改为异常空闲状态;第五状态修改模块,用于将存储区域状态表中记录的第一硬盘的对等盘的所有存储区域的工作状态修改为空闲状态;以及第六状态修改模块,用于将存储区域状态表中记录的成对的处于空闲访问状态的存储区域的工作状态修改为正常访问状态。
根据本发明的上述实施例,硬盘维护装置还可以包括:第二修复模块,用于在根据执行硬盘扫描的结果判断第一硬盘是否发生故障之后,若执行硬盘扫描的结果判断出第一硬盘发生故障,则停止第一硬盘的访问进程,并对第一硬盘执行硬盘修复处理;第三获取模块,用于在对第一硬盘执行硬盘修复处理完成之后,获取第一硬盘上存储的数据的校验数据;恢复数据模块,用于使用校验数据恢复第一硬盘上存储的数据。
在该实施例中,在对第一硬盘执行硬盘修复之前,可以先将第一硬盘上的数据迁移至第二硬盘,该实施例中的数据迁移方法与上述实施例中的迁移方法相同,然后使用第三获取模块获取第一硬盘上存储的数据的校验数据,具体地,可以从第二硬盘上读取该校验数据。
在该实施例中,系统的数据存储方式可以是使用M+N份数据存储M份数据的方式,该中存储方式适用于访问量较低的场景,其中N份是校验数据,在数据丢失的情况下用于恢复数据。在该实施例中,可以在判断出第一硬盘为故障硬盘之后,修复硬盘,若修复失败则更换硬盘,并恢复数据和服务。
如,M=9,N=3,则可以使用12份数据存储9份数据,在12份数据中发生数据丢失或损坏时,如丢失1份,变为11份,则可以从11份数据中抽取9份数据进行数据恢复。
本发明实施例中的对硬盘的修复处理和更换硬盘的硬盘维护方法均与上述实施例中的实现方法相同,在此不再赘述。
本实施例中所提供的各个模块与方法实施例对应步骤所提供的使用方法相同、应用场景也可以相同。当然,需要注意的是,上述模块涉及的方案可以不限于上述实施例中的内容和场景,且上述模块可以运行在计算机终端或移动终端,可以通过软件或硬件实现。
实施例3
本发明的实施例还提供了一种终端或服务器。可选地,在本实施例中,上述终端可以执行数据存储系统的硬盘维护方法,上述实施例中的数据存储系统的硬盘维护装置可以设置在该终端或服务器上。
图14是根据本发明实施例的一种终端的结构框图。如图14所示,该终端200可以包括:一个或多个(图中仅示出一个)处理器201、存储器203、以及传输装置205,如图14所示,该终端还可以包括输入输出设备207。
其中,存储器203可用于存储软件程序以及模块,如本发明实施例中的数据存储系统的硬盘维护方法和装置对应的程序指令/模块,处理器201通过运行存储在存储器203内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的数据存储系统的硬盘维护方法。存储器203可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器203可进一步包括相对于处理器201远程设置的存储器,这些远程存储器可以通过网络连接至终端200。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
上述的传输装置205用于经由一个网络接收或者发送数据,还可以用于处理器与存储器之间的数据传输。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置205包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置205为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
其中,具体地,存储器203用于存储应用程序。
处理器201可以通过传输装置205调用存储器203存储的应用程序,以执行下述步骤:获取系统对第一硬盘中的存储区域执行访问操作失败的操作结果;判断操作结果所指示的执行访问操作失败的存储区域的数量是否大于预设阈值;若执行访问操作失败的存储区域的数量大于预设阈值,则对第一硬盘执行硬盘扫描;根据执行硬盘扫描的结果判断第一硬盘是否发生故障。
处理器201还用于执行下述步骤:若执行访问操作失败的存储区域的数量不大于预设阈值,则确认第一硬盘没有损坏,不对该第一硬盘执行硬盘扫描的操作。
采用本发明实施例,可以在获取系统对第一硬盘中的存储区域执行访问操作失败的操作结果,并据此执行访问操作失败的操作结果判断该第一硬盘是否需要进行硬盘扫描。具体地,可以通过判断操作结果所指示的执行访问操作失败的存储区域的数量是否大于预设阈值,若执行访问操作失败的存储区域的数量大于预设阈值,则确定对第一硬盘执行硬盘扫描,并根据执行硬盘扫描的结果判断第一硬盘是否发生故障。
在本发明实施例中,仅对执行访问操作失败的存储区域的数量超过预设阈值的第一硬盘进行硬盘扫描,从而在对系统中的硬盘进行坏盘检查时,无需对所有的硬盘进行坏盘扫描,仅仅是对执行访问操作失败的存储区域的数量超过预设阈值的第一硬盘进行硬盘扫描,从而大大减少了对硬盘进行扫描的工作量,可以快速发现坏盘。解决了现有技术中检测存储系统中的坏盘的效率低的问题,无需全量扫描系统中的硬盘即可快速发现坏盘,实现了快速检测出系统中坏盘、提高了检测系统中的坏盘的效率的效果,以确保系统的数据安全。
其中,上述实施例中的系统可以为存储系统,具体地,可以为海量存储系统,也可以是海量存储系统中的子系统,还可以是个人电脑的系统;每个存储系统中可以包括一个或多个第一硬盘,每个第一硬盘可以包括一个或多个存储区域chunk。存储区域chunk可以为硬盘上一块大小固定的连续存储区域,具体地,存储区域的大小可以为2GB,每个第一硬盘均可以包括若干个chunk。
可选地,本实施例中的具体示例可以参考上述实施例中所描述的示例,本实施例在此不再赘述。
需要进一步说明的是,寄存区域为系统的内存和系统处理器中的寄存器。
本领域普通技术人员可以理解,图14所示的结构仅为示意,终端可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌声电脑以及移动互联网设备(Mobile InternetDevices,MID)、PAD等终端设备。图14其并不对上述电子装置的结构造成限定。例如,终端200还可包括比图14中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图14所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
实施例4
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述的存储介质存储用于执行数据存储系统的硬盘维护方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于实施例3所示的终端上。
可选地,在本实施例中,上述存储介质可以位于网络中的多个网络设备中的至少一个网络设备。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
步骤S1:获取系统对第一硬盘中的存储区域执行访问操作失败的操作结果。
步骤S2:判断操作结果所指示的执行访问操作失败的存储区域的数量是否大于预设阈值。
步骤S3:若执行访问操作失败的存储区域的数量大于预设阈值,则对第一硬盘执行硬盘扫描。
步骤S4:根据执行硬盘扫描的结果判断第一硬盘是否发生故障。
存储介质被设置为存储用于执行以下步骤的程序代码:若执行访问操作失败的存储区域的数量不大于预设阈值,则确认第一硬盘没有损坏,不对该第一硬盘执行硬盘扫描的操作。
采用本发明实施例,可以在获取系统对第一硬盘中的存储区域执行访问操作失败的操作结果,并据此执行访问操作失败的操作结果判断该第一硬盘是否需要进行硬盘扫描。具体地,可以通过判断操作结果所指示的执行访问操作失败的存储区域的数量是否大于预设阈值,若执行访问操作失败的存储区域的数量大于预设阈值,则确定对第一硬盘执行硬盘扫描,并根据执行硬盘扫描的结果判断第一硬盘是否发生故障。
在本发明实施例中,仅对执行访问操作失败的存储区域的数量超过预设阈值的第一硬盘进行硬盘扫描,从而在对系统中的硬盘进行坏盘检查时,无需对所有的硬盘进行坏盘扫描,仅仅是对执行访问操作失败的存储区域的数量超过预设阈值的第一硬盘进行硬盘扫描,从而大大减少了对硬盘进行扫描的工作量,可以快速发现坏盘。解决了现有技术中检测存储系统中的坏盘的效率低的问题,无需全量扫描系统中的硬盘即可快速发现坏盘,实现了快速检测出系统中坏盘、提高了检测系统中的坏盘的效率的效果,以确保系统的数据安全。
其中,上述实施例中的系统可以为存储系统,具体地,可以为海量存储系统,也可以是海量存储系统中的子系统,还可以是个人电脑的系统;每个存储系统中可以包括一个或多个第一硬盘,每个第一硬盘可以包括一个或多个存储区域chunk。存储区域chunk可以为硬盘上一块大小固定的连续存储区域,具体地,存储区域的大小可以为2GB,每个第一硬盘均可以包括若干个存储区域chunk。
可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的硬盘维护装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。