一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种主机构建SSDFTL映射表的方法及装置与流程

2022-06-01 08:24:05 来源:中国专利 TAG:
一种主机构建ssdftl映射表的方法及装置
技术领域
:1.本发明涉及ssdftl映射表构建领域,具体涉及一种主机构建ssdftl映射表的方法及装置。
背景技术
::2.ftl映射表是一种以ftllba为索引,pba为内容的线性表。ssd接收到主机写入请求后,将hostlba转换获得ftllba,并将请求命令中hostlba关联的逻辑数据写入pba指定的nand空间后,将ftllba与pba的映射关系更新到ftl映射表中。ssd接收到主机读取请求后,将hostlba转换成ftllba后,根据ftllba查找ftl映射表获得pba后,读取nand数据返回给主机。ssd运行时,ftl映射表驻留在ssdddr指定空间中,ssd断电前需要整体刷写到nand中永久存储,ssd上电后再从nand中读出来并恢复到ddr指定空间中。3.ssd断电失败,再次上电时往往会遭遇包括ftl映射表在内的元数据丢失。此时,全盘数据深度恢复重建ftl映射表是一种有效找回丢失数据的常用方式,但该方式并不是ssd的一种必备功能。全盘数据深度恢复功能可以在ssd中执行,也可以借助外部主机实现。4.一般因ssd内部资源受限等原因,数据深度恢复会借助主机端实现,主机端通常借助专用的读取方式将发生故障的ssd内部nand数据全部读取到主机端中,然后再进行数据提取和分析,将有效数据恢复出来,但这种恢复方式耗时较长,极大影响数据恢复效率。技术实现要素:5.为解决上述问题,本发明提供一种主机构建ssdftl映射表的方法及装置,通过在故障ssd中预置ftl映射表,主机根据预置的ftl映射表构建真实ftl映射表,实现快速稳定地将故障ssdnand中所有有效数据对应的ftl映射关系重建出来,为下一步做数据恢复和备份提供前置条件。6.第一方面,本发明的技术方案提供一种主机构建ssdftl映射表的方法,包括以下步骤:主机分n次向故障ssd下发ftl映射表预置命令;其中n≥2;故障ssd接收到当次ftl映射表预置命令后,基于其分区空间预置每个分区空间的ftl映射表;其中,预置完成的ftl映射表中逻辑块地址个数小于对应分区空间的存储单元个数;主机在故障ssd当次ftl映射表预置完成后,读取故障ssdnand数据,在本地内存构建真实的ssdftl映射表;待主机完成全部次数的ssdftl映射表构建后,将最终重建的ssdftl映射表发送至故障ssd。7.进一步地,n的取值由预置ftl映射表的粒度确定,具体地,n=(分区空间的存储单元个数 (每次预置的ftlentry个数-1))/每次预置的ftlentry个数;其中,每次预置的ftlentry个数的取值范围为[1,命名空间大小/分区空间个数];故障ssd上电后,整盘被配置成一个4k格式的命名空间,整个命名空间容量为用户容量,命名空间大小=命名空间容量/命名空间格式大小;前n-1次的每个分区空间所预置的ftl映射表的逻辑块地址个数为每次预置的ftlentry个数。[0008]进一步地,故障ssd接收到当次ftl映射表预置命令后,基于其分区空间预置每个分区空间的ftl映射表,具体包括:故障ssd接收到当次ftl映射表预置命令后,按照pba格式扫描对应分区空间的存储单元,将存储单元的物理块地址依次与ftl映射表的逻辑块地址进行映射。[0009]进一步地,该方法具体还包括:故障ssd接收到当次ftl映射表预置命令后,按照pba格式扫描对应分区空间的剩余未扫描存储单元,将存储单元的物理块地址依次与ftl映射表的逻辑块地址进行映射时,从ftl映射表的起始逻辑块地址开始写入,覆写前一次写入的物理块地址。[0010]进一步地,该方法具体还包括:若故障ssd接收到当次ftl映射表预置命令后,所扫描的存储单元个数少于前一次所扫描的存储单元个数,则将ftl映射表中未被覆写的物理块地址清除。[0011]进一步地,主机在故障ssd当次ftl映射表预置完成后,读取故障ssdnand数据,在本地内存构建真实的ssdftl映射表,具体包括:主机根据当次故障ssd预置的ftl映射表的可访问逻辑块地址个数计算当次最大主机逻辑块地址;从主机逻辑块地址为0开始直到当次最大主机逻辑块地址,通过nvmeio路径方式读取故障ssd的数据;在本地内存开辟与故障ssd分区空间个数相同份数的ftl映射表空间,以逻辑块地址为索引,以物理块地址和从故障ssd读取到的相应数据为内容构建真实的ssdftl映射表。[0012]进一步地,主机所读取故障ssd的数据为相应存储单元数据框架的序列号。[0013]进一步地,该方法具体还包括:若多个物理块地址读取的数据内容中逻辑块地址相同,那么选取序列号最大的存储单元数据框架的序列号以及关联的物理块地址作为ftl映射表中关联的逻辑块地址索引的表项内容。[0014]进一步地,主机根据当次故障ssd的预置ftl映射表的可访问逻辑块地址个数计算当次最大主机逻辑块地址,具体为:最大主机逻辑块地址=当次预置的ftl映射表可访问的逻辑块地址个数*分区空间个数-1。[0015]第二方面,本发明的技术方案提供一种主机构建ssdftl映射表的装置,包括,预置命令下发模块:主机分n次向故障ssd下发ftl映射表预置命令;其中n≥2;预置ftl映射表模块:故障ssd接收到当次ftl映射表预置命令后,基于其分区空间预置每个分区空间的ftl映射表;其中,预置完成的ftl映射表中逻辑块地址个数小于对应分区空间的存储单元个数;真实ftl映射表构建模块:主机在故障ssd当次ftl映射表预置完成后,读取故障ssdnand数据,在本地内存构建真实的ssdftl映射表;真实ftl映射表发送模块:待主机完成全部次数的ssdftl映射表构建后,将最终重建的ssdftl映射表发送至故障ssd。[0016]第三方面,本发明的技术方案提供一种终端,包括:存储器,用于存储主机构建ssdftl映射表程序;处理器,用于执行所述主机构建ssdftl映射表程序时实现如上述任一项所述主机构建ssdftl映射表方法的步骤。[0017]第四方面,本发明的技术方案提供一种计算机可读存储介质,所述可读存储介质上存储有主机构建ssdftl映射表程序,所述主机构建ssdftl映射表程序被处理器执行时实现如上述任一项所述主机构建ssdftl映射表方法的步骤。[0018]本发明提供的一种主机构建ssdftl映射表的方法、装置、终端及存储介质,相对于现有技术,具有以下有益效果:在故障ssd中预置ftl映射表,ftl映射表预置完成后,主机获取目标数据,在本地内存构建真实的ftl映射表,再将最终构建的真实ftl映射表发送给故障ssd,实现快速稳定地将故障ssdnand中所有有效数据对应的ftl映射关系重建出来,为下一步做数据恢复和备份提供前置条件。附图说明[0019]为了更清楚的说明本技术实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。[0020]图1为本发明实施例一提供的一种主机构建ssdftl映射表的方法流程示意图。[0021]图2为dataframe结构示意图。[0022]图3为本发明实施例一故障ssd单个partition内部lba与pba映射的结构示意图。[0023]图4为本发明实施例一主机所构建真实ftl映射表格式示意图。[0024]图5为本发明实施例二提供的一种主机构建ssdftl映射表的装置结构示意框图。[0025]图6为本发明实施例三提供的一种终端的结构示意图。具体实施方式[0026]以下对本发明涉及的部分英文术语进行解释。[0027]ssd:solidstatedrives固态硬盘。[0028]lba:logicalblockaddress逻辑块地址。[0029]pba:physicalblockaddress物理块地址。[0030]l2p:logicaltophysicaltable逻辑块到物理块的映射表,即ftl映射表。[0031]nand:计算机闪存设备。[0032]ddr:一种内存名称,即双倍速率同步动态随机存储器。[0033]本发明的核心是,通过在故障ssd中预置ftl映射表,主机根据预置的ftl映射表构建真实ftl映射表,实现快速稳定地将故障ssdnand中所有有效数据对应的ftl映射关系重建出来,为下一步做数据恢复和备份提供前置条件。[0034]为了使本
技术领域
:的人员更好地理解本技术方案,下面结合附图和具体实施方式对本技术作进一步的详细说明。显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。[0035]实施例一本实施例一提供一种主机构建ssdftl映射表的方法,主机分多次通知故障ssd在内部ddr中预置ftl映射表,故障ssd接收到当次预置命令后,按照特定预置方式在ddr中预置ftl映射表。主机查询到当次ftl映射表预置完成之后,通过nvmeio路径方式读取故障ssdnand数据,并在主机端内存中重建真实的ssdftl映射表。等主机端完成全部次数的ftl映射表重建过程之后,将最终重建的真实ssdftl映射表全部再导入到ssdddr中。这样,故障ssdddr中驻留了真实的ftl映射表,主机就可以发起正常的数据读取过程了。[0036]如图1所示为本实施例一提供的一种主机构建ssdftl映射表的方法流程示意图,包括以下步骤。[0037]s101,主机分n次向故障ssd下发ftl映射表预置命令;其中n≥2。[0038]s102,故障ssd接收到当次ftl映射表预置命令后,基于其分区空间预置每个分区空间的ftl映射表;其中,预置完成的ftl映射表中逻辑块地址个数小于对应分区空间的存储单元个数。[0039]由于ssd的裸容量比用户容量大,而预置的ftl映射表是基于用户容量构建的,因此一次预置ftl映射表并不能扫描到ssd的全部存储单元,需要多次进行预置ftl映射表构建,以扫描到ssd的全部存储单元。[0040]s103,主机在故障ssd当次ftl映射表预置完成后,读取故障ssdnand数据,在本地内存构建真实的ssdftl映射表。主机获知故障ssd预置完成后,直接发起读取故障ssd命令,故障ssd接收到命令,根据命令中包含逻辑块地址查询预置的ftl映射表获得物理块地址以读取故障ssdnand数据。[0041]s104,待主机完成全部次数的ssdftl映射表构建后,将最终重建的ssdftl映射表发送至故障ssd。[0042]本实施例一提供的一种主机构建ssdftl映射表的方法,在故障ssd中预置ftl映射表,ftl映射表预置完成后,主机获取目标数据,在本地内存构建真实的ftl映射表,再将最终构建的真实ftl映射表发送给故障ssd,实现快速稳定地将故障ssdnand中所有有效数据对应的ftl映射关系重建出来,为下一步做数据恢复和备份提供前置条件。[0043]在本实施例中,ssd固件架构引入了partition机制,将整个ssdnand空间分成若干个物理块区域,每个物理块区域称作一个partition(分区空间)。partition之间相互独立,内部配置独有的ftl固件核,运行一份相同的固件读写机制,单独维护一份ftl映射表。partition内部,ftllba从0开始编排,一般按照4k 粒度管理nand存储单元,每个4k 粒度关联唯一的pba物理块地址。这样每一个ftlentry的形式为(ftllba,pba),ftllba和pba分别占用4个bytes。[0044]假设ssd固件采用4k 大小存储单元粒度,该单元称为dataframe,dataframe结构如图2所示。其中,controlmeta内部包含4bytesftllba和8bytessequencenumber(序列号)等字段。ssd在运行过程中,在单个partition中,将每一个dataframe写入nand之前,会将ftllba记录到controlmeta中,同时分配一个sequencenumber,类似时间戳机制,相当于记录每个dataframe的写入时间,其他约束:1)sequencenumber从1开始使用,每写入一个dataframe,sequencenumber加1;2)gc过程只搬移数据,不做sequencenumber的修改;3)sequencenumber存储在每个dataframe的controlmeta中,在ssd整个寿命过程中不能发生反转。[0045]ssd上电过程中检测到上次下电执行失败后可以进入一种特殊的只读模式,并将只读模式通过异步事件上报给主机。在此种只读模式下,故障ssd被识别为nvme设备。由于ftl映射表已经丢失,ssd接收的所有读取请求都会返回virgin数据。在此状态下,主机和故障ssd执行本实施例的构建ssdftl映射表的方法,主要包括以下四个流程:ftl映射表预置命令下发,ftl映射表预置,ftl映射表构建,ftl映射表导入。[0046](一)ftl映射表预置命令下发主机恢复工具启动恢复流程后,首先需要通知故障ssd进行ftl映射表预置。[0047]由于op空间(即预留空间)的存在,ssd的裸容量比用户容量要大一些,例如裸容量为10个存储单元,而用户可用的用户容量只有6个存储单元,所以按照整份l2p表(以用户容量为基础,共6个逻辑块地址)为一个单位进行预置,每个partition内部需要进行两次预置命令处理。第一次预置将填满整个ftl映射表,而第二次预置是将剩余的物理空间(指第一次预置未扫描到的物理空间,第一次预置6个物理空间,则第二次预置剩余的4个物理空间)从ftl映射表头部开始继续设置。2次预置也能够最低限度降低主机与ssd的交互次数,减少开发复杂度。[0048]由于故障ssd预置ftl映射表需要一些时间,主机恢复工具可以暂定每隔60s查询一次预置命令执行结果。[0049](二)ftl映射表预置ssd收到主机下发的ftl映射表预置命令后,开始执行ftl映射表预置流程。为了简单和容易实现,在每个partition内部,由写流程时负责pba分配的固件核进行ftl映射表预置。[0050]具体地,故障ssd接收到当次ftl映射表预置命令后,基于其分区空间预置每个分区空间的ftl映射表;其中,预置完成的ftl映射表中逻辑块地址个数小于对应分区空间的存储单元个数。[0051]由于op空间的存在,ssd的裸容量比用户容量要大一些。故障ssd在只读模式下被初始化成4k格式的单namespace(命名空间),所以其namespacesize,也就是namespace中可以访问的hostlba个数是确定的。[0052]但是,ssd固件采用了partition机制,namespacesize并不一定对partition对齐,也就是说分到每个partition中的hostlba并不一定是均匀的。[0053]需要说明的是,主机分n次向故障ssd下发ftl映射表预置命令,n的取值取决于预置ftl映射表的粒度,就是每次预置的ftlentry的个数ftl_entry_preset_num_per_time。[0054]具体地,n=(pba_num_per_partition (ftl_entry_preset_num_per_time‑ꢀ1))/ftl_entry_preset_num_per_time。[0055]其中,pba_num_per_partition是每个分区空间的存储单元个数。[0056]例如,每次预置1000个ftlentry,即ftl_entry_preset_num_per_time=1000。前n-1次的每个分区空间所预置的ftl映射表的逻辑块地址个数都是ftl_entry_preset_num_per_time=1000。[0057]实际上,ftl_entry_preset_num_per_time的取值范围就是[1,命名空间大小/分区空间个数]。可以理解的是,故障ssd上电后,整盘被配置成一个4k格式的命名空间,整个命名空间容量为用户容量,命名空间大小=命名空间容量/命名空间格式大小。[0058]只有ftl_entry_preset_num_per_time=命名空间大小/分区空间个数时,此时n=2,前n-1次才可以是这个公式ftl_entry_preset_num_per_time=命名空间大小/分区空间个数。这是最大的ftl映射表预置粒度。[0059]以下以两次预置ftl映射表为例,说明预置ftl映射表约束如下。[0060]ssd接收到第一次ftl映射表预置命令后,每个partition内负责预置处理的固件核所处理的最大个数都是一样的,且遵循如下限制:max_cnt_per_partition=name_space_size/partition_num即,预置的ftl映射表的逻辑块地址个数=命名空间大小/分区空间个数。[0061]在每个partition内部,负责ftl映射表预置的核只需要扫描max_cnt_per_partition个pba就完成了第一轮ftl映射表预置命令。[0062]对于第二次预置ftl映射表,由于坏块和parity对block的影响,实际上,第二次预置ftl映射表的最终可读ftllba个数是随机的,但pba格式扫描nand的最后一个可用pba,以及设置了多少个pba都是在流程处理完成之后可知的。因此,第二轮扫描完成,需要将每个partition中能够处理的ftllba个数max_cnt_per_partition反馈给主机。[0063]主机根据当次故障ssd预置的ftl映射表的可访问逻辑块地址个数计算当次最大主机逻辑块地址,具体地,hostlba=max_cnt_per_partition*partition_numꢀ–ꢀ1,即最大主机逻辑块地址=当次预置的ftl映射表可访问的逻辑块地址个数*分区空间个数-1。[0064]故障ssd接收到当次ftl映射表预置命令后,基于其分区空间预置每个分区空间的映射表,具体包括:故障ssd接收到当次ftl映射表预置命令后,按照pba格式扫描对应分区空间的存储单元,将存储单元的物理块地址依次与ftl映射表的逻辑块地址进行映射。[0065]如图3所示为故障ssd单个partition内部lba与pba映射的结构示意图。[0066]第二次处理ftl映射表预置命令时,也是从ftl映射表的起始开始写入,相当于覆盖写第一次写入的pba。具体地,故障ssd接收到当次ftl映射表预置命令后,按照pba格式扫描对应分区空间的剩余未扫描存储单元,将存储单元的物理块地址依次与ftl映射表的逻辑块地址进行映射时,从ftl映射表的起始逻辑块地址开始写入,覆写前一次写入的物理块地址。[0067]若故障ssd接收到当次ftl映射表预置命令后,所扫描的存储单元个数少于前一次所扫描的存储单元个数,则将预置的ftl映射表中未被覆写的物理块地址清除。具体实施时,为了处理简单,partition之间可以同步一下,保持可以处理的ftllba的个数一致,即取值所有partition中能够处理ftllba最大个数max_cnt_per_partition。如果某个partition内可以处理的ftllba个数小于同步的ftllba个数取值,那么需要清除对齐个数的pba值,以便让主机读取该ftllba时,返回virgin数据。[0068]需要说明的是,pba预置过程中需要跳过坏块和parity的位置。因为坏块表当前都是由ssd固件前端维护,保存在superblock中,而故障ssd基本上都可以实现superblock的恢复。[0069](三)ftl映射表构建主机查询检测到当次ssd预置ftl映射表成功执行完成,获取当次能够访问的max_cnt_per_partition,就可以获知主机本次可以访问的最大hostlba。主机从hostlba=0开始通过nvmeio方式直接读取故障ssd,直到读取到最大的hostlba。[0070]ssd接收到读取命令后,通过读取命令中的hostlba转换成ftllba,查询ftl映射表之后读取nand,将从nand中读取的dataframe数据中,只将controlmeta数据反馈给主机。[0071]如图4所示为主机所构建真实ftl映射表格式示意图,主机直接在内存中开辟与故障ssd分区空间个数相同份数的ftl表空间,每个ftlentry的形式为(pba,seq_num),ftl映射表以ftllba为索引;如果当前ftllba对应的ftlentry未被写入,则将获取的当前(pba,seq_num)更新到ftl表中。否则,需要比较当前和已存入ftl表中的seq_num,以seq_num大的ftlentry为当前ftllba的最终结果。[0072]具体地,该过程执行以下步骤。[0073]步骤一,主机根据当次故障ssd预置的ftl映射表的可访问逻辑块地址个数计算当次最大主机逻辑块地址。[0074]最大主机逻辑块地址=当次预置ftl映射表可访问的逻辑块地址个数*分区空间个数-1。[0075]步骤二,从主机逻辑块地址为0开始直到当次最大主机逻辑块地址,通过nvmeio路径方式读取故障ssd的数据。[0076]主机读取故障ssd的数据为相应存储单数据框架存储单元数据框架的序列号。[0077]若多个物理块地址读取的数据内容中逻辑块地址相同,那么选取序列号最大的存储单元数据框架的序列号以及关联的物理块地址作为ftl映射表中关联的逻辑块地址索引的表项内容。[0078]步骤三,在本地内存开辟与故障ssd分区空间个数相同份数的ftl映射表空间,以逻辑块地址为索引,以物理块地址和从故障ssd读取到的相应数据为内容构建真实的ssdftl映射表。[0079](四)ftl映射表的导入n次ftl映射表预置以及对应的主机构建ftl映射表完成后,主机在内存中构建了真实的ftl映射表。为了进一步读取到所有有效数据,主机需要将主机内存中的ftl映射表导入到ssdddr中。因为主机内存中构建了partition同等分数的ftl映射表,所以需要将所有partition的ftl映射表依次都导入到ssdddr中。导入时,从每一份ftl映射表的起始ftllba开始导入,只需要将ftllba对应的pba导入到ssdddr中对应的位置,直到将所有ftllba导入完成。[0080]实施例二本实施例二提供一种主机构建ssdftl映射表的装置,用于实现前述的主机构建ssdftl映射表的方法。[0081]如图5所示为本实施例二提供的一种主机构建ssdftl映射表的装置结构示意框图,包括以下功能模块。[0082]预置命令下发模块101:主机分n次向故障ssd下发ftl映射表预置命令;其中n≥2。[0083]预置ftl映射表模块102:故障ssd接收到当次ftl映射表预置命令后,基于其分区空间预置每个分区空间的ftl映射表;其中预置完成的ftl映射表中逻辑块地址个数小于对应分区空间的存储单元个数。[0084]真实ftl映射表构建模块103:主机在故障ssd当次ftl映射表预置完成后,读取故障ssdnand数据,在本地内存构建真实的ssdftl映射表。[0085]真实ftl映射表发送模块104:待主机完成全部次数的ssdftl映射表构建后,将最终重建的ssdftl映射表发送至故障ssd。[0086]本实施例的主机构建ssdftl映射表装置用于实现前述的主机构建ssdftl映射表方法,因此该装置中的具体实施方式可见前文中的主机构建ssdftl映射表方法的实施例部分,所以,其具体实施方式可以参照相应的各个部分实施例的描述,在此不再展开介绍。[0087]另外,由于本实施例的主机构建ssdftl映射表装置用于实现前述的主机构建ssdftl映射表方法,因此其作用与上述方法的作用相对应,这里不再赘述。[0088]实施例三图6为本发明实施例提供的一种终端装置600的结构示意图,包括:处理器610、存储器620及通信单元630。所述处理器610用于实现存储器620中保存的主机构建ssdftl映射表程序时实现以下步骤:主机分n次向故障ssd下发ftl映射表预置命令;其中n≥2;故障ssd接收到当次ftl映射表预置命令后,基于其分区空间预置每个分区空间的ftl映射表;其中预置完成的ftl映射表中逻辑块地址个数小于对应分区空间的存储单元个数;主机在故障ssd当次ftl映射表预置完成后,读取故障ssdnand数据,在本地内存构建真实的ssdftl映射表;待主机完成全部次数的ssdftl映射表构建后,将最终重建的ssdftl映射表发送至故障ssd。[0089]本发明在故障ssd中预置ftl映射表,ftl映射表预置完成后,主机获取目标数据,在本地内存构建真实的ftl映射表,再将最终构建的真实ftl映射表发送给故障ssd,实现快速稳定地将故障ssdnand中所有有效数据对应的ftl映射关系重建出来,为下一步做数据恢复和备份提供前置条件。[0090]该终端装置600包括处理器610、存储器620及通信单元630。这些组件通过一条或多条总线进行通信,本领域技术人员可以理解,图中示出的服务器的结构并不构成对本发明的限定,它既可以是总线形结构,也可以是星型结构,还可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。[0091]其中,该存储器620可以用于存储处理器610的执行指令,存储器620可以由任何类型的易失性或非易失性存储终端或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。当存储器620中的执行指令由处理器610执行时,使得终端600能够执行以下上述方法实施例中的部分或全部步骤。[0092]处理器610为存储终端的控制中心,利用各种接口和线路连接整个电子终端的各个部分,通过运行或执行存储在存储器620内的软件程序和/或模块,以及调用存储在存储器内的数据,以执行电子终端的各种功能和/或处理数据。所述处理器可以由集成电路(integratedcircuit,简称ic)组成,例如可以由单颗封装的ic所组成,也可以由连接多颗相同功能或不同功能的封装ic而组成。举例来说,处理器610可以仅包括中央处理器(centralprocessingunit,简称cpu)。在本发明实施方式中,cpu可以是单运算核心,也可以包括多运算核心。[0093]通信单元630,用于建立通信信道,从而使所述存储终端可以与其它终端进行通信。接收其他终端发送的用户数据或者向其他终端发送用户数据。[0094]实施例四本发明还提供一种计算机存储介质,这里所说的存储介质可为磁碟、光盘、只读存储记忆体(英文:read-onlymemory,简称:rom)或随机存储记忆体(英文:randomaccessmemory,简称:ram)等。[0095]计算机存储介质存储有主机构建ssdftl映射表程序,所述主机构建ssdftl映射表程序被处理器执行时实现以下步骤:主机分n次向故障ssd下发ftl映射表预置命令;其中n≥2;故障ssd接收到当次ftl映射表预置命令后,基于其分区空间预置每个分区空间的ftl映射表;其中预置完成的ftl映射表中逻辑块地址个数小于对应分区空间的存储单元个数;主机在故障ssd当次ftl映射表预置完成后,读取故障ssdnand数据,在本地内存构建真实的ssdftl映射表;待主机完成全部次数的ssdftl映射表构建后,将最终重建的ssdftl映射表发送至故障ssd。[0096]本发明在故障ssd中预置ftl映射表,ftl映射表预置完成后,主机获取目标数据,在本地内存构建真实的ftl映射表,再将最终构建的真实ftl映射表发送给故障ssd,实现快速稳定地将故障ssdnand中所有有效数据对应的ftl映射关系重建出来,为下一步做数据恢复和备份提供前置条件。[0097]本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中如u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质,包括若干指令用以使得一台计算机终端(可以是个人计算机,服务器,或者第二终端、网络终端等)执行本发明各个实施例所述方法的全部或部分步骤。[0098]在本发明所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。[0099]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。[0100]另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。[0101]以上公开的仅为本发明的优选实施方式,但本发明并非局限于此,任何本领域的技术人员能思之的没有创造性的变化,以及在不脱离本发明原理前提下所作的若干改进和润饰,都应落在本发明的保护范围内。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献