首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

使用KV存储设备提供文件系统的方法及其文件系统 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:北京忆恒创源科技股份有限公司

摘要:本申请提供了使用KV存储设备提供文件系统的方法及其文件系统,所提供的一种用于KV存储设备的方法,包括:接收用于访问KV存储设备的逻辑键LK;获取同所述逻辑键LK对应的物理键PK;查询地址转换表得到同所述物理键PK对应的地址,在所述地址存储了同所述逻辑键LK对应的值V。

主权项:1.一种用于KV存储设备的方法,包括:接收用于访问KV存储设备的逻辑键LK;查询第一表获取同所述逻辑键LK对应的物理键PK,所述第一表为排序表,用于记录逻辑键与物理键的对应关系;查询地址转换表得到同所述物理键PK对应的物理地址或逻辑地址,在对应的物理地址或逻辑地址存储了同所述逻辑键LK对应的值V,所述地址转换表记录物理键与物理地址或逻辑地址的对应关系;其中,对所述物理键PK进行哈希计算得到哈希键HPK;以哈希键HPK为索引访问哈希表得到同所述物理键PK对应的物理地址或逻辑地址;其中,根据所述哈希键HPK的第一部分HPK1查询第一哈希表;若所述哈希键HPK的第一部分HPK1在第一哈希表中对应的条目记录了第二哈希表的地址,根据所述哈希键HPK的第二部分HPK2查询第二哈希表。

全文数据:使用KV存储设备提供文件系统的方法及其文件系统技术领域本申请涉及KV存储设备,具体地,涉及提供逻辑键Key的KV存储设备及其方法。背景技术图1A展示了固态存储设备的框图。固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATASerialAdvancedTechnologyAttachment,串行高级技术附件、SCSISmallComputerSystemInterface,小型计算机系统接口、SASSerialAttachedSCSI,串行连接SCSI、IDEIntegratedDriveElectronics,集成驱动器电子、USBUniversalSerialBus,通用串行总线、PCIEPeripheralComponentInterconnectExpress,PCIe,高速外围组件互联、NVMeNVMExpress,高速非易失存储、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个NVM芯片105以及DRAMDynamicRandomAccessMemory,动态随机访问存储器110。NAND闪存、相变存储器、FeRAMFerroelectricRAM,铁电存储器、MRAMMagneticRandomAccessMemory,磁阻存储器、RRAMResistiveRandomAccessMemory,阻变存储器等是常见的NVM。接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。控制部件104用于控制在接口103、NVM芯片105以及DRAM110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。控制部件104可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件104可以是FPGAField-programmablegatearray,现场可编程门阵列、ASICApplicationSpecificIntegratedCircuit,应用专用集成电路或者其组合的形式。控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理IOInputOutput命令。控制部件104还可以耦合到DRAM110,并可访问DRAM110的数据。在DRAM可存储FTL表和或缓存的IO命令的数据。控制部件104包括闪存接口控制器或称为介质接口控制器、闪存通道控制器,闪存接口控制器耦合到NVM芯片105,并以遵循NVM芯片105的接口协议的方式向NVM芯片105发出命令,以操作NVM芯片105,并接收从NVM芯片105输出的命令执行结果。已知的NVM芯片接口协议包括“Toggle”、“ONFI”等。存储器目标Target是NAND闪存封装内的共享CE,ChipEnable,芯片使能信号的一个或多个逻辑单元LUN,LogicUNit。NAND闪存封装内可包括一个或多个管芯Die。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面Plane。逻辑单元内的多个平面可以并行存取,而NAND闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。存储介质上通常按页来存储和读取数据。而按块来擦除数据。块也称物理块包含多个页。块包含多个页。存储介质上的页称为物理页具有固定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。在固态存储设备中,利用FTLFlashTranslationLayer,闪存转换层来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的固态存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在相关技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。FTL表是固态存储设备中的重要元数据。通常FTL表的数据项记录了固态存储设备中以数据页为单位的地址映射关系。FTL表包括多个FTL表条目或称表项。在一种情况下,每个FTL表条目中记录了一个逻辑页地址与一个物理页的对应关系。在另一种情况下,每个FTL表条目中记录了连续的多个逻辑页地址与连续的多个物理页的对应关系。在又一种情况下,每个FTL表条目中记录了逻辑块地址与物理块地址的对应关系。在依然又一种情况下,FTL表中记录逻辑块地址与物理块地址的映射关系,和或逻辑页地址与物理页地址的映射关系。在“DFTL:AFlashTranslationLayerEmployingDemand-basedSelectiveCachingofPage-levelAddressMappings”公开了改进的FTL表法及其在固态存储设备中被应用的方式,其全文可从http:www.cse.psu.edu~buu1paperspsdftl-asplos09.pdf获得。支持Key-Value键-数据,也简称为“KV”存储模型的存储设备,提供基于键Key的读操作GetKey与写操作PutKey,Value。为执行写操作,主机向存储设备提供键Key与数据Value,以将数据写入存储设备,并将键作为所写入的数据的索引。为执行读操作,主机向存储设备提供键,存储设备根据键找到数据,并将数据提供给主机。因而在KV存储系统中,键是用来访问数据的索引,而数据Value是被访问的数据。一般地,键与数据的长度均不是定长。以及可选地,为了降低复杂性,键和或数据的长度可具有指定范围。图1B展示了现有技术的固态存储设备的地址转换系统的示意图。支持KV存储模型的固态存储设备的地址转换系统也称为FTL表提供从由到物理地址例如,PPA,PhysicalPageAddress,物理页地址的映射。可选地,除了物理页地址,FTL表中记录的物理地址可以是物理页内部的数据帧Dataframe的起始地址。数据帧是具有固定大小的数据单元,物理页包括1个或多个数据帧。主机提供的键的长度不定,数据的长度也不定。键作为FTL表的索引。用键作为索引查询FTL表,得到对应的物理地址。FTL表可以由数组、链表、树等多种数据结构实现。可选地,将不定长的键进行哈希运算,得到定长的哈希键例如,4字节8字节,作为FTL表的索引。发明内容KV存储设备提供的操作包括例如读操作GetKey、写操作PutKey,Value与删除操作DeleteKey。然而应用中还有对数据的其他操作需求,包括但不限于对键本身的修改操作、对键及其数据的复制操作、对属于某一范围内的键及其数据的查询或读操作等。这些操作难以由现有技术的KV存储设备提供。根据本申请的第三方面,提供了根据本申请第三方面的第一用于KV存储设备的方法,包括:接收用于访问KV存储设备的逻辑键LK;获取同所述逻辑键LK对应的物理键PK;查询地址转换表得到同所述物理键PK对应的地址,在所述地址存储了同所述逻辑键LK对应的值V。根据本申请第三方面的第一用于KV存储设备的方法,提供了根据本申请第三方面的第二用于KV存储设备的方法,其中查询所述KV存储设备的第一表,以获取同所述逻辑键LK对应的物理键PK。根据本申请第三方面的第二用于KV存储设备的方法,提供了根据本申请第三方面的第三用于KV存储设备的方法,其中第一表是排序表。根据本申请第三方面的第三用于KV存储设备的方法,提供了根据本申请第三方面的第四用于KV存储设备的方法,其中以前缀树实现所述排序表。根据本申请第三方面的第一至第三用于KV存储设备的方法之一,提供了根据本申请第三方面的第五用于KV存储设备的方法,其中对所述物理键PK进行哈希计算得到哈希键HPK;以哈希键HKP为索引访问哈希表得到同所述物理键PK对应的地址。根据本申请第三方面的第五用于KV存储设备的方法,提供了根据本申请第三方面的第六用于KV存储设备的方法,其中根据所述哈希键的第一部分HPK1查询第一哈希表;若所述哈希键的第一部分HPK1在第一哈希表中对应的条目记录了对应于逻辑键LK的值V的物理地址,根据所述物理地址从存储介质读取第一数据。根据本申请第三方面的第六用于KV存储设备的方法,提供了根据本申请第三方面的第七用于KV存储设备的方法,其中若所述哈希键的第一部分HPK1在第一哈希表中对应的条目记录了第二哈希表的地址,根据所述哈希键的第二部分HPK2查询第二哈希表。根据本申请第三方面的第六或第七用于KV存储设备的方法,提供了根据本申请第三方面的第八用于KV存储设备的方法,其中若所述哈希键的第一部分HPK1在第一哈希表中没有对应条目,指示逻辑键LK在所述KV存储设备中不存在。根据本申请第三方面的第六至第八用于KV存储设备的方法之一,提供了根据本申请第三方面的第九用于KV存储设备的方法,其中所述哈希键的第一部分HPK1的长度小于哈希键HPK的长度;以及所述哈希键的第二部分HPK1的长度小于哈希键HK的长度。根据本申请第三方面的第六至第九用于KV存储设备的方法之一,提供了根据本申请第三方面的第十用于KV存储设备的方法,其中,在所述地址存储了第一数据:从所述第一数据获取第一键Kp,若第一键Kp与所述逻辑键LK或物理键K匹配,用从所述第一数据获取的值V响应用于访问KV存储设备的逻辑键LK。根据本申请第三方面的第七用于KV存储设备的方法,提供了根据本申请第三方面的第十一用于KV存储设备的方法,还包括:若所述哈希键的第二部分HPK2在第二哈希表中对应的条目记录了对应于逻辑键LK的值V的物理地址,根据所述物理地址从存储介质读取第二数据。根据本申请第三方面的第七至第十一用于KV存储设备的方法之一,提供了根据本申请第三方面的第十二用于KV存储设备的方法,还包括:从所述哈希键的第一部分HPK1在第一哈希表中对应的条目获取第一键Kp的长度,比较第一Kp键的长度与所述逻辑键LK或物理键K的长度来识别第一键Kp与所述逻辑键LK或物理键K匹配是否匹配。根据本申请第三方面的第一至第十二用于KV存储设备的方法之一,提供了根据本申请第三方面的第十三用于KV存储设备的方法,其中响应于向所述KV存储设备写入同所述逻辑键LK对应的值V,若第一表中找不到同所述逻辑键LK对应的物理键PK,为所述逻辑键分配物理键PK,在第一表中添加条目以记录所述逻辑键LK对应于所分配的物理键PK,以及为所分配的物理键PK分配地址,并在地址转换表中添加条目以记录所述物理键PK与被分配的地址,以及在被分配的地址处写入同所述逻辑键KV对应的值V。根据本申请第三方面的第十三用于KV存储设备的方法,提供了根据本申请第三方面的第十四用于KV存储设备的方法,其中响应于向所述KV存储设备指示修改所述逻辑键LK,在第一表中找到同所述逻辑键LK对应的条目,修改该条目使其记录修改后的新逻辑键。根据本申请第三方面的第十四用于KV存储设备的方法,提供了根据本申请第三方面的第十五用于KV存储设备的方法,其中若在第一表中找不到同所述逻辑键LK对应的条目,指示出错。根据本申请第三方面的第十三至第十五用于KV存储设备的方法之一,提供了根据本申请第三方面的第十六用于KV存储设备的方法,其中响应于向所述KV存储设备指示复制同所述逻辑键KV的值V,在第一表中找到同所述逻辑键KV对应的第一物理键PK,在第一表中添加条目以记录新逻辑键对应于所述第一物理键PK。根据本申请第三方面的第十三至第十六用于KV存储设备的方法之一,提供了根据本申请第三方面的第十七用于KV存储设备的方法,其中响应于向所述KV存储设备指示读取逻辑键范围LK_R的所有值,在第一表中找到属于所述逻辑键范围LK_R的一个或多个逻辑键LK所对应的物理键PK,对于获得的每个物理键PK,查询地址转换表得到同物理键PK对应的地址,从所地址读出同逻辑键LK对应的值V。根据本申请的第四方面,提供了根据本申请四方面的第一KV存储设备,包括控制部件与非易失存储介质,所述控制部件执行根据本申请第三方面的第一至第十七用于KV存储设备的方法之一。根据本申请的第五方面,提供了根据本申请第五方面的第一用于KV存储设备的方法,包括:接收用于访问KV存储设备的键K;获取用于所述键K的排序索引;根据排序索引从排序表获取第一哈希表;对所述键进行哈希计算得到哈希键HK;根据所述哈希键的第一部分HK1查询第一哈希表;若所述哈希键的第一部分HK1在第一哈希表中对应的条目记录了读操作要访问的值V的物理地址,根据所述物理地址从存储介质读取第一数据。根据本申请第五方面的第一用于KV存储设备的方法,提供了根据本申请第五方面的第二用于KV存储设备的方法,其中从访问KV存储设备的请求中获取排序索引,从所述键K生成排序索引,或者为所述键K分配排序索引。根据本申请第五方面的第一或第二用于KV存储设备的方法,提供了根据本申请第五方面的第三用于KV存储设备的方法,还包括:为向所述KV存储设备写入同键K对应的值V,若所述排序表中不存在所述排序索引,向所述排序表添加条目以记录所述排序索引与新创建的第一哈希表的地址,在新创建的第一哈希表中记录所述哈希键的第一部分HK1与为记录所述值V而分配的逻辑地址或物理地址。根据本申请第五方面的第一至第三用于KV存储设备的方法之一,提供了根据本申请第五方面的第四用于KV存储设备的方法,还包括:响应于向所述KV存储设备指示读取键范围K_R的所有值,获取用于所述键范围K_R的排序索引;根据排序索引从排序表获取属于所述键范围K_R的一个或多个第一哈希表;对于每个第一哈希表,获取第一哈希表的每个条目,若条目记录了要访问的值V的物理地址,根据所述物理地址从存储介质读取第一数据。根据本申请第五方面的第四用于KV存储设备的方法,提供了根据本申请第五方面的第五用于KV存储设备的方法,其中,对于每个第一哈希表,用同所述键范围K_R匹配的哈希键HK的第一部分HK1查询第一哈希表,若哈希键的第一部分HK1在第一哈希表中对应的条目记录了读操作要访问的值V的物理地址,根据所述物理地址从存储介质读取数据。根据本申请的第六方面,提供了根据本申请第六方面的第一KV存储设备,包括控制部件与非易失存储介质,所述控制部件执行根据本申请第五方面的第一至第五用于KV存储设备的方法之一。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。图1A是相关技术中固态存储设备的框图;图1B展示了现有技术的固态存储设备的地址转换系统的示意图;图2A是根据本申请实施例的基于逻辑键的KV存储设备的示意图;图2B是根据本申请又一实施例的基于逻辑键的KV存储设备的示意图;图2C是根据本申请另一实施例的基于逻辑键的KV存储设备的示意图;图3A-图3E展示了根据本申请实施例处理操作接口命令的流程图;图4A是根据本申请又一实施例的KV存储设备的示意图;图4B是根据本申请实施例的主机访问图4A所示的KV存储设备的流程图;图4C是根据本申请又一实施例的主机访问图4A所示的KV存储设备的流程图;图5展示了根据本申请另一实施例的KV存储设备的地址转换系统的示意图;图6是根据图5实施例的固态存储设备的地址转换系统的详细示意图;图7A-图7C是根据图5或图6的实施例的存储设备响应主机访问的流程图;图8是根据本申请实施例的基于KV存储设备的文件系统的示意图;图9展示了根据本申请实施例的基于KV存储设备的文件系统的示意图;图10是根据本申请又一实施例的基于KV存储设备的文件系统的示意图;图11A-11H记录了根据本申请的基于KV存储设备的文件系统的提供文件系统服务的流程图;图12是根据本申请另一实施例的基于KV存储设备的文件系统的示意图;图13A是根据本申请又一实施例的基于逻辑键的KV存储设备的示意图;以及图13B是根据本申请另一实施例的基于逻辑键的KV存储设备的示意图。具体实施方式下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。图2A是根据本申请实施例的基于逻辑键的KV存储设备的示意图。根据本申请实施例的存储设备,提供或利用两种键,以提供更多的数据操作能力。所利用的两种键分别称为逻辑键与物理键,在不发生混淆的情况下,后者也简称为“键”。逻辑键与物理键一一对应。作为举例,逻辑键是例如网页地址例如,www.abc.comfoo.html、文件系统的路径例如,rootdir1a.txt或现有技术的存储协议例如,NVMe协议中的逻辑地址。而物理键是便于存储设备处理的键的形式。例如,物理键为具有指定长度的UUIDUniversallyUniqueIdentifier,通用唯一标识符。优选地,物理键具有指定的长度。作为又一个例子,物理键是通过对逻辑键进行哈希运算得到的结果。依然可选地,物理键是现有技术的KV存储设备所使用的键。在申请号为201711392529.2的中国专利申请提供了一种KV存储设备,将其全文合并于本申请。参看图1A与图2A,根据本申请实施例的KV存储设备,包括控制部件、存储器NVM存储介质。KV存储的控制部件维护排序表与KVFTL。排序表与KVFTL的数据可被存储在存储器或控制部件内部的缓存中。可选地,排序表和或KVFTL的部分或全部,被存储在NVM存储介质中。排序表记录了逻辑键与物理键图2A中,记为“键”的对应关系。排序表包括多个条目,每个条目记录了一对逻辑键与物理键的对应关系。排序表的多个条目按逻辑键排序。从而根据逻辑键或其前缀的部分,能够快速且高效地从排序表中查询到对应的物理键。而且由于排序表的条目按逻辑键排序,根据逻辑键的前缀部分对应了具有相同前缀的一组逻辑键,这些逻辑键对应的条目在排序表中相邻,能够快速且高效地从排序表中查询到对应的一个或多个物理键。排序表可以由数组、链表、树等多种数据结构实现。KVFTL记录了物理键图2中,记为“键”与存储设备的逻辑地址或物理地址的对应关系。通过逻辑地址或物理地址,得以访问存储设备。逻辑地址是例如存储协议例如,NVMe协议的逻辑地址,而物理地址指示了NVM芯片的物理存储位置。KVFTL可以由数组、链表、树、哈希表等多种数据结构实现。可选地,KVFTL是现有技术的KV存储设备的FTL。根据图2A的实施例的KV存储设备,同KV存储设备耦合的例如主机,通过逻辑键访问KV存储设备。例如,主机向KV存储设备发出的读操作GetKey中指示要读取的Key为逻辑键。KV存储设备接收逻辑键,用逻辑键查询排序表得到物理键,再用物理键查询KVFTL得到逻辑地址或物理地址,并用该逻辑地址或物理地址访问同逻辑键对应的数据。可选地,使用现有技术的KV存储设备来处理根据物理键的访问。可选地,根据本申请实施例的KV存储设备,除了向主机提供同现有技术的KV存储设备类似的操作接口例如,读操作Get逻辑键、写操作Put逻辑键,Value和或删除操作Delete逻辑键,还提供例如访问物理键的操作,例如读物理键操作GetKey逻辑键,响应于该操作,KV存储设备输出排序表中记录的同逻辑键对应的物理键。图2B是根据本申请又一实施例的基于逻辑键的KV存储设备的示意图。根据图2B展示的实施例的KV存储设备,包括控制部件、存储器NVM存储介质。控制部件包括CPU1与CPU2。CPU1维护排序表,而CPU2维护KVFTL。以读操作Get逻辑键为例,CPU1根据逻辑键从排序表中获取同逻辑键对应的物理键,而CPU2根据物理键从KVFTL中获取同物理键对应的物理地址或逻辑地址。图2C是根据本申请另一实施例的基于逻辑键的KV存储设备的示意图。根据图2C展示的实施例的KV存储设备向主机提供的操作接口是基于物理键的,例如,读操作Get物理键、写操作Put物理键,Value和或删除操作Delete物理键。在同KV存储设备耦合的主机维护排序表,用于将逻辑键映射到物理键。例如,主机中运行的KV存储设备的驱动程序维护排序表。应用程序利用逻辑键访问KV存储设备,而KV存储设备的驱动程序接收逻辑键并查询排序表以得到物理键,并利用物理键访问KV存储设备。图3A-图3E展示了根据本申请实施例处理操作接口命令的流程图。图3A是处理读操作接口命令的流程图。读操作接口命令简称“读操作”指示了逻辑键也记为LK。接收读操作的KV存储设备从读操作中获取逻辑键LK310。KV存储设备根据逻辑键LK查询排序表以获取物理键记为PK312。以及根据物理键PK访问KVFTL以获取逻辑地址或物理地址,并从逻辑地址或物理地址读出数据,作为同逻辑键LK对应的值314。图3B是处理写操作接口命令的流程图。写操作接口命令简称“写操作”指示了逻辑键也记为LK与待写入的数据V。接收写操作的KV存储设备从写操作中获取逻辑键LK320。KV存储设备根据逻辑键LK查询排序表以识别该逻辑键LK在排序表中是否存在322。若逻辑键LK在排序表中不存在322,为逻辑键LK分配新的物理键PK,并将逻辑键LK与新生成的物理键PK添加到排序表324。例如,根据物理键的生成规则,对逻辑键LK进行哈希运算生成物理键PK;或者,获取在排序表中尚不存在的UUID,分配给逻辑键LK。以及更新新生成的物理键PK所对应的数据V329。若逻辑键LK在排序表中已存在322,则查询排序表以获取同逻辑键LK对应的物理键PK,以及更新查询到的物理键PK所对应的数据V329。为更新物理键PK所对应的数据V329,例如,为查询到的物理键PK分配新的物理地址,在KVFTL中,记录查询到的物理键PK与新分配的物理地址,将数据V写入分配的新物理地址。可选地,为查询到的物理键PK分配新的逻辑地址,以及根据现有技术的存储设备的更新方式,将分配的新逻辑地址的值更新为待写入的数据V。依然可选地,根据现有技术的KV存储设备的更新方式,向新生成的物理键PK写入所对应的数据V。图3C是处理修改逻辑键操作接口命令的流程图。修改逻辑键操作接口命令简称“修改键操作”指示将修改前的逻辑键也记为LK_S更新为修改后的逻辑键LK_D。接收修改键操作的KV存储设备从修改键操作中获取修改前的逻辑键LK_S与修改后的逻辑键LK_D330。KV存储设备根据修改前的逻辑键LK_S查询排序表以识别该修改前的逻辑键LK_S在排序表中是否存在332。若修改前的逻辑键LK_S在排序表中不存在332,指示出现错误336。若修改前的逻辑键LK_S在排序表中存在332,将排序表中的修改前的逻辑键LK_S更新为修改后的逻辑键LK_D334。图3D是处理复制操作接口命令的流程图。复制操作接口命令简称“复制操作”指示复制待复制的逻辑键也记为LK_S,使得用新的逻辑键LK_D可以访问待复制的逻辑键LK_S的数据V。接收复制操作的KV存储设备从复制操作中获取待复制的逻辑键LK_S与新的逻辑键LK_D350。KV存储设备根据待复制的逻辑键LK_S查询排序表以识别该待复制的逻辑键LK_S在排序表中是否存在352。若待复制的逻辑键LK_S在排序表中不存在352,指示出现错误356。若待复制的逻辑键LK_S在排序表中存在352,从排序表中获取同待复制的逻辑键LK_S对应的物理键PK,以及生成新的排序表条目,其中记录了新的逻辑键LK_D与获取的对应于待复制的逻辑键LK_S的物理键PK的对应关系,并将新生成的排序表条目添加到排序表354。以及可选地,将新生成的排序表条目添加到排序表,并使排序表中的条目依然按逻辑键排序。图3E是处理范围查询操作接口命令的流程图。范围查询操作接口命令简称“范围查询操作”指示了待访问的逻辑键的范围也记为LK_R。例如,以逻辑键前缀的形式或由带通配符的逻辑键的形式表达逻辑键范围LK_R。接收范围查询操作的KV存储设备从范围查询操作中获取逻辑键范围LK_R360。KV存储设备根据逻辑键范围LK_R查询排序表以获取同属于该逻辑键范围LK_R的一个或多个逻辑键LK对应的一个或多个物理键PK362。以及对于每个获取的物理键PK,访问KVFTL以获取逻辑地址或物理地址,并从逻辑地址或物理地址读出数据,作为同逻辑键LK对应的值364。可选地,对于每个物理键PK,根据现有技术的KV存储设备的读取方式,读取同物理键PK对应的数据V。在一个实施方式中,根据图3A-图3E所示的流程,由根据本申请实施例的存储设备实施。在又一个实施方式中,主机同KV存储设备耦合,主机维护排序表,而KV存储设备维护KVFTL。从而图3A到3E中,获取物理键之前的步骤,由主机执行,而根据物理键访问对应的值的步骤,由存储设备执行。例如,图3A的步骤310与步骤312由主机执行,其他步骤由KV存储设备执行。图3B的步骤320、步骤322、步骤324与步骤326由主机执行,步骤329由KV存储设备执行。图3C与图3D的流程的各步骤均由主机执行。图3E的步骤360与步骤362由主机执行,步骤364由KV存储设备执行。图4A是根据本申请又一实施例的KV存储设备的示意图。参看图4A,根据本申请实施例的KV存储设备,包括控制部件、存储器NVM存储介质。KV存储的控制部件维护排序表与KVFTL。KVFTL包括多个L1哈希表。每个L1哈希表由键Key索引。通过键Key索引L1哈希表内记录的条目。L1哈希表的条目记录了例如存储键Key所对应数据的存储单元的物理地址或逻辑地址。排序表包括多个条目,每个条目记录了排序索引与L1哈希表之一的基地址的对应关系。排序表的多个条目按排序索引排序。从而根据排序索引或其前缀的,能够快速且高效地从排序表中查询到对应的L1哈希表。在一种实施方式中,根据图4A的实施例的KV存储设备向同其耦合的主机提供的操作接口命令中指示键Key与排序索引。主机提供的排序索引,是用于接口命令中的键Key的排序索引。排序索引是用于键Key的索引,并且可排序。排序索引同键Key一一对应,或者是一对多关系。例如,主机提供的键是例如UUID,而排序索引是数字或字符串。在又一个例子中,排序索引是URL的部分前缀,而键Key是完整URL。根据图4A的实施例,主机为访问KV存储系统,为所使用的键Key分配或生成排序索引。例如,对于形式为文件系统路径的键,截取路径的前缀部分作为排序索引。一些情况下,对于由所构成的记录,生成记录的主机知晓其排序规则,从而由主机根据记录的排序规则,为键Key生成排序索引,并提供给KV存储设备。图4B是根据本申请实施例的主机访问图4A所示的KV存储设备的流程图。以主机向KV存储设备发出读操作接口命令Get键,排序索引为例。为读取同键K对应的数据,主机获取要读取的键K410,,为键K生成排序索引或者获取同键K对应的排序索引SK415,并向KV存储设备发出读操作接口命令,在读操作接口命令中指示了键K与排序索引SK。KV存储设备接收读操作接口命令中的键K与排序索引SK420,用排序索引SK查询排序表,根据得到的L1哈希表地址得到对应的L1哈希表425。并用读操作接口命令中的键查询L1哈希表,得到对应的逻辑地址或物理地址430,并用以访问存储设备,从逻辑地址或物理地址读出数据,并提供给主机,作为对读操作接口命令额响应。可选地,L1哈希表是现有技术的KV存储设备的FTL。作为又一个例子,主机向KV存储设备发出写操作接口命令Put键,排序索引,数据。主机获取要读取的键K,为键K生成排序索引或者获取同键K对应的排序索引。并用写操作接口命令将键K与排序索引SK提供给KV存储设备。KV存储设备接收写操作接口命令中的键与排序索引,用排序索引查询排序表,根据得到的L1哈希表地址得到对应的L1哈希表。并用写操作接口命令中的键查询L1哈希表,得到对应的逻辑地址或物理地址,并向其写入写操作接口命令指示的数据。若在排序表中未找到对应排序索引的记录,或者L1哈希表中未找到对应键的记录,则表明待写入的键在KV存储设备中不存在,而向排序表中添加对应于排序索引的记录,向L1哈希表中添加对应于键的记录。以及在需要时,还生成新的L1哈希表。在又一种实施方式中,根据图4A的实施例的KV存储设备向同其耦合的主机提供的操作接口命令中仅指示键Key而不指示排序索引。由KV存储设备根据所接收的键Key生成排序索引。排序索引是例如为键Key分配的序号,或键Key的部分或前缀。图4C是根据本申请又一实施例的主机访问图4A所示的KV存储设备的流程图。主机向KV存储设备发出范围查询操作接口命令简称“范围查询操作”。范围查询操作指示了待访问的键的范围也记为K_R450。例如,键是文件系统的路径,而键的范围是某目录下的所有文件,并且键的范围的形式为键前缀的形式或由带通配符的键的形式。主机还根据键的范围,生成排序索引SK460。排序索引所对应的键覆盖了待访问的键的范围。作为举例,排序表是前缀树,而生成的排序索引SK指示的前缀树的节点的所有子节点,覆盖了待访问的键的范围内的所有键。主机将待访问的键的范围也记为K_R与排序索引SK发给KV存储设备。KV存储设备根据排序索引SK访问排序表,从中获取一个或多个L1哈希表的地址470。例如,根据排序索引SK所命中的节点,获取该节点在排序表中的所有子节点所记录的L1哈希表地址。对于获取的每个哈希表,从中获取同键范围K_R匹配的所有条目中记录的逻辑地址或物理地址480,并访问逻辑地址或物理地址,例如从中读出数据。在一个例子中,遍历L1哈希表,获取其中的每个键,从同键范围K_R匹配的条目中获取逻辑地址或物理地址。图5展示了根据本申请另一实施例的KV存储设备的地址转换系统的示意图。KV存储设备的NVM芯片也参看图1,NVM芯片105提供了多个物理块。物理块被用作数据块。数据块包括物理页或数据帧,用于记录被写入固态存储设备的数据。以物理页为例,图5展示的数据块包括5个物理页。每个物理页包括头部字段分别记为“头部1”、“头部2”……与“头部5”。每个物理页具有物理地址记为PPA,通过使用PPA可访问对应的物理页。物理页中记录了键K与值Value,键Key与值Value是主机写入数据时提供的键Key与值Value。物理页中还记录了头部字段,头部字段用于指示键Key和或值Value的起始地址和或长度。例如图5中由“头部1”所指示的物理页,包括头部字段头部1、键1与值1。头部字段记录了键Key的长度与值Value的长度而头部字段的长度为定值,根据PPA所指示的物理地址和头部字段的长度可计算出键Key的起始地址和值Value的起始地址。在一个例子中,头部字段记录键Key的长度,根据PPA所指示的物理地址和头部字段的长度,以及键Key的长度可计算出值Value的起始地址。以及在又一个例子中,键Key的起始地址是固定的,头部字段记录值Value的起始地址。在又一个例子中,键Key与值Value是不定长的。可选地,物理页中记录多个对。以“头部2”所指示的物理页为例,其中记录的“键2”与“值2”为一对,而“键3”与“值3”为另一对。以及根据“头部2”寻址与的每对。依然可选地,物理页例如图5中由“头部3”所指示的物理页头部字段、键Key和值Value的长度的总和不足以填满物理页,则以填充dummy数据填满物理页。由“头部4”与“头部5”所指示的物理页是物理地址连续的物理页,键5与“值5”是主机写入数据时提供的键Key与值Value。由于“值5”的大小超过了物理页所能容纳的大小,在由“头部4”所指示的物理页中记录了键5与主机提供的值5的一部分,在由“头部5”所指示的物理页中记录了“值5”的余下部分。头部字段“头部4”与“头部5”,用于指示“键5”和“值5”在物理页中的起始地址和或长度。可选地,在头部字段中还记录所占用物理页的数量该数量为2。可选地,依然参看图5的“头部4”与“头部5”所指示的物理页,头部字段以及键Key与值Value的大小不足以填满两个物理页,以填充dummy数据填满由“头部5”所指示的物理页。继续参考图5,主机或用户提供的键K包括或被分为排序索引SK与RK两部分。排序索引SK与RK组合得到键K。对RK进行哈希计算,得到得到哈希键记为HRK。可选地,哈希键HRK具有指定的长度。依然可选地,哈希键HRK被分为多个部分。例如,哈希键HK分为2部分,分别记为HRK1与HRK2。例如,长度为128比特的哈希键HRK,HRK1是哈希键HRK的前64比特,HRK2是哈希键HRK的接下来的64比特。可以理解地,有多种其他方式将哈希键HRK分为多个部分,而不限制选取哈希键HRK的比特的方式、顺序和或长度等。在可选的实施方式中,主机或用户提供的键K作为RK,以及额外获取或生成同RK对应的排序索引SK。例如,截取RK的部分,作为排序索引SK。在此实施方式中,RK同键K相同。依然参看图5,存储设备的存储器也参看图1,例如DRAM110中记录多种数据表,包括排序表、L1哈希表与冲突链表。排序表包括多个条目,每个条目记录了排序索引SK与L1哈希表之一的基地址的对应关系。排序表的多个条目按排序索引排序。从而根据排序索引或其前缀的,能够快速且高效地从排序表中查询到对应的L1哈希表。提供一个或多个L1哈希表。L1哈希表由哈希键HRK的部分HRK1索引。例如,以HRK1作为L1哈希表内的偏移值来获取L1哈希表的条目。L1哈希表的条目记录了数据块的逻辑地址物理地址或冲突表的地址。提供一个或多个冲突表。L1哈希表的条目记录冲突表的地址,从而依据L1哈希表的条目可寻址冲突表。每个冲突表由键K索引。冲突表的条目记录了数据块的物理页或数据单元地址。在可选的实施方式中,提供一个或多个L2哈希表。L1哈希表的条目,可选地记录L2哈希表的地址,从而依据L1哈希表的条目可寻址L2哈希表。每个L2哈希表由哈希键HRK的部分HRK2索引。例如,以HRK2作为L2哈希表内的偏移值来获取L2哈希表的条目。L2哈希表的条目记录了数据块的物理地址逻辑地址或冲突表的地址。图6是根据图5实施例的固态存储设备的地址转换系统的详细示意图。冲突表的每个条目由排序索引SK索引,而条目的值是L1哈希表的地址。作为举例,以排序索引SK为索引访问排序表,得到匹配了排序索引SK的排序表条目。参看图6,若排序索引SK为字符串“hello”,其将匹配图6中的排序表的第4个条目,该条目记录了例如L1哈希表622的地址。对RK进行指定的哈希计算得到哈希键HRK。L1哈希表的每个条目由哈希键HRK的部分HRK1索引,而条目的值是数据块的逻辑地址物理地址或者冲突表地址。作为举例,以HRK1为地址或偏移值访问L1哈希表的条目。若L1哈希表的条目记录数据块的物理地址逻辑地址,该地址指示对在NVM存储介质中的存储位置。可以理解地,L1哈希表的索引HRK1不同于哈希键HRK。且HRK1与哈希键HRK不是一一对应关系,而是多个哈希键HRK可能都对应相同的HRK1。从而,依据HRK1从L1哈希表索引到的数据块的物理地址逻辑地址访问到的,有一定概率不是对应于主机用户所访问的、被用于生成哈希键HRK的RK,从而发生错误。在一些情况下,这种错误的发生是极小概率的,并且可以被用户或固态存储设备所遵循的技术标准所接受。在另一些情况下,不能接受这种错误,还要比较从L1哈希表索引到的数据块的物理地址逻辑地址访问到的键K与用户要访问的RK与排序索引SK的组合是否相同,来识别错误是否发生。若L1哈希表的条目记录冲突表地址,该地址指示同该条目关联的冲突表之一在存储器中的位置。从而该冲突表的条目也关联于HRK1。例如,参看图6,L1哈希表中620,以HRK1-1为索引的条目,记录了物理地址PPA,以HRK1-2为索引的条目,记录了冲突表640的地址,以HRK1-4为索引的条目,记录了冲突表642的地址。哈希表622中,以HRK1-8为索引的条目,记录了冲突表644的地址。冲突表的每个条目由RK索引,而条目的值是数据块的物理地址逻辑地址。图6展示了冲突表640、冲突表642与冲突表644。冲突表是例如数组、链表、线性表或树。可选地,冲突表是排序的,例如按RK的数值排序,以支持通过RK在冲突表中快速查找由RK索引的条目。根据图3所示的实施例,L1哈希表的每个条目关联于排序索引SK与HRK1。而多个RK可能都对应相同的排序索引SK与HRK1的组合。例如,RK1与RK2都对应的相同的排序索引SK与HRK1的组合,从而依据键K1得到的排序索引SK与HRK1_2关联于由HRK1_2所指示的L1哈希表620的条目,依据键K2得到的排序索引SK与HRK1_2也关联于由HRK1_2所指示的L1哈希表的条目。在此情况下,由HRK1_2所指示的L1哈希表的条目发生冲突。为解决冲突,创建冲突表640,以记录键K1或RK1与其物理地址逻辑地址的关联关系,还记录键K2或RK2与其物理地址逻辑地址的关联关系。以及在HRK1_2所指示的L1哈希表的条目中记录冲突表640的地址。可选地,L1哈希表具有指定的大小例如,1KB-4MB,而冲突表的条目数量没有限制。依然可选地,选择L1哈希表与冲突表的大小,使其易于被操作系统或内存管理单元MMU,MemoryManagementUnit访问,和或易于存储到NVM存储介质。在依然可选的实施方式中,固态存储设备中包括多个如图6所示的地址转换系统。而固态存储设备的每个命名空间NameSpace对应如图6所示的地址转换系统之一。图7A-图7C是根据图5或图6的实施例的存储设备响应主机访问的流程图。根据图7A,存储设备响应主机发出的读操作接口命令GetK。为读取同键K对应的数据,存储设备从读操作中获取键K710,根据键K生成排序索引SK与RK,对RK进行指定的哈希计算得到哈希键HSK715。例如,取键K的前面指定长度部分作为排序索引SK,而将键K的其他部分作为RK。用排序索引SK查询排序表,根据得到的L1哈希表地址得到对应的L1哈希表720。并用从读操作接口命令得到的哈希键HRK的部分HRK1查询L1哈希表725。若L1哈希表中不存在同哈希键部分HRK1对应的条目,则指示同读操作接口命令对应的键K不存在。访问用HRK1得到的L1哈希表条目,若L1哈希表条目指示不存在冲突730,则L1哈希表条目中记录了逻辑地址或物理地址,访问该逻辑地址或物理地址739,将读出的数据作为同键K对应的数据。可选地,还从读出的数据中获取键Kp,比较键Kp与键K是否相同。若键Kp与键K相同,则NVM存储介质中同键Kp关联地存储的值,是同键K对应的值,将该值作为读操作的结果。若键Kp与键K不同,则NVM存储介质中同键Kp关联地存储的值,不是同键K对应的值,则指示同键K对应的值在固态存储设备中不存在。若用HRK1得到的L1哈希表条目指示存在冲突730,则L1哈希表条目中记录的是冲突表的地址,用该地址获取冲突表,以及用RK查询冲突表735,得到冲突表条目。在冲突表条目中记录了逻辑地址或物理地址,访问该逻辑地址或物理地址737,将读出的数据作为同键K对应的数据。可选地,还从读出的数据中获取键Kp,比较键Kp与键K是否相同。若键Kp与键K相同,则NVM存储介质中同键Kp关联地存储的值,是同键K对应的值,将该值作为读操作的结果。若键Kp与键K不同,则NVM存储介质中同键Kp关联地存储的值,不是同键K对应的值,则指示同键K对应的值在固态存储设备中不存在。在可选的实施方式中,冲突表的索引是键K,在步骤735,用键K查询冲突表。根据图7B,存储设备响应主机发出的范围查询操作接口命令简称“范围查询操作”。范围查询操作指示了待访问的键的范围也记为K_R740。存储设备根据键的范围K_R,生成排序索引SK745。排序索引SK所对应的键覆盖了待访问的键的范围K_R。作为举例,排序表是前缀树,而生成的排序索引SK指示的前缀树的节点的所有子节点,覆盖了待访问的键的范围K_R内的所有键。作为又一个例子,通过排序索引SK从排序表中查询到单一的条目例如,排序树的叶节点,该条目所记录的L1哈希表覆盖了待反问的键的范围K_R内的所有键。根据排序索引SK访问排序表,从中获取一个或多个L1哈希表的地址750。例如,根据排序索引SK所命中的节点,获取该节点在排序表中的所有子节点所记录的L1哈希表地址。对于获取的每个L1哈希表,用同键范围K_R匹配的所有键K所对应的哈希键部分HSK1访问L1哈希表755,得到哈希表条目。对于从各个L1哈希表中获得的每个条目,识别其是否存在冲突760。若L1哈希表条目指示不存在冲突760,则L1哈希表条目中记录了逻辑地址或物理地址,访问该逻辑地址或物理地址769,将读出的数据作为同键K对应的数据。若L1哈希表条目指示存在冲突760,则L1哈希表条目中记录的是冲突表的地址,用该地址获取冲突表,以及用命中了该L1哈希表的条目的哈希键部分HRK1所对应的RK查询冲突表765,得到冲突表条目。在冲突表条目中记录了逻辑地址或物理地址,访问该逻辑地址或物理地址737,将读出的数据作为同键K对应的数据。在一个例子中,作为对步骤755的替代,遍历每个L1哈希表,获取其中的每个条目所记录的部件键HRK1,从同键范围K_R匹配的部件键HRK1所在的条目中获取逻辑地址或物理地址。若L1哈希表的条目存在冲突,从对应的冲突表中记录的所有条目中获取逻辑地址物理地址,并读出数据。在另一个例子中,作为对步骤755的替代,遍历每个L1哈希表,获取其中的所有条目,并从每个L1哈希表条目中获取物理地址逻辑地址或者与其对应的冲突表的所有条目中的物理地址逻辑地址。以及从物理地址逻辑地址获取数据,作为对范围查询操作接口命令的响应。根据图7C,存储设备响应主机发出的写操作接口命令PutK,V。为向键K写入数据,存储设备从写操作中获取键K770,根据键K生成排序索引SK与RK,对RK进行指定的哈希计算得到哈希键HSK772。例如,取键K的前面指定长度部分作为排序索引SK,而将键K的其他部分作为RK。用排序索引SK查询排序表774。若排序表中不存在同排序索引SK匹配的条目776,则创建新的L1哈希表,向排序表添加新的条目,新的条目同排序索引SK匹配,并且在新的排序表条目中记录新建的L1哈希表的基地址。以及还为待写入的数据分配物理地址逻辑地址,在新建的L1哈希表中添加记录,所添加的记录以哈希键HSK的部分HSK1为索引,以分配的物理地址逻辑地址为值778。还将写操作接口命令对应的数据写入所分配物理地址逻辑地址。若排序索引SK匹配了排序表的条目776,从匹配的条目中获取L1哈希表的基地址,并用哈希键部分HRK1查询L1哈希表780。若L1哈希表中不存在同哈希键部分HRK1对应的条目782,则指示同写操作接口命令对应的键K不存在。更新L1哈希表784,在L1哈希表中添加条目,添加的条目以哈希键部分HRK1为索引,在条目中记录分配的物理地址逻辑地址。并向新分配的物理地址逻辑地址写入数据。若部分键HRK1在L1哈希表中存在782,进一步识别部分键HRK1在L1哈希表中是否存在冲突786。若不存在冲突,将数据写入新分配的物理地址逻辑地址,将根据部分键HRK1索引的L1哈希表条目中记录的地址更新为新分配的物理地址逻辑地址788若部分键HRK1在L1哈希表中存在冲突786,根据部分键HRK1索引的L1哈希表条目获取冲突表的地址,并用RK查询冲突表790。若在冲突表中,查询到以RK为索引的条目792,用分配的物理地址逻辑地址更新该条目796,若冲突表中不存在以RK为索引的条目792,在冲突表中添加以RK为索引且以分配的物理地址逻辑地址为值的条目794。图8是根据本申请实施例的基于KV存储设备的文件系统的示意图。主机同KV存储设备耦合。KV存储设备向主机提供基于键K的访问接口。KV存储设备是例如现有技术的KV存储设备,或者根据本申请实施例的KV存储设备。主机包括文件系统,以使用KV存储设备,并向用户或应用提供文件系统服务。文件系统采用文件系统路径描述文件或目录。并提供诸如读文件、写文件、删除文件、创建目录、删除目录、修改路径等文件系统服务。文件系统提供文件系统接口,文件系统接口包括例如,读文件接口、写文件接口、创建文件接口、删除文件接口、文件改名接口、创建目录接口、删除目录接口、目录改名接口、复制文件或目录接口、创建文件或目录的链接的接口等。通过文件系统接口访问文件系统。可选地,由KV存储设备提供文件系统。例如,在KV存储设备的CPU上运行实现了文件系统的程序,并向耦合到KV存储设备的主机提供文件系统接口。图9展示了根据本申请实施例的基于KV存储设备的文件系统的示意图。以文件的文件系统路径为例,其包括文件所在目录的完整路径与文件名。拼接文件所在目录的完整路径与文件名,得到用于文件的文件系统路径。对于目录,其文件系统路径为目录的完整路径。目录与文件都是文件系统的对象。文件系统包括唯一的根目录,例如,将根目录记为“”,目录的文件系统路径以根目录为开始,并包括目录的各级父目录的路径。文件系统路径为“abc”的目录,是根目录“”的子目录。文件系统路径为“abchello”的目录,是根目录“”的子目录“abc”的子目录。根据图9的实施例,在排序表的条目记录文件系统路径与对应的键。以文件系统路径为条目的排序索引,而对应的键为条目的值。例如,键是为文件系统路径生成的UUID。排序表中记录文件系统管理的每个目录与文件所对应的条目。可选地,排序表中允许两个或多个条目记录相同的UUID,以为文件系统提供链接、复制等功能。作为举例,排序表作为文件系统的部分,由主机提供。文件系统用文件系统路径查询排序表,得到同文件系统路径对应的键或UUID,并用键访问KV存储设备。KV存储设备中,记录了同键K相对应的值V。对于通过文件的文件系统路径得到的键,其值是文件的内容。可选地,该值还包括文件的属性信息。依然可选地,对于通过文件的文件系统路径得到的键K,生成两个或更多键例如,K与K_1,在KV存储设备中,通过键K得到同文件对应的值,而通过键K_1得到同问文件对应的属性信息。对于通过目录的文件系统路径得到的键,其在KV存储设备中记录的值是目录的内容,包括例如以该目录为所在目录的所有文件与子目录的包括文件名或目录名的属性信息。图10是根据本申请又一实施例的基于KV存储设备的文件系统的示意图。KV存储设备记录了键K与对应的值V。键是例如UUID,而值是文件内容或目录内容。例如,键UUID100对应的值是根目录内容,键UUID101对应的值是子目录1的内容,UUID200对应的值是文件1的内容,而键UUID201对应的值是文件2的内容。图10还展示了示例的文件系统结构。文件系统的根目录是“”,其下包括子目录“dummy”与文件“dummy.txt”。子目录“dummy”中还包括对根目录下的文件“dummy.txt”的链接。图10中还展示了根目录内容与子目录“dummy”的内容。根目录的内容,是在KV存储设备中记录的同例如键UUID100对应的值。根目录内容包括多条记录,每条记录描述了以根目录为所在目录的所有文件与子目录的每个的包括文件名或目录名的属性信息。图10中的根目录内容,包括4条记录,第一条记录第1行指示了该目录根目录的父目录的UUIDUUID100;第二条记录第2行指示了该目录根目录自己的UUIDUUID100。可选地,在第二条记录中,还记录根目录自己的名字、类型、属性等信息。由于“根目录”没有父目录,在第一条记录中也记录了根目录自己的UUID。图10中的根目录内容,第三条记录第3行指示了根目录所包含的对象的UUIDUUID101,还指示了该对象的名字“dummy”,该对象的类型是“目录”,该对象的相关属性、创建日期、权限等。图10中的根目录内容,第四条记录第4行指示了根目录所包含的对象的UUIDUUID200,还指示了该对象的名字“dummy.txt”,该对象的类型是“文件”,该对象的相关属性、创建日期、权限等。可选地,在第四条记录第4行还记录了文件系统中指向该对象的一个或多个链接所在的目录的UUIDUUID列表。可以理解地,为根目录所包含的每个子目录以及每个文件,在根目录内容中提供对应的记录。目录“dummy”的内容,是在KV存储设备中记录的同例如键UUID101对应的值。目录内容包括多条记录,每条记录描述了以该子目录为所在目录的所有文件与子目录的每个的包括文件名或目录名的属性信息。图10中的子目录“dummy”的内容,包括3条记录,第一条记录第1行指示了该子目录子目录“dummy”的父目录的UUIDUUID100,即根目录的UUID;第二条记录第2行指示了该子目录子目录“dummy”自己的UUIDUUID101,还指示了自己的名字“dummy”,自己的类型是“目录”,自己的相关属性、创建日期、权限等。图10中的子目录“dummy”内容,第3条记录第3行指示了该目录所包含的对象的UUIDUUID201,还指示了该对象的名字“dummy.txt”,该对象的类型是“链接”,该链接的目标的UUID即根目录下的文件“dummy.txt”的UUID、该对象的相关属性、创建日期、权限等。可选地,在第三条记录第3行还记录了文件系统中指向该对象的一个或多个链接所在的目录的UUIDUUID列表。可以理解地,为子目录“dummy”所包含的每个子目录以及每个文件,在子目录内容中提供对应的记录。图11A-11H记录了根据本申请的基于KV存储设备的文件系统的提供文件系统服务的流程图。图11A展示了文件系统提供读文件服务的流程。为读取文件,向文件系统提供待读取文件的文件系统路径,包括文件所在目录与文件名1110。文件系统从接收的文件系统路径中获取文件所在目录,并识别目录是否存在1112。文件系统通过目录的父目录内容,从父目录内容搜索同目录名匹配的记录,来识别目录是否存在。以及从根目录开始,通过逐级查找文件所在目录的各级父目录,来识别待访问目录的各级父目录是否存在,并获取各级父目录的UUID,通过各级父目录的UUID得到待访问目录的父目录的UUID,并获取待访问目录的父目录的目录内容。根目录的UUID是例如已知的。在步骤1112,若目录不存在,则文件系统向用户或应用指示出错1119,因为待访问的文件不存在。若目录存在,获取目录的UUID,利用UUID访问KV存储设备,得到目录内容1114。用待读取文件的文件名搜索步骤1114获得的目录内容中的记录,来识别目录内容中是否记录了同待读取文件的文件名关联的记录1116。如步骤1116未找到待读取的文件,向用户或文件系统指示待读取文件不存在1119。若步骤1116找到了待读取文件对应的记录,从记录中获取待读取文件的UUID,并用该UUID读取KV存储设备,以读出待读取的文件内容1118。图11B展示了文件系统提供删除文件服务的流程。为删除文件,向文件系统提供待删除文件的文件系统路径,包括文件所在目录与文件名1120。文件系统从接收的文件系统路径中获取文件所在目录,并识别目录是否存在1122。在步骤1122,若目录不存在,则文件系统向用户或应用指示出错1129,因为待删除的文件不存在。在步骤1122,若目录存在,获取目录的UUID,利用UUID访问KV存储设备,得到目录内容1124。用待删除文件的文件名搜索步骤1124获得的目录内容中的记录,来识别目录内容中是否记录了同待删除文件的文件名关联的记录1126。如步骤1126未找到待删除的文件,向用户或文件系统指示待删除文件不存在1129。若步骤1126找到了待删除文件对应的记录,从记录中获取待删除文件的UUID,并用该UUID访问KV存储设备,以删除同UUID对应的值,以及还用待删除文件所在目录的UUID访问KV存储设备,以更新待删除文件所在目录的目录内容,在文件内容中删除同待删除文件对应的记录1128。图11C展示了文件系统提供写文件服务的流程。为写文件,向文件系统提供待写的文件的文件系统路径,包括文件所在目录与文件名1130。文件系统从接收的文件系统路径中获取文件所在目录,并识别目录是否存在1132。在步骤1132,若目录不存在,则文件系统向用户或应用指示出错1139,因为待写的文件不存在。在步骤1132,若目录存在,获取目录的UUID,利用UUID访问KV存储设备,得到目录内容1134。用待写的文件的文件名搜索步骤1134获得的目录内容中的记录,来识别目录内容中是否记录了同待写文件的文件名关联的记录1136。如步骤1136未找到待写的文件,向用户或文件系统指示待写文件不存在1139。若步骤1136找到了待写文件对应的记录,从记录中获取待写文件的UUID,并用该UUID访问KV存储设备,以更新同UUID对应的值1138。可选地,还用待写文件所在目录的UUID访问KV存储设备,以更新待写文件所在目录的目录内容,在文件内容中更新同待写文件对应的记录的属性信息,例如,文件上次被更新的时间。对于文件系统提供的修改文件的服务,以图11C所展示的类似流程被处理。在步骤1138,用待修改文件的UUID从KV存储设备读出待修改文件,并将修改后的文件用相同的UUID写入KV存储设备。或者向KV存储设备指示待修改文件的UUID、待修改文件被修改的位置与修改后的值。对于文件系统提供的创建文件的服务,以图11C所展示的类似流程被处理。在步骤1136,如步骤1136找到了待创建的文件,向用户或文件系统指示出错已存在待创建文件。如步骤1136未找到待创建的文件,在待创建文件所在目录的目录内容中增加记录,以指示为待创建文件分配的UUID、文件名、属性信息等。可选地,无须用待创建文件的UUID访问KV存储设备,因为该待创建文件尚未被写入内容。图11D展示了文件系统提供创建链接服务的流程。待创建的链接具有其文件系统路径,以及链接所指向的文件系统的目录或文件的文件系统路径称为目标文件系统路径。为创建链接,向文件系统提供待创建链接的文件系统路径,包括链接所在目录与文件名1140。文件系统从接收的文件系统路径中获取链接所在目录,并识别目录是否存在1142。在步骤1142,若目录不存在,则文件系统向用户或应用指示出错1149。在步骤1142,若目录存在,获取目录的UUID,利用UUID访问KV存储设备,得到目录内容1144。用待创建链接的名称搜索步骤1144获得的目录内容中的记录,来识别目录内容中是否记录了同待创建链接的名称关联的记录1146。如步骤1146找到了待创建的链接,向用户或文件系统指示出错已存在待创建链接。如步骤1146未找到待创建的链接,为待创建链接分配的UUID,获取待创建链接所指向的目标的UUID称为目标UUID与目标所在目录的UUID称为目标父UUID,通过目标父UUID访问KV存储设备以得到目标父UUID对应的目录内容,在目录内容中更新同目标UUID对应的记录,在记录中增加所创建链接的UUID和或所创建的链接所在目录的UUID。还在待创建链接所在目录的目录内容中增加记录,以指示为待创建链接分配的UUID、链接名称、属性信息等,还在增加的记录中指示所创建链接所指向的目标UUID和或目标父UUID1148。可选地,无须用所创建链接的UUID访问KV存储设备。图11E展示了文件系统提供创建目录服务的流程。为创建目录,向文件系统提供待创建目录的文件系统路径,包括待创建目录所在目录父目录与待创建目录名1150。文件系统从接收的文件系统路径中获取父目录的文件系统路径,并识别父目录是否存在1152。在步骤1152,若父目录不存在,则文件系统向用户或应用指示出错1159。在步骤1152,若父目录存在,获取父目录的UUID,利用UUID访问KV存储设备,得到父目录内容1154。用待创建的目录名搜索步骤1154获得的父目录内容中的记录,来识别目父录内容中是否记录了同待创建目录的目录名关联的记录1156。如步骤1156找到了待创建目录的目录名,向用户或文件系统指示出错1159。若步骤1156未找到待创建目录对应的记录,在待创建目录的父目录内容中增加记录,以指示为待创建目录分配的UUID、目录名、属性信息等1158。图11F展示了文件系统提供删除目录服务的流程。为删除目录,向文件系统提供待删除目录的文件系统路径,包括待删除目录的父目录的文件系统路径与待删除目录名1160。文件系统从接收的父目录文件系统路径中获取待删除目录的父目录,并识别父目录是否存在1161。在步骤1161,若父目录不存在,则文件系统向用户或应用指示出错1169,因为待删除的目录不存在。在步骤1161,若父目录存在,获取父目录的UUID,利用UUID访问KV存储设备,得到父目录内容1162。用待删除目录的目录名搜索步骤1162获得的父目录内容中的记录,来识别父目录内容中是否记录了同待删除目录的目录名关联的记录1163。如步骤1163未找到待删除的目录,向用户或文件系统指示待删除目录不存在1169。若步骤1163找到了待删除目录对应的记录,从记录中获取待删除目录的UUID,并用该UUID访问KV存储设备,以得到待删除目录的待删除目录内容1164。遍历待删除目录内容的各个记录,若待删除目录内容指示待删除目录为空例如,仅有对应待删除目录自身的记录与对应待删除目录父目录的记录,则通过待删除目录UUID访问KV存储设备以删除待删除目录内容,并更新待删除目录的父目录的内容,从中删除与待删除目录相关的记录1166。若待删除目录内容指示待删除目录还包括子目录和或文件,则删除每个子目录与文件1167。例如,为删除子目录,重复从步骤1160开始的流程;而为删除文件,实施图11B所示的流程。图11G展示了文件系统提供目录重命名服务的流程。为重命名目录,向文件系统提供待重命名目录的文件系统路径,包括待重命名目录的父目录的文件系统路径与待重命名目录名与新目录名1170。文件系统从接收的父目录文件系统路径中获取待重命名目录的父目录,并识别父目录是否存在1172。在步骤1172,若父目录不存在,则文件系统向用户或应用指示出错1179,因为待重命名的目录不存在。在步骤1172,若父目录存在,获取父目录的UUID,利用UUID访问KV存储设备,得到父目录内容1174。用待重命名目录的目录名搜索步骤1174获得的父目录内容中的记录,来识别父目录内容中是否记录了同待重命名目录的目录名关联的记录1176。如步骤1176未找到待重命名的目录,向用户或文件系统指示待重命名目录不存在1179。若步骤1176找到了待重命名目录对应的记录,修改该记录中的目录名为新目录名1178,即完成了目录重命名。对于文件重命名服务,以类似于图11G的方式实施。在步骤1176,若在父目录内容中找到了对应待重命名的文件的记录,修改该记录中的文件名为新文件名,即完成了文件重命名。图11H展示了文件系统提供列目录内容服务的流程。为列出目录内容,向文件系统提供待列出内容的目录称为目标目录的文件系统路径,包括目标目录的父目录的文件系统路径与目标目录的目录名1180。文件系统从接收的父目录文件系统路径中获取目标目录的父目录,并识别父目录是否存在1182。在步骤1182,若父目录不存在,则文件系统向用户或应用指示出错1189,因为目标目录不存在。在步骤1182,若父目录存在,获取父目录的UUID,利用UUID访问KV存储设备,得到父目录内容1184。用目标目录的目录名搜索步骤1184获得的父目录内容中的记录,来识别父目录内容中是否记录了同目标目录的目录名关联的记录1186。如步骤1186未找到目标目录,向用户或文件系统指示目标目录不存在1189。若步骤1186找到了目标目录对应的记录,获取目标目录的UUID,用目标目录的UUID访问KV存储设备得到目标目录内容,并遍历目标目录内容的各个记录,列出目标目录所包括的所有对象例如,子目录与文件。图12是根据本申请另一实施例的基于KV存储设备的文件系统的示意图。KV存储设备记录了键K与对应的值V。键是例如UUID,而值是文件内容、目录元数据内容或目录属性内容。例如,键UUID100对应的值是根目录的元数据内容,键UUID101对应的值是子目录1的元数据内容,UUID200对应的值是文件1的内容,而键UUID201对应的值是文件2的内容,键UUID101+P对应的值是子目录1的属性,UUID200对应的值是文件1的属性。根据图12的实施例,同一文件系统对象文件或目录的元数据内容与属性,由相关联的键索引,例如,用键UUID101索引子目录1的元数据内容,而用通过键UUID101附加指定后缀“P”得到的键索引子目录1的属性。从而,若已知子目录1对应的键,可得到用于访问子目录1的属性的键。图12还展示了示例的文件系统结构。文件系统的根目录是“”,其下包括子目录“dummy”与文件“dummy.txt”。子目录“dummy”中还包括对根目录下的文件“dummy.txt”的链接。图12中还展示了根目录元数据内容、子目录“dummy”的元数据内容、子目录“dummy”的属性内容与文件“dummy.txt”的属性内容。根目录的元数据内容,是在KV存储设备中记录的同例如键UUID100对应的值。根目录元数据内容包括多条记录,每条记录描述了以根目录为所在目录的所有文件与子目录的每个的键UUID。图12中的根目录元数据内容,包括4条记录,第一条记录第1行指示了该目录根目录的父目录的UUIDUUID100;第二条记录第2行指示了该目录根目录自己的UUIDUUID100。由于“根目录”没有父目录,在第一条记录中也记录了根目录自己的UUID。第三条记录第3行指示了根目录所包含的对象的UUIDUUID101第四条记录第4行指示了根目录所包含的对象的UUIDUUID200。根据图12的实施例的目录元数据中,仅记录UUID,而不记录其他信息。可以理解地,为根目录所包含的每个子目录以及每个文件,在根目录元数据内容中提供对应的记录。目录“dummy”的元数据内容,是在KV存储设备中记录的同例如键UUID101对应的值。目录元数据内容包括多条记录,每条记录描述了以该目录为所在目录的所有文件与子目录的每个的UUID。图12中的子目录“dummy”的元数据内容,包括3条记录,第一条记录第1行指示了该子目录子目录“dummy”的父目录的UUIDUUID100,即根目录的UUID;第二条记录第2行指示了该目录目录“dummy”自己的UUIDUUID101;第3条记录第3行指示了该目录所包含的对象的UUIDUUID201。可以理解地,目录“dummy”所包含的每个子目录以及每个文件,在目录元数据内容中都有对应的记录。目录“dummy”的目录属性内容,是在KV存储设备中记录的同例如键UUID101+P对应的值。目录属性内容,记录了自己的名字“dummy”,自己的类型是“目录”,自己的相关属性、创建日期、权限等。可选地,目录属性内容还记录了文件系统中指向自己的一个或多个链接所在的目录的UUIDUUID列表。可选地,在目录属性内容中,还记录自己所在的目录的名字。可选地,目录属性内容的各条目中无须记录对应的UUID,而通过联合查询目录元数据内容得到对应的UUID。例如,目录元数据内容中的记录,同目录属性内容中的条目按顺序一一对应,从而根据目录属性内容的记录的序号,访问目录元数据内容中的对应记录,以得到对应的UUID。根据图12所示的文件系统中,文件没有对应的元数据内容,文件有属性内容。文件“dummy.txt”的文件属性内容,是在KV存储设备中记录的同例如键UUID200+P对应的值。文件属性内容,记录了自己的名字“dummy.txt”,自己的类型是“文件”,自己的相关属性、创建日期、权限等。可选地,文件属性内容还记录了文件系统中指向自己的一个或多个链接所在的目录的UUIDUUID列表。依然可选地,在文件属性内容中,还记录自己所在的目录的名字。为从根据图12的实施例的文件系统读取文件,向文件系统提供待读取文件的文件系统路径,包括文件所在目录与文件名。文件系统从接收的文件系统路径中获取文件所在目录,并识别目录是否存在。为了识别目录是否存在,文件系统获取目录的父目录的元数据内容,从父目录的元数据内容获取该父目录所包含的所有对象的UUID。并对每个UUID生成对应的对象的属性内容的键UUID+P,用UUID+P访问KV存储设备得到对应对象的属性内容,从属性内容中识别该属性内容,是否是待识别存在性的目录的属性内容。如果找到了待识别存在性的目录的属性内容,则确定目录存在。若遍历了父目录包含的所有对象的属性内容,依然找不到待识别存在性的目录,则确定目录不存在。以及从根目录开始,通过逐级查找文件所在目录的各级父目录所包含的对象的属性内容,来识别待访问目录的各级父目录是否存在。根目录的UUID是例如已知的。若待访问的文件所在的目录不存在,则文件系统向用户或应用指示出错,因为待访问的文件不存在。若待访问的文件所在的目录存在,获取目录所包含的所有对象的UUID,并对每个UUID生成对应的对象的属性内容的键UUID+P,用UUID+P访问KV存储设备得到对应对象的属性内容,从属性内容中识别该属性内容是否是待访问文件的属性内容。若找到了待访问文件的属性内容,则得到待访问文件的UUID,从而根据待访问文件的UUID访问KV存储设备,以读出待读出文件的内容。为从根据图12的实施例的文件系统删除文件,向文件系统提供待删除文件的文件系统路径,包括文件所在目录与文件名。文件系统从接收的文件系统路径中获取文件所在目录,并识别目录是否存在。若待访问的文件所在的目录不存在,则文件系统向用户或应用指示出错,因为待访问的文件不存在。若待访问的文件所在的目录存在,获取目录所包含的所有对象的UUID,并对每个UUID生成对应的对象的属性内容的键UUID+P,用UUID+P访问KV存储设备得到对应对象的属性内容,从属性内容中识别该属性内容是否是待删除文件的属性内容。若找到了待删除文件的属性内容,则得到待删除文件的UUID,从而根据待删除文件的UUID访问KV存储设备,以删除该文件的内容。为从根据图12的实施例的文件系统重命名目录,向文件系统提供待重命名目录的文件系统路径,包括待重命名目录所在目录父目录、待重命名目录的目录名与新目录名。文件系统从接收的文件系统路径中获取父目录,并识别父目录是否存在。若父目录不存在,则文件系统向用户或应用指示出错。若父目录存在,获取父目录所包含的所有对象的UUID,并对每个UUID生成对应的对象的属性内容的键UUID+P,用UUID+P访问KV存储设备得到对应对象的属性内容,从属性内容中识别该属性内容是否是待重命名目录的属性内容。若找到了待重命名目录的属性内容,则将其中记录的文件名修改为新文件名,即完成目录重命名操作。根据上面描述的实施例,所属领域技术人员将容易得到根据图12的实施例的文件系统进行修改文件、创建链接、删除链接、创建目录、删除目录、列出目录内容等操作的实施方式。图13A是根据本申请又一实施例的基于逻辑键的KV存储设备的示意图。根据图13A的实施例,对根据图12的实施例的文件系统进行加速。参看图13A,运行文件系统的主机同KV存储设备相耦合。KV存储设备提供服务,其中键为例如UUID,而值为例如根据图12的实施例的文件内容、目录元数据内容、目录属性内容或文件属性内容。运行文件系统的主机中还维护排序表,排序表中记录了文件系统中存在的任何文件系统路径同用于KV存储设备的键例如,UUID的对应关系。通过排序表,将作为逻辑键的文件系统路径映射为键UUID。从而为访问文件系统的文件内容、目录元数据内容、目录属性内容或文件属性内容,根据文件系统路径,从排序表中得以快速查询到文件系统路径对应的UUID,以省去遍历文件系统,寻找待访问的目标对象所在目录,并进一步遍历该目录得到待访问对象的UUID的过程。根据待访问对象的文件系统路径,也能便捷地获得待访问对象所在目录的文件系统路径,而从排序表中也能快速获得对应待访问对象所在目录的文件系统路径的UUID。排序表由运行文件系统的主机维护。文件系统根据获取的UUID,再访问KV存储设备,以访问访问文件系统的文件内容、目录属性内容或文件属性内容。进一步地,对于引起修改文件系统路径的操作例如,文件或目录的重命名,对排序表设置标志例如,加锁,以指示同被修改的文件或目录对应的排序表节点待被修改,以及还指示待被修改的目录的所有子目录对应的排序表节点。在访问排序表时,若被访问的节点被设置了标志,则根据图12的实施例所示的方式根据待访问的文件系统路径遍历文件系统。以及还更新排序表,以反应对文件系统路径的修改。响应于排序表更新完成,撤销对排序表所设置的标志。有利的是以前缀树存储加速表,从而有利于对加速表节点的修改。图13B是根据本申请另一实施例的基于逻辑键的KV存储设备的示意图。根据图13B的实施例,对根据图12的实施例的文件系统进行加速。在一个实施方式中,KV存储设备提供可由主机的文件系统访问的排序表服务,将文件系统路径作为访问KV存储系统的键或排序表服务的键,而将加速表中的节点的UUID作为KV存储系统的值或排序表服务提供的对应于文件系统路径的值。运行于主机的文件系统通过KV存储设备访问排序表。为访问文件系统的文件内容、目录元数据内容、目录属性内容或文件属性内容,向KV存储设备的排序表服务提供文件系统路径,KV存储设备的排序表服务输出文件系统路径对应的UUID作为响应,从而以省去遍历文件系统,寻找待访问的目标对象所在目录,并进一步遍历该目录得到待访问对象的UUID的过程。运行于主机的文件系统基于获取的UUID,按照图12所示的实施例提供的方式访问文件内容、目录元数据内容、目录属性内容或文件属性内容,以提供文件系统服务。进一步地,响应于创建文件或创建目录的操作,文件系统还向排序表中添加条目,添加的条目记录所创建的文件或目录的文件系统路径同新分配的UUID的对应关系。可由文件系统或KV存储设备分配UUID。进一步地,响应于写文件的操作,文件系统从排序表获取同文件系统路径对应的UUID,更新KV存储设备中的同UUID对应的值。以及可选地,还更新KV存储设备中记录的同例如“UUID+P”对应的被更新文件的属性信息。依然进一步地,响应于修改文件名的操作,文件系统还修改排序表中的条目,以从排序表中找到修改前的文件名对应的文件系统路径对应的条目,并更新其文件系统路径。依然进一步地,响应于修改目录名的操作,文件系统修改排序表中的同被修改的目录对应的条目,还修改被修改目录所包含的所有对象在排序表中的条目。例如,对于根目录的子目录“dummy”,其完整路径为“dummy”,其包括子目录“dummy1”与文件“dummy1.txt”,响应于子目录“dummy”的名字被修改为“dummyNew”,除了要修改其自身在排序表中的记录,还修改子目录“dummy1”与文件“dummy1.txt”在排序表中的记录,因为其文件系统路径发生了变化。由于排序表待修改的条目较多,需要一段时间处理,在修改完成前,排序表不响应对被修改条目的访问。例如,响应于要修改排序表的条目,对排序表加锁,或者对排序表的被修改的条目加锁,从而阻止对排序表的正被修改的条目的访问。而文件系统则根据图12的实施例所示的方式根据待访问的文件系统路径遍历文件系统的目录元数据内容与目录属性内容来获取同文件系统路径对应的UUID。在又一种实施方式中,KV存储设备按形式提供排序表服务。排序表的条目的文件系统路径作为访问KV存储系统的键,而排序表中的条目的UUID作为KV存储系统的值。依然可选地,KV存储设备按用前缀树实现排序表。根据本申请的实施例还提供了一种固态存储设备,该设备包括控制器与非易失存储器芯片,其中,控制器执行本申请实施例提供的任意一种处理方法。根据本申请的实施例还提供了一种存储在可读介质上的程序,当被固态存储设备的控制器运行时,使得固态存储设备执行根据本申请实施例提供的任意一种处理方法。尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

权利要求:1.一种用于KV存储设备的方法,包括:接收用于访问KV存储设备的逻辑键LK;获取同所述逻辑键LK对应的物理键PK;查询地址转换表得到同所述物理键PK对应的地址,在所述地址存储了同所述逻辑键LK对应的值V。2.根据权利要求1所述的方法,其中查询所述KV存储设备的第一表,以获取同所述逻辑键LK对应的物理键PK。3.根据权利要求1或2所述的方法,其中对所述物理键PK进行哈希计算得到哈希键HPK;以哈希键HKP为索引访问哈希表得到同所述物理键PK对应的地址。4.根据权利要求1-3之一所述的方法,其中响应于向所述KV存储设备写入同所述逻辑键LK对应的值V,若第一表中找不到同所述逻辑键LK对应的物理键PK,为所述逻辑键分配物理键PK,在第一表中添加条目以记录所述逻辑键LK对应于所分配的物理键PK,以及为所分配的物理键PK分配地址,并在地址转换表中添加条目以记录所述物理键PK与被分配的地址,以及在被分配的地址处写入同所述逻辑键KV对应的值V。5.根据权利要求4所述的方法,其中响应于向所述KV存储设备指示修改所述逻辑键LK,在第一表中找到同所述逻辑键LK对应的条目,修改该条目使其记录修改后的新逻辑键。6.根据权利要求3-5之一所述的方法,其中响应于向所述KV存储设备指示复制同所述逻辑键KV的值V,在第一表中找到同所述逻辑键KV对应的第一物理键PK,在第一表中添加条目以记录新逻辑键对应于所述第一物理键PK。7.一种用于KV存储设备的方法,包括:接收用于访问KV存储设备的键K;获取用于所述键K的排序索引;根据排序索引从排序表获取第一哈希表;对所述键进行哈希计算得到哈希键HK;根据所述哈希键的第一部分HK1查询第一哈希表;若所述哈希键的第一部分HK1在第一哈希表中对应的条目记录了读操作要访问的值V的物理地址,根据所述物理地址从存储介质读取第一数据。8.根据权利要求7所述的方法,还包括:为向所述KV存储设备写入同键K对应的值V,若所述排序表中不存在所述排序索引,向所述排序表添加条目以记录所述排序索引与新创建的第一哈希表的地址,在新创建的第一哈希表中记录所述哈希键的第一部分HK1与为记录所述值V而分配的逻辑地址或物理地址。9.根据权利要求7或8所述的方法,还包括:响应于向所述KV存储设备指示读取键范围K_R的所有值,获取用于所述键范围K_R的排序索引;根据排序索引从排序表获取属于所述键范围K_R的一个或多个第一哈希表;对于每个第一哈希表,获取第一哈希表的每个条目,若若条目记录了要访问的值V的物理地址,根据所述物理地址从存储介质读取第一数据。10.一种KV存储设备,包括控制部件与非易失存储介质,所述控制部件执行根据权利要求1-9之一所述的方法。

百度查询: 北京忆恒创源科技股份有限公司 使用KV存储设备提供文件系统的方法及其文件系统

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。