CN116414616A - 一种固态硬盘ssd故障恢复方法、ssd及系统 - Google Patents

一种固态硬盘ssd故障恢复方法、ssd及系统 Download PDF

Info

Publication number
CN116414616A
CN116414616A CN202111666992.8A CN202111666992A CN116414616A CN 116414616 A CN116414616 A CN 116414616A CN 202111666992 A CN202111666992 A CN 202111666992A CN 116414616 A CN116414616 A CN 116414616A
Authority
CN
China
Prior art keywords
ssd
ftl table
data
recovery
host
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
Application number
CN202111666992.8A
Other languages
English (en)
Inventor
刘睿煜
张仁国
李尧
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202111666992.8A priority Critical patent/CN116414616A/zh
Publication of CN116414616A publication Critical patent/CN116414616A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种固态硬盘SSD故障恢复方法、SSD及系统,本申请中:当SSD发现SSD存在数据不一致,设置标志位,标志位用于指示所述SSD需进入恢复状态,恢复状态为SSD中存在数据不一致、且能接收主机命令的状态;主机检测该标志位,根据标志位向SSD发送重启命令,SSD根据重启命令进行重启,在重启后,主机向SSD发送恢复命令。SSD响应恢复命令,利用备份的FTL表对当前使用的FTL表进行恢复。当SSD发生数据不一致,不再采用挂死处理,主机与SSD配合通过利用备份的FTL表对当前使用的FTL表进行恢复,以达到故障恢复的效果,能够减少对SSD采用挂死处理的情况,减少SSD的报废率。

Description

一种固态硬盘SSD故障恢复方法、SSD及系统
技术领域
本申请涉及存储技术领域,尤其涉及一种固态硬盘SSD故障恢复方法、SSD及系统。
背景技术
随着计算机技术的高速发展,所要求的数据传输速度越来越高。硬盘作为主要的存储设备,除了硬盘自身的存储容量,硬盘的读写速度成为衡量硬盘性能的另一个重要指标。相较于机械硬盘,固态硬盘(solid-state drive,SSD)鉴于其更佳的读写速度,逐渐成为了主流的硬盘。
与固态硬盘所连接的主机可以通过指令的方式,访问固体硬盘上的存储的数据。若主机在访问固体硬盘中存储的数据时,固态硬盘无响应,主机会认为该固态硬盘出现故障,会对固态硬盘进行挂死处理,如踢除该固态硬盘,或提示用户更换固态硬盘。
但事实上,固态硬盘无响应可能仅是固态硬盘中的小部分数据存在异常,大部分数据是正常的。如果在固态硬盘无响应的情况下,一律采用挂死处理,会影响固态硬盘的正常数据的处理。
发明内容
本申请提供一种固态硬盘SSD故障恢复方法、SSD及系统,用以恢复由于FTL表引起的数据不一致。
第一方面,本申请实施例提供了一种SSD故障恢复方法,该方法可以由SSD执行,该SSD与主机连接,SSD能够接收主机的命令,在该方法中:当SSD发现SSD存在数据不一致,SSD可以设置SSD中的标志位,该标志位用于指示SSD需进入恢复状态;该恢复状态是SSD的一个新状态,主要用于故障恢复。在该恢复状态下,SSD可以仍存在数据不一致的情况,但能够与主机进行交互,接收主机的命令。
在本申请中数据不一致为由于FTL表出现问题导致的数据不一致,FTL表出现的问题有许多种,包括但不限于:FTL表中数据缺失、数据无效或FTL表所在位置存在故障。
主机可以检测该标志位,在检测到该标志位之后,根据该标志位向SSD发送重启命令,SSD在根据该重启命令重启后,主机可以向SSD发送恢复命令,该恢复命令用于指示对当前使用的FTL表进行恢复。SSD在接收到该恢复命令后,响应恢复命令,利用备份的FTL表对当前使用的FTL表进行恢复,其中,FTL表用于指示SSD中数据的逻辑地址和数据的物理地址的映射关系。在对当前使用的FTL表恢复之后,SSD可以利用恢复后的FTL表对SSD中的数据进行数据重建。
通过上述方法,当SSD发生数据不一致,不再采用挂死处理,主机与SSD配合通过利用备份的FTL表对当前使用的FTL表进行恢复,达到故障恢复的效果,能够减少对SSD采用挂死处理的情况,减少SSD的报废率,另外,SSD新增加了恢复状态,以保证SSD在与主机配合进行故障恢复时,能够接收主机的命令,以保证能够成功进行故障恢复。
在一种可能的实现方式中,SSD内部可以对FTL表进行数据备份,本申请实施例并不限定数据备份的方式,例如SSD可以仅采用数据冗余备份的方式,对FTL表中的数据进行备份,保存备份的FTL表,该备份的FTL表包括备份时的FTL表。又例如,SSD也可以采用存储快照的方式对FTL表进行备份,在SSD中保存备份的FTL表,该备份的FTL表包括备份时的FTL表以及时间戳,时间戳用于指示备份时间点。
通过上述方法,SSD的备份方式较为灵活,适用于不同的场景,SSD能够对FTL表进行备份,能够进一步保证后续可以对FTL表进行恢复,以保证FTL表中数据的准确性。
在一种可能的实现方式中,SSD在重启后,可以检测标志位,根据标志位进入恢复状态。
通过上述方法,SSD能够进入恢复状态,使得后续可以成功接收到恢复命令,保证可以顺利对FTL表进行恢复。
在一种可能的实现方式中,SSD在利用备份的FTL表对当前使用的FTL表进行恢复时,可以根据SSD中保存的最近一次备份的FTL对当前使用的FTL表进行恢复。
通过上述方法,利用最近一次备份的FTL表对当前使用的FTL表进行恢复,能够使得恢复后的FTL表中能够较多、相对完整的保留其中的数据。
第二方面,本申请实施例提供了一种SSD故障恢复系统,该系统包括SSD和主机,有益效果可以参见第一方面以及第一方面任一种可能的实现方式中的相关说明,此处不再赘述。
SSD在确定SSD存在数据不一致的情况下,SSD可以设置SSD中的标志位,该标志位用于指示SSD需进入恢复状态;该恢复状态是SSD的一个新状态,主要用于故障恢复。在该恢复状态下,SSD可以仍存在数据不一致的情况,但能够与主机进行交互,接收主机的命令。主机可以检测该标志位,在检测到该标志位之后,根据该标志位向SSD发送重启命令,SSD根据该重启命令进行重启,SSD重启后,可以接收恢复命令;响应恢复命令,利用备份的FTL表对当前使用的FTL表进行恢复,其中,FTL表用于指示SSD中数据的逻辑地址和数据的物理地址的映射关系。
在一种可能的实现方式中,SSD还可以备份FTL表,本申请并不限备份FTL表的方式,例如,SSD可以采用存储快照的方式对FTL表进行备份,在SSD中保存备份的FTL表,备份的FTL表包括备份时的FTL表以及时间戳,时间戳用于指示备份的时间点。又例如,SSD可以采用数据冗余备份的方式对FTL表进行备份,在SSD中保存备份的FTL表,该备份的FTL表包括备份时的FTL表。
在一种可能的实现方式中,SSD重启后,SSD可以检测标志位,根据标志位进入恢复状态。
在一种可能的实现方式中,SSD可以根据SSD上存储的最近一次备份的FTL对当前使用的FTL表进行恢复。
第三方面,本申请实施例还提供了一种故障恢复装置,该数据恢复装置可以部署在SSD上,具有实现上述第一方面的方法实例中行为的功能,有益效果可以参见第一方面的描述此处不再赘述。功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块。在一个可能的设计中,装置的结构中包括设置模块、接收模块、以及恢复模块,可选的,还可以包括备份模块,这些模块可以执行上述第一方面方法示例中的相应功能,具体参见方法示例中的详细描述,此处不做赘述。
第四方面,本申请实施例还提供了一种故障恢复指示装置,该数据恢复指示装置可以部署在主机上,具有实现上述第二方面的实例中主机的行为的功能,有益效果可以参见第一方面的描述此处不再赘述。功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块。在一个可能的设计中,装置的结构中包括发送模块、检测模块,这些模块可以执行上述第二方面方法示例中的相应功能,具体参见方法示例中的详细描述,此处不做赘述。其中,检测模块用于接收SSD的标志位、恢复成功通知,发送模块用于向SSD发送重启命令、恢复命令等。
第五方面,本申请实施例还提供了一种SSD,该SSD包括主控制器以及内存,所述内存中可以保存执行程序指令,主控制器可以调用内存中的程序指令执行如第一方面以及第一方面的各个可能的实现方式中的SSD所执行的方法,有益效果可以参见第一方面的描述此处不再赘述。
第六方面,本申请还提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面以及第一方面的各个可能的实现方式中的方法。
第七方面,本申请还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面以及第一方面的各个可能的实现方式中的方法。
第八方面,本申请还提供一种计算机芯片,芯片与存储器相连,芯片用于读取并执行存储器中存储的软件程序,执行上述第一方面以及第一方面的各个可能的实现方式中的方法。
附图说明
图1为本申请提供的一种系统的架构示意图;
图2为本申请提供的一种SSD的结构示意图;
图3为本申请提供的一种FLT表的结构示意图;
图4为本申请提供的一种SSD故障恢复方法示意图;
图5为本申请提供的一种故障恢复装置的结构示意图。
具体实施方式
如图1所示为本申请实施例提供的一种系统架构示意图,该系统中包括主机200、固态硬盘(solid-state drive,SSD)100。主机200与SSD100连接,本申请实施例并不限定主机200与SSD100的连接方式。例如,主机200与SSD100可以通过串行高级技术附件(serialadvanced technology attachment,SATA)接口、串行小型计算机系统接口(serialattached small computer system interface,SAS)、外部设备互联总线(peripheralcomponent interconnect express,PCIe)或非易失性存储器标准(non-volatile memoryexpress,NVMe)连接。
在本申请实施例中主机200能够与SSD100进行交互,访问SSD100中存储的数据。主机200与SSD100除了进行正常的数据访问之外。主机200还可以与SSD100配合以完成对SSD100的故障恢复,以保证SSD100能够正常运行,如进行正常的数据读取、以及数据写入。这里的主机200可以指服务器、个人电脑或者阵列控制器等任何设备。
为了能够较佳的理解对SSD100故障处理流程,下面先对SSD100的内部结构、以及主机200访问SSD100中存储的数据的方式进行说明。
SSD100是一种主要以闪存(NAND Flash)作为永久性存储器的存储设备。如图2所示,SSD 100包括NAND闪存、主控制器(简称:主控)101以及内存103。NAND闪存包括多个闪存芯片105,用于存储数据。主控101是SSD的大脑中枢,负责一些复杂的任务,如管理数据存储、维护SSD性能和使用寿命等。主控101是一种嵌入式微芯片,它包括处理器102,其功能就像命令中心,发出SSD的所有操作请求。例如,处理器102可通过内存103中的固件来执行读取/写入数据,垃圾回收以及磨损均衡等功能。
SSD100的主控101还包括主机接口104和若干个通道控制器。其中,主机接口104用于与主机通信。通过若干个通道控制器,主控101可以并行操作多块闪存芯片105,从而提高底层的带宽。举个例子,假设主控101与闪存之间有8个通道,那么主控101通过这8通道并行地向8个闪存芯片105读写数据。
SSD100中还包括内存103,内存103中会保存有处理器102运行所需的程序指令,如一些固件。这里的固件还可以包括闪存翻译层(flash translation layer,FTL)表,内存中还可以包括备份的FTL表。当然,备份的FTL表也可以存储在闪存芯片105中。FTL表是主机200访问SSD100中存储的数据的关键因素。
与SSD100所连接的主机200是通过逻辑块地址(logical block address,LBA)访问SSD100的,每个LBA代表着一个扇区(以512B为例),而在SSD100内部,主控101以页(page)为单位访问SSD。因此,主机200每次写入一个数据时,SSD100的主控101会找一个页将该数据写入,page的地址被称为物理块地址(physical block address,PBA)。SSD100的主控101记录了一条LBA到PBA的映射。有了这样一个映射后,下次主机200需要读某个LBA的数据时,SSD100就知道从闪存芯片的哪个位置把数据读取上来。图3是FTL表的示意图,FTL表可以作为处理器102的固件的一部分保存在SSD100的内存103中。如图3所示,主机200每写入一个新数据,就会产生一个新的映射关系,这个映射关系会加入(第一次写)或者更改(覆盖写)FTL。当读取某个数据时,SSD100首先查找FTL表中该数据的LBA所对应的PBA,然后再根据PBA读取相应的数据。需要说明的是,PBA所指示的位置可以包括闪存芯片和内存。
闪存芯片105不能支持覆盖写,这意味着当主机200对某个LBA上的数据进行修改时,不能直接在这个LBA所对应的PBA上更改,必须写到一个新的PBA,并在FTL中增加一条映射。如,FTL中原来有LBA D与PBA D之间的映射关系,当主机200发送一个输入输出(inputoutput,IO)请求,要求修改LBA D的数据时,SSD100寻找一个新的位置(PBA E)写入该数据,并在FTL中增加LBA D与PBA E之间的映射关系。
从上述数据访问的方式中可以看出,影响数据访问的关键因素是FTL表。FTL表能够体现SSD100中的数据一致性,这里的数据一致性是指逻辑块地址与物理块地址的一致性。当SSD100中出现数据不一致的情况时,会导致SSD100数据访问失败或错误。FTL表出现问题会导致数据不一致的发生,FTL表出现的问题可能是FTL表中数据出现问题。
FTL表中数据出现的问题包括FTL表中映射关系记录失效、映射关系缺等。
在本申请实施例中,SSD100在出现数据不一致的情况下,可以设置标志位,其中,标志位用于指示SSD100需进入恢复状态,恢复状态为SSD中存在数据不一致、且能接收所述主机命令的状态。主机200在接收到该状态信息之后,可以和SSD100配合对由于数据不一致导致的故障进行处理,对于FTL表中数据出现问题的情况,主机200可以命令SSD100对当前使用的FTL进行恢复。SSD100在对当前使用的FTL进行恢复后,可以利用恢复后的FTL表对SSD中的数据进行数据重建。
在本申请实施例中,当SSD100发生数据不一致的情况下,主机200和SSD100不再采用挂死处理,而是与SSD100配合对出现的故障进行处理,以保证SSD100能够处理正常业务,降低SSD100的报废率。
下面结合附图4对本申请实施例提供的一种固态硬盘故障恢复方法进行说明,如图4所示,为本申请实施例提供的一种固态硬盘故障恢复方法,该方法包括如下步骤:
步骤401:SSD100在确定SSD100发生数据不一致的情况下,设置SSD中的标志位,该标志位表征SSD需进入恢复状态。
在本申请实施例中,当SSD100在确定出现下列的部分或全部状况,可以确定SSD100发生数据不一致:
状况一:根据FTL表无法实现逻辑块地址到物理块地址的转换。
当主机200请求SSD100从逻辑块地址所指示的位置读取数据时,SSD100在FTL表中找不到该逻辑块地址的映射关系、或在该FTL表中该逻辑块地址并未映射物理块地址(也即该逻辑块地址所映射的物理块状态为缺失状态),说明该FTL表无法实现该逻辑块地址到物理块地址的转换。
当SSD100发现出现这种状况时,可以认为SSD100发生数据不一致。SSD100也可以在这种状况的出现次数大于阈值A的情况下,认为SSD100发生数据不一致。
状况二:无法在FTL表中增加逻辑地址到物理地址的映射关系。
当主机200请求SSD100从逻辑块地址所指示的位置写入数据时,SSD100在FTL表写入不了该逻辑块地址到物理地址的映射关系,当SSD100发现出现这种状况时,可以认为SSD100发生数据不一致。SSD100也可以在这种状况的出现次数大于阈值B的情况下,认为SSD100发生数据不一致。
值得注意的是,上述SSD100确定发生数据不一致的状况仅是举例,凡是由于FTL表导致的数据不一致的状况均适用于本申请实施例,SSD100都可能认为SSD100发生了数据不一致。
SSD100可以只有在发现SSD100发生数据不一致的情况下,添加标志位。该标志位用于指示SSD100需进入恢复状态。
在实际应用中,当SSD100发现SSD100发生数据不一致,SSD100可能会自行进入挂死状态,处于挂死状态下的SSD100无法与主机200进行交互,也就是说,SSD100可能无法接收到该主机200发出的各种命令。为了使得SSD100在发生数据不一致的情况下,仍能够保留与主机200的交互功能,可以为SSD100配置新的状态,该新的状态即为恢复状态,在该恢复状态下,SSD100虽然存在数据不一致的情况,不能正常的进行数据访问,但仍具备与主机200的交互功能,能够接收来自主机200的命令(如恢复命令或隔离命令)。
SSD100也可以维护用于表征SSD100状态的标志位,当未发生数据不一致,该标志位表征SSD100正常,当发生数据不一致,SSD100可以变更该标志位,变更后的标志位可以表征SSD100需进入恢复状态。
步骤402:主机200可以检测SSD中的标志位,根据该标志位可以确定SSD100中存在数据不一致。
主机200可以轮询该SSD100中的标志位,当发现该SSD100中的标志位表征需要进入恢复状态时,确定SSD100中存在故障。可以执行后续步骤。
步骤403:主机200向SSD100发送重启命令。
步骤404:SSD100在接收到重启命令后,进行重启,如重新上电、重新建立与主机200的连接。SSD100在检测到标志位后,进入恢复状态。
恢复状态是为了与主机200配合进行故障恢复所设置的状态。主机200在检测到该标志位后,主机200也可以对SSD100进行重启上电,主机200和SSD100重新建立之间的连接,在主机200与SSD100之间的连接重建完成后,SSD100在检测到标志位后,进入恢复状态。
当然,在一些可能的场景中,若SSD100在发生故障的情况下,仍具备与主机200交互的功能,SSD100可以直接进入恢复状态,主机200可以无需执行步骤403以及步骤404,直接执行步骤405。
步骤405:主机200向SSD100发送恢复命令,该恢复命令用于指示对当前使用的FTL表进行恢复。
步骤406:SSD100根据备份的FTL表对当前使用的FTL表进行恢复。
在SSD100内部可以对FTL表进行备份,并在内部存储备份的FTL表,本申请实施例提供了两种备份方式:
方式一、数据冗余备份。
SSD100内部可以对FTL表定期或不定期的进行数据冗余备份。数据冗余备份是指对FTL表中的数据进行复制,复制的数据即为备份的FTL表。
SSD100内部在进行数据冗余备份时,可以对FTL表中全部的数据进行备份,这种数据冗余备份方式成为全量备份。SSD100内部在对FTL表每进行一次全量备份,可以利用生成的备份的FTL表替换上次全量备份生成的备份的FTL表。也即SSD100内部可以始终保存最近一次全量备份的备份的FTL表。
SSD100内部在进行数据冗余备份时,可以对FTL表中新增的数据进行备份,这种数据冗余备份方式成为增量备份。增量备份是指每次在进行数据备份时,仅备份相较于上次数据备份时新增的数据。SSD100内部在对FTL表每进行一次增量备份,保存备份的新增数据。
SSD100内部可以即采用全量备份,也采用增量备份。例如,SSD100内部可以采用较大的周期进行全量备份,采用较小的周期进行增量备份。
备份产生的备份的FTL表或新增数据可以保存在内存103中、也可以保存在闪存芯片105中。
方式二、存储快照备份。
SSD100内部可以对FTL表定期或不定期地采用存储快照的数据对FTL表中的数据备份。这种备份方式备份生成的备份的FTL表是FTL表在备份时间点的映像。也即是说备份生成的备份的FTL表包括:FTL表中全部数据以及表征备份时间点的时间戳。
SSD100内部可以仅采用方式一进行对FTL表备份,也可以仅采用方式二对FTL表备份。SSD100内部还可以既采用方式一对FTL表备份,也采用方式二对FTL表备份。在这种情况下,方式一下数据备份的周期与方式二下存储快照备份的周期可以相同,也可以不同。
当SSD100内部仅采用方式一进行对FTL表备份,SSD100在需要对当前使用的FTL表进行恢复时,可以利用备份的FTL表直接替换当前使用的FTL表,也可以利用备份的FTL表修正当前使用的FTL表中与备份的FTL表不一致的部分。
当SSD100内部仅采用方式二进行对FTL表备份,SSD100在需要对当前使用的FTL表进行恢复时,可以利用最近一次备份的FTL表直接替换当前使用的FTL表,也可以利用最近一次备份的FTL表修正当前使用的FTL表中与备份的FTL表不一致的部分。其中,最近一次备份的FTL表是指时间戳所指示的备份时间点最靠近当前时间的备份的FTL表。
当SSD100内部既采用方式一对FTL表备份,也采用方式二对FTL表备份,SSD100在需要对当前使用的FTL表进行恢复时,可以随机选择其中任一方式备份的FTL表对当前使用的FTL表进行恢复。SSD100利用备份的FTL表对当前使用的FTL表进行恢复的方式可以参见前述说明,此处不再赘述。SSD100在需要对当前使用的FTL表进行恢复时,也可以优先选择方式二备份的FTL表对当前使用的FTL表进行恢复。
需要说明的是,由于备份的FTL表中可能存在一些数据错误或恢复操作有中断,导致SSD100利用备份的FTL表对当前使用的FTL表进行恢复时,恢复失败。若SSD100第一次利用备份的FTL表对当前使用的FTL表进行恢复,且恢复失败,可以再利用备份的FTL表对当前使用的FTL表进行一次或多次恢复,直至恢复成功。另外,当备份的FTL表是采用方式二生成的,当SSD100采用最近一次备份的FTL表对当前使用的FTL表进行恢复,且恢复失败的情况下,SSD100在再次对当前使用的FTL表进行恢复时,可以采用最近一次备份的、前一次备份的FTL表对当前使用的FTL表进行恢复,也即可以采用回退备份FTL表,用备份时间点距离当前时间点较远的备份的FTL表对当前使用的FTL表进行恢复,直至恢复成功。
步骤407:SSD100向主机200发送恢复成功通知,以通知主机200FTL表恢复成功。SSD100可以利用恢复后的FTL表对SSD中的数据进行数据重建。
需要说明的是,SSD100利用备份的FTL表对FTL表恢复成功的情况下,在备份的FTL表生成的时间点到恢复FTL表恢复的时间点之间,FTL表中新增的映射关系未记录在备份的FTL表中,这些新增的映射关系中物理块地址处存储的数据可以被认为属于无效数据,SSD100标记将这些物理块地址标记为错误地址,提前对这些错误地址进行垃圾回收,删除这些错误地址上存储的数据。
步骤408:主机200在接收到恢复成功通知后,可以对SSD100进行数据访问,如读取SSD100中的数据,或向SSD100中写入数据。
至此,主机200和SSD100之间相互配合能够实现对FTL表中引起的数据不一致的恢复,减少了对SSD100采用挂死处理的几率。值得注意的是,在上述步骤中,是由主机200主动的下发恢复故障的相关指示,如恢复指示。事实上,采用相同的故障恢复原理,SSD100也可以自行进行故障恢复,也即当SSD100确定发生数据不一致时,可以自行利用备份的FTL对当前使用的FTL进行恢复,这样,省略了SSD100与主机200的交互,也使得SSD100的故障恢复更加高效。
基于与方法实施例同一发明构思,本申请实施例还提供了一种故障恢复装置,该故障恢复装置用于执行上述如图4所示的方法实施例中所述SSD执行的方法,相关特征可参见上述方法实施例,此处不再赘述。如图5所示,所述故障恢复装置500包括设置模块501、接收模块502以及恢复模块503。
设置模块501,用于在SSD存在数据不一致的情况下,设置标志位,其中,所述标志位用于指示所述SSD需进入恢复状态,所述恢复状态为所述SSD中存在数据不一致、且能接收所述主机命令的状态;设置模块501可以执行如图4所示的步骤401~402、步骤407。
接收模块502,用于可以接收主机发送的重启命令,在SSD重启后,接收主机发送的恢复命令。该重启命令是主机根据该标志位发送的。接收模块502可以执行如图4所示的步骤403、步骤405。
恢复模块503,用于根据重启命令进行重启,在重启后,响应恢复命令,利用备份的FTL表对当前使用的FTL表进行恢复,其中,FTL表用于指示SSD中数据的逻辑地址和数据的物理地址的映射关系。恢复模块503可以执行如图4所示的步骤404、步骤406、步骤411。
在一种可能的实施方式中,故障恢复装置500还包括备份模块504。备份模块504可以对FTL表进行备份。例如,备份模块504可以采用数据冗余备份的方式对FTL表进行备份,保存备份的FTL表,给备份的FTL表包括备份时的FTL表,也即包括FTL表的所有数据。备份模块504也可以采用存储快照的方式对FTL表进行备份,在SSD中保存备份的FTL表,备份的FTL表包括备份的FTL表以及时间戳,时间戳用于指示备份时间点。
在一种可能的实施方式中,恢复模块503在重启后,还可以检测标志位,根据标志位为进入恢复状态。
在一种可能的实施方式中,恢复模块503利用备份的FTL表对当前使用的FTL表进行恢复时,可以根据SSD中保存的最近一次备份的FTL表对当前使用的FTL表进行恢复。
需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本申请的实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘(solid state drive,SSD)。
基于与方法实施例同一发明构思,本申请实施例还提供了一种SSD,该SSD用于执行上述如图4所示的方法实施例中所述SSD执行的方法,该SSD的结构可以参见图2所示,SSD中包括主控制器101以及内存103,内存103中存储有执行SSD故障恢复方法所需要的程序指令,主控制器101(实际上是主控制器中的处理器102)可以调用该程序指令,执行如图4所述的方法实施例中SSD所执行的方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变形在内。

Claims (10)

1.一种固态硬盘SSD故障恢复方法,其特征在于,所述方法由SSD执行,所述SSD与主机连接,所述方法包括:
在SSD存在数据不一致的情况下,设置标志位,其中,所述标志位用于指示所述SSD需进入恢复状态,所述恢复状态为所述SSD中存在数据不一致、且能接收所述主机命令的状态;
根据主机发送的重启命令进行重启,其中,所述重启命令是所述主机根据所述标志位发送的;
重启后接收所述主机发送的恢复命令;
响应所述恢复命令,利用备份的闪存翻译层FTL表对当前使用的FTL表进行恢复,其中,所述FTL表用于指示所述SSD中数据的逻辑地址和数据的物理地址的映射关系。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
在所述SSD中保存所述备份的FTL表,所述备份的FTL表包括备份时的所述FTL表以及时间戳,所述时间戳用于指示备份时间点。
3.如权利要求1所述的方法,其特征在于,还包括:
检测所述标志位,根据所述标志位进入所述恢复状态。
4.如权利要求1~3任一项所述的方法,其特征在于,所述利用备份的闪存翻译层FTL表对当前使用的FTL表进行恢复,包括:
根据所述SSD中保存的最近一次备份的FTL表对所述当前使用的FTL表进行恢复。
5.一种固态硬盘SSD,其特征在于,所述SSD包括主控制器和内存,所述内存存储有程序指令,所述主控制器用于调用所述程序指令执行如权利要求1~4任一项所述的方法。
6.一种固态硬盘SSD故障恢复系统,其特征在于,所述系统包括主机和SSD;
所述SSD,用于在所述SSD存在数据不一致的情况下,设置标志位,其中,所述标志位用于指示所述SSD需进入恢复状态,所述恢复状态为所述SSD中存在数据不一致、且能接收所述主机命令的状态;
所述主机,用于在检测所述标志位,根据所述标志位向所述SSD发送重启命令;在所述SSD重启后,向所述SSD发送恢复命令;
所述SSD,还用于根据所述重启命令重启;在重启后接收所述恢复命令;响应所述恢复命令,利用备份的闪存翻译层FTL表对当前使用的FTL表进行恢复,其中,所述FTL表用于指示所述SSD中数据的逻辑地址和数据的物理地址的映射关系。
7.如权利要求6所述的系统,其特征在于,所述SSD还用于:
在所述SSD中保存备份的FTL表,所述备份的FTL表包括备份时的所述FTL表以及时间戳,所述时间戳用于指示备份的时间点。
8.如权利要求6所述的系统,其特征在于所述SSD,还用于检测所述标志位,根据所述标志位进入恢复状态。
9.如权利要求6~8任一项所述的系统,其特征在于,所述SSD,用于:
根据所述SSD中保存的最近一次备份的FTL表对所述当前使用的FTL表进行恢复。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述如权利要求1~4任一项所述的方法。
CN202111666992.8A 2021-12-31 2021-12-31 一种固态硬盘ssd故障恢复方法、ssd及系统 Pending CN116414616A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111666992.8A CN116414616A (zh) 2021-12-31 2021-12-31 一种固态硬盘ssd故障恢复方法、ssd及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111666992.8A CN116414616A (zh) 2021-12-31 2021-12-31 一种固态硬盘ssd故障恢复方法、ssd及系统

Publications (1)

Publication Number Publication Date
CN116414616A true CN116414616A (zh) 2023-07-11

Family

ID=87058361

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111666992.8A Pending CN116414616A (zh) 2021-12-31 2021-12-31 一种固态硬盘ssd故障恢复方法、ssd及系统

Country Status (1)

Country Link
CN (1) CN116414616A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117234437A (zh) * 2023-11-15 2023-12-15 苏州元脑智能科技有限公司 一种存储设备、磁盘重启的控制方法及装置
CN117312055A (zh) * 2023-11-16 2023-12-29 荣耀终端有限公司 数据备份的方法及相关装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117234437A (zh) * 2023-11-15 2023-12-15 苏州元脑智能科技有限公司 一种存储设备、磁盘重启的控制方法及装置
CN117234437B (zh) * 2023-11-15 2024-02-13 苏州元脑智能科技有限公司 一种存储设备、磁盘重启的控制方法及装置
CN117312055A (zh) * 2023-11-16 2023-12-29 荣耀终端有限公司 数据备份的方法及相关装置
CN117312055B (zh) * 2023-11-16 2024-04-19 荣耀终端有限公司 数据备份的方法及相关装置

Similar Documents

Publication Publication Date Title
JP7326379B2 (ja) ハードディスク故障対処方法、アレイコントローラ、およびハードディスク
KR101921365B1 (ko) 비휘발성 매체 더티 영역 추적 기법
DK3179359T3 (en) PROCEDURE FOR SENDING DATA, PROCEDURE FOR RECEIVING DATA AND STORAGE UNIT
US7490103B2 (en) Method and system for backing up data
JP5947327B2 (ja) 複数の格納媒体デバイスについてのファイルシステムバックアップのためのデバイス、格納媒体および方法
CN106776147B (zh) 一种差异数据备份方法和差异数据备份装置
WO2014132373A1 (ja) ストレージシステム及び記憶デバイス障害回復方法
JP2017079053A (ja) ストレージジャーナリングを改善する方法およびシステム
CN116414616A (zh) 一种固态硬盘ssd故障恢复方法、ssd及系统
US10503620B1 (en) Parity log with delta bitmap
CN111984365B (zh) 一种虚拟机虚拟磁盘双活实现方法及系统
WO2018076633A1 (zh) 一种远程数据复制方法、存储设备及存储系统
US20230251931A1 (en) System and device for data recovery for ephemeral storage
CN111831476A (zh) 控制raid系统的操作的方法
WO2014075586A1 (zh) 一种jbod阵列自动恢复存储的方法和装置
CN110825559A (zh) 一种数据处理方法及设备
US10664346B2 (en) Parity log with by-pass
WO2021088367A1 (zh) 数据恢复方法及相关设备
CN116204137B (zh) 基于dpu的分布式存储系统、控制方法、装置及设备
JP2011008663A (ja) ストレージ制御装置及びストレージ装置のデータ回復方法
JP2021114164A (ja) ストレージ装置及びストレージ制御方法
WO2021082011A1 (zh) 应用于磁盘阵列系统的数据重构方法、装置及计算设备
CN113391941B (zh) 一种raid的读写超时处理方法、装置、设备及介质
CN109343986B (zh) 处理内存故障的方法与计算机系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication