CN112988060A - 键值存储装置和用于操作键值存储装置的方法 - Google Patents
键值存储装置和用于操作键值存储装置的方法 Download PDFInfo
- Publication number
- CN112988060A CN112988060A CN202011484329.1A CN202011484329A CN112988060A CN 112988060 A CN112988060 A CN 112988060A CN 202011484329 A CN202011484329 A CN 202011484329A CN 112988060 A CN112988060 A CN 112988060A
- Authority
- CN
- China
- Prior art keywords
- key
- boot
- request
- value
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1072—Decentralised address translation, e.g. in distributed shared memory systems
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1466—Key-lock mechanism
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0626—Reducing size or complexity of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0891—Revocation or update of secret information, e.g. encryption key update or rekeying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7207—Details relating to flash memory management management of metadata or control data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
Abstract
公开了一种键值(KV)存储装置和用于操作键值存储装置的方法。所述KV存储装置可包括对象的存储设备,每个对象包括与键相关联的数据。主机接口逻辑可接收从存储设备读取与键相关联的数据的请求、将与键相关联的数据写入到存储设备的请求、和从存储设备获得启动数据的启动请求。启动请求处理器可使用存储设备处理启动请求。
Description
技术领域
发明构思总体涉及存储装置,更具体地,涉及可启动键值(KV)存储装置。
背景技术
键值固态驱动器(KV-SSD)提供了存储和访问数据的替代方式。主机将键分配给数据,而不是提供将SSD映射到装置上的物理块地址(PBA)的逻辑块地址(LBA)。如果该键相对于KV-SSD上的其他键是唯一的,则任何数据可存储在KV-SSD上。这导致减少的KV-SSD的指令集,通常,需要比存储与键相关联的值(PUT)、获取与键相关联的值(GET)、以及删除与键相关联的值(DELETE)的命令(特定命令名称可改变)略多的命令。
但目前KV-SSD不能启动。为了可启动,系统必须能够发送(块)命令以访问存储在装置上的特定位置中的信息。虽然硬盘驱动器和块接口SSD允许这样的命令,但是KV-SSD不支持这样的命令。因此,在使用KV-SSD的系统中,需要多个存储装置,KV-SSD和可启动的另一装置(用于操作系统)。
仍然需要一种允许KV装置为可启动装置的方式。
发明内容
技术问题
发明构思的目的是提供一种能够处理基于块的启动请求的键值存储装置及其操作方法。
技术方案
发明构思的实施例包括一种键值(KV)存储装置,KV存储装置包括:对象的存储设备,其中,每个对象包括与键相关联的数据;主机接口层,用于从主机计算机接收请求并返回所述请求的结果,所述请求包括:读取请求,用于从对象的存储设备获得与第一键相关联的第一数据;写入请求,用于将与第二键相关联的第二数据放入对象的存储设备;以及启动请求,用于从对象的存储设备获得启动数据;和启动请求处理器,使用对象的存储设备处理启动请求。
发明构思的实施例包括一种用于操作键值(KV)存储装置的方法,所述方法包括:在键值(KV)存储装置从主机计算机接收启动请求;至少部分地基于启动请求从KV存储装置获取启动数据;和将启动数据从KV存储装置返回到主机计算机。
发明构思的实施例包括一种物品,所述物品包括非暂时性存储介质,所述非暂时性存储介质具有存储在其上的指令,所述指令在由机器执行时导致:在键值(KV)存储装置从主机计算机接收启动请求;至少部分地基于启动请求从KV存储装置获取启动数据;和将启动数据从KV存储装置返回到主机计算机。
有益效果
根据示例性实施例,可提供一种键值存储装置,所述键值存储装置能够通过接收启动请求,对启动请求进行处理,并且将启动数据返回到主机计算机来处理基于块的启动请求。
附图说明
图1示出根据发明构思的实施例的包括可启动键值固态驱动器(KV-SSD)的机器。
图2示出图1的机器的附加细节。
图3示出图1的KV-SSD的细节。
图4示出示例分区表方案的细节。
图5A至图5B示出根据发明构思的实施例的图1的KV-SSD可如何存储启动信息。
图6示出图3中的将块启动请求转换成键值(KV)启动请求的启动请求处理器。
图7示出根据发明构思的实施例的图1的KV-SSD处理块启动请求的示例过程的流程图。
图8示出根据发明构思的实施例的图1的KV-SSD处理KV启动请求的示例过程的流程图。
具体实施方式
现在将详细参照发明构思的实施例,发明构思的示例在附图中示出。在下面的详细描述中,阐述了许多具体细节以使得能够彻底理解发明构思。然而,应当理解,本领域普通技术人员可在没有这些具体细节的情况下实践发明构思。在其他情况下,没有详细描述公知的方法、过程、组件、电路和网络,以免不必要地使实施例的多个方面模糊。
将理解,尽管在此可使用术语第一、第二等来描述各种元件,但是这些元件不应受这些术语限制。这些术语仅用于将一个元件与另一元件区分开来。例如,在不脱离发明构思的范围的情况下,第一模块可被称为第二模块,类似地,第二模块可被称为第一模块。
在此对发明构思的描述中使用的术语仅用于描述特定实施例的目的,并不意在限制发明构思。除非上下文另外清楚地指示,否则如在发明构思的描述和所附权利要求中所使用的,单数形式也意在包括复数形式。还将理解,如在此所使用的术语“和/或”表示且涵盖相关所列项中的一个或多个的任何和所有可能的组合。还将理解,当在本说明书中使用术语“包括”和/或“包含”时,表明存在陈述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、组件和/或它们的组。附图的组件和特征不必按比例绘制。
如何使块装置变得可启动被明确。本质上,装置访问逻辑块地址(LBA)0。对于KV装置没有相应的定义。但是如果KV装置符合主启动记录(MBR)或统一可扩展固件接口(UEFI)标准,则KV装置应该可以是可启动的。
因此,为了使KV装置可启动,KV装置应该能够处理(块)命令以读取在LBA 0的信息。这个处理可涉及读取存储在保留地址(例如,装置上的物理地址0)的信息,或者将启动信息存储在具有可不被装置的其他用户使用的特殊(保留)键的对象中。
如果KV装置被设计为将信息存储在特殊地址(诸如,LBA 0),则装置可能够处理特殊(块)命令(诸如,“读取LBA 0”或其等同物)。如果KV装置将启动信息存储在与保留键相关联的对象中,则这个对象可存储在装置上的任何地方。此外,KV装置可接收读取LBA 0的(块)命令(然后可使用保留键将其直接映射到GET命令)或读取与保留键相关联的数据的GET命令(假设计算机被设计为将KV命令发送给KV装置以启动KV装置并加载操作系统)。
当使用MBR时,使用8位的KV模拟分区需要分区ID。当使用UEFI时,KV模拟分区需要GUID(63C9EB50-B05B-11E8-B568-0800200C9A66)。
图1示出根据发明构思的实施例的包括可启动键值固态驱动器(KV-SSD)的机器。在图1中,示出机器105。机器105可包括处理器110。处理器110可以是任何种类的处理器,例如,Intel Xeon、Celeron、Itanium或Atom处理器、AMD Opteron处理器、ARM处理器等。虽然图1示出机器105中的单个处理器110,但是机器105可包括任何数量的处理器,每个处理器可以是单核处理器或多核处理器,并且可以以任何期望的组合进行混合。
机器105还可包括存储器115。存储器115可以是任何种类的存储器(诸如,闪存、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、持久性随机存取存储器、铁电随机存取存储器(FRAM)或非易失性随机存取存储器(NVRAM)(诸如,磁阻随机存取存储器(MRAM)))等。存储器115也可以是不同存储器类型的任何期望的组合。机器105还可包括可用于管理对存储器115的访问的存储器控制器120。
机器105还可包括存储装置125(被示出为键值固态驱动器(KV-SSD))。KV-SSD 125使用键值接口来访问数据,应用或操作系统可向KV-SSD 125提供键,然后KV-SSD 125可将该键映射到KV-SSD 125上的位置。然后KV-SSD 125可访问并返回存储在KV-SSD 125上的该位置的值。与由常规存储装置上的常规文件系统提供的复杂命令集不同,KV-SSD 125通常提供相当少的命令集,诸如,GET(用于获取与提供的键相关联的值)、PUT(用于存储提供给KV-SSD的值,该值与提供的键或与可被返回的KV-SSD生成的键相关联)、和ERASE(用于从KV-SSD删除与提供的键相关联的值并且从KV-SSD表去除键值关联)(KV-SSD 125也可支持其他命令,并且可使用与示出的命令名称不同的命令名称,但是原理通常如所描述的)。KV-SSD 125也可用如以下发明构思的实施例中所描述的支持对象存储的任何其他存储装置替换。处理器110可运行可支持对KV-SSD 125的访问的装置驱动器130。
尽管图1将机器105描绘为服务器(该服务器可以是独立服务器或机架服务器),但是发明构思的实施例可包括任何期望类型的机器105,而没有限制。例如,机器105可用台式计算机或膝上型计算机或可受益于发明构思的实施例的任何其他机器替换。机器105还可包括专用便携式计算机器、平板计算机、智能电话和其他计算机器。此外,可从KV-SSD 125访问数据的应用可位于另一机器中,所述另一机器与机器105分离并且经由穿过任何类型的一个或多个网络(有线、无线、全局等)的网络连接来访问机器105。
图2示出图1的机器105的附加细节。在图2中,通常,机器105包括一个或多个处理器110,处理器110可包括可用于协调机器105的组件的操作的时钟205和存储器控制器120。处理器110还可连接到存储器115,作为示例,存储器115可包括随机存取存储器(RAM)、只读存储器(ROM)或其他状态保存介质。处理器110还可连接到存储装置125和网络连接器210,网络连接器210可以是例如以太网连接器或无线连接器。处理器110还可连接到总线215,除其他组件之外,用户接口220和可使用输入/输出引擎225管理的输入/输出接口端口可附接到总线215。
图3示出图1的KV-SSD 125的细节。在图3中,KV-SSD 125可包括主机接口逻辑(HIL,或称为主机接口层)305、SSD控制器310和各种闪存芯片315-1至315-8(也称为“闪存存储装置”),闪存芯片315-1至315-8可被组织成各种通道320-1至320-4。主机接口逻辑305可管理KV-SSD 125与其他组件(诸如,图1的处理器110)之间的通信。这些通信可包括用于从KV-SSD 125读取数据的读取请求、用于将数据写入KV-SSD 125的写入请求、以及用于从KV-SSD 125删除数据的删除请求。主机接口逻辑305可管理仅单个端口上的接口,或者主机接口逻辑305可管理多个端口上的接口。可选地,KV-SSD 125可包括多个端口,每个端口可具有单独的主机接口逻辑305以管理该端口上的接口。发明构思的实施例还可混合这些可能性(例如,具有三个端口的SSD可具有用于管理一个端口的一个主机接口逻辑和用于管理另外两个端口的第二主机接口逻辑)。
SSD控制器310可使用闪存控制器(在图3中未示出)来管理闪存芯片315-1至315-8上的读取和写入操作以及垃圾收集和其他操作。在一个示例中,闪存芯片315-1至315-8可包括存储与启动键相关联的启动数据的启动对象。
在基于块的存储装置(特别是基于块的SSD)中,主机可将逻辑块地址(LBA)分配给数据,存储装置可将逻辑块地址(LBA)映射到物理块地址(PBA)。存储装置可保持这些映射的记录,从而使SSD和主机不必确保主机在数据的当前PBA上保持最新。主机简单地使用LBA,存储装置将LBA映射到PBA并返回适当的信息。如果将数据内部地移动到存储装置(如可能在例如SSD上的数据覆写或垃圾收集期间发生),则这种数据移动对主机是透明的(映射用数据的新PBA来更新)。将LBA映射到PBA的这种结构可被称为转换层或(特别是在SSD和使用闪存的其他装置的上下文中)闪存转换层。
相反,KV-SSD以不同的方式管理数据。数据(也称为值或数据值)可被分配给键(也称为对象键),而不是数据被分配给LBA。虽然这可能看起来仅仅是术语改变(“对象键”替换“LBA”),但是在对象键与LBA之间(以及在KV-SSD与基于块的SSD之间)存在其他差异。基于块的SSD中的块的大小在制造时是固定的。例如,在具有4KB块的基于块的SSD中,每个块的大小是4KB,没有灵活性。这个事实表明LBA也被划分为4KB单元以有效地映射到SSD上的块。另一方面,KV-SSD允许灵活的数据值大小。例如,值大小可在0B到2MB的范围内。此外,对象键大小也可改变,例如,从4B到255B。这些布置允许在如何存储数据方面可比基于块的SSD提供更大的灵活性。
因此,代替闪存转换层,KV-SSD 125可包括从对象键到存储数据值的地址的某种映射(诸如,转换层325)。转换层325可从对象键映射到在KV-SSD 125上存储相应数据的地址。转换层325还可存储附加数据,例如,对象有多大(以及因此整个对象可如何存储在KV-SSD 125上)。
虽然图3将KV-SSD 125示出为包括被组织成四个通道320-1至320-4的八个闪存芯片315-1至315-8,但是发明构思的实施例可支持被组织成任何数量的通道的任何数量的闪存芯片。类似地,虽然图3示出了KV-SSD的结构,但是其他存储装置(例如,硬盘驱动器)可使用不同的结构但是具有包括安全性和重复数据删除两者的类似潜在益处来实现。
主机接口逻辑305还可包括启动请求处理器330。启动请求处理器330可处理来自机器105的基本输入/输出系统(BIOS)的基于块的启动请求。除其他可能性之外,启动请求处理器330可使用具有由该处理器执行的合适软件的通用处理器、使用现场可编程门阵列(FPGA)或专用集成电路(ASIC)、或使用图形处理器(GPU)或通用GPU(GPGPU)等来实现。下面参照图5A至图5B进一步讨论启动请求处理器330的具体操作。虽然图3将启动请求处理器330示出为主机接口逻辑305的一部分,但是发明构思的实施例可将启动请求处理器330放置在其他位置,例如,在SSD控制器310内。
当存储装置用作启动装置时,计算机的基本输入/输出系统(BIOS)可尝试从存储装置加载特定信息。这个信息可用于启动操作系统的其余部分。当使用基于块的装置(诸如,硬盘驱动器或基于块的SSD)时,BIOS可发送从特定逻辑块地址(LBA)(诸如,LBA0)读取数据的请求。存储装置知道如何定位请求的数据,并且可将适当的信息返回到BIOS以开始操作系统的执行。
通常,存在两种方式可将这样的信息存储在存储装置上。一种方式是存储主启动记录(MBR)。MBR通常存储在装置的第一扇区上,并且占用512字节的存储。以下示出MBR的两种示例格式:表1示出现代标准MBR,而表2示出磁盘管理器(DM)MBR。
表1
表2
MBR的替代方案是使用全局唯一标识符(GUID)分区表(GPT)。GPT结构开始替换MBR作为启动信息的所选结构,但是由于较旧机器中的BIOS可能期望返回MBR,因此,存储装置可继续支持MBR的使用。下面的表3示出示例GPT头格式,并且下面的表4示出示例GUID分区条目格式,图4示出示例GUID分区表方案。
表3
表4
如上所述,为了访问MBR或GPT,计算机系统的BIOS通常发送读取存储装置上的特定块(诸如,LBA 0)的请求。但是键值(KV)存储装置不以基于块的存储装置那样的方式组织数据,也不处理基于块的读取请求。也没有明确定义的方法来从KV存储装置访问启动信息。因此,常规KV存储装置不能用作启动装置。
该问题存在三种解决方案。一种解决方案是建立特定的保留键,特定的保留键可在来自BIOS的KV请求中使用以获取启动数据。但是在建立这样的标准之前,这样的解决方案不可用。此外,虽然这样的解决方案向前可能是有用的,但是这样的解决方案对于假定存储装置可接收基于块的请求(并且可能不被更新以发出对启动数据的KV请求)的较旧的BIOS将不起作用。因此,这个解决方案将不对现有计算机系统和现有BIOS固件向后兼容。
第二解决方案是使图1的KV-SSD 125能够接收和处理基于块的启动请求。注意,这个解决方案不一定主张图1的KV-SSD 125可处理任何基于块的请求(尽管通常可将图1的KV-SSD 125配置为处理基于块的请求),相反,这个解决方案包括将图1的KV-SSD 125配置为“仅”处理来自BIOS的为了启动数据的基于块的请求。图5A示出图1的KV-SSD 125可被布置为存储启动数据以及图1的KV-SSD 125可被配置为如何处理这样的基于块的启动请求。
第三解决方案是配置图1的KV-SSD 125接收基于块的启动请求,将基于块的启动请求映射到KV请求,然后图1的KV-SSD 125可根据常规技术处理该KV请求。图5B示出图1的KV-SSD 125可被布置为存储启动数据以及图1的KV-SSD 125可被配置为如何处理这样的基于块的启动请求。
图5A示出图1的KV-SSD 125可被配置为响应于基于块的启动请求而直接从图1的KV-SSD 125读取启动数据的发明构思的实施例。在图5A中,图1的KV-SSD 125的第一部分可被保留以存储启动信息,非常类似于现有的基于块的存储装置。也就是说,在图1的KV-SSD125的地址0开始的扇区、块或其他存储段可被保留以存储启动数据(无论是如上参照表1和表2所述的MBR,还是如上参照表3、表4和图4所述的GPT)。然后,当图3的主机接口逻辑305从图1的机器105的BIOS接收到基于块的启动请求时,图3的启动请求处理器330可拦截该请求(图3的SSD控制器310可能无论如何都不能处理),从图1的KV-SSD 125的在地址0开始的部分访问启动数据,并将该启动数据返回到图1的机器105的BIOS。注意,在发明构思的这样的实施例中,仅图3的KV-SSD 125的第一部分被保留以用于MBR或GPT,所有剩余地址可用于存储对象(如常规KV-SSD那样)。虽然图5A示出为启动数据保留的512字节,但是发明构思的实施例可为启动数据保留任何存储的量,512字节仅是保留的存储的量的示例。
图5B示出图1的KV-SSD 125可将启动数据存储在保留的对象中的发明构思的实施例。在图5B中,示出转换层325。转换层325可包括保留的对象键(被示出为键505)的条目。对象键505可被映射到可存储启动数据的地址510。注意,虽然对象键505被标记为“保留”,但是任何键都可用作启动数据的对象键,只要图3的启动请求处理器330可知道保留的对象键是什么。例如,保留的对象键可以是GUID,或者它可以是本地生成的标识符。但是无论保留的对象键是什么,图1的KV-SSD 125都应防止普通应用覆写与保留的键相关联的启动数据。很像常规的基于块的存储装置被设计为防止应用将数据写入存储装置的存储启动数据的部分,图1的KV-SSD 125应防止应用写入保留的对象键,以免应用使KV-SSD 125不可启动(尽管操作系统应被允许改变与保留的对象键相关联的启动数据以适合于操作系统更新)。
一旦保留的对象键已知,图3的启动请求处理器330就可拦截来自BIOS的基于块的启动请求,并用KV请求替换基于块的启动请求以获取与保留的对象键相关联的启动数据。然后,图1的KV-SSD 125可与任何其他KV请求一样处理这个请求:使用转换层325将(保留的)对象键映射到地址,访问在该地址的启动数据,并将启动数据返回到图1的机器105的BIOS。在对KV请求和基于块的请求的响应的格式存在差异的情况下,图3的启动请求处理器330还可将从图3的SSD控制器310发送的响应重新格式化为图1的机器105的BIOS期望的格式,并将重新格式化的响应发送到图1的机器105的BIOS。
图6示出图3中的将块启动请求转换成键值(KV)启动请求的启动请求处理器330。如以上参照图5B所讨论的,发明构思的一些实施例可包括拦截基于块的启动请求并用KV请求替换基于块的启动请求的启动请求处理器330。注意,由于基于块的启动请求605请求在特定地址(LBA 0)的数据,因此,启动请求处理器330仅需要寻找满足这个特定格式的基于块的启动请求,并且可忽略来自图1的机器105的所有其他消息。然后,启动请求处理器330可用KV启动请求610替换基于块的启动请求605,KV启动请求610可包括保留的对象键505(也可被称为启动键)。再次,由于保留的对象键505预先已知,所以KV启动请求610的结构是特定格式,启动请求处理器330不需要生成任何其他KV请求。
图7示出根据发明构思的实施例的图1的KV-SSD 125处理图6的块启动请求605的示例过程的流程图。在图7中,在框705,图3的启动请求处理器330可接收/拦截由图1的KV-SSD 125的图3的主机接口逻辑305接收的图6的块启动请求605。此时,存在两种替代方法。在一种方法中,在框710,图3的启动请求处理器330可直接从图1的KV-SSD 125的适当地址(例如,硬件地址0)访问启动数据。可选地,在框715,图3的启动请求处理器330可用图6的KV启动请求610替换图6的基于块的启动请求605,KV启动请求610可包括图6的启动键505,并且在框720,图1的KV-SSD 125可如同经由常规KV请求所请求的一样获取启动数据。无论哪种方式,在框725,图3的启动请求处理器330可将启动数据返回到图1的机器105的BIOS。
图8示出根据发明构思的实施例的图1的KV-SSD 125处理KV启动请求的示例过程的流程图。在图8所涵盖的发明构思的实施例中,图1的机器105的BIOS可发出KV请求以从图1的KV-SSD 125获取启动数据。在图8中,在框805,图3的主机接口逻辑305可从图1的机器105的BIOS接收KV启动请求。在框810,图3的SSD控制器310可响应于KV启动请求而获取启动数据。最后,在框815,图1的KV-SSD 125可将启动数据返回到图1的机器105的BIOS。
在图7至图8中,示出发明构思的一些实施例。但是本领域技术人员将认识到,通过改变块的顺序、通过省略块、或通过包括附图中未示出的链接,发明构思的其他实施例也是可行的。无论是否明确描述,流程图的所有这样的变化都被认为是发明构思的实施例。
发明构思的实施例提供了优于现有技术的技术优点。图1的KV装置125(可以是KV-SSD或任何其他KV装置)可接收启动请求,对启动请求进行处理,并将启动数据返回到机器105的BIOS。注意,在图1的机器105的BIOS不必更新为能够发送KV启动请求的情况下(根据图1的机器105的特定年龄和配置,该更新可能是不可行的),图1的KV装置125可处理启动请求。即使图1的KV装置125通常不处理基于块的请求,图1的KV装置125甚至也可处理来自机器105的BIOS的基于块的启动请求。
下面的讨论意在提供可实现发明构思的特定方面的合适的一个或多个机器的简要的一般描述。一个或多个机器可至少部分地通过来自常规输入装置(诸如,键盘、鼠标等)的输入、以及通过从另一机器接收的指令、与虚拟现实(VR)环境的交互、生物特征反馈、或其他输入信号来控制。如在此所使用的,术语“机器”意在广泛地涵盖单个机器、虚拟机或可通信地连接的机器、虚拟机或一起操作的装置的系统。示例性机器包括计算装置(诸如,个人计算机、工作站、服务器、便携式计算机、手持装置、电话、平板计算机等)以及运输装置(诸如,私人或公共运输(例如,汽车、火车、出租车等))。
一个或多个机器可包括嵌入式控制器(诸如,可编程或不可编程逻辑装置或阵列、专用集成电路(ASIC)、嵌入式计算机、智能卡等)。一个或多个机器可利用到一个或多个远程机器的一个或多个连接(诸如,通过网络接口、调制解调器或其他通信连接)。机器可通过物理和/或逻辑网络(诸如,内部网、因特网、局域网、广域网等)互连。本领域技术人员将理解,网络通信可利用各种有线和/或无线短程或远程载波和协议(包括射频(RF)、卫星、微波、电气和电子工程师协会(IEEE)802.11、光学、红外、电缆、激光等)。
本发明构思的实施例可通过参照或结合包括功能、过程、数据结构、应用程序等的相关联的数据来描述,这些相关联的数据在由机器访问时导致机器执行任务或定义抽象数据类型或低级硬件上下文。相关联的数据可存储在例如易失性和/或非易失性存储器(例如,RAM、ROM等)中或者存储在其他存储装置及它们的相关联的存储介质(包括硬盘驱动器、软盘、光学存储器、磁带、闪存、记忆棒、数字视频盘、生物存储器等)中。相关联的数据可在传输环境(包括物理网络和/或逻辑网络)下以分组、串行数据、并行数据、传播信号等的形式传送,并且可以以压缩或加密的格式使用。相关联的数据可在分布式环境下使用,并且可被本地和/或远程存储以供机器访问。
发明构思的实施例可包括有形的非暂时性机器可读介质,所述介质包括可由一个或多个处理器执行的指令,所述指令包括用于执行如在此所描述的发明构思的元件的指令。
上述方法的各种操作可由能够执行操作的任何合适的单元(诸如,各种硬件和/或一个或多个软件组件、电路和/或一个或多个模块)来执行。软件可包括用于实现逻辑功能的可执行指令的有序列表,并且可以以任何“处理器可读介质”来实现,以供指令执行系统、设备或装置(诸如,单核或多核处理器、或包含处理器的系统)使用或与指令执行系统、设备或装置结合使用。
结合在此公开的实施例描述的方法或算法以及功能的框或步骤可直接以硬件、以由处理器执行的软件模块、或以两者的组合来实现。如果以软件实现,则功能可作为一个或多个指令或代码存储在有形的非暂时性计算机可读介质上、或作为一个或多个指令或代码通过有形的非暂时性计算机可读介质传输。软件模块可驻留在随机存取存储器(RAM)、闪存、只读存储器(ROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、硬盘、可移动盘、CD ROM、或本领域中已知的任何其他形式的存储介质中。
已经参照示出的实施例描述和示出了发明构思的原理,将认识到,示出的实施例可在不脱离这些原理的情况下在布置和细节上进行修改,并且可以以任何期望的方式组合。并且,尽管前述讨论集中于特定实施例,但是可设想其他配置。具体地,即使在此使用了诸如“根据发明构思的实施例”等的表达,这些短语也意在总体上参照实施例的可能性,并不意在将发明构思限制于特定的实施例配置。如在此所使用的,这些术语可指代可组合到其他实施例中的相同或不同的实施例。
前述说明性实施例不应被解释为限制说明性实施例的发明构思。尽管已经描述了一些实施例,但是本领域技术人员将容易理解,在实质上不脱离本公开的新颖教导和优点的情况下,可对这些实施例进行许多修改。因此,所有这些修改意在包括在如权利要求中限定的本发明构思的范围内。
发明构思的实施例可没有限制地扩展到下面的声明:
声明1、发明构思的实施例包括键值(KV)存储装置,包括:
对象的存储设备,其中,每个对象包括与键相关联的数据;
主机接口层,用于从主机计算机接收请求并返回所述请求的结果,所述请求包括:读取请求,用于从对象的存储设备获得与第一键相关联的第一数据;写入请求,用于将与第二键相关联的第二数据放入对象的存储设备中;和启动请求,用于从对象的存储设备获得启动数据;和
启动请求处理器,使用对象的存储设备处理启动请求。
声明2、发明构思的实施例包括根据声明1所述的KV存储装置,其中,所述KV存储装置包括KV固态驱动器(KV-SSD)。
声明3、发明构思的实施例包括根据声明2所述的KV存储装置,其中,启动数据包括主启动记录(MBR)和全局唯一标识符(GUID)分区表中的一个。
声明4、发明构思的实施例包括根据声明2所述的KV存储装置,其中,
对象的存储设备包括存储在逻辑块地址(LBA)0的启动数据,并且
启动请求包括用于从LBA 0获得启动数据的块启动请求。
声明5、发明构思的实施例包括根据声明2所述的KV存储装置,其中,对象的存储设备包括存储与启动键相关联的启动数据的启动对象。
声明6、发明构思的实施例包括根据声明5所述的KV存储装置,其中,启动请求包括包含启动键的启动获得请求。
声明7、发明构思的实施例包括根据声明5所述的KV存储装置,其中,
启动请求包括用于从LBA0获得启动数据的块启动请求,并且
启动请求处理器能够进行操作以用包括启动键的启动获得请求替换块启动请求。
声明8、发明构思的实施例包括根据声明2所述的KV存储装置,其中,主机接口层至少部分地基于启动请求处理器响应于启动请求返回启动数据来将启动数据返回到主机计算机。
声明9、发明构思的实施例包括根据声明8所述的KV存储装置,其中,
主机计算机包括:基本输入/输出系统(BIOS),BIOS发送启动请求;和
主机接口层,将启动数据返回到BIOS。
声明10、发明构思的实施例包括一种用于操作键值(KV)存储装置的方法,包括:
在键值(KV)存储装置从主机计算机接收启动请求;
至少部分地基于启动请求从KV存储装置获取启动数据;和
将启动数据从KV存储装置返回到主机计算机。
声明11、发明构思的实施例包括根据声明10所述的方法,其中,启动数据包括主启动记录(MBR)和全局唯一标识符(GUID)分区表中的一个。
声明12、发明构思的实施例包括根据声明10所述的方法,其中:
在键值(KV)存储装置从主机计算机接收启动请求的步骤包括:在KV固态驱动器(KV-SSD)从主机计算机接收启动请求;
至少部分地基于启动请求从KV存储装置获取启动数据的步骤包括:至少部分地基于启动请求从KV-SSD获取启动数据;和
将启动数据从KV存储装置返回到主机计算机的步骤包括:将启动数据从KV-SSD返回到主机计算机。
声明13、发明构思的实施例包括根据声明12所述的方法,其中,
在KV固态驱动器(KV-SSD)从主机计算机接收启动请求的步骤包括:在KV-SSD从主机计算机的基本输入/输出系统(BIOS)接收启动请求;和
将启动数据从KV-SSD返回到主机计算机的步骤包括:将启动数据从KV-SSD返回到主机计算机的BIOS。
声明14、发明构思的实施例包括根据声明12所述的方法,其中,在KV固态驱动器(KV-SSD)从主机计算机接收启动请求的步骤包括:接收用于从逻辑块地址(LBA)0获得启动数据的块启动请求。
声明15、发明构思的实施例包括根据声明14所述的方法,其中,至少部分地基于启动请求从KV-SSD获取启动数据的步骤包括:从KV-SSD上的LBA0获取启动数据。
声明16、发明构思的实施例包括根据声明14所述的方法,其中,至少部分地基于启动请求从KV-SSD获取启动数据的步骤包括:
将块启动请求转换成KV启动请求以获取与启动键相关联的启动数据;和
执行具有启动键的KV启动请求。
声明17、发明构思的实施例包括根据声明12所述的方法,其中,
在KV固态驱动器(KV-SSD)从主机计算机接收启动请求的步骤包括:在KV-SSD从主机计算机接收具有启动键的KV启动请求;和
至少部分地基于启动请求从KV-SSD获取启动数据的步骤包括:执行具有启动键的KV启动请求。
声明18、发明构思的实施例包括一种物品,所述物品包括非暂时性存储介质,所述非暂时性存储介质具有存储在其上的指令,所述指令在由机器执行时导致:
在键值(KV)存储装置从主机计算机接收启动请求;
至少部分地基于启动请求从KV存储装置获取启动数据;和
将启动数据从KV存储装置返回到主机计算机。
声明19、发明构思的实施例包括根据声明18所述的物品,其中,启动数据包括主启动记录(MBR)和全局唯一标识符(GUID)分区表中的一个。
声明20、发明构思的实施例包括根据声明18所述的物品,其中,
在键值(KV)存储装置从主机计算机接收启动请求的步骤包括:在KV固态驱动器(KV-SSD)从主机计算机接收启动请求;
至少部分地基于启动请求从KV存储装置获取启动数据的步骤包括:至少部分地基于启动请求从KV-SSD获取启动数据;和
将启动数据从KV存储装置返回到主机计算机的步骤包括:将启动数据从KV-SSD返回到主机计算机。
声明21、发明构思的实施例包括根据声明20所述的物品,其中,
在KV固态驱动器(KV-SSD)从主机计算机接收启动请求的步骤包括:在KV-SSD从主机计算机的基本输入/输出系统(BIOS)接收启动请求;和
将启动数据从KV-SSD返回到主机计算机的步骤包括:将启动数据从KV-SSD返回到主机计算机的BIOS。
声明22、发明构思的实施例包括根据声明20所述的物品,其中,在KV固态驱动器(KV-SSD)从主机计算机接收启动请求的步骤包括:接收用于从逻辑块地址(LBA)0获得启动数据的块启动请求。
声明23、发明构思的实施例包括根据声明22所述的物品,其中,至少部分地基于启动请求从KV-SSD获取启动数据的步骤包括:从KV-SSD上的LBA0获取启动数据。
声明24、发明构思的实施例包括根据声明22所述的物品,其中,至少部分地基于启动请求从KV-SSD获取启动数据的步骤包括:
将块启动请求转换成KV启动请求以获取与启动键相关联的启动数据;和
执行具有启动键的KV启动请求。
声明25、发明构思的实施例包括根据声明20所述的物品,其中,
在KV固态驱动器(KV-SSD)从主机计算机接收启动请求的步骤包括:在KV-SSD从主机计算机接收具有启动键的KV启动请求;和
至少部分地基于启动请求从KV-SSD获取启动数据的步骤包括:执行具有启动键的KV启动请求。
因此,鉴于对在此描述的实施例的各种排列,该详细描述和随附材料仅意在是说明性的,并且不应被视为限制发明构思的范围。因此,作为发明构思要求保护的是可落入权利要求及其等同物的范围和精神内的所有这些修改。
Claims (20)
1.一种键值存储装置,包括:
对象的存储设备,其中,每个对象包括与键相关联的数据;
主机接口逻辑,用于从主机计算机接收请求并返回所述请求的结果,所述请求包括:读取请求,用于从对象的存储设备获得与第一键相关联的第一数据;写入请求,用于将与第二键相关联的第二数据写入对象的存储设备中;和启动请求,用于从对象的存储设备获得启动数据;和
启动请求处理器,用于处理启动请求。
2.根据权利要求1所述的键值存储装置,其中,所述键值存储装置包括键值固态驱动器。
3.根据权利要求2所述的键值存储装置,其中,启动数据包括主启动记录和全局唯一标识符分区表中的一个。
4.根据权利要求2所述的键值存储装置,其中:
对象的存储设备包括存储在逻辑块地址0的启动数据,并且
启动请求包括用于从逻辑块地址0获得启动数据的块启动请求。
5.根据权利要求2所述的键值存储装置,其中,对象的存储设备包括存储与启动键相关联的启动数据的启动对象。
6.根据权利要求5所述的键值存储装置,其中,启动请求包括包含启动键的键值启动请求。
7.根据权利要求5所述的键值存储装置,其中:
启动请求包括用于从逻辑块地址0获得启动数据的块启动请求,并且
启动请求处理器能够进行操作以用包括启动键的键值启动请求替换块启动请求。
8.根据权利要求2所述的键值存储装置,其中,主机接口逻辑至少部分地基于启动请求处理器响应于启动请求返回启动数据,来将启动数据返回到主机计算机。
9.根据权利要求8所述的键值存储装置,其中:
主机计算机包括基本输入/输出系统,基本输入/输出系统发送启动请求,并且
主机接口逻辑将启动数据返回到基本输入/输出系统。
10.一种用于操作键值存储装置的方法,包括:
在键值存储装置从主机计算机接收启动请求;
至少部分地基于启动请求从键值存储装置获取启动数据;和
将启动数据从键值存储装置返回到主机计算机。
11.根据权利要求10所述的用于操作键值存储装置的方法,其中,启动数据包括主启动记录和全局唯一标识符分区表中的一个。
12.根据权利要求10或11所述的用于操作键值存储装置的方法,其中:
在键值存储装置从主机计算机接收启动请求的步骤包括:在键值固态驱动器从主机计算机接收启动请求;
至少部分地基于启动请求从键值存储装置获取启动数据的步骤包括:至少部分地基于启动请求从键值固态驱动器获取启动数据;和
将启动数据从键值存储装置返回到主机计算机的步骤包括:将启动数据从键值固态驱动器返回到主机计算机。
13.根据权利要求12所述的用于操作键值存储装置的方法,其中:
在键值固态驱动器从主机计算机接收启动请求的步骤包括:在键值固态驱动器从主机计算机的基本输入/输出系统接收启动请求;和
将启动数据从键值固态驱动器返回到主机计算机的步骤包括:将启动数据从键值固态驱动器返回到主机计算机的基本输入/输出系统。
14.根据权利要求12所述的用于操作键值存储装置的方法,其中,
在键值固态驱动器从主机计算机接收启动请求的步骤包括:接收用于从逻辑块地址0获得启动数据的块启动请求。
15.根据权利要求14所述的用于操作键值存储装置的方法,其中,至少部分地基于启动请求从键值固态驱动器获取启动数据的步骤包括:从键值固态驱动器上的逻辑块地址0获取启动数据。
16.根据权利要求14所述的用于操作键值存储装置的方法,其中,至少部分地基于启动请求从键值固态驱动器获取启动数据的步骤包括:
将块启动请求转换成键值启动请求以获取与启动键相关联的启动数据;和
执行具有启动键的键值启动请求。
17.根据权利要求12所述的用于操作键值存储装置的方法,其中:
在键值固态驱动器从主机计算机接收启动请求的步骤包括:在键值固态驱动器从主机计算机接收具有启动键的键值启动请求;和
至少部分地基于启动请求从键值固态驱动器获取启动数据的步骤包括:执行具有启动键的键值启动请求。
18.一种物品,包括非暂时性存储介质,所述非暂时性存储介质具有存储在其上的指令,所述指令在由机器执行时导致:
在键值存储装置从主机计算机接收启动请求;
至少部分地基于启动请求从键值存储装置获取启动数据;和
将启动数据从键值存储装置返回到主机计算机。
19.根据权利要求18所述的物品,其中:
在键值存储装置从主机计算机接收启动请求的步骤包括:在键值固态驱动器从主机计算机接收启动请求;
至少部分地基于启动请求从键值存储装置获取启动数据的步骤包括:至少部分地基于启动请求从键值固态驱动器获取启动数据;和
将启动数据从键值存储装置返回到主机计算机的步骤包括:将启动数据从键值固态驱动器返回到主机计算机。
20.根据权利要求19所述的物品,其中,在键值存储装置从主机计算机接收启动请求的步骤包括:接收用于从逻辑块地址0获得启动数据的块启动请求。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962948797P | 2019-12-16 | 2019-12-16 | |
US201962948801P | 2019-12-16 | 2019-12-16 | |
US62/948,801 | 2019-12-16 | ||
US62/948,797 | 2019-12-16 | ||
US16/846,261 | 2020-04-10 | ||
US16/846,261 US11625334B2 (en) | 2019-12-16 | 2020-04-10 | Bootable key value solid state drive (KV-SSD) device with host interface layer arranged to received and returns boot requests from host processor using storage for objects |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112988060A true CN112988060A (zh) | 2021-06-18 |
Family
ID=76317107
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011185287.1A Pending CN112988055A (zh) | 2019-12-16 | 2020-10-30 | 包括键值存储装置的机器和操作键值存储装置的方法 |
CN202011484329.1A Pending CN112988060A (zh) | 2019-12-16 | 2020-12-16 | 键值存储装置和用于操作键值存储装置的方法 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011185287.1A Pending CN112988055A (zh) | 2019-12-16 | 2020-10-30 | 包括键值存储装置的机器和操作键值存储装置的方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US11321244B2 (zh) |
KR (2) | KR20210076828A (zh) |
CN (2) | CN112988055A (zh) |
TW (1) | TW202203061A (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11321244B2 (en) | 2019-12-16 | 2022-05-03 | Samsung Electronics Co., Ltd. | Block interface emulation for key value device |
US11921704B2 (en) | 2021-12-28 | 2024-03-05 | Vmware, Inc. | Version control interface for accessing data lakes |
US20230409545A1 (en) * | 2022-06-21 | 2023-12-21 | Vmware, Inc. | Version control interface supporting time travel access of a data lake |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7159073B2 (en) | 2003-03-27 | 2007-01-02 | Stmicroelectronics, Inc. | Data storage and caching architecture |
US7827215B2 (en) * | 2004-08-31 | 2010-11-02 | Alcatel-Lucent Usa Inc. | Real-time operation by a diskless client computer |
US20070288761A1 (en) | 2006-06-09 | 2007-12-13 | Dale Jason N | System and method for booting a multiprocessor device based on selection of encryption keys to be provided to processors |
US20070288740A1 (en) | 2006-06-09 | 2007-12-13 | Dale Jason N | System and method for secure boot across a plurality of processors |
KR101496975B1 (ko) | 2008-05-28 | 2015-03-02 | 삼성전자주식회사 | 고체 상태 디스크 및 이에 대한 입출력방법 |
US8327066B2 (en) | 2008-09-30 | 2012-12-04 | Samsung Electronics Co., Ltd. | Method of managing a solid state drive, associated systems and implementations |
CN102918509B (zh) * | 2011-05-31 | 2014-06-04 | 华为技术有限公司 | 数据读写方法、装置和存储系统 |
JP5524144B2 (ja) | 2011-08-08 | 2014-06-18 | 株式会社東芝 | key−valueストア方式を有するメモリシステム |
US8700683B2 (en) | 2011-10-24 | 2014-04-15 | Nokia Corporation | Method and apparatus for providing a key-value based storage interface |
US9075710B2 (en) * | 2012-04-17 | 2015-07-07 | SanDisk Technologies, Inc. | Non-volatile key-value store |
KR102044023B1 (ko) | 2013-03-14 | 2019-12-02 | 삼성전자주식회사 | 키 값 기반 데이터 스토리지 시스템 및 이의 운용 방법 |
US9519575B2 (en) | 2013-04-25 | 2016-12-13 | Sandisk Technologies Llc | Conditional iteration for a non-volatile device |
EP2849111B1 (en) | 2013-09-12 | 2016-07-13 | Carl Beame | OTP generation on portable medium |
US9323457B2 (en) | 2013-12-09 | 2016-04-26 | Xilinx, Inc. | Memory arrangement for implementation of high-throughput key-value stores |
US10248682B2 (en) * | 2015-02-20 | 2019-04-02 | Scality, S.A. | Object storage system capable of performing snapshots, branches and locking |
US10235404B2 (en) * | 2014-06-25 | 2019-03-19 | Cohesity, Inc. | Distributed key-value store |
US10496626B2 (en) | 2015-06-11 | 2019-12-03 | EB Storage Systems Ltd. | Deduplication in a highly-distributed shared topology with direct-memory-access capable interconnect |
US10133492B2 (en) * | 2015-10-14 | 2018-11-20 | Samsung Electronics Co., Ltd. | Electronic system with interface control mechanism and method of operation thereof |
US11287973B2 (en) * | 2016-02-02 | 2022-03-29 | Samsung Electronics Co., Ltd. | Polymorphic storage devices |
US10956346B1 (en) * | 2017-01-13 | 2021-03-23 | Lightbits Labs Ltd. | Storage system having an in-line hardware accelerator |
US10289421B2 (en) | 2017-02-17 | 2019-05-14 | Dell Products, L.P. | Booting of IHS from SSD using PCIe |
US10788998B2 (en) * | 2017-07-07 | 2020-09-29 | Sap Se | Logging changes to data stored in distributed data storage system |
US10572161B2 (en) * | 2017-11-15 | 2020-02-25 | Samsung Electronics Co., Ltd. | Methods to configure and access scalable object stores using KV-SSDs and hybrid backend storage tiers of KV-SSDs, NVMe-SSDs and other flash devices |
US10620866B1 (en) * | 2018-02-22 | 2020-04-14 | Amazon Technologies, Inc. | Representation-based partitioning of distributed computing environments |
AU2019100055A4 (en) * | 2019-01-18 | 2019-02-21 | AMS Joint Venture Pty Ltd | Smart meter device |
US11321244B2 (en) * | 2019-12-16 | 2022-05-03 | Samsung Electronics Co., Ltd. | Block interface emulation for key value device |
-
2020
- 2020-03-19 US US16/824,689 patent/US11321244B2/en active Active
- 2020-04-10 US US16/846,261 patent/US11625334B2/en active Active
- 2020-08-13 KR KR1020200101721A patent/KR20210076828A/ko active Search and Examination
- 2020-10-29 TW TW109137524A patent/TW202203061A/zh unknown
- 2020-10-30 CN CN202011185287.1A patent/CN112988055A/zh active Pending
- 2020-12-11 KR KR1020200173753A patent/KR102669897B1/ko active IP Right Grant
- 2020-12-16 CN CN202011484329.1A patent/CN112988060A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
KR20210076828A (ko) | 2021-06-24 |
TW202203061A (zh) | 2022-01-16 |
KR20210076856A (ko) | 2021-06-24 |
US20210182211A1 (en) | 2021-06-17 |
CN112988055A (zh) | 2021-06-18 |
US11321244B2 (en) | 2022-05-03 |
KR102669897B1 (ko) | 2024-05-29 |
US20210182400A1 (en) | 2021-06-17 |
US11625334B2 (en) | 2023-04-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101301840B1 (ko) | 비휘발성 메모리 장치의 데이터 처리 방법 | |
US9164895B2 (en) | Virtualization of solid state drive and mass storage drive devices with hot and cold application monitoring | |
KR102137761B1 (ko) | 이종 통합 메모리부 및 그것의 확장 통합 메모리 스페이스 관리 방법 | |
US11657022B2 (en) | Host and storage system for securely deleting files and operating method of the host | |
CN112988060A (zh) | 键值存储装置和用于操作键值存储装置的方法 | |
US11010079B2 (en) | Concept for storing file system metadata within solid-stage storage devices | |
US8898414B2 (en) | Storage devices and methods of driving storage devices | |
US20160253257A1 (en) | Data processing system and operating method thereof | |
US11620066B2 (en) | Storage device with expandible logical address space and operating method thereof | |
KR102509913B1 (ko) | 최대화된 중복 제거 메모리를 위한 방법 및 장치 | |
CN110908927A (zh) | 数据储存装置及其删除命名空间的方法 | |
EP3937000A1 (en) | Key value storage device and method for sorting key | |
KR102623061B1 (ko) | 데이터베이스에서 이터레이터 연산을 수행하기 위한 장치 | |
US11657000B2 (en) | Controller and memory system including the same | |
US20220164119A1 (en) | Controller, and memory system and data processing system including the same | |
US9317440B2 (en) | Computing device and virtual device control method for controlling virtual device by computing system | |
CN107636599B (zh) | 当单个输入/输出请求跨越两个存储设备时响应于存储设备故障返回相干数据 | |
KR20220159270A (ko) | 스토리지 장치 및 그 동작 방법 | |
US20170277474A1 (en) | Data processing system including data storage device | |
EP3850474A1 (en) | Hybrid memory system interface | |
WO2013095520A1 (en) | Object-aware storage |
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 |