固态硬盘容错的方法及其固态硬盘的制作方法

文档序号:6377101阅读:295来源:国知局
专利名称:固态硬盘容错的方法及其固态硬盘的制作方法
技术领域
本发明涉及固态硬盘存储技术领域,尤其涉及一种固态硬盘容错的方法及其固态硬盘。
背景技术
SSD (solid state disk,固态硬盘),即用固态电子存储芯片阵列制成的硬盘,由控制单元和存储单元(DRAM或FLASH芯片)两部分组成,即控制器和闪存芯片。存储单元负责存储数据,控制单元负责读取、写入数据。拥有速度快,耐用防震,无噪音,重量轻等优点。广泛应用于军事、车载、工控、视频监控、网络监控、网络终端、电力、医疗、航空、导航设备等领域。具体的,控制器负责控制闪存的识别和读写,由于flash的特点覆盖写之前必须擦除,所以控制器中通常实现了复杂的块映射机制、Garbage Collector (垃圾回收)机 制、wear leveling(均衡磨损)机制,以到达快速存储并兼顾flash寿命。图I是现有技术中通用的SSD架构,核心的SSD controller (固态硬盘控制器)自成一个系统,拥有自己的处理器以及RAM,用于实现block mapping(块擦除)、wearleveling(均衡磨损)、garbage collector (垃圾回收);Flash Demux/mux(闪存多路复用器)模块则控制多块闪存芯片的读写。闪存芯片在固态硬盘中充当存储空间的介质,主要分为两类。SLC(Single Level Cell,单层单兀)和 MLC(Multi_Level Cell,多层单兀)。SLC的特点是成本高、容量小、速度快,而MLC的特点是容量大成本低,但是速度慢。此外,SLC闪存的优点是复写次数高达100000次,比MLC闪存高10倍。为了防止闪存芯片介质导致的10错误,控制器会对数据进行校验,同时wearleveling机制使得每个存储单元的写入次数可以平均分摊,达到100万小时MTBF(MeanTime Between Failure,故障间隔时间)。这些措施有效地解决了 flash存储介质错误,但在实现过程中,还存在如下两类错误一是电路错误,这类错误可能是电信号异常或是电路部件失效;二是逻辑错误,这类错误是由于控制器固件异常而导致。在是现有技术中对应固态硬盘控制器的错误导致的读写指令的执行失败并未有有效的方式进行改进。综上可知,现有固态硬盘容错技术在实际使用上,显然存在不便与缺陷,所以有必要加以改进。

发明内容
针对上述的缺陷,本发明的目的在于提供一种固态硬盘容错的方法及其固态硬盘,提高了固态硬盘的容错性。为了实现上述目的,本发明提供一种固态硬盘容错的方法,所述方法包括如下步骤检测由固态硬盘控制器的错误导致的所述固态硬盘执行输入输出指令失败的事件;在检测到所述事件发生后,根据所述固态硬盘控制器的错误,控制所述固态硬盘控制器执行相应的处理操作。根据所述的方法,在所述检测由固态硬盘控制器的错误导致的所述固态硬盘执行输入输出指令失败的事件的步骤之前包括对每个下发到所述固态硬盘控制器的输入输出指令设置定时器以及定时周期;在每个下发到所述固态硬盘控制器的输入输出指令发出时,所述定时器开始计时。根据所述的方法,所述检测由固态硬盘控制器的错误导致的所述固态硬盘执行输入输出指令失败的事件的步骤包括在检测到每个下发到所述固态硬盘控制器的输入输出指令的时间超过所述定时周期时,则判定所述固态硬盘控制器的错误导致的所述固态硬盘执行输入输出指令失败的事件发生;和/或在检测到每个从所述固态硬盘控制器返回的输入输出指令失败的事件,不是由所述固态硬盘的闪存存储介质的错误导致的,则判定所述固态硬盘控制器的错误导致的所述固态硬盘执行输入输出指令失败的事件发生。根据所述的方法,所述在检测到所述事件发生后,根据所述固态硬盘控制器的错误,控制所述控制器执行相应的处理操作的步骤包括控制所述固态硬盘控制器进行重启;阻塞新下发到所述固态硬盘控制器的输入输出指令和返回到所述固态硬盘控制器的输入输出指令;在所述固态硬盘控制器重启后,再次向所述固态硬盘控制器派发被阻塞的所述输入输出指令。 根据所述的方法,在所述阻塞新下发到所述固态硬盘控制器的输入输出指令和返回到所述固态硬盘控制器的输入输出指令中,通过将所述新下发到所述固态硬盘控制器的输入输出指令和返回到所述固态硬盘控制器的输入输出指令链入到错误处理程序队列中对所述输入输出指令进行阻塞。 为了实现本发明的另一发明目的,本发明还提供了一种固态硬盘,包括检测模块,用于检测由固态硬盘控制器的错误导致的所述固态硬盘执行输入输出指令失败的事件;控制模块,用于在检测模块检测到所述事件发生后,根据所述固态硬盘控制器的错误,控制所述固态硬盘控制器执行相应的处理操作。根据所述的固态硬盘,所述固态硬盘还包括设置模块,用于对每个下发到所述固态硬盘控制器的输入输出指令设置定时器以及定时周期;定时器,用于在每个下发到所述固态硬盘控制器的输入输出指令发出时,对所述下发到所述固态硬盘控制器的输入输出指令的时间开始计时。根据所述的固态硬盘,所述检测模块包括第一检测子模块,用于在检测到每个下发到所述固态硬盘控制器的输入输出指令超过所述定时周期时,则判定所述固态硬盘控制器的错误导致的所述固态硬盘执行输入输出指令失败的事件发生;和/或
第二检测子模块,用于在检测到每个从所述固态硬盘控制器返回的输入输出指令失败的事件,不是由所述固态硬盘的闪存存储介质的错误导致的,则判定所述固态硬盘控制器的错误导致的所述固态硬盘执行输入输出指令失败的事件发生。根据所述的固态硬盘,所述控制模块包括控制子模块,用于控制所述固态硬盘控制器进行重启;阻塞子模块,用于阻塞新下发到所述固态硬盘控制器的输入输出指令和返回到所述固态硬盘控制器的输入输出指令;发送子模块,用于在所述固态硬盘控制器重启后,再次向所述固态硬盘控制器派发被阻塞所述输入输出指令。根据所述的固态硬盘,所述阻塞子模块通过将所述新下发到所述固态硬盘控制器的输入输出指令和返回到所述固态硬盘控制器的输入输出指令链入到错误处理程序队列中对所述输入输出指令进行阻塞。本发明通过检测由固态硬盘控制器的错误导致的所述固态硬盘执行输入输出指令失败的事件的发生,在检测到该事件发生后,则由控制模块根据所述固态硬盘控制器的错误,控制所述固态硬盘控制器执行相应的处理操作,使由固态硬盘控制器的错误导致固态硬盘的执行输入输出指令失败得以纠正,及时正确执行固态硬盘相关输入输出指令,使应用感知不到底层的错误,应用可继续运行而不中断,提高了固态硬盘的容错性及准确率。·


图I是现有技术中的固态硬盘的结构示意图;图2是本发明第一实施例提供的固态硬盘结构示意图;图3是本发明第二、三实施例提供的固态硬盘结构示意图;图4是本发明第五实施例提供的固态硬盘容错的方法流程图;图5是本发明一个实施例提供的固态硬盘容错的方法流程图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。参见图2,在本发明的第一实施例中,提供了一种固态硬盘100,包括检测模块10,用于检测由固态硬盘控制器20的错误导致的所述固态硬盘100执行输入输出指令失败的事件;控制模块30,用于在检测模块10检测到所述事件发生后,根据所述固态硬盘控制器20的错误,控制所述固态硬盘控制器20执行相应的处理操作。在该实施例中,通过检测模块10检测由固态硬盘控制器20的错误导致的所述固态硬盘100执行输入输出指令失败的事件的发生,在检测到该事件发生后,则由控制模块30根据所述固态硬盘控制器20的错误,控制所述固态硬盘控制器20执行相应的处理操作,使由固态硬盘控制器20的错误导致固态硬盘100的执行输入输出指令失败得以纠正,及时恢复固态硬盘100相关输入输出指令的执行,提高了固态硬盘100的容错性及效率。
参见图3,在本发明的第二实施例中,固态硬盘100还包括设置模块40,用于对每个下发到所述固态硬盘控制器20的输入输出指令设置定时器50以及定时周期;定时器50,用于在每个下发到所述固态硬盘控制器20的输入输出指令发出时,对所述下发到所述固态硬盘控制器20的输入输出指令的时间开始计时。在该实施例中,设置模块40对应下发到固态硬盘控制器20的输入输出指令设置定时器50及定时周期,例如,根据实验检测将定时周期设置为8秒,当在该定时周期到达时,若下发到所述固态硬盘控制器20的输入输出指令失败,则认为固态硬盘控制器20发生错误。 参见图3,在本发明的第三实施例中,检测模块10包括第一检测子模块11,用于在检测到每个下发到所述固态硬盘控制器20的输入输出指令超过所述定时周期时,则判定所述固态硬盘控制器20的错误导致的所述固态硬盘100执行输入输出指令失败的事件发生;和/或第二检测子模块12,用于在检测到每个从所述固态硬盘控制器20返回的输入输出指令失败的事件,不是由所述固态硬盘100的闪存存储介质的错误导致的,则判定所述固态硬盘控制器20的错误导致的所述固态硬盘100执行输入输出指令失败的事件发生。由于如果不是闪存存储介质的错误导致的,则只有两种可能,一是硬件电路问题;二是固态硬盘控制器20的问题。闪存存储介质的发生错误的问题可以通过重启固态硬盘100解决。如果是硬件电路问题,IO最终会出错,所以重启一次也可以解决问题。闪存介质错误包括存储介质的损坏(电子泄露)、ECC异常等。在该实施例中,第一检测子模块11检测每个下发到所述固态硬盘控制器20的输入输出指令是否超过所述定时周期。例如对应一个写入指令的下发定时周期为10毫秒,在定时器50计时该时间内写入指令未下发到固态硬盘控制器20,则表明固态硬盘控制器20发生错误,导致了写入指令无法完成。第一检测子模块11判定未在规定的定时周期内下发输入输出指令的,是由于固态硬盘控制器20发生了错。另一方面,第二检测子模块12检测每个从所述固态硬盘控制器20返回的输入输出指令失败的事件,不是由所述固态硬盘100的闪存存储介质的错误导致的,则将该次输入输出指令失败的事件归结为固态硬盘控制器20发生了错误,导致返回输入输出指令失败。在该实施例中,可以解决两类错误而导致的IO错误,该两类错误包括电路错误,这类错误可能是电信号异常或是电路部件失效;逻辑错误,这类错误是由于固态硬盘控制器20固件异常而导致。参见图3,在本发明的第四实施例中,控制模块30包括控制子模块31,用于控制固态硬盘控制器20进行重启;阻塞子模块32,用于阻塞新下发到所述固态硬盘控制器20的输入输出指令和返回到固态硬盘控制器20的输入输出指令;发送子模块33,用于在固态硬盘控制器20重启后,再次向所述固态硬盘控制器20派发被阻塞所述输入输出指令。在该实施例中,在判定固态硬盘控制器20发生错误后,控制子模块31制固态硬盘控制器20进行重启;在重启的过程中,由阻塞子模块32阻塞新下发到所述固态硬盘控制器20的输入输出指令和返回到固态硬盘控制器20的输入输出指令,保证了输入输出指令的不丢失,并且在固态硬盘控制器20重启后,发送子模块33再次向所述固态硬盘控制器20派发被阻塞所述输入输出指令,让这些输入输出指令可以被执行,保证了固态硬盘100读写的正确性。具体的,阻塞子模块32通过将所述新下发到所述固态硬盘控制器20的输入输出指令和返回到所述固态硬盘控制器20的输入输出指令链入到错误处理程序队列中对所述输入输出指令进行阻塞。该固态硬盘100的多个模块可以是内置于固态硬盘100的软件单元,硬件单元或软硬件结合单元。参见图4,在本发明的第五实施例中,提供了一种固态硬盘容错的方法,所述方法包括如下步骤步骤S401中,检测模块10检测由固态硬盘控制器20的错误导致的所述固态硬盘100执行输入输出指令失败的事件; 步骤S402中,控制模块30在检测模块10检测到所述事件发生后,根据所述固态硬盘控制器20的错误,控制所述固态硬盘控制器20执行相应的处理操作。在该实施例中,通过检测模块10检测由固态硬盘控制器20的错误导致的所述固态硬盘100执行输入输出指令失败的事件的发生,在检测到该事件发生后,则由控制模块30根据所述固态硬盘控制器20的错误,控制所述固态硬盘控制器20执行相应的处理操作,对固态硬盘控制器20引发的IO错误进行处理,使应用感知不到底层的IO错误,应用可继续运行而不中断,提高了固态硬盘100的容错性及准确效率。在本发明的第六实施例中,在所述步骤S401之前包括设置模块40对每个下发到所述固态硬盘控制器20的输入输出指令设置定时器50以及定时周期;在每个下发到所述固态硬盘控制器20的输入输出指令发出时,所述定时器50开始计时。在该实施例中,需要对固态硬盘控制器20设置定时器50以及定时周期。然后,对于每个下发到固态硬盘控制器20的10,启动定时器50,如果IO超时,那么认为固态硬盘控制器20发生错误。在本发明的第七实施例中,所述步骤S401包括第一检测子模块11在检测到每个下发到所述固态硬盘控制器20的输入输出指令的时间超过所述定时周期时,则判定所述固态硬盘控制器20的错误导致的所述固态硬盘100执行输入输出指令失败的事件发生;和/或第二检测子模块12在检测到每个从所述固态硬盘控制器20返回的输入输出指令失败的事件,不是由所述固态硬盘100的闪存存储介质的错误导致的,则判定所述固态硬盘控制器20的错误导致的所述固态硬盘100执行输入输出指令失败的事件发生。在该实施例中,除了第一检测子模块11对下发固态硬盘控制器20的输入输出指令的时间进行检测,第二检测子模块12还对于从固态硬盘控制器20返回的10,检测其返回状态,如果不是由于闪存芯片介质而导致的IO错误,则由固态硬盘控制器20发生错误。闪存存储介质导致错误的情况表现为IO返回失败,返回的错误码显示是闪存存储介质错误,应用读写错误。根据该错误码显示可以获知是否是闪存存储介质发生了错误。在本发明的一个实施例中,可以在返回的错误码显示为不是闪存存储介质错误时,则判定为固态硬盘控制器20发生错误。在本发明的第七实施例中,所述步骤S402包括控制子模块31控制所述固态硬盘控制器20进行重启;阻塞子模块32阻塞新下发到所述固态硬盘控制器20的输入输出指令和返回到所述固态硬盘控制器20的输入输出指令;发送子模块33在所述固态硬盘控制器20重启后,再次向所述固态硬盘控制器20派发被阻塞的所述输入输出指令。在该实施中,在识别为固态硬盘控制器20错误后,控制子模块31下发命令到控制器系统,使该系统重启。在重启过程中的IO处理方法包括在第一检测子模块11检测到由于固态硬盘控制器20错误而导致的失败IO后,将这些IO阻塞;同时将新到来以及从固态硬盘控制器20返回的IO均阻塞,待固态硬盘控制器20重新启动后,将这些IO再次派发到控制器系统。具体的,在所述阻塞新下发到所述固态硬盘控制器20的输入输出指令和返回到所述固态硬盘控制器的输入输出指令中,通过将所述新下发到所述固态硬盘控制器20的输入输出指令和返回到所述固态硬盘控制器20的输入输出指令链入到错误处理程序队列中对所述输入输出指令进行阻塞。参见图5,在本发明一个实施例中,对错误IO的处理流程包括步骤S501中,对于每个派发到固态硬盘控制器20的10,启动定时器50,并判断IO下发是否超时;是则执行步骤S504 ;否则执行步骤S502 ;步骤S502中,对IO返回错误码进行判断固态硬盘控制器20是否异常,对于控制器返回的10,检测返回状态,如果不是由于闪存芯片介质而导致的IO错误,那么认为固态硬盘控制器20控制器存在异常。是则执行步骤S503,否则执行正常的IO ;在判断不是固态硬盘控制器20存在异常,则可以进一步检测是否是其他硬件发生了错误,如闪存存储介质或者是电路出现了问题。在闪存存储介质或者是电路出现的问题时,可以通过重启固态硬盘100的方式使固态硬盘100的读写正常。步骤S503中,判断固态硬盘控制器20重启命令是否已下发;是则执行步骤S505 ;否则执行步骤S504 ;步骤S504中,如果IO超时则认为固态硬盘控制器20存在异常;步骤S505中,对于这些异常10,将其链入error_handler队列,同时下发重启命令到控制器;步骤S506中,判断待重启命令是否成功;是则执行步骤S507 ;否则执行步骤S508 ;步骤S507中,检查返回命令状态,如果显示固态硬盘控制器20已启动,重新将error_handler队列中的IO派发到固态硬盘控制器20 ;步骤S508中,如果在一定时间内多次重启固态硬盘控制器20,则认为固态硬盘100异常,固态硬盘100进入保护状态,不再处理10。综上所述,本发明通过检测由固态硬盘控制器的错误导致的所述固态硬盘执行输入输出指令失败的事件的发生,在检测到该事件发生后,则由控制模块根据所述固态硬盘控制器的错误,控制所述固态硬盘控制器执行相应的处理操作,使由固态硬盘控制器的错误导致固态硬盘的执行输入输出指令失败得以纠正,及时正确执行固态硬盘相关输入输出指令,使应用感知不到底层的错误,应用可继续运行而不中断,提高了固态硬盘的容错性及准确率。当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可 根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
1.一种固态硬盘容错的方法,其特征在于,所述方法包括如下步骤 检测由固态硬盘控制器的错误导致的所述固态硬盘执行输入输出指令失败的事件; 在检测到所述事件发生后,根据所述固态硬盘控制器的错误,控制所述固态硬盘控制器执行相应的处理操作。
2.根据权利要求I所述的方法,其特征在于,在所述检测由固态硬盘控制器的错误导致的所述固态硬盘执行输入输出指令失败的事件的步骤之前包括 对每个下发到所述固态硬盘控制器的输入输出指令设置定时器以及定时周期; 在每个下发到所述固态硬盘控制器的输入输出指令发出时,所述定时器开始计时。
3.根据权利要求2所述的方法,其特征在于,所述检测由固态硬盘控制器的错误导致的所述固态硬盘执行输入输出指令失败的事件的步骤包括 在检测到每个下发到所述固态硬盘控制器的输入输出指令的时间超过所述定时周期时,则判定所述固态硬盘控制器的错误导致的所述固态硬盘执行输入输出指令失败的事件发生;和/或 在检测到每个从所述固态硬盘控制器返回的输入输出指令失败的事件,不是由所述固态硬盘的闪存存储介质的错误导致的,则判定所述固态硬盘控制器的错误导致的所述固态硬盘执行输入输出指令失败的事件发生。
4.根据权利要求3所述的方法,其特征在于,所述在检测到所述事件发生后,根据所述固态硬盘控制器的错误,控制所述控制器执行相应的处理操作的步骤包括 控制所述固态硬盘控制器进行重启; 阻塞新下发到所述固态硬盘控制器的输入输出指令和返回到所述固态硬盘控制器的输入输出指令; 在所述固态硬盘控制器重启后,再次向所述固态硬盘控制器派发被阻塞的所述输入输出指令。
5.根据权利要求4所述的方法,其特征在于,在所述阻塞新下发到所述固态硬盘控制器的输入输出指令和返回到所述固态硬盘控制器的输入输出指令中,通过将所述新下发到所述固态硬盘控制器的输入输出指令和返回到所述固态硬盘控制器的输入输出指令链入到错误处理程序队列中对所述输入输出指令进行阻塞。
6.一种固态硬盘,其特征在于,包括 检测模块,用于检测由固态硬盘控制器的错误导致的所述固态硬盘执行输入输出指令失败的事件; 控制模块,用于在检测模块检测到所述事件发生后,根据所述固态硬盘控制器的错误,控制所述固态硬盘控制器执行相应的处理操作。
7.根据权利要求6所述的固态硬盘,其特征在于,所述固态硬盘还包括 设置模块,用于对每个下发到所述固态硬盘控制器的输入输出指令设置定时器以及定时周期; 定时器,用于在每个下发到所述固态硬盘控制器的输入输出指令发出时,对所述下发到所述固态硬盘控制器的输入输出指令的时间开始计时。
8.根据权利要求7所述的固态硬盘方法,其特征在于,所述检测模块包括 第一检测子模块,用于在检测到每个下发到所述固态硬盘控制器的输入输出指令超过所述定时周期时,则判定所述固态硬盘控制器的错误导致的所述固态硬盘执行输入输出指令失败的事件发生;和/或 第二检测子模块,用于在检测到每个从所述固态硬盘控制器返回的输入输出指令失败的事件,不是由所述固态硬盘的闪存存储介质的错误导致的,则判定所述固态硬盘控制器的错误导致的所述固态硬盘执行输入输出指令失败的事件发生。
9.根据权利要求8所述的固态硬盘,其特征在于,所述控制模块包括 控制子模块,用于控制所述固态硬盘控制器进行重启; 阻塞子模块,用于阻塞新下发到所述固态硬盘控制器的输入输出指令和返回到所述固态硬盘控制器的输入输出指令; 发送子模块,用于在所述固态硬盘控制器重启后,再次向所述固态硬盘控制器派发被阻塞所述输入输出指令。
10.根据权利要求9所述的固态硬盘,其特征在于,所述阻塞子模块通过将所述新下发到所述固态硬盘控制器的输入输出指令和返回到所述固态硬盘控制器的输入输出指令链入到错误处理程序队列中对所述输入输出指令进行阻塞。
全文摘要
本发明适用于固态硬盘存储技术领域,提供了一种固态硬盘容错的方法及其固态硬盘,所述方法包括如下步骤检测由固态硬盘控制器的错误导致的所述固态硬盘执行输入输出指令失败的事件;在检测到所述事件发生后,根据所述固态硬盘控制器的错误,控制所述固态硬盘控制器执行相应的处理操作。借此,本发明提高了固态硬盘的容错性。
文档编号G06F11/07GK102915260SQ201210345609
公开日2013年2月6日 申请日期2012年9月17日 优先权日2012年9月17日
发明者曹庭华 申请人:记忆科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1