CN109521948B - 支持快照功能的键值存储设备及其操作方法 - Google Patents

支持快照功能的键值存储设备及其操作方法 Download PDF

Info

Publication number
CN109521948B
CN109521948B CN201810840685.9A CN201810840685A CN109521948B CN 109521948 B CN109521948 B CN 109521948B CN 201810840685 A CN201810840685 A CN 201810840685A CN 109521948 B CN109521948 B CN 109521948B
Authority
CN
China
Prior art keywords
snapshot
key
value
entry
storage device
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.)
Active
Application number
CN201810840685.9A
Other languages
English (en)
Other versions
CN109521948A (zh
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics 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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN109521948A publication Critical patent/CN109521948A/zh
Application granted granted Critical
Publication of CN109521948B publication Critical patent/CN109521948B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

Abstract

一种操作键值存储设备的方法,包括:键值存储设备从主机接收包括第一键、第一值和第一快照标识(ID)的第一命令;响应于接收到的第一命令,所述键值存储设备生成包括第一快照ID、第一键和在非易失性存储器中写入所述第一值的第一物理地址的第一快照条目;从主机接收包括第一键、第二值和第二快照ID的第二命令;并且响应于接收到的第二命令,键值存储设备生成包括第二快照ID、第一键和在非易失性存储器中写入所述第二值的第二物理地址的第二快照条目。

Description

支持快照功能的键值存储设备及其操作方法
相关申请的交叉引用
本申请要求于2017年9月20日向韩国知识产权局提交的韩国专利申请10-2017-0121312号的权益,其公开内容通过引用全部并入本文。
背景技术
本发明构思涉及一种存储设备,更具体地,涉及一种支持快照功能的键值存储设备及其操作方法。
可以基于管理数据的单位将存储设备分类为基于对象的存储设备和基于块的存储设备。基于对象的存储设备具有以对象形式存储和管理数据的存储结构。对象是具有任意大小的数据,并且表示例如多媒体数据(诸如视频或图像)、文件等。基于对象的存储设备可以用于管理对象。基于对象的存储设备的示例可以包括例如键值存储设备。
发明内容
本文公开了一种支持快照功能的键值存储设备及其操作方法。
根据本发明构思的一方面,提供了一种包括非易失性存储器的键值存储设备的操作方法。该操作方法包括:键值存储设备从主机接收包括第一键、第一值和第一快照标识(ID)的第一命令;响应于接收到的第一命令,键值存储设备生成包括第一快照ID、第一键和在非易失性存储器中写入第一值的第一物理地址的第一快照条目;键值存储设备从主机接收包括第一键、第二值和第二快照ID的第二命令;以及响应于接收到的第二命令,键值存储设备生成包括第二快照ID、第一键和在非易失性存储器中写入第二值的第二物理地址的第二快照条目。
根据本发明构思的另一方面,提供了一种包括非易失性存储器的键值存储设备的操作方法。该操作方法包括:键值存储设备在映射表中存储针对第一键的多个快照条目,该多个快照条目分别与多个快照ID对应;键值存储设备从主机接收包括第一键的第一读取命令;响应于接收到的第一读取命令,键值存储设备基于该多个快照条目中的最新快照条目对非易失性存储器执行读取操作;键值存储设备从主机接收包括第一快照ID和第一键的第二读取命令;以及响应于接收到的第二读取命令,键值存储设备基于该多个快照条目中与第一快照ID对应的第一快照条目对非易失性存储器执行读取操作。
根据本发明构思的另一方面,提供了一种包括非易失性存储器的键值存储设备的操作方法。该操作方法包括:键值存储设备在映射表中存储多个快照条目,每个快照条目包括快照ID、键和非易失性存储器中的物理地址;键值存储设备从主机接收包括第一快照ID的第一删除命令;响应于接收到的第一删除命令,键值存储设备从多个快照条目中删除与第一快照ID对应的至少一个快照条目;键值存储设备从主机接收包括第一快照ID和第一键的第二删除命令;并且响应于接收到的第二删除命令,键值存储设备从多个快照条目中删除与第一快照ID和第一键对应的第一快照条目。
根据本发明构思的另一方面,提供了一种能够与主机通信的键值存储设备,该键值存储设备包括:非易失性存储器,被配置为存储与键对应的值;以及控制器,被配置为从主机接收包括快照标识(ID)、键和值的命令,并且响应于接收到的命令来生成包括快照ID、键和在非易失性存储器中写入该值的物理地址的快照条目。
根据本发明构思的又另一方面,提供了一种系统,包括:非易失性存储器,被配置为存储多个值;存储器设备,被配置为存储包括至少一个快照条目的映射表,其中,每个快照条目包括快照标识(ID)、键和与键对应的值被存储在非易失性存储器中的物理地址,;以及控制器,被配置为控制非易失性存储器和存储器设备的操作,并且还被配置为从主机接收包括快照标识(ID)、键和值的命令,并且响应于从主机接收到的命令生成快照条目并将快照条目存储在存储器设备中。
附图说明
从以下结合附图进行的详细描述,将更清楚地理解本发明构思的实施例。
图1是图示存储系统的实施例的框图。
图2是示出多个键值对的表的实施例。
图3示出了键到物理页号(K2P)映射表的实施例。
图4A和4B图示了读操作的实施例。
图5是图示图1的控制器的实施例的框图。
图6示出了图5的映射表的示例性实施例。
图7A示出了与图6的第一键对应的映射数据的实施例,并且图7B示出了与图6的第二键对应的映射数据的实施例。
图8示出了图5的映射表的另一个示例性实施例。
图9是图示存储系统的实施例的框图。
图10是图示图9的控制器的实施例的框图。
图11A示出了图10的第一映射表的示例性实施例,并且图11B示出了图10的第二映射表的示例性实施例。
图12是图示存储设备的操作方法的实施例的流程图。
图13是图示主机和存储设备之间的操作的实施例的流程图。
图14是示出主机、控制器和非易失性存储器之间的操作的实施例的流程图。
图15和图16是图示主机和存储设备之间的操作的实施例的流程图。
图17是图示存储设备的操作方法的实施例的流程图。
图18是图示主机和存储设备之间的操作的实施例的流程图。
图19是示出主机、控制器和非易失性存储器之间的操作的实施例的流程图。
图20是图示存储设备的操作方法的实施例的流程图。
图21是图示主机和存储设备之间的操作的实施例的流程图。
图22是图示主机、控制器和非易失性存储器之间的操作的实施例的流程图。
图23图示了快照条目删除操作的实施例。
图24和图25是图示主机和存储设备之间的操作的实施例的流程图。
图26和图27分别图示了网络系统的实施例。
图28图示了电子设备的实施例。
具体实施方式
图1是图示存储系统10的实施例的框图。参考图1,存储系统10可以包括存储设备100和主机200。存储设备100可以包括控制器110和非易失性存储器(NVM)120。主机200可以通过各种接口与存储设备100通信。例如,主机200可以用应用处理器(AP)或片上系统(SoC)来实现。
在实施例中,存储设备100可以是键值存储设备或键值存储器件(store),并且例如可以是键值固态驱动器(SSD)。键值存储设备可以是通过使用键值对来快速且简单地处理数据的设备。这里,键值对可以是由具有唯一性的键和作为与该键对应的数据的值构成的对,并且可以被称为元组或键值元组。在键值对中,键可以表示为诸如文件名、统一资源标识符(URI)或散列(hash)的任意字符串,并且该值可以是任意类型的数据,诸如图像或用户偏好文件或文档。在这种情况下,键和值中的每一个的大小可以是能够变化的,并且例如,值的大小可以基于包括在该值中的数据而变化。
在下文中,将描述存储设备100是键值存储设备的实施例,并且在本说明书中,存储设备100可以用作与键值存储设备或键值存储器件相同的含义。然而,存储设备100不限于作为键值存储设备,并且可以应用于以对象为单位管理数据的任意对象高速缓存系统或对象存储系统。因此,存储设备100可以以任意方式而不是键值对,以对象为单位来管理数据。
主机200可以向存储设备100发送包括快照标识(ID)的命令CMD例如作为命令分组。存储设备100可以支持响应于命令CMD的快照功能。详细地,存储设备100可以基于快照ID生成映射数据作为快照条目,并且快照条目可以包括快照ID、键和物理地址。在这种情况下,物理地址可以表示用于写入与键对应的值的NVM 120的物理地址。因此,存储设备100可以自主地支持快照功能,并且主机200可以配置具有树型的快照条目。因此,主机200可以不在内部管理快照条目,由此减少管理快照条目的开销。
快照功能可以是在某个时刻保持数据结构的功能,用于防止存储在存储设备100中的数据(即,值)的丢失。详细地,快照或快照复制可以表示为了恢复数据库中的系统或文件系统,在某个时刻的数据结构像拍照一样被保持。一旦生成了快照条目,即使当由于恶意代码、病毒或用户失误而删除或更改了数据时,也可以相对于生成快照条目的时间来恢复数据。在这种情况下,可以将快照实现为仅复制诸如映射数据的元数据的方法,而不是复制用户数据的方法。因此,尽管原始文件的容量可以很大,但是快照条目的容量可以非常小,因此,可以有效地执行备份。
在实施例中,主机200可以向存储设备100发送包括键值对的命令CMD(例如,写入请求),并且响应于命令CMD,存储设备100可以将值写入NVM 120。在这种情况下,主机200可以生成包括具有大小能够变化的键值对的命令CMD,而不通过具有固定大小的逻辑块地址(LBA)的单位来改变键值对,并且可以向存储设备100发送所生成的命令CMD。
在实施例中,主机200可以向存储设备100发送包括键的命令CMD(例如,读取请求),并且响应于命令CMD,存储设备100可以读取存储在NVM 120中的值。在这种情况下,主机200可以生成包括具有大小能够变化的键的命令CMD,而不通过具有固定大小的LBA的单位来改变键,并且可以向存储设备100发送所生成的命令CMD。
响应于来自主机200的读取请求或读取命令,控制器110可以读取存储在NVM 120中的值,或者,响应于来自主机200的写入请求或写入命令,控制器110可以控制NVM 120以在NVM 120中写入值。在本实施例中,控制器110可以包括快照条目管理器SM和映射表MT。
快照条目管理器SM可以响应于包括快照ID的命令CMD来管理快照条目。随后,快照条目管理器SM可以响应于包括键值对和快照ID的命令CMD,生成与快照ID对应的快照条目。快照条目可以包括快照ID、包括在键值对中的键和用于写入包括在键值对中的值的物理地址。
映射表MT可以存储多个快照条目。详细地,映射表MT可以通过快照ID来存储表示键和物理地址之间的对应关系的映射数据。例如,映射数据可以表示键与物理页号(PPN)之间的对应关系,并且因此可以被称为键到PPN(K2P)映射表。在实施例中,映射表MT可以被复制到NVM 120中,因此,NVM 120也可以存储映射表MT。
NVM 120可以包括存储器单元阵列(MCA),并且MCA可以包括存储器块BLK。存储器块BLK可以包括多个页面PG1至PGm。这里,根据实施例,m可以是正整数并且可以被不同地改变。例如,存储器块BLK可以是删除的单位(即,在一个操作中可以删除存储器单元中的数据的存储器单元的单位),并且页面可以是写入和读取的单位(即,在一个操作中可以读取或写入存储器单元中的数据的存储器单元的单位)。在一些实施例中,MCA可以包括多个存储器块、多个平面、多个管芯和/或多个芯片。在实施例中,NVM 120可以包括闪存设备,并且例如可以包括NAND闪存设备。然而,NVM 120不限于此,并且NVM 120可以包括电阻式存储设备,诸如电阻式随机存取存储器(ReRAM)、相变随机存取存储器(PRAM)或磁随机存取存储器(MRAM)。
存储系统10可以用例如个人计算机(PC)、数据服务器、网络附加存储(NAS)、物联网(IoT)设备、便携式电子设备等实现。便携式电子设备可以是膝上型计算机、移动电话、智能电话、平板电脑、个人数字助理(PDA)、企业数字助理(EDA)、数字静态照相机、数字摄像机、音频设备、便携式多媒体播放器(PMP)、个人导航设备(PND)、MP3播放器、手持式游戏控制台、电子书、可穿戴设备等。
在一些实施例中,存储设备100可以是嵌入到电子设备中的内部存储器。例如,存储设备100可以是SSD、嵌入式通用闪存(UFS)存储器设备、嵌入式多媒体卡(eMMC)等。在一些实施例中,存储设备100可以是能够从电子设备上拆卸/能够附接在电子设备上的外部存储器。例如,存储设备100可以是UFS存储卡(memory card)、压缩型闪存(CF)、安全数字卡(SD)、微型安全数字卡(Micro-SD)、迷你安全数字卡(Mini-SD)、记忆棒等。
图2是示出多个键值对的实施例的表格20。参考图1和图2,存储设备100可以管理针对多个键中的每一个的多个元组以支持快照功能,并且多个元组可以分别与多个快照ID对应。例如,与第一键K1对应的多个元组TP1可以包括与第一快照ID ID0对应的第一元组TP1a和与第二快照ID ID1对应的第二元组TP1b。例如,与第二键K2对应的多个元组TP2可以包括与第一快照ID ID0对应的第一元组TP2a、与第二快照ID ID1对应的第二元组TP2b和与第三快照ID ID2对应的第三元组TP2c。
例如,与第一快照ID ID0和第一键K1对应的值可以是V1a,与第一快照ID ID0和第二键K2对应的值可以是V2a,并且与第一快照ID ID0和第n键Kn对应的值可以是Vn。例如,与第二快照ID ID1和第一键K1对应的值可以是V1b,与第二快照ID ID1和第二键K2对应的值可以是V2b。例如,与第三快照ID ID2和第二键K2对应的值可以是V2c。存储设备100可以通过使用存储分别与多个快照ID ID0到ID2对应的多个快照条目的映射表MT来保持在某个时间与某个快照ID对应的数据结构。在下文中,将详细描述存储多个快照条目的映射表MT。
图3示出了K2P映射表31的实施例。例如,K2P映射表31可以与图2的多个键值对对应。
参考图1至图3,K2P映射表31可以与图1的映射表MT的示例对应,并且可以存储多个快照条目311至316。多个快照条目311至316中的每一个可以对应于与快照ID对应的映射数据,并且可以包括快照ID、键和PPN。在实施例中,可以生成基于相同键的快照ID的多条映射数据,并且多条映射数据可以被存储为多个快照条目。
例如,可以针对第一键K1生成第一和第二快照条目311和312。第一快照条目311可以是在与第一快照ID ID0对应的时间与第一键K1对应的映射数据,并且可以包括第一快照ID ID0、第一键K1和PPN1。第二快照条目312可以是在与第二快照ID ID1对应的时间与第一键K1对应的映射数据,并且可以包括第二快照ID ID1、第一键K1和PPN3。
NVM 32可以与图1的NVM 120的示例对应,并且可以将多个值分别存储在多个PPN(例如,PPN1到PPNm)中。例如,多个PPN(例如,PPN1至PPNm)可以分别与图1的页面PG1至PGm对应。例如,可以在与第一快照ID ID0对应的时间将与第一键K1对应的第一值V1a存储在PPN1中,并且可以在与第二快照ID ID1对应的时间将与第一键K1对应的第二值V1b存储在PPN3中。
根据实施例,存储设备100可以将多个快照条目311至316存储在K2P映射表31中,从而自主地支持快照功能。详细地,当从主机200接收到读取请求时,存储设备100可以通过使用K2P映射表31来读取存储在NVM 32中的值。下面将参考图4A和图4B来描述存储设备100的读取操作。
图4A和4B图示了读取操作的实施例。例如,图4A和图4B中所图示的多个元组TP1至TP3可以分别与图2的元组TP1至TP3对应。
参考图1、图3和图4A,当从主机200接收到不包括快照ID的正常读取请求时,存储设备100可以基于存储在K2P映射表31中的多个快照条目311至316中的最新快照条目来执行读取操作。例如,当从主机200接收到包括第二键K2的读取命令时,存储设备100可以在K2P映射表31中搜索与针对第二键K2的多个快照条目313到315中的最新快照条目对应的第三快照条目315。随后,存储设备100可以通过使用包括在第三快照条目315中的物理地址(即,PPN5),从NVM 32中读取第三值V2c。
参考图1、图3和图4B,当从主机200接收到包括快照ID的快照读取请求时,存储设备100可以基于存储在K2P映射表31中的多个快照条目311至316中与该快照ID对应的快照条目来执行读取操作。例如,当从主机200接收到包括第二键K2和第二快照ID ID1的读取命令时,存储设备100可以在K2P映射表31中在针对第二键K2的多个快照条目313到315中搜索与第二快照ID ID1对应的快照条目314。随后,存储设备100可以通过使用包括在第二快照条目314中的物理地址(即,PPN4),从NVM 32中读取第二值V2b。
图5是图示图1的控制器110的实施例的框图。参考图5,控制器110可以包括处理器111、存储器112、主机接口113和NVM接口114,这些组件可以通过总线115彼此通信。处理器111可以包括中央处理单元(CPU)或微处理器并且可以控制控制器110的整体操作。存储器112可以根据处理器111的控制进行操作,并且可以用作工作存储器、缓冲存储器、高速缓存存储器等。例如,存储器112可以用诸如动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM)的易失性存储器或诸如PRAM或闪存的NVM来实现。
快照条目管理器SM可以用固件或软件来实现,并且可以被加载到存储器112中。在实施例中,快照条目管理器SM可以在闪存转换层(FTL)中实现并且可以被加载到存储器112中。然而,本实施例不限于此,并且快照条目管理器SM可以用硬件来实现。映射表MT可以被存储在例如K2P映射表31中,并且可以被加载到存储器112中。
主机接口113可以提供主机200和控制器110之间的接口,并且例如可以提供基于通用串行总线(USB)、MMC、快速PCI(PCI-E)、AT附件(ATA)、串行AT附件(SATA)、并行AT附件(PATA)、小型计算机系统接口(SCSI)、串行附接SCSI(SAS)、增强型小型磁盘接口(ESDI)、集成驱动电子设备(IDE)等。NVM接口114可以提供控制器110与NVM 120之间的接口。例如,可以通过NVM接口114在控制器110与NVM 120之间发送和接收映射表MT、写入数据和读取数据。
图6示出了图5的映射表MT的示例性实施例MTa。参考图5和图6,映射表MTa可以包括多个快照条目61至66。详细地,映射表MTa可以包括与第一键K1对应的快照条目61和62、与第二键K2对应的快照条目63至65和与第三键K3对应的快照条目66。在实施例中,与相同键对应的快照条目可以被实现为链接列表。在实施例中,每一个快照条目可以包括快照ID、键、PPN和链接区域。
例如,与第一键K1对应的快照条目61和62可以被实现为链接列表,快照条目61的链接区域可以在存储器112中存储快照条目61之前的快照条目62的存储地址ADDR1,并且快照条目62的链接区域可以存储表示不再存在链接节点的空值NULL。在下文中,将参考图7A和图7B更详细地描述被实现为链接列表的快照条目。
图7A示出与图6的第一键K1对应的映射数据71的实施例。
参考图7A,与第一键K1对应的映射数据71可以被实现为包括第一和第二节点711和712的链接列表。第一节点711可以与作为最新快照条目的快照条目61对应,并且可以与链接列表的头部对应。第一节点711可以包括数据区域711a和链接区域(或指针区域)711b。数据区域711a可以在与针对第一键K1的最新快照ID(即,第二快照ID ID1)对应的时间存储与第一键K1对应的物理地址PPN3。链接区域711b可以存储地址ADDR1,在该地址处存储与之前的快照ID(即,第一快照ID ID0)对应的快照条目62。
第二节点712可以与作为之前的快照条目的快照条目62对应,并且可以包括数据区域712a和链接区域712b。数据区域712a可以在与第一快照ID ID0对应的时间存储与第一键K1对应的物理地址PPN1。由于在第一快照ID ID0之前没有生成之前的快照ID,所以链接区域712b可以存储表示不再存在链接节点的空值NULL。
图7B示出了与图6的第二键K2对应的映射数据72的实施例。
参考图7B,与第二键K2对应的映射数据72可以被实现为包括第一至第三节点721至723的链接列表。第一节点721可以与作为最新快照条目的快照条目63对应,并且可以与链接列表的头部对应。第一节点721可以包括数据区域721a和链接区域721b。数据区域721a可以在与针对第二键K2的最新快照ID(即,第三快照ID ID2)对应的时间存储与第二键K2对应的物理地址PPN5。链接区域721b可以存储地址ADDR2,在该地址处存储与之前的快照ID(即,第二快照ID ID1)对应的快照条目64。
第二节点722可以与快照条目64对应,并且可以包括数据区域722a和链接区域722b。数据区域722a可以在与第二快照ID ID1对应的时间存储与第二键K2对应的物理地址PPN4。链接区域722b可以存储地址ADDR3,在该地址处存储与之前的快照ID(即,第一快照IDID0)对应的快照条目65。第三节点723可以与快照条目65对应,并且可以包括数据区域723a和链接区域723b。数据区域723a可以在与第一快照ID ID0对应的时间存储与第二键K2对应的物理地址PPN2。由于在第一快照ID ID0之前没有生成之前的快照ID,因此链接区域723b可以存储表示不再存在链接节点的空值NULL。
图8示出了根据实施例的图5的映射表MT的另一示例性实施例MTb。
参考图8,映射表MTb可以包括多个快照条目81至86。详细地,映射表MTb可以包括与第一键K1对应的快照条目81和82、与第二键K2对应的快照条目83至85、和与第三键K3对应的快照条目86。在实施例中,每一个快照条目可以包括快照ID、键、PPN和标志(flag)。这里,该标志可以指示对应的快照条目是否与最新快照条目对应。如果对应的快照条目是最新快照条目,则该标志可以具有第一标志值(例如,1),并且如果对应的快照条目不是最新快照条目,则该标志可以具有第二标志值(例如,0)。
例如,快照条目81可以对应于与第一键K1对应的最新快照条目,因此快照条目81的标志可以具有第一标志值。另一方面,快照条目82可以不对应于与第一键K1对应的最新快照条目,因此快照条目82的标志可以具有第二标志值。当从主机接收到正常读取请求时,存储设备可以检查包括在映射表MTb中的标志,基于被检查的标志搜索最新快照条目,并且基于最新快照条目来执行读取操作。
图9是图示存储系统10a的实施例的框图。参考图9,存储系统10a可以包括存储设备100a和主机200,并且存储设备100a可以包括控制器110a、NVM 120和易失性存储器(VM)130。根据图1的存储设备100的修改实施例实现存储设备100a,并且省略重复的描述。控制器110a可以包括快照条目管理器SM和第一映射表MT1。第二映射表MT2可以在VM 130中提供,并且VM 130可以被布置在控制器110a的外部。在实施例中,快照条目管理器SM可以在第一映射表MT1中存储多个快照条目中的最新快照条目,并且可以在第二映射表MT2中存储其他(即,较旧的)快照条目。
图10是图示图9的控制器110a的实施例的框图。参考图10,控制器110a可以包括可以通过总线115彼此通信的处理器111、存储器112'、主机接口113、NVM接口114和VM接口116。在实施例中,第一映射表MT1可以被加载到存储器112'中,并且第二映射表MT2可以被加载到VM 130中。例如,存储器112'可以是SRAM,并且VM 130可以是DRAM。在下文中,将参考图11更详细地描述第一映射表MT1和第二映射表MT2。
图11A示出了图10的第一映射表MT1a的示例性实施例。参考图9和图11A,第一映射表MT1a可以存储分别与多个键K1至K3对应的最新快照条目111a至111c。第一映射表MT1a可以被加载到包括在控制器110a中的存储器112'(例如,SRAM)中,因此可以响应于正常读取请求而快速地执行读取操作。例如,当从主机200接收到包括第一键K1的正常读取请求时,存储设备100a可以搜索第一映射表MT1a以找到与第一键K1对应的最新快照条目111a,并且可以基于包括在最新快照条目111a中的物理地址PPN3,对NVM 120执行读取操作。
图11B示出了图10的第二映射表MT2a的示例性实施例。参考图11B,第二映射表MT2a可以存储分别与多个键K1至K3对应的快照条目111d至111f。例如,当从主机200接收到包括第一键K1和第一快照ID ID0的快照读取请求时,存储设备100a可以搜索第二映射表MT2a以找到与第一键K1和第一快照ID ID0对应的快照条目111d,并且可以基于包括在快照条目111d中的物理地址PPN1,对NVM 120执行读取操作。
图12是示出存储设备的操作方法的实施例的流程图。参考图12,根据本实施例的存储设备的操作方法可以与生成快照条目的方法对应以便支持存储设备中的快照功能。例如,根据本实施例的操作方法可以在图1的存储设备100或图9的存储设备100a中按时间顺序(time-serially)执行。以上参考图1至11B描述的细节可以应用于本实施例。
在操作S110中,存储设备可以从主机接收包括第一键、第一值和第一快照ID的第一命令。在操作S130中,存储设备可以响应于接收到的第一命令而生成第一快照条目。在实施例中,第一快照条目可以包括第一快照ID、第一键和第一物理地址,并且第一物理地址可以与NVM 120中在其中写入第一值的PPN对应。例如,快照条目管理器SM可以生成第一快照条目并且可以在映射表MT中存储所生成的第一快照条目。
在操作S150中,存储设备可以从主机接收包括第一键、第二值和第二快照ID的第二命令。在操作S150之前,主机可以生成第二快照ID。在操作S170中,存储设备可以响应于接收到的第二命令而生成第二快照条目。在实施例中,第二快照条目可以包括第二快照ID、第一键和第二物理地址,并且第二物理地址可以与NVM 120中在其中写入第二值的PPN对应。例如,快照条目管理器SM可以生成第二快照条目,并且可以在映射表MT中存储所生成的第二快照条目。
图13是图示主机200与存储设备100之间的操作的实施例的流程图。根据本实施例的主机200与存储设备100之间的操作可以与图12的实施方式示例对应。
参考图13,在操作S210中,主机200可以向存储设备100发送包括第一键K1和第一值V1a的第一元组131、和包括第一快照ID ID0的第一命令(例如,放入(put)命令)。此时,可以将第一快照ID ID0分配给第一元组131。在操作S220中,存储设备100可以对第一元组131执行写入操作。例如,第一键K1可以是'123',并且第一值V1a可以是'ABC'。在操作S230中,存储设备100可以向主机200发送表示完成对第一元组131的写入操作的响应消息。在一些实施例中,在操作S210和S220之间,主机200可以向存储设备100发送包括第二键的第二元组和包括第一快照ID的命令。在这种情况下,存储设备100可以对第一和第二元组顺序地执行写入操作,并且随后可以向主机200发送表示完成对第一和第二元组的写入操作的响应消息。
在操作S240中,主机200可以生成第二快照ID ID1。在操作S250中,主机200可以向存储设备100发送包括第一键K1和第二值V1b的第二元组132、和包括第二快照ID ID1的第二命令(例如,放入命令)。此时,可以将第二快照ID ID1分配给第二元组132。在操作S260中,存储设备100可以对第二元组132执行写入操作。例如,第二值V1b可以是'GHI'。在操作S270中,存储设备100可以向主机200发送表示完成对第二元组132的写入操作的响应消息。
图14是图示主机200、控制器110和NVM 120之间的操作的实施例的流程图。根据本实施例的主机200、控制器110和NVM 120之间的操作可以与图13的实施方式示例对应。在下文中,将参考图1和图14来描述根据本实施例的操作。
在操作S300中,主机200可以向控制器110发送包括第一键K1、第一值V1a和第一快照ID ID0的第一命令(例如,放入命令)。在操作S310中,控制器110可以更新映射表141。详细地,控制器110可以生成包括第一快照ID ID0、第一键K1(例如,'123')和第一物理地址(例如,PPN1)的第一快照条目,并且可以将生成的第一快照条目存储在映射表141中。
在操作S315中,控制器110可以将包括第一值V1a和第一物理地址PPN1的写入命令发送到NVM 120。在操作S320中,NVM 120可以在第一物理地址PPN1中写入第一值V1a(例如,'ABC')。在操作S330中,NVM 120可以向控制器110发送表示完成对第一值V1a的写入操作的响应消息。在操作S340中,控制器110可以向主机200发送表示完成写入第一键K1和第一值V1a的响应消息。
在操作S350中,主机200可以生成第二快照ID ID1。在操作S360中,主机200可以向控制器110发送包括第一键K1、第二值V1b和第二快照ID ID1的命令(例如,放入命令)。在操作S370中,控制器110可以更新映射表141。详细地,控制器110可以生成包括第二快照IDID1、第一键K1和第二物理地址(例如,PPN3)的第二快照条目,并且可以将生成的第二快照条目存储在映射表141中。
在操作S375中,控制器110可以将包括第二值V1b和第二物理地址PPN3的写入命令发送到NVM 120。在操作S380中,NVM 120可以在第二物理地址PPN3处写入第二值V1b(例如,'GHI')。在操作S390中,NVM 120可以向控制器110发送表示完成对第二值V1b的写入操作的响应消息。在操作S395中,控制器110可以向主机200发送表示完成对第一键K1和第二值V1b的写入操作的响应消息。
图15是图示主机200和存储设备100之间的操作的实施例的流程图。根据本实施例的主机200和存储设备100之间的操作可以在图14的操作S395之后执行。在实施例中,存储设备100可以支持能够更新快照条目的读取/写入快照功能。
参考图15,在操作S410中,主机200可以向存储设备100发送包括第一键K1、第三值V1c和第二快照ID ID1的命令(例如,更新命令)。在操作S420中,控制器110可以通过使用映射表151来执行更新。详细地,快照条目管理器SM可以将包括在图14的映射表141中的第二快照条目更正为通过更新而获得的第二快照条目,以将图14的映射表141更新为映射表151。通过该更新而获得的第二快照条目可以包括第二快照ID ID1、第一键K1和第三物理地址(例如,PPN7)。
在操作S430中,控制器110可以向NVM 120发送包括第三值V1c和第三物理地址PPN7的写入命令。在操作S440中,NVM 120可以在第三物理地址PPN7处写入第三值V1c(例如,'JKL')。在操作S450中,NVM 120可以向控制器110发送表示完成对第三值V1c的写入操作的响应消息。在操作S460中,控制器110可以向主机200发送表示完成对第一键K1和第三值V1c的写入操作的响应消息。
图16是示出主机200和存储设备100之间的操作的实施例的流程图。根据本实施例的主机200和存储设备100之间的操作可以在图14的操作S395之后执行。在实施例中,存储设备100可以支持不能更新快照条目的只读快照功能。
参考图16,在操作S510中,主机200可以生成第三快照ID ID2。在操作S520中,主机200可以向控制器110发送包括第一键K1、第三值V1c和第三快照ID ID2的命令(例如,放入命令)。在操作S530中,控制器110可以通过使用映射表161来执行更新操作。详细地,快照条目管理器SM可以生成包括第三快照ID ID2、第一键K1和第三物理地址(例如,PPN7)的第三快照条目,并且可以将生成的第三快照存储在映射表161中。
在操作S540中,控制器110可以将包括第三值V1c和第三物理地址PPN7的写入命令发送到NVM 120。在操作S550中,NVM 120可以在第三物理地址PPN7处写入第三值V1c(例如,'JKL')。在操作S560中,NVM 120可以向控制器110发送表示完成对第三值V1c的写入操作的响应消息。在操作S570中,控制器110可以向主机200发送表示完成对第一键K1和第三值V1c的写入操作的响应消息。
图17是图示存储设备的操作方法的实施例的流程图。参考图17,根据本实施例的存储设备的操作方法可以与支持快照功能的存储设备的值读取方法对应。例如,根据本实施例的操作方法可以在图1的存储设备100或图9的存储设备100a中按时间顺序执行。以上参考图1至图11B描述的细节可以应用于本实施例。
在操作S610中,存储设备可以在映射表中存储与第一键对应的多个快照条目。在操作S620中,存储设备可以从主机接收包括第一键的读取命令。在操作S630中,存储设备可以确定该读取命令是否包括快照ID。作为该确定的结果,当确定读取命令包括快照ID时,可以执行操作S640。当确定读取命令不包括快照ID时,可以执行操作S650。在操作S640中,可以基于与快照ID对应的快照条目来执行读取操作,并且操作S640可以被称为快照读取操作。在操作S650中,可以基于最新快照条目来执行读取操作,并且操作S650可以被称为正常读取操作。
图18是图示主机200与存储设备100之间的操作的实施例的流程图。根据本实施例的主机200与存储设备100之间的操作可以与图17的实施方式示例对应。
参考图18,在操作S710中,主机200可以向存储设备100发送包括第一键K1的第一命令(例如,获取(get)命令)。由于第一命令不包括快照ID,因此第一命令可以与正常读取请求对应。在操作S720中,存储设备100可以对与第一键K1对应的值执行读取操作。详细地,存储设备100可以读取针对第一键K1的多个元组181和182中的与最新快照ID对应的第二元组182中所包括的第二值V1b(例如,GHI)。在操作S730中,存储设备100可以向主机200发送包括第二值V1b的响应消息。
在操作S740中,主机200可以向存储设备100发送包括第一键K1和第一快照ID ID0的第二命令(例如,获取命令)。由于第二命令包括快照ID,因此第二命令可以与快照读取请求对应。在操作S750中,存储设备100可以对与第一键K1对应的值执行读取操作。详细地,存储设备100可以读取包括在针对第一键K1的多个元组181和182中的与第一快照ID ID0对应的第一元组181中的第一值V1a(例如,ABC)。在操作S760中,存储设备100可以向主机200发送包括第一值V1a的响应消息。
图19是示出主机200、控制器110和NVM 120之间的操作的实施例的流程图。根据本实施例的主机200、控制器110和NVM 120之间的操作可以与图18的实施方式示例对应。在下文中,将参考图1和图19来描述根据本实施例的操作。
在操作S800中,主机200可以向控制器110发送包括第一键K1的第一读取命令(例如,获取命令)。在操作S810中,控制器110可以搜索映射表191。详细地,控制器110可以搜索与第一键K1对应的多个快照条目以找到多个快照条目中与作为最新快照ID的第二快照IDID1对应的第二快照条目。控制器110可以基于第二快照条目来确定要对其执行读取操作的物理地址PPN3。
在操作S820中,控制器110可以向NVM 120发送包括物理地址PPN3的读取命令。在操作S830中,NVM 120可以读取在物理地址PPN3处存储的第二值V1b(例如,'DEF')。在操作S840中,NVM 120可以向控制器110发送包括第二值V1b的响应消息。在操作S845中,控制器110可以向主机200发送包括第二值V1b的响应消息。
在操作S850中,主机200可以向控制器110发送包括第一键K1和第一快照ID ID0的第二读取命令(例如,获取命令)。在操作S860中,控制器110可以搜索映射表191。详细地,控制器110可以搜索与第一键K1对应的多个快照条目以找到多个快照条目中与第一快照IDID0对应的第一快照条目。控制器110可以基于第一快照条目来确定要对其执行读取操作的物理地址PPN1。
在操作S870中,控制器110可以向NVM 120发送包括物理地址PPN1的读取命令。在操作S880中,NVM 120可以读取在物理地址PPN1处存储的第一值V1a(例如,'ABC')。在操作S890中,NVM 120可以向控制器110发送包括第一值V1a的响应消息。在操作S895中,控制器110可以向主机200发送包括第一值V1a的响应消息。
图20是图示存储设备的操作方法的实施例的流程图。参考图20,根据本实施例的存储设备的操作方法可以与支持快照功能的存储设备的快照条目删除方法对应。例如,根据本实施例的操作方法可以在图1的存储设备100或图9的存储设备100a中按时间顺序执行。以上参考图1至图11B描述的细节可以应用于本实施例。
在操作S910中,存储设备可以将多个快照条目存储在映射表中。在操作S920中,存储设备可以从主机接收包括快照ID的删除命令。在操作S930中,存储设备可以确定删除命令是否包括第一键。在这种情况下,第一键可以与映射表中存储的多个快照条目中的至少一个中包括的任意键对应。作为该确定的结果,当确定删除命令包括第一键时,可以执行操作S940。当确定删除命令不包括第一键时,可以执行操作S950。在操作S940中,存储设备可以删除与快照ID和第一键对应的快照条目。在操作S950中,存储设备可以删除与快照ID对应的至少一个快照条目。
图21是图示主机200与存储设备100之间的操作的实施例的流程图。根据本实施例的主机200与存储设备100之间的操作可以与图20的实施方式示例对应。
参考图21,在操作S1010中,主机200可以向存储设备100发送包括第一键K1和第一快照ID ID0的删除命令。在操作S1020中,存储设备100可以从存储在映射表中的多个快照条目中删除与第一键K1和第一快照ID ID0对应的快照条目。详细地,存储设备100可以从与第一键K1对应的第一元组211和第二元组212中删除与第一快照ID ID0对应的第一元组211。在操作S1030中,存储设备100可以向主机200发送表示完成快照条目的删除的响应消息。
在操作S1040中,主机200可以向存储设备100发送包括第一键K1的第一读取命令(例如,获取命令)。在操作S1050中,存储设备100可以对与第一键K1对应的值执行读取操作。详细地,存储设备100可以读取包括在针对第一键K1的第二元组212中的第二值V1b(例如,GHI)。在操作S1060中,存储设备100可以向主机200发送包括第二值V1b的响应消息。
在操作S1070中,主机200可以向存储设备100发送包括第一键K1和第一快照IDID0的第二读取命令(例如,获取命令)。在操作S1080中,存储设备100可以对与第一键K1和第一快照ID ID0对应的值执行读取操作。然而,由于在操作S1020中删除了与第一键K1和第一快照ID ID0对应的第一元组211,因此存储设备100在读取操作中失败。在操作S1090中,存储设备100可以向主机200发送表示读取失败的响应消息。
图22是图示主机200、控制器110和NVM 120之间的操作的实施例的流程图。根据本实施例的主机200、控制器110和NVM 120之间的操作可以与图21的实施方式示例对应。在下文中,将参考图1和图22来描述根据本实施例的操作。
在操作S1100中,主机200可以向控制器110发送包括第一键K1和第一快照ID ID0的删除命令。在操作S1110中,控制器110可以在映射表221中删除与第一键K1和第一快照IDID0对应的快照条目。在操作S1120中,控制器110可以向主机200发送表示完成快照条目的删除的响应消息。
在操作S1130中,主机200可以向控制器110发送包括第一键K1的第一读取命令(例如,获取命令)。在操作S1140中,控制器110可以搜索映射表221。详细地,控制器110可以找到与第一键K1对应的快照条目,并且可以基于快照条目确定要对其执行读取操作的物理地址PPN3。
在操作S1150中,控制器110可以向NVM 120发送包括PPN3的读取命令。在操作S1160中,NVM 120可以读取在PPN3中存储的第二值V1b(例如,'GHI')。在操作S1170中,NVM120可以向控制器110发送包括第二值V1b的响应消息。在操作S1175中,控制器110可以向主机200发送包括第二值V1b的响应消息。
在操作S1180中,主机200可以向控制器110发送包括第一键K1和第一快照ID ID0的第二读取命令(例如,获取命令)。在操作S1190中,控制器110可以搜索映射表221。然而,由于在操作S1110中删除了与第一键K1和第一快照ID ID0对应的快照条目,因此控制器110无法找到对应的快照条目。在操作S1195中,控制器110可以向主机200发送表示读取失败的响应消息。
图23图示了快照条目删除操作的实施例。根据本实施例的快照条目删除操作可以与图22的操作S1110的修改示例对应。在下文中,将参考图22和图23描述根据本实施例的快照条目删除操作。
K2P映射表231可以包括多个快照条目,并且与相同键对应的快照条目可以被实现为链接列表。例如,与第二键K2对应的第一到第三快照条目231a到231c可以被实现为链接列表,第二快照条目231b的存储地址ADDR2可以被存储在第三快照条目231c的链接区域中,并且第一快照条目231a的存储地址ADDR3可以被存储在第二快照条目231b的链接区域中。
响应于包括第二键K2和第二快照ID ID1的删除命令,存储设备100可以在K2P映射表231中删除与第二键K2和第二快照ID ID1对应的第二快照条目231b,因此可以通过使用更新的K2P映射表232来更正K2P映射表231。详细地,存储设备100可以将存储在第三快照条目231c的链接区域中的存储地址ADDR2更正为第一快照条目231a的存储地址ADDR3,因此第三快照条目231c可以链接到第一快照条目231a。以这种方式,由于删除了第二快照条目231b,因此在物理地址PPN4处存储的值(例如,'JKL')可能变为NVM 233中的无效数据。
图24是图示主机200与存储设备100之间的操作的实施例的流程图。根据本实施例的主机200与存储设备100之间的操作可以与图20的实施方式示例对应。
参考图24,在操作S1210中,主机200可以向存储设备100发送包括第一快照ID ID0的删除命令。在操作S1220,存储设备100可以删除在存储映射表中的多个快照条目中与第一快照ID ID0对应的至少一个快照条目。详细地,存储设备100可以删除与第一键K1对应的元组241和与第二键K2对应的元组243。在操作S1230中,存储设备100可以向主机200发送表示完成快照条目的删除的响应消息。
在操作S1240中,主机200可以向存储设备100发送包括第一键K1的第一读取命令(例如,获取命令)。在操作S1250中,存储设备100可以对与第一键K1对应的值执行读取操作。详细地,存储设备100可以读取包括在针对第一键K1的第二元组242中的第二值V1b(例如,GHI)。在操作S1260中,存储设备100可以向主机200发送包括第二值V1b的响应消息。
在操作S1270中,主机200可以向存储设备100发送包括第一键K1和第一快照IDID0的第二读取命令(例如,获取命令)。在操作S1280中,存储设备100可以对与第一键K1和第一快照ID ID0对应的值执行读取操作。然而,由于在操作S1220中删除了与第一键K1和第一快照ID ID0对应的元组241,因此存储设备100在读取操作中失败。在操作S1290中,存储设备100可以向主机200发送表示读取失败的响应消息。
图25是示出主机200与存储设备100之间的操作的实施例的流程图。
参考图25,在操作S1310中,主机200可以向存储设备100发送包括第一键K1和第一值V1a的第一命令(例如,放入命令)。在操作S1320中,存储设备100可以对第一键K1和第一值V1a执行写入操作。在操作S1325中,存储设备100可以向主机200发送表示完成第一值V1a的写入的响应消息。
在操作S1330中,存储设备100可以生成第一快照ID ID0。在实施例中,存储设备100可以自主地生成快照ID。在实施例中,存储设备100可以在预定时段生成快照ID。此外,存储设备100可以生成与第一快照ID ID0对应的第一快照条目251a,并且可以将生成的第一快照条目251a存储在映射表251中。在这种情况下,第一快照条目251a可以对应于映射数据,该映射数据与在生成第一快照ID ID0时预先存储的第一键K1和第一值V1a相关联,并且可以包括第一快照ID ID0、第一键K1和第一物理地址PPN1。在操作S1335中,存储设备100可以向主机200发送表示完成第一快照ID ID0的生成的响应消息。
在操作S1340中,主机200可以向存储设备100发送包括第一键K1和第二值V1b的第二命令(例如,放入命令)。在操作S1350中,存储设备100可以对第一键K1和第二值V1b执行写入操作。在操作S1355中,存储设备100可以向主机200发送表示完成第二值V1b的写入的响应消息。
在操作S1360中,存储设备100可以生成第二快照ID ID1。而且,存储设备100可以生成与第二快照ID ID1对应的第二快照条目251b,并且可以将生成的第二快照条目251b存储在映射表251中。在这种情况下,第二快照条目251b可以对应于映射数据,该映射数据与在生成第二快照ID ID1时预先存储的第一键K1和第二值V1b相关联,并且可以包括第二快照ID ID1、第一键K1和第二物理地址PPN3。在操作S1365中,存储设备100可以向主机200发送表示完成第二快照ID ID1的生成的响应消息。
在操作S1370中,主机200可以向存储设备100发送包括第一键K1和第一快照IDID0的读取命令(例如,获取命令)。在操作S1380中,响应于读取命令,存储设备100可以在生成第一快照ID ID0时读取与第一键K1对应的第一值V1a。在操作S1390中,存储设备100可以向主机200发送包括第一值V1a的响应消息。
图26示出了网络系统1000的实施例。
参考图26,网络系统1000可以包括服务器系统(或服务器)1100、和通过网络NET与服务器系统1100通信的多个终端1210至1230(例如,计算节点)。服务器系统1100可以包括服务器1110和SSD 1120。在这种情况下,服务器1110可以与根据上述实施例的主机对应,并且SSD 1120可以与根据上述实施例的存储设备对应。在实施例中,SSD 1120可以被实现为支持快照功能的SSD,并且可以通过使用以上参考图1至图25描述的实施例来实现。
服务器1110可以处理从连接到网络NET的多个终端1210到1230发送的请求。在实施例中,服务器1110可以向SSD 1120发送包括快照ID的命令。在实施例中,SSD 1120可以针对相同键生成分别与多个快照ID对应的多个快照条目。在实施例中,SSD 1120可以通过使用所生成的多个快照条目来对值执行写入操作和读取操作。
图27示出了网络系统2000的实施例。
参考图27,网络系统2000可以包括客户端组2100和数据中心2200。客户端组2100可以包括通过第一网络NET1(例如,因特网)与数据中心2200通信的多个客户端设备C。数据中心2200可以是收集所有各种数据并提供服务的装备,并且可以包括通过第二网络NET2(例如,局域网(LAN)或内联网)彼此通信的应用服务器组2210、数据库服务器组2220和对象高速缓存服务器组2230。
应用服务器组2210可以包括多个应用服务器设备AS。应用服务器设备AS可以处理从客户端组2100接收的请求,并且可以根据客户端组2100的请求存取数据库服务器组2220或对象高速缓存服务器组2230。数据库服务器组2220可以包括多个数据库服务器设备DS,其存储通过应用服务器设备AS的处理而获得的数据。对象高速缓存服务器组2230可以包括多个对象高速缓存服务器设备OCS,其临时存储在数据库服务器设备DS中存储的数据或从数据库服务器设备DS读取的数据。因此,对象高速缓存服务器组2230可以在应用服务器设备AS和数据库服务器设备DS之间执行高速缓存功能。在本实施例中,对象高速缓存服务器设备OCS中的每一个可以是支持快照功能的键值存储设备,并且可以通过使用以上参考图1至图25描述的实施例来实现。
图28图示了电子设备3000的实施例。
参考图28,电子设备3000可以包括处理器3100、存储器设备3200、存储设备3300、调制解调器3400、输入/输出(I/O)设备3500以及电源3600。在本实施例中,存储设备3300可以是支持快照功能的键值存储设备,并且可以通过使用以上参考图1至图25描述的实施例来实现。在实施例中,存储设备3300可以接收包括快照ID的命令。在实施例中,存储设备3300可以针对相同的键生成分别与多个快照ID对应的多个快照条目。在实施例中,存储设备3300可以通过所生成的多个快照条目对值执行写入操作和读取操作。
尽管已经参考其实施例具体地示出和描述了本发明构思,但是应该理解,在不脱离所附权利要求的主旨和范围的情况下,可以在其中进行形式和细节上的各种改变。

Claims (16)

1.一种方法,包括:
键值存储设备,从主机接收第一命令,所述第一命令包括第一键、第一值和第一快照标识ID;
响应于接收到的第一命令,所述键值存储设备生成第一快照条目;
所述键值存储设备从主机接收包括所述第一键、第二值和第二快照ID的第二命令;以及
响应于接收到的第二命令,所述键值存储设备生成第二快照条目,
其中,所述键值存储设备还包括其中加载了存储有所述第一和第二快照条目的映射表的映射表存储器;
其中,所述第一快照条目包括第一快照ID、第一键、在所述键值存储设备的非易失性存储器中写入所述第一值的第一物理地址、以及第一标志和第一链接区域之一,以及
其中,所述第二快照条目包括第二快照ID、所述第一键,在所述键值存储设备的非易失性存储器中写入所述第二值的第二物理地址、以及第二标志和第二链接区域之一,
其中,当所述第一快照条目包括所述第一标志并且所述第二快照条目包括所述第二标志时,所述第一标志具有指示所述第一快照条目不是最新快照条目的第一标志值,并且所述第二标志具有指示所述第二快照条目是所述最新快照条目的第二标志值,以及
其中,当所述第一快照条目包括所述第一链接区域并且所述第二快照条目包括所述第二链接区域时,所述第一和第二快照条目以所述第二快照条目到所述第一快照条目的顺序被实现为链接列表,并且第二链接区域被配置为在其中存储在映射表存储器中存储所述第一快照条目的存储器地址。
2.如权利要求1所述的方法,还包括:
所述键值存储设备从主机接收包括第一键的读取命令;以及
响应于接收到的读取命令,所述键值存储设备基于所述第二快照条目从所述非易失性存储器中读取所述第二值。
3.如权利要求1所述的方法,还包括以下中的至少一个:
响应于从主机接收到的包括第一快照ID和第一键的第一读取命令,所述键值存储设备基于所述第一快照条目从所述非易失性存储器中读取所述第一值;以及
响应于从主机接收到的包括第二快照ID和第一键的第二读取命令,所述键值存储设备基于所述第二快照条目从所述非易失性存储器中读取所述第二值。
4.如权利要求1所述的方法,其中,所述方法还包括以下中的至少一个:
响应于从主机接收到的包括第一快照ID的第一删除命令,所述键值存储设备从所述多个快照条目中删除与所述第一快照ID对应的至少一个快照条目;以及
响应于从主机接收到的包括第一快照ID和第一键的第二删除命令,所述键值存储设备从所述多个快照条目中删除所述第一快照条目。
5.如权利要求4所述的方法,还包括以下中的至少一个:
响应于从主机接收到的包括第一键的第一读取命令,所述键值存储设备基于所述第二快照条目从所述非易失性存储器中读取所述第二值;以及
响应于从主机接收到的包括第一快照ID和第一键的第二读取命令,所述键值存储设备向主机提供失败消息。
6.如权利要求1所述的方法,还包括:
响应于所述第一命令,所述键值存储设备在所述非易失性存储器的所述第一物理地址处写入所述第一值;以及
响应于所述第二命令,所述键值存储设备在所述非易失性存储器的所述第二物理地址处写入所述第二值。
7.如权利要求1所述的方法,其中,所述第一链接区域被配置为在其中存储指示在所述第一快照条目之前不存在生成的针对所述键的快照条目的状态信息。
8.如权利要求1所述的方法,其中:
所述键值存储设备还包括动态随机存取存储器DRAM和静态随机存取存储器SRAM,以及
所述第一快照条目被存储在DRAM中,并且所述第二快照条目被存储在SRAM中。
9.如权利要求1所述的方法,其中,所述第一标志值为1和0中的一个,并且所述第二标志值为1和0中与所述第一标志相反的一个。
10.一种方法,包括:
键值存储设备在映射表存储器中存储映射表,所述映射表具有针对第一键的多个快照条目,所述多个快照条目分别与多个快照标识ID对应;
所述键值存储设备从主机接收第一读取命令,所述第一读取命令包括第一键;
响应于接收到的第一读取命令,所述键值存储设备基于所述多个快照条目中的最新快照条目对非易失性存储器执行读取操作;
所述键值存储设备从主机接收第二读取命令,所述第二读取命令包括第一快照ID和第一键;以及
响应于接收到的第二读取命令,所述键值存储设备基于所述多个快照条目中与第一快照ID对应的第一快照条目对所述非易失性存储器执行第二读取操作,
其中,针对所述第一键的所述多个快照条目至少包括所述第一快照条目和第二快照条目;
其中,所述第一快照条目包括所述第一快照ID、所述第一键、在所述非易失性存储器中写入第一值的第一物理地址、以及第一标志和第一链接区域之一,以及
其中,所述第二快照条目包括第二快照ID、所述第一键,在所述非易失性存储器中写入第二值的第二物理地址、以及第二标志和第二链接区域之一,
其中,当所述第一快照条目包括所述第一标志并且所述第二快照条目包括所述第二标志时,所述第一标志具有指示所述第一快照条目不是所述最新快照条目的第一标志值,并且所述第二标志具有指示所述第二快照条目是所述最新快照条目的第二标志值,以及
其中,当所述第一快照条目包括所述第一链接区域并且所述第二快照条目包括所述第二链接区域时,所述第一和第二快照条目以所述第二快照条目到所述第一快照条目的顺序被实现为链接列表,并且所述第二链接区域被配置为在其中存储在所述映射表存储器中存储所述第一快照条目的存储器地址。
11.如权利要求10所述的方法,其中,在映射表中存储所述多个快照条目包括:
从主机接收第一命令,所述第一命令包括第一键、第一值和第一快照ID;
响应于接收到的第一命令,所述键值存储设备生成第一快照条目;
从主机接收第二命令,所述第二命令包括第一键、第二值和第二快照ID;以及
响应于接收到的第二命令,所述键值存储设备生成第二快照条目。
12.如权利要求10所述的方法,其中,所述第一标志值为1和0中的一个,并且所述第二个标志值为1和0中与所述第一标志相反的一个。
13.一种能够与主机通信的键值存储设备,所述键值存储设备包括:
非易失性存储器,被配置为存储与键对应的值;以及
控制器,被配置为从主机接收包括快照标识ID、键和值的命令,并且响应于所述命令来生成包括快照ID、键、在所述非易失性存储器中写入所述值的物理地址,以及第一标志和第一链接区域之一的第一快照条目,
其中,当所述第一快照条目包括所述第一标志时,所述第一标志具有指示所述第一快照条目不是针对所述键的最新快照条目的第一标志值和指示所述第一快照条目是针对所述键的所述最新快照条目的第二标志值,以及
其中,当所述第一快照条目包括所述第一链接区域时,所述第一链接区域被配置为在其中存储如下中的一个:在映射表存储器中存储之前的快照条目的第一地址,以及指示在所述第一快照条目之前不存在生成的针对所述键的其他快照条目的信息。
14.如权利要求13所述的键值存储设备,其中,所述控制器还被配置为以最新快照条目到所述之前的快照条目的顺序,将与键对应的多个快照条目实现为链接列表。
15.如权利要求14所述的键值存储设备,其中所述控制器还配置为使得:
当从主机接收到包括键的第一读取命令时,响应于所述第一读取命令,所述控制器基于与所述键对应的最新快照条目来控制对所述非易失性存储器的第一读取操作;以及
当从主机接收到包括键和第一快照ID的第二读取命令时,响应于所述第二读取命令,所述控制器基于与所述第一快照ID对应的第一快照条目来控制对所述非易失性存储器的第二读取操作。
16.如权利要求14所述的键值存储设备,其中所述映射表存储多个快照条目,并且其中,所述控制器还被配置为使得:
当从主机接收到包括快照ID的第一删除命令时,响应于所述第一删除命令,所述控制器删除所述映射表中与所述快照ID对应的至少一个快照条目;以及
当从主机接收到包括键和快照ID的第二删除命令时,响应于所述第二删除命令,所述控制器删除所述映射表中与所述键和所述快照ID对应的快照条目。
CN201810840685.9A 2017-09-20 2018-07-27 支持快照功能的键值存储设备及其操作方法 Active CN109521948B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020170121312A KR102406666B1 (ko) 2017-09-20 2017-09-20 스냅샷 기능을 지원하는 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법
KR10-2017-0121312 2017-09-20

Publications (2)

Publication Number Publication Date
CN109521948A CN109521948A (zh) 2019-03-26
CN109521948B true CN109521948B (zh) 2023-08-15

Family

ID=65720213

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810840685.9A Active CN109521948B (zh) 2017-09-20 2018-07-27 支持快照功能的键值存储设备及其操作方法

Country Status (4)

Country Link
US (1) US10891074B2 (zh)
KR (1) KR102406666B1 (zh)
CN (1) CN109521948B (zh)
SG (1) SG10201805093TA (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10949341B2 (en) * 2018-08-27 2021-03-16 Samsung Electronics Co., Ltd. Implementing snapshot and other functionality in KVSSD through garbage collection and FTL
US11334284B2 (en) * 2018-09-24 2022-05-17 Samsung Electronics Co., Ltd. Database offloading engine
US11036887B2 (en) 2018-12-11 2021-06-15 Micron Technology, Inc. Memory data security
EP3851950A1 (en) * 2020-01-15 2021-07-21 Samsung Electronics Co., Ltd. Storage device and operation method thereof
KR20210092361A (ko) 2020-01-15 2021-07-26 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법
WO2022098676A1 (en) * 2020-11-03 2022-05-12 Carefusion 303, Inc. Efficient storage of drug library editor entries
US20230418741A1 (en) * 2022-06-27 2023-12-28 Western Digital Technologies, Inc. Data storage device management system
US20240078032A1 (en) * 2022-09-06 2024-03-07 Western Digital Technologies, Inc. Metadata Management In Key Value Data Storage Device

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8880488B1 (en) * 2012-09-28 2014-11-04 Emc Corporation Efficient extent-based B-tree insertion
WO2016050112A1 (zh) * 2014-09-30 2016-04-07 华为技术有限公司 一种数据存储方法、存储装置及存储系统
WO2016122546A1 (en) * 2015-01-29 2016-08-04 Hewlett Packard Enterprise Development Lp Transactional key-value store
CN106990910A (zh) * 2015-11-23 2017-07-28 三星电子株式会社 存储设备和存储设备的操作方法

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010186341A (ja) * 2009-02-12 2010-08-26 Toshiba Corp メモリシステム
US9323775B2 (en) 2010-06-19 2016-04-26 Mapr Technologies, Inc. Map-reduce ready distributed file system
US9311327B1 (en) 2011-06-30 2016-04-12 Emc Corporation Updating key value databases for virtual backups
US8788788B2 (en) 2011-08-11 2014-07-22 Pure Storage, Inc. Logical sector mapping in a flash storage array
US8775773B2 (en) 2011-08-26 2014-07-08 Vmware, Inc. Object storage system
EP2689333B1 (en) 2012-07-06 2014-09-10 NEC Europe Ltd. Method and system for storing and reading data in or from a key value storage
US9311014B2 (en) * 2012-11-29 2016-04-12 Infinidat Ltd. Storage system and methods of mapping addresses of snapshot families
US20140344539A1 (en) 2013-05-20 2014-11-20 Kaminario Technologies Ltd. Managing data in a storage system
US9244993B1 (en) 2013-06-19 2016-01-26 Amazon Technologies, Inc. Management of application state data
JP6382819B2 (ja) 2013-08-21 2018-08-29 株式会社東芝 データベースシステム、ノード、管理装置、プログラムおよびデータ処理方法
US9152684B2 (en) 2013-11-12 2015-10-06 Netapp, Inc. Snapshots and clones of volumes in a storage system
KR20150081810A (ko) 2014-01-07 2015-07-15 한국전자통신연구원 데이터 저장장치에 대한 다중 스냅샷 관리 방법 및 장치
US10261960B2 (en) 2014-09-12 2019-04-16 Scality, S.A. Snapshots and forks of storage systems using distributed consistent databases implemented within an object store
US9569141B2 (en) 2014-03-28 2017-02-14 Intel Corporation Hash map support in a storage device
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
JP2016018384A (ja) 2014-07-08 2016-02-01 富士通株式会社 ストレージ制御装置、ストレージシステム、及びプログラム
JP6122557B2 (ja) 2014-09-26 2017-04-26 華為技術有限公司Huawei Technologies Co.,Ltd. ファイルマイグレーション方法及び装置、並びにストレージデバイス
US9438426B2 (en) 2014-10-03 2016-09-06 Seagate Technology Llc Key-value data storage device with hybrid architecture
US9519666B2 (en) 2014-11-27 2016-12-13 E8 Storage Systems Ltd. Snapshots and thin-provisioning in distributed storage over shared storage devices
US20160275089A1 (en) 2015-03-17 2016-09-22 Netapp, Inc. Methods for implementing nosql database snapshots and devices thereof
US10296219B2 (en) 2015-05-28 2019-05-21 Vmware, Inc. Data deduplication in a block-based storage system
US20170032005A1 (en) 2015-07-31 2017-02-02 Netapp, Inc. Snapshot and/or clone copy-on-write
US10565230B2 (en) 2015-07-31 2020-02-18 Netapp, Inc. Technique for preserving efficiency for replication between clusters of a network
US9740566B2 (en) 2015-07-31 2017-08-22 Netapp, Inc. Snapshot creation workflow
US10394660B2 (en) 2015-07-31 2019-08-27 Netapp, Inc. Snapshot restore workflow
US9904607B2 (en) * 2015-11-13 2018-02-27 International Business Machines Corporation Logical to physical table restoration from stored journal entries
US10235059B2 (en) 2015-12-01 2019-03-19 Netapp, Inc. Technique for maintaining consistent I/O processing throughput in a storage system
US10229009B2 (en) 2015-12-16 2019-03-12 Netapp, Inc. Optimized file system layout for distributed consensus protocol
WO2017168217A1 (en) * 2016-03-28 2017-10-05 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for adaptive flow control of link-state information from link-state source to border gateway protocol (bgp)
CN106802939B (zh) 2016-12-30 2020-04-03 华为技术有限公司 一种解决数据冲突的方法和系统
US10552372B2 (en) * 2017-01-31 2020-02-04 Microsoft Technology Licensing, Llc Systems, methods, and computer-readable media for a fast snapshot of application data in storage

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8880488B1 (en) * 2012-09-28 2014-11-04 Emc Corporation Efficient extent-based B-tree insertion
WO2016050112A1 (zh) * 2014-09-30 2016-04-07 华为技术有限公司 一种数据存储方法、存储装置及存储系统
WO2016122546A1 (en) * 2015-01-29 2016-08-04 Hewlett Packard Enterprise Development Lp Transactional key-value store
CN106990910A (zh) * 2015-11-23 2017-07-28 三星电子株式会社 存储设备和存储设备的操作方法

Also Published As

Publication number Publication date
CN109521948A (zh) 2019-03-26
KR20190032903A (ko) 2019-03-28
US20190087130A1 (en) 2019-03-21
SG10201805093TA (en) 2019-04-29
KR102406666B1 (ko) 2022-06-08
US10891074B2 (en) 2021-01-12

Similar Documents

Publication Publication Date Title
CN109521948B (zh) 支持快照功能的键值存储设备及其操作方法
US10503611B1 (en) Data protection management for distributed storage
US20180181324A1 (en) Data protection with erasure coding and xor
TWI516920B (zh) A control program, a control method of a host device, an information processing device, and a host device
US9317519B2 (en) Storage system for eliminating duplicated data
KR102545167B1 (ko) 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법
US11080143B2 (en) Systems and processes for data backup and recovery
KR102569545B1 (ko) 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법
JP2014232543A (ja) 制御プログラム、ホスト装置の制御方法、情報処理装置およびホスト装置
US11409456B2 (en) Methods to reduce storage capacity
CN107798063B (zh) 快照处理方法和快照处理装置
JP2011215835A (ja) 全文検索機能を備えるストレージ装置
US10929445B2 (en) Distributed search framework with virtual indexing
US20220398220A1 (en) Systems and methods for physical capacity estimation of logical space units
US20190332487A1 (en) Generic metadata tags with namespace-specific semantics in a storage appliance
US11010332B2 (en) Set-based mutual exclusion using object metadata tags in a storage appliance
US11106379B2 (en) Multi cloud asynchronous active/active transactional storage for availability
US20230342215A1 (en) Method to optimize storage partition rediscovery
CN109753231B (zh) 键值存储设备及操作其的方法
US11347778B2 (en) Scale-out indexing for a distributed search engine
US20240160373A1 (en) Coordinated Persistent Memory Data Mirroring
US20230350857A1 (en) Data replication using synthetic relationships between files
US11531644B2 (en) Fractional consistent global snapshots of a distributed namespace
US20240160355A1 (en) Asynchronous Persistent Memory Data Mirroring
US20210109806A1 (en) Approach to improve decompression performance by scatter gather compression units and also updating checksum mechanism

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
GR01 Patent grant
GR01 Patent grant