CN115525604A - 键-值存储设备、主机和主机存储系统 - Google Patents
键-值存储设备、主机和主机存储系统 Download PDFInfo
- Publication number
- CN115525604A CN115525604A CN202210688337.0A CN202210688337A CN115525604A CN 115525604 A CN115525604 A CN 115525604A CN 202210688337 A CN202210688337 A CN 202210688337A CN 115525604 A CN115525604 A CN 115525604A
- Authority
- CN
- China
- Prior art keywords
- key
- value
- host
- file
- 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.)
- Pending
Links
- 230000015654 memory Effects 0.000 claims abstract description 112
- 238000004590 computer program Methods 0.000 claims abstract description 38
- 238000004891 communication Methods 0.000 claims abstract description 8
- 238000013507 mapping Methods 0.000 claims description 29
- 238000012545 processing Methods 0.000 claims description 8
- 238000000034 method Methods 0.000 abstract description 17
- 230000006870 function Effects 0.000 description 16
- 238000006243 chemical reaction Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 7
- 238000013519 translation Methods 0.000 description 7
- 230000004044 response Effects 0.000 description 6
- 241000251468 Actinopterygii Species 0.000 description 5
- 230000003936 working memory Effects 0.000 description 5
- 241000282326 Felis catus Species 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000000052 comparative effect Effects 0.000 description 3
- 230000005055 memory storage Effects 0.000 description 3
- 238000011084 recovery Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000015556 catabolic process Effects 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000032683 aging Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000005056 compaction Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
-
- 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
- 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/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了一种键‑值存储设备、主机和主机存储系统。与键‑值存储设备进行通信的主机包括:主机存储器,主机存储器存储计算机程序;以及主机控制器,主机控制器包括被配置为运行计算机程序的处理器。计算机程序被配置为在被运行时使得处理器处理与由存储在主机中的应用接收到的文件数据相关的文件或目录,并且将文件或目录提供给键‑值存储设备,将文件或目录映射到能够存储在键‑值存储设备中的键‑值对象,将由存储在主机中的应用请求的文件操作转换成能够在键‑值存储设备中执行的键‑值操作,管理与键‑值对象和键‑值操作相关的事务,并且将事务提供给键‑值存储设备,以及将文件或目录抽象成元对象或数据对象。
Description
相关申请的交叉引用
本申请要求于2021年6月24日在韩国知识产权局提交的韩国专利申请No.10-2021-0082336和于2022年3月21日在韩国知识产权局提交的韩国专利申请No.10-2022-0034937的优先权,这些申请的公开内容通过引用整体地并入本文。
技术领域
本发明构思的实施例涉及一种存储设备,并且更具体地,涉及键-值存储设备、与键-值存储设备进行通信的主机、以及包括键-值存储设备和主机的主机存储系统。
背景技术
可以根据用来管理数据的单元将存储设备分类成基于对象的存储设备和基于块的存储设备。基于对象的存储设备是以对象的形式存储和管理数据的存储结构。对象是指可以具有任何大小的数据,例如,诸如运动图片或图像的多媒体数据和文件,并且可以使用基于对象的存储设备来管理对象。键-值存储设备是基于对象的存储设备的示例。
发明内容
本发明构思的实施例提供了能够减少用于虚拟化文件或目录的文件系统的软件负载并且能够减少主机与存储设备之间的输入/输出数据量的主机、键-值存储设备和主机存储系统。
根据本发明构思的实施例,提供了一种与键-值存储设备进行通信的主机,所述主机包括应用和文件系统,所述文件系统被配置为处理与由所述应用接收到的文件数据相关的文件或目录以将所述文件或所述目录提供给所述键-值存储设备。所述文件系统包括:映射模块,所述映射模块被配置为将所述文件或所述目录映射到能够存储在所述键-值存储设备中的键-值对象;转换模块,所述转换模块被配置为将由所述应用请求的文件操作转换成能够在所述键-值存储设备中执行的键-值操作;以及事务管理模块,所述事务管理模块被配置为管理与所述键-值对象和所述键-值操作相关的事务并且将所述事务提供给所述键-值存储设备。所述映射模块将所述文件或所述目录抽象成元对象或数据对象。
根据本发明构思的实施例,提供了一种键-值存储设备,所述键-值存储设备包括:非易失性存储器,所述非易失性存储器被配置为存储多个键-值对象。所述多个键-值对象包括包含文件的信息的元对象和包含所述文件的内容的数据对象;以及存储控制器,所述存储控制器被配置为从主机接收键-值对象并且基于接收到的所述键-值对象来控制所述非易失性存储器。所述存储控制器包括:对象索引模块,所述对象索引模块被配置为对所述键-值对象进行索引;以及事务支持模块,所述事务支持模块被配置为支持针对所述键-值对象的事务。所述键-值存储设备根据键-值接口与所述主机进行通信。
根据本发明构思的实施例,提供了一种主机存储系统,所述主机存储系统包括:键-值存储设备;以及主机,所述主机被配置为根据键-值接口与所述键-值存储设备进行通信。所述主机包括:文件系统,所述文件系统被配置为处理与由所述应用接收到的文件数据相关的文件或目录以将所述文件或所述目录提供给所述键-值存储设备,并且所述文件系统将所述文件或所述目录映射到能够存储在所述键-值存储设备中的键-值对象,将由所述应用请求的文件操作转换成能够在所述键-值存储设备中执行的键-值操作,以及管理与所述键-值对象和所述键-值操作相关的事务并且将所述事务提供给所述键-值存储设备。
根据本发明构思的实施例,一种与键-值存储设备进行通信的主机包括:主机存储器,所述主机存储器存储计算机程序;以及主机控制器,所述主机控制器包括被配置为运行所述计算机程序的处理器。所述计算机程序被配置为在被运行时使得所述处理器:处理与由存储在所述主机中的应用接收到的文件数据相关的文件或目录,并且将所述文件或所述目录提供给所述键-值存储设备,将所述文件或所述目录映射到能够存储在所述键-值存储设备中的键-值对象,将由存储在所述主机中的所述应用请求的文件操作转换成能够在所述键-值存储设备中执行的键-值操作,管理与所述键-值对象和所述键-值操作相关的事务并且将所述事务提供给所述键-值存储设备,以及将所述文件或所述目录抽象成元对象或数据对象。
根据本发明构思的实施例,一种键-值存储设备包括:非易失性存储器,所述非易失性存储器被配置为存储多个键-值对象,所述键-值对象包括包含文件的信息的元对象和包含所述文件的内容的数据对象;以及存储控制器,所述存储控制器包括存储器和处理器,所述存储器存储计算机程序,所述处理器被配置为运行所述计算机程序,并且被配置为从主机接收所述键-值对象中的至少一个键-值对象并且基于接收到的所述至少一个键-值对象来控制所述非易失性存储器。所述计算机程序被配置为在被运行时使得所述处理器:对接收到的所述至少一个键-值对象进行索引,并且支持针对接收到的所述至少一个键-值对象的事务。所述键-值存储设备根据键-值接口与所述主机进行通信。
根据本发明构思的实施例,一种主机存储系统包括:键-值存储设备;以及主机,所述主机被配置为根据键-值接口与所述键-值存储设备进行通信。所述主机包括:主机存储器,所述主机存储器存储计算机程序;以及主机控制器,所述主机控制器包括被配置为运行所述计算机程序的处理器。所述计算机程序被配置为在被运行时使得所述处理器:处理与由存储在所述主机中的应用接收到的文件数据相关的文件或目录,并且将所述文件或所述目录提供给所述键-值存储设备,将所述文件或所述目录映射到能够存储在所述键-值存储设备中的键-值对象,将由所述应用请求的文件操作转换成能够在所述键-值存储设备中执行的键-值操作,以及管理与所述键-值对象和所述键-值操作相关的事务并且将所述事务提供给所述键-值存储设备。
附图说明
通过参考附图详细地描述本发明构思的实施例,本发明构思的上述和其他特征将变得更显而易见,在附图中:
图1示出了根据本发明构思的实施例的主机存储系统;
图2是图示了根据本发明构思的实施例的图1的主机的框图;
图3是示出了根据本发明构思的实施例的主机存储系统的框图;
图4示出了根据本发明构思的实施例的文件系统的键-值映射操作的示例;
图5示出了根据本发明构思的实施例的文件系统的键-值操作转换操作的示例;
图6示出了根据本发明构思的实施例的文件系统的文件操作和键-值操作;
图7示出了根据本发明构思的实施例的文件系统的事务管理操作的示例;
图8至图11示出了根据本发明构思的实施例的文件系统的操作的示例;
图12是示出了根据本发明构思的实施例的主机存储系统的框图;
图13是示出了根据本发明构思的实施例的存储控制器的框图;
图14是示出了根据本发明构思的实施例的主机与存储设备之间的操作的流程图;以及
图15示出了应用了根据本发明构思的实施例的存储设备的系统。
具体实施方式
将在下文中参考附图更充分地描述本发明构思的实施例。贯穿附图,相似的附图标记可以指相似的元件。
图1示出了根据本发明构思的实施例的主机存储系统10。
参考图1,主机存储系统10可以包括存储设备100和主机200。在实施例中,存储设备100可以以对象的形式存储并管理数据,每个对象包括键K和值V。因此,可以将存储设备100称为“键-值存储设备”。在本说明书中,存储设备100可以是指“键-值存储设备”。例如,存储设备100可以对应于键-值固态硬盘(SSD)。
存储设备100和主机200可以通过键-值接口KV-IF彼此通信。例如,根据键-值接口KV-IF,主机200可以向存储设备100提供与键-值操作相对应的键-值命令、包括键的命令、键-值对象等。另外,存储设备100可以向主机200提供键-值对象或包括键的响应。
存储设备100可以存储多个键-值对象,并且键-值对象可以包括超级对象101、元对象102和数据对象103。超级对象101可以存储文件系统信息。元对象102可以包括存储关于文件的元数据(例如,文件或目录的属性)的多个元对象MO,并且每个元对象MO可以包括键K和值V。数据对象103可以包括存储文件的实际数据(例如,文件内容)的多个数据对象DO,并且每个数据对象DO可以包括键K和值V。每个键-值对象可以具有可变的大小。
典型的块存储设备将存储介质抽象为固定大小的逻辑块并且提供块I/O操作。为了在这样的块存储设备上使文件和目录虚拟化,主机的文件系统维护各种磁盘上数据结构,诸如例如磁盘指针、位图和目录条目。在这种情况下,文件和目录是用于抽象数据的常见方式。
参考比较示例,典型的块存储设备导出固定大小的逻辑块,并且主机的文件系统管理存储空间(例如,位图)和数据位置(例如,索引节点(inode))。因此,逻辑块被抽象成包含用户数据的目录和文件。此时,每当在主机中生成或删除文件和目录时,必须检索并更新文件系统元数据(例如,位图和索引节点)以反映系统的新更新的状态。因此,在根据比较示例的常见块存储设备的情况下,文件系统上的软件负载重,并且主机与块存储设备之间的输入/输出数据量大。
然而,根据本发明构思的实施例的存储设备100可以在存储设备100的物理地址空间中实现键-值对象的存储中索引(in-storage indexing)。例如,暴露给文件系统的键-值对象可以由存储设备100中的对象索引模块(例如,图3的111)管理。存储设备100可以将键-值对象映射到物理地址空间并且处理对键-值对象的读取请求和写入请求。因此,每当在主机200中生成或删除文件和目录时,无需更新主机200中的文件系统元数据,并且无需在主机200与存储设备100之间交换文件系统元数据。因此,可以显著减少主机200的文件系统上的软件负载,并且可以显著减少主机200与存储设备100之间的输入/输出数据量。
主机200可以包括主机控制器201和主机存储器202。主机存储器202可以用作缓冲存储器,该缓冲存储器用于临时存储要发送到存储设备100的键-值命令或键-值对象或从存储设备100发送的键-值对象。例如,主机存储器202可以包括输入/输出队列。主机控制器201可以控制将主机存储器202的缓冲区域中的键-值对象(例如,写入数据)存储在非易失性存储器120中的操作或将非易失性存储器120中的键-值对象(例如,读取数据)存储在主机存储器202的缓冲区域中的操作。
根据实施例,可以将主机控制器201和主机存储器202实现为单独的半导体芯片。或者,在一些实施例中,可以将主机控制器201和主机存储器202集成在同一半导体芯片上。根据实施例,主机控制器201可以是包括在应用处理器中的多个模块中的任何一个,并且可以将应用处理器实现为片上系统(SoC)。例如,根据实施例,主机控制器201可以被实现为包括处理器的电路,并且在本文中还可以被称为主机控制器电路或主机控制器处理器。另外,主机存储器202可以是设置在应用处理器中的嵌入式存储器或设置在应用处理器外部的非易失性存储器或存储器模块。
如上所述,根据实施例,可以将存储设备100实现为配备有设备内索引(in-deviceindexing)技术和事务函数的键-值存储设备。另外,根据实施例,主机200可以通过利用存储设备100的设备内索引技术来将文件或目录和文件操作转换或转变成键-值的形式,并且通过使用存储设备100的事务函数来确保文件系统的一致性。因此,可以显著减少主机200与存储设备100之间的输入/输出数据量,从而提高主机200的文件系统的性能。另外,不由存储设备100维护的元数据(例如,位图)不被碎片化,并且可以通过存储设备100中的周期性操作(例如,压缩、垃圾收集等)来执行对象碎片整理。因此,可以减少由于主机200的文件系统的老化而导致的性能劣化。
图2是图示了根据本发明构思的实施例的图1的主机200的框图。
参考图2,主机200包括用户空间21和内核空间22。图2所示的每个组件可以是指诸如以下软件或硬件:例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)、处理器等。然而,组件不限于软件或硬件,并且也可以被配置在可寻址存储介质中或者被配置为运行一个或更多个处理器。组件中提供的功能可以由更细分的组件来实现,或者执行特定功能的一个组件可以通过组合多个组件来实现。
用户空间21是在其中运行用户应用AP的区域,而内核空间22是用于内核运行的受限保留区域。为了从用户空间21访问内核空间22,可以使用系统调用。
内核空间22可以包括虚拟文件系统VFS、至少一个文件系统FS和设备驱动程序DD。虚拟文件系统VFS允许一个或更多个文件系统FS彼此交互。虚拟文件系统VFS使得标准化系统调用能够用于对不同介质中的不同文件系统FS执行读取/写入操作。因此,例如,不管文件系统FS的类型如何,都可以使用如open()、read()和write()的系统调用。换句话说,虚拟文件系统VFS可以是存在于用户空间21与文件系统FS之间的抽象层。设备驱动程序DD负责硬件与用户应用AP(或操作系统)之间的接口。设备驱动程序DD是用于使硬件在特定操作系统下正常地工作的程序。
图3是示出了根据本发明构思的实施例的主机存储系统10a的框图。
参考图3,主机存储系统10a可以对应于图1的主机存储系统10的实现方式示例。主机200可以包括用户应用或应用AP和文件系统FS。在实施例中,在主机200中,可以将应用AP和文件系统FS实现为软件,并且应用AP和文件系统FS可以由主机控制器(图1的201)运行。如上所述,可以将主机控制器201实现为包括处理器的电路。根据实施例,处理器可以是本文描述的任何类型的处理器。根据实施例,应用AP和文件系统FS可以被存储在主机200的主机存储器202中。可以将应用AP和文件系统FS统称为计算机程序,所述计算机程序可以由主机控制器201的处理器运行,以根据所述计算机程序执行操作(例如,根据应用AP和文件系统FS执行操作)。例如,根据实施例,存储在包括应用AP和文件系统FS的计算机程序中的程序指令可以由主机控制器201的处理器运行,以使处理器根据程序指令执行操作。因此,在本文中,应当理解,当操作被描述为由主机200的模块、单元等执行时,所述操作可以由运行模块、单元等的指令的主机控制器201的处理器执行,以执行所对应的操作。如图2所示,主机200还可以包括虚拟文件系统VFS和设备驱动程序DD。然而,为了图示的方便,在图3中仅示出了应用AP和文件系统FS。
尽管在图3中仅示出了一个应用AP,但是本发明构思的实施例不限于此。根据实施例,主机200可以运行各种应用,并且由主机200运行的应用的类型可以由用户输入确定。例如,应用AP可以包括多媒体重放应用、图像识别应用、语音识别应用、加密应用、搜索应用等。
文件系统FS是用于在存储设备100中存储文件的数据结构。当通过应用AP输入用户数据或数据时,主机200可以通过文件系统FS处理数据并且将处理后的数据存储在存储设备100中。在下文中,由应用AP提供给文件系统FS的数据将被称为“文件数据”或“主机数据”。另外,主机200可以向存储设备100提供事务,使得可以在存储设备100中执行用于运行应用AP的操作中的至少一些。在下文中,主机200可以执行的以运行应用AP的操作将被称为“文件操作”或“主机操作”。
文件系统FS可以从应用AP接收文件数据并且处理与接收到的文件数据相关的文件或目录,以将该文件或该目录提供给存储设备100。在实施例中,文件系统FS可以包括映射模块210、转换模块220和事务管理模块230。映射模块210可以将文件数据映射到可以被存储在存储设备100中的“键-值对象”。转换模块220可以将文件操作转换或转变成可以由存储设备100执行的“键-值操作”。事务管理模块230可以管理或处理可以由存储设备100执行的事务。事务管理模块230可以管理与键-值对象和键-值操作相关的事务。因此,文件系统FS将主机200的文件数据映射到存储设备100的键-值对象并且将主机200的文件操作转换或转变为存储设备100的键-值操作。因此,可以将文件系统FS称为“键-值文件系统”。
一起参考图1和图3,映射模块210可以将文件或目录映射到可以被存储在存储设备100中的键-值对象。例如,映射模块210可以将文件或目录抽象成元对象MO或数据对象DO。映射模块210可以将文件或目录的信息映射到元对象MO,以及将文件的内容映射到数据对象DO。在实施例中,映射模块210可以基于文件或目录的索引节点来分配元对象MO的第一键和数据对象DO的第二键。例如,映射模块210可以生成第一键,使得元对象MO的第一键包括父索引节点号和文件名,并且生成第二键,使得数据对象DO的第二键包括文件的索引节点号。将在下面参考图4详细地描述映射模块210的详细操作。
转换模块220可以将与文件操作相对应的系统调用转换或转变成键-值操作。键-值操作可以包括用于元对象MO或数据对象DO的键-值命令。在实施例中,转换模块220可以将与文件操作相对应的一个系统调用转换成多个键-值操作。在这种情况下,将由存储设备100执行的键-值操作可以是该多个键-值操作中的一个键-值操作。在实施例中,在存储设备100中执行键-值操作之前,转换模块220可以在文件系统FS中的高速缓冲存储器中处理相应的键-值操作。将在下面参考图5和图6详细地描述转换模块220的详细操作。
事务管理模块230可以将与一个系统调用相对应的多个键-值操作作为一个事务来管理,从而确保多个键-值对象的原子性。根据实施例,可以将事务管理模块230称为事务处理程序。事务管理模块230可以通过利用由存储设备100提供的事务函数来以低负载维持文件系统FS的一致性。事务管理模块230可以跟踪所有文件操作并且考虑到文件操作之间的次序和相关性来执行存储设备100的输入/输出。将在下面参考图7详细地描述事务管理模块230的详细操作。
存储设备100可以包括对象索引模块111、事务支持模块112和非易失性存储器120。在实施例中,对象索引模块111和事务支持模块112可以用软件实现并且可以被加载到工作存储器中。在实施例中,可以在主机接口层中实现对象索引模块111和事务支持模块112。根据实施例,可以将对象索引模块111称为存储内索引引擎。
对象索引模块111可以对键-值对象进行索引。因此,在存储设备100中,由于用于对键-值对象进行索引的数据输入/输出发生在存储设备100内,所以可以减少主机200与存储设备100之间的输入/输出数据量。另外,由于存储设备100执行键-值对象索引,所以主机200的文件系统FS不需要管理文件的索引节点、位图、磁盘指针和目录条目,因此,可以减少软件负载。如上所述,根据实施例,通过将对象索引功能卸载到存储设备100,可以将主机200的文件系统FS实现为轻量文件系统。
一起参考图1和图3,对象索引模块111可以对元对象MO和数据对象DO进行索引。元对象MO的键可以对应于一般文件系统中的文件名或目录名,并且元对象MO的值可以对应索引节点。根据比较示例,文件系统对块执行读取和写入操作以修改目录条目的列表。然而,相比之下,根据本发明构思的实施例,对象索引模块111可以通过写入元对象MO(例如,SET(MO))或者移除元对象MO(例如,DELETE(MO))来更新目录条目。因此,可以减少主机200与存储设备100之间的输入/输出数据量。
当以单个键-值对的形式对具有大数据对象的大对象进行索引时,即使读取或更新大对象的一部分也会引起大输入/输出开销。然而,根据本发明构思的实施例,对象索引模块111可以将数据对象DO分割成具有唯一后缀的子对象,并且将子对象作为独立的键-值对来管理。当数据对象DO(例如,“/home/alice/bob.txt”)的大小是32KB时,对象索引模块111可以将数据对象DO分割成具有不同后缀的八个4KB子对象,例如,d:100:0、d:100:1、d:100:2、d:100:3、d:100:4、d:100:5、d:100:6和d:100:7。因此,当仅检索或更新大对象的一部分时,可以仅对对应的子对象执行读取操作或写入操作,因此可以减少输入/输出开销。
事务支持模块112可以支持针对键-值对象的事务。例如,事务支持模块112可以提供事务应用编程接口(API),从而为多个键-值对象提供原子性和持久性。如上所述,存储设备100可以对键-值对象执行各种算术运算,因此,可以将存储设备100称为算术存储设备或算术键-值存储设备。
例如,事务支持模块112可以使用三个数据结构,即事务表TxTable、事务日志TxLogs和恢复日志TxRecovery。事务表TxTable可以存储事务信息。事务日志TxLogs存储与事务相关的键-值对象的键-值索引,并且事务日志TxLogs可以被存储在非易失性存储器120或DRAM中。恢复日志TxRecovery可以用于在恢复期间恢复或中止事务。
非易失性存储器120可以存储多个键-值对象,并且键-值对象可以包括包含有关文件的信息的元对象和包含文件的内容的数据对象。根据一些实施例,NVM 120可以用多个存储器芯片或多个存储器裸片来实现。例如,存储器芯片可以各自是双裸片封装件(DDP)、四裸片封装件(QDP)或八裸片封装件(ODP)。
当非易失性存储器120包括闪速存储器时,该闪速存储器可以包括2D NAND存储器阵列或3D(或垂直)NAND(VNAND)存储器阵列。在另一示例中,存储设备100可以包括各种其他类型的非易失性存储器。例如,存储设备100可以包括磁性RAM(MRAM)、自旋转移矩MRAM、导电桥接RAM(CBRAM)、铁电RAM(FeRAM)、相位RAM(PRAM)、电阻式RAM和各种其他类型的存储器。
图4示出了根据本发明构思的实施例的文件系统的键-值映射操作的示例。
一起参考图3和图4,映射模块210可以将文件或目录的信息映射到元对象并且可以将文件的内容映射到数据对象。在实施例中,映射模块210可以通过基于文件或目录的索引节点号分配键,来分配元对象的第一键和数据对象的第二键。在这种情况下,仅通用文件被映射到元对象和数据对象,而目录可以被仅映射到元对象。因此,根据实施例,可以消除现有文件系统中存在的目录条目的负载。
例如,映射模块210可以生成元对象的第一键,使得第一键包括父索引节点号和文件名。例如,映射模块210可以将元对象的键分配为“M:父索引节点号:文件名”。在这方面,通过设置元对象的键,可以将同一父目录中的所有节点子文件彼此相邻地存储,从而确保高读取性能。另外,映射模块210可以生成数据对象的第二键,使得第二键包括文件的索引节点号。例如,映射模块210可以将数据对象的键分配为“D:对应文件的索引节点号”。
例如,映射模块210可以将根目录411映射到元对象421,并且元对象421可以包括指配为“M:0/”的键K1和值V1。例如,当根目录411的索引节点号是2时,映射模块210可以将子目录412映射到元对象422,并且元对象422可以包括键K2和值V2。这里,可以将键K2指配为包括根目录411的索引节点号2和文件名“pet”(宠物)的“M:2:pet/”。
例如,当子目录412的索引节点号是50并且第一文件413的索引节点号是100时,映射模块210可以将第一文件413映射到元对象423a和数据对象423b,元对象423a可以包括键K3a和值V3a,并且数据对象423b可以包括键K3b和值V3b。在这种情况下,可以将元对象423a的键K3a指配为包括子目录412的索引节点号50和文件名“cat”(猫)的“M:50:cat”,并且可以将数据对象423b的键K3b指配为包括第一文件413的索引节点号100的“D:100”。元对象423a的值V3a可以包括第一文件413的文件信息、元数据的生成时间等,并且数据对象423b的值V3b可以对应于实际内容,例如,猫的图片或视频等。
例如,当子目录412的索引节点号是50并且第二文件414的索引节点号是101时,映射模块210可以将第二文件414映射到元对象424a和数据对象424b,元对象424a可以包括键K4a和值V4a,并且数据对象424b可以包括键K4b和值V4b。在这种情况下,可以将元对象424a的键K4a指配为包括子目录412的索引节点号50和文件名“dog”(狗)的“M:50:dog”,并且可以将数据对象424b的键K4b指配为包括第二文件414的索引节点号101的“D:101”。元对象424a的值V4a可以包括第二文件414的文件信息、元数据的生成时间等,并且数据对象424b的值V4b可以对应于实际内容,例如,狗的图片或视频等。
在实施例中,当存储设备100从主机200接收到包括元对象和数据对象的至少一个键-值对象时,存储设备100可以基于元对象获得文件的信息并且可以基于数据对象的键来为数据对象的值分配物理存储空间。
通过根据上述实施例来配置键,当使用排序和存储键-值的存储设备100时,可以确保高迭代(ITERATE)性能。另外,可以消除当使用到文件的绝对路径来配置键时可能发生的高重命名操作负载。
图5示出了根据本发明构思的实施例的文件系统的键-值操作转换操作的示例。
一起参考图3和图5,转换模块220可以将与系统调用相对应的文件操作转换成键-值操作。在实施例中,文件操作可以对应于便携式操作系统接口(POSIX)系统调用。键-值操作可以包括对元对象MO的键-值操作和对数据对象DO的键-值操作。
例如,转换模块220可以将mkdir()转换为SET(MO),将creat()转换为SET(MO),将write()转换为SET(DO),将rmdir()转换为DELETE(MO),将unlink()转换为DELETE(MO+DO),将setattr()转换为SET(MO),将open()转换为GET(MO),将lookup()转换为GET(MO),将read()转换为GET(DO),以及将readdir()转换为ITERATE(MO)。
在一般块存储设备的情况下,为了执行写入操作,在主机与存储设备之间执行如位图、索引节点、目录条目和磁盘指针的文件系统元数据的输入/输出。然而,在根据实施例的存储设备100的情况下,由于主机200和存储设备100根据键-值接口KV-IF彼此通信,所以不执行文件系统元数据的输入/输出。因此,可以显著减少主机200与存储设备100之间的输入/输出数据量。另外,文件系统FS可以提供直观且简单的操作转换,并且与现有文件系统相比可以显著减少输入/输出操作。
图6示出了根据本发明构思的实施例的文件系统FS的文件操作和键-值操作。
一起参考图3和图6,应用AP和文件系统FS可以例如根据POSIX彼此通信。应用AP可以向文件系统FS请求如open()、creat()和readdir()的POSIX操作,即文件操作。文件系统FS的转换模块220可以将POSIX操作转换成键-值操作,例如GET()、SET()、ITERATE()等。
文件系统FS可以通过键-值接口KV-IF分别根据各种键-值操作向存储设备100提供键-值命令。因此,存储设备100可以根据分别与接收到的键-值命令相对应的键-值操作来执行诸如以下各种操作:例如,对象索引、事务、对象存储或对象读取。
图7示出了根据本发明构思的实施例的文件系统的事务管理操作的示例。
一起参考图3和图7,转换模块220可以将一个系统调用71(例如,unlink())转换为多个键-值操作(例如,两个键-值操作DELETE(meta)和DELETE(data))。事务管理模块230可以将与一个系统调用71相对应的多个键-值操作(例如,两个键-值操作DELETE(meta)和DELETE(data))作为一个事务72来管理。
因此,主机200可以通过键-值接口KV-IF向存储设备100提供事务72,并且存储设备100的事务支持模块112可以执行事务72。例如,存储设备100可以对接收到的至少一个键-值对象执行事务72并将执行事务72的结果存储在存储设备100的非易失性存储器120中。例如,主机200可以向存储设备100提供指示新事务的开始的BeginTx(),向存储设备100提供与DELETE(meta)和DELETE(data)相对应的键-值命令,并且向存储设备100提供指示事务的结束的EndTx()。在这方面,事务支持模块112可以通过提供事务相关函数BeginTx()和EndTx()来保证包括在一个事务72中的操作的原子性。
在实施例中,当接收到BeginTx()时,存储设备100可以在事务表TxTable中创建新条目。当属于事务的后续命令到达时,存储设备100可以在存在于存储器中的事务日志TxLogs中维护键-值索引并且可以缓冲相关值。当接收到EndTx(TID)时,存储设备100可以提交相关事务并且将事务的状态改变为COMMITTED(已提交)。另外,存储设备100可以通知主机200事务被提交。
当文件系统FS执行输入/输出操作时,事务函数可以用于每个文件操作。在这方面,通过一个文件操作生成的输入和输出被视为一个事务,因此,可以保证文件操作的原子性。然而,由于当所有文件操作都作为相应事务被处理时存储设备100的负载可能增加,所以当没有显式同步函数例如fsync()时,文件系统FS可以每周期将多个事务处理一次。另一方面,当调用如fsync()的显式同步函数时,文件系统FS可以仅从缓冲文件操作当中选择与对应文件相关的操作并且与所对应的操作一起执行事务处理。在这种情况下,为了维持文件操作之间的相关性,文件系统FS可以在文件系统FS内维持对应的相关性。
图8示出了根据本发明构思的实施例的文件系统FS的操作的示例。
一起参考图3和图8,为了将新生成的第三文件415存储在存储设备100中,文件系统FS可以将与第三文件415相对应的文件信息映射到元对象425a并且将与第三文件415相关的文件操作转换成键-值操作。例如,文件系统FS的转换模块220可以将用于将第三文件415的文件信息存储在存储设备100中的系统调用81a(例如,creat("/pet/fish"))转换成键-值操作81b(例如,SET(meta))。
另外,文件系统FS的映射模块210可以将有关第三文件415的信息映射到包括键K5a和值V5a的元对象425a。在这种情况下,可以将元对象425a的键K5a分配为“M:50:fish”以包括父索引节点号50和文件名“fish”,并且元对象425a的值V5a可以包括第三文件415的文件信息、元数据的生成时间等。
图9示出了根据本发明构思的实施例的文件系统FS的操作的示例。
一起参考图3和图9,为了将新生成的第三文件415存储在存储设备100中,文件系统FS可以将第三文件415的内容映射到数据对象425b并且将与第三文件415相关的文件操作转换成键-值操作。例如,文件系统FS的转换模块220可以将用于将第三文件415的内容存储在存储设备100中的系统调用82a(例如,write("/pet/fish",4KB))转换成键-值操作82b(例如,SET(data))。
另外,文件系统FS的映射模块210可以将第三文件415的内容映射到包括键K5b和值V5b的数据对象425b。在这种情况下,可以将数据对象425b的键K5b指配为“D:102”以包括作为第三文件415的索引节点号102。例如,数据对象425b的值V5b可以对应于诸如以下数据:例如,与鱼相对应的图片或视频。
图10和图11示出了根据本发明构思的实施例的文件系统FS的操作的示例。
一起参考图3、图10和图11,为了从存储设备100中检索对应于与“pet”相关的第一文件413、第二文件414和第三文件415的对象,文件系统FS可以将与对第一文件413、第二文件414和第三文件415的检索相关的文件操作转换成键-值操作。例如,文件系统FS的转换模块220可以将用于从存储设备100读取子目录412的子内容的系统调用83a(例如,readdir("/pet/"))转换成键-值操作83b(例如,ITERATE('M:50'))。文件系统FS可以向存储设备100提供与键-值操作83b即ITERATE('M:50')相对应的键-值命令。随后,存储设备100可以向主机200返回(例如,提供)将“M:50”包括在其键中的多个元对象423a、424a和425a。在实施例中,存储设备100可以从非易失性存储器120读取数据对象并对所述数据对象执行事务。
图12示出了根据本发明构思的实施例的主机存储系统10b。
参考图12,主机存储系统10b可以对应于图1的主机存储系统10的实现方式示例,并且上面参考图1至图11给出的描述也可以被应用于根据图12的实施例。存储设备100可以包括存储控制器110和非易失性存储器120。根据一些实施例,可以将存储控制器110称为控制器、设备控制器或存储器控制器。在下文中,将一起参考图1和图12给出描述。
存储控制器110可以响应于来自主机200的写入命令(例如,SET(DO))而控制非易失性存储器120将数据对象DO写入到非易失性存储器120。另外,存储控制器110可以响应于来自主机200的读取命令(例如,GET(DO))而控制非易失性存储器120读取存储在非易失性存储器120中的数据对象DO。在这方面,存储设备100可以执行与一般存储设备的数据写入操作和数据读取操作类似的数据写入操作和数据读取操作。
另外,根据实施例,存储控制器110可以包括对象索引模块111和事务支持模块112。例如,对象索引模块111和事务支持模块112可以用软件实现并且可以被存储在非易失性存储器120中。当向存储设备100供应电力时,可以将对象索引模块111和事务支持模块112从非易失性存储器120加载到存储控制器110的工作存储器中。
图13是示出了根据本发明构思的实施例的存储控制器110的框图。
参考图13,存储控制器110可以包括可以通过总线118彼此通信的对象索引模块111、事务支持模块112、处理器113、缓冲存储器114、闪存转换层(FTL)115、主机接口116和非易失性存储器接口117。在下文中,将一起参考图12和图13给出描述。
处理器113可以包括中央处理单元(CPU)或微处理器并且可以控制存储控制器110的整体操作。在实施例中,可以将处理器113实现为多核处理器,例如,双核处理器或四核处理器。对象索引模块111、事务支持模块112和FTL 115可以被加载到存储控制器110的工作存储器中。例如,可以将工作存储器实现为易失性存储器(例如,SRAM或DRAM)或非易失性存储器(例如,闪速存储器或PRAM)。
当处理器113运行加载到工作存储器中的FTL 115时,可以控制非易失性存储器120的针对元对象或数据对象的写入和读取操作。FTL 115可以执行诸如以下各种操作:例如,损耗均衡和垃圾收集。损耗均衡是用于通过均匀地使用NVM 120中的存储块来防止或减少特定块的过度劣化的技术,并且可以例如通过用于平衡物理块的擦除计数的固件技术来实现。垃圾收集是用于通过将存储块中的有效数据复制到新块然后擦除前一个块来保证NVM 120中的可用容量的技术。
缓冲存储器114可以临时存储要写入到非易失性存储器120的元对象和数据对象或从非易失性存储器120读取的元对象和数据对象。缓冲存储器114可以是设置在存储控制器110中的组件,但是也可以设置在存储控制器110外部。
主机接口116可以向主机200发送/从主机200接收键-值命令和键-值对象。主机200向主机接口116发送的键-值对象可以包括要编程到非易失性存储器120的数据,而主机接口116向主机200发送的键-值对象可以包括对键-值命令的响应或从非易失性存储器120读取的数据。
非易失性存储器接口117可以向非易失性存储器120发送要写入到非易失性存储器120的数据或者接收从非易失性存储器120读取的数据。非易失性存储器接口117可以被实现为符合诸如以下标准协议:例如,Toggle或开放NAND闪存接口(ONFI)。
图14是示出了根据本发明构思的实施例的主机200与存储设备100之间的操作的流程图。上面参考图1至图13给出的描述也可以应用于根据图14的实施例,因此,为了说明的方便,将省略对先前描述的组件和技术方面的进一步描述。
参考图14,在操作S110中,主机200将文件或目录映射到键-值对象。在操作S120中,主机200将文件操作转换成键-值操作。根据实施例,可以在操作S110之前执行操作S120,或者可以基本上同时地执行操作S110和S120。在操作S130中,主机200管理包括至少一个键-值操作的事务。在操作S140中,主机200向存储设备100发送键-值命令。
在操作S150中,存储设备100对键-值对象进行索引。在操作S160中,存储设备100支持事务。在操作S170中,存储设备100根据事务对非易失性存储器执行包括读取操作和写入操作的存储器操作。在操作S180中,存储设备100向主机200提供响应。例如,响应可以包括键或者键和值两者。
图15示出了应用了根据本发明构思的实施例的存储设备的系统1000。例如,图15的系统1000可以是诸如以下移动系统:移动电话、智能电话、平板个人计算机(PC)、可穿戴设备、医疗保健设备或物联网(IoT)设备。然而,图15的系统1000不一定限于移动系统,并且可以包括例如个人计算机、膝上型计算机、服务器、媒体播放器或诸如例如导航设备的汽车设备。
参考图15,系统1000可以包括主处理器1100、存储器1200a和1200b、以及存储设备1300a和1300b,并且可以另外地包括图像捕获装置1410、用户输入装置1420、传感器1430、通信装置1440、显示器1450、扬声器1460、供电装置1470和连接接口1480中的至少一者。
主处理器1100可以控制系统1000的整体操作,并且更具体地,控制构成系统1000的其他组件的操作。主处理器1100可以用例如通用处理器、专用处理器或应用处理器来实现。在实施例中,主处理器1100可以对应于上面参考图1至图14描述的主机200。因此,主处理器1100可以包括如下轻量文件系统:该轻量文件系统可以将文件数据映射到键-值对象,将文件操作转换成键-值操作,并且基于键-值对象和键-值操作来管理事务。
主处理器1100可以包括一个或更多个CPU核1110并且还可以包括用于控制存储器1200a和1200b和/或存储设备1300a和1300b的控制器1120。根据实施例,主处理器1100还可以包括加速器1130,该加速器是用于诸如人工智能(AI)数据操作的高速数据操作的专用电路。加速器1130可以包括例如图形处理单元(GPU)、神经处理单元(NPU)和/或数据处理单元(DPU),并且还可以被实现为物理上独立于主处理器1100的其他组件的单独芯片。
存储器1200a和1200b可以被用作系统1000的主存储器件并且可以包括诸如例如SRAM和/或DRAM的易失性存储器。然而,本发明构思的实施例不限于此,并且存储器1200a和1200b还可以包括诸如例如闪速存储器、PRAM和/或RRAM的非易失性存储器。可以将存储器1200a和1200b实现在与主处理器1100相同的封装件中。
存储设备1300a和1300b可以用作不管是否供应电力都存储数据的非易失性存储设备,并且与存储器1200a和1200b相比可以具有相对大的存储容量。存储设备1300a和1300b可以包括存储控制器1310a和1310b以及在存储控制器1310a和1310b的控制下存储数据的非易失性存储器(NVM)1320a和1320b。NVM 1320a和1320b可以包括具有2维(2D)结构或3维(3D)V-NAND(垂直NAND)结构的闪速存储器,但是还可以包括其他类型的非易失性存储器,诸如例如PRAM和/或RRAM。
存储设备1300a和1300b可以被包括在系统1000中同时与主处理器1100物理上分开,或者可以被实现在与主处理器1100相同的封装件中。另外,存储设备1300a和1300b可以是固态硬盘(SSD)或存储卡的形式,并且因此,存储设备1300a和1300b可以通过诸如接口(例如,稍后将描述的连接接口1480)可拆卸地附接到系统1000的其他组件。存储设备1300a和1300b可以是应用了诸如以下标准协议的设备:例如,通用闪存存储设备(UFS)、嵌入式多媒体卡(eMMC)或快速非易失性存储器(NVMe),但是不限于此。
在实施例中,存储设备1300a和1300b可以对应于上面参考图1至图14描述的存储设备100。因此,存储设备1300a和1300b可以支持用于对键-值对象进行索引的设备内索引技术和用于键-值对象的事务函数。例如,存储控制器1310a和1310b可以各自包括对象索引模块111和事务支持模块112。另外,非易失性存储器1320a和1320b可以存储多个键-值对象,并且键-值对象可以包括包含文件的信息的元对象和包含文件的内容的数据对象。
图像捕获装置1410可以捕获静止图像或运动图片,并且可以包括例如相机、摄像机和/或网络摄像头。用户输入装置1420可以接收从系统1000的用户输入的各种类型的数据并且可以包括例如触摸板、键区、键盘、鼠标和/或麦克风。
传感器1430可以感测可以从系统1000外部获得的各种类型的物理量并且将感测到的物理量变换成电信号。传感器1430可以包括例如温度传感器、压力传感器、照度传感器、位置传感器、加速度传感器、生物传感器和/或陀螺仪传感器。
通信装置1440可以根据各种通信协议向系统1000外部的其他装置发送信号并且从系统1000外部的其他装置接收信号。通信装置1440可以包括例如天线、收发器和/或调制解调器。显示器1450和扬声器1460可以用作分别向系统1000的用户输出视觉信息和听觉信息的输出装置。供电装置1470可以适当地转变从嵌入到系统1000的电池供应的电力和/或从外部电源供应的电力并且将转变后的电力供应给系统1000的组件。
连接接口1480可以提供系统1000与外部装置之间的连接,所述外部装置连接到系统1000并且能够与系统1000交换数据。可以根据诸如以下各种接口协议来实现连接接口1480:例如,高级技术附件(ATA)、串行ATA(SATA)、外部SATA(e-SATA)、小型计算机系统接口(SCSI)、串行连接SCSI(SAS)、外围组件互连(PCI)、快速PCI(PCIe)、快速NVM(NVMe)、IEEE1394、通用串行总线(USB)、安全数字(SD)卡、多媒体卡(MMC)、嵌入式多媒体卡(eMMC)、通用闪存存储设备(UFS)、嵌入式通用闪存存储设备(eUFS)、紧凑闪存(CF)卡接口等。
如在本发明构思的领域中传统的那样,按功能块、单元和/或模块在附图中描述和图示实施例。本领域的技术人员应领会,这些块、单元和/或模块由可以使用基于半导体的制造技术或其他制造技术形成的诸如逻辑电路、分立组件、微处理器、硬接线电路、存储器元件、布线连接等的电子(或光学)电路以物理方式实现。在由微处理器或类似物实现块、单元和/或模块的情况下,它们可以使用软件(例如,微代码)来编程以执行本文讨论的各种功能并且可以可选地由固件和/或软件驱动。或者,每个块、单元和/或模块可以由专用硬件实现,或者被实现为用于执行一些功能的专用硬件和用于执行其他功能的处理器(例如,一个或更多个被编程的微处理器和相关电路系统)的组合。另外,在不脱离本发明的范围的情况下,可以将实施例的每个块、单元和/或模块以物理方式分成两个或更多个相互作用且分立的块、单元和/或模块。此外,在不脱离本发明构思的范围的情况下,可以将实施例的块、单元和/或模块以物理方式组合成更复杂的块、单元和/或模块。
如本领域的技术人员将领会的,可以将本发明构思的各方面体现为系统、方法或计算机程序产品。因此,本发明构思的各方面可以采取全硬件实施例、全软件实施例(包括固件、驻留软件、微代码等)或组合软件和硬件方面的实施例的形式,这些软件和硬件方面在本文中可以全部通称为“电路”、“模块”、“单元”或“系统”。此外,本发明构思的各方面可以采取包含在一个或更多个计算机可读介质中的计算机程序产品的形式,该一个或更多个计算机可读介质上包含有计算机可读程序代码。如果用软件实现,则功能可以作为一个或更多个指令或代码在有形的、非暂时性计算机可读介质上存储或发送。
在本文中,术语“电路”可以是指模拟电路或数字电路。在数字电路的情况下,数字电路可以硬连线以执行电路的对应任务,诸如运行指令以执行电路的对应任务的数字处理器。这样的处理器的示例包括专用集成电路(ASIC)和现场可编程门阵列(FPGA)。
在本发明构思的实施例中,提供了一种三维(3D)存储器阵列。该3D存储器阵列单片地形成在存储单元阵列的一个或更多个物理层级中,这些存储单元阵列具有设置在硅衬底上方的有源区域以及与所述存储单元的操作相关联的电路系统,而无论这种相关电路系统是在所述衬底上方还是在所述衬底内。术语“单片”意味着阵列的每个层级的各层被直接沉积在阵列的每个下一层级的各层上。在本发明构思的实施例中,3D存储器阵列包括垂直NAND串,这些垂直NAND串被垂直定向为使得至少一个存储单元位于另一存储单元上方。至少一个存储单元可以包括电荷俘获层。特此通过引用并入本文的以下专利文献描述了用于三维存储器阵列的合适配置,其中三维存储器阵列被配置为多个层级,其中在各层级之间共享字线和/或位线:美国专利号7,679,133;8,553,466;8,654,587;8,559,235;以及美国专利公开号2011/0233648。
虽然已经参考本发明构思的实施例特别示出并描述了本发明构思,但是应理解,在不脱离如由所附权利要求限定的本发明构思的精神和范围的情况下,可以在其中做出形式和细节上的各种变化。
Claims (18)
1.一种与键-值存储设备进行通信的主机,所述主机包括:
主机存储器,所述主机存储器存储计算机程序;以及
主机控制器,所述主机控制器包括被配置为运行所述计算机程序的处理器,其中,所述计算机程序被配置为在被运行时使得所述处理器:
处理与由存储在所述主机中的应用接收到的文件数据相关的文件或目录,并且将所述文件或所述目录提供给所述键-值存储设备;
将所述文件或所述目录映射到能够存储在所述键-值存储设备中的键-值对象;
将由存储在所述主机中的所述应用请求的文件操作转换成能够在所述键-值存储设备中执行的键-值操作;
管理与所述键-值对象和所述键-值操作相关的事务并且将所述事务提供给所述键-值存储设备;以及
将所述文件或所述目录抽象成元对象或数据对象。
2.根据权利要求1所述的主机,其中,所述计算机程序进一步被配置为在被运行时使得所述处理器:
将所述文件或所述目录的信息映射到所述元对象;以及
将所述文件的内容映射到所述数据对象。
3.根据权利要求1所述的主机,其中,所述计算机程序被进一步配置为在被运行时使得所述处理器:
基于所述文件或所述目录的索引节点来分配所述元对象的第一键和所述数据对象的第二键。
4.根据权利要求3所述的主机,其中,所述计算机程序被进一步配置为在被运行时使得所述处理器:
生成所述第一键,其中所述第一键包括父索引节点号和文件名;以及
生成所述第二键,其中所述第二键包括所述文件的索引节点号。
5.根据权利要求1所述的主机,其中,所述计算机程序被进一步配置为在被运行时使得所述处理器:
将与所述文件操作相对应的系统调用转换成所述键-值操作,
其中所述键-值操作包括针对所述元对象或所述数据对象的键-值命令。
6.根据权利要求5所述的主机,其中,所述计算机程序被进一步配置为在被运行时使得所述处理器:
将与所述文件操作相对应的所述系统调用转换成多个键-值操作,
其中所述键-值操作是所述多个键-值操作之一。
7.根据权利要求6所述的主机,其中,所述计算机程序被进一步配置为在被运行时使得所述处理器:
将与所述系统调用相对应的所述多个键-值操作作为一个事务来管理。
8.根据权利要求1所述的主机,
其中,存储在所述主机存储器中的所述计算机程序包括所述应用和文件系统,并且所述应用和所述文件系统由所述主机控制器的所述处理器运行。
9.根据权利要求1所述的主机,
其中,所述主机根据键-值接口与所述键-值存储设备进行通信。
10.一种键-值存储设备,包括:
非易失性存储器,所述非易失性存储器被配置为存储多个键-值对象,其中,所述键-值对象包括包含文件的信息的元对象和包含所述文件的内容的数据对象;以及
存储控制器,所述存储控制器包括存储器和处理器,所述存储器存储计算机程序,所述处理器被配置为运行所述计算机程序,并且被配置为从主机接收所述键-值对象中的至少一个键-值对象并且基于接收到的所述至少一个键-值对象来控制所述非易失性存储器,
其中,所述计算机程序被配置为在被运行时使得所述处理器:
对接收到的所述至少一个键-值对象进行索引;以及
支持针对接收到的所述至少一个键-值对象的事务,
其中,所述键-值存储设备根据键-值接口与所述主机进行通信。
11.根据权利要求10所述的键-值存储设备,其中,所述计算机程序被进一步配置为在被运行时使得所述处理器:
从所述主机接收键-值命令并且对接收到的所述至少一个键-值对象执行与所述键-值命令相对应的键-值操作。
12.根据权利要求11所述的键-值存储设备,
其中,所述事务包括与一个系统调用相对应的多个键-值操作,
所述键-值操作是所述多个键-值操作之一,并且
所述计算机程序被进一步配置为在被运行时使得所述处理器根据所述事务来支持所述多个键-值操作。
13.根据权利要求10所述的键-值存储设备,
其中,接收到的所述至少一个键-值对象包括所述元对象和所述数据对象,并且
所述计算机程序被进一步配置为在被运行时使得所述处理器基于所述元对象来获得所述文件的信息并且基于所述数据对象的键来为所述数据对象的值分配物理存储空间。
14.根据权利要求10所述的键-值存储设备,其中,所述计算机程序被进一步配置为在被运行时使得所述处理器:
对接收到的所述至少一个键-值对象执行所述事务并且将执行所述事务的结果存储在所述非易失性存储器中。
15.根据权利要求10所述的键-值存储设备,其中,所述计算机程序被进一步配置为在被运行时使得所述处理器:
从所述非易失性存储器读取所述数据对象并且对所述数据对象执行所述事务。
16.根据权利要求10所述的键-值存储设备,
其中,所述元对象的键包括父索引节点号和文件名,并且
所述数据对象的键包括所述文件的索引节点号。
17.一种主机存储系统,包括:
键-值存储设备;以及
主机,所述主机被配置为根据键-值接口与所述键-值存储设备进行通信,
其中,所述主机包括:
主机存储器,所述主机存储器存储计算机程序;以及
主机控制器,所述主机控制器包括被配置为运行所述计算机程序的处理器,其中所述计算机程序被配置为在被运行时使得所述处理器:
处理与由存储在所述主机中的应用接收到的文件数据相关的文件或目录,并且将所述文件或所述目录提供给所述键-值存储设备;
将所述文件或所述目录映射到能够存储在所述键-值存储设备中的键-值对象;
将由所述应用请求的文件操作转换成能够在所述键-值存储设备中执行的键-值操作;以及
管理与所述键-值对象和所述键-值操作相关的事务并且将所述事务提供给所述键-值存储设备。
18.根据权利要求17所述的主机存储系统,其中,所述键-值存储设备包括:
非易失性存储器,所述非易失性存储器被配置为存储包括所述键-值对象的多个键-值对象,其中所述多个键-值对象包括包含所述文件的信息的元对象和包含所述文件的内容的数据对象;以及
存储控制器,所述存储控制器被配置为从所述主机接收所述键-值对象并且基于接收到的键-值对象来控制所述非易失性存储器,
其中,所述存储控制器被进一步配置为对所述键-值对象进行索引以及支持针对所述多个键-值对象的事务。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20210082336 | 2021-06-24 | ||
KR10-2021-0082336 | 2021-06-24 | ||
KR1020220034937A KR20230000412A (ko) | 2021-06-24 | 2022-03-21 | 키-밸류 스토리지 장치, 호스트, 및 호스트-스토리지 시스템 |
KR10-2022-0034937 | 2022-03-21 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115525604A true CN115525604A (zh) | 2022-12-27 |
Family
ID=84540982
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210688337.0A Pending CN115525604A (zh) | 2021-06-24 | 2022-06-16 | 键-值存储设备、主机和主机存储系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20220414059A1 (zh) |
CN (1) | CN115525604A (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8321380B1 (en) * | 2009-04-30 | 2012-11-27 | Netapp, Inc. | Unordered idempotent replication operations |
US10235374B2 (en) * | 2016-03-08 | 2019-03-19 | International Business Machines Corporation | Key-value store for managing user files based on pairs of key-value pairs |
US11016932B2 (en) * | 2017-09-21 | 2021-05-25 | Alibaba Group Holding Limited | Systems, methods, and apparatuses for simplifying filesystem operations utilizing a key-value storage system |
US20210248107A1 (en) * | 2017-12-29 | 2021-08-12 | Beijing Memblaze Technology Co., Ltd | Kv storage device and method of using kv storage device to provide file system |
-
2022
- 2022-06-16 CN CN202210688337.0A patent/CN115525604A/zh active Pending
- 2022-06-21 US US17/807,933 patent/US20220414059A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220414059A1 (en) | 2022-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11989160B2 (en) | Heuristic interface for enabling a computer device to utilize data property-based data placement inside a nonvolatile memory device | |
US10216418B2 (en) | Storage apparatus and method for autonomous space compaction | |
TW201935243A (zh) | 固態驅動器、分散式資料儲存系統和利用鍵值儲存的方法 | |
US20210406241A1 (en) | Reconstruction of links between logical pages in a storage system | |
US20140074776A1 (en) | Re-trim of free space within vhdx | |
US11645011B2 (en) | Storage controller, computational storage device, and operational method of computational storage device | |
US11269547B2 (en) | Reusing overwritten portion of write buffer of a storage system | |
US11042328B2 (en) | Storage apparatus and method for autonomous space compaction | |
US11921639B2 (en) | Method for caching data, a host device for caching data, and a storage system for caching data | |
US11210230B2 (en) | Cache retention for inline deduplication based on number of physical blocks with common fingerprints among multiple cache entries | |
US11907568B2 (en) | Storage controller, storage device, and operation method of storage device | |
KR20210012085A (ko) | 저널 리플레이를 개선하기 위한 스토리지 장치, 그것의 동작 방법, 및 스토리지 장치를 포함하는 전자 장치 | |
KR20230000412A (ko) | 키-밸류 스토리지 장치, 호스트, 및 호스트-스토리지 시스템 | |
EP3436973A1 (en) | File system support for file-level ghosting | |
US11200210B2 (en) | Method of efficient backup of distributed file system files with transparent data access | |
US20220414059A1 (en) | Key-value storage device, host, and host-storage system | |
US11835992B2 (en) | Hybrid memory system interface | |
US11221985B2 (en) | Metadata space efficient snapshot operation in page storage | |
US20220291864A1 (en) | Operation method of storage device configured to support multi-stream | |
KR20240097565A (ko) | 아토믹 라이트 처리를 수행하는 스토리지 장치, 스토리지 장치를 제어하는 호스트 및 스토리지 장치의 동작 방법 | |
JP2024525170A (ja) | データ圧縮方法及び装置 | |
KR20230012992A (ko) | 파일 읽기 지연 감소를 위한 방법 및 장치 |
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 |