CN118051179A - 用于使用多个分区的分区命名空间存储的技术 - Google Patents

用于使用多个分区的分区命名空间存储的技术 Download PDF

Info

Publication number
CN118051179A
CN118051179A CN202311472494.9A CN202311472494A CN118051179A CN 118051179 A CN118051179 A CN 118051179A CN 202311472494 A CN202311472494 A CN 202311472494A CN 118051179 A CN118051179 A CN 118051179A
Authority
CN
China
Prior art keywords
cache
partition
data
entry
logical blocks
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202311472494.9A
Other languages
English (en)
Inventor
许�鹏
邱晟
胡潮红
K·裴
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.)
Lemon Inc Cayman Island
Original Assignee
Lemon Inc Cayman Island
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 Lemon Inc Cayman Island filed Critical Lemon Inc Cayman Island
Publication of CN118051179A publication Critical patent/CN118051179A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host 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
    • G06F3/064Management of blocks
    • 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
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • G06F2212/262Storage comprising a plurality of storage devices configured as RAID
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/312In storage controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开的实施例涉及用于使用多个分区的分区命名空间(ZNS)存储的技术。描述了以下示例:将与数据组块相对应的一个或多个逻辑块(LB)存储在第一分区缓存中;针对数据组块中的每个LB,对缓存条目的指向第一分区缓存中的LB的缓存元素进行写入,其中缓存条目包括与数据组块的多个LB相对应的多个缓存元素;针对该缓存条目,对映射表中指向该缓存条目的表条目进行写入;以及在对缓存条目触发了存储策略时,将缓存条目的每个缓存元素所指向的多个LB写入为第二分区流中针对数据组块的隔离块的连续LB,以及更新该表条目以指向第二分区流中的隔离块。

Description

用于使用多个分区的分区命名空间存储的技术
技术领域
所描述的方面涉及存储设备,诸如分区命名空间(Zone Namespace,ZNS)存储设备,并且更具体地涉及ZNS存储设备上的分区存储。
背景技术
在非易失性存储器快速(Nonvolatile Memory Express,NVMe)存储协议中,ZNS接口被定义并且包括命令集,该命令集通过将NVMe命名空间划分为需要顺序写入的分区(zone)来进行存储。ZNS为超大规模组织、全闪存阵列供应商、以及大型存储系统供应商提供了重要的优势,以利用针对顺序写入工作负载而被优化的存储设备。ZNS降低了设备侧的写入放大(Write Amplification,WA)、过度供应、以及动态随机存取存储器(DynamicRandom Access Memory,DRAM)要求,同时改善了尾时延、吞吐量、以及驱动器容量。通过为NVMe固态硬盘(Solid State Drive,SSD)带来分区块(zoned-block)接口,ZNS与叠瓦式磁记录(Shingled Magnetic Recording,SMR)硬盘驱动器(Hard Disk Drive,HDD)已使用的分区高级技术附件(Advanced Technology Attachment,ATA)命令(Zoned-AdvancedTechnology Attachment Command,ZAC)/分区块命令(Zoned Block Command,ZBC)主机模型保持一致,并且使分区块存储层能够跨SSD/HDD生态系统出现。
例如,在云存储中,服务器可以将数据存储在大小大于逻辑块(Logical Block,LB)和/或包括多个逻辑块的数据组块(chunk)中。用于存储数据组块的服务器流量模式可以是仅追加多流写入,这与ZNS SSD配合良好。目前在SSD行业,主流供应商提供基于三层单元(Triple Layer Cell,TLC)非与(NOT-AND,NAND)的大分区ZNS解决方案,该解决方案将所有NAND裸片上的物理块组织为超级块条带以作为分区并以分区为基础来提供独立磁盘冗余阵列(Redundant Array of Independent Disk,RAID)保护。然而,由于缓存和断电保护资源(例如,电容器)的限制,该解决方案仅提供有限的开放分区。由于开放分区受限,主机无法实现基于数据热度(例如,数据变化或预期变化的速率)的数据分离。另外,在该解决方案中,分区是仅追加写入/删除的粒度,并且数据组块是服务器的仅追加写入/删除的粒度。因此,如果分区大小大于组块大小,则可能需要垃圾收集来回收已完成分区中的可用空间,这会导致WA—例如,更大的分区大小会导致更高的WA。
发明内容
下面呈现一个或多个实现的简化概述,以便提供对这种实现的基本理解。本发明内容并不是对所有设想的实现的详尽概述,并且既不旨在表示所有实现的关键或重要元素,也不旨在界定任何或所有实现的范围。其唯一目的是以简化形式呈现一种或多种实现的一些概念,以作为稍后呈现的更详细描述的前言。
在示例中,提供了一种用于使用多个分区的分区命名空间(ZNS)存储的方法,该方法包括:将与数据组块相对应的一个或多个逻辑块存储在第一分区缓存中;针对数据组块中的每个逻辑块,对缓存条目的指向第一分区中的该逻辑块的缓存元素进行写入,其中缓存条目包括与数据组块的多个逻辑块相对应的多个缓存元素;针对缓存条目,对映射表中指向该缓存条目的表条目进行写入;以及当存储策略针对该缓存条目被触发时:将该缓存条目的每个缓存元素所指向的多个逻辑块写入为第二分区流中针对数据组块的隔离块中的连续逻辑块;以及更新表条目以指向第二分区流中的隔离块。
在另一示例中,提供了一种用于使用多个分区的分区命名空间(ZNS)存储的装置,其中该装置包括处理器和其上具有指令的非暂态存储器。该指令在由处理器执行时,使处理器:将与数据组块相对应的一个或多个逻辑块存储在第一分区缓存中;针对数据组块中的每个逻辑块,对缓存条目的指向第一分区缓存中的该逻辑块的缓存元素进行写入,其中缓存条目包括与数据组块的多个逻辑块相对应的多个缓存元素;针对缓存条目,对映射表中指向该缓存条目的表条目进行写入;以及当存储策略针对缓存条目被触发时,将该缓存条目的每个缓存元素所指向的多个逻辑块写入为第二分区流中针对数据组块的隔离块中的连续逻辑块;以及更新表条目以指向第二分区流中的隔离块。
在另一示例中,提供了一种存储指令的非暂态计算机可读存储介质,该指令在由处理器执行时使处理器执行一种方法。该方法包括:将与数据组块相对应的一个或多个逻辑块存储在第一分区缓存中;针对数据组块中的每个逻辑块,对缓存条目的指向第一分区缓存中的逻辑块的缓存元素进行写入,其中缓存条目包括与数据组块的多个逻辑块相对应的多个缓存元素;针对该缓存条目,对映射表中指向该缓存条目的表条目进行写入;以及当存储策略针对缓存条目被触发时,将缓存条目的每个缓存元素所指向的多个逻辑块写入为第二分区流中针对数据组块的隔离块中的连续逻辑块;以及更新表条目以指向第二分区流中的隔离块。
为了实现前述和有关目的,一个或多个实现包括在下文中充分描述并在权利要求中特别指出的特征。以下描述和附图详细阐述了一个或多个实现的某些说明性特征。然而,这些特征仅指示可以采用各种实现原理的各种方式中的一些方式,并且本描述旨在包括所有这种实现及其等同物。
附图说明
图1是根据本文描述示例的驱动器接口的示例的示意图,该驱动器接口用于促进对一个或多个存储设备的访问。
图2图示了根据本文描述的各方面的由分区存储组件使用的存储结构的示例。
图3图示了根据本文描述的各方面的由分区存储组件在存储数据组块的逻辑块(LB)时使用的存储结构的示例。
图4图示了根据本文描述的各方面的用于映射表条目的状态机的示例。
图5图示了根据本文描述的各方面的用于映射缓存条目的状态机的示例。
图6是根据本文描述示例的方法示例的流程图,该方法用于写入分区存储装置中的数据组块。
图7是根据本文描述示例的用于处理在分区存储装置中存储的数据组块的方法的示例的流程图。
图8是用于执行本文描述的功能的设备示例的示意图。
具体实施方式
下面结合附图阐述的详细描述旨在作为各种配置的描述,而不旨在表示可以在其中实践本文描述概念的唯一配置。该详细描述包括为了提供对各种概念的透彻理解的具体细节。然而,对于本领域技术人员将明显的是,无需这些特定细节也可以实践这些概念。在一些实例中,众所周知的组件以框图形式被示出,以避免模糊这些概念。
本公开描述了各种示例,这些示例与使用小和大分区构造来提供分区命名空间(ZNS)存储有关。在当前的ZNS固态硬盘(SSD)中,不支持四层单元(Quad Level Cell,QLC)非与(NAND),并且如果保持开放一定时间,则QLCN NAND开放块(open block)可能会不稳定。在ZNS存储装置中存储数据组块的基于云的服务器(可称为“组块服务器”)无法保证其已写满整个NAND块。在此示例中,在QLC块中强制填充以填满NAND块可能会引入额外的写入放大(WA),这可能是不期望的。因此,提议了一些小分区解决方案。在一些示例中,通过使用小分区,开放分区的吞吐量可能会较低,并且主机软件(例如,应用或组块服务器)可以将小分区分组在一起以提供更高的写入吞吐量,这可能需要附加的处理资源。此外,主机软件可以使用额外信息(例如,NAND阵列中用于分区的物理布局)来进行分组。另外,例如,当分区较小时,设备可能不具有条带概念(例如,将数据行写入该分区或多个分区),因此它可能无法提供基于条带的独立磁盘冗余阵列(RAID)保护。这种情况下,对于云存储来说,服务级别协议(Service Level Agreement,SLA)可能会降低,数据恢复可能完全取决于云级别的能耗(Energy Consumption,EC),使得爆炸半径更大。另外,与大分区解决方案一样,小分区由于开放块保留问题而可能不支持QLC。
根据本文描述的各方面,多个ZNS存储装置可以使用多个分区以高效地存储所接收的数据,并且将数据移动到顺序存储的块以促进基于数据组块的操作。例如,形成数据组块的数据块最初可以被存储在使用仅追加写入的第一分区缓存中,以促进数据块的快速存储。当数据组块的所有数据块都在第一分区缓存中时(或者基于不同的存储策略触发),可以将数据组块的数据块依次写入到第二分区流中的隔离块以供存储。将数据组块的数据组块一起存储在隔离块中可以促进基于数据组块的操作,诸如读取整个数据组块、删除数据组块等,这针对使用数据组块进行操作的基于云的应用来说会更高效。另外,在小分区流中的存储之前,如果需要,则第一分区缓存中的数据可以被处理。此外,可以为多个分区中的每个分区分别提供冗余保护(例如,分别为第一分区缓存和第二分区流提供冗余保护)。在一个示例中,第一分区缓存可以比第二分区流中的隔离块有更大的大小。因此,第一分区缓存在本文中可以被称为大分区缓存,而第二分区流在本文中可以被称为小分区流。
现在转向图1-图8,参考可以执行本文描述的动作或操作的一个或多个组件以及一个或多个方法来描述示例,其中虚线中的组件和/或动作/操作可以是可选的。尽管下面在图6和图7中描述的操作以特定次序呈现和/或由示例组件执行,但是在一些示例中,动作次序和执行动作的组件可以取决于实现而变化。此外,在一些示例中,动作、功能、和/或所描述组件中的一个或多个可以由专门编程的处理器、执行专门编程的软件或计算机可读介质的处理器、或者由能够执行所描述动作或功能的硬件组件和/或软件组件的任何其他组合来执行。
图1是驱动器接口100的示例的示意图,驱动器接口100用于促进对一个或多个存储设备122的访问。例如,存储设备122可以包括一个SSD、多个SSD(其可以组合成单个系统存储装置)等。例如,在存在多个存储设备122的情况下,通过包括逻辑或算法以将物理LB地址(Logical Block Address,LBA)解析为多个存储设备122之一上的物理LB,驱动器接口100可以促进将多个存储设备122映射为单个系统存储装置。在一个示例中,物理LBA 0可以对应于第一存储设备上的LB 0,物理LBA 1可以对应于下一个存储设备上的LB 0,以此类推,使得基于除以存储设备122的数目的物理LBA并且基于物理LBA对存储设备122的数目取模的存储设备上的物理LB,LBA可以被解析为存储设备。这只是将存储设备122组合成单个系统存储装置的一个具体示例,并且基本上组合多个存储设备的任何机制都是可能的,使得驱动器接口100可以分配物理LBA并且知道如何将物理LBA解析为特定存储设备的物理LB。
在示例中,驱动器接口100可以向一个或多个应用126提供对(多个)存储设备的访问,以用于存储数据、检索所存储的数据、更新所存储的数据等。在一个示例中,驱动器接口100可以为可以在云中(例如,在经由一个或多个网络远程被连接的一个或多个服务器上)被执行的一个或多个应用126提供基于云的存储。例如,驱动器接口100由一个或多个服务器经由云可访问,并且可以被用来存储供一个或多个服务器、在服务器上执行的一个或多个应用126等使用的数据。
例如,驱动器接口100可以包括处理器102和/或存储器104,处理器102和/或存储器104被配置为执行或存储与提供分区存储组件106有关的指令或其他参数。处理器102和/或存储器104可以是驱动器接口100上的固件的一部分。在一个示例中,驱动器接口100可以利用包括驱动器接口100的计算设备的处理器102和/或存储器104来执行本文描述的驱动器接口100、相关联的固件、相关联的功能和/或组件。在一个示例中,驱动器接口100可以被耦合到服务器上的接口总线,并且可以利用(例如,单独或与服务器的附加处理或存储器资源相结合)服务器的处理器102和/或存储器104,以提供本文描述的功能和/或相关联的组件。例如,处理器102和存储器104可以是通过总线通信地耦合的单独组件(例如,在计算设备的主板或其他部分上、在诸如片上系统(System on a Chip,SoC)的集成电路上等)、彼此集成的组件(例如,处理器102可以包括存储器104以作为板载组件101)等等。存储器104可以存储指令、参数、数据结构等,以供处理器102使用/执行以执行本文描述的功能。
在一个示例中,驱动器接口100可以为一个或多个应用126提供基于云的存储,这可以包括存储从一个或多个应用126接收的数据组块。数据组块的大小可以是固定的,并且可以大于(多个)存储设备122的逻辑块,以便包括(多个)存储设备122的多个逻辑块。例如,数据组块的大小可以是64兆字节(Metabyte,MB),而逻辑块,或NAND块可以是128KB(Kilobyte,KB)、256KB、512KB等。
在示例中,分区存储组件106可以通过使用多个分区来促进在(多个)存储设备122上存储数据—大分区用于以仅追加写入模式来接收数据,并且小分区用于在各自与数据组块相对应的隔离块中存储数据。例如,分区存储组件106可以包括:映射表108,用于将分区映射到隔离块,其中分区和隔离块可以指代数据组块;大分区缓存110,用于以仅追加写入模式存储从一个或多个应用126接收的数据的逻辑块(例如,NAND块);映射缓存112,用于将逻辑块的逻辑块地址(LBA)(例如,NAND物理地址(NAND Physical Address,NPA))映射到分区;小分区流114,用于存储逻辑块的与分区相对应的隔离块;和/或冗余组件116,用于管理针对在大分区缓存110中和/或在小分区流114中的隔离块中存储的数据的冗余保护(例如,RAID保护)。
图2图示了根据本文描述的各方面的由分区存储组件106使用的存储结构200的示例。存储结构200包括如上文和本文将进一步描述的映射表108、大分区缓存110、映射缓存112、小分区流114的表示。例如,多个应用(例如,应用126)可以经由驱动器接口100进行写入,以将数据组块存储在一个或多个存储设备122中。驱动器接口100可以为应用126分配映射表108中定义的存储位置。例如,映射表108可以映射到存储设备122中的NAND块或NAND块条带,映射到可以被存储在存储设备122上的与小分区流114中的数据组块相对应的隔离块,或者映射到映射缓存112中与大分区缓存110中的数据组块的逻辑块相对应的条目。映射表108可以对应地维护与数据相关联的NPA的列表,无论是隔离块中的数据组块还是存储设备122上的数据的逻辑块。在示例中,映射表108中的表条目可以被提供回应用126并且每个表条目可以指向NPA,其可以包括存储设备122的物理LBA、小分区流114中的隔离块的位置、指向大分区缓存110位置的缓存条目等。
在示例中,大分区缓存110可以包括LB(例如,NAND块),LB(例如,NAND块)存储从应用126接收以供存储的数据,其中LB可以包括要被关联为数据组块并被关联为映射表108中的某些表条目的LB。然而,大分区缓存110可以是仅追加写入和随机读取存储装置,使得LB可能不会被顺序地接收或存储在大分区缓存110中。例如,多个应用126可以同时向驱动器接口100写入数据,并且因此,大分区缓存110可以包括来自多个应用的分散LB。当LB被写入到大分区缓存110时,分区存储组件106可以对相关联的缓存条目的缓存元素进行写入以指向LB的大分区缓存110位置,并且可以将映射缓存112中的缓存条目的地址或标识符作为映射表108中针对相对应的数据组块的表条目而存储。
例如,分区存储组件106可以将分区n0 202、分区n1 204、分区n2 206和分区n3208中的用于存储数据组块的分区位置分配给一个或多个应用126。基于分配分区位置或者不然基于接收到针对被分配分区的LB,分区存储组件106可以更新相对应的映射表条目以指向映射缓存112中的缓存条目。例如,n0 202可以指向缓存条目0 210,分区n1 204可以指向缓存条目1 212、分区n2 206可以指向缓存条目2 214,并且分区n3 208可以指向缓存条目3 216。由于LB在从应用126被接收时被存储在大分区缓存110中,所以相关联的缓存条目可以被更新成具有指向大分区缓存110中的LB的缓存元素。例如,当NPA(N0,0)被存储在大分区缓存110中时,分区存储组件106可以更新缓存条目0 210以包括指向大分区缓存110中的NPA(N0,0)的缓存元素。类似地,当NPA(N1,0)被存储在大分区缓存110中时,分区存储组件106可以更新缓存条目1 212以包括指向大分区缓存110中的NPA(N1,0)的缓存元素,以此类推。
在该示例中,如果应用126在数据被移动到小分区流114中的隔离块之前请求读取、更新、删除等与分区n0 202的数据段相关联的LB,则分区存储组件106可以从分区n0202获得缓存条目指针,确定缓存条目0 210中哪个缓存元素与所请求的LB相关联,以及确定该缓存元素指向大分区缓存110中哪个LB。例如,针对缓存条目0 210的数据段中的NPA(N0,2)的LB,分区存储组件106可以从缓存条目0 210中针对NPA(N0,2)的缓存元素获得大分区缓存110中的LB位置的指示,并且可以获得LB以提供给应用126。另外,在大分区缓存110中提供了冗余保护LB 220。例如,缓存中的每个条带(例如,每行)可以具有相关联的冗余保护LB(例如,SLC(Second Level Cache)RAID逻辑单元号(Logical Unit Number,LUN))。在示例中,分区存储组件106可以基于对相关联条带中的LB执行XOR操作而生成冗余保护LB。
在一个示例中,可以触发存储策略,这会导致大分区缓存110LB被写入到小分区流114以供存储。例如,小分区流114可以包括多个隔离块(isolation block)IS0、IS1、IS2、IS3,这些隔离块中的每个隔离块可以存储若干LB,诸如对应于数据组块的多个LB。就此而言,例如,每个隔离块可以是数据组块的大小,并且可以存储数据组块的所有LB。另外,例如,映射缓存112中用于指向某分区的LB的每个缓存条目也可以指向与该分区相对应的隔离块。例如,缓存条目0 210可以指向隔离块IS0,缓存条目1 212可以指向隔离块IS1,缓存条目2 214可以指向隔离块IS3,而缓存条目3 216可以指向隔离块IS2。图3示出了示例。
图3图示了根据本文描述的各方面的存储结构300的示例,存储结构300由分区存储组件106在存储数据组块的LB时使用。存储结构300包括如上文和本文将进一步描述的映射表108、大分区缓存110、映射缓存112、小分区流114的表示。在示例中,存储结构300可以类似于上面图2中描述的存储结构200,并且可以包括与存储结构200类似的数据,直到触发针对一个或多个隔离块的存储策略为止。例如,当在大分区缓存110中接收到针对隔离块(或相关联的数据组块)的所有LB时,或者基于其他触发(诸如请求存储数据组块、或大分区缓存110中针对数据组块的所有LB、或者请求冲刷大分区缓存110和/或映射缓存112等),可以触发存储策略。
在示例中,基于被触发的至少针对分区n0 202、分区n1 204、分区n2 206和分区n3208的存储策略,分区存储组件106可以基于指向映射表108中针对分区的缓存条目的指针来读取缓存条目0 210、缓存条目1 212、缓存条目2 214、以及缓存条目3 216。例如,针对给定的分区或缓存条目(诸如分区n0 202或相对应的缓存条目0 210),分区存储组件106可以获得缓存条目0 210的缓存元素,每个缓存元素指向大分区缓存110中包括针对该分区的LB的LB位置(例如,大分区缓存110中的NPA(X0,0)、NPA(X0,1)、NPA(X0,2)...,NPA(X0,Cap-1)的LB位置,如大分区缓存110中所示,其中Cap可以是针对给定分区或数据组块的多个LB的容量)。在示例中,分区存储组件106可以将这些LB从大分区缓存110顺序地移动、复制或冲刷到小分区流114中相关联的隔离块的LB中。例如,如所描述的,针对分区n0 202的缓存条目0 210可以指向隔离块0(IS0),并且因此,分区存储组件106可以将针对分区n0 202的LB移动、复制或冲刷到小分区流114中的IS0。例如,这可以包括将LB的内容从大分区缓存110的LB写入(例如,复制或移动)到IS0中的LB,和/或删除大分区缓存110中已复制或移动的LB的内容。另外,分区存储组件106可以更新映射表108中的分区指针以指向隔离块(例如,分区n0 202可以被更新以指向IS0)。分区存储组件106可以针对多个分区(例如,具有相关联的映射缓存112条目的所有分区、具有已触发的存储策略的分区等)执行该操作。
在示例中,如本文所述的,分区存储组件106可以将LB顺序存储在隔离块中以基于隔离块位置来促进数据组块的高效访问,这可以由驱动器接口100针对数据组块进行管理。另外,当将LB写入到小分区流114时,分区存储组件106可以写入针对数据组块的元数据,这可以包括以下一项或多项:指向映射表108中分区的分区索引,指示数据段中存储的数据是热、暖、冷等的热度标志(其可以指示数据是相对静态还是动态的),指示与数据段中存储的数据相关联的服务质量(Quality of Service,QoS)的QoS标志。另外,例如,一旦LB被冲刷到小分区流114,分区存储组件106就可以从映射缓存112中删除或释放数据(例如,针对缓存元素的指针可以被设置为NULL),使得缓存条目210、212、214、216可以被重用于管理在大分区缓存110中存储的后续数据段。
根据本文描述的各方面,驱动器接口100可以提供ZNS SSD闪存转换层(FlashTranslation Layer,FTL)解决方案,这可以提供可以与云组块服务器或相关联的应用126的仅追加写入组块大小一致的小分区大小,使得WA由于数据组块可以是基本的追加和删除粒度而被最小化。在示例中,FTL解决方案可以被提供在接口卡上,和/或驱动器接口100可以包括接口卡,该接口卡促进访问分区命名空间存储设备(例如,SSD)。当数据组块被删除时,由于分区大小可以与数据组块大小相同,因此整个分区可以是垃圾分区,从而不需要垃圾收集。将分区大小与写入吞吐量解耦(无论分区大小是多少)可以不影响最大写入吞吐量。QLC NAND可以通过使用SLC缓存来支持,从而最小化介质质量影响并提供最大的突发写入吞吐量。另外,驱动器接口100可以支持基于盘上裸片的RAID保护,从而提供更高的SLA和更小的爆炸半径。此外,驱动器接口100可以提供耐久性/成本平衡——例如,在实现该解决方案之后耐久性成本得以限制。
如所描述的,例如,在云存储中,数据可以作为具有固定大小的数据组块被管理并且以仅追加方式被写入到SSD中。在组块服务器或相关联的应用126中,可能存在同时向SSD(或向促进在SSD上存储数据的驱动器接口100)写入的多个开放组块。应用126可以并行地将数据追加到那些开放组块上。为了优化WA,存储引擎(例如,驱动器接口100)可以隔离具有不同保有期(tenure)的数据组块,这可以包括将数据组块大小与分区大小保持一致,使得存储引擎中不存在(或存在最小的)WA,因为数据组块中的所有数据可以有相同的保有期。此外,由于可以存在并行追加的多个开放数据组块,因此开放分区资源可以等于或大于开放数据组块计数,使得存储引擎可以隔离数据组块。例如,开放组块计数可以是256、1024等。
在本文描述的示例中,ZNS FTL可以具有带有盘上RAID保护的小分区容量、开放分区计数(例如,1024)、对QLC的支持等,其中分区容量和隔离群组不会影响实时写入性能、分区顺序写入性能可能会使总线带宽饱和,和/或可以使用或需要小电容器—例如,电容器可能不需要很大,这可以节省成本和由于潜在的电容器故障而导致的RMA。
如上文和本文将进一步描述的,针对数据组块写入过程,存储引擎(例如,驱动器接口100或相关联的分区存储组件106)可以针对每个开放数据组块分配开放分区并且维持组块ID到分区ID映射。例如,分区存储组件106可以通过将映射表108中的分区ID(例如,分区n0 202)与映射缓存112中的缓存条目(例如,缓存条目0 210)相关联来分配开放分区,并且可以维持组块ID(例如,诸如IS0的隔离块ID)到分区ID映射。分区存储组件106可以将开放数据组块的所有数据(例如,LB)写入为混合在一起并写入到SLC缓存中(例如,写入到大分区缓存110中)。如所描述的,分区存储组件106可以在映射表108中填充针对分区的指针,以指向映射缓存中的缓存条目。针对映射缓存112中的每个开放分区,分区存储组件106可以维持偏移到物理位置映射。在开放组块被密封之后,重定位引擎(例如,分区存储组件106的一部分)可以使用映射缓存112来确定针对该开放分区中的数据组块的所有数据(例如,LB)在SLC缓存(例如,大分区缓存110)的物理位置,并且将该数据组块的数据移动到一个QLC分区中(例如,小分区流114中的隔离块)并完成该分区。例如,在重定位完成之后,分区存储组件106可以更新映射表108中的分区ID以指向该分区的最终QLC位置(例如,指向小分区流114中的隔离块)。
例如,针对数据组块读取过程,在接收到组块读取请求之后,存储引擎(例如,驱动器接口100或相关联的分区存储组件106)可以在映射表108中查找所请求的分区ID,并且确定映射表108中针对分区ID所指向的组块ID(例如,隔离块标识符)以找到有关分区以及分区中的物理偏移。当主机(例如,应用126)读取该分区时,通过使用分区ID,FTL(例如,分区存储组件106)可以首先访问映射表108,并且如果针对该分区的映射表108条目指向映射缓存112,则该分区仍然在SLC缓存中(例如,在大分区缓存110中)。通过对映射缓存112进行索引,FTL(例如,分区存储组件106)可以找到映射缓存112内的分区物理偏移并从SLC缓存(例如,大分区缓存110)中读出数据。如果针对该分区的映射表108条目指向QLC块,则该分区已完成,并且该分区的所有数据被顺序存储在该QLC块中。通过基于分区物理偏移和分区页大小来计算数据物理位置,FTL(例如,分区存储组件106)可以找到小分区流114中的数据位置。
例如,针对数据组块删除过程,如果数据组块没有被密封或者在它没有重新定位到QLC分区时就被密封,则FTL(例如,分区存储组件106)可以更新SLC缓存块的有效数据计数(例如,与映射缓存112中针对该数据组块的缓存条目相关联的元数据),并且缓存条目可以被移除并被放入空闲的缓存条目列表中。FTL(例如,分区存储组件106)可以对SLC缓存块进行垃圾收集以回收所删除的组块数据。
例如,映射表108可以是分区到隔离超级块(Isolation Super Block,ISSB)映射表,具有分区ID作为表索引,并且分区映射表的条目可以指向映射缓存112中的条目或ISSBID。在映射表108中,每个条目可以包括分区的分区状态(例如,重置、开放、或完成状态),然后分区映射表条目可以基于该状态而变化。例如,针对开放状态,映射表条目可以包括映射缓存112中针对该分区的索引。针对完成状态,映射表条目可以包括ISSB ID。针对重置状态,映射表条目可以包括ISSB ID,而由于该分区不包含有效数据,因此当开放分区池需要新的ISSB时可以将其擦除。
针对映射缓存112,每个条目可以包括NPA阵列指针,该阵列包括SLC缓存池中针对分区偏移的所有NPA或RAM(Random Access Memory)中的缓冲器ID。针对每个条目,映射缓存112还可以包括分区ID(例如,缓存条目的相关联的分区ID)、ISSB ID(例如,为该分区ID分配的ISSB ID)、分区容量(例如,由ISSB确定的该分区的容量)、写入指针(例如,下一个可写偏移,其可以支持最后的LBA覆写,因此可以写入指针–1可以被写入)、分区状态(例如,开放或完成)、用于缺陷块跳过的坏块位图、下一个指针(例如,管理缓存策略实现的缓存条目的指针)。
在示例中,分区存储组件106可以存储分区元数据,其可以与分区数据一起被存储到NAND上。分区元数据可以包括分区ID(例如,用于合理性检查和恢复)、QoS标志(例如,可以由存储策略用来针对数据组块或其他存储参数选择隔离块的QoS标志)、热度标志(例如,可以由存储策略用来针对数据组块或其他存储参数选择隔离块的应用分派的热度标志)。
图4图示了根据本文描述的各方面的映射表108条目的状态机400的示例。状态机400包括对应于映射表条目的重置状态402、开放状态404、关闭状态406、以及完成状态408。
例如,每个条目可以以重置状态402开始,其中分区可以没有被分配映射缓存112、大分区缓存110、或小分区流114中的位置。在获取分区开放命令之后,分区状态可以从重置状态402切换到开放状态404。存储引擎可以不支持隐式开放,并且可以发送开放分区命令来显式地开放分区。在获取该命令后,根据热度标志,存储引擎可以基于热度标志选择某个ISSB(例如,隔离块,诸如图2和图3中的IS0、IS1、IS2、IS3等)(用于热数据的最新ISSB或用于冷数据的较老的ISSB)并可以擦除ISSB中的数据。分区存储组件106可以启动擦除保留定时器,以出于保留监视目的而跟踪该开放分区。另外,基于到开放状态404的转变,分区存储组件106可以在映射缓存112中为该分区分配缓存条目—所分配的缓存条目的缓存索引可以被存储在映射表108中并且由开放分区ID进行索引。另外,可以记录与该分区ID相关联的所分配的ISSB ID。可以基于相关联ISSB的可用空间来更新分区容量,并且可以将写入指针初始化为0。分区状态可以被设置为开放状态404。可能会发生擦除失败,因此可以在发送开放分区命令后使用所存储的分区信息以获取分区容量。
当数据组块的所有数据被写入大分区缓存时,分区状态可以从开放状态404转变为关闭状态406。分区状态可以从关闭状态406转变为完成状态408(或者直接从开放状态404转变为完成状态408),其中分区可以如上所述地被顺序写入,并且写入指针可以被对应地更新。针对重叠尾写入支持,在获取完成分区命令之前,可以将写入指针–1缓存在静态随机存取存储器(Static Random Access Memory,SRAM)中。可以发送完成分区命令,以使分区状态从开放状态404转变为完成状态408。在获取完成分区命令之后,分区状态可以被转变为完成状态408。在将所有数据从来自从SLC开放分区缓存(例如,大分区缓存110)的分区移动到(例如,小分区流114中)相关联的ISSB时,可能涉及到存储策略任务(例如,垃圾收集(Garbage Collection,GC))。如果分区未被完全写入,则存储引擎可以将ISSB填充到满以避免潜在的开放字线保留问题。在GC完成后,可以将由分区ID索引的分区映射表条目更新为ISSB ID,并且可以释放映射缓存112中的开放分区缓存条目。后台扫描任务可以覆盖所有的完成分区。
在组块被删除之后,存储引擎可以通过发送分区重置命令以将分区状态从完成状态408转换到重置状态402来回收分区。在获取重置分区命令之后,分区状态可以被转变为重置状态402。背景扫描任务可以不覆盖重置状态分区。由分区ID索引的映射表条目可以被更新为修剪状态。相关联的ISSB可以与分区ID解耦,并且作为未来擦除候选被推送到垃圾ISSB状态队列。
图5图示了根据本文描述的各方面的状态机500的示例,状态机500用于映射缓存112的缓存条目。状态机500包括空闲状态502、RAM状态504、以及大分区缓存状态506。缓存条目可以从空闲状态502开始,其中数据组块的LB可以首先与相关联的缓冲器槽ID一起放置在RAM中。在通过驱动器接口100(或相对应的FW)或其他过程将分区标识符分配给数据组块之后,映射缓存112中的缓存条目可以与数据组块或相对应的隔离块相关联(例如,与映射表108中的表条目相关联)。
开放分区可以以RAM状态504被缓存。在RAM状态504下,LB的缓冲器槽ID可以被放置到映射缓存112中的缓存条目的缓存元素中(例如,放置到数据组块的LB映射信息缓存条目中)。在这种状态下,数据组块的LB的数据可以在RAM中。当RAM缓存已满时,如果数据组块被完全写入,则驱动器接口100(或相对应的FW)可以将数据组块GC到其在小分区流114中的相关联的隔离块,并且缓存条目(或缓存条目中的对应缓存元素)可以被释放。如果数据段未被完全写入,则驱动器接口100(或相对应的FW)可以将其具有的针对数据组块的LB写入到隔离块中。
在大分区缓存状态506下,LB可以被缓存在大分区缓存110中。当大分区缓存110已满或者针对数据组块的缓存条目(例如,LB映射信息缓存)已满时,驱动器接口100(或相对应的FW)可以将数据段从大分区缓存110GC到其在小区流114中的隔离块,使得缓存条目可以切换到空闲状态502并释放缓存条目信息和/或相对应的缓存元素。
图6是方法600的示例的流程图,方法600用于在分区存储装置中写入数据组块。例如,方法600可以由驱动器接口100和/或其一个或多个组件来执行,以用于将数据组块存储在一个或多个存储设备122中。
在方法600中,在动作602处,与数据组块相对应的一个或多个LB可以被存储在第一分区缓存中。在示例中,分区存储组件106(例如,与处理器102、存储器104等相结合)可以将与数据组块相对应的一个或多个LB存储在第一分区缓存(例如,大分区缓存)110中。例如,一个或多个应用126(可以在与驱动器接口100相同或不同的计算设备上执行)可以经由驱动器接口100请求数据存储。在该示例中,分区存储组件106可以确定对数据组块或相关联的隔离块中的数据进行存储,其大小可以大于(多个)存储设备122的LB(并且可以包括如本文所述的多个LB)。在一个示例中,基于接收到针对存储的请求,驱动器接口100可以向(多个)应用126提供相对应的分区标识符,该对应分区标识符用于存储数据组块或以其他方式与存储数据组块相关联。如所描述的,分区标识符可以对应于映射表108中的条目的索引,或者可以被解析为映射表108中的条目的索引。
在方法600中,在动作604处,针对数据组块中的每个LB,缓存条目的指向第一分区缓存中的LB的缓存元素可以被写入。在示例中,针对数据组块中的每个LB,分区存储组件106(例如,与处理器102、存储器104等相结合)可以对缓存条目的指向第一分区缓存(例如,大分区缓存110)中的LB的缓存元素进行写入。例如,当分区存储组件106将LB存储在大分区缓存110中时,它可以确定LB属于哪个数据组块或分区,这可以由请求存储LB的进程、分区或LB中的标识符来标识。在示例中,分区存储组件106可以从映射表108条目获得针对该分区的缓存条目指针,并且可以用针对该LB的到大分区缓存110的索引来填充与该LB相对应的缓存元素。例如,参考图2,当NPA(N1,1)的LB被存储在大分区缓存110中时,分区存储组件106可以用针对NPA(N1,1)的LB在大分区缓存110中的位置来更新缓存条目1 212的第二缓存元素。
在方法600中,在动作606处,针对缓存条目,映射表中指向该缓存条目的表条目可以被写入。在示例中,针对该缓存条目,分区存储组件106(例如,与处理器102、存储器104等相结合)可以在映射表中写入指向该缓存条目的表条目。例如,针对映射缓存112中具有指向大分区缓存110中LB的缓存元素的所有缓存条目,分区存储组件106可以写入表条目以指向缓存条目。在一个示例中,基于向应用126提供要被存储的数据组块的表条目标识符(例如,分区标识符),或者基于接收到大数据组块110中的数据组块的第一LB,分区存储组件106可以将表条目写入为到映射缓存112中的指针。例如,参考图2,分区存储组件106可以写入表条目1 204,以指向映射缓存112中的缓存条目1 210。针对在大分区缓存110中接收的多个LB,可以继续该过程。
在某个时间点,在动作608处,存储策略触发可以被检测到。在示例中,分区存储组件106(例如,与处理器102、存储器104等相结合)可以检测存储策略触发。例如,存储策略触发器可以对应于特定的数据组块,或者如所描述的总体地对应于大分区缓存110。在一个示例中,存储策略可以与填满针对数据组块或对应分区所分配的所有LB(或指示缓存条目中的缓存元素)有关。在任何情况下,基于在动作608处检测到存储策略触发,在动作610处,缓存条目的每个缓存元素所指向的多个LB可以被写入为第二分区流中的针对数据组块的隔离块中的连续LB。在示例中,分区存储组件106(例如,与处理器102、存储器104等相结合)可以写入由缓存条目的每个缓存元素所指向的多个LB,以将其存储为第二分区流(例如,小分区流114)中的针对数据组块的隔离块中的连续LB。例如,如参考图3所示和所描述的,与缓存条目相关联的多个LB的至少一部分可以位于大分区缓存110中的不连续位置中,并且以与对应缓存条目中指定的多个缓存元素的次序相对应的顺序,分区存储组件106可以将与缓存条目相关联的多个逻辑块从大分区缓存110写入。分区存储组件106可以写入多个LB以存储在小分区流中114,这可以是在存储设备122上或者可以以其他方式引起将LB存储在存储设备122上。
例如,基于小分区流114中作为隔离块的存储,可以通过存储隔离块的NPA来访问数据组块。因此,在动作612处,表条目可以被更新以指向第二分区流中的隔离块。在示例中,分区存储组件106(例如,与处理器102、存储器104等相结合)可以更新数据段的表条目(例如,在映射表108中)以指向第二分区流(例如,小分区流114,其可以位于存储设备122上)中的隔离块,而非指向缓存条目。
在方法600中,可选地在动作614处,隔离块可以基于分区元数据被选择。在示例中,分区存储组件106(例如,与处理器102、存储器104等相结合)可以基于分区元数据来针对数据组块选择隔离块。例如,针对数据组块或相关联的分区,元数据可以被存储以指示针对该数据组块或分区的热度标志、QoS标志等。在示例中,分区存储组件106可以基于热度标志或QoS标志来选择小分区流114中的隔离块。例如,分区存储组件106可以为热数据选择最新的隔离块,或者为冷数据选择较老的隔离块,因为热度标志可以指示数据是相对动态还是静态的。
在方法600中,可选地在动作616处,可以基于存储连续LB来更新分区元数据。在示例中,分区存储组件106(例如,与处理器102、存储器104等相结合)可以基于存储连续LB来更新针对数据组块或分区的分区元数据。例如,如所描述的,基于用于存储在数据段中的数据的应用指定参数等,分区存储组件106可以更新写入指针、分区容量、热度标志或QoS标志。分区存储组件106可以更新写入指针、分区容量、热度标志或QoS标志。分区存储组件同样可以在过程中其他点更新针对数据段的元数据。
例如,在动作604处对缓存元素进行写入时,可选地在动作618处,可以基于对缓存元素进行写入来更新分区元数据。在示例中,分区存储组件106(例如,与处理器102、存储器104等相结合)可以基于对缓存元素进行写入来更新针对数据组块或分区的分区元数据。例如,如所描述的,分区存储组件106可以基于存储在数据段中的数据的应用指定的参数来更新写入指针、分区容量、热度标志、或QoS标志等。
在一个示例中,如所描述的,当LB被写入到大分区缓存时,可以为大分区缓存中的每个条带提供冗余保护(例如,图2和图3中的冗余保护LB 220)。另外,可以为小分区流114中用于多个隔离块的条带提供冗余保护。例如,在方法600中,可选地在动作620处,可以基于写入多个LB来更新针对与多个隔离块中的每个隔离块相对应的LB条带的冗余值。在示例中,冗余组件116(例如,与处理器102、存储器104等相结合)可以基于写入多个LB来更新针对与多个隔离块中的每个隔离块相对应的LB条带的冗余值。例如,参考图3,隔离块LB(例如,NPA(N0,0)、NPA(N0,1)、NPA(N1,0)、NPA(N1,1)、NPA(N3,0)、NPA(N3,1)、NPA(N2,0)、NPA(N2,1))的对应条带可以被提供冗余保护LB RAID 0,并且可以随着对应LB中的数据被填充、更新、删除等而被更新。
例如,在方法600中,可选地在动作622处,冗余值可以被冲刷到第一分区缓存以供存储或者被写入到断电日志。在示例中,冗余组件116(例如,与处理器102、存储器104等相结合)可以(例如在更新冗余值之后)将冗余值冲刷到第一分区缓存(例如,大分区缓存110)以用于将冗余值存储或写入到断电日志。例如,参考图3,冗余组件116可以将RAID 0冲刷到大分区缓存110中以供存储(例如,而不是在小分区流114中分配RAID LUN)。例如,针对小分区ZNS RAID保护,总RAID页大小可以是有限空间(例如,1:128比率或更低可以是优选的)。另外,如所描述的,具有针对小分区流的RAID保护可以促进SSD上的所有数据都具有RAID保护,无论该数据是在SLC缓存还是在QLC中。在示例中,由于RAID页缓存有限,所以可以使用RAID页交换。一些ASIC平台可能有动态随机存取存储器(DRAM)带宽限制。针对QLC来说,系统吞吐量可能还可以,因为QLC NAND较低;针对TLC解决方案来说,DRAM可能是瓶颈。ASIC内数据路径优化可以被用于最小化DRAM访问,包括:动态设计的低密度奇偶校验(Low-Density Parity-Check,LDPC)编码器(encoder,ENC)/解码器(decoder,DEC)引擎、动态设计的可靠的独立节点阵列(reliable array of independent node,RAIN)累加。
在示例中,静态RAID条带可以包括基于超级块将RAID条带分组。使用动态的分区到ISSB映射,存储引擎可能不知道ISSB,使得它无法跨同一RAID条带中的不同隔离群组来指定分区。为了优化RAID条带分组,可以如上所述使用动态RAID条带分组,其中来自不同隔离群组的分区可以被分组在一起以生成RAID,无论这些分区位于哪个超级块。通过使用动态RAID分组,如果存储引擎跨隔离群组来分配分区,则冗余组件116可以为那些分区生成RAID条带。ISSB到RAID条带ID映射在其动态生成时可以被管理。
在冗余组件116将冗余值写入到断电日志的示例中,这可以帮助在大分区缓存110和/或小分区流114中的一个或多个处从断电中恢复。例如,由于进入驱动器接口100的所有数据可以首先进入SLC、然后GC到QLC,所以可以在发生断电时保护数据,包括SRAM中的所有缓存的大分区数据、SRAM/DRAM中的所有脏RAID页、以及关键的元数据。在示例中,断电数据可以被组织为断电日志,并在检测到断电时被冲刷到SLC分区(例如,大分区缓存110)中。与直接写入到QLC开放分区中(其会使用很多电容器来保持QLC程序)相比,SLC可以比QLC快,使得可以使用更少的电容器,而且由于QLC在分区处于开放状态时可能会不稳定,所以先将数据放入SLC中会更安全。如果QLC开放字线没有保留问题(因为QLC可能是除FG NAND之外的两遍次编程(2-pass program)),则FW可以在第二遍次中缓存所有页群组(可以是16页)。分区大小相同时,其可以是4个擦除块(Erase,EB),每个EB页大小可以是32KB。针对一个页条带,页条带大小可以是4DIE×32K=128KB,每个分区可以缓存16个页条带,使得数目可以是128KB×16=2MB。针对1024个开放分区,在DRAM中可以缓存2GB数据。当发生断电时,可能很难将2GB数据冲刷到DRAM中。
图7是方法700的示例的流程图,方法700用于处理在分区存储器中存储的数据组块。例如,方法700可以由驱动器接口100和/或其一个或多个组件来执行,用于处理在存储设备122中的分区存储中存储的数据段。
在方法700中,在动作702处,处理数据组块的请求可以被接收。在示例中,分区存储组件106(例如,与处理器102、存储器104等相结合)可以(例如,从一个或多个应用126)接收处理在一个或多个存储设备122上存储的数据组块的请求。例如,该请求可以指示被请求进行处理的数据组块或分区(例如,相对应的分区ID、隔离块等)。在示例中,分区存储组件106可以确定映射表108中与数据组块相关联的分区ID或隔离块。另外,处理数据组块的请求可以包括读取数据组块、更新或修改数据组块、删除数据组块等的请求。
在定位该分区之后,在动作704处,分区状态可以被确定。在示例中,分区存储组件106(例如,与处理器102、存储器104等相结合)可以确定分区状态。例如,分区存储组件106可以获得针对该分区的元数据,该元数据可以包括如上所述的分区状态。在另一示例中,基于映射表108中的分区条目是指向映射缓存112还是小分区流114,分区存储组件106可以辨别分区状态。
例如,在分区状态是开放的情况下,可选地在动作706处,缓存条目索引可以被获得。在示例中,针对处于开放状态的分区,分区存储组件106(例如,与处理器102、存储器104等相结合)可以从映射表108中针对分区索引的表条目获得缓存条目索引。例如,分区ID可以指向映射缓存112中的针对该分区的缓存条目。
在方法700中,可选地在动作708处,针对相关联的数据组块的在第一分区缓的LB中存储的数据可以被获得。在示例中,针对处于开放状态的分区,分区存储组件106(例如,与处理器102、存储器104等相结合)可以获得针对相关联的数据组块的在第一分区缓存(例如,大分区缓存110)的LB中存储的数据。例如,针对数据组块或分区的缓存条目可以包括多个缓存元素,每个缓存元素都指向大分区缓存110中的LB。可以从大分区缓存110收集LB以供进一步处理。在一个示例中,这些动作也可以在分区状态是关闭并且数据组块的LB仍然在大分区缓存110中的情况下被执行。
例如,在分区状态是最终的情况下,可选地在动作710处,数据可以从第二分区流(例如,小分区流114)中的隔离块被获得。在示例中,针对处于最终状态的分区,分区存储组件106(例如,与处理器102、存储器104等相结合)可以从小分区流114中的隔离块获得数据。例如,在最终状态下,数据组块的数据可以被写入到小分区流114,和/或可从大分区缓存110中被移除。在任何情况下,隔离块都可以包括完整的数据组块以进行更高效的处理。
在方法700中,在动作712处,数据组块的数据可以被处理。在示例中,分区存储组件106(例如,与处理器102、存储器104等相结合)可以处理数据组块的数据。例如,这可以包括针对读请求而返回数据组块的数据、针对更新请求而更新数据组块的数据、针对删除请求而删除数据组块的数据等。如所描述的,按在针对一个或多个应用126的隔离块中存储的每数据组块进行处理会比处理分散在开放分区中的数据更高效。
在方法700中,可选地在动作714处,针对数据组块或冗余保护的元数据可以被更新。在示例中,分区存储组件106(例如,与处理器102、存储器104等相结合)可以更新针对数据组块或冗余保护的元数据。例如,在数据组块中的数据被修改的情况下,分区存储组件106可以更新针对该分区的元数据,诸如在删除数据的一部分的情况下的写入指针和/或容量。在另一示例中,在数据组块中的数据被修改的情况下,分区存储组件106可以更新针对小分区流114的冗余保护,诸如在数据被更新或移除的情况下。
图8图示了设备800的示例,包括如图1中所示的附加可选组件细节。在一种实现中,设备800可以包括处理器802,其可以类似于处理器102以用于执行与本文所描述的一个或多个组件和功能相关联的处理功能。处理器802可以包括单组或多组处理器或多核处理器。此外,处理器802可以被实现为集成处理系统和/或分布式处理系统。
设备800还可以包括存储器804,其可以类似于存储器104,诸如用于存储由处理器802执行的应用的本地版本(诸如驱动器接口100等)。存储器804可以包括由计算机可使用的存储器类型,诸如随机存取存储器(RAM)、只读存储器(Read Only Memory,ROM)、磁带、磁盘、光盘、易失性存储器、非易失性存储器及其任何组合。
此外,设备800可以包括通信模块806,其利用本文所描述的硬件、软件和服务来建立和维持与一个或多个其他设备、各方、实体等的通信。通信模块806可以承载设备800上的模块之间以及设备800与外部设备之间的通信,外部设备诸如是位于通信网络上的设备和/或串联或本地连接到设备800的设备。例如,通信模块806可以包括一个或多个总线,并且还可以包括可操作用于与外部设备进行接口的分别与无线或有线发射器和接收器相关联的发射链模块和接收链模块。
另外,设备800可以包括数据存储库808,其可以是硬件和/或软件的任何合适的组合,其提供结合本文所描述的实现所采用的信息、数据库和程序的大容量存储。例如,数据存储库808可以是或者可以包括用于当前未由处理器802执行的应用和/或相关参数(例如,驱动器接口100等)的数据储存库。另外,数据存储库808可以是用于驱动器接口100的数据储存库,诸如一个或多个存储设备122等,和/或设备800的一个或多个其他模块。
设备800可以包括用户接口模块810,其可操作以接收来自设备800的用户的输入并且还可操作以生成用于呈现给用户的输出。用户接口模块810可以包括一个或多个输入设备,包括但不限于键盘、数字键盘、鼠标、触敏显示器、导航键、功能键、麦克风、语音识别组件、手势识别组件、深度传感器、凝视跟踪传感器、开关/按钮、能够接收来自用户的输入的任何其他机构或其任何组合。此外,用户接口模块810可以包括一个或多个输出设备,包括但不限于显示器、扬声器、触觉反馈机构、打印机、能够向用户呈现输出的任何其他机构、或其任何组合。
举例来说,元件、元件的任何部分、或元件的任何组合可以用包括一个或多个处理器的“处理系统”来实现。处理器的示例包括微处理器、微控制器、数字信号处理器(DSP)、现场可编程门阵列(FPGA)、可编程逻辑器件(PLD)、状态机、门控逻辑、分立硬件电路和被配置为执行在本公开中描述的各种功能性的其他合适的硬件。处理系统中的一个或多个处理器可以执行软件。软件应被广义地解释为指令、指令集、代码、代码段、程序代码、程序、子程序、软件模块、应用、软件应用、软件包、例程、子例程、对象、可执行文件、执行线程、过程、函数等等,无论是被称为软件、固件、中间件、微代码、硬件描述语言还是其他。
因此,在一种或多种实现中,所描述的功能中的一种或多种可以以硬件、软件、固件或其任意组合来实现。如果以软件来实现,则功能可以被存储在计算机可读介质上或编码为计算机可读介质上的一个或多个指令或代码。计算机可读介质包括计算机存储介质。存储介质可以是计算机可以访问的任何可用介质。作为示例而非限制,这样的计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁存储设备,或者可以被用来以指令或数据结构的形式承载或者存储期望程序代码并且可以由计算机访问的任何其他介质。在本文中所使用的磁盘和光盘包括压缩盘(Compact Disc,CD)、激光盘、光盘、数字多功能盘(Digital Versatile Disk,DVD)和软盘,其中磁盘通常以磁性方式再现数据,而光盘则用激光以光学方式再现数据。上述的组合也应当包括在计算机可读介质的范围内。
提供先前的描述以使本领域的任何技术人员能够实践本文所描述的各种实现。对这些实现的各种修改针对本领域技术人员来说将是明显的,并且本文中定义的一般原理可以被应用于其他实现。因此,权利要求并不旨在限于本文中所示的实现,而是符合与语言权利要求一致的完整范围,其中对单数元件的引用并不旨在意指“一个且仅一个”,除非具体如此表述,而是“一个或多个”。除非另有明确说明,否则术语“一些”是指一个或多个。本领域普通技术人员已知的或以后将知道的与本文描述的各种实现的元件的所有结构和功能等同物旨在由权利要求书涵盖。此外,本文所公开的任何内容均不旨在献给公众,无论这种公开是否在权利要求中明确记载。任何权利要求元素均不应被解释为装置加功能,除非使用短语“用于……的装置”明确叙述该元素。

Claims (20)

1.一种用于使用多个分区的分区命名空间(ZNS)存储的计算机实现的方法,包括:
将与数据组块相对应的一个或多个逻辑块存储在第一分区缓存中;
针对所述数据组块中的每个逻辑块,对缓存条目的缓存元素进行写入,所述缓存元素指向所述第一分区缓存中的所述逻辑块,其中所述缓存条目包括与所述数据组块的多个逻辑块相对应的多个缓存元素;
针对所述缓存条目,对映射表中指向所述缓存条目的表条目进行写入;以及
当存储策略针对所述缓存条目被触发时:
将所述缓存条目的每个缓存元素所指向的所述多个逻辑块写入为第二分区流中针对所述数据组块的隔离块中的连续逻辑块;以及
更新所述表条目以指向所述第二分区流中的所述隔离块。
2.根据权利要求1所述的计算机实现的方法,还包括:
基于在所述隔离块中写入所述多个逻辑块,更新针对与多个隔离块中的每个隔离块对应的逻辑块条带的冗余值,所述逻辑块条带包括所述隔离块中的所述多个逻辑块的部分。
3.根据权利要求2所述的计算机实现的方法,还包括:
将所述冗余值冲刷到所述第一分区缓存以供存储。
4.根据权利要求2所述的计算机实现的方法,还包括:
基于将所述一个或多个逻辑块存储在所述第一分区缓存中,更新针对所述第一分区缓存中的逻辑块条带的第二冗余值,所述第一分区缓存中的所述逻辑块条带包括所述一个或多个逻辑块。
5.根据权利要求4所述的计算机实现的方法,还包括:
基于检测到断电,将包括所述第二冗余值的一个或多个冗余值写入到断电日志。
6.根据权利要求1所述的计算机实现的方法,还包括:
针对所述数据组块,基于与要被存储在所述数据组块中的数据相关联的热度或服务质量QoS标志而选择所述隔离块。
7.根据权利要求1所述的计算机实现的方法,其中所述存储策略通过填满数据组块的所述多个逻辑块中的每个逻辑块被触发。
8.根据权利要求1所述的计算机实现的方法,其中存储所述一个或多个逻辑块包括:
使用仅追加写入操作来同时存储与所述数据组块或包括所述数据组块的多个数据组块中的一项相对应的多个逻辑块。
9.根据权利要求1所述的计算机实现的方法,其中与缓存条目相关联的所述多个逻辑块的至少一部分位于所述第一分区缓存中的不连续位置,并且其中将所述多个逻辑块写入到所述第二分区流包括:以与所述缓存条目中的多个缓存元素的次序相对应的顺序,将与所述缓存条目相关联的所述多个逻辑块从所述第一分区缓存写入到所述隔离块。
10.根据权利要求1所述的计算机实现的方法,其中所述第一分区缓存由促进访问分区命名空间存储设备的接口卡来提供。
11.根据权利要求1所述的计算机实现的方法,还包括基于所述表条目来处理所述数据组块,所述处理包括:
在所述表条目指向所述缓存条目的情况下,处理所述第一分区缓存中与所述数据组块相关联的多个逻辑块;或者
在所述表条目指向所述隔离块的情况下,处理所述第二分区流中的所述隔离块。
12.一种用于使用多个分区进行分区命名空间(ZNS)存储的装置,所述装置包括处理器和其上具有指令的非暂态存储器,其中所述指令在由所述处理器执行时使所述处理器:
将与数据组块相对应的一个或多个逻辑块存储在第一分区缓存中;
针对所述数据组块中的每个逻辑块,对缓存条目的缓存元素进行写入,所述缓存元素指向所述第一分区缓存中的所述逻辑块,其中所述缓存条目包括与所述数据组块的多个逻辑块相对应的多个缓存元素;
针对所述缓存条目,对映射表中指向所述缓存条目的表条目进行写入;以及
当存储策略针对所述缓存条目被触发时:
将所述缓存条目的每个缓存元素所指向的所述多个逻辑块写入为第二分区流中针对所述数据组块的隔离块中的连续逻辑块;以及
更新所述表条目以指向所述第二分区流中的所述隔离块。
13.根据权利要求12所述的装置,其中所述指令使所述处理器:
基于在所述隔离块中写入所述多个逻辑块,更新针对与多个隔离块中的每个隔离块相对应的逻辑块条带的冗余值,所述逻辑块条带包括所述隔离块中的所述多个逻辑块的部分。
14.根据权利要求13所述的装置,其中所述指令使所述处理器:
将所述冗余值冲刷到所述第一分区缓存以供存储。
15.根据权利要求13所述的装置,其中所述指令使所述处理器:
基于将所述一个或多个逻辑块存储在所述第一分区缓存中,更新针对所述第一分区缓存中的逻辑块条带的第二冗余值,所述第一分区缓存中的所述逻辑块条带包括所述一个或多个逻辑块。
16.根据权利要求15所述的装置,其中所述指令使所述处理器:
基于检测到断电,将包括所述第二冗余值的一个或多个冗余值写入到断电日志。
17.根据权利要求12所述的装置,其中所述指令使所述处理器:
针对所述数据组块,基于与要被存储在所述数据组块中的数据相关联的热度或服务质量QoS标志而选择所述隔离块。
18.根据权利要求12所述的装置,其中所述存储策略通过填满数据组块的所述多个逻辑块中的每个逻辑块被触发。
19.根据权利要求12所述的装置,其中所述指令使所述处理器:
至少部分地通过使用仅追加写入操作来同时存储与所述数据组块或包括所述数据组块的多个数据组块中的一项相对应的多个逻辑块,来存储所述一个或多个逻辑块。
20.一种存储指令的非暂态计算机可读存储介质,所述指令在由处理器执行时使所述处理器执行方法,其中所述方法包括:
将与数据组块相对应的一个或多个逻辑块存储在第一分区缓存中;
针对所述数据组块中的每个逻辑块,对缓存条目的缓存元素进行写入,所述缓存元素指向所述第一分区缓存中的所述逻辑块,其中所述缓存条目包括与所述数据组块的多个逻辑块相对应的多个缓存元素;
针对所述缓存条目,对映射表中指向所述缓存条目的表条目进行写入;以及
当存储策略针对所述缓存条目被触发时:
将所述缓存条目的每个缓存元素所指向的所述多个逻辑块写入为第二分区流中针对所述数据组块的隔离块中的连续逻辑块;以及
更新所述表条目以指向所述第二分区流中的隔离块。
CN202311472494.9A 2022-11-16 2023-11-07 用于使用多个分区的分区命名空间存储的技术 Pending CN118051179A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US18/056,083 US11989423B2 (en) 2022-11-16 2022-11-16 Techniques for zoned namespace (ZNS) storage using multiple zones
US18/056,083 2022-11-16

Publications (1)

Publication Number Publication Date
CN118051179A true CN118051179A (zh) 2024-05-17

Family

ID=85384976

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311472494.9A Pending CN118051179A (zh) 2022-11-16 2023-11-07 用于使用多个分区的分区命名空间存储的技术

Country Status (3)

Country Link
US (1) US11989423B2 (zh)
EP (1) EP4372540A1 (zh)
CN (1) CN118051179A (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117075810A (zh) * 2023-08-18 2023-11-17 武汉麓谷科技有限公司 一种基于zns固态硬盘的数据管理方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11636031B2 (en) * 2011-08-11 2023-04-25 Pure Storage, Inc. Optimized inline deduplication
US11604598B2 (en) * 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US20220050858A1 (en) * 2014-12-19 2022-02-17 Pure Storage, Inc. Snapshot-Based Hydration Of A Cloud-Based Storage System
US11379360B2 (en) * 2020-06-25 2022-07-05 Netapp, Inc. Methods for managing storage operations for multiple hosts coupled to dual-port solid-state disks and devices thereof
KR20220042649A (ko) * 2020-09-28 2022-04-05 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
KR20220060372A (ko) * 2020-11-04 2022-05-11 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
US11868643B2 (en) * 2020-12-16 2024-01-09 Micron Technology, Inc. Background memory scan block selection
US11853285B1 (en) * 2021-01-22 2023-12-26 Pure Storage, Inc. Blockchain logging of volume-level events in a storage system
US20230393905A1 (en) * 2022-06-07 2023-12-07 Pure Storage, Inc. Disaggregated Storage Systems For Hyperscale Deployments
US20230409536A1 (en) * 2022-06-20 2023-12-21 Microsoft Technology Licensing, Llc File system metadata layout for append-only storage

Also Published As

Publication number Publication date
US11989423B2 (en) 2024-05-21
US20230075437A1 (en) 2023-03-09
EP4372540A1 (en) 2024-05-22

Similar Documents

Publication Publication Date Title
US11782632B2 (en) Selective erasure of data in a SSD
US10380014B2 (en) Address translation for a non-volatile memory storage device
KR101813786B1 (ko) Ssd 상의 기록-시-복사를 위한 시스템 및 방법
US9342256B2 (en) Epoch based storage management for a storage device
US9146877B2 (en) Storage system capable of managing a plurality of snapshot families and method of snapshot family based read
US9519575B2 (en) Conditional iteration for a non-volatile device
US8521949B2 (en) Data deleting method and apparatus
US10521131B2 (en) Storage apparatus and storage control apparatus
US9996542B2 (en) Cache management in a computerized system
US10019352B2 (en) Systems and methods for adaptive reserve storage
US7694087B2 (en) Duplicate data storing system, duplicate data storing method, and duplicate data storing program for storage device
KR20170010729A (ko) 비휘발성 메모리의 메타 데이터 관리 방법 및 스토리지 시스템
US10956071B2 (en) Container key value store for data storage devices
KR20120090965A (ko) 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 장치, 시스템, 및 방법
KR20200018999A (ko) 블록의 상태에 따라 사용 여부를 결정하는 메모리 시스템 및 메모리 시스템의 동작 방법
JP2013544414A (ja) トランザクションログの復元
US8862819B2 (en) Log structure array
KR20170038853A (ko) 호스트-관리 비휘발성 메모리
US20190243758A1 (en) Storage control device and storage control method
KR20200030245A (ko) 메모리 시스템에서의 유효 데이터 관리 방법 및 장치
KR20170023734A (ko) 플래시 메모리 플러싱을 개선하는 방법 및 시스템
EP4372540A1 (en) Techniques for zoned namespace (zns) storage using multiple zones
US11880584B2 (en) Reverse range lookup on a unified logical map data structure of snapshots
US20210390048A1 (en) Method and system for facilitating log-structure data organization
EP4369206A1 (en) Techniques for instance storage using segment-based storage

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination