CN104375913A - 一种测试存储系统容忍坏扇区能力的方法和设备 - Google Patents
一种测试存储系统容忍坏扇区能力的方法和设备 Download PDFInfo
- Publication number
- CN104375913A CN104375913A CN201410649525.8A CN201410649525A CN104375913A CN 104375913 A CN104375913 A CN 104375913A CN 201410649525 A CN201410649525 A CN 201410649525A CN 104375913 A CN104375913 A CN 104375913A
- Authority
- CN
- China
- Prior art keywords
- sector
- bad sector
- bad
- operation requests
- specifies
- 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.)
- Pending
Links
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种测试存储系统容忍坏扇区能力的方法和设备,该方法包括以下步骤:虚拟块设备接收来自上层设备的操作请求;虚拟块设备判断操作请求指定的扇区是否在坏扇区表中,或者,与坏扇区算法匹配,如果是,则设置错误标记,并根据错误标记向上层设备发送扇区错误信息;否则,将操作请求发送给后端存储设备。本发明能够在不影响用户使用的前提下,极大地提高磁盘的可靠性和使用寿命,并在不需要任何特定硬件的情况下,确保在一定时间内覆盖所有测试点,同时兼顾到测试周期、成本和全面性。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种测试存储系统容忍坏扇区能力的方法和设备。
背景技术
随着计算机存储技术的迅速发展,存储系统的数据密度越来越大,在使用过程中,一些不稳定的扇区会逐渐老化而产生数据读写错误。即使是正常的扇区,如果在执行读写操作时,发生外力导致的磁盘抖动,也会对部分扇区造成破坏。在使用RAID(Redundant Array of Independent Disk,独立冗余磁盘阵列)实现的磁盘阵列系统中,磁盘失效很多时候是由于存在少量坏扇区引起的,降低了磁盘阵列系统的可靠性。
为了解决上述问题,磁盘阵列系统引入了扇区映射功能,预先保留一定的扇区用作坏扇区映射,当写操作发生错误时,将写操作重定向到保留区域并保存映射关系;执行读操作时,如果发现对应的扇区已映射,则直接从映射区域获取数据;如果读取错误且未映射,则通过特定的恢复方法复原数据,并将复原后的数据写入到映射区域。当扇区正常时,映射流程不会触发,因此对正常的读写性能没有影响。该功能在几乎不影响用户使用的前提下,极大的提高了系统的可靠性,具有非常高的实用价值。
然而,现有技术中,只有在对存储系统中的坏扇区进行读写操作时,才会触发存储系统容忍坏扇区的功能,且不同位置的坏扇区触发的处理流程也有所差别,因此,如果搜集有坏扇区的硬盘进行测试存储系统容忍坏扇区能力,不但成本高、周期长,还很难得到完整的测试结果。
发明内容
本发明提供了一种测试存储系统容忍坏扇区能力的方法和设备,以解决现有的测试方法成本高、周期长和测试结果不完整的缺陷。
本发明提供了一种测试存储系统容忍坏扇区能力的方法,包括以下步骤:
虚拟块设备接收来自上层设备的操作请求;
所述虚拟块设备判断所述操作请求指定的扇区是否在坏扇区表中,或者,与坏扇区算法匹配,如果是,则设置错误标记,并根据所述错误标记向所述上层设备发送扇区错误信息;否则,将所述操作请求发送给后端存储设备。
可选地,所述的方法,还包括:
所述虚拟块设备关闭坏扇区模拟功能。
可选地,所述虚拟块设备关闭坏扇区模拟功能,具体为:
所述虚拟块设备通过向sysfs接口switch中写入0或off,关闭坏扇区模拟功能。
可选地,所述坏扇区表硬编码多个指定的扇区或区间为坏扇区,所述坏扇区算法指定符合预设算法要求的扇区为坏扇区。
可选地,所述操作请求为读请求或写请求。
本发明还提供了一种测试存储系统容忍坏扇区能力的设备,包括:
接收模块,用于接收来自上层设备的操作请求;
判断模块,用于判断所述接收模块接收到的所述操作请求指定的扇区是否在坏扇区表中,或者,与坏扇区算法匹配;
设置模块,用于在所述判断模块判断出所述操作请求指定的扇区在坏扇区表中,或者,与坏扇区算法匹配时,设置错误标记;
发送模块,用于根据所述设置模块设置的所述错误标记,向所述上层设备发送扇区错误信息;在所述判断模块判断出所述操作请求指定的扇区不在坏扇区表中,且与坏扇区算法不匹配时,将所述操作请求发送给后端存储设备。
可选地,所述的设备,还包括:
关闭模块,用于关闭坏扇区模拟功能。
可选地,所述关闭模块,具体用于通过向sysfs接口switch中写入0或off,关闭坏扇区模拟功能。
可选地,所述坏扇区表硬编码多个指定的扇区或区间为坏扇区,所述坏扇区算法指定符合预设算法要求的扇区为坏扇区。
可选地,所述操作请求为读请求或写请求。
本发明检测来自上层设备的操作请求指定的扇区是否位于坏扇区表中或满足预设坏扇区算法,如上述任何一项均无法满足,将提交该请求到实际块设备,否则,向上层报告扇区读写错误模拟硬件扇区错误,实现了错误注入,能够在不影响用户使用的前提下,极大地提高磁盘的可靠性和使用寿命,并在不需要任何特定硬件的情况下,确保在一定时间内覆盖所有测试点,同时兼顾到测试周期、成本和全面性。
附图说明
图1为本发明实施例中的一种测试存储系统容忍坏扇区能力的方法流程图;
图2为本发明实施例中的一种测试存储系统容忍坏扇区能力的设备结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,如果不冲突,本发明实施例以及实施例中的各个特征可以相互结合,均在本发明的保护范围之内。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本发明实施例提供了一种测试存储系统容忍坏扇区能力的方法,应用于包括虚拟块设备、后端存储设备和上层设备的系统中,通过加载错误注入模块实现虚拟块设备,通过Sysfs文件系统向虚拟块设备中导入坏扇区表以及设置坏扇区算法,并通过虚拟块设备测试存储系统容忍坏扇区能力。存储系统容忍坏扇区能力,是指存储系统在读/写扇区操作出现错误时,通过数据恢复和写扇区映射等方法提高数据安全性的能力。对于写扇区操作而言,是指写入错误时的映射写。而对于读扇区操作而言,则需要通过系统特定恢复方法(如,RAID冗余校验恢复)恢复坏扇区数据,再进行映射写。其中,一般通过预留适量空间用作扇区迁移实现映射写。上述测试存储系统容忍坏扇区能力的方法,如图1所示,包括以下步骤:
步骤101,虚拟块设备接收来自上层设备的操作请求。
具体地,虚拟块设备可以通过make_request函数接收来自上层设备的操作请求,该操作请求可以是读请求,也可以是写请求。
步骤102,虚拟块设备判断操作请求指定的扇区是否在坏扇区表中,如果是,则执行步骤104;否则,执行步骤103。
具体地,可通过ioctl或者Sysfs文件系统向虚拟块设备中导入与坏扇区表对应的坏扇区表目录,其中,坏扇区表硬编码多个指定的扇区或区间为坏扇区。
本实施例中,坏扇区表目录包含init文件、files文件、sectors文件和info文件,其中,init文件可写不可读,info文件可读不可写,files文件和sectors文件均可读写。files文件指定坏扇区文件,写入格式为[add|del]:<filename>,filename文件是绝对路径名称;sectors文件指定扇区或者扇区范围,写入格式为[add|del:]<sectors>,add|del前缀分别表示添加和删除,可忽略,忽略时按照add处理;files文件和sectors文件所有设置的并集构成全部坏扇区表内容。files文件通过notifier挂接动态通知,更改后即刻生效。
此外,为了安全和方便的考虑,内核使用call_usermodehelper实现打开特定目录下的files文件,并添加files文件。相应地,可通过用户空间程序bsfi-files打开files文件,根据env变量确定ioctl类别type,再次设置fd到虚拟块设备中的错误注入模块,进而读取files文件。
步骤103,虚拟块设备判断操作请求指定的扇区是否与坏扇区算法匹配,如果是,则执行步骤104;否则,执行步骤105。
具体地,可通过ioctl或者Sysfs文件系统向虚拟块设备中导入坏扇区算法目录,其中,坏扇区算法指定符合预设算法要求的扇区为坏扇区。
本实施例中,坏扇区算法支持取模和随机两种。坏扇区算法目录包含init文件、mod文件、random文件和invert文件,其中,init文件只可写,用于重新初始化坏扇区算法。mod文件和random文件的写入格式均为[add|del]:<v1[-v2]>,add|del前缀分别表示添加和删除,可忽略,忽略时按照add处理,只设置v1时,表示对于v1取模,mod文件和random文件等同;同时设置v1和v2时,对于mod文件,表示[v1,c2)区间内任意值,对于random文件,表示随机生成区间[v1,v2)内的任一数值。
可以在invert文件中写入mod字符串或者random字符串,两次写入同一值等于未写入。查看invert文件,如有mod字符串,表示mod文件处于反转状态;如有random字符串,表示random文件处于反转状态。mod文件和random文件可同时处于反转状态,对应的invert文件包括两行,分别为mod字符串和random字符串,mod字符串和random字符串的全面描述可采用数学表达式实现。
步骤104,虚拟块设备设置错误标记,并根据错误标记向上层设备发送扇区错误信息。
步骤105,虚拟块设备将操作请求发送给后端存储设备。
其中,后端存储设备可以是块设备或者文件,可通过losetup或者Sysfs接口进行设置。当操作请求指定的扇区或扇区范围不在坏扇区表且与坏扇区算法不匹配时,虚拟块设备提交操作请求到后端存储完成读写。本操作兼容losetup、echo和重定向等Linux文本操纵命令,可以快速简单完成。优选地,后端存储设备可以是SCSI(Small Computer System Interface,小型计算机系统接口)磁盘。
步骤106,虚拟块设备关闭坏扇区模拟功能。
具体地,虚拟块设备可以通过向sysfs接口switch中写入0或off,关闭坏扇区模拟功能。
本发明实施例使用独立的错误注入模块实现虚拟块设备,当用户空间发起的读/写请求到达虚拟块设备后,虚拟块设备检测该请求指定的扇区是否位于坏扇区表中或满足预设坏扇区算法,如上述任何一项均无法满足,将提交该请求到实际块设备,否则,向上层报告扇区读写错误模拟硬件扇区错误,实现了错误注入,能够在不影响用户使用的前提下,极大地提高磁盘的可靠性和使用寿命,并在不需要任何特定硬件的情况下,确保在一定时间内覆盖所有测试点,同时兼顾到测试周期、成本和全面性。此外,本发明实施例通过Sysfs文件系统导出完整接口,支持文本流控制和Linux通用命令,ioctl部分兼容环回设备(LOOP DEVICE),可在用户空间通过losetup和普通文本流进行行为控制,实现和使用都很方便简单,且具有很强的扩展性。
基于上述测试存储系统容忍坏扇区能力的方法,本发明实施例还提供了一种测试存储系统容忍坏扇区能力的设备,如图2所示,包括:
接收模块201,用于接收来自上层设备的操作请求。
其中,操作请求为读请求或写请求。
判断模块202,用于判断接收模块201接收到的操作请求指定的扇区是否在坏扇区表中,或者,与坏扇区算法匹配。
其中,坏扇区表硬编码多个指定的扇区或区间为坏扇区,坏扇区算法指定符合预设算法要求的扇区为坏扇区。
设置模块203,用于在判断模块202判断出操作请求指定的扇区在坏扇区表中,或者,与坏扇区算法匹配时,设置错误标记。
发送模块204,用于根据设置模块203设置的所述错误标记,向上层设备发送扇区错误信息;在判断模块202判断出操作请求指定的扇区不在坏扇区表中,且与坏扇区算法不匹配时,将操作请求发送给后端存储设备。
关闭模块205,用于关闭坏扇区模拟功能。
具体地,上述关闭模块205,具体用于通过向sysfs接口switch中写入0或off,关闭坏扇区模拟功能。
本发明实施例检测来自上层设备的操作请求指定的扇区是否位于坏扇区表中或满足预设坏扇区算法,如上述任何一项均无法满足,将提交该请求到实际块设备,否则,向上层报告扇区读写错误模拟硬件扇区错误,实现了错误注入,能够在不影响用户使用的前提下,极大地提高磁盘的可靠性和使用寿命,并在不需要任何特定硬件的情况下,确保在一定时间内覆盖所有测试点,同时兼顾到测试周期、成本和全面性。
结合本文中所公开的实施例描述的方法中的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种测试存储系统容忍坏扇区能力的方法,其特征在于,包括以下步骤:
虚拟块设备接收来自上层设备的操作请求;
所述虚拟块设备判断所述操作请求指定的扇区是否在坏扇区表中,或者,与坏扇区算法匹配,如果是,则设置错误标记,并根据所述错误标记向所述上层设备发送扇区错误信息;否则,将所述操作请求发送给后端存储设备。
2.如权利要求1所述的方法,其特征在于,还包括:
所述虚拟块设备关闭坏扇区模拟功能。
3.如权利要求2所述的方法,其特征在于,所述虚拟块设备关闭坏扇区模拟功能,具体为:
所述虚拟块设备通过向sysfs接口switch中写入0或off,关闭坏扇区模拟功能。
4.如权利要求1所述的方法,其特征在于,所述坏扇区表硬编码多个指定的扇区或区间为坏扇区,所述坏扇区算法指定符合预设算法要求的扇区为坏扇区。
5.如权利要求1所述的方法,其特征在于,所述操作请求为读请求或写请求。
6.一种测试存储系统容忍坏扇区能力的设备,其特征在于,包括:
接收模块,用于接收来自上层设备的操作请求;
判断模块,用于判断所述接收模块接收到的所述操作请求指定的扇区是否在坏扇区表中,或者,与坏扇区算法匹配;
设置模块,用于在所述判断模块判断出所述操作请求指定的扇区在坏扇区表中,或者,与坏扇区算法匹配时,设置错误标记;
发送模块,用于根据所述设置模块设置的所述错误标记,向所述上层设备发送扇区错误信息;在所述判断模块判断出所述操作请求指定的扇区不在坏扇区表中,且与坏扇区算法不匹配时,将所述操作请求发送给后端存储设备。
7.如权利要求6所述的设备,其特征在于,还包括:
关闭模块,用于关闭坏扇区模拟功能。
8.如权利要求7所述的设备,其特征在于,
所述关闭模块,具体用于通过向sysfs接口switch中写入0或off,关闭坏扇区模拟功能。
9.如权利要求6所述的设备,其特征在于,所述坏扇区表硬编码多个指定的扇区或区间为坏扇区,所述坏扇区算法指定符合预设算法要求的扇区为坏扇区。
10.如权利要求6所述的设备,其特征在于,所述操作请求为读请求或写请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410649525.8A CN104375913A (zh) | 2014-11-14 | 2014-11-14 | 一种测试存储系统容忍坏扇区能力的方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410649525.8A CN104375913A (zh) | 2014-11-14 | 2014-11-14 | 一种测试存储系统容忍坏扇区能力的方法和设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104375913A true CN104375913A (zh) | 2015-02-25 |
Family
ID=52554849
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410649525.8A Pending CN104375913A (zh) | 2014-11-14 | 2014-11-14 | 一种测试存储系统容忍坏扇区能力的方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104375913A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113190179A (zh) * | 2021-05-26 | 2021-07-30 | 北京自由猫科技有限公司 | 提升机械硬盘使用寿命的方法、存储设备及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1595537A (zh) * | 2004-07-13 | 2005-03-16 | 海信集团有限公司 | 一种对NAND flash存储器进行物理损坏模拟的系统及其方法 |
CN101419844A (zh) * | 2008-11-18 | 2009-04-29 | 清华大学深圳研究生院 | 一种闪存器件仿真设备以及闪存主控模块评测方法 |
US20090172482A1 (en) * | 2007-12-28 | 2009-07-02 | Hynix Semiconductor Inc. | Methods for performing fail test, block management, erasing and programming in a nonvolatile memory device |
CN102044278A (zh) * | 2009-10-12 | 2011-05-04 | 英业达股份有限公司 | 利用一坏扇区记录表来模拟测试逻辑硬盘的方法及装置 |
CN104199748A (zh) * | 2014-08-25 | 2014-12-10 | 浪潮电子信息产业股份有限公司 | 一种基于错误注入测试存储系统容忍坏扇区能力的方法 |
-
2014
- 2014-11-14 CN CN201410649525.8A patent/CN104375913A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1595537A (zh) * | 2004-07-13 | 2005-03-16 | 海信集团有限公司 | 一种对NAND flash存储器进行物理损坏模拟的系统及其方法 |
US20090172482A1 (en) * | 2007-12-28 | 2009-07-02 | Hynix Semiconductor Inc. | Methods for performing fail test, block management, erasing and programming in a nonvolatile memory device |
CN101419844A (zh) * | 2008-11-18 | 2009-04-29 | 清华大学深圳研究生院 | 一种闪存器件仿真设备以及闪存主控模块评测方法 |
CN102044278A (zh) * | 2009-10-12 | 2011-05-04 | 英业达股份有限公司 | 利用一坏扇区记录表来模拟测试逻辑硬盘的方法及装置 |
CN104199748A (zh) * | 2014-08-25 | 2014-12-10 | 浪潮电子信息产业股份有限公司 | 一种基于错误注入测试存储系统容忍坏扇区能力的方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113190179A (zh) * | 2021-05-26 | 2021-07-30 | 北京自由猫科技有限公司 | 提升机械硬盘使用寿命的方法、存储设备及系统 |
CN113190179B (zh) * | 2021-05-26 | 2022-02-11 | 北京自由猫科技有限公司 | 提升机械硬盘使用寿命的方法、存储设备及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109542342B (zh) | 元数据管理与数据重构方法、设备及存储介质 | |
CN109791520B (zh) | 物理介质感知的空间耦合的日志记录和重放 | |
US9122410B2 (en) | Storage system comprising function for changing data storage mode using logical volume pair | |
CN104216801B (zh) | 一种面向虚拟化环境的数据复制方法及系统 | |
US10120769B2 (en) | Raid rebuild algorithm with low I/O impact | |
US9176853B2 (en) | Managing copy-on-writes to snapshots | |
CN103019890B (zh) | 一种块级别的磁盘数据保护系统及其方法 | |
US7975171B2 (en) | Automated file recovery based on subsystem error detection results | |
US20130103902A1 (en) | Method and apparatus for implementing protection of redundant array of independent disks in file system | |
CN102402471A (zh) | 基于存储阵列快照功能的数据实时备份方法及系统 | |
WO2014101412A1 (zh) | 一种磁盘重构方法及其装置 | |
CN103699457A (zh) | 基于条带化的磁盘阵列修复方法及装置 | |
US20140365824A1 (en) | Method for recovering hard disk data, server and distributed storage system | |
WO2020103512A1 (zh) | 一种存储系统中的数据重构方法和装置 | |
CN104407814B (zh) | 双写数据的方法和装置 | |
WO2017097233A1 (zh) | 一种数据存储负载的容错方法及iptv系统 | |
CN108733326B (zh) | 一种磁盘处理方法及装置 | |
CN101169705B (zh) | 多硬盘下基于裸文件系统实现文件级镜像的方法及装置 | |
CN105354109A (zh) | 视频监控索引数据的备份方法和装置 | |
US9645897B2 (en) | Using duplicated data to enhance data security in RAID environments | |
JP2017531892A (ja) | ブロックレベル記憶デバイスのスナップショットを実行するための改善された装置および方法 | |
CN104375913A (zh) | 一种测试存储系统容忍坏扇区能力的方法和设备 | |
CN106648450B (zh) | 一种数据安全存储的实现方法 | |
CN105068896B (zh) | 基于raid备份的数据处理方法及装置 | |
CN104199748A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150225 |