一种基于错误注入测试存储系统容忍坏扇区能力的方法

文档序号:6624584阅读:139来源:国知局
一种基于错误注入测试存储系统容忍坏扇区能力的方法【专利摘要】本发明公开了一种基于错误注入测试存储系统容忍坏扇区能力的方法,是将错误注入设为模块进行加载,通过实现虚拟块设备驱动,并在驱动中动态配置坏扇区表和\或坏扇区算法,生成符合要求的坏扇区的方法;当用户空间发起读\写请求时先到达虚拟块设备层,虚拟块设备驱动检测该读\写请求指定的扇区是否位于坏扇区表或满足坏扇区算法,若不满足任何一项,则提交该请求到实际块设备,否则标记读\写请求指定的扇区为坏扇区,从而实现错误注入。通过该方法,克服了采用实际硬盘进行功能测试的缺陷,能够进行快速完整的容错测试,显著缩小了测试周期和测试成本,极大的提高了磁盘的可靠性和使用寿命。【专利说明】一种基于错误注入测试存储系统容忍坏扇区能力的方法【
技术领域
】[0001]本发明涉及计算机系统及存储领域,具体地说是一种基于错误注入测试存储系统容忍坏扇区能力的方法。【
背景技术
】[0002]目前硬盘数据密度很大,在生产过程中不可避免的会产生缺陷。在使用过程中,一些不稳定的扇区也会逐渐老化而产生数据读写错误。即使是正常的扇区,如果正在读写的时候,外力导致磁盘抖动,也会对部分扇区造成破坏。例如,在使用RAID实现的磁盘阵列系统中,磁盘失效很多时候是由于存在少量坏扇区引起的。因少量坏扇区引起的失效,极大的降低了系统的可靠性。[0003]为了解决这个问题,磁盘阵列系统引入了扇区映射功能,其实现方式是预先保留一定的扇区用作坏扇区映射,当写入遇到错误时,重定向到保留区域并保存映射关系,后续读取操作从映射后的扇区获取数据。对于读取而言,如果发现该扇区已映射,直接从映射区域获取数据,如果读取错误且未映射,则通过特定恢复方法(如RAID5的冗余恢复)复原该数据然后写入到映射区域。经测试,仅使用千分之五左右的磁盘空间用作映射,就可解决绝大部分因坏扇区导致的数据丢失。而当扇区正常时,映射流程不会触发,因此对正常的读写性能没有影响。该功能在几乎不影响用户使用的前提下,极大的提高了系统的可靠性,具有非常高的实用价值。[0004]存储系统容忍坏扇区的功能只在坏扇区读写时触发,并且不同位置错误扇区触发的处理程有所差别。因此,如果采用实际硬盘测试,很难找到有特定坏扇区数、范围或位置的磁盘完成存储系统容忍坏扇区功能测试,因此其测试周期长,并且需要一定的硬件成本,还很难得到完整的测试结果。【
发明内容】[0005]针对现有技术的不足之处,本发明提出一种基于错误注入测试存储系统容忍坏扇区能力的方法。[0006]本发明所述一种基于错误注入测试存储系统容忍坏扇区能力的方法,解决上述技术问题采用的技术方案如下:所述基于错误注入测试存储系统容忍坏扇区能力的方法,是指把错误注入设置成一个模块进行加载,通过错误注入模块导出虚拟块设备,并在虚拟块设备驱动中动态导入坏扇区表和\或指定坏扇区算法,生成符合要求的坏扇区的方法;当用户空间发起读\写请求时先到达虚拟块设备层,虚拟块设备驱动检测该读\写请求指定的扇区是否位于坏扇区表或满足坏扇区算法,若不满足任何一项,则提交该请求到实际块设备(磁盘),否则向上层报告读写请求失败,标记读\写请求指定的扇区为坏扇区,从而实现错误注入。[0007]本发明所述基于错误注入测试存储系统容忍坏扇区能力的方法,主要包括如下几个步骤:加载错误注入模块、设置错误注入模块、创建\启动逻辑存储、读写测试和回归测试;其中,所述加载错误注入模块是指,加载错误注入模块bsf1.ko(bsf1:BlockForSectorsFaultyInject1n);所述设置错误注入模块主要包括:设置后端存储设备、导入坏扇区表和\或设置坏扇区算法以及关闭坏扇区模拟功能;所述创建\启动逻辑存储是指:使用所述错误注入模块导出的虚拟块设备创建逻辑存储;所述读写测试包括:执行测试用例和整理测试结果;所述回归测试是指:根据读写测试结果调试、解决RAID容忍坏扇区的问题,迭代进行读写测试;直到满足设计要求结束测试。[0008]本发明所述一种基于错误注入测试存储系统容忍坏扇区能力的方法具有的有益效果:通过该错误注入模块来测试存储系统容忍坏扇区能力的方法,可以确保在一定时间内覆盖所有测试点,除了普通硬盘,不需要任何特定硬件,在几乎不影响用户使用的前提下,克服了采用实际硬盘进行功能测试的缺陷,能够进行快速完整的容错测试,显著缩小了测试周期和测试成本,极大的提高了磁盘的可靠性和使用寿命,且该方法具有很好的扩展性。【专利附图】【附图说明】[0009]附图1该方法所述错误注入模块的流程图;附图2该方法数据读写请求处理的流程图。【具体实施方式】[0010]为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图和实施例,对本发明的一种基于错误注入测试存储系统容忍坏扇区能力的方法进行详细说明。[0011]本发明所述基于错误注入测试存储系统容忍坏扇区能力的方法,把错误注入设计成一个模块加载,通过错误注入模块导出虚拟块设备,并在虚拟块设备驱动中动态导入坏扇区表和\或设置坏扇区算法,生成符合要求的坏扇区的方法。本发明所述方法,通过错误注入测试存储系统容忍坏扇区的能力,这里存储系统容忍坏扇区的能力是指存储系统在读\写扇区出现错误时,通过数据恢复和写扇区映射等方法提高数据安全性的能力。[0012]通过本发明所述方法,当用户空间发起读\写请求时先到达虚拟块设备层,虚拟块设备驱动检测该读\写请求指定的扇区是否位于坏扇区表中或满足坏扇区算法,若不满足任何一项,则提交该请求到实际块设备(磁盘),否则向上层报告读写请求失败,读\写请求指定的扇区为坏扇区,从而实现错误注入。[0013]实施例:下面通过一个实施例,对本发明所述基于错误注入测试存储系统容忍坏扇区能力的方法的优点和设计内容,进行详细说明。[0014]本发明所述基于错误注入测试存储系统容忍坏扇区能力的方法,将错误注入设置成一个模块进行加载,如附图1所示,用户空间通过1setup配置虚拟块设备实现虚拟块设备驱动,通过1ctl或者sysfs管理配置坏扇区设置,在虚拟块设备驱动中动态导入坏扇区表和\或设置坏扇区算法,同时设置后端存储设备(块设备磁盘或文件);当用户动件发起读\写请求时,先到达虚拟块设备,虚拟块设备驱动检测该读\写请求中是否有扇区位于坏扇区表或满足坏扇区算法,若不在坏扇区表也不符合坏扇区算法,则提交该请求到块设备磁盘中,否则向上层报告读写请求失败模拟硬件扇区错误,表明读\写请求指定的扇区为坏扇区,进而实现错误注入。[0015]上述坏扇区设置包括坏扇区表和坏扇区算法,其中,坏扇区表编码多个指定扇区或区间为坏扇区,坏扇区算法指定符合某种算法要求的扇区为坏扇区。上述1setup命令用于设置循环设备,循环设备可以把文件虚拟成块设备;所述1ctl是设备驱动程序中对设备的I/O通道进行管理的函数;所述sysfs是一种虚拟文件系统,可以把设备和驱动程序的信息从内核输出到用户空间,也可以用来对设备和驱动程序做设置。[0016]本实施所述基于错误注入测试存储系统容忍坏扇区能力的方法,主要包括以下几个步骤:加载错误注入模块、设置错误注入模块、创建\启动逻辑存储、读写测试和回归测试;其中,所述加载错误注入模块是指,加载错误注入模块bsf1.ko(bsf1:BlockForSectorsFaultyInject1n);所述设置错误注入模块主要包括:设置后端存储设备、导入坏扇区表和\或设置坏扇区算法以及关闭坏扇区模拟功能;其中,设置后端存储设备包括:通过1setup或者sysfs设置后端存储设备,后端存储设备可以是任意块设备(磁盘)或文件;当读写请求指定的扇区或扇区范围不在坏扇区表且不满足坏扇区算法时,错误注入模块提交读写请求到所述后端存储设备完成读写;且所述后端存储设备兼容1setup和echo、重定向等Linux常见文本操纵命令,可以快速简单完成;导入坏扇区和\或设置坏扇区算法包括:通过sysfs导出接口,设置坏扇区表目录bstable和坏扇区算法目录bsalgo;关闭坏扇区模拟功能:通过写入O或off到sysfs接口即可关闭,用于性能对比测试;所述创建\启动逻辑存储包括:使用所述错误注入模块bsfi导出的虚拟块设备创建逻辑存储;所述读写测试包括:执行测试用例和整理测试结果;执行测试用例包括:研发人员根据映射实现代码编写测试用例,完成边界测试,提高代码健壮性;测试人员编写多份随机测试用例,来覆盖任何可能的扇区错误;整理测试结果包括:研发人员通过测试结果调试代码,进一步加强代码的稳定性;测试人员通过大量测试完成坏扇区映射功能的缺陷报告;所述回归测试包括:根据读写测试结果调试、解决RAID容忍坏扇区的问题,迭代进行读写测试;直到满足设计要求,测试结束。[0017]本实施例所述基于错误注入测试存储系统容忍坏扇区能力的方法中,所述坏扇区表目录bstable包括init、files、sectors、info四个文件;其中,init只写不可读,info可读不可写,files、sectors可读写;files指定坏扇区文件,写入格式为[addIdel]:〈filename〉,filename文件是绝对路径名称;sectors指定扇区或者扇区范围,写入格式为[addIdel:]〈sectors〉;add|del前缀分别表示添加和删除,可忽略,忽略时按照add处理;files和sectors所有设置的并集构成全部坏扇区表内容;files通过notifier挂接动态通知,更改后即刻生效。[0018]所述坏扇区算法目录bsalgo包含init、mod、random、invert文件,其中,init只写,重新初始化坏扇区算法,默认全部关闭,此时查看mod和random内容为O;mod和random写入模式相同,都是[add|del]:〈vl[-v2]>;add|del前缀分别表示添加和删除,可忽略,忽略时按照add处理;只设置vl表示对于vl取模,此时mod和random结果等同;同时设置vl和v2,对于mod,表示[vl,c2)区间内任意值,对于random,表示随机生成区间[vl,v2)内的任一数值;invert可以写入字符串mod或者random,两次写入同一值等于未写入;查看invert如有mod表示mod处于反转状态,如有random表示random处于反转状态,两者可同时处于反转状态,此时现实为两行,分别为mod和random。关于mod和random的全面描述采用数学表达式实现。[0019]通过对基于错误注入测试存储系统容忍坏扇区能力的方法的详细说明,可知该方法通过错误注入的方式,确保在一定时间内覆盖所有测试点,而且除了普通磁盘,不需要任何特定硬件,是兼顾测试周期、成本和全面性的好方法,并且具有很好的扩展性。因此通过该方法,在几乎不影响用户使用的前提下极大的提高了磁盘的可靠性和使用寿命。[0020]附图2为该方法的数据请求处理的流程图,如附图2所示,当用户空间发起数据读写请求时先到达虚拟块设备,虚拟块设备驱动检测该读写请求指定扇区中是否有扇区位于坏扇区表中,或者符合坏扇区算法要求,若满足上述一种则报告上层数据请求失败,设置错误标记,实现错误注入;若不满足上述任一种,则递交数据请求到后端存储设备执行实际读取。上述【具体实施方式】仅是本发明的具体个案,本发明的专利保护范围包括但不限于上述【具体实施方式】,任何符合本发明的权利要求书的且任何所属【
技术领域
】的普通技术人员对其所做的适当变化或替换,皆应落入本发明的专利保护范围。【权利要求】1.一种基于错误注入测试存储系统容忍坏扇区能力的方法,其特征在于,把错误注入设置成一个模块进行加载,通过错误注入模块导出虚拟块设备,并在虚拟块设备驱动中动态导入坏扇区表和\或设置坏扇区算法,生成符合要求的坏扇区;当用户空间发起读\写请求时先到达虚拟块设备层,虚拟块设备驱动检测该读\写请求指定的扇区是否位于坏扇区表或满足坏扇区算法,若不满足任何一项,则提交该请求到实际块设备,否则向上层报告读写请求失败,标记读\写请求指定的扇区为坏扇区,从而进行错误注入。2.根据权利要求1所述的一种基于错误注入测试存储系统容忍坏扇区能力的方法,其特征在于,通过1ctl或者sysfs管理配置坏扇区表和坏扇区算法,且所述坏扇区表编码多个指定扇区或区间为坏扇区,所述坏扇区算法指定符合某种算法要求的扇区为坏扇区。3.根据权利要求2所述的一种基于错误注入测试存储系统容忍坏扇区能力的方法,其特征在于,该方法主要包括如下几个步骤:加载错误注入模块、设置错误注入模块、创建\启动逻辑存储、读写测试和回归测试;其中,所述加载错误注入模块是指,加载错误注入模块bsf1.ko(bsf1:BlockForSectorsFaultyInject1n);所述设置错误注入模块主要包括:设置后端存储设备、导入坏扇区表和\或设置坏扇区算法以及关闭坏扇区模拟功能;所述创建\启动逻辑存储是指:使用所述错误注入模块导出的虚拟块设备创建逻辑存储;所述读写测试包括:执行测试用例和整理测试结果;所述回归测试是指:根据读写测试结果调试解决RAID容忍坏扇区的问题,迭代进行读写测试;直到满足设计要求结束测试。4.根据权利要求3所述的一种基于错误注入测试存储系统容忍坏扇区能力的方法,其特征在于,所述设置后端存储设备包括:通过1setup或者sysfs设置后端存储设备,后端存储设备是任意块设备或文件;当读写请求指定的扇区或扇区范围不在坏扇区表且不满足坏扇区算法时,错误注入模块提交读写请求到所述后端存储设备完成读写。5.根据权利要求3所述的一种基于错误注入测试存储系统容忍坏扇区能力的方法,其特征在于,所述导入坏扇区和\或设置坏扇区算法是指:通过sysfs导出接口,设置坏扇区表目录bstable和坏扇区算法目录bsalgo。6.根据权利要求3所述的一种基于错误注入测试存储系统容忍坏扇区能力的方法,其特征在于,所述关闭坏扇区模拟功能是指:通过写入O或off到sysfs接口进行关闭坏扇区模拟功能。7.根据权利要求3所述的一种基于错误注入测试存储系统容忍坏扇区能力的方法,其特征在于,所述执行测试用例包括:根据映射实现代码编写测试用例,完成边界测试?’编写多份随机测试用例,来覆盖任何可能的扇区错误。8.根据权利要求3所述的一种基于错误注入测试存储系统容忍坏扇区能力的方法,其特征在于,所述整理测试结果包括:通过测试结果调试代码,通过大量测试完成坏扇区映射功能的缺陷报告。【文档编号】G06F11/07GK104199748SQ201410421870【公开日】2014年12月10日申请日期:2014年8月25日优先权日:2014年8月25日【发明者】闫永刚,古世磊申请人:浪潮电子信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1