CN116501663A - 用于访问隐藏空间的方法及相关产品 - Google Patents
用于访问隐藏空间的方法及相关产品 Download PDFInfo
- Publication number
- CN116501663A CN116501663A CN202210457584.XA CN202210457584A CN116501663A CN 116501663 A CN116501663 A CN 116501663A CN 202210457584 A CN202210457584 A CN 202210457584A CN 116501663 A CN116501663 A CN 116501663A
- Authority
- CN
- China
- Prior art keywords
- hidden
- space
- storage device
- host
- program
- 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
- 238000000034 method Methods 0.000 title claims abstract description 81
- 238000005192 partition Methods 0.000 claims description 52
- 230000004044 response Effects 0.000 claims description 14
- 230000002155 anti-virotic effect Effects 0.000 claims description 4
- 238000012005 ligant binding assay Methods 0.000 description 116
- 238000010586 diagram Methods 0.000 description 21
- 238000013507 mapping Methods 0.000 description 19
- 230000006870 function Effects 0.000 description 14
- 230000008569 process Effects 0.000 description 12
- 238000012545 processing Methods 0.000 description 10
- 230000008859 change Effects 0.000 description 8
- 239000007787 solid Substances 0.000 description 7
- 230000000694 effects Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000005856 abnormality Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000004659 sterilization and disinfection Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001681 protective effect Effects 0.000 description 2
- 230000001954 sterilising effect Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- CXOXHMZGEKVPMT-UHFFFAOYSA-N clobazam Chemical compound O=C1CC(=O)N(C)C2=CC=C(Cl)C=C2N1C1=CC=CC=C1 CXOXHMZGEKVPMT-UHFFFAOYSA-N 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 229940044442 onfi Drugs 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 230000009385 viral infection Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Programmable Controllers (AREA)
Abstract
本申请涉及用于访问隐藏空间的方法以及相关产品,所述隐藏空间中存储有第一程序,所述方法包括:向处于隐藏模式的存储设备发送触发其调整工作模式的命令,以控制所述存储设备的工作模式切换至普通模式,其中所述隐藏空间在所述隐藏模式下对主机不可见,且在所述普通模式下对主机可见;从所述隐藏空间中读出所述第一程序;以及运行所述第一程序。本申请的技术方案可以访问并利用隐藏空间中所存储的数据,以满足实际需求。
Description
技术领域
本申请一般地涉及存储技术领域。更具体地,本申请涉及用于访问隐藏空间的方法、以及执行前述方法的主机和计算机可读存储介质。
背景技术
图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。
上述NVM芯片105包括NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(Magnetic Random Access Memory,磁阻存储器)、RRAM(Resistive RandomAccess Memory,阻变存储器)等常见的存储介质。
上述接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。
上述控制部件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命令的数据。
控制部件104包括闪存接口控制器(或称为介质接口控制器、闪存通道控制器),闪存接口控制器耦合到NVM芯片105,闪存接口控制器以遵循NVM芯片105的接口协议的方式向NVM芯片105发出命令,以操作NVM芯片105,并接收从NVM芯片105输出的命令执行结果。已知的NVM芯片接口协议包括“Toggle”、“ONFI”等。
在存储设备102中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址(LBA)到物理地址的映射信息。逻辑地址构成了操作***等上层软件所感知到的固态存储设备的存储地址空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在相关技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL表是存储设备中的重要元数据。FTL表的条目记录了存储设备中以数据页为单位的地址映射关系。
一些存储设备的FTL由存储设备所耦合的主机提供,由主机的存储器存储FTL表,主机的CPU执行软件提供FTL。还有一些被设置在主机与存储设备之间的存储管理装置提供FTL。这些情况下,存储设备所接收的读/写命令指示物理地址。
主机提供给存储设备的命令可能访问FTL表的一个或多个条目所对应的逻辑地址。以及控制部件可能将从接口103接收的命令改变形态(例如,根据FTL条目所对应的逻辑地址空间大小切分命令),并处理改变形态的命令。为了清楚的目的,在本文中,以存储设备接收的读/写命令访问单一FTL条目为例来描述。
图1B展示了现有技术中逻辑地址空间的示意图。在现有技术中,逻辑地址空间是存储设备所提供的存储地址空间,主机可以使用逻辑地址空间中的元素(逻辑地址)来访问存储设备。一般来说,主机所能够访问的逻辑地址(Logical Block Addressing,LBA)空间与存储设备所能提供的LBA空间大小相同。对于逻辑地址空间,存储设备是通过FTL表来进行管理逻辑地址与物理地址之间的映射。
图1C展示了主机访问存储设备的示意图。在图1C中,主机向存储设备发送IO命令(读/写命令),IO命令指示了要访问的逻辑地址(LBA地址),存储设备基于控制部件中管理的FTL表将该LBA地址转换为物理块地址(Physical Block Address,PBA),然后控制部件根据PBA地址来访问NVM芯片。
随着数据存储技术的不断提高,各种各样的数据被存储于存储设备中,例如用户数据、操作***、应用程序数据或主机恢复出厂设置所需的数据等。为了提高数据的安全性,有些数据并不希望被用户所看到(如主机恢复出厂设置所需的数据),而这些数据可以在存储设备中被隐藏存储,其中,数据的隐藏存储是指在主机侧用户或者应用程序看不到也无法访问这些数据。
发明内容
现有技术所说的隐藏存储的数据,通常是指对主机的应用程序隐藏,而对主机的操作***是可见的,如果操作***被入侵或者误操作,也会导致隐藏存储的数据存在被篡改或删除等风险。为了提高隐藏存储的数据的安全性,存储设备中所隐藏存储的数据对主机应用程序和操作***都隐藏,正常情况下主机不能通过应用程序或者操作***来对隐藏存储的数据进行访问以及修改等操作,仅在需要使用隐藏存储的数据时,主机才能够访问隐藏存储的数据。例如,主机需要恢复出厂设置时,主机能够访问在存储设备中隐藏存储的主机恢复出厂设置所需的数据,以执行出厂设置。
为了实现隐藏存储的数据对主机应用程序和操作***都隐藏的功能,通常会将存储设备所提供逻辑地址空间进行分区,将需要隐藏存储的数据存储在隐藏空间。其中,隐藏空间是指在正常情况下存储设备不提供给主机的部分逻辑地址空间,主机的应用程序或操作***均无法访问隐藏空间中隐藏存储的数据。然而有些情况下,例如需要恢复出厂设置情况,主机需要去访问隐藏空间中隐藏存储的数据,此时隐藏空间以及其中隐藏存储的数据需要能被主机所访问。由于在存储设备中提供了隐藏存储的数据功能,希望在此基础上,在需求访问隐藏存储的数据时,主机能够获取隐藏存储的数据,并根据获取的该隐藏存储的数据执行相应的操作。
因此,如何能够根据实际需求访问到隐藏存储的数据成为亟待解决的技术问题。
本申请实施例所提供的方案,可以访问并利用隐藏空间中所存储的数据,以满足实际需求。
根据本申请的第一方面,提供了根据本申请第一方面的第一用于访问隐藏空间的方法,所述隐藏空间中存储有第一程序,所述方法包括:向处于隐藏模式的存储设备发送触发其调整工作模式的命令,以控制所述存储设备的工作模式切换至普通模式,其中所述隐藏空间在所述隐藏模式下对主机不可见,且在所述普通模式下对主机可见;从所述隐藏空间中读出所述第一程序;以及运行所述第一程序。
根据本申请的第一方面的第一用于访问隐藏空间的方法,提供了根据本申请第一方面的第二用于访问隐藏空间的方法,在从所述隐藏空间中读取所述第一程序之前,还包括:向所述存储设备发送Identify命令,以接收所述存储设备基于所述Identify命令反馈的在所述普通模式下的存储容量。
根据本申请的第一方面的第一用于访问隐藏空间的方法,提供了根据本申请第一方面的第三用于访问隐藏空间的方法,其中所述调整工作模式的命令包括模式切换命令或NVMe协议所定义的Set Feature命令。
根据本申请的第一方面的第三用于访问隐藏空间的方法,提供了根据本申请第一方面的第四用于访问隐藏空间的方法,所述方法还包括:响应于向所述存储设备发送所述调整工作模式的命令,记录模式切换标记。
根据本申请的第一方面的第一用于访问隐藏空间的方法至第四用于访问隐藏空间的方法之一,提供了根据本申请第一方面的第五用于访问隐藏空间的方法,从所述隐藏空间中读出所述第一程序包括:根据所述第一程序的逻辑地址从所述隐藏空间中读出所述第一程序;或者用所述隐藏空间创建块设备,并根据所述块设备从所述隐藏空间中读出所述第一程序。
根据本申请的第一方面的第五用于访问隐藏空间的方法,提供了根据本申请第一方面的第六用于访问隐藏空间的方法,根据所述块设备从所述隐藏空间中读出所述第一程序,包括:将所述块设备挂载到文件***指定路径;根据所示指定路径访问所述隐藏空间,并从所述逻辑地址空间中读出所述第一程序。
根据本申请的第一方面的第一用于访问隐藏空间的方法至第四用于访问逻辑地址空间的方法之一,提供了根据本申请第一方面的第二用于访问隐藏空间的方法,从所述隐藏空间中读出所述第一程序包括:更新隐藏模式下所述存储设备的分区表,以创建所述隐藏空间所对应的分区;从所述分区访问所述隐藏空间,并从所述隐藏空间中读出所述第一程序。
根据本申请的第一方面的第七用于访问隐藏空间的方法,提供了根据本申请第一方面的第八用于访问隐藏空间的方法,所述方法还包括:在更新隐藏模式下所述存储设备的分区表之前,备份所述隐藏模式下所述存储设备的分区表,并在所述存储设备从普通模式恢复为隐藏模式前,恢复所备份的分区表,以删除所述隐藏空间所对应的分区。
根据本申请的第一方面的第八用于访问隐藏空间的方法,提供了根据本申请第一方面的第九用于访问隐藏空间的方法,其中,所述第一程序占据所述隐藏空间中的非尾部逻辑地址空间,以避免创建所述隐藏空间所对应的分区时所更新的分区表覆盖所述第一程序的部分或全部。
根据本申请的第一方面的第一用于访问隐藏空间的方法至第八用于访问隐藏空间的方法之一,提供了根据本申请第一方面的第十用于访问隐藏空间的方法,其中所述隐藏空间的指定位置存储有第二程序,从所述隐藏空间中读出所述第一程序包括:从所述指定位置获取所述第二程序,执行所述第二程序以读取所述第一程序。
根据本申请的第一方面的第十用于访问隐藏空间的方法,提供了根据本申请第一方面的第十一用于访问隐藏空间的方法,运行所述第一程序包括:将所述第一程序写入既有的文件***中,并运行所述第一程序。
根据本申请的第一方面的第十一用于访问隐藏空间的方法,提供了根据本申请第一方面的第十二用于访问隐藏空间的方法,其中所述第一程序包括用于恢复出厂设置的操作***或者杀毒软件,通过运行所述第一程序进行恢复出厂设置或者进行杀毒。
根据本申请的第一方面的第八用于访问隐藏空间的方法,提供了根据本申请第一方面的第十三用于访问隐藏空间的方法,所述方法还包括:通过所述第一程序执行恢复所备份的分区表。
根据本申请的第一方面的第十一用于访问隐藏空间的方法至第十三用于访问隐藏空间的方法之一,提供了根据本申请第一方面的第十四用于访问隐藏空间的方法,所述方法还包括:在所述第一程序运行完成前,还向所述存储设备发送触发其调整工作模式的命令,以控制所述存储设备的工作模式切换至隐藏模式。
根据本申请的第一方面的第十一用于访问隐藏空间的方法至第十三用于访问隐藏空间的方法之一,提供了根据本申请第一方面的第十五用于访问隐藏空间的方法,所述方法还包括:在所述第一程序运行过程中,不执行向所述隐藏空间之前的部分逻辑地址空间写入数据的操作。
据本申请的第一方面的第四用于访问隐藏空间的方法,提供了根据本申请第一方面的第十六用于访问隐藏空间的方法,还包括:响应于检查出所述存储设备的分区表异常,并且存在所述模式切换标记,则忽略所述分区表异常。
根据本申请的第一方面的第一用于访问隐藏空间的方法至第十六用于访问隐藏空间的方法之一,提供了根据本申请第一方面的第十七用于访问隐藏空间的方法,其中所述存储设备在出厂前设置为隐藏模式,且在其隐藏空间中记录所述第一程序。
根据本申请的第一方面的第一用于访问隐藏空间的方法至第十六用于访问隐藏空间的方法之一,提供了根据本申请第一方面的第十八用于访问隐藏空间的方法,所述方法还包括:响应于试图进行对隐藏模式下存储设备的隐藏空间进行访问,通过主机中的存储设备驱动程序拒绝所述访问;或者响应于已对隐藏模式下存储设备的隐藏空间进行访问,通过存储设备拒绝所述访问。
根据本申请的第一方面的第一用于访问隐藏空间的方法至第十八用于访问隐藏空间的方法之一,提供了根据本申请第一方面的第十九用于访问隐藏空间的方法,所述方法还包括:响应于确定所述存储设备切换至普通模式后,以原有的文件***访问所述存储设备的非隐藏空间内的数据或文件。
根据本申请的第二方面,提供了根据本申请第二方面的一种主机,所述主机包括处理器;以及存储器,其存储有用于访问隐藏空间的计算机指令,当所述计算机指令由所述处理器运行时,使得所述主机执行本申请的第一方面的第一用于访问隐藏空间的方法至第十九用于访问隐藏空间的方法之一。
根据本申请的第三方面,提供了根据本申请第三方面的一种计算机可读存储介质,当所述程序指令由处理器执行时,使得实现本申请的第一方面的第一用于访问隐藏空间的方法至第十九用于访问隐藏空间的方法之一。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图;
图1A展示了固态存储设备的框图;
图1B展示了现有技术中逻辑地址空间LBA空间示意图;
图1C展示了主机访问存储设备的示意图;
图1D展示了本申请实施例所提供的一种隐藏模式存储设备向主机所展示的LBA空间示意图;
图1E展示了本申请实施例所提供的另一种隐藏模式主机LBA空间与设备LBA空间之间的映射示意图;
图1F展示了本申请实施例所提供的普通模式主机LBA空间与设备LBA空间之间的映射示意图;
图2展示了本申请实施例所提供的用于访问隐藏空间的方法的流程示意图;
图3A展示了本申请实施例所提供的隐藏模式主机可见的存储空间示意图;
图3B展示了本申请实施例所提供的一种普通模式主机可见的存储空间示意图;
图3C展示了本申请实施例所提供的另一种普通模式主机可见的存储空间示意图;以及
图4展示了本申请实施例所提供的存储设备的逻辑地址空间的示意图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
根据本申请的实施例,存储设备的工作模式可以设置有多种,至少包括隐藏模式与普通模式。其中,在隐藏模式下,存储设备将其逻辑地址空间的部分而非全部提供给主机,从而主机仅知晓存储设备的部分逻辑地址空间。并且,若主机尝试访问存储设备中存在但未提供给主机的逻辑地址空间,存储设备将拒绝主机的此类访问请求并报错。
而普通模式是与上述隐藏模式相对的一种工作模式,普通模式是指上述隐藏的逻辑地址空间对主机可见的工作模式。可选地,在普通模式中,存储设备提供给主机的逻辑地址空间,同存储设备内部维护的逻辑地址空间相同或小于存储设备内部维护的逻辑地址空间。可以理解地,在一些实施方式中,存储设备内部还维护其他范围的逻辑地址空间,无论在普通模式还是隐藏模式,该其他范围的逻辑地址空间都对主机不可见。
为了便于理解,在此本申请中引入了主机可见的逻辑地址空间和逻辑地址空间,以及主机逻辑地址空间和设备逻辑地址空间这两组概念。另外,在逻辑地址空间的基础上引入了主机可见的逻辑地址空间和隐藏逻辑地址空间的概念。其中,主机可见的逻辑地址空间为存储设备报告给主机、且被主机按照块设备访问的存储地址空间,隐藏逻辑地址空间为存储设备在隐藏模式下对主机隐藏的逻辑地址空间。设备逻辑地址空间是存储设备提供的存储地址空间,主机使用主机逻辑地址空间的元素访存储设备,为处理主机提供的IO命令,存储设备将IO命令中的主机逻辑地址空间的元素转换为设备逻辑地址空间的元素。而主机逻辑地址空间为存储设备报告给主机、且被主机按照块设备访问的存储地址空间。因此,本申请中的隐藏空间可以理解为是前述的隐藏逻辑地址空间或部分与主机逻辑地址空间无映射关系的设备逻辑地址空间。
以下结合图1D~图1F对存储设备在不同工作模式下向主机展示的LBA空间进行说明。
图1D展示了本申请实施例所提供的隐藏模式存储设备向主机所展示的LBA空间示意图。如图1D所示,LBA空间包括主机可见的LBA空间和隐藏LBA空间,其中主机可见的LBA空间为LBA空间的部分或全部存储地址空间。
作为举例,本申请实施例所提供的主机可见的逻辑地址空间是个动态可变的存储地址空间。在存储设备处于普通模式时,主机中的应用程序和/或操作***可见或可访问该隐藏LBA空间(也即隐藏空间),此时主机可见的逻辑地址空间为全部的逻辑地址空间,其大小与逻辑地址空间的大小相同。在存储设备处于隐藏模式时,隐藏LBA空间为主机中的应用程序和/或操作***不可见或不可访问的“LBA空间”,此时对主机可见的逻辑地址空间为逻辑地址空间的部分,其大小小于逻辑地址空间。
图1E展示了本申请实施例所提供的隐藏模式主机LBA空间与设备LBA空间之间的映射示意图。其中主机逻辑地址空间是主机所知晓的且能够访问的存储地址空间,设备逻辑地址空间是存储设备所维护和管理的存储地址空间。为了实现主机通过主机逻辑地址空间的元素来访问存储设备,主机逻辑地址空间和设备逻辑地址空间之间存在着一定的映射关系,且这种映射关系并不是一直不变的,而是随着存储设备的工作模式不同而动态变化。其中,在图1E中,设备LBA空间可以包括A1、A2和A3,其中主机逻辑地址空间1与A2之间存在映射关系,A1和A3没有对应的主机逻辑地址空间。可以理解的是,在隐藏模式下,隐藏空间包括设备逻辑地址空间A1和A3。
如图1E所示,当存储设备处于隐藏模式时,可以设置主机逻辑地址空间与设备逻辑地址空间之间的关系,主机逻辑地址空间与部分设备逻辑地址空间之间存储着映射关系(例如主机逻辑地址空间1与A2之间存在映射关系),而部分设备逻辑地址空间没有对应的主机逻辑地址空间(例如A1和A3无对应的主机逻辑地址)。由于主机是通过主机逻辑地址空间中的主机逻辑地址来访问存储设备,所以该部分没有对应的主机逻辑地址的设备逻辑地址空间(A1和A3),主机是无法访问的。例如,主机操作***、应用程序或者磁盘管理器均无法访问该部分设备逻辑地址空间,进而实现存储设备对主机隐藏部分存储地址空间,使得存储设备处于隐藏模式。
图1F展示了本申请实施例所提供的普通模式主机LBA空间与设备LBA空间之间的映射示意图。
在图1F中的普通模式下(具体可以通过模式切换命令或者Set Feature命令来设置存储设备为普通模式),由图1E可知,在隐藏模式下由于设备LBA空间A1和A3没有对应的主机逻辑地址空间而无法被主机所访问。由上文可知,普通模式相较与隐藏模式,主机不仅可以访问隐藏模式下可以访问全部设备LBA空间,还可以访问隐藏模式下无法访问的部分或全部设备LBA空间,即在普通模式下,主机不仅可以访问LBA空间A2,还可以访问设备LBA空间A1和/或设备LBA空间A3部分或全部。下面以普通模式下主机可以访问设备LBA空间A1和设备LBA空间A3的全部为例进行说明。
为了使得主机能够访问设备LBA空间A1和设备LBA空间A3,在图1F中,普通模式下,主机LBA空间包括主机LBA空间1和主机LBA空间2。其中,主机LBA空间2与设备LBA空间A1和A3之间存在着映射关系。可以理解的是,在隐藏模式下,部分设备LBA空间A1、A3没有对应的主机LBA空间(如图1E所示)。而在普通模式下,部分设备LBA空间A1、A3与主机LBA空间2存在映射关系。此时,主机LBA空间2可以理解为是隐藏模式转换成普通模式新增的主机LBA空间,主机通过新增的主机LBA空间2实现对设备LBA空间A1和设备LBA空间A3的访问。作为举例,在主机逻辑地址空间中新增的主机逻辑地址空间2位于主机逻辑地址空间1之后,从而保证存储设备提供给主机的容量值会发生变化时,主机依然可根据已有的文件***所记录的数据的逻辑地址找到对应的数据。
又作为举例,在普通模式下新增的主机逻辑地址空间2被映射到设备逻辑地址空间中对主机不可见部分的任一位置(例如A1、A3)。由此,存储设备由隐藏模式切换到普通模式之后,在普通模式下,原来隐藏模式下主机LBA空间各地址不变,而增加的新主机LBA空间可被映射到设备LBA空间的任意位置,从而使得隐藏空间在设备LBA空间中的位置限制被取消。例如,原来隐藏模式下主机LBA空间的地址范围为0-256GB,从隐藏模式切换到普通模式后,该部分主机LBA空间的地址范围还是0-256GB。另外,在模式切换前后,存储设备所管理的设备LBA空间不变,将主机LBA空间的变化同存储设备的控制部件的处理隔离,避免引入额外的复杂性。
在介绍完存储设备的工作模式以及隐藏空间等相关概念后,以下结合图2对隐藏空间的访问过程进行说明。
为了提高隐藏存储的数据的安全性,存储设备中所隐藏存储的数据对主机应用程序和操作***都隐藏,正常情况下主机不能通过应用程序或者操作***来对隐藏存储的数据进行访问以及修改等操作,仅在需要使用隐藏存储的数据时,主机才能够访问隐藏存储的数据。例如用户发现***有恶意代码而需要恢复出厂设置时或者需要对主机进行杀毒等场景下,需要对隐藏空间及其存储的隐藏数据进行访问。
图2展示了本申请实施例所提供的访问隐藏空间的方法200的示意图。前述的隐藏空间中存储有第一程序(即程序A)(例如可以是用于恢复出厂设置的操作***或者杀毒软件),且该隐藏空间在隐藏模式对主机不可见,而在普通模式对主机可见。即存储设备在隐藏模式下,主机是无法从隐藏空间中读出程序A,需要在存储设备处于普通模式下,主机才能从隐藏空间中读出程序A。如图2所示,对该隐藏空间的访问过程可以包括:
在步骤S201处,当存储设备处于隐藏模式时,可以向处于隐藏模式的存储设备发送触发其调整工作模式的命令,以控制存储设备的工作模式切换至普通模式。如前文所述,隐藏空间在普通模式下对主机可见,所以需要通过命令来控制存储设备切换至普通模式,以便后续能够访问隐藏空间中的程序A。以下结合图3A~图3C对不同工作模式下主机可见的存储空间进行说明。
图3A展示了本申请实施例所提供的存储设备处于隐藏模式下主机获取存储设备的存储空间示意图。在主机对存储设备进行初始化时,如启动期间,可获取存储设备的存储空间信息,如存储设备所提供的存储容量、隐藏的存储空间的起始地址等。作为举例,存储设备交付给客户时可以处于隐藏模式,即存储设备的LBA空间一部分是对主机可见的(称为非隐藏空间),即主机提供给存储设备的IO命令中所能够访问的LBA空间,还有一部分对主机是不可见的(称为隐藏空间),即主机不能访问或主机应用程序、操作***或文件***不知晓的LBA空间。可以理解的是,相对隐藏空间而言,本申请中的非隐藏空间可以是对主机可见的逻辑地址空间或者与主机逻辑地址空间之间具有映射关系的设备逻辑地址空间。
作为举例,参见图3A,存储设备的LBA空间大小为356GB,非隐藏空间大小和隐藏空间大小可以在存储设备制造阶段设置好,如非隐藏空间(例如主机可见的LBA空间)大小为256GB,对隐藏空间(例如隐藏LBA空间)大小为100GB。其中,对主机隐藏的LBA空间位于对主机可见的LBA空间之后,即在存储设备所维护的逻辑地址空间中,对主机可见的LBA空间的逻辑地址范围为0-256GB,对主机隐藏的LBA空间的逻辑地址范围为256GB-356GB。另外,对主机可见的LBA空间可以存储用户数据/操作***/应用程序,对主机隐藏的LBA空间可以存储程序A(例如主机恢复出厂设置所需的数据等)。在隐藏模式下,存储设备根据对主机可见的LBA空间大小来设置存储容量,即此时存储设备设置其存储容量为256GB。当主机对存储设备进行初始化,获取存储设备的存储空间信息,例如,主机可获取存储设备的存储容量为256GB和/或隐藏的LBA空间的起始地址为LBA=256GB。当主机在获取存储设备的存储容量为256GB时,主机知晓其可访问的逻辑地址空间为0-256GB,主机操作***、应用程序或者磁盘管理器即可对存储设备的逻辑地址空间中0-256GB范围内的数据进行访问,而主机操作***、应用程序或者磁盘管理器无法对存储设备的逻辑地址空间中256GB-356GB范围内的数据进行访问,使得在隐藏模式下,存储设备的逻辑地址空间中256GB-356GB对于主机操作***、应用程序或者磁盘管理器均是不可见的。
图3B展示了本申请实施例所提供的一种存储设备处于普通模式下主机获取存储设备的存储空间示意图。
图3B中所提及的普通模式是相对于图3A中隐藏模式来说的,其中,隐藏模式下,主机无法访问隐藏的LBA空间,而普通模式下,存储设备会结合对主机可见的LBA空间和隐藏LBA空间大小来设置存储容量,即此时存储设备设置其存储容量为356GB。当主机对存储设备进行初始化,获取存储设备的存储空间信息,例如,主机可获取存储设备的存储容量为356GB。当主机在获取存储设备的存储容量为356GB时,主机知晓其可访问的逻辑地址空间为0-356GB,主机操作***、应用程序或者磁盘管理器即可对存储设备的逻辑地址空间中0-356GB范围内的数据进行访问。进而使得在普通模式下,主机除了可以访问对主机可见的LBA空间,还可以访问隐藏的LBA空间(包括对其存储的程序A的访问)。也就是说,在普通模式下,主机可以访问整个存储设备的LBA空间。
图3C展示了本申请实施例所提供的另一种普通模式下主机获取存储设备的存储空间示意图。
某些存储***的元数据(例如分区表)记录在存储设备所提供的存储容量的存储空间的头部和末尾。如图3C所示,在隐藏模式下,存储设备所提供的存储容量为256GB,则元数据会存储在256GB空间的尾部。由上述图3A和图3B可以看出,存储设备在不同的工作模式下的存储容量是会发生变化的,当存储设备模式切换后(从隐藏模式变为普通模式),存储设备的LBA空间从256GB变为356GB。主机在对存储设备进行访问过程中,由于存储设备的存储容量变大,在变化后的存储空间的尾部不存在原来的元数据。此时,可以在100GB隐藏空间的尾部预留足够大小的空间,供安装操作***/文件***/磁盘分区时写入元数据。当操作***在识别出存储设备大小为356GB后,会从LBA空间尾部(356GB附近)尝试获取元数据(分区表或者FAT表等)。
在完成工作模式切换之后,返回图2。接着,在步骤S202处,可以从前述的隐藏空间中读出程序A。可以通过多种方式来读取程序A。例如可以通过块设备、分区或者直接根据程序A的逻辑地址来从隐藏空间中读取该程序A。
作为举例,具体可以用隐藏空间创建块设备,然后将该块设备挂载到文件***指定路径,并根据所示指定路径访问隐藏空间,以从隐藏空间中读出程序A。
作为举例,还可以更新隐藏模式下存储设备的分区表以创建隐藏空间所对应的分区,并从该分区访问隐藏空间以读出程序A。
作为举例,还可以直接根据存储设备中存储程序A的逻辑地址从隐藏空间中读取该程序A。
接着,在步骤S203处,可以运行该程序A。作为举例,可以将程序A写入既有的文件***中,并运行程序A。由此,可实现对隐藏空间进行访问,以获取其内存储的程序,并通过运行程序(例如杀毒程序、恢复出厂设置的默认操作***)执行相应的操作(如杀毒或者恢复出厂设置),以满足实际使用需求。
作为举例,前述的调整工作模式的命令可以包括模式切换命令或NVMe协议所定义的Set Feature命令。其中,该模式切换命令是自定义的命令,并不是协议所定义的命令。但是,该模式切换命令的格式符合协议(如NVMe协议)。作为举例,模式切换命令包括“命令码”与可选地“命令参数”命令码具有指定值,以指示当前命令为模式切换命令。主机指定模式切换命令的内容或者参数值。
作为举例,主机提供给存储设备的模式切换命令仅包括命令码(而无需指定命令参数)。存储设备基于命令码识别出所接收的命令是模式切换命令,而改变当前存储设备的模式,例如,若存储设备当前处于隐藏模式,则响应于收到模式切换命令而改变为普通模式;和/或若存储设备当前处于普通模式,则响应于收到模式切换命令而改变为隐藏模式。在又一个例子中,主机提供给存储设备的模式切换命令包括命令码与命令参数。存储设备根据命令码识别出所接收的命令是模式切换命令,进而根据命令参数,确定存储设备所要进入的模式。命令参数为例如0时,指示由隐藏模式切换到普通模式,在命令参数为例如1时表示由普通模式切换到隐藏模式。
主机定义模式切换命令的内容为指示存储设备接收到该模式切换命令后执行工作模式切换操作,或者配置模式切换命令的参数,如主机通过设置模式切换命令中命令参数的值来指示存储设备接收到该模式切换命令后执行工作模式切换操作。
当主机定义模式切换命令的内容时,存储设备根据模式切换命令切换当前工作模式,作为举例,响应于在普通模式下收到所述模式切换命令,则存储设备从普通模式切换到隐藏模式;或响应于在隐藏模式下收到所述模式切换命令,则存储设备从隐藏模式切换到普通模式。当主机配置模式切换命令的命令参数时,存储设备根据该命令参数的值来切换工作模式,作为举例,主机配置模式切换命令的命令参数是根据当前存储设备的工作模式来进行配置的,例如,当前存储设备的工作模式为隐藏模式,为了控制存储设备切换到普通模式,则配置命令参数为0,存储设备根据命令参数值切换工作模式到普通模式;当前存储设备的工作模式为普通模式,为了控制存储设备切换到隐藏模式,则配置命令参数为1,存储设备根据命令参数值切换工作模式到隐藏模式。
作为举例,主机定义模式切换命令的具体格式还可以包括命令码与两种或更多命令参数以实施更多的功能。
在一种实施方式中,通过携带不同的命令参数,模式切换命令指示存储设备:设置为隐藏模式、设置为普通模式以及设置隐藏的LBA空间大小。其中,设置为隐藏模式与设置为普通模式的功能适合在存储设备工作期间使用,而设置隐藏的LBA空间大小的功能适合在存储设备被生产制造时使用,以向用户提供具有指定大小隐藏空间的存储设备。在模式切换命令指示设置隐藏的LBA空间大小时,还通过进一步的命令参数描述隐藏的LBA空间的大小的值。
进一步地,模式切换命令的一种命令参数用来指示当前命令所要传输的数据长度,以满足主机与存储设备的要求。主机和/或存储设备通过识别命令参数中指示的当前命令所要传输的数据长度来判断对当前命令的处理是否完成。由于模式切换命令无需在主机与存储设备之间传输数据,因而模式切换命令中将该命令参数设置为0。
类似地,模式切换命令的又一种命令参数用来指示当前命令所要传输的元数据长度,在根据本申请的实施例中,模式切换命令中将该命令参数也设置为0。
在模式切换命令指示设置隐藏的LBA空间大小功能时,还通过一个或多个命令参数指示例如,是否将隐藏LBA空间初始化、隐藏LBA空间是否需要4KB对齐等。
作为另一种实施方式,前述的触发存储设备调整工作模式的命令还可以是NVMe协议所定义的Set Feature命令。NVMe协议的Set Feature命令可通过命令参数来设置多种不同的“feature”(功能)。对于特定的存储设备,一些“feature(功能)”不被支持,因而其接收到对此类feature(功能)的Set Feature命令时,无需进行处理,从而可利用指示此类feature(功能)的Set Feature命令来作为模式切换命令,从而无需增加新命令。
作为举例,“LBA Range Type”是Set Featur命令可指示的feature(功能)之一,而当前的一些存储设备并不支持此feature(功能)。从而,将带有“LBA Range Type”命令参数的Set Feature命令用作根据本申请实施例的模式切换命令。为此目的,在Set Feature命令中,除了携带“LBA Range Type”命令参数,还携带一种或多种命令参数,来使得模式切换命令指示存储设备:设置为隐藏模式、设置为普通模式以及设置隐藏的LBA空间大小。以及在模式切换命令指示设置隐藏的LBA空间大小功能时,还通过一个或多个命令参数指示例如,是否将隐藏LBA空间初始化、隐藏LBA空间是否需要4KB对齐等。具体地,利用带有“LBARange Type”命令参数的Set Feature命令的“Data Structure Entry”字段来描述用于模式切换命令的一个或多个参数。
在又一个例子中,Set Feature命令指示了LBA0~LAB100,LBA200~LBA300这两段逻辑地址区间。本申请实施例通过运用现有NVMe协议定义了Set Feature命令可以指示一段或多段逻辑地址区间的功能基础上,还设置Set Feature命令所指示的一段或多段逻辑地址区间为主机可访问的逻辑地址区间,或为主机不可访问的逻辑地址区间,来实现存储设备中部分逻辑地址空间对主机隐藏或显示。进而可以根据Set Feature命令所指示的一段或多段逻辑地址区间设置存储设备的工作模式以及指示存储设备的存储容量的值。作为举例,该一段或多段逻辑地址区间可由用户通过Set Feature命令来设置。可以理解地,在一些实施方式中,用户也可以直接对NVMe协议所定义的Set Feature命令进行设置,以使得Set Feature命令指示存储设备进行模式切换,即存储设备接收到Set Feature命令之后,根据Set Feature命令所指示的切换模式,使存储设备进入隐藏模式,或者退出隐藏模式。
作为举例,在读取程序A之前,还可以向存储设备发送Identify命令,以接收存储设备基于Identify命令反馈的在普通模式下的存储容量。在获取存储设备的存储容量时,对于遵循NVMe协议的存储设备,主机可以通过向存储设备发送Identify命令,从命令的响应中获取存储设备的存储容量。由于现有技术中,主机在启动时会触发对存储设备的初始化并获取存储设备的存储容量,在其他时刻通常不会主动触发获取存储设备的存储容量操作。也就是说,在主机运行过程中,当存储设备的工作模式发生切换使得存储容量发生变化时,主机在运行过程中包括操作***、文件***等各部件并不知晓存储设备的存储容量发生变化,还是依然按照变化之前的存储容量对存储设备进行访问,由于存储设备的存储容量发生变化时,可能会导致分区表发生异常,使得主机对存储设备访问失败,或者因不知道存储空间变大而无法使用增大后的存储空间。
为了使得在存储设备的存储容量发生变化后,主机能实时获取变化后的存储容量。作为举例,进一步地,进一步地,还可以在发出模式切换命令之前,对该模式切换命令进行注册,以将模式切换命令同指定的命令(例如,Identify命令)进行关联。注册是主机的操作***或存储设备的驱动程序提供的功能,通过注册来关联模式切换命令与指定命令,使得在主机发出模式切换命令后,操作***或存储设备的驱动程序会自发地再向存储设备发出所注册的指定命令,从而调整Identify命令的发送时机,以在向存储设备发送已注册的模式切换命令之后,主机可以根据需求随时向存储设备发送Identify命令以获取其存储容量。
Identify命令可指示多种命令参数。作为一个例子,在存储设备不支持“NameSpace”(命名空间)的情况下,用指示了“NameSpace”参数的Identify命令来获取存储设备的存储容量,或者进一步获取同隐藏LBA空间相关的进一步的信息。从而,不改变存储设备对具有其他命令参数的Identify命令的处理,以使存储设备满足兼容NVMe协议的要求。根据本申请实施例的存储设备处理指示了“NameSpace”参数的Identify命令时,将隐藏逻辑地址空间的信息添加到Identify命令的结果中。可选地,由于存储设备不支持“NameSpace”,在指示了“NameSpace”参数的Identify命令中,将“NameSpace”的NSID设置为例如NS0。
又作为举例,在使用了指示“LBA Range Type”的Set Feature命令来作为模式切换命令的情况下,可相应地使用指示“LBA Range Type”的Get Feature命令获取存储设备的当前的工作模式(处于普通模式还是隐藏模式),以及可选地获取隐藏LBA空间的大小。指示“LBA Range Type”的Set Feature命令也被注册来同模式切换命令关联。
根据本申请的实施例,通过自定义命令来指示模式切换命令,或者通过标准中既有的命令来指示模式切换命令,从而为命令提供新的功能或者同标准不同的功能。而主机所耦合的存储设备可能来自不同厂家或不同批次,从而可能支持或不支持模式切换命令。需要提供支持来协助主机识别存储设备是否支持模式切换命令。又作为举例,对应主机发送给存储设备的命令,例如,NVMe命令或者自定义的命令,可以通过Log page来反应各个命令所产生的效果。“Log Page”(日志页)是NVMe协议定义的数据结构,其反应存储设备处理各命令后所产生的效果,从而通过“Log Page”中同各命令对应的数据来体现各存储设备之间的处理命令的效果的差异。例如,一个存储设备在处理指示“LBA Range Type”的SetFeature命令后,会改变存储容量大小,而另一个存储设备不会;又例如,一个存储设备在处理自定义的模式切换命令后,会改变存储容量大小,而另一个存储设备则不支持自定义的模式切换命令。由此,可以通过Log page来获得命令将产生的效果,以识别与主机连接的一个或多个存储设备是否支持对部分逻辑地址空间隐藏。具体地,主机在Log page中设置用于模式切换命令的标识,以指示模式切换命令产生的效果,以及在收到在NVMe协议的GetLog Page命令(获取对应模式切换命令的Log page)的时候,返回相关标识。例如,在LogPage的对应模式切换命令的数据中,将NVMe协议规定的CSUPP/LBCC/NCC/NIC/CCC/CSE字段都设为1。
主机在向存储设备下发模式切换命令之前,先通过Get Log age命令查询,如果发现对于某一存储设备的模式切换命令会改变存储容量,相应地在操作***或存储设备的驱动程序中对该存储设备的模式切换命令进行注册,以将其关联于Identify命令、指示“LBARange Type”的Get Feature命令等;如果发现对于某一存储设备模式切换命令不会改变存储容量,则不会对该存储设备注册模式切换命令。
在对模式切换命令进行注册后,主机可以在驱动捕获到发出了模式切换命令后,再发出如Identify namespace命令或Get Feature命令来获取存储设备的存储容量。
作为举例,进一步地,还可以在更新隐藏模式下存储设备的分区表之前,备份隐藏模式下存储设备的分区表,并在存储设备从普通模式恢复为隐藏模式前,恢复所备份的分区表,以删除隐藏空间所对应的分区。存储设备在不同工作模式下其分区表不同的,在普通模式下更新后的分区表中记录有隐藏空间所对应的分区,而隐藏模式下的分区表不能出现隐藏空间的相关信息。由此利用对隐藏模式下分区表的备份和恢复来删除隐藏空间所对应的分区,可以确保在隐藏模式下隐藏空间不被暴露。作为一个实施方式,具体可以通过程序A来执行恢复所备份的分区表。
作为举例,程序A可以占据隐藏空间中的非尾部逻辑地址空间,以避免创建隐藏空间所对应的分区时所更新的分区表覆盖程序A的部分或全部。图4展示了本申请实施例所提供的存储设备的逻辑地址空间的示意图。如图4所示,存储设备的逻辑地址空间为LBA0~LBAm,其中非隐藏空间为LBA0~LBAn,而隐藏空间为LBAn~LBAm。Protective MBR为保护性主引导分区表,全局唯一标识分区表(GUID Partition Table,GPT)分为位于头部的Primary GPT和位于尾部的Secondary GPT。在实际使用过程中,隐藏空间的尾部(阴影部分的Secondary GPT区域)不要存放程序A,避免被破坏,例如创建隐藏空间所对应的分区时所更新的分区表覆盖程序A的部分或全部。
作为举例,隐藏空间的指定位置可以存储有第二程序(例如程序B)。可以从指定位置获取程序B,并通过执行程序B以读取程序A。可以理解的是,指定位置具体可以根据实际设计需求来设定,其可以是隐藏空间中的非尾部逻辑地址空间的任一位置。而程序B可以理解为是程序A的驱动程序。可以理解的是,在一些实施例中,该程序B不局限于存储在隐藏空间中,例如还可以直接从服务器侧下载等。
作为举例,进一步地,还可以在程序A运行完成前,还向存储设备发送触发其调整工作模式的命令,以控制存储设备的工作模式切换至隐藏模式。
作为举例,还可以在程序A运行过程中,不执行向隐藏空间之前的部分逻辑地址空间写入数据的操作。例如,存储设备的存储空间为0~356GB。其中隐藏空间为256GB~356GB。在程序A运行过程中,若有向隐藏空间之前的部分逻辑地址空间(例如0GB~256GB)写入数据的操作,则拒绝该写入数据的操作,比避免破坏旧的分区表。又作为举例,不执行向隐藏空间之前的部分逻辑地址空间写入数据的操作包括:在程序A运行过程中,主机不向存储设备发送指示向隐藏空间之前的部分逻辑地址空间写入数据的写命令;或者存储设备在接收到指示向隐藏空间之前的部分逻辑地址空间写入数据的写命令,不处理该写命令。
作为举例,还可以向存储设备发送调整工作模式的命令,记录模式切换标记。由此,可便于后续通过模式切换标记来确定存储设备是否进行模式调整。相应地,作为举例,还可以根据需求,删除该模式切换标记,以满足用户的不同使用需求。
作为举例,进一步地,在检查出存储设备的分区表异常,并且存在模式切换标记,则忽略所述分区表异常。具体地,在检测出存储设备的分区表异常时,若同时能找到模式切换标记,可以确定分区表异常是由存储设备模式切换引起的,无需进行处理,此时忽略分区表异常错误。若未找到模式切换标记,说明可能存在某些故障而导致分区表异常,此时报错,可便于及时进行维护。
作为一种实施方式,在存储设备制造阶段,会设置存储设备处于隐藏模式,并交付给客户,客户将存储设备安装于主机上。作为举例,在存储设备制造阶段会设置隐藏空间的大小,例如,存储设备的逻辑地址空间大小为356GB,可以设置隐藏空间的大小为100GB。又作为举例,可以设置存储设备所提供的逻辑地址空间中隐藏空间位于非隐藏空间之后。可选地,还设置了在隐藏模式下,设置隐藏空间中记录第一程序(即程序A)。作为举例,程序A可以包括存储主机恢复出厂设置所需的操作***、或者杀毒所需的杀毒程序等。
作为举例,进一步地,在隐藏模式下,若主机的程序试图访问隐藏空间,主机的存储设备驱动程序拒绝该访问。例如,在隐藏模式下,主机生成了一个IO命令,该IO命令所指示的逻辑地址为隐藏空间所包含的逻辑地址,而主机的存储设备驱动程序拒绝将该IO命令发送给存储备。又或者在隐藏模式下,若主机访问了所述隐藏空间,则存储设备拒绝该访问。由此,可以避免主机访问非法的逻辑地址空间。
在可选的实施方式中,在向隐藏模式的存储设备发出IO命令过程中,若IO命令中访问指定位置之后的存储空间的地址超出了存储设备的存储地址空间范围,此时主机的存储设备驱动程序拒绝向存储设备发出该IO命令,以避免错误发生,也避免进行无意义的命令发送及处理,有效节省了***资源。可选地或进一步地,若因某种原因(例如,病毒感染)主机向隐藏模式的存储设备发出了访问隐藏LBA空间的IO命令,存储设备也拒绝对此类IO命令的处理,并向主机报告错误,例如,访问的逻辑地址越界错误。
依然可选地,存储设备拒绝处理对隐藏LBA空间的擦除命令和/或格式化命令,以保护隐藏LBA空间的数据。例如,在隐藏模式下,存储设备拒绝处理对隐藏LBA空间的擦除命令和/或格式化命令;而在普通模式下,存储设备可以在验证主机的权限后再执行对隐藏LBA空间的擦除命令和/或格式化命令,并作为响应删除隐藏LBA空间的数据。在又一个例子中,存储设备被制造且向隐藏LBA空间写入了所需的数据后,永远不接受来自主机的对隐藏LBA空间的擦除命令和/或格式化命令,以确保隐藏LBA空间的数据持续可用。可以理解地,为了磨损均衡、数据可靠性等需求,在存储设备内部,控制部件可对隐藏LBA空间对应的物理地址实施垃圾回收,但确保隐藏LBA空间的数据有效。
作为举例,进一步地,在切换到普通模式后,存储设备的非隐藏空间内的数据/文件,在主机看来其逻辑地址保持不变。由此,在切换到普通模式后,主机可以以原有的文件***访问非隐藏空间内的数据/文件。
作为举例,在实际应用中,例如在用户需要恢复出厂设置时,主机可以响应于用户指示要恢复出厂设置,向存储设备发送自定义的模式切换命令或Set Feature命令。存储设备响应于收到的模式切换命令或Set Feature命令,将工作模式设置为普通模式或退出隐藏模式进入普通模式。接着,获取存储设备的存储容量。作为举例,主机可以通过重启,已在主机启动期间向存储设备发送Identify命令来获取其存储容量。又作为举例,还可以在发出模式切换命令之前,对该模式切换命令进行注册,以将模式切换命令同Identify命令进行关联。从而调整Identify命令的发送时机,以在向存储设备发送已注册的模式切换命令之后,主机可以根据需求随时向存储设备发送Identify命令以获取其存储容量。还作为举例,主机还可以向存储设备发送Identify namespace命令或get feature命令来获取存储设备的存储容量。
接着,可以运行一个程序来从隐藏空间(例如256GB-356GB)获取预装的默认操作***(此时无需加载文件***)。然后将默认操作***安装到非隐藏空间(例如0-256GB空间,此时可以安装新文件***,由于文件***需要在地址空间末尾设置元数据,在100GB隐藏空间的尾部预留足够大小的空间来供安装操作***/文件***/磁盘分区时写入元数据)。然后,加载默认操作***,完成主机的启动。
可选地,还可以运行一个程序来恢复原来256GB空间中文件***的数据,该程序获取原256GB空间中文件***的元数据(例如在指示恢复出厂设置时记录下来),根据获取的元数据访问原来256GB空间中的文件***所管理的文件,将获取的文件写入到356GB分区中。
根据本申请还提供了一种主机,所述主机包括处理器;以及存储器,其存储有用于访问隐藏空间的计算机指令,当所述计算机指令由所述处理器运行时,使得所述主机执行上述图2相关的方案。另外,本申请还提供了一种计算机可读存储介质,当程序指令由处理器执行时,使得实现图2相关的方案。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种访问隐藏空间的方法,其特征在于,所述隐藏空间中存储有第一程序,所述方法包括:
向处于隐藏模式的存储设备发送触发其调整工作模式的命令,以控制所述存储设备的工作模式切换至普通模式,其中所述隐藏空间在所述隐藏模式下对主机不可见,且在所述普通模式下对主机可见;
从所述隐藏空间中读出所述第一程序;以及
运行所述第一程序。
2.根据权利要求1所述的方法,其特征在于,从所述隐藏空间中读出所述第一程序包括:
根据所述第一程序的逻辑地址从所述隐藏空间中读出所述第一程序;或者
用所述隐藏空间创建块设备,并根据所述块设备从所述隐藏空间中读出所述第一程序。
3.根据权利要求1或2所述的方法,其特征在于,从所述隐藏空间中读出所述第一程序包括:
更新隐藏模式下所述存储设备的分区表,以创建所述隐藏空间所对应的分区;
从所述分区访问所述隐藏空间,并从所述隐藏空间中读出所述第一程序。
4.根据权利要求3所述的方法,其特征在于,其中,所述第一程序占据所述隐藏空间中的非尾部逻辑地址空间,以避免创建所述隐藏空间所对应的分区时所更新的分区表覆盖所述第一程序的部分或全部。
5.根据权利要求1-4任一项所述的方法,其特征在于,其中所述隐藏空间的指定位置存储有第二程序,从所述隐藏空间中读出所述第一程序包括:
从所述指定位置获取所述第二程序,执行所述第二程序以读取所述第一程序。
6.根据权利要求1-5中任一项所述的方法,其特征在于,运行所述第一程序包括:
将所述第一程序写入既有的文件***中,并运行所述第一程序。
7.根据权利要求1-6任一项所述的方法,其特征在于,其中所述第一程序包括用于恢复出厂设置的操作***或者杀毒软件,通过运行所述第一程序进行恢复出厂设置或者进行杀毒。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述方法还包括:
在所述第一程序运行过程中,不执行向所述隐藏空间之前的部分逻辑地址空间写入数据的操作。
9.根据权利要求1-8任一项所述的方法,其特征在于,所述方法还包括:
响应于试图对隐藏模式下存储设备的隐藏空间进行访问,通过主机中的存储设备驱动程序拒绝所述访问;或者
响应于已对隐藏模式下存储设备的隐藏空间进行访问,通过存储设备拒绝所述访问。
10.一种主机,其特征在于,包括:
处理器;以及
存储器,其存储有用于访问隐藏空间的计算机指令,当所述计算机指令由所述处理器运行时,使得所述主机执行根据权利要求1-9的任意一项所述的方法。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2022100565444 | 2022-01-18 | ||
CN202210056544 | 2022-01-18 | ||
CN202210331662 | 2022-03-30 | ||
CN2022103316621 | 2022-03-30 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116501663A true CN116501663A (zh) | 2023-07-28 |
Family
ID=87320729
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210457584.XA Pending CN116501663A (zh) | 2022-01-18 | 2022-04-27 | 用于访问隐藏空间的方法及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116501663A (zh) |
-
2022
- 2022-04-27 CN CN202210457584.XA patent/CN116501663A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11360679B2 (en) | Paging of external memory | |
US9058123B2 (en) | Systems, methods, and interfaces for adaptive persistence | |
JP5636034B2 (ja) | データ利用についてのマウント時間の調停 | |
EP2631916B1 (en) | Data deletion method and apparatus | |
US7970983B2 (en) | Identity-based flash management | |
US20070156763A1 (en) | Storage management system and method thereof | |
CN113126910A (zh) | 存储设备及其操作方法 | |
US11409451B2 (en) | Systems, methods, and storage media for using the otherwise-unutilized storage space on a storage device | |
US11947419B2 (en) | Storage device with data deduplication, operation method of storage device, and operation method of storage server | |
JP6972202B2 (ja) | 計算機システム及びメモリ管理方法 | |
US11256435B2 (en) | Method and apparatus for performing data-accessing management in a storage server | |
CN116501663A (zh) | 用于访问隐藏空间的方法及相关产品 | |
WO2022068298A1 (zh) | U盘访问方法及u盘 | |
US20210311654A1 (en) | Distributed Storage System and Computer Program Product | |
CN116501239A (zh) | 用于管理存储设备的方法和存储控制器 | |
WO2019043815A1 (ja) | ストレージシステム | |
CN116466871A (zh) | 用于访问存储设备的方法及相关产品 | |
TWI731515B (zh) | 電腦系統及用於儲存裝置的開機控制方法 | |
US11740838B2 (en) | Array-based copy utilizing one or more unique data blocks | |
CN117311591A (zh) | 访问存储设备的方法及相关产品 | |
CN117311594A (zh) | 管理nvm芯片的方法及相关产品 | |
JP2021182309A (ja) | クラウドサーバ、ストレージシステム、及び計算機システム | |
CN112764671A (zh) | 存储设备的元数据聚合处理方法及存储设备 | |
CN117130553A (zh) | 固态硬盘的配置方法、固态硬盘及分区存储方法 | |
JP2015141508A (ja) | データ記憶制御装置、データ記憶制御方法、及び、データ記憶制御プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |