用于访问存储设备的方法及相关产品与流程

文档序号:34891691发布日期:2023-07-25 18:47阅读:24来源:国知局
用于访问存储设备的方法及相关产品与流程

本技术一般地涉及存储。更具体地,本技术涉及用于访问存储设备的方法、以及执行前述方法的主机和计算机可读存储介质。


背景技术:

1、图1a展示了固态存储设备的框图。固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如sata(serial advanced technology attachment,串行高级技术附件)、scsi(small computer system interface,小型计算机系统接口)、sas(serial attachedscsi,串行连接scsi)、ide(integrated drive electronics,集成驱动器电子)、usb(universal serial bus,通用串行总线)、pcie(peripheral component interconnectexpress,pcie,高速外围组件互联)、nvme(nvm express,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102(下文中,将固态存储设备简称为存储设备)包括接口103、控制部件104、一个或多个nvm芯片105以及dram(dynamic randomaccess memory,动态随机访问存储器)110。

2、上述nvm芯片105包括nand闪存、相变存储器、feram(ferroelectric ram,铁电存储器)、mram(magnetic random access memory,磁阻存储器)、rram(resistive randomaccess memory,阻变存储器)等常见的存储介质。

3、上述接口103可适配于通过例如sata、ide、usb、pcie、nvme、sas、以太网、光纤通道等方式与主机交换数据。

4、上述控制部件104用于控制在接口103、nvm芯片105以及dram110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。控制部件104可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件104可以是fpga(field-programmable gate array,现场可编程门阵列)、asic(application specificintegrated circuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理io(input/output)命令。控制部件104还可以耦合到dram 110,并可访问dram 110的数据。在dram可存储ftl表和/或缓存的io命令的数据。

5、控制部件104包括闪存接口控制器(或称为介质接口控制器、闪存通道控制器),闪存接口控制器耦合到nvm芯片105,闪存接口控制器以遵循nvm芯片105的接口协议的方式向nvm芯片105发出命令,以操作nvm芯片105,并接收从nvm芯片105输出的命令执行结果。已知的nvm芯片接口协议包括“toggle”、“onfi”等。

6、在存储设备102中,利用ftl(flash translation layer,闪存转换层)来维护从逻辑地址(lba)到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储地址空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在相关技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。存储了从逻辑地址到物理地址的映射信息的表结构被称为ftl表。ftl表是存储设备中的重要元数据。ftl表的条目记录了存储设备中以数据页为单位的地址映射关系。

7、一些存储设备的ftl由存储设备所耦合的主机提供,由主机的存储器存储ftl表,主机的cpu执行软件提供ftl。还有一些被设置在主机与存储设备之间的存储管理装置提供ftl。这些情况下,存储设备所接收的读/写命令指示物理地址。

8、主机提供给存储设备的命令可能访问ftl表的一个或多个条目所对应的逻辑地址。以及控制部件可能将从接口103接收的命令改变形态(例如,根据ftl条目所对应的逻辑地址空间大小切分命令),并处理改变形态的命令。为了清楚的目的,在本文中,以存储设备接收的读/写命令访问单一ftl条目为例来描述。

9、图1b展示了现有技术中逻辑地址空间的示意图。在现有技术中,逻辑地址空间是存储设备所提供的存储地址空间,主机可以使用逻辑地址空间中的元素(逻辑地址)来访问存储设备。一般来说,主机所能够访问的逻辑地址(logical block addressing,lba)空间与存储设备所能提供的lba空间大小相同。对于逻辑地址空间,存储设备是通过ftl表来进行管理逻辑地址与物理地址之间的映射。

10、图1c展示了主机访问存储设备的示意图。在图1c中,主机向存储设备发送io命令(读/写命令),io命令指示了要访问的逻辑地址(lba地址),存储设备基于控制部件中管理的ftl表将该lba地址转换为物理块地址(physical block address,pba),然后控制部件根据pba地址来访问nvm芯片。

11、随着数据存储技术的不断提高,各种各样的数据被存储于存储设备中,例如用户数据、操作系统、应用程序数据或主机恢复出厂设置所需的数据等,为了提高数据的安全性,有些数据并不希望被用户所看到(如主机恢复出厂设置所需的数据),而这些数据可以在存储设备中被隐藏存储,其中,数据的隐藏存储是指在主机侧用户或者应用程序看不到也无法访问这些数据。


技术实现思路

1、现有技术所说的隐藏存储的数据,通常是对主机的应用程序隐藏,而对主机的操作系统是可见的,如果操作系统被入侵或者误操作,也会导致隐藏存储的数据存在被篡改或删除等风险。相关技术中,为了提高隐藏存储的数据的安全性,存储设备中所隐藏存储的数据对主机应用程序和操作系统都隐藏,正常情况下主机不能通过应用程序或者操作系统来对隐藏存储的数据进行访问以及修改等操作,仅在需要使用隐藏存储的数据时,主机才能够访问隐藏存储的数据,例如,主机需要恢复出厂设置时,主机能够访问在存储设备中隐藏存储的主机恢复出厂设置所需的数据,以执行出厂设置。

2、存储设备可以根据不同的需求设置不同的工作模式,例如,正常情况下存储设备的工作模式为隐藏模式,需要使用隐藏存储的数据情况下存储设备的工作模式为普通模式;另外,普通模式和隐藏模式下存储设备所设置的存储容量不同,一般普通模式下所设置的存储容量大于隐藏模式下所设置的存储容量。为了实现访问隐藏存储的数据或者隐藏部分数据,存储设备可以在隐藏模式和普通模式之间切换。由于不同工作模式所对应的存储容量不同,所以在隐藏模式和普通模式之间切换时,主机所获取的存储设备的存储容量会发生变化。

3、主机对存储设备的访问以及写入数据时,需要依据存储设备的存储空间中所存储的分区表来执行相应操作,而分区表一般存储在存储设备的存储空间的头部和/或尾部的存储空间。存储设备的工作模式由普通模式切换到隐藏模式或者由隐藏模式切换到普通模式时,由于存储设备的存储容量发生变化,当主机在需要对存储设备访问或写入数据时,主机从存储空间的头部或尾部将查找不到分区表,导致对存储设备访问或写入数据失败。因此,本技术希望存储设备能实现隐藏模式与普通模式之间切换,使得存储设备的存储容量发生变化时,主机依然能够成功的对存储设备进行访问。

4、为了能够成功的获取所需数据(例如,对主机可见的数据或对主机隐藏的数据),本技术实施例所提供的方案,主机在获取存储设备的存储容量后,需要确定存储设备的存储容量是否发生变化,并在存储容量发送变化时检查存储设备的分区表是否正常,根据分区表异常的具体情况来利用不同的访问方式对存储设备的存储空间进行访问,从而能够成功从存储设备中获取到所需数据。

5、进一步地,本技术实施例所提供的方案中,对于隐藏模式或普通模式下,主机均可以访问的存储空间部分,可以利用该存储空间部分已经存在的文件系统来访问;而对于仅在普通模式下主机可以访问的存储空间部分,主机无法直接利用已经存在的文件系统进行访问,可以利用所创建的块设备、分区或直接利用该部分的逻辑地址来对其进行访问,从而满足存储容量发送变化时对数据的访问需求。

6、进一步,本技术实施例所提供的方案中,在存储设备的工作模式由普通模式切换到隐藏模式时,可以将隐藏模式下备份的分区表写回指定位置处以及存储设备的存储地址空间的头部,从而避免因存储设备工作模式改变而导致分区表异常。

7、进一步,由于现有技术中,操作系统设置了主机在启动时会触发对存储设备的初始化获取存储设备的存储容量,在其他时刻无法触发获取存储设备的存储容量操作。也就是说,在主机运行过程中,当存储设备的工作模式发生切换使得存储容量发生变化时,主机在运行过程中是无法得知存储容量发生变化,还是依然按照变化之前的存储容量对存储设备进行访问。由于存储设备的存储容量发生变化时,可能会导致分区表发生异常,使得主机对存储设备访问失败。为了使得在存储设备的存储容量发生变化后,主机能实时获取变化后的存储容量。本技术实施例所提供的方案中,还可以对调整存储设备工作模式的命令进行注册,以调整存储获取存储设备的存储容量时机,使得主机可以根据需求随时向存储设备发送identify命令以获取其存储容量。

8、进一步,本技术实施例所提供的方案中,还可以结合模式切换标记来对分区表异常错误的情况进行区分处理。具体地,若能在指定位置处找到正确的分区表且能找到模式切换标记,说明此时的分区表异常错误是存储设备改变工作模式所引起的,主机不需要对此进行处理,此时可忽略分区表异常错误,以避免主机进一步处理而导致存储设备无法正常使用。若在指定位置未找到正确的分区表或者未找到模式切换标记,说明出现故障,此时进行报错,以便能够及时进行后续的维护。

9、根据本技术的第一方面,提供了根据本技术第一方面的第一用于访问存储设备的方法,包括:对所述存储设备进行初始化,获取所述存储设备的存储容量;响应于确定所述存储设备的存储容量发生变化,检查所述存储设备的分区表是否异常;以及响应于检查出所述存储设备的分区表异常,若在所述存储设备的存储空间的指定位置找到正确的分区表,则利用第一方式访问所述指定位置之前的存储空间,以及利用第二方式访问所述指定位置之后的存储空间。

10、根据本技术的第一方面的第一用于访问存储设备的方法,提供了根据本技术第一方面的第二用于访问存储设备的方法,利用第一方式访问所述指定位置之前的存储空间包括:利用所述指定位置之前的存储空间内已经存在的文件系统访问所述指定位置之前的存储空间。

11、根据本技术的第一方面的第一用于访问存储设备的方法,提供了根据本技术第一方面的第三用于访问存储设备的方法,利用第二方式访问所述指定位置之后的存储空间包括:创建关于所述指定位置之后的存储空间的块设备,并根据所述块设备对其进行访问;或者创建关于所述指定位置之后的存储空间的分区,并根据所述分区对其进行访问;或者根据所述指定位置之后的存储空间的逻辑地址直接对其进行访问。

12、根据本技术的第一方面的第三用于访问存储设备的方法,提供了根据本技术第一方面的第四用于访问存储设备的方法,创建关于所述指定位置之后的存储空间的块设备,并根据所述块设备对其进行访问包括:利用所述指定位置之后的存储空间创建所述块设备;将所述块设备挂载至文件系统的指定路径;以及根据所述指定路径对所述指定位置之后的存储空间进行访问。

13、根据本技术的第一方面的第三用于访问存储设备的方法,提供了根据本技术第一方面的第五用于访问存储设备的方法,创建关于所述指定位置之后的存储空间的分区,并根据所述分区对其进行访问包括:更新所述存储设备的分区表,以创建所述指定位置之后的存储空间所对应的分区;以及从所述分区对所述指定位置之后的存储空间进行访问。

14、根据本技术的第一方面的第一用于访问存储设备的方法至第五用于访问存储设备的方法之一,提供了根据本技术第一方面的第六用于访问存储设备的方法,还包括:在更新所述存储设备的分区表之前,备份在所述存储空间的指定位置的分区表;以及响应于检测到所述存储设备的工作模式切换至隐藏模式时,将备份的分区表写回所述指定位置。

15、根据本技术的第一方面的第六用于访问存储设备的方法,提供了根据本技术第一方面的第七用于访问存储设备的方法,还包括:利用备份的分区表恢复所述存储设备中被更新的分区表。

16、根据本技术的第一方面的第七用于访问存储设备的方法,提供了根据本技术第一方面的第八用于访问存储设备的方法,利用备份的分区表恢复所述存储设备中被更新的分区表包括:将备份的分区表写回所述指定位置以及所述存储设备的存储地址空间的头部。

17、根据本技术的第一方面的第一用于访问存储设备的方法至第八用于访问存储设备的方法之一,提供了根据本技术第一方面的第九用于访问存储设备的方法,还包括:向所述存储设备发出触发其调整工作模式的命令,其中所述命令包括模式切换命令或nvme协议所定义的set feature命令。

18、根据本技术的第一方面的第九用于访问存储设备的方法,提供了根据本技术第一方面的第十用于访问存储设备的方法,向所述存储设备发出触发其调整工作模式的命令之前,还包括:对所述模式切换命令进行注册,以将所述模式切换命令同identify命令进行关联。

19、根据本技术的第一方面的第十用于访问存储设备的方法,提供了根据本技术第一方面的第十一用于访问存储设备的方法,还包括:响应于向存储设备发出已注册的所述模式切换命令,向所述存储设备发送所述identify命令,以获取所述存储设备的存储容量。

20、根据本技术的第一方面的第九用于访问存储设备的方法至第十一用于访问存储设备的方法之一,提供了根据本技术第一方面的第十二用于访问存储设备的方法,还包括:响应于发出所述模式切换命令,记录模式切换标记。

21、根据本技术的第一方面的第十二用于访问存储设备的方法,提供了根据本技术第一方面的第十三用于访问存储设备的方法,还包括:响应于检查出所述存储设备的分区表异常,若在所述存储设备的存储空间的指定位置找到正确的分区表,并且找到所述模式切换标记,则忽略分区表异常错误;或者响应于检查出所述存储设备的分区表异常,若在所述存储设备的存储空间的指定位置未找到正确的分区表,或者未找到所述模式切换标记,则报错。

22、根据本技术的第一方面的第十二用于访问存储设备的方法,提供了根据本技术第一方面的第十四用于访问存储设备的方法,还包括:根据所述存储设备的存储容量,确定所述存储设备的存储地址空间范围;以及响应于待向存储设备发出io命令,若所述io命令中访问所述指定位置之后的存储空间的地址超出了所述存储设备的存储地址空间范围,拒绝向所述存储设备发出所述io命令。

23、根据本技术的第一方面的第十二用于访问存储设备的方法至第十四用于访问存储设备的方法之一,提供了根据本技术第一方面的第十五用于访问存储设备的方法,还包括:删除所述模式切换标记。

24、根据本技术的第二方面,提供了根据本技术第二方面的一种主机,所述主机用于实现本技术的第一方面的第一用于访问存储设备的方法至第十五用于访问存储设备的方法之一。

25、根据本技术的第三方面,提供了根据本技术第三方面的一种计算机可读存储介质,当所述程序指令由处理器执行时,使得实现本技术的第一方面的第一用于访问存储设备的方法至第十五用于访问存储设备的方法之一。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1