CN117785018A - 键值存储方法及系统 - Google Patents

键值存储方法及系统 Download PDF

Info

Publication number
CN117785018A
CN117785018A CN202211158749.XA CN202211158749A CN117785018A CN 117785018 A CN117785018 A CN 117785018A CN 202211158749 A CN202211158749 A CN 202211158749A CN 117785018 A CN117785018 A CN 117785018A
Authority
CN
China
Prior art keywords
value
chip
memory chip
key
storage
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
CN202211158749.XA
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.)
XFusion Digital Technologies Co Ltd
Original Assignee
XFusion Digital 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 XFusion Digital Technologies Co Ltd filed Critical XFusion Digital Technologies Co Ltd
Priority to CN202211158749.XA priority Critical patent/CN117785018A/zh
Priority to PCT/CN2023/115601 priority patent/WO2024060944A1/zh
Publication of CN117785018A publication Critical patent/CN117785018A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本申请提供一种键值存储方法及系统。应用于键值固态硬盘,键值固态硬盘包括第一存储芯片和第二存储芯片;第一存储芯片为存储级内存SCM芯片;第二存储芯片为闪存芯片。该方法包括:接收写入指令,写入指令包括第一键和第一值;查询元数据中是否包含第一键;若元数据中不存在第一键,则将第一键写入第一存储芯片;将第一值写入第二存储芯片,并更新元数据。本申请将键和值分开存储于不同的芯片,优化了数据布局,有利于缓解写入放大问题,提高并发访问效率,改善使用性能,并延长使用寿命。

Description

键值存储方法及系统
技术领域
本申请涉及存储技术领域,尤其涉及一种键值存储方法及系统。
背景技术
键值存储系统在整个存储生态系统中应用非常广泛。目前存在一种基于键值固态硬盘(Key Value Solid State Drive,简称KVSSD)建立的新型的键值存储系统。其中,键(Key)和值(Value)连续存储在KVSSD内的闪存芯片内。
上述数据存储方式会影响KVSSD的使用性能,例如易造成写入放大问题、并发访问性能低。因此,如何改善KVSSD的使用性能是需要解决的问题。
发明内容
本申请提供一种键值存储方法及系统,用以改善KVSSD的使用性能。
根据一些实施例,本申请第一方面提供一种键值存储方法,应用于键值固态硬盘,键值固态硬盘包括第一存储芯片和第二存储芯片;第一存储芯片为存储级内存SCM芯片;第二存储芯片为闪存芯片;存储方法包括:接收写入指令,写入指令包括第一键和第一值;查询元数据中是否包含第一键;若元数据中不存在第一键,则将第一键写入第一存储芯片;将第一值写入第二存储芯片,并更新元数据。
上述采用将键存储于SCM芯片中、将值存储于闪存芯片的数据布局方法。由于键与值分开存储于不同的芯片中,可以同时通过对应的芯片接口访问键和值,有利于提高并发访问性能,发挥KVSSD大带宽的优势。进一步地,将键存储于SCM芯片中无需进行页(page)粒度对齐操作,SCM芯片具有可字寻址的特点,相较于闪存芯片具有更小的读取单位,因此一定程度上可以提高访问键的速度。
一些实施例中,将第一值写入第二存储芯片,包括:根据第一值的属性,自第一存储芯片和第二存储芯片中选择一个作为目标存储芯片以写入第一值,并更新元数据;其中,第一值的属性包括以下至少一项:第一值的长度、第一值的更新频率。
上述采用将值选择性地存储于SCM芯片或闪存芯片的数据布局方法。结合值的属性、SCM芯片和闪存芯片的特性,进行合理的数据存储,充分发挥各芯片的优势,改善固态硬盘的性能。其中,若键和值均存储于SCM芯片中,一方面,无需进行页(page)粒度对齐操作,SCM芯片支持覆盖写以及具有可字寻址的特点,比闪存芯片的读写速度更快;另一方面,SCM芯片的擦写寿命大于闪存芯片的擦写寿命,存储于SCM芯片可以有效减少保存至闪存芯片带来的擦写操作,延长闪存芯片使用寿命,进而延长键值固态硬盘的寿命。
一些实施例中,根据第一值的属性,自第一存储芯片和第二存储芯片中选择一个作为目标存储芯片以写入第一值,包括:若第一值的长度小于预设阈值,则选择第一存储芯片作为目标存储芯片以写入第一值;若第一值的长度大于或等于预设阈值,则选择第二存储芯片作为目标存储芯片以写入第一值。
上述结合值的长度属性、SCM芯片和闪存芯片的存储容量特性,进行合理的数据存储,充分发挥各芯片的优势,改善固态硬盘的性能。具体地,通常键值固态硬盘的闪存芯片可提供充裕的存储空间,则可选择将长度较大的第一值写入存储空间较大的闪存芯片。相应地,将长度较小的第一值写入存储容量较小的SCM芯片。
一些实施例中,根据第一值的属性,自第一存储芯片和第二存储芯片中选择一个作为目标存储芯片以写入第一值,包括:若第一值的更新频率大于或等于预设频率,则选择第一存储芯片作为目标存储芯片以写入第一值;若第一值的更新频率小于预设频率,则选择第二存储芯片作为目标存储芯片以写入第一值。
上述结合值的更新频率属性、SCM芯片和闪存芯片的使用寿命,进行合理的数据存储,充分发挥各芯片的优势,改善固态硬盘的性能。具体的,SCM芯片的擦写寿命大于闪存芯片的擦写寿命,因此可选择将更新频率较大的第一值写入SCM芯片。相应地,将更新频率较小的第一值写入闪存芯片。上述设置,有利于避免对闪存芯片的频繁擦写,有效延长闪存芯片的使用寿命。
一些实施例中,根据第一值的属性,自第一存储芯片和第二存储芯片中选择一个作为目标存储芯片以写入第一值,并更新元数据之前,还包括:若元数据中存在第一键,则根据元数据确定第一键对应的当前值的存储空间;处理当前值的存储空间以使当前值无效。
上述方法中,在更新过程中只需要对值进行更新,无需对已存在的第一键进行更新操作,有利于缓解写入放大问题,延长KVSSD的使用寿命。
一些实施例中,处理当前值的存储空间以使当前值无效,包括:若当前值的存储空间为第一存储芯片,则释放当前值的存储空间以使当前值被删除;其中,被释放的当前值的存储空间为可写入状态;若当前值的存储空间为第二存储芯片,则为当前值的存储空间添加无效标识以使当前值无效;其中,被添加无效标识的当前值的存储空间为可写入状态。
上述提供了在值的更新过程中对待更新的当前值的处理方法。对于SCM芯片,可直接清空当前值的存储空间,变为可写入状态。结合闪存芯片中需要写前擦除的特点,将待更新的当前值的存储空间标记为无效,在后续的垃圾回收操作中被擦除或在写入其他数据前进行擦除,变为可写入状态。
一些实施例中,方法还包括:若当前值的存储空间为第一存储芯片,且当前值的长度不小于第一值的长度,则将第一值写入第一存储芯片,并且第一值的存储空间覆盖当前值的存储空间。
上述结合SCM芯片支持覆盖写入的特性,提供了第一值的更新方法。若当前值的尺寸大于等于第一值,则可将第一值直接写入当前值的存储空间。无需进行目标存储芯片的判断步骤,以及无需重新分配新的存储空间,可提高写入速度。
一些实施例中,方法还包括:接收删除指令,删除指令中包含第一键;确定元数据中包含第一键;根据第一值的存储地址,确定第一值的存储空间;若第一值存储于第一存储芯片,则释放第一值的存储空间;若第一值存储于第二存储芯片,则将第一值的存储空间标记为失效;释放第一键的存储空间;更新元数据。
上述方法中,若第一值存储在SCM芯片,则执行删除指令只需要访问到SCM芯片就可以完成,无需访问闪存芯片。访问SCM芯片的速度快于访问闪存芯片的速度。
一些实施例中,元数据存储于第一存储芯片,固态硬盘还包括动态存储器;存储方法还包括:在上电后,自第一存储芯片读取元数据并写入动态存储器,用于在动态存储器中对元数据进行查询及更新。
上述方法中,在未上电时将元数据存储于非易失性存储介质中避免数据丢失;在上电后,将元数据读取至动态存储器中执行频繁访问。一方面,访问动态存储器的速度快于访问SCM芯片的速度。另一方面,直接访问存储于SCM芯片的元数据会影响到对存储于SCM芯片的键或值的访问性能。
根据一些实施例,本申请第二方面提供一种键值存储系统,包括:主机和键值固态硬盘,键值固态硬盘包括控制器、第一存储芯片、第二存储芯片;第一存储芯片为存储级内存SCM芯片;第二存储芯片为闪存芯片;控制器,与主机通信连接,用于接收主机发送的写入指令,写入指令包括第一键和第一值;控制器,用于查询元数据中是否包含第一键;控制器,用于若元数据中不存在第一键,则将第一键写入第一存储芯片,以及根据第一值的属性,自第一存储芯片和第二存储芯片中选择一个作为目标存储芯片以写入第一值,并更新元数据。
本申请提供的键值存储方法及系统,应用于键值固态硬盘,键值固态硬盘包括第一存储芯片和第二存储芯片;第一存储芯片为存储级内存SCM)芯片;第二存储芯片为闪存芯片。该方法包括:接收写入指令,写入指令包括第一键和第一值;查询元数据中是否包含第一键;若元数据中不存在第一键,则将第一键写入第一存储芯片;将第一值写入第二存储芯片,并更新元数据。本申请将键和值分开存储于不同的芯片,优化了数据布局,有利于缓解写入放大问题,提高并发访问效率,改善使用性能,并延长使用寿命。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为一种基于块固态硬盘的KV存储系统的结构示意图;
图2为一种基于键值固态硬盘的KV存储系统的结构示意图;
图3为一种典型的键值数据布局示意图;
图4为本申请实施例提供的一种键值存储系统的结构示意图;
图5为本申请实施例提供的一种键值存储方法的流程图一;
图6为本申请实施例提供的一种键值存储方法的流程图二;
图7为本申请实施例提供的一种键值存储方法的流程图三;
图8为本申请实施例提供的一种键值存储方法的流程图四;
图9为本申请实施例提供的一种键值存储方法的流程图五;
图10为本申请实施例提供的一种键值存储方法的流程图六;
图11为本申请实施例提供的一种键值存储方法的流程图七;
图12为本申请实施例提供的一种键值存储系统的结构示意图;
图13为本申请实施例提供的一种键值存储装置的结构示意图;
图14为本申请实施例提供的一种电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与本申请的一些方面相一致的装置和方法的例子。
键值(Key-Value,简称KV)对是数据库中简单的组织形式。键值对中的键(key)指示用于查找用户写入的数据的物理存储地址的关键字,键值对中的值(value)用于指示该数据的物理存储地址,或者,键值对中的值是数据本身。在用户读数据的过程中,需要先查找到待读取数据的键,然后根据待读取数据的键找到该键指示的值,根据该值得到待读取数据,从而完成数据的读取操作。
键值(Key-Value,简称KV)存储系统是指以key-value方式存储的数据存储系统。KV存储系统在整个存储生态系统中应用非常广泛。图1为一种基于块固态硬盘的KV存储系统的结构示意图,包括主机(Host)和块固态硬盘(Block Solid State Drive)。其中,主机可以是具备写数据或读数据的需求且与块固态硬盘通信的任何系统和/或装置。例如,主机可以是计算装置、个人计算机、便携式计算机、工作站、服务器、路由器、网络装置、个人数字助理、数字相机、数字电话、处理器、操作系统或其组合。
在实际应用中,图1所示的主机和块固态硬盘可以集成在一个存储设备中,如:主机包括块固态硬盘;或者,主机和块固态硬盘位于相互独立的两个设备中,如:块固态硬盘相对于主机是远程的,主机通过无线通信链路与块固态硬盘通信。图1对主机和块固态硬盘的位置关系不做限定。
如图1所示,主机包括:KV存储基础设施层(KV Storage Infrastructure)、KV应用程序编程接口(Key Value API),以及KV应用程序编程接口至块固态硬盘之间的软件栈。图1所示的软件栈包括:KV存储引擎层(KV Storage Engine)、可移植操作系统接口(POSIXAPI)、文件系统层(Fil System)、块客户端协议接口(Block Interface)和块设备驱动层(Block Device Driver)。块固态硬盘包括块设备协议接口和块设备(Block Device),其中块设备协议接口遵循的传输协议包括AHIC(Advanced Host Controller Interface,高级主机控制器接口)协议和NMVe(Non-Volatile Memory Express,非易失性存储器规范)协议。
图1所示的KV存储系统的访问过程如下:应用程序的开发者或技术人员,通过KV存储基础设施层下发的命令,依次经过KV应用程序编程接口、KV存储引擎层、可移植操作系统接口、文件系统层、块客户端协议接口和块设备驱动层向下传递,通过块固态硬盘的块设备协议接口访问到块设备。之后,块设备的数据或反馈信息依次向上传递到KV存储基础设施层。可以看出开发者或技术人员通过主机访问块固态硬盘的信息交互过程中经历的软件栈非常厚重。这些软件层十分影响对KV数据的访问性能。
图2为一种基于键值固态硬盘的KV存储系统的结构示意图,包括主机(Host)和KV固态硬盘。其中,主机可以是具备写数据或读数据的需求且与KV固态硬盘通信的任何系统和/或装置。例如,主机可以是计算装置、个人计算机、便携式计算机、工作站、服务器、路由器、网络装置、个人数字助理、数字相机、数字电话、处理器、操作系统或其组合。
在实际应用中,图2所示的主机和KV固态硬盘可以集成在一个存储设备中,如:主机包括KV固态硬盘;或者,主机和KV固态硬盘位于相互独立的两个设备中,如:KV固态硬盘相对于主机是远程的,主机通过无线通信链路与KV固态硬盘通信。图2对主机和块固态硬盘的位置关系不做限定。
如图2所示,主机包括:KV存储基础设施层(KV Storage Infrastructure)、KV应用程序编程接口(Key Value API)以及KV应用程序编程接口至KV固态硬盘之间的软件栈。图2所示的软件栈包括:、KV库(Thin KV Library)、KV客户端协议接口(KV Interface)和KV设备驱动层(KV Device Drive)。KV固态硬盘包括KV设备协议接口和KV设备。
图2所示的KV存储系统相较于图1,打薄了主机的软件栈。图2所示的KV存储系统的访问过程如下:应用程序的开发者或技术人员,通过KV存储基础设施层下发的命令,依次经过KV应用程序编程接口、KV库、KV客户端协议接口和KV设备驱动层向下传递,通过KV固态硬盘的KV设备协议接口访问到KV设备。之后,KV设备的数据或反馈信息依次向上传递到KV存储基础设施层。
图3为一种典型的键值数据布局示意图,元数据、键和值连续存储于闪存芯片(如图3所示的存储容量为32KB的Nand page)。基于上述数据存储方式,指令的执行流程如下:根据KV指令中的key信息和/或value信息,查询哈希表(hash key),获得索引地址;基于索引地址访问存储在闪存芯片中的键和值。其中,索引地址为物理地址(physical location)或物理地址偏移值(physical offset)。
在实际应用过程中,该数据存储方式会影响KVSSD的使用性能。具体的,闪存芯片的读写特性为擦除后再写入,即芯片上的数据不能原地更新。当更新value数据时,除了对value数据进行读出、修改、写入操作外,还会对key数据执行读出、写入操作,此为无效操作,也易造成写入放大(Write amplification,简称WA)。又例如当上层应用对key、value数据并发访问时,由于key、value存储于同一芯片,同一芯片对应同一个访问接口,所以实际访问过程为依次访问key和value,无法同时访问key和value,因此无法发挥KVSSD大带宽的性能。因此,如何改善KVSSD的使用性能是需要解决的问题。
这里需要说明的是,写入放大是指实际写入的物理数据量大于用户写入数据量。固态硬盘的工作特性是先擦除固态硬盘上已有的数据,再写入新的数据。由于写入与擦除的单位大小不匹配,导致写入放大。例如,写入的最小单位为页(page),每个page的大小为4KB。擦除的最小单位为Block,每个Block由64或128个page组成。举例说明,若仅写入一个page的新数据,而单个Block中没有空余的page,且存在可以擦除的失效数据,则需要先把一个Block中的有效数据迁移写入至预留空间(Over-provisioning,简称OP)或缓存中,再擦除该Block,再将新数据和有效数据一起写入该Block。上述操作期间,实际写入的物理数据量除了要写入的一个page的新数据之外,还包括该Block中原本有效数据的写入,使得实际写入的物理数据量大于用户写入数据量,增加的写入也会消耗固态硬盘的带宽,降低随机写入性能,以及影响SSD的寿命。
进一步地,预留空间为存在于固态硬盘内部由主控芯片控制的隐藏空间,用户不可操作。这部分空间就是用于主控各种优化机制的操作,诸如垃圾回收(GarbageCollection,简称GC),磨损均衡等。预留空间越大可供替换的区块就越多,硬盘寿命就越长,同时浪费的存储空间也越大。
本申请提供的键值存储方法及系统,将键和值分开存储于不同的芯片,优化了数据布局,有利于缓解写入放大问题,提高并发访问效率,改善使用性能,并延长使用寿命。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
实施例一
图4为本申请实施例提供的一种键值存储系统的结构示意图,包括主机和键值固态硬盘。其中,键值固态硬盘,包括控制器、第一存储芯片、第二存储芯片和动态存储器(Dynamic Random Access Memory,简称DRAM)。第一存储芯片为存储级内存芯片(Storage-Class-Memory,简称SCM),以下简称“SCM芯片”;第二存储芯片为闪存芯片。
主机可以是具备写数据或读数据的需求且与KV固态硬盘通信的任何系统和/或装置。例如,主机可以是计算装置、个人计算机、便携式计算机、工作站、服务器、路由器、网络装置、个人数字助理、数字相机、数字电话、处理器、操作系统或其组合。
主机与键值固态硬盘的控制器连接,本实施例中,控制器可以用于接收来自主机的写入指令、删除指令、查询指令等;以及基于这些指令对第一存储芯片、第二存储芯片和动态存储器执行相应的操作。
本实施例中,闪存芯片以Nand闪存芯片为例。进一步地,Nand闪存芯片大致包括以下四类:单存储单元存储4位比特数据的四层式存储单元(quad-level cell,简称QLC)芯片;单存储单元存储3位比特数据的三层式存储单元(triple-level cell,简称TLC)芯片;单存储单元存储2位比特数据的双层式存储单元(multi-level cell,简称MLC)芯片;也单存储单元存储1位比特数据的单层式存储单元(single-level cell,简称SLC)芯片。上述四类Nand闪存芯片的写时延、擦除时延、擦写寿命等特性存在差异,例如SLC芯片、MLC芯片、TLC芯片、QLC芯片的读时延、写时延和擦除时延均依次递增,而擦写寿命逐渐降低。
本实施例中,SCM芯片大致包括以下四类:相变存储器(Phase-change memory,简称PCM);阻抗随机存储器(Resistive random-access memory,简称ReRAM);磁性随机存储器(Magnetic Random Access Memory,简称MRAM);碳纳米管随机存储器(Nantero’s CNTRandom Access Memory,简称NRAM)。
进一步地,将SCM芯片和Nand闪存芯片的特性进行比较:SCM芯片同时具备持久化和快速字节级访问的特点,SCM介质的访问时延普遍小于1μs,比Nand闪存芯片可以快2-3个数量级,读写时也没有Nand闪存芯片写前擦除的约束,操作过程更简单;同时,SCM芯片的擦写寿命可以达到108至1012次,要高于闪存芯片的擦写寿命(可以达到有103至105次)。另外,SCM介质在数据保持能力方面的表现也优于Nand闪存芯片。
图5为本申请实施例提供的一种键值存储方法的流程图一。本实施例提供的键值数据存储方法应用于如图4所示键值固态硬盘。该方法的执行主体可以为键值固态硬盘内的控制器。
如图5所示,该方法可以包括以下步骤:
S100、接收写入指令,写入指令包括第一键和第一值;
S200、查询元数据中是否包含第一键;
S300、若元数据中不存在第一键,则将第一键写入第一存储芯片,并执行步骤S500;
S500、将第一值写入第二存储芯片,并更新元数据。
其中,元数据用于记录键、键的存储地址、键对应的值的存储地址和键对应的值的属性四者之间的映射关系;键的存储地址用于指示键在第一存储芯片的存储空间;值的存储地址用于指示值在第一存储芯片或第二存储芯片的存储空间。
一种可行的实施方式中,元数据存储于闪存芯片中,执行步骤S200时,控制器通过访问闪存芯片查询元数据。另一种可行的实施方式中,元数据存储于SCM芯片中,执行步骤S200时,控制器通过访问SCM芯片查询元数据。由于元数据可能会被频繁的更新,可以选择将元数据存储于SCM芯片中,以避免存储于闪存芯片带来的擦写操作,延长闪存芯片的使用寿命。
又一种可行的实施方式中,没有上电时,元数据存储于SCM芯片或闪存芯片中,在上电后元数据被读取至图4所示的DRAM中,执行步骤S200时,控制器通过访问DRAM查询元数据;进一步地,步骤S500中更新元数据的操作也在DRAM中进行,有利于减少对SCM芯片的擦写操作。另外,访问DRAM的速度快于访问SCM芯片的速度,因此一定程度上会提高访问性能。
进一步地,步骤S100中,控制器接收主机发送的写入指令。写入指令例如为PUT(key1,value1),包括第一键key1和第一值value1。在接收到写入指令后,通过查询元数据,确定第一键是否已存在。若元数据中没有记录第一键,则表明第一键和第一值均为新写入的数据。
将第一键写入第一存储芯片(具体为SCM芯片),与将键存储在闪存芯片中相比,不用进行页(page)粒度对齐,避免造成Nand闪存空间碎片。进一步地,通过内存总线(memorybus)访问SCM芯片,具有更快的读写速度。SCM芯片相较于闪存芯片具有更小的对齐粒度和更小的读写单位,一次读取或写入SCM芯片的读取或写入时长是百纳秒级别,Nand闪存芯片的读取或写入时长是微秒级别,因此将键存储在SCM芯片中,读写速度更快。另外,SCM芯片的擦写寿命大于闪存芯片的擦写寿命,存储于SCM芯片可以有效减少保存至闪存芯片带来的擦写操作,延长闪存芯片使用寿命,进而延长键值固态硬盘的寿命。
关于页粒度对齐:闪存芯片在物理层面上划分有扇区,一个扇区即为最小写入单元(以4KB为例),当实际写入4KB的数据时,被分配的逻辑层面上4KB大小的存储空间与物理层面上的一个扇区是不对齐的,因此4KB数据被存储在两个扇区上,对应的,操作系统实际执行了两次写入操作,会降低写入效率。页粒度对齐用于提高读写效率。
关于闪存空间碎片:向闪存芯片中每写入一次数据,都要进行页粒度对齐操作,会存在一些为了页粒度对齐而补充的无效数据。假设写入3KB的数据,为了页粒度对齐,会补充1KB无效数据。这些无效数据所占据的存储空间就称为空间碎片,空间碎片越多,闪存芯片的存储空间利用率越低。
进一步地,步骤S500中更新元数据包括在元数据中添加新写入的第一键的相关信息,例如表征第一键的标识、第一键的存储地址;以及,添加新写入的第一值的相关信息,例如第一值的存储位置、第一值的长度;其中,元数据还记录有第一键与第一值的映射关系。其中,元数据可以为哈希表、有序数组、二叉树等索引模型。
本实施例中,将键存储于SCM芯片中、将值存储于闪存芯片,由于键与值分开存储于不同的芯片中,可以同时通过对应的芯片接口同时访问键和值,实现并发访问,发挥键值固态硬盘大带宽的优势。
一些实施例中,步骤S500将第一值写入第二存储芯片,并更新元数据,具体包括:S510、根据第一值的属性,自第一存储芯片和第二存储芯片中选择一个作为目标存储芯片以写入第一值,并更新元数据,其中,第一值的属性包括以下至少一项:第一值的长度、第一值的更新频率。
本实施例中,结合值的属性、SCM芯片和闪存芯片的特性,进行合理的数据存储,可以将值存储于闪存芯片,也可以将值存储于SCM芯片,充分发挥各芯片的优势,改善固态硬盘的性能。
其中,若键和值均存储于SCM芯片中,一方面,无需进行页(page)粒度对齐操作,避免造成Nand闪存空间碎片。进一步地,通过内存总线(memory bus)访问SCM芯片,具有更快的读写速度。SCM芯片相较于闪存芯片具有更小的对齐粒度和更小的读写单位,一次读取或写入SCM芯片的读取或写入时长是百纳秒级别,Nand闪存芯片的读取或写入时长是微秒级别,因此将键和值均存储在SCM芯片中,读写速度更快。另外,SCM芯片的擦写寿命大于闪存芯片的擦写寿命,存储于SCM芯片可以有效减少保存至闪存芯片带来的擦写操作,延长闪存芯片使用寿命,进而延长键值固态硬盘的寿命。
在上述实施例的基础上,以第一值的长度作为判定将值存储于SCM芯片或闪存芯片的依据。步骤S510中,根据第一值的属性,自第一存储芯片和第二存储芯片中选择一个作为目标存储芯片以写入第一值,具体包括:若第一值的长度小于预设阈值,则选择第一存储芯片作为目标存储芯片以写入第一值;若第一值的长度大于或等于预设阈值,则选择第二存储芯片作为目标存储芯片以写入第一值。
具体的,由于工艺限制,键值固态硬盘中SCM芯片的存储空间低于闪存芯片的存储空间,并且,SCM芯片的成本高于闪存芯片的成本。因此,可选择将长度较大的第一值写入存储空间较大的闪存芯片,将长度较小的第一值写入存储空间较小的SCM芯片。
可选的,预设阈值的取值可以根据键值固态硬盘可能要写入的值的长度来确定,以实现例如80%的第一值写入到闪存芯片中,20%的第一值写入到SCM芯片中;或者,使例如90%的第一值写入到闪存芯片中,10%的第一值写入到SCM芯片中。实际应用过程中,可根据键值固态硬盘中闪存芯片和SCM芯片所能提供的存储容量确定预设阈值的取值,避免出现SCM芯片存储空间不足的情况。
一些实施例中,第一值以追加写的方式写入闪存芯片中的采用分区存储(zone)管理的存储空间,其容量为block的整数倍。分区存储(zone)管理可以实现将不同应用程序的数据存储至特定的分区。其中,追加写的实现方法可参照相关技术。
举例说明,假设固态硬盘存储有三个文件,分别为文件A、文件B和文件C,每个文件包含多个数据。若不采用zone管理方式,则三个文件的多个数据是随机写入的,会出现一个block的多个page存储的数据属于不同的文件。例如一个block上既有文件A的数据又有文件B的数据。这里需要说明的是,键值固态硬盘的硬盘的特点是写入单位为page,擦除单位为block(通常64个或128个page组成一个block),因此写入单元为擦除单位不匹配。因此,当删除文件C时,其对应的多个数据分布在不同的block的page上,也就是说,一个block上既存在待清理的文件C的无效数据,也存在需要保留的文件B和/或文件A的有效数据。那么在垃圾回收时,需要将block中的有效数据移动到预留空间中,才可以擦除该block。频繁的擦写会缩短键值固态硬盘的寿命。
若采用zone管理方式,则同一个文件的多个数据采用追加写入的方式写入zone空间中。这里需要说明的是,每个zone空间均存储同一个文件的数据。其中,当一个zone空间不足以存储该文件的数据时,则写入第二个zone空间,以此类推,同一个文件的多个数据可存储于多个zone空间内。当删除其中一个文件时,则该文件对应的zone空间存储的数据均为无效数据。由于zone空间是block的整数倍,也就是说zone空间是擦除单位的整数倍。因此无需预留空间进行有效数据的存放,无需进行垃圾回收操作,进而可减少擦写次数,有效延长使用寿命。
一些实施例中,以第一值的更新频率作为判定将值存储于SCM芯片或闪存芯片的依据。步骤S510中,根据第一值的属性,自第一存储芯片和第二存储芯片中选择一个作为目标存储芯片以写入第一值,包括:若第一值的更新频率大于或等于预设频率,则选择第一存储芯片作为目标存储芯片以写入第一值;若第一值的更新频率小于预设频率,则选择第二存储芯片作为目标存储芯片以写入第一值。
具体的,SCM芯片的擦写寿命大于闪存芯片的擦写寿命,可将更新频率较小的第一值写入闪存芯片;将更新频率较大的第一值写入SCM芯片,能够避免对闪存芯片的频繁擦写,可有效延长闪存芯片的使用寿命。
其中,更新频率为预设时间段内与第一键对应的值的更新次数。可选的,每次更新与第一键对应的值时,控制器均将更新次数加一。预设频率的取值可以根据键值固态硬盘写入的值的更新频率来调节,以实现例如80%的第一值写入到闪存芯片中,20%的第一值写入到SCM芯片中;或者,使例如90%的第一值写入到闪存芯片中,10%的第一值写入到SCM芯片中。实际应用过程中,可根据键值固态硬盘中闪存芯片和SCM芯片所能提供的存储容量确定预设频率的取值,避免出现大量的第一值写入SCM芯片导致存储空间不足的情况。
一些实施例中,结合第一值的长度和第一值的更新频率作为判定将值存储于SCM芯片或闪存芯片的依据。那么第一值被分为四类:长度较大且更新频率较高;长度较大且更新频率较低;长度较小且更新频率较高;长度较小且更新频率较低。
键值固态硬盘中SCM芯片的存储容量低于闪存芯片的存储容量,以及SCM芯片的擦写寿命高于闪存芯片的擦写寿命。具体的,长度较大且更新频率较低的第一值存储于闪存芯片,既能发挥闪存芯片存储容量大的优势,也不会很大程度地影响闪存芯片的使用寿命。长度较小且更新频率较高的第一值存储于SCM芯片,既能发挥SCM芯片擦写寿命较长的优势,延长闪存芯片的使用寿命,又不会很大程度地占用SCM芯片的存储空间。
对于长度较大且更新频率较高的值,以及长度较小且更新频率较低的值,需要结合键值固态硬盘的实际应用场景用途,以及实际键值固态硬盘中SCM芯片和闪存芯片的存储容量,进行合理的分配,以充分发挥SCM芯片和闪存芯片的优势,优化键值固态硬盘的使用性能。
一些实施例中,在SCM芯片的存储空间较充裕的情况下,可以将长度较大且更新频率较高的值存储于SCM芯片,以减少对闪存芯片的擦写次数,延长KVSSD的使用寿命。在SCM芯片的存储空间有限的情况下,将长度较大且更新频率较高的值存储于闪存芯片中,以避免出现SCM芯片的存储空间不足的情况。
图6为本申请实施例提供的一种键值存储方法的流程图二。将长度较小且更新频率较高的第一值写入SCM芯片(第一存储芯片),其他类型的第一值写入闪存芯片(第二存储芯片)。
如图6所示,包括以下步骤:
S100、接收写入指令,写入指令包括第一键和第一值;
S200、查询元数据中是否包含第一键;
S300、若元数据中不存在第一键,则将第一键写入第一存储芯片,并执行步骤S511;
S511、检测第一值的长度是否小于预设阈值,若是则执行S512;否则执行S514;
S512、检测第一值的更新频率是否小于预设频率,若是则执行步骤S514;否则,执行步骤S513;
S513、选择第一存储芯片作为目标存储芯片以写入第一值;
S514、选择第二存储芯片作为目标存储芯片以写入第一值;
S600、返回表征“是”的参数。
其中,步骤S600、返回表征“是”的参数,用于键值固态硬盘向与其连接的主机反馈指令执行完成。可选的,返回“OK”,或返回“1”,以表征写入完成。相应地,返回“NOK”或返回“0”,表征指令执行失败。
本实施例中,通过尽可能地将值写于闪存芯片(第二存储芯片),与键分开存储,提高并发访问能力。
图7为本申请实施例提供的一种键值存储方法的流程图三。一些实施例中,步骤S510根据第一值的属性,自第一存储芯片和第二存储芯片中选择一个作为目标存储芯片以写入第一值,并更新元数据之前,还包括:
S401、若元数据中存在第一键,则根据元数据确定第一键对应的当前值的存储空间;
S402、处理当前值的存储空间以使当前值无效。
具体的,写入指令用于执行更新操作。若元数据中记录有第一键,则表明在固态硬盘中存储有第一键对应的初始值(即当前值),则写入指令用于执行将第一键对应的值由该当前值更新为第一值的更新操作。其中,对值的更新过程中,无需对已存在的第一键进行读出复写入的多余操作,有利于缓解写入放大问题,延长KVSSD的使用寿命。
进一步地,如图7所示,步骤S510中,更新元数据具体还用于添加新写入的第一值的相关信息,以及将元数据中当前记录第一键与当前值的映射更新为第一键与第一值的映射。
一些实施例中,步骤S402处理当前值的存储空间以使当前值无效,具体包括:若当前值的存储空间为第一存储芯片,则释放当前值的存储空间以使当前值被删除;其中,被释放的当前值的存储空间为可写入状态;若当前值的存储空间为第二存储芯片,则为当前值的存储空间添加无效标识以使当前值无效;其中,被添加无效标识的当前值的存储空间为可写入状态。
其中,若当前值存储在闪存芯片中,根据闪存芯片中需要写前擦除的约束,可以先将当前值的存储空间标记为无效。当一个zone空间写满后,可通过reset指令完成整个zone空间的擦除,从而将zone空间变成可写状态。若当前值存储在SCM芯片中,根据SCM芯片不需要写前擦除的特点,可直接释放当前值的存储空间。
一些实施例中,若当前值的存储空间为第一存储芯片,则释放当前值的存储空间,包括:若当前值的存储空间为第一存储芯片,且当前值的长度小于第一值的长度,则释放当前值的存储空间。
具体的,若当前值存储在SCM芯片中,根据SCM芯片可以覆盖写入的特点,当第一值小于当前值的长度时,可直接用新数据(第一值)覆盖老数据(当前值)。无需进行目标存储芯片的判断步骤,以及无需重新分配新的存储空间,可提高写入速度。
进一步地,若当前值的存储空间为第一存储芯片,且当前值的长度不小于第一值的长度,则将第一值写入第一存储芯片,并且第一值的存储空间覆盖当前值的存储空间。
具体的,当第一值不小于当前值的长度时,则直接释放当前值的存储空间。其中,不可进行覆盖写入以避免覆盖有效数据或写入数据不全。进一步地,根据第一值的属性重新确定目标存储芯片。
其中,当第一值的长度低于预设阈值时,会在SCM芯片中分配新的存储空间。将尺寸较小的值存储于SCM芯片,则值的读写无需进行页(page)粒度对齐,且可通过内存总线(memory bus)进行值的读取,进一步提高KVSSD的读取性能。
图8为本申请实施例提供的一种键值存储方法的流程图四,包括以下步骤:
S100、接收写入指令,写入指令包括第一键和第一值;
S200、查询元数据中是否包含第一键;其中,元数据用于记录键、键的存储地址、键对应的值的存储地址和长度三者之间的映射关系;
S300、若元数据中不存在第一键,则将第一键写入第一存储芯片,并执行步骤S511;
S4011、若元数据中存在第一键,检测当前值的存储空间是否为第一存储芯片,若是则执行S4022;否则执行S4021;
S4021、标记当前值的存储空间为无效,并执行S511;
S4022、检测第一值的长度是否小于当前值的长度,若是则执行S4024;否则S4023;
S4023、释放当前值的存储空间,并执行S511;
S4024、将第一值写入第一存储芯片(具体为SCM芯片),其中,第一值的存储空间覆盖当前值的存储空间;
S511、检测第一值的长度是否低于预设阈值,若是则执行S513;否则执行S514;
S513、选择第一存储芯片作为目标存储芯片以写入第一值;
S514、选择第二存储芯片作为目标存储芯片以写入第一值;
S600、返回表征“是”的参数。
图9为本申请实施例提供的一种键值存储方法的流程图五。如图9所示,本实施例提供的键值存储方法还包括:接收查询指令,查询指令中包含第一键,图9中以Exist(key)为例;查询指令用于查询元数据中是否包含第一键;若确定元数据中不包含第一键,则返回表征“否”的参数(图9中以“NOK”为例);若确定元数据中包含第一键,则返回表征“是”的参数(图9中以“OK”为例)。
图10为本申请实施例提供的一种键值存储方法的流程图六。如图10所示,本实施例提供的键值存储方法还包括:接收读指令,读指令中包含第一键,图10中以GET(key)为例;读指令用于读取第一键对应的值;若确定元数据中不包含第一键,则返回表征“否”的参数;若确定元数据中包含第一键,则根据第一键,获得对应的值的存储地址;根据值的存储地址,读取值并反馈至主机系统,同时返回表征“是”的参数。
图11为本申请实施例提供的一种键值存储方法的流程图七。如图11所示,本实施例提供的键值存储方法还包括:接收删除指令(以Delete(key)为例),删除指令中包含第一键;确定元数据中包含第一键;根据第一值的存储地址,确定第一值的存储空间;若第一值存储于第一存储芯片,则释放第一值的存储空间;若第一值存储于第二存储芯片,则将第一值的存储空间标记为失效;释放第一键的存储空间;更新元数据。
其中,更新元数据具体用于删除元数据中记录的第一键的相关信息,例如表征第一键的标识、第一键的存储地址;以及,删除元数据中记录的第一值的相关信息,例如第一值的存储位置、第一值的长度;以及删除元数据中记录的第一键与第一值的映射关系。
结合图9至图11可知,若第一值存储在SCM芯片,则在执行查询指令、读指令、删除指令时,只需要访问SCM芯片,无需访问闪存芯片,有利于提高访问性能。
一些实施例中,元数据存储于第一存储芯片,固态硬盘还包括动态存储器(Dynamic Random Access Memory,简称DRAM);本实施例提供的键值存储方法还包括:在上电后,自第一存储芯片读取元数据并写入动态存储器,用于在动态存储器中对元数据进行查询及更新。
具体的,在执行读指令、删除指令等指令时,均需要查询元数据,在未上电时将元数据存储于非易失性存储介质中避免数据丢失。由于访问DRAM的速度快于访问SCM芯片的速度,因此在上电后,将元数据读取至DRAM中执行频繁访问,有利于提高访问性能。
进一步地,在执行写入、更新、删除等指令后,元数据在DRAM中会被更新,因此在下电时,将DRAM中的更新后的元数据返回存储于SCM芯片中,以便下次上电时调用的元数据是准确的。可选的,在上电过程中,可以将DRAM中的元数据按照预设周期同步到SCM芯片中,类似于自动保存操作,以应对断电等突发情况。
综上,本实施例在KVSSD中添加非易失性、可字节寻址的SCM芯片,用于存储键,有利于减少对Nand内存芯片的访问次数和擦写次数,有利于提高访问性能,延长KVSSD的使用寿命。进一步地,结合SCM芯片或闪存芯片的特点,以及值的属性,对值进行分类存储,优化了数据布局,有利于改善KVSSD的使用性能。其中,当键与值分别存储于不同的存储芯片时,有利于提高并发访问能力。进一步地,闪存芯片采用分区管理,优化了数据管理,有利于去除预留空间,增大用户使用空间;无需进行垃圾回收,缓解写入放大问题。
实施例二
本实施例提供一种键值存储系统,键值存储系统可以是服务器、计算机,笔记本电脑、手机终端等。本实施例中,以键值存储系统为服务器为例进行说明,键值存储系统包括主机和键值固态硬盘(KVSSD)。其中,主机和KVSSD通过KV设备协议接口进行通信。主机可以是具备写数据或读数据的需求且与KV固态硬盘通信的任何系统和/或装置。例如,主机可以是计算装置、个人计算机、便携式计算机、工作站、服务器、路由器、网络装置、个人数字助理、数字相机、数字电话、处理器、操作系统或其组合。
参照图4,键值固态硬盘包括控制器、第一存储芯片和第二存储芯片。第一存储芯片为存储级内存SCM芯片;第二存储芯片为闪存芯片。主机与键值固态硬盘的控制器连接,本实施例中,控制器可以用于接收来自主机的写入指令、删除指令、查询指令等;以及基于这些指令对第一存储芯片、第二存储芯片和动态存储器执行相应的操作。
控制器,与主机通信连接,用于接收主机发送的写入指令,写入指令包括第一键和第一值;控制器,用于查询元数据中是否包含第一键;控制器,用于若元数据中不存在第一键,则将第一键写入第一存储芯片;控制器,还用于将第一值写入第二存储芯片,并更新元数据。
本实施例中,将键存储于SCM芯片中、将值存储于闪存芯片。由于键与值分开存储于不同的芯片中,可以同时通过对应的芯片接口访问键和值,有利于提高并发访问性能,发挥KVSSD大带宽的优势。进一步地,将键存储于SCM芯片中无需进行页(page)粒度对齐操作,SCM芯片具有可字寻址的特点,相较于闪存芯片具有更小的读取单位,因此一定程度上可以提高访问键的速度。
一些实施例中,控制器具体用于根据第一值的属性,自第一存储芯片和第二存储芯片中选择一个作为目标存储芯片以写入第一值,并更新元数据;其中,第一值的属性包括以下至少一项:第一值的长度、第一值的更新频率。
一些实施例中,控制器具体用于若第一值的长度小于预设阈值,则选择第一存储芯片作为目标存储芯片以写入第一值;若第一值的长度大于或等于预设阈值,则选择第二存储芯片作为目标存储芯片以写入第一值。
一些实施例中,控制器具体用于若第一值的更新频率大于或等于预设频率,则选择第一存储芯片作为目标存储芯片以写入第一值;若第一值的更新频率小于预设频率,则选择第二存储芯片作为目标存储芯片以写入第一值。
一些实施例中,控制器还用于,若元数据中存在第一键,则根据元数据确定第一键对应的当前值的存储空间;处理当前值的存储空间以使当前值无效。
一些实施例中,控制器具体用于,若当前值的存储空间为第一存储芯片,则释放当前值的存储空间以使当前值被删除;其中,被释放的当前值的存储空间为可写入状态;若当前值的存储空间为第二存储芯片,则为当前值的存储空间添加无效标识以使当前值无效;其中,被添加无效标识的当前值的存储空间为可写入状态。
一些实施例中,控制器还用于,若当前值的存储空间为第一存储芯片,且当前值的长度大于或等于第一值的长度,则将第一值写入第一存储芯片,并且第一值的存储空间覆盖当前值的存储空间。
一些实施例中,控制器还用于接收删除指令,删除指令中包含第一键;控制器还用于确定元数据中包含第一键;控制器还用于根据第一值的存储地址,确定第一值的存储空间;若第一值存储于第一存储芯片,则释放第一值的存储空间;若第一值存储于第二存储芯片,则将第一值的存储空间标记为失效;控制器还用于释放第一键的存储空间;控制器还用于更新元数据。
一些实施例中,元数据存储于第一存储芯片,如图4所示,键值固态硬盘还包括动态存储器,控制器还用于在上电后,自第一存储芯片读取元数据并写入动态存储器,用于在动态存储器中对元数据进行查询及更新。
图12为本申请实施例提供的另一种键值存储系统的结构示意图。如图12所示,第二存储芯片中包含采用分区存储(zone)管理的存储空间,该存储空间支持以追加写入的方式写入长度不低于预设阈值和/或更新频率低于预设频率的值。
进一步地,闪存芯片可以为单存储单元存储4位比特数据的QLC(quad-levelcell)芯片;也可以为单存储单元存储3位比特数据的TLC(triple-level cell)芯片;也可以为单存储单元存储2位比特数据的MLC(multi-level cell)芯片;也可以为单存储单元存储1位比特数据的SLC(single-level cell)芯片。本实施例对此不作限定,可结合上述四种闪存芯片的读写时延、擦除时延、擦写寿命等特性进行选择。
如图12所示,在上电后,控制器将存储于SCM芯片的元数据(metadata)读取并写入DRAM芯片。其中,元数据以包含所有键信息的哈希表为例。当接收到主机的读取指令后,根据指令中的键,确定对应的值的地址和长度。根据值的地址,可以获取存储于闪存芯片中的值。
本实施例在KVSSD中添加非易失性、可字节寻址的SCM芯片,用于存储键,有利于减少对Nand内存芯片的访问次数和擦写次数,有利于提高访问性能,延长KVSSD的使用寿命。进一步地,结合SCM芯片或闪存芯片的特点,以及值的属性,对值进行分类存储,优化了数据布局,有利于改善KVSSD的使用性能。其中,当键与值分别存储于不同的存储芯片时,有利于提高并发访问能力。进一步地,闪存芯片采用分区管理,优化了数据管理,有利于去除预留空间,增大用户使用空间;无需进行垃圾回收,缓解写入放大问题。
实施例三
图13为本申请实施例提供的一种键值存储装置的结构示意图。该装置可以通过计算机程序实现,例如应用软件;或者,该装置也可以实现为存储有相关计算机程序的介质,例如,U盘、云盘等;再或者,该装置还可以通过集成或安装有相关计算机程序的实体装置实现,例如,计算机等。
该装置应用于固态硬盘,固态硬盘包括第一存储芯片和第二存储芯片,第二存储芯片为闪存芯片(Nand Flash);第一存储芯片为存储级内存SCM芯片。
如图13所示,存储装置包括:接收单元10,用于接收写入指令,写入指令包括第一键和第一值;查询单元20,用于查询元数据中是否包含第一键;处理单元30,用于若元数据中不存在第一键,则将第一键写入第一存储芯片;处理单元30,还用于将第一值写入第二存储芯片,并更新元数据。
一些实施例中,处理单元30,具体还用于根据第一值的属性,自第一存储芯片和第二存储芯片中选择一个作为目标存储芯片以写入第一值,并更新元数据,其中,第一值的属性包括以下至少一项:第一值的长度、第一值的更新频率。
一些实施例中,处理单元30,具体用于若第一值的长度小于预设阈值,则选择第一存储芯片作为目标存储芯片以写入第一值;具体用于若第一值的长度大于或等于预设阈值,则选择第二存储芯片作为目标存储芯片以写入第一值。
一些实施例中,处理单元30,具体用于若第一值的更新频率大于或等于预设频率,则选择第一存储芯片作为目标存储芯片以写入第一值;处理单元30,具体用于若第一值的更新频率小于预设频率,则选择第二存储芯片作为目标存储芯片以写入第一值。
一些实施例中,处理单元30根据第一值的属性自第一存储芯片和第二存储芯片中选择一个作为目标存储芯片以写入第一值,并更新元数据之前,还用于若元数据中存在第一键,则根据元数据确定第一键对应的当前值的存储空间;处理单元30还用于处理当前值的存储空间以使当前值无效。
一些实施例中,处理单元30,具体还用于若当前值的存储空间为第一存储芯片,则释放当前值的存储空间以使当前值被删除;其中,被释放的当前值的存储空间为可写入状态;处理单元30,具体还用于若当前值的存储空间为第二存储芯片,则为当前值的存储空间添加无效标识以使当前值无效;其中,被添加无效标识的当前值的存储空间为可写入状态。
一些实施例中,处理单元30,具体还用于若当前值的存储空间为第一存储芯片,且当前值的长度不小于第一值的长度,则将第一值写入第一存储芯片,并且第一值的存储空间覆盖当前值的存储空间。
一些实施例中,接收单元10,还用于接收删除指令,删除指令中包含第一键;查询单元20,用于确定元数据中包含第一键;处理单元30还用于根据第一值的存储地址,确定第一值的存储空间;若第一值存储于第一存储芯片,则释放第一值的存储空间;若第一值存储于第二存储芯片,则将第一值的存储空间标记为失效;处理单元30还用于释放第一键的存储空间;处理单元30还用于更新元数据。
一些实施例中,元数据存储于第一存储芯片,固态硬盘还包括动态存储器;键值存储装置还包括预处理单元,用于在上电后,自第一存储芯片读取元数据并写入动态存储器,用于在动态存储器中对元数据进行查询及更新。
本实施例在KVSSD中添加非易失性、可字节寻址的SCM芯片,用于存储键,有利于减少对Nand内存芯片的访问次数和擦写次数,有利于提高访问性能,延长KVSSD的使用寿命。进一步地,结合SCM芯片或闪存芯片的特点,以及值的属性,对值进行分类存储,优化了数据布局,有利于改善KVSSD的使用性能。其中,当键与值分别存储于不同的存储芯片时,有利于提高并发访问能力。进一步地,闪存芯片采用分区管理,优化了数据管理,有利于去除预留空间,增大用户使用空间;无需进行垃圾回收,缓解写入放大问题。
实施例四
图14为本申请实施例提供的一种电子设备的结构示意图,该电子设备可以是服务器、计算机,笔记本电脑、手机终端等。本实施例中,以电子设备为服务器为例进行说明,如图14所示,电子设备包括:
处理器(processor)291,电子设备还包括了存储器(memory)292;还可以包括通信接口(Communication Interface)293和总线294。其中,处理器291、存储器292、通信接口293、可以通过总线294完成相互间的通信。通信接口293可以用于信息传输。处理器291可以调用存储器292中的逻辑指令,以执行上述实施例的方法。
此外,上述的存储器292中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
存储器292作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序,如本申请实施例中的方法对应的程序指令/模块。处理器291通过运行存储在存储器292中的软件程序、指令以及模块,从而执行功能应用以及数据处理,即实现上述方法实施例中的方法。
存储器292可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器292可以包括高速随机存取存储器,还可以包括非易失性存储器。
本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,计算机执行指令被处理器执行时用于实现实施例一提供的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。

Claims (10)

1.一种键值存储方法,其特征在于,应用于键值固态硬盘,所述键值固态硬盘包括第一存储芯片和第二存储芯片;所述第一存储芯片为存储级内存SCM芯片;所述第二存储芯片为闪存芯片;
所述存储方法包括:
接收写入指令,所述写入指令包括第一键和第一值;
查询元数据中是否包含所述第一键;
若所述元数据中不存在所述第一键,则将所述第一键写入所述第一存储芯片;
将所述第一值写入所述第二存储芯片,并更新所述元数据。
2.根据权利要求1所述的方法,其特征在于,所述将所述第一值写入所述第二存储芯片,包括:
根据所述第一值的属性,自所述第一存储芯片和所述第二存储芯片中选择一个作为目标存储芯片以写入所述第一值,并更新所述元数据;其中,所述第一值的属性包括以下至少一项:所述第一值的长度、所述第一值的更新频率。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第一值的属性,自所述第一存储芯片和所述第二存储芯片中选择一个作为目标存储芯片以写入所述第一值,包括:
若所述第一值的长度小于预设阈值,则选择所述第一存储芯片作为所述目标存储芯片以写入所述第一值;
若所述第一值的长度大于或等于预设阈值,则选择所述第二存储芯片作为所述目标存储芯片以写入所述第一值。
4.根据权利要求2所述的方法,其特征在于,所述根据所述第一值的属性,自所述第一存储芯片和所述第二存储芯片中选择一个作为目标存储芯片以写入所述第一值,包括:
若所述第一值的更新频率大于或等于预设频率,则选择所述第一存储芯片作为所述目标存储芯片以写入所述第一值;
若所述第一值的更新频率小于预设频率,则选择所述第二存储芯片作为所述目标存储芯片以写入所述第一值。
5.根据权利要求2所述的方法,其特征在于,所述根据所述第一值的属性,自所述第一存储芯片和所述第二存储芯片中选择一个作为目标存储芯片以写入所述第一值,并更新所述元数据之前,还包括:
若所述元数据中存在所述第一键,则根据所述元数据确定所述第一键对应的当前值的存储空间;
处理所述当前值的存储空间以使所述当前值无效。
6.根据权利要求5所述的方法,其特征在于,所述处理所述当前值的存储空间以使所述当前值无效,包括:
若所述当前值的存储空间为所述第一存储芯片,则释放所述当前值的存储空间以使所述当前值被删除;其中,被释放的所述当前值的存储空间为可写入状态;
若所述当前值的存储空间为所述第二存储芯片,则为所述当前值的存储空间添加无效标识以使所述当前值无效;其中,被添加无效标识的所述当前值的存储空间为可写入状态。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
若所述当前值的存储空间为所述第一存储芯片,且所述当前值的长度大于或等于所述第一值的长度,则将所述第一值写入所述第一存储芯片,并且所述第一值的存储空间覆盖所述当前值的存储空间。
8.根据权利要求2所述的方法,其特征在于,所述方法还包括:
接收删除指令,所述删除指令中包含所述第一键;
确定所述元数据中包含所述第一键;
根据所述第一值的存储地址,确定所述第一值的存储空间;若所述第一值存储于所述第一存储芯片,则释放所述第一值的存储空间;若所述第一值存储于所述第二存储芯片,则将所述第一值的存储空间标记为失效;
释放所述第一键的存储空间;
更新所述元数据。
9.根据权利要求1所述的方法,其特征在于,所述元数据存储于所述第一存储芯片,所述固态硬盘还包括动态存储器;
所述存储方法还包括:
在上电后,自所述第一存储芯片读取所述元数据并写入所述动态存储器,用于在所述动态存储器中对所述元数据进行查询及更新。
10.一种键值存储系统,其特征在于,包括:主机和键值固态硬盘,所述键值固态硬盘包括控制器、第一存储芯片、第二存储芯片;所述第一存储芯片为存储级内存SCM芯片;所述第二存储芯片为闪存芯片;
所述控制器,与所述主机通信连接,用于接收所述主机发送的写入指令,所述写入指令包括第一键和第一值;
所述控制器,还用于查询元数据中是否包含所述第一键;
所述控制器,还用于若所述元数据中不存在所述第一键,则将所述第一键写入所述第一存储芯片;
所述控制器,还用于将所述第一值写入所述第二存储芯片,并更新所述元数据。
CN202211158749.XA 2022-09-22 2022-09-22 键值存储方法及系统 Pending CN117785018A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202211158749.XA CN117785018A (zh) 2022-09-22 2022-09-22 键值存储方法及系统
PCT/CN2023/115601 WO2024060944A1 (zh) 2022-09-22 2023-08-29 键值存储方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211158749.XA CN117785018A (zh) 2022-09-22 2022-09-22 键值存储方法及系统

Publications (1)

Publication Number Publication Date
CN117785018A true CN117785018A (zh) 2024-03-29

Family

ID=90396835

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211158749.XA Pending CN117785018A (zh) 2022-09-22 2022-09-22 键值存储方法及系统

Country Status (2)

Country Link
CN (1) CN117785018A (zh)
WO (1) WO2024060944A1 (zh)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6034183B2 (ja) * 2012-12-27 2016-11-30 株式会社東芝 半導体記憶装置
US9438426B2 (en) * 2014-10-03 2016-09-06 Seagate Technology Llc Key-value data storage device with hybrid architecture
KR20190031692A (ko) * 2017-09-18 2019-03-27 에스케이하이닉스 주식회사 데이터 처리 시스템 및 데이터 처리 시스템의 동작방법
CN109521959A (zh) * 2018-11-01 2019-03-26 西安交通大学 一种基于ssd-smr磁盘混合键值存储系统数据组织方法
CN110399104B (zh) * 2019-07-23 2023-06-09 网易(杭州)网络有限公司 数据存储方法、数据存储装置、电子设备、存储介质
CN112394874B (zh) * 2019-08-13 2024-08-20 华为技术有限公司 一种键值kv的存储方法、装置及存储设备

Also Published As

Publication number Publication date
WO2024060944A1 (zh) 2024-03-28

Similar Documents

Publication Publication Date Title
US11636032B2 (en) Memory system, data storage device, user device and data management method thereof
US10739996B1 (en) Enhanced garbage collection
US11030094B2 (en) Apparatus and method for performing garbage collection by predicting required time
US8521949B2 (en) Data deleting method and apparatus
JP5418808B2 (ja) 適応ハイブリッド密度メモリ記憶装置の制御方法、及び適応ハイブリッド密度メモリ記憶装置
US7890550B2 (en) Flash memory system and garbage collection method thereof
US8205063B2 (en) Dynamic mapping of logical ranges to write blocks
CN110955384B (zh) 数据储存装置以及非挥发式存储器控制方法
US8386698B2 (en) Data accessing method for flash memory and storage system and controller using the same
US20130151759A1 (en) Storage device and operating method eliminating duplicate data storage
CN110362499B (zh) 电子机器及其控制方法、计算机系统及其控制方法以及主机的控制方法
US20150186259A1 (en) Method and apparatus for storing data in non-volatile memory
KR20200068941A (ko) 메모리 시스템 내 저장된 데이터를 제어하는 방법 및 장치
US11150819B2 (en) Controller for allocating memory blocks, operation method of the controller, and memory system including the controller
US11269771B2 (en) Storage device for improving journal replay, operating method thereof, and electronic device including the storage device
CN114303123A (zh) 一种固态硬盘的数据存储方法、装置及固态硬盘ssd
US20220405001A1 (en) Fast garbage collection in zoned namespaces ssds
US9524236B1 (en) Systems and methods for performing memory management based on data access properties
CN110312986B (zh) 用于在固态设备上存储数据的流的机会性使用
KR101026634B1 (ko) 하이브리드 플래시 메모리의 데이터 저장 방법
CN111324284B (zh) 一种存储器
KR20210039185A (ko) 메모리 시스템에서 멀티 스트림 동작을 제공하는 방법 및 장치
KR20200014175A (ko) 소요시간을 예측하여 가비지 컬렉션을 수행하는 방법 및 장치
TWI805937B (zh) 記憶體控制器與資料處理方法
CN117785018A (zh) 键值存储方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication