CN111459400B - 在存储服务器中进行基于管线的存取管理的方法及设备 - Google Patents
在存储服务器中进行基于管线的存取管理的方法及设备 Download PDFInfo
- Publication number
- CN111459400B CN111459400B CN202010014242.1A CN202010014242A CN111459400B CN 111459400 B CN111459400 B CN 111459400B CN 202010014242 A CN202010014242 A CN 202010014242A CN 111459400 B CN111459400 B CN 111459400B
- Authority
- CN
- China
- Prior art keywords
- pipeline
- buffer
- storage server
- master device
- user 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.)
- Active
Links
Images
Classifications
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
-
- 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/061—Improving I/O performance
-
- 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/0656—Data buffering arrangements
-
- 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/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0813—Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
-
- 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/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- 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/0658—Controller construction arrangements
-
- 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
- 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
- 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/068—Hybrid storage device
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
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)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了在一存储服务器中进行基于管线的存取管理的方法以及设备。所述方法包括:因应将用户数据写入所述存储服务器的请求,利用所述存储服务器中的一主装置将所述用户数据写入所述存储服务器的一存储装置层并且以所述存储服务器的管线架构开始处理对应于写入所述用户数据的所述请求的对象写入指令;利用所述主装置自多个固定大小缓冲器池选择固定大小缓冲器池;利用所述主装置自所述固定大小缓冲器池分配一缓冲器以作为所述管线架构中的至少一管线的管线模块,以缓冲所述管线;以及利用所述主装置将对应于所述用户数据的元数据写入分配到的缓冲器。本发明可解决Ceph相关控制所导致的存储装置的写入放大问题和成本问题,并且改善整体效能。
Description
技术领域
本发明是关于数据存储,尤指一种用来在一存储服务器中进行基于管线的(pipeline-based)存取管理的方法及设备,其中所述设备的例子可包括(但不限于):所述存储服务器的整体、所述存储服务器中的一主装置、所述主装置中的一处理电路、以及在所述处理电路中运行着对应于所述方法的一或多个程序模块的至少一处理器/处理器核心(processor core)诸如中央处理单元(Central Processing Unit,CPU)/中央处理单元核心(CPU core)。
背景技术
近年来由于存储器的技术不断地发展,各种可携式以及非可携式记忆装置(例如:符合SD/MMC、CF、MS、XD或UFS标准的记忆卡;又例如:固态硬盘(solid state drive,SSD);又例如:符合UFS或EMMC规格的嵌入式(embedded)存储装置)被广泛地实施于诸多应用中。因此,这些记忆装置中的存储器的存取控制遂成为相当热门的议题。
以常用的NAND型闪存而言,其主要可包括单阶细胞(single level cell,SLC)与多阶细胞(multiple level cell,MLC)两大类的闪存。单阶细胞闪存中的每个被当作记忆细胞(memory cell)的晶体管只有两种电荷值,分别用来表示逻辑值0与逻辑值1。另外,多阶细胞闪存中的每个被当作记忆细胞的晶体管的存储能力则被充分利用,其采用较高的电压来驱动,以通过不同的电压位准在一个晶体管中记录至少两比特的信息(诸如00、01、11、10)。理论上,多阶细胞闪存的记录密度可以达到单阶细胞闪存的记录密度的至少两倍,这对于曾经在发展过程中遇到瓶颈的NAND型闪存的相关产业而言,是非常好的消息。
相较于单阶细胞闪存,由于多阶细胞闪存的价格较便宜,并且在有限的空间里可提供较大的容量,故多阶细胞闪存很快地成为市面上的记忆装置竞相采用的主流。然而,多阶细胞闪存的不稳定性所导致的问题也一一浮现。为了确保在记忆装置中对闪存的存取控制能符合相关规范,闪存的控制器通常备有某些管理机制以妥善地管理数据的存取。
然而,具备上列管理机制的记忆装置仍有不足的地方。尤其,当记忆装置被设置在具有Ceph控制架构的存储系统上时,会发生某些问题。例如,记忆装置会因为Ceph相关(Ceph-related)控制而造成严重的写入放大。写入放大通常来自于存储系统中的日志(journal)与元数据(metadata)运作,这会造成在存储系统中额外的存储器复制与数据流量(data traffic),因此会增加输入/输出的延迟并且降低存储系统的效能。由于区块装置可具有一特定区块大小(例如4096字节(byte)或4千字节(kilobyte;KB)),对于小于所述区块大小的任一更新(例如元数据的更新),它会被放大为所述区块大小。存储系统的效能会因为来自小量更新(诸如日志、元数据等的更新)以及固定的区块大小的写入放大而大幅地降低。另外,记忆装置会因为对应于所述Ceph相关控制的额外的写入放大而具有较短的预期寿命。因此,需要一种新颖的方法以及相关架构,已在没有副作用或较不会带来副作用的情况下改善整体效能。
发明内容
因此,本发明的一目的在于公开一种用来在一存储服务器中进行基于管线的(pipeline-based)存取管理的方法,并公开相关设备诸如所述存储服务器、所述存储服务器中的一主装置等,以解决上述问题。
本发明的另一目的在于公开一种用来在一存储服务器中进行基于管线的存取管理的方法,并公开相关设备诸如所述存储服务器、所述存储服务器中的一主装置等,以在没有副作用或较不会带来副作用的情况下达到优化的效能。
本发明至少一实施例公开一种用来在一存储服务器中进行基于管线的存取管理的方法,其中所述方法是应用于所述存储服务器。所述方法可包括:因应将用户数据写入所述存储服务器的一请求,利用所述存储服务器中的一主装置将所述用户数据写入所述存储服务器的一存储装置层并且以所述存储服务器的一管线(pipeline)架构开始处理对应于写入所述用户数据的所述请求的一对象写入指令,其中所述存储服务器包括所述主装置以及所述存储装置层,所述存储装置层包括耦接至所述主装置的至少一存储装置,所述主装置是用来控制所述存储服务器的运作,以及所述至少一存储装置是用来为所述存储服务器存储信息;在以所述管线架构处理所述对象写入指令的期间,利用所述主装置依据所述用户数据的数据大小自多个固定大小缓冲器池(fixed size buffer pool)选择一固定大小缓冲器池,其中所述多个固定大小缓冲器池分别对应于多个缓冲大小;在以所述管线架构处理所述对象写入指令的期间,利用所述主装置自所述固定大小缓冲器池分配(allocate)一缓冲器以作为所述管线架构中的至少一管线的一管线模块,以供为所述至少一管线进行缓冲,其中所述管线模块是所述存储装置层外部的一硬件管线模块,以及所述至少一管线中的多个后续管线模块属于运行于所述主装置的一处理电路上的多个程序模块;以及在以所述管线架构处理所述对象写入指令的期间,利用所述主装置将对应于所述用户数据的元数据(metadata)写入分配到的缓冲器,以控制所述存储服务器在不产生所述元数据的针对所述多个后续管线模块的写入放大的情况下完成所述请求,其中所述分配到的缓冲器代表所述固定大小缓冲器池中的所述缓冲器。
除了上述方法以外,本发明还公开一种主装置。所述主装置可包括一处理电路,用来控制所述主装置在一存储服务器中进行基于管线的存取管理,其中所述存储服务器包括所述主装置以及一存储装置层,所述存储装置层包括耦接至所述主装置的至少一存储装置,所述主装置是用来控制所述存储服务器的运作,以及所述至少一存储装置是用来为所述存储服务器存储信息。例如,因应将用户数据写入所述存储服务器的一请求,所述存储服务器中的所述主装置将所述用户数据写入所述存储服务器的所述存储装置层并且以所述存储服务器的一管线架构开始处理对应于写入所述用户数据的所述请求的一对象写入指令;在以所述管线架构处理所述对象写入指令的期间,所述主装置依据所述用户数据的数据大小自多个固定大小缓冲器池选择一固定大小缓冲器池,其中所述多个固定大小缓冲器池分别对应于多个缓冲大小;在以所述管线架构处理所述对象写入指令的期间,所述主装置自所述固定大小缓冲器池分配一缓冲器以作为所述管线架构中的至少一管线的一管线模块,以供为所述至少一管线进行缓冲,其中所述管线模块是所述存储装置层外部的一硬件管线模块,以及所述至少一管线中的多个后续管线模块属于运行于所述主装置的所述处理电路上的多个程序模块;以及在以所述管线架构处理所述对象写入指令的期间,所述主装置将对应于所述用户数据的元数据写入分配到的缓冲器,以控制所述存储服务器在不产生所述元数据的针对所述多个后续管线模块的写入放大的情况下完成所述请求,其中所述分配到的缓冲器代表所述固定大小缓冲器池中的所述缓冲器。
除了上述方法以外,本发明还公开一种存储服务器。所述存储服务器可包括一主装置以及一存储装置层,其中所述主装置是用来控制所述存储服务器的运作。例如,所述主装置可包括一处理电路,用来控制所述主装置在所述存储服务器中进行基于管线的存取管理。另外,所述存储装置层可包括至少一存储装置,耦接至所述主装置,且所述至少一存储装置是用来为所述存储服务器存储信息。例如,因应将用户数据写入所述存储服务器的一请求,所述存储服务器中的所述主装置将所述用户数据写入所述存储服务器的所述存储装置层并且以所述存储服务器的一管线架构开始处理对应于写入所述用户数据的所述请求的一对象写入指令;在以所述管线架构处理所述对象写入指令的期间,所述主装置依据所述用户数据的数据大小自多个固定大小缓冲器池(fixed size buffer pool)选择一固定大小缓冲器池,其中所述多个固定大小缓冲器池分别对应于多个缓冲大小;在以所述管线架构处理所述对象写入指令的期间,所述主装置自所述固定大小缓冲器池分配一缓冲器以作为所述管线架构中的至少一管线的一管线模块,以供为所述至少一管线进行缓冲,其中所述管线模块是所述存储装置层外部的一硬件管线模块,以及所述至少一管线中的多个后续管线模块属于运行于所述主装置的所述处理电路上的多个程序模块;以及在以所述管线架构处理所述对象写入指令的期间,所述主装置将对应于所述用户数据的元数据(metadata)写入分配到的缓冲器,以控制所述存储服务器在不产生所述元数据的针对所述多个后续管线模块的写入放大的情况下完成所述请求,其中所述分配到的缓冲器代表所述固定大小缓冲器池中的所述缓冲器。
本发明的方法及相关设备能确保整个存储服务器(例如所述主装置以及存储装置)可妥善地运作以避免现有技术中的问题,诸如因为Ceph相关控制的存储装置的写入放大问题、成本增加的问题等。另外,本发明的实施例不会大幅地增加额外的成本,尤其,存储装置中的控制器(诸如存储器控制器)的制造商不需要实现控制器的新硬件架构,而设计与制作对应于这个新硬件架构的新集成电路(integrated circuit,IC)所需的成本能得以节省。因此,现有技术的问题能被解决,而整体成本不会增加太多。相较于现有技术,本发明的方法与相关设备能在没有副作用或较不会带来副作用的情况下改善整体效能。
附图说明
图1为依据本发明一实施例的一存储服务器的示意图。
图2依据本发明一实施例绘示图1所示的存储服务器中的一存储装置的某些实施细节。
图3为依据本发明一实施例的用来在一存储服务器中进行基于管线的存取管理的方法的基于管线的快取控制方案。
图4依据本发明一实施例绘示对应于图3所示的方法的效能增强。
图5绘示用于每一写入运作(例如一对象写入运作)的对象存储装置(ObjectStorage Device,以下简称OSD)元数据,诸如将被存储的相关信息。
图6绘示一原始OSD日志控制方案的一系列运作。
图7依据本发明一实施例绘示在图3所示的方法的一专门OSD日志控制方案中的多个每线程日志环(per thread journal ring)以及在所述专门OSD日志控制方案中的相关运作的一部分。
图8绘示在图7所示的专门OSD日志控制方案中的相关运作的另一部分。
图9绘示在图7所示的专门OSD日志控制方案中的相关运作的另一部分。
图10绘示在图7所示的专门OSD日志控制方案中的相关运作的另一部分。
图11为依据本发明一实施例的图3所示的方法的工作流程。
图12依据本发明一实施例绘示图1所示的管线快取模块的某些子模块。
图13依据本发明一实施例绘示图1所示的主装置的某些非挥发性双列直插式存储器模块。
其中,附图标记说明如下:
10 存储服务器
50 主装置
52 处理电路
52P 程序模块
53 基于管线的存取管理模块
54 存储接口电路
56 存储装置
58 网络接口电路
60、60_1、60_2、…、60_NNVDIMM 非挥发性双列直插式存储器模块
62、62_1、62_2、…、62_NNVDIMM 挥发性存储器
64、64_1、64_2、…、64_NNVDIMM 管线快取模块
64_A、64_B 子快取模块
66、66_1、66_2、…、66_NNVDIMM 非挥发性存储器
90、100 存储装置
110 存储器控制器
112 微处理器
112M 只读存储器
112C 程序代码
114 控制逻辑电路
116 随机存取存储器
118 传输接口电路
120 非挥发性存储器
122-1、122-2、…、122-N 非挥发性存储器组件
S11、S12、S13、S14、S15、S16 步骤
具体实施方式
本发明的实施例公开了一种用来在一存储服务器中进行基于管线的(pipeline-based)存取管理的方法以及设备,而所述设备可包括所述存储服务器的至少一部分(例如一部分或全部)。例如,所述设备可包括所述存储服务器的一部分,诸如所述存储服务器中的一主装置或位于所述主装置中的相关控制电路(例如运行着对应于所述方法的一或多个程序模块的处理电路、以及相关电路)。又例如,所述设备可包括所述存储服务器的整体。
图1为依据本发明一实施例的存储服务器10的示意图。存储服务器10可包括一主装置50,并且可包括至少一存储装置(例如一或多个存储装置)诸如多个存储装置90,其中多个存储装置90耦接至主装置50。依据本实施例,主装置50可用来控制存储服务器10的运作,而多个存储装置90可用来为存储服务器10存储信息。如图1所示,主装置50可包括一处理电路52(例如至少一处理器/处理器核心以及相关电路诸如随机存取存储器(RandomAccess Memory,RAM)、总线等)以控制主装置50的运作,且可包括至少一存储接口电路54以将多个存储装置90以及多个存储或记忆装置(例如一或多个硬式磁盘驱动器(Hard DiskDrive)及/或一或多个固态硬盘(Solid State Drive,SSD))耦接于主装置50,又可包括一网络接口电路58已将主装置50耦接至至少一网络。所述多个存储或记忆装置可包括至少一存储装置诸如一或多个存储装置,其可统称为存储装置56。例如,存储装置56可包括一组存储装置,其中的一存储装置可用来当作主装置50的系统磁盘,而其它的则可用来为主装置50存储用户数据,但本发明不限于此。又例如,所述存储装置56可包括一个存储装置,而这个存储装置可用来当作主装置50的系统磁盘。另外,主装置50可还包括至少一非挥发性双列直插式存储器模块(non-volatile dual in-line memory module,NVDIMM)(例如一或多个非挥发性双列直插式存储器模块)诸如非挥发性双列直插式存储器模块60(在图1中标示为“NVDIMM”以求简明)。例如,非挥发性双列直插式存储器模块60可包括一挥发性(volatile)存储器62以及一非挥发性(non-volatile,NV)存储器66(在图1中分别标示为“VM”以及“NVM”以求简明),其可分别用来为处理电路52存储(例如缓冲或快取(cache))信息以及为处理电路52保存在挥发性存储器62中的所述信息,并且可耦接至处理电路52以供处理电路52存取。处理电路52可存取挥发性存储器62中的管线快取模块64,诸如挥发性存储器62中的一存储区。
依据本实施例,运行着程序模块52P(尤指对应于所述方法的基于管线的存取管理模块53)的处理电路52可用来依据所述方法控制主装置50的运作,例如控制主装置50在存储服务器10中进行基于管线的存取管理。存储接口电路54可符合一或多个标准(例如串行高技术附件(Serial Advanced Technology Attachment,简称“SATA”)标准、外设组件互联(Peripheral Component Interconnect,简称“PCI”)标准、快捷外设互联(PeripheralComponent Interconnect Express,简称“PCIe”)标准、快捷非挥发性存储器(Non-Volatile Memory Express,简称“NVMe”)标准、快捷非挥发性存储器外接存取(NVMe-over-Fabrics,简称“NVMeoF”)标准、小型计算机系统接口(Small Computer System Interface,简称“SCSI”)标准、通用型闪存存储(Universal Flash Storage,简称“UFS”)标准等之中的一或多者),并且可依据所述一或多个标准进行通信以容许运行着程序模块52P的处理电路52通过存储接口电路54存取存储装置56以及多个存储装置90。另外,网络接口电路58可用来提供有线或无线网络连接,而对应于一或多个用户的一或多个客户端装置可通过所述有线或无线网络连接来存取在存储服务器10(例如其内的存储装置56及多个存储装置90)中的用户数据。为便于理解,图1左手边所示的架构中的主装置50以及相关电路/模块/装置(例如运行着程序模块52P的处理电路52、存储接口电路54以及非挥发性双列直插式存储器模块60)可分别作为上述主装置及其相关电路/模块/装置(例如运行着对应于所述方法的所述一或多个程序模块的所述处理电路、及相关电路)的例子。
在图1所示的架构中,存储服务器10可被绘示为包括有主装置50以及耦接至主装置50的多个存储装置90,但本发明不限于此。例如,主装置50可还包括一机壳(case)(例如一计算机机壳,其可由金属及/或一或多个其它材料制作而成)以供设置主装置50的组件诸如图1所示的组件(例如处理电路52、存储接口电路54、网络接口电路58、非挥发性双列直插式存储器模块60等)以及多个存储装置90的至少一部分(例如一部分或全部)。又例如,存储服务器10可还包括耦接于主装置50与多个存储装置90中的至少一部分(例如一部分或全部)之间的至少一开关电路(例如一或多个开关电路),以进行主装置50与多个存储装置90中的上述至少一部分之间的信号切换。
依据某些实施例,运行着程序模块52P的处理电路52、或存储接口电路54可组态(configure)多个存储装置90的至少一部分(一部分或全部)以形成一存储池(storagepool)架构,但本发明不限于此。依据某些实施例,运行着程序模块52P的处理电路52、或存储接口电路54可组态多个存储装置90的至少一部分(一部分或全部)以形成存储服务器10的一容错式磁盘阵列(Redundant Array of Independent Disks,RAID),诸如一全闪存阵列(All Flash Array,AFA)。
图2依据本发明一实施例绘示图1所示的存储服务器10中的一存储装置的某些实施细节,其中存储装置100可作为多个存储装置90中的任一者的例子。尤其,多个存储装置90的每一者均可依据存储装置100的架构来实施,但本发明不限于此。存储装置100可用来提供存储空间给主装置50。在主装置50的控制下,所述一或多个客户端装置可存取(例如读取或写入)在所述存储空间的用户数据。主装置50的例子可包括(但不限于):个人计算机诸如桌面计算机及膝上型计算机。存储装置100的例子可包括(但不限于):固态硬盘、以及各种类型的嵌入式记忆装置诸如符合UFS或EMMC等标准的嵌入式记忆装置。依据本实施例,存储装置100可包括一控制器诸如存储器控制器110,并且可还包括一非挥发性存储器120,其中所述控制器是用来控制存储装置100的运作以及存取非挥发性存储器120,以及非挥发性存储器120是用来存储信息。非挥发性存储器120可包括至少一非挥发性存储器组件(例如一或多个非挥发性存储器组件),诸如多个非挥发性存储器组件122-1、122-2、…、及122-N,其中“N”可代表大于1的正整数。例如,非挥发性存储器120可为一闪存,而多个非挥发性存储器组件122-1、122-2、…、及122-N可为多个闪存芯片或多个闪存裸晶,但本发明不限于此。
依据本实施例,存储器控制器110可用来控制非挥发性存储器120的存取,以容许主装置50通过存储器控制器110存取非挥发性存储器120,以在存储服务器10中进行存取管理。如图2所示,存储器控制器110可包括一处理电路诸如微处理器112、一存储单元诸如只读存储器(read-only memory,ROM)112M、一控制逻辑电路114、一随机存取存储器116以及一传输接口电路118,其中以上组件可通过总线互相耦接。随机存取存储器116可由一静态随机存取存储器(Static RAM,SRAM)来实施,但本发明不限于此。随机存取存储器116可用来提供内部存储空间给存储器控制器110,例如,随机存取存储器116可用来当作一缓冲存储器以供缓冲数据。另外,本实施例的只读存储器112M是用来存储一程序代码112C,而微处理器112是用来执行程序代码112C以控制存储器控制器110的运作来控制非挥发性存储器120的存取,以容许主装置50通过存储器控制器110存取非挥发性存储器120。请注意,在某些例子中,程序代码112C可被存储在随机存取存储器116或任何类型的存储器中。另外,控制逻辑电路114可用来控制非挥发性存储器120,并且可包括一数据保护电路(未显示)以保护数据及/或进行错误更正,但本发明不限于此。传输接口电路118可符合一特定通信标准(例如SATA标准、PCI标准、PCIe标准、NVMe标准、NVMeoF标准、SCSI标准、UFS标准等),并且可依据所述特定通信标准进行通信,例如,为存储装置100,和主装置50进行通信,其中存储接口电路54可符合所述特定通信标准,以供为主装置50,和存储装置100进行通信。
依据某些实施例,主装置50可传送主装置指令以及对应的逻辑地址至存储器控制器110以存取存储装置100。存储器控制器110接收主装置指令及逻辑地址,并且将主装置指令转译为存储器操作指令(其可简称为操作指令),再以这些操作指令控制非挥发性存储器120以读取、写入/编程非挥发性存储器120中的具有实体地址的记忆单元(例如数据页),其中实体地址可对应于逻辑地址。当存储器控制器110对多个非挥发性存储器组件122-1、122-2、…、及122-N中的任一非挥发性存储器组件122-n(“n”可代表在区间[1,N]内的任一整数)进行一抹除运作时,非挥发性存储器组件122-n的多个区块的至少一区块可被抹除,其中所述多个区块的每一区块可包括多个页面(例如数据页面),并且可对一或多个页面进行一存取运作(例如读取或写入)。
依据某些实施例,存储服务器10(例如主装置50)可依据一Ceph解决方案来运作,以通过软件定义的方式使存储服务器10成为一分布式存储系统(distributed system)的一部分。多个存储系统(例如多个存储服务器{10}诸如存储服务器10)较佳可用来形成所述分布式存储系统的一资源池(resource pool),以支持各种类型的存取,诸如一区块装置(block device)类型(例如用来存取所述分布式存储系统中的一仿真区块装置)、一文件系统类型(例如用来存取所述分布式存储系统中的一文件系统)、以及一对象类型(例如用来存取于所述分布式存储系统中的对象命名空间(object namespace)内的一对象),例如,可附带某些特征诸如容错(fault tolerance)、自动故障转移(failover)控制等,但本发明不限于此。例如,一文件可被存储为在所述分布式存储系统中的所述对象命名空间内的一对象。又例如,对应于一特定地址的一数据区块可被存储为在所述分布式存储系统中的所述对象命名空间内的一对象。为了实现所述分布式存储系统的特征,除了数据(例如用户数据)以外,存储服务器10可用来存储额外信息诸如元数据(metadata)及日志(journal)。
图3为依据本发明一实施例的用来在所述存储服务器中进行基于管线的存取管理的方法的基于管线的快取控制方案。所述方法能被应用于存储服务器10,尤其,能被应用于包括有运行着程序模块52P(例如对应于所述方法的基于管线的存取管理模块53)的处理电路52的主装置50,连同多个存储装置90的每一者,诸如包括有存储器控制器110的存储装置100,其中所述控制电路诸如运行着基于管线的存取管理模块53的处理电路52可控制主装置50依据所述方法来运作。例如,存储服务器10可依据Ceph解决方案来运作,并且本发明的方法及相关设备(例如主装置50,尤其,运行着基于管线的存取管理模块53的处理电路52)能以一种新颖的管线架构来进行存取控制,以在没有副作用或较不会带来副作用的情况下达到最佳效能。所述管线架构可利用上述至少一非挥发性双列直插式存储器模块(例如一或多个非挥发性双列直插式存储器模块)诸如非挥发性双列直插式存储器模块60作为存储日志(storage journal)的媒介(medium),并且可利用上述至少一非挥发性双列直插式存储器模块诸如非挥发性双列直插式存储器模块60作为存储元数据(storage metadata)的媒介。另外,非挥发性双列直插式存储器模块60可包括一控制器(例如与存储装置100的存储器控制器110类似的存储器控制器)以控制非挥发性双列直插式存储器模块60的运作,并且非挥发性存储器66可具有与非挥发性存储器120类似的架构并且可包括对应于一非挥发性存储器组件数量N’的一或多个非挥发性存储器组件,其中非挥发性存储器组件数量N’可代表一正整数,但本发明不限于此。例如,挥发性存储器62可为一动态随机存取存储器(Dynamic RAM,DRAM),而非挥发性存储器66可为包括有N’个闪存芯片或N’个闪存裸晶的一闪存。另外,非挥发性双列直插式存储器模块60可在存储服务器10的一常态模式中通过总线自存储服务器10的电源供应器取得常态电源(例如一或多个驱动电压),并且可在存储服务器10的一故障转移模式中自一备用电源(例如存储服务器10中的一电池、或非挥发性双列直插式存储器模块60中的一超级电容器(supercapacitor))取得紧急电源。非挥发性双列直插式存储器模块60的所述控制器可利用非挥发性存储器66依据来自处理电路52的一清理(flush)指令保存于挥发性存储器62(例如管线快取模块64)中所存储或缓冲的所述信息。例如,处理电路52可在所述常态模式或所述故障转移模式中发送所述清理指令。
为便于理解,假设基于管线的存取管理模块53的一写入放大减少机制可被暂时禁用(disable),且与本发明相关的某些程序模块可由图3的上半部所示来说明。由于存储服务器10可依据Ceph解决方案来运作,相关程序模块可包括一对象存储装置(ObjectStorage Device,以下简称OSD)数据模块、一OSD元数据模块、一OSD日志模块、一钥值(Key-Value,以下简称KV)数据及元数据模块、一KV日志模块、一第四延伸文件系统(FourthExtended File System,以下简称EXT4)数据模块、一éXT4元数据模块、以及一EXT4日志模块(在图3中分别标示为“OSD数据”、“OSD元数据”、“OSD日志”、“KV数据及元数据”、“KV日志”、“EXT4数据”、“EXT4元数据”、及“EXT4日志”以求简明),用来依据Ceph解决方案分别记录(例如写入)OSD数据、OSD元数据、OSD日志、KV数据及元数据、KV日志、EXT4数据、EXT4元数据、以及EXT4日志,其中这些程序模块可属于程序模块52P中的一或多个中介层的程序模块,但本发明不限于此。尤其,元数据模块诸如所述OSD元数据模块、所述KV数据与元数据模块、以及所述EXT4元数据模块可分别产生或更新对应的元数据诸如所述OSD元数据、所述KV元数据以及所述EXT4元数据,而日志模块诸如所述OSD日志模块、所述KV日志模块、以及所述EXT4日志模块可分别产生或更新对应的日志诸如所述OSD日志、所述KV日志、以及所述EXT4日志。当存储服务器10通过网络接口电路58自一客户端装置接收一写入指令,运行着程序模块52P(例如程序模块52P中的所述一或多个中介层上方的一上层(upper layer))的处理电路52可将所述写入指令转译为一转译后写入指令诸如针对所述对象命名空间的一对象写入指令,以供指出一用户写入请求诸如写入用户数据的请求(在图3中标示为“用户写入”以求简明),其中所述对象写入指令可依据所述Ceph解决方案伴随一对象名称。所述转译后写入指令诸如所述对象写入指令可被传送至所述一或多个中介层中的特定的程序模块。
由于所述一或多个中介层中的全部的程序模块可依据所述Ceph解决方案运作,严重的写入放大会在基于管线的存取管理模块53的所述写入放大减少机制被暂时禁用的情况下发生。图3的上半部所示的多个箭号的至少一部分(例如一部分或全部),诸如指向这些程序模块的箭号,可指出可被基于管线的存取管理模块53的所述写入放大减少机制减少的相关写入放大。例如,所述架构的多个部分的箭号的数量可约略地分别指出对应的写入放大值。本发明的方法及相关设备能以极佳的方式极度地减少写入放大(例如减少箭号数量及/或移除这些箭号),以最小化整体的写入放大。
如图3的下半部所示,所述管线架构可包括一元数据模块诸如所述OSD元数据模块、管线快取模块64中的一元快取(Meta-Cache)模块64M(在图3中标示为“元快取”以求简明)、至少一KV模块(例如一或多个KV模块)诸如所述KV数据及元数据模块以及所述KV日志模块、以及至少一EXT4模块(例如一或多个EXT4模块)诸如所述EXT4日志模块以及所述EXT4元数据模块。这些模块可视为至少一管线(诸如一或多个管线)的多个管线模块,其中元快取模块64M可视为一硬件管线模块,而其它模块可视为软件管线模块,但本发明不限于此。相较于图3上半部所示的架构,一管线模块诸如元快取模块64M可被插入至所述管线中以处理所述元数据。例如,所述管线架构可利用这个管线模块来存取非挥发性双列直插式存储器模块60。只要在非挥发性双列直插式存储器模块60中提供给这个管线模块的存储区的相关存储空间是足够的,在所述管线架构中的通往后续模块(例如所述KV模块以及所述EXT4模块)的信息流可变成不活跃的(inactive),如图3下半部所示以虚线的箭号来表示以便于理解。例如,运行着程序模块52P的处理电路52可控制存储服务器10提供多个节点(例如四个节点),并且可利用上述至少一非挥发性双列直插式存储器模块中的一特定非挥发性双列直插式存储器模块诸如非挥发性双列直插式存储器模块60作为对应于这个节点的一专用的非挥发性双列直插式存储器模块,以针对多个存储装置90中的对应于这个节点的一组存储装置(例如六个存储装置)的存取进行元数据与日志管理;多个存储装置90的每一者的存储容量可为4兆字节(Terabytes,TB);以及当在非挥发性双列直插式存储器模块60中的所述存储区的存储空间的大小可达到(例如大于或等于)32吉字节(Gigabytes,GB),所述管线架构可在不激活(activate)通往后续模块的信息流的情况下正确地运作;但本发明不限于此。在某些实施例中,基于管线的存取管理模块53的所述写入放大减少机制可在需要时激活通往后续模块的信息流。
依据某些实施例,运行着程序模块52P的处理电路52可将快取信息(例如所述元数据)存储在非挥发性双列直插式存储器模块60中,并且在多个预定条件的至少一预定条件(例如一或多个预定条件)被满足时清理管线快取模块64,其中处理电路52可发送所述清理指令至非挥发性双列直插式存储器模块60以将在非挥发性双列直插式存储器模块60中的管线快取模块64中的所述快取信息(例如在元快取模块64M中的所述元数据)清理至存储服务器10中的所述存储装置层(在图3中标示为“存储”以求简明),例如多个存储装置90中的一或多个存储装置,诸如存储装置100(例如所述固态硬盘),但本发明不限于此。所述多个预定条件可包括:存储服务器10为闲置;以及管线快取模块64具有高快取压力(例如在管线快取模块64中的快取信息的大小达到一预定值)。因此,运行着程序模块52P的处理电路52大部分的时间可继续使用管线快取模块64中的元快取模块64M以快取并保留所述存储元数据(例如所述OSD元数据的最新版本,诸如更新后的OSD元数据)。当存储服务器10为闲置且管线快取模块64具有高快取压力,处理电路52可将于管线快取模块64中的元快取模块64M内的所述存储元数据清理至所述存储装置层,例如,通过上述至少一KV模块(例如所述KV数据及元数据模块以及所述KV日志模块)以及上述至少一EXT4模块(例如所述EXT4日志模块以及所述EXT4元数据模块)以及相关清理路径(例如图3的下半部所示的以虚线绘示的箭号)。
依据某些实施例,发送所述清理指令可通过发送一快取线写回(Cache LineWrite Back,CLWB)指令来实施,以及基于管线的存取管理模块53的所述写入放大减少机制可利用所述快取线写回指令触发清理运作,例如,通过处理电路52中的一处理器的一裸晶上(on-die)存储器控制器,但本发明不限于此。依据某些实施例,一异步动态随机存取存储器刷新(Asynchronous DRAM Refresh,简称“ADR”)控制方案可应用于处理电路52,以及管线快取模块64可被用来当作多个ADR保护缓冲器(ADR protected buffer)的其中一者。处理电路52(例如其内的所述处理器/处理器核心)可清理所述多个ADR保护缓冲器并且控制上述至少一非挥发性双列直插式存储器模块诸如非挥发性双列直插式存储器模块60的全部处于一自行刷新状态,并且宣称(assert)一旗标诸如一ADR完成旗标。因应宣称所述旗标,上述至少一非挥发性双列直插式存储器模块诸如非挥发性双列直插式存储器模块60可将挥发性存储器62(例如所述动态随机存取存储器)从所述主装置(例如处理电路52)隔离并且切换至所述备用电源诸如所述超级电容器以依据所述超级电容器的电源运作,并且将于挥发性存储器62内的信息(例如所述快取信息)复制到非挥发性存储器66以保存所述信息,再接着关闭所述超级电容器。
针对图3所示的基于管线的快取控制方案的某些实施细节可说明如下。依据某些实施例,所述管线架构可利用上述至少一非挥发性双列直插式存储器模块诸如非挥发性双列直插式存储器模块60(例如管线快取模块64)作为如上所述的用来快取所述存储元数据(例如所述OSD元数据)的媒介。类似地,所述管线架构可利用上述至少一非挥发性双列直插式存储器模块(例如一或多个非挥发性双列直插式存储器模块)诸如非挥发性双列直插式存储器模块60作为用来快取所述存储日志(例如所述OSD日志)的媒介。为便于理解,假设上述至少一非挥发性双列直插式存储器模块可包括一特定非挥发性双列直插式存储器模块诸如非挥发性双列直插式存储器模块60以供在一每节点一个非挥发性双列直插式存储器模块的组态(one NVDIMM per node configuration)中的所述多个节点的一特定节点的使用。在此情况下,管线快取模块64可包括多个子模块诸如子快取模块64A及64B,以分别用来快取所述存储元数据(例如所述OSD元数据)以及所述存储日志(例如所述OSD日志),其中子快取模块61A可代表元快取模块64M。例如,在上述至少一管线(例如所述一或多个管线)诸如图3下半部所示管线中,子快取模块64A可被配置在所述元数据模块(例如所述OSD元数据模块)与上述至少一KV模块(例如所述KV数据及元数据模块以及所述KV日志模块)之间。又例如,在所述管线架构的另一管线中,子快取模块64B可被配置在一日志模块诸如所述OSD日志模块与所述存储装置层之间。上述至少一管线以及上述另一管线中的两者均可用来以写入的方向(诸如自所述上层通过所述一或多个中介层至所述存储装置层的方向)传送信息(例如OSD、KV及EXT4的各自的数据、各自的元数据、以及各自的日志),以及运行着程序模块52P(例如对应于所述方法的基于管线的存取管理模块53)的处理电路52可分别利用子快取模块64A及64B来快取所述存储元数据(例如所述OSD元数据的最新版本诸如更新后的OSD元数据)以及所述存储日志(例如所述OSD日志的最新版本诸如更新后的OSD日志),以在大部分的时间消除在所述管线架构的这些管线内的后续信息流。因此,本发明的方法以及相关设备能大幅地减少整体写入放大并且改善整体效能。
依据某些实施例,上述至少一非挥发性双列直插式存储器模块可包括多个非挥发性双列直插式存储器模块{60}诸如NNVDIMM个非挥发性双列直插式存储器模块{60_1,…,60_NNVDIMM},其数量NNVDIMM可为大于一的正整数。所述NNVDIMM个非挥发性双列直插式存储器模块{60_1,…,60_NNVDIMM}可具有与非挥发性双列直插式存储器模块60相同的架构。例如,非挥发性双列直插式存储器模块60_1可包括一挥发性存储器62_1以及一非挥发性存储器66_1,而一管线快取模块64_1可被设置于挥发性存储器62_1中;非挥发性双列直插式存储器模块60_2可包括一挥发性存储器62_2以及一非挥发性存储器66_2,而一管线快取模块64_2可被设置于挥发性存储器62_2中;而其余可依此类推。另外,主装置50可如上所述,以所述每节点一个非挥发性双列直插式存储器模块的组态来运作,其中挥发性存储器62_1中的管线快取模块64_1可扮演子快取模块64A的角色,而挥发性存储器62_2中的管线快取模块64_2可扮演子快取模块64B的角色,但本发明不限于此。例如,上述至少一非挥发性双列直插式存储器模块可包括多个非挥发性双列直插式存储器模块诸如非挥发性双列直插式存储器模块60_1及60_2以供在一每节点多个非挥发性双列直插式存储器模块的组态(multi-NVDIMMper node configuration)中的所述多个节点的一特定节点的使用。尤其,运行着程序模块52P(例如对应于所述方法的基于管线的存取管理模块53)的处理电路52可利用管线快取模块64_1及64_2的各自的子模块(诸如子快取模块{64_1A,64_1B}及{64_2A,64_2B})来分别快取所述存储元数据(例如所述OSD元数据的最新版本诸如更新后的OSD元数据)以及所述存储日志(例如所述OSD日志的最新版本诸如更新后的OSD日志),以在大部分的时间消除在所述管线架构的这些管线内的后续信息流。在某些实施例中,运行着程序模块52P(例如对应于所述方法的基于管线的存取管理模块53)的处理电路52可分别利用管线快取模块64_1及64_2来快取所述存储元数据(例如所述OSD元数据的最新版本诸如更新后的OSD元数据)以及所述存储日志(例如所述OSD日志的最新版本诸如更新后的OSD日志),以在大部分的时间消除在所述管线架构的这些管线内的后续信息流。
不论主装置50是否以所述每节点一个非挥发性双列直插式存储器模块的组态或所述每节点多个非挥发性双列直插式存储器模块的组态来运作,具有至少一快取模块(例如一或多个快取模块诸如管线快取模块64、子快取模块64A及64B、管线快取模块64_1及64_2等)的管线结构能急剧地缓解在存储运作中的写入放大,尤其,能改善在存储装置层中的底层的存储装置(例如固态硬盘)的寿命并且减少在所述多个存储系统(例如所述多个存储服务器{10})之中及/或之间的数据流量。另外,备有上述至少一快取模块的所述管线架构能减少因为所述Ceph解决方案所带来的副作用(诸如相较于非Ceph的架构更大的输入输出(input/output,I/O)延迟、更大量的存储器复制以及更大量的锁定),尤其,能使存储服务器10近乎完全地利用在所述存储装置层的所述多个存储装置(例如固态硬盘)并且轻易地将数据直接写入至所述多个存储装置中。例如,所述管线架构可配置为具有一组指定的缓冲器(例如子快取模块64A及64B、管线快取模块64_1及64_2等)以增加写入流通量(writethroughput)。又例如,所述管线架构可包括元数据的一基于层级的(tier-based)存储架构以减少询问数据的反应时间。于是,依据本发明来实施能达到改善整体效能的目标。
依据某些实施例,具有上述至少一快取模块(例如一或多个快取模块诸如管线快取模块64、子快取模块64A及64B、管线快取模块64_1及64_2等)的所述管线架构可自网络直接接收所述用户数据(例如通过所述有线或无线网络连接自所述一或多个客户端装置取得所述OSD数据)至非挥发性双列直插式存储器模块60,并且可将对应于用户写入操作的元数据(例如所述OSD元数据)直接产生至非挥发性双列直插式存储器模块60中,并可另写入相关日志(例如所述OSD日志),例如,通过将(关于通信的)交易(transaction)的标头(header)编码至非挥发性双列直插式存储器模块60中。由于上述运作的数据或信息流会先进入非挥发性双列直插式存储器模块60,并且由于对应的元数据以及相关日志会在非挥发性双列直插式存储器模块60中被产生、改变或更新,所以,自所述一或多个中介层朝向所述存储装置层的后续信息流,连同对应于这些后续信息流的写入放大,能被大幅地减少(尤其,消除),且因此整体写入放大能被大幅减少。于是,依据本发明来实施能达到改善整体效能的目标。
依据某些实施例,本发明的方法以及相关设备(例如主装置50,尤其,运行着基于管线的存取管理模块53的处理电路52)可仅利用所述管线架构的上述至少一快取模块(例如一或多个快取模块诸如管线快取模块64、子快取模块64A及64B、管线快取模块64_1及64_2等),而非所述存储装置层,来存储所述存储元数据(例如所述OSD元数据)以及所述存储日志(例如所述OSD日志)。在此情况下,自所述一或多个中介层朝向所述存储装置层的后续信息流会被消除,且因此,将所述存储元数据(例如所述OSD元数据)以及所述存储日志(例如所述OSD日志)快取在所述管线架构的上述至少一快取模块中可视为将所述存储元数据(例如所述OSD元数据)以及所述存储日志(例如所述OSD日志)存储在所述管线架构的上述至少一快取模块中。
图4依据本发明一实施例绘示对应于图3所示的方法的效能增强。为便于理解,由在一客户端装置测量一普通Ceph服务器的客户端延迟(client latency)得到的一第一客户端延迟图可绘示如图4的左半部所示,而由在这个客户端装置测量存储服务器10的客户端延迟得到的一第二客户端延迟图可绘示如图4的右半部所示,其中图例诸如Max、Min及Avg可分别代表最大值、最小值以及平均值。例如,在所述第一客户端延迟图中的量测结果(例如数据点)有往上方散布的趋势且到达40毫秒(millisecond,以下简称“ms”)。另外,在所述第二客户端延迟图中的量测结果(例如数据点)的大部分均维持在低处且互相靠近,这表示相对于时间的整体延迟可被大幅地减少。因此,备有上述至少一快取模块的管线架构确实能使所述存储系统(例如存储服务器10)加速。
图5绘示用于每一写入运作(例如因应所述对象写入指令的一对象写入运作)的所述OSD元数据,诸如将被存储的相关信息。例如,所述信息的至少一部分(例如一部分或全部)可被存储为多组的钥(key,K)与值(value,V)。依据本实施例,本发明的方法以及相关设备可更新(尤其,重新写入)对象信息(information,Info)、对象快照(snapshot)信息、放置群组(placement group,PG)信息、以及放置群组登录(log),例如,通过维护在非挥发性双列直插式存储器模块60中的所述OSD元数据。当所述OSD元数据被存储为多个钥值组(KVset),所述放置群组信息、所述放置群组登录、所述对象信息及所述对象快照信息的各自的钥可分别载有(carry)放置群组名称加固定后置(PG name plus fixed postfix)、放置群组名称加登录版本(PG name plus log version)、对象名称加固定后置(object nameplus fixed postfix)以及对象名称加固定后置(例如针对快照),而所述放置群组信息、所述放置群组登录、所述对象信息及所述对象快照信息的各自的值长度可分别是至少数百字节、大约一百八十或更多字节(以写入一特定类型的数据对象为例)、数百至数千字节、及至少数十字节(以空信息为例),但本发明不限于此。另外,一放置群组可包括多个对象。例如,所述放置群组可被用来作为用于进行复原(recovery)的单元、用于移动对象的单元、及/或用于平衡在所述存储系统诸如存储服务器10中的多个区块装置之间的对象数量(例如当一新区块装置诸如一新固态硬盘被加入所述存储系统)。由于每一写入运作(例如所述对象写入运作)的针对所述OSD元数据的信息流先进入非挥发性双列直插式存储器模块60,且由于所述对象信息、所述对象快照信息、所述放置群组信息以及所述放置群组登录可在非挥发性双列直插式存储器模块60中被产生、更改、或更新,自所述一或多个中介层朝向所述存储装置层的后续信息流,连同对应于这些后续信息流的写入放大,能被大幅地减少(尤其,消除),且因此整体写入放大能被减少。于是,依据本发明来实施能达到改善整体效能的目标。
图6绘示一原始OSD日志控制方案的一系列运作。为便于理解,假设基于管线的存取管理模块53的所述写入放大减少机制可被暂时禁用,并且在此情况下对应于上述严重的写入放大的某些原始行为可绘示如图6所示,但本发明不限于此。由于典型地需要与操作系统核心(Operating System kernel,OS kernel)互动,故整体效能在此情况下会衰退。例如,来自多个线程(thread)的多个OSD交易可分别被接收,并且可分别被队列(queue),其在图6中标示为“队列交易”以求简明。虽然可分别对这些交易进行编码(在图6中标示为“编码交易”以求简明),在写入队列、日志区块装置、及相关互动(例如一体传递(all in onesubmit,AIO submit)以及得到事件)的运作中可能会发生各种问题,诸如锁定(lock)、系统调用(system call)、存储器复制、队列/排程等问题。尤其,所述原始OSD日志控制方案的所述系列运作可包括:通过所述系统调用自用户空间切换至核心空间(kernel space)以进行所述用户空间与所述核心空间之间的传输;进行所述存储器复制;通过上述队列/排程存取所述日志区块装置;以及对应于相反方向的某些运作。另外,基于所述原始OSD日志控制方案,这些交易可先被编码并且收集在一起,接着发送至于处理电路52中的随机存取存储器,接着再以操作系统核心区块输入输出来处理,并且通过直接存储器存取写入(DirectMemory Access write,DMA write)发送至所述存储装置层(例如多个存储装置90的其中一者,诸如一固态硬盘)。由于对应这些交易中的一特定交易的用户数据可能需要被存储至一外部缓冲器,且由于对应这个交易的OSD元数据可被表示为在处理电路52中的随机存取存储器当中的一复杂的树状数据,其具有大量的分布于其各种位置的钥与值,故针对这个交易的处理会很复杂,且针对这些交易的全部的处理可对应于相当繁重的工作负荷。例如,整个程序可能被于所述写入队列中所队列的交易的大量的锁定阻塞,且可能被所述系统调用、所述存储器复制等运作延迟,尤其,可能需要等待所述日志区块装置的队列/排程。于是,所述存储系统的整体反应时间可能会增加。
图7依据本发明一实施例绘示在图3所示的方法的一专门OSD日志控制方案中的多个每线程日志环(per thread journal ring)以及在所述专门OSD日志控制方案中的相关运作的一部分,而图8~10绘示在图7所示的专门OSD日志控制方案中的相关运作的其它部分。基于所述专门OSD日志控制方案,本发明的方法及相关设备(例如主装置50,尤其,运行着基于管线的存取管理模块53的处理电路52)可藉助于上述至少一非挥发性双列直插式存储器模块(例如非挥发性双列直插式存储器模块60或多个非挥发性双列直插式存储器模块{60}(在图7~10中标示为“NVDIMM”以求简明))中的所述多个每线程日志环(例如分别对应多个线程的日志环,诸如分别专用于这些线程的专属日志环)以及多个固定大小缓冲器池(fixed size buffer pool)来进行OSD信息管理,以避免图6所示的所述原始OSD日志控制方案的问题(例如锁定、系统调用、存储器复制、及队列/排程等问题)。
如图7所示,所述设备可进行缓冲器的无锁定分配(lock free allocation)以分配(allocate)对应所述用户数据的缓冲器,并且将所述用户数据直接接收至非挥发性双列直插式存储器模块60(而不是先接收至于处理电路52中的随机存取存储器),例如,自存储服务器10的外部通过一网络服务诸如传输控制通信协议(Transmission ControlProtocol,简称“TCP”)的网络服务进入非挥发性双列直插式存储器模块60中的分配到的缓冲器,其中来自发信者(Messenger)的用户写入请求可包括所述用户数据以及所述用户数据的一标头。例如,基于管线的存取管理模块53的所述写入放大减少机制可准备并且管理上述至少一非挥发性双列直插式存储器模块(例如非挥发性双列直插式存储器模块60或多个非挥发性双列直插式存储器模块{60})中的所述多个固定大小缓冲器池,诸如分别对应一较小缓冲大小与一较大缓冲大小的一小缓冲器池与一大缓冲器池,尤其,准备并管理各种大小的缓冲器,诸如在所述小缓冲器池内的多个小缓冲器以及在所述大缓冲器池内的多个大缓冲器,以供在缓冲器分配的期间被选择,但本发明不限于此。于是,主装置50(例如运行着基于管线的存取管理模块53的处理电路52)能避免图6所示的所述原始OSD日志控制方案的锁定问题。
如图8所示,在建立对应于所述用户数据的交易(例如所述OSD交易)时,所述设备可将相关OSD元数据直接写入至非挥发性双列直插式存储器模块60,而不是先写入至在处理电路52中的随机存取存储器。例如,对应于所述用户数据的交易(例如所述OSD交易)可包括多个运作(operation,OP)诸如五个运作:用户数据(user data,在图8中标示为“UD”以求简明);实质上可等于所述OSD元数据的三个包装后(packed)钥值组(例如三组包装后钥值),其中所述三个包装后钥值组可包括一第一包装后钥值组{(K1,V1)}诸如多个第一钥值组{(K1(1),V1(1)),(K1(2),V1(2)),…}、一第二包装后钥值组{(K2,V2)诸如多个第二钥值组{(K2(1),V2(1)),(K2(2),V2(2)),…}以及一第三包装后钥值组{(K3,V3)}诸如多个第三钥值组{(K3(1),V3(1)),(K3(2),V3(2)),…};以及一放置群组登录。由于第二、第三、及第四运作诸如所述三个包装后钥值组可视为所述OSD元数据,所述设备可建立对应于所述用户数据的OSD交易,利用所述OSD交易的所述三个包装后钥值组作为所述OSD元数据,以及将所述OSD交易的所述三个包装后钥值组直接写入至非挥发性双列直插式存储器模块60以作为所述OSD元数据,不需要进行额外的处理来产生所述OSD元数据。尤其,基于管线的存取管理模块53的所述写入放大减少机制可预先依据所述标头判断所述用户数据、所述三个包装后钥值组及所述放置群组登录的各自的大小,以判断并指定所述OSD元数据中的所述三个包装后钥值组被写入至非挥发性双列直插式存储器模块60的各自的存储位置,其中预先依据所述标头决定的这些存储位置可视为给所述OSD元数据的内容的预定存储位置,并且所述OSD元数据可被附加在非挥发性双列直插式存储器模块60中的所述用户数据(例如就在所述用户数据之后)。于是,当有需要时(例如所述用户数据被更改时),基于管线的存取管理模块53的所述写入放大减少机制可直接地更改或更新在非挥发性双列直插式存储器模块60中的所述OSD元数据的任何部分而不需移动(或重新写入)所述OSD元数据的另一部分,其中图6所示的所述原始OSD日志控制方案的系统调用问题、存储器复制问题等就不会发生。
如图9所示,所述设备可以仅针对所述交易(例如所述OSD交易)的运作来编码所述交易(在图9中标示为“以仅针对交易的运作来编码交易”以求简明)而不碰触所述用户数据,这对中央处理单元的快取是友善的。由于所述OSD元数据中的所述用户数据以及所述三个包装后钥值组已被存储于非挥发性双列直插式存储器模块60中的分配到的缓冲器(例如在所述缓冲分配的期间自所述多个固定大小缓冲器池中选择的缓冲器)中,所述OSD交易的大部分的内容在非挥发性双列直插式存储器模块60中是可用的(available),并且可通过指向分配到的缓冲器的地址信息(例如至少一地址)来存取,诸如通过指向分配到的缓冲器的起始处的一缓冲器地址、分别指向分配到的缓冲器中的所述用户数据及所述OSD元数据的两个子缓冲器地址(sub-buffer address)、分别指向分配到的缓冲器中的所述用户数据及所述三个包装后钥值组(其被写入作为所述OSD元数据)的一组子缓冲器地址等来存取。例如,基于管线的存取管理模块53的所述写入放大减少机制可在一线程拥有环(threadowned ring)诸如所述多个每线程日志环中的一者上工作,而不会有任何锁定诸如所述原始OSD日志控制方案的锁定(在图9中标示为“没有锁定”以求简明),尤其,可针对所述OSD交易的运作来编码所述OSD交易以在所述线程拥有环中产生并记录所述OSD交易的一编码结果,其中所述OSD交易的所述编码结果可包括指向分配的缓冲器的所述地址信息(例如所述缓冲器地址、所述两个子缓冲器地址、所述组子缓冲器地址等中的任何地址),且可还包括所述放置群组登录,但本发明不限于此。于是,被编码的交易(例如所述OSD交易的在所述线程拥有环中的所述编码结果)可等于被写入的日志(在图10中标示为“编码后交易==写入的日志”以便于理解)。如图10所示,当所述交易诸如所述OSD交易已被完全编码,所述日志诸如所述OSD日志已被完全写入,故所述交易被编码的状态可视为所述日志被写入的状态。另外,主装置50(例如运行着基于管线的存取管理模块53的处理电路52)在所述日志被写入后可实时地回复所述用户(例如所述用户的客户端装置)。为简明起见,本实施例中与前述实施例类似的内容在此不重复赘述。
依据某些实施例,所述设备(例如主装置50,尤其,运行着基于管线的存取管理模块53的处理电路52)可依据基于预先剖析(parsing)所述标头的结果的一计划进行所述专门OSD日志控制方案的相关运作。所述设备可剖析图7所示的标头以预先判断所述OSD元数据中的各组信息将被存储于分配到的缓冲器中的各自的位置(例如在非挥发性双列直插式存储器模块60中的存储位置)。依据预先判断的这些位置,所述设备可将所述OSD元数据中的各组信息于建立所述交易时直接写入非挥发性双列直插式存储器模块60。由于本发明的方法以及相关设备能以极佳的方式极度地尽力减少与所述操作系统核心的互动,存储服务器10的整体反应时间能被大幅地减少,故整体的效能能被提升。为简明起见,这些实施例中与前述实施例类似的内容在此不重复赘述。
依据某些实施例,所述多个固定大小缓冲器池可包括分别对应一第一缓冲大小、一第二缓冲大小、以及一第三缓冲大小的一第一缓冲器池、一第二缓冲器池、以及一第三缓冲器池。例如,针对具有一第一数据大小(例如4千字节(kilobytes,以下简称KB))的第一用户数据(例如OSD数据#1),基于管线的存取管理模块53的所述写入放大减少机制可自所述第一缓冲器池分配具有所述第一缓冲大小(例如12KB)的一第一缓冲器以供处理所述第一用户数据(例如所述OSD数据#1)以及相关的存储元数据与存储日志(例如其OSD元数据#1与OSD日志#1);针对具有一第二数据大小(例如12KB)的第二用户数据(例如OSD数据#2),基于管线的存取管理模块53的所述写入放大减少机制可自所述第二缓冲器池分配具有所述第二缓冲大小(例如24KB)的一第二缓冲器以供处理所述第二用户数据(例如所述OSD数据#2)以及相关的存储元数据与存储日志(例如其OSD元数据#2与OSD日志#2);以及针对具有一第三数据大小(例如50KB)的第三用户数据(例如OSD数据#3),基于管线的存取管理模块53的所述写入放大减少机制可自所述第三缓冲器池分配具有所述第三缓冲大小(例如72KB)的一第三缓冲器以供处理所述第三用户数据(例如所述OSD数据#3)以及相关的存储元数据与存储日志(例如其OSD元数据#3与OSD日志#3);但本发明不限于此。为简明起见,这些实施例中与前述实施例类似的内容在此不重复赘述。
图11为依据本发明一实施例的图3所示的方法的工作流程。例如,在主装置50(例如运行着基于管线的存取管理模块53的处理电路52,尤其,基于管线的存取管理模块53的所述写入放大减少机制)的控制下,存储服务器10可依据图11所示的工作流程来运作。
在步骤S11中,因应将所述用户数据(例如所述OSD数据)写入存储服务器10的请求,存储服务器10利用存储服务器10中的主装置50将所述用户数据写入存储服务器10的所述存储装置层,并且开始以存储服务器10的所述管线架构处理对应于写入所述用户数据的所述请求的对象写入指令,其中存储服务器10包括主装置50以及所述存储装置层,以及所述存储装置层包括耦接至主装置50的至少一存储装置(例如多个存储装置90中的所述一或多个存储装置,诸如存储装置100)。
在步骤S12中,在以所述管线架构处理所述对象写入指令的期间,存储服务器10利用主装置50依据所述用户数据(例如所述OSD数据)的数据大小自多个固定大小缓冲器池选择一固定大小缓冲器池,其中所述多个固定大小缓冲器池分别对应于多个缓冲大小(例如,在图7~10所示的实施例中所述的所述较小缓冲大小以及所述较大缓冲大小、或在某些其它实施例所述的所述第一缓冲大小、所述第二缓冲大小以及所述第三缓冲大小)。依据本实施例,所述多个固定大小缓冲器池的任一者可包括具有所述多个缓冲大小中的一相同缓冲大小的多个缓冲器,以及所述多个缓冲大小中的任两者可彼此相异,但本发明不限于此。另外,主装置50可侦测所述用户数据(例如所述OSD数据)的数据大小是否落在多个数据大小范围中的一数据大小范围内,以决定所述多个固定大小缓冲器池中的关联于(例如对应于)所述数据大小范围的一者,其中所述多个固定大小缓冲器池可分别关联于(例如对应于)所述多个数据大小范围。
为便于理解,分别对应于所述第一缓冲大小、所述第二缓冲大小以及所述第三缓冲大小的所述第一缓冲器池、所述第二缓冲器池以及所述第三缓冲器池可作为所述多个固定大小缓冲器池的例子。所述多个数据大小范围可包括一第一数据大小范围、一第二数据大小范围以及一第三数据大小范围,以及所述第一缓冲器池、所述第二缓冲器池以及所述第三缓冲器池可分别关联于(例如对应于)所述第一数据大小范围、所述第二数据大小范围以及所述第三数据大小范围。当所述用户数据(例如所述OSD数据)的数据大小落入所述第一数据大小范围,例如所述用户数据的数据大小可等于所述第一数据大小(例如4KB),主装置50(例如运行着基于管线的存取管理模块53的处理电路52)可选择所述第一缓冲器池作为所述固定大小缓冲器池。当所述用户数据(例如所述OSD数据)的数据大小落入所述第二数据大小范围,例如所述用户数据的数据大小可等于所述第二数据大小(例如12KB),主装置50(例如运行着基于管线的存取管理模块53的处理电路52)可选择所述第二缓冲器池作为所述固定大小缓冲器池。当所述用户数据(例如所述OSD数据)的数据大小落入所述第三数据大小范围,例如所述用户数据的数据大小可等于所述第三数据大小(例如50KB),主装置50(例如运行着基于管线的存取管理模块53的处理电路52)可选择所述第三缓冲器池作为所述固定大小缓冲器池。
在步骤S13中,在以所述管线架构处理所述对象写入指令的期间,存储服务器10利用主装置50自所述固定大小缓冲器池分配一缓冲器(例如在图7~10所示的实施例所述的分配到的缓冲器)以作为所述管线架构中的上述至少一管线的一管线模块,以供为上述至少一管线进行缓冲,其中这个管线模块是所述存储装置层外部的一硬件管线模块,以及上述至少一管线中的多个后续管线模块(例如图3所示的实施例所述的后续模块,诸如所述KV模块以及所述EXT4模块)属于运行于主装置50的处理电路52上的程序模块52P。
为便于理解,分别对应于所述第一缓冲大小、所述第二缓冲大小以及所述第三缓冲大小的所述第一缓冲器池、所述第二缓冲器池以及所述第三缓冲器池可作为所述多个固定大小缓冲池的例子。当所述用户数据(例如所述OSD数据)的数据大小落在所述第一数据大小范围内(例如所述用户数据的数据大小可等于所述第一数据大小(例如4KB)),主装置50(例如运行着基于管线的存取管理模块53的处理电路52)可分配所述第一缓冲器池中的具有所述第一缓冲大小(例如12KB)的缓冲器,诸如所述第一缓冲器,以作为分配到的缓冲器,以供处理所述用户数据(例如所述OSD数据)以及相关的存储元数据与存储日志(例如其OSD元数据及OSD日志)。当所述用户数据(例如所述OSD数据)的数据大小落在所述第二数据大小范围(例如所述用户数据的数据大小可等于所述第二数据大小(例如12KB)),主装置50(例如运行着基于管线的存取管理模块53的处理电路52)可分配所述第二缓冲器池中的具有所述第二缓冲大小(例如24KB)的缓冲器,诸如所述第二缓冲器,以作为分配到的缓冲器,以供处理所述用户数据(例如所述OSD数据)以及相关的存储元数据与存储日志(例如其OSD元数据及OSD日志)。当所述用户数据(例如所述OSD数据)的数据大小落在所述第三数据大小范围(例如所述用户数据的数据大小可等于所述第三数据大小(例如50KB)),主装置50(例如运行着基于管线的存取管理模块53的处理电路52)可分配所述第三缓冲器池中的具有所述第三缓冲大小(例如72KB)的缓冲器,诸如所述第三缓冲器,以作为分配到的缓冲器,以供处理所述用户数据(例如所述OSD数据)以及相关的存储元数据与存储日志的存储元数据以及存储日志(例如其OSD元数据及OSD日志)。
在步骤S14中,在以所述管线架构处理所述对象写入指令的期间,存储服务器10利用主装置50将对应于所述用户数据的元数据(例如对应于所述OSD数据的所述OSD元数据)写入分配到的缓冲器(例如管线快取模块64中的元快取模块64M、子快取模块64A、管线快取模块64_1等),以控制存储服务器10在不产生所述元数据(例如所述OSD元数据)的针对所述多个后续管线模块(例如图3所示的实施例中所述的后续模块,诸如所述KV模块以及所述EXT4模块)的任何写入放大的情况下完成所述请求,其中步骤S14中所述的分配到的缓冲器可代表(步骤S13中所述的)所述固定大小缓冲器池中的所述缓冲器。
在步骤S15中,在以所述管线架构处理所述对象写入指令的期间,存储服务器10利用主装置50自所述多个每线程日志环选择对应于某一线程(例如处理所述请求的线程)的线程拥有环,其中所述多个每线程日志环是分别专用于所述多个线程的专属日志环,且所述多个线程包括这个线程。
在步骤S16中,在以所述管线架构处理所述对象写入指令的期间,存储服务器10利用主装置50对针对所述请求的一交易(诸如图7~10所示的实施例中所述OSD交易)进行编码,以在所述线程拥有环中产生并记录所述交易的所述编码结果以作为对应于所述用户数据的所述日志(例如对应于所述OSD数据的所述OSD日志),其中在所述线程拥有环中的所述编码结果包括指向分配到的缓冲器的地址信息(例如指向分配到的缓冲器的起始处的所述缓冲器地址、分别指向分配到的缓冲器中的所述用户数据及所述OSD元数据的所述两个子缓冲器地址、分别指向分配到的缓冲器中的所述用户数据及所述三个包装后钥值组的所述组子缓冲器地址等),以供参考于分配到的缓冲器中的所述用户数据(例如所述OSD数据)以及所述元数据(例如所述OSD元数据)。例如,主装置50可利用所述线程拥有环作为用来快取所述日志诸如所述OSD日志的一快取模块(例如,管线快取模块64中的另一块取模块、子快取模块64B、管线快取模块64_2等)的至少一部分(例如一部分或全部),以控制存储服务器10在不产生所述日志(例如所述OSD日志)的任何写入放大的情况下完成所述请求,但本发明不限于此。例如,通过参考在分配到的缓冲器中的所述用户数据(例如所述OSD数据)以及所述元数据(例如所述OSD元数据),主装置50可另利用分配到的缓冲器作为用来快取所述日志诸如所述OSD日志的所述快取模块的一部分。
依据本实施例,主装置50(例如运行着基于管线的存取管理模块53的处理电路52,尤其,基于管线的存取管理模块53的所述写入放大减少机制)可准备并且管理上述至少一非挥发性双列直插式存储器模块(例如非挥发性双列直插式存储器模块60或所述多个非挥发性双列直插式存储器模块{60})中的所述多个固定大小缓冲器池,且可准备并且管理上述至少一非挥发性双列直插式存储器模块(例如非挥发性双列直插式存储器模块60或所述多个非挥发性双列直插式存储器模块{60})中的所述多个每线程日志环,其中分配到的缓冲器以及所述线程拥有环可分别位于上述至少一非挥发性双列直插式存储器模块中。另外,在以所述管线架构处理所述对象写入指令的期间,主装置50(例如运行着基于管线的存取管理模块53的处理电路52,尤其,基于管线的存取管理模块53的所述写入放大减少机制)可通过所述网络服务(例如所述传输控制通信协议网络服务)自存储服务器100外部直接将所述用户数据(例如所述OSD数据)接收至分配到的缓冲器。例如,在以所述管线架构处理所述对象写入指令的期间,主装置50可通过所述网络服务自存储服务器100外部直接将所述用户数据(例如所述OSD数据)接收至分配到的缓冲器,而非先接收至处理电路52中的所述随机存取存储器,以供在分配到的缓冲器中和所述元数据(例如所述OSD元数据)一起被结合(combine)为对应于所述用户数据的所述日志(例如对应于所述OSD数据的所述OSD日志)的内容。此外,在以所述管线架构处理所述对象写入指令的期间,主装置50(例如运行着基于管线的存取管理模块53的处理电路52,尤其,基于管线的存取管理模块53的所述写入放大减少机制)于建立针对所述请求的所述交易时可将对应于所述用户数据的所述元数据(例如对应于所述OSD数据的所述OSD元数据)写入分配到的缓冲器,以控制存储服务器10在不产生所述元数据的针对所述多个后续管线模块的任何写入放大的情况下完成所述请求,其中所述交易可至少包括所述元数据(例如所述OSD元数据)的内容,尤其,可还包括所述用户数据(例如所述OSD数据)以及所述放置群组登录。
由于主装置50(例如运行着基于管线的存取管理模块53的处理电路52,尤其,基于管线的存取管理模块53的所述写入放大减少机制)可在分配到的缓冲器中将至少所述用户数据(例如所述OSD数据)与所述元数据(例如所述OSD元数据)结合为对应于所述用户数据的所述日志(例如对应于所述OSD数据的所述OSD日志)的内容,主装置50可自于所述线程拥有环中的所述编码结果取得所述日志(例如所述OSD日志),尤其,可依据所述编码结果中的所述地址信息取回(retrieve)于分配到的缓冲器中的至少所述用户数据(例如所述OSD数据)以及所述元数据(例如所述OSD元数据),以取得所述日志(例如所述OSD日志)的内容,但本发明不限于此。例如,在所述线程拥有环中的所述编码结果可包括指向分配到的缓冲器的所述地址信息,且若有需要可还包括针对管理所述多个每线程日志环的少量的管理信息,因此,在所述线程拥有环中的所述编码结果可相当凝炼(compact)。于是,主装置50可在不造成大量的存储相关信息副本(duplication)(例如所述OSD元数据的副本)的情况下管理所述多个每线程日志环中的被选为这个线程拥有环的某一每线程日志环。类似地,主装置50可在不造成大量的存储相关信息副本(例如其它OSD数据的其它OSD元数据的副本)的情况下管理所述多个每线程日志环中的被选为对应于另一线程的另一线程拥有环的任何其它每线程日志环。因此,主装置50可轻松地管理上述至少一非挥发性双列直插式存储器模块(例如非挥发性双列直插式存储器模块60或所述多个非挥发性双列直插式存储器模块{60})中的所述多个每线程日志环以及所述多个固定大小缓冲器池。例如,主装置50可依据在所述线程拥有环中的所述编码结果中的所述地址信息参考在分配到的缓冲器中的所述用户数据(例如所述OSD数据)以及所述元数据(例如所述OSD元数据)。为简明起见,本实施例中与前述实施例类似的内容在此不重复赘述。
为便于理解,所述方法可用图11所示的工作流程来说明,但本发明不限于此。依据某些实施例,一或多个步骤可于图11所示的工作流程中被新增、删除、或修改。
依据某些实施例,主装置50(例如运行着基于管线的存取管理模块53的处理电路52,尤其,基于管线的存取管理模块53的所述写入放大减少机制)可在分配到的缓冲器中将至少所述用户数据(例如所述OSD数据)、所述元数据(所述OSD元数据)以及所述放置群组登录结合为对应于所述用户数据的所述日志(例如对应于所述OSD数据的所述OSD日志)的内容,且可另从于所述线程拥有环中的所述编码结果取得所述日志(例如所述OSD日志),尤其,可依据所述编码结果中的所述地址信息取回在分配到的缓冲器中的所述用户数据(例如所述OSD数据)、所述元数据(例如所述OSD元数据)以及所述放置群组登录,以作为所述日志(例如所述OSD日志)的内容,但本发明不限于此。例如,在所述线程拥有环中的所述编码结果可包括指向分配到的缓冲器的所述地址信息,且若有需要可还包括针对管理所述多个每线程日志环的少量的管理信息,因此,在所述线程拥有环中的所述编码结果可相当凝炼。于是,主装置50可在不造成大量的存储相关信息副本(例如所述OSD元数据的副本)的情况下管理所述多个每线程日志环中的被选为这个线程拥有环的某一每线程日志环。类似地,主装置50可在不造成大量的存储相关信息副本(例如其它OSD数据的其它OSD元数据的副本)的情况下管理所述多个每线程日志环中的被选为对应于另一线程的另一线程拥有环的任何其它每线程日志环。因此,主装置50可轻松地管理上述至少一非挥发性双列直插式存储器模块(例如非挥发性双列直插式存储器模块60或所述多个非挥发性双列直插式存储器模块{60})中的所述多个每线程日志环以及所述多个固定大小缓冲器池。例如,主装置50可依据在所述线程拥有环中的所述编码结果中的所述地址信息参考在分配到的缓冲器中的所述用户数据(例如所述OSD数据)、所述元数据(例如所述OSD元数据)以及所述放置群组登录。为简明起见,这些实施例中与前述实施例类似的内容在此不重复赘述。
依据某些实施例,所述第一数据大小范围可等于所述第一数据大小(例如4KB),所述第二数据大小范围可等于所述第二数据大小(例如12KB),且所述第三数据大小范围可等于所述第三数据大小(例如50KB),但本发明不限于此。为简明起见,这些实施例中与前述实施例类似的内容在此不重复赘述。
依据某些实施例,所述第一数据大小范围可为达到(例如大于或等于)所述第一数据大小(例如4096字节或4KB)的一数据大小范围,诸如[4096,12287](字节)的数据大小范围;所述第二数据大小范围可为达到(例如大于或等于)所述第二数据大小(例如12288字节或12KB)的一数据大小范围,诸如[12288,51199](字节)的数据大小范围;以及所述第三数据大小范围可为达到(例如大于或等于)所述第三数据大小(例如51200字节或50KB)的一数据大小范围,诸如[51200,102399](字节)的数据大小范围;但本发明不限于此。为简明起见,这些实施例中与前述实施例类似的内容在此不重复赘述。
图12依据本发明一实施例绘示图1所示的管线快取模块64的某些子模块。如图12所示,管线快取模块64可包括子快取模块64A及64B,以分别快取所述存储元数据(例如所述OSD元数据)以及所述存储日志(例如所述OSD日志)。为简明起见,本实施例中与前述实施例类似的内容在此不重复赘述。
图13依据本发明一实施例绘示图1所示的主装置10的某些非挥发性双列直插式存储器模块。如图13所示,主装置10可包括所述NNVDIMM个非挥发性双列直插式存储器模块{60_1,60_2,…,60_NNVDIMM}(在图13中分别标示为“NVDIMM”以求简明)。例如,非挥发性双列直插式存储器模块60_1可包括挥发性存储器62_1以及非挥发性存储器66_1(在图13中分别标示为“VM”及“NVM”以求简明),其可分别用来为处理电路52存储(例如缓冲或快取)信息以及为处理电路52保存在挥发性存储器62_1中的所述信息,并且可耦接至处理电路52以供处理电路52存取;非挥发性双列直插式存储器模块60_2可包括挥发性存储器62_2以及非挥发性存储器66_2(在图13中分别标示为“VM”及“NVM”以求简明),其可分别用来为处理电路52存储(例如缓冲或快取)信息以及为处理电路52保存在挥发性存储器62_2中的所述信息,并且可耦接至处理电路52以供处理电路52存取;而其余可依此类推。类似地,非挥发性双列直插式存储器模块60_NNVDIMM可包括一挥发性存储器62_NNVDIMM以及一非挥发性存储器66_NNVDIMM(在图13中分别标示为“VM”及“NVM”以求简明),其可分别用来为处理电路52存储(例如缓冲或快取)信息以及为处理电路52保存在挥发性存储器62_NNVDIMM中的所述信息,并且可耦接至处理电路52以供处理电路52存取。另外,管线快取模块64_1、64_2、…及64_NNVDIMM(在图13中分别标示为“管线快取”以求简明)可分别被设置在挥发性存储器62_1、62_2、…及62_NNVDIMM中。为简明起见,本实施例中与前述实施例类似的内容在此不重复赘述。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (22)
1.一种用来在一存储服务器中进行基于管线的存取管理的方法,所述方法是应用于所述存储服务器,所述方法的特征在于,包括:
因应将用户数据写入所述存储服务器的一请求,利用所述存储服务器中的一主装置将所述用户数据写入所述存储服务器的一存储装置层并且以所述存储服务器的一管线架构开始处理对应于写入所述用户数据的所述请求的一对象写入指令,其中所述存储服务器包括所述主装置以及所述存储装置层,所述存储装置层包括耦接至所述主装置的至少一存储装置,所述主装置是用来控制所述存储服务器的运作,以及所述至少一存储装置是用来为所述存储服务器存储信息;
在以所述管线架构处理所述对象写入指令的期间,利用所述主装置依据所述用户数据的数据大小自多个固定大小缓冲器池选择一固定大小缓冲器池,其中所述多个固定大小缓冲器池分别对应于多个缓冲大小;
在以所述管线架构处理所述对象写入指令的期间,利用所述主装置自所述固定大小缓冲器池分配一缓冲器以作为所述管线架构中的至少一管线的一管线模块,以供为所述至少一管线进行缓冲,其中所述管线模块是所述存储装置层外部的一硬件管线模块,以及所述至少一管线中的多个后续管线模块属于运行于所述主装置的一处理电路上的多个程序模块;以及
在以所述管线架构处理所述对象写入指令的期间,利用所述主装置将对应于所述用户数据的元数据写入分配到的缓冲器,以控制所述存储服务器在不产生所述元数据的针对所述多个后续管线模块的写入放大的情况下完成所述请求,其中所述分配到的缓冲器代表所述固定大小缓冲器池中的所述缓冲器。
2.如权利要求1所述的方法,其特征在于,所述多个固定大小缓冲器池的任一者包括具有所述多个缓冲大小中的一相同缓冲大小的多个缓冲器,以及所述多个缓冲大小中的任两者彼此相异。
3.如权利要求1所述的方法,其特征在于,还包括:
在以所述管线架构处理所述对象写入指令的期间,利用所述主装置通过一网络服务自所述存储服务器外部直接将所述用户数据接收至所述分配到的缓冲器。
4.如权利要求3所述的方法,其特征在于,利用所述主装置通过所述网络服务自所述存储服务器外部直接将所述用户数据接收至所述分配到的缓冲器还包括:
在以所述管线架构处理所述对象写入指令的期间,利用所述主装置通过所述网络服务自所述存储服务器外部直接将所述用户数据接收至所述分配到的缓冲器,而非先接收至所述处理电路中的一随机存取存储器。
5.如权利要求3所述的方法,其特征在于,利用所述主装置通过所述网络服务自所述存储服务器外部直接将所述用户数据接收至所述分配到的缓冲器还包括:
在以所述管线架构处理所述对象写入指令的期间,利用所述主装置通过所述网络服务自所述存储服务器外部直接将所述用户数据接收至所述分配到的缓冲器,以供于所述分配到的缓冲器中和所述元数据一起被结合为对应于所述用户数据的一日志的内容。
6.如权利要求1所述的方法,其特征在于,利用所述主装置将对应于所述用户数据的所述元数据写入所述分配到的缓冲器还包括:
在以所述管线架构处理所述对象写入指令的期间,利用所述主装置于建立针对所述请求的一交易时将对应于所述用户数据的所述元数据写入所述分配到的缓冲器,以控制所述存储服务器在不产生所述元数据的针对所述多个后续管线模块的写入放大的情况下完成所述请求,其中所述交易至少包括所述元数据的内容。
7.如权利要求6所述的方法,其特征在于,还包括:
在以所述管线架构处理所述对象写入指令的期间,利用所述主装置对所述交易进行编码以在一线程拥有环中产生并记录所述交易的一编码结果以作为对应于所述用户数据的一日志,其中在所述线程拥有环中的所述编码结果包括指向所述分配到的缓冲器的地址信息。
8.如权利要求1所述的方法,其特征在于,还包括:
在以所述管线架构处理所述对象写入指令的期间,利用所述主装置自多个每线程日志环选择对应于一线程的一线程拥有环,其中所述多个每线程日志环是分别专用于多个线程的专属日志环;以及
在以所述管线架构处理所述对象写入指令的期间,利用所述主装置对针对所述请求的一交易进行编码以在所述线程拥有环中产生并记录所述交易的一编码结果以作为对应于所述用户数据的一日志,其中在所述线程拥有环中的所述编码结果包括指向所述分配到的缓冲器的地址信息,以供参考于所述分配到的缓冲器中的所述用户数据以及所述元数据。
9.如权利要求8所述的方法,其特征在于,还包括:
利用所述主装置准备并且管理至少一非挥发性双列直插式存储器模块中的所述多个每线程日志环,其中所述线程拥有环是位于所述至少一非挥发性双列直插式存储器模块中。
10.如权利要求1所述的方法,其特征在于,还包括:
利用所述主装置准备并且管理至少一非挥发性双列直插式存储器模块中的所述多个固定大小缓冲器池,其中所述分配到的缓冲器是位于所述至少一非挥发性双列直插式存储器模块中。
11.一种主装置,其特征在于,包括:
一处理电路,用来控制所述主装置在一存储服务器中进行基于管线的存取管理,其中所述存储服务器包括所述主装置以及一存储装置层,所述存储装置层包括耦接至所述主装置的至少一存储装置,所述主装置是用来控制所述存储服务器的运作,以及所述至少一存储装置是用来为所述存储服务器存储信息,其中:
因应将用户数据写入所述存储服务器的一请求,所述存储服务器中的所述主装置将所述用户数据写入所述存储服务器的所述存储装置层并且以所述存储服务器的一管线架构开始处理对应于写入所述用户数据的所述请求的一对象写入指令;
在以所述管线架构处理所述对象写入指令的期间,所述主装置依据所述用户数据的数据大小自多个固定大小缓冲器池选择一固定大小缓冲器池,其中所述多个固定大小缓冲器池分别对应于多个缓冲大小;
在以所述管线架构处理所述对象写入指令的期间,所述主装置自所述固定大小缓冲器池分配一缓冲器以作为所述管线架构中的至少一管线的一管线模块,以供为所述至少一管线进行缓冲,其中所述管线模块是所述存储装置层外部的一硬件管线模块,以及所述至少一管线中的多个后续管线模块属于运行于所述主装置的所述处理电路上的多个程序模块;以及
在以所述管线架构处理所述对象写入指令的期间,所述主装置将对应于所述用户数据的元数据写入分配到的缓冲器,以控制所述存储服务器在不产生所述元数据的针对所述多个后续管线模块的写入放大的情况下完成所述请求,其中所述分配到的缓冲器代表所述固定大小缓冲器池中的所述缓冲器。
12.如权利要求11所述的主装置,其特征在于,所述多个固定大小缓冲器池的任一者包括具有所述多个缓冲大小中的一相同缓冲大小的多个缓冲器,以及所述多个缓冲大小中的任两者彼此相异。
13.如权利要求11所述的主装置,其特征在于,在以所述管线架构处理所述对象写入指令的期间,所述主装置通过一网络服务自所述存储服务器外部直接将所述用户数据接收至所述分配到的缓冲器。
14.如权利要求13所述的主装置,其特征在于,在以所述管线架构处理所述对象写入指令的期间,所述主装置通过所述网络服务自所述存储服务器外部直接将所述用户数据接收至所述分配到的缓冲器,而非先接收至所述处理电路中的一随机存取存储器。
15.如权利要求13所述的主装置,其特征在于,在以所述管线架构处理所述对象写入指令的期间,所述主装置通过所述网络服务自所述存储服务器外部直接将所述用户数据接收至所述分配到的缓冲器,以供于所述分配到的缓冲器中和所述元数据一起被结合为对应于所述用户数据的一日志的内容。
16.如权利要求11所述的主装置,其特征在于,在以所述管线架构处理所述对象写入指令的期间,所述主装置于建立针对所述请求的一交易时将对应于所述用户数据的所述元数据写入所述分配到的缓冲器,以控制所述存储服务器在不产生所述元数据的针对所述多个后续管线模块的写入放大的情况下完成所述请求,其中所述交易至少包括所述元数据的内容。
17.如权利要求16所述的主装置,其特征在于,在以所述管线架构处理所述对象写入指令的期间,所述主装置对所述交易进行编码以在一线程拥有环中产生并记录所述交易的一编码结果以作为对应于所述用户数据的一日志,其中在所述线程拥有环中的所述编码结果包括指向所述分配到的缓冲器的地址信息。
18.如权利要求11所述的主装置,其特征在于,在以所述管线架构处理所述对象写入指令的期间,所述主装置自多个每线程日志环选择对应于一线程的一线程拥有环,其中所述多个每线程日志环是分别专用于多个线程的专属日志环;以及在以所述管线架构处理所述对象写入指令的期间,所述主装置对针对所述请求的一交易进行编码以在所述线程拥有环中产生并记录所述交易的一编码结果以作为对应于所述用户数据的一日志,其中在所述线程拥有环中的所述编码结果包括指向所述分配到的缓冲器的地址信息,以供参考于所述分配到的缓冲器中的所述用户数据以及所述元数据。
19.如权利要求18所述的主装置,其特征在于,还包括:
至少一非挥发性双列直插式存储器模块,其中所述主装置准备并且管理所述至少一非挥发性双列直插式存储器模块中的所述多个每线程日志环,以及所述线程拥有环是位于所述至少一非挥发性双列直插式存储器模块中。
20.如权利要求11所述的主装置,其特征在于,还包括:
至少一非挥发性双列直插式存储器模块,其中所述主装置准备并且管理所述至少一非挥发性双列直插式存储器模块中的所述多个固定大小缓冲器池,以及所述分配到的缓冲器是位于所述至少一非挥发性双列直插式存储器模块中。
21.如权利要求11所述的主装置,其特征在于,还包括:
一机壳,用来设置所述主装置的多个组件以及所述至少一存储装置,其中所述主装置的所述多个组件包括所述处理电路。
22.一种存储服务器,其特征在于,包括:
一主装置,用来控制所述存储服务器的运作,所述主装置包括:
一处理电路,用来控制所述主装置在所述存储服务器中进行基于管线的存取管理;以及
一存储装置层,包括:
至少一存储装置,耦接至所述主装置,用来为所述存储服务器存储信息;
其中:
因应将用户数据写入所述存储服务器的一请求,所述存储服务器中的所述主装置将所述用户数据写入所述存储服务器的所述存储装置层并且以所述存储服务器的一管线架构开始处理对应于写入所述用户数据的所述请求的一对象写入指令;
在以所述管线架构处理所述对象写入指令的期间,所述主装置依据所述用户数据的数据大小自多个固定大小缓冲器池选择一固定大小缓冲器池,其中所述多个固定大小缓冲器池分别对应于多个缓冲大小;
在以所述管线架构处理所述对象写入指令的期间,所述主装置自所述固定大小缓冲器池分配一缓冲器以作为所述管线架构中的至少一管线的一管线模块,以供为所述至少一管线进行缓冲,其中所述管线模块是所述存储装置层外部的一硬件管线模块,以及所述至少一管线中的多个后续管线模块属于运行于所述主装置的所述处理电路上的多个程序模块;以及
在以所述管线架构处理所述对象写入指令的期间,所述主装置将对应于所述用户数据的元数据写入分配到的缓冲器,以控制所述存储服务器在不产生所述元数据的针对所述多个后续管线模块的写入放大的情况下完成所述请求,其中所述分配到的缓冲器代表所述固定大小缓冲器池中的所述缓冲器。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962794531P | 2019-01-18 | 2019-01-18 | |
US62/794,531 | 2019-01-18 | ||
US16/581,776 US10884933B2 (en) | 2019-01-18 | 2019-09-25 | Method and apparatus for performing pipeline-based accessing management in a storage server |
US16/581,776 | 2019-09-25 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111459400A CN111459400A (zh) | 2020-07-28 |
CN111459400B true CN111459400B (zh) | 2023-03-28 |
Family
ID=71609003
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010000704.4A Active CN111462790B (zh) | 2019-01-18 | 2020-01-02 | 在存储服务器中进行基于管线的存取管理的方法及设备 |
CN202010014242.1A Active CN111459400B (zh) | 2019-01-18 | 2020-01-07 | 在存储服务器中进行基于管线的存取管理的方法及设备 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010000704.4A Active CN111462790B (zh) | 2019-01-18 | 2020-01-02 | 在存储服务器中进行基于管线的存取管理的方法及设备 |
Country Status (3)
Country | Link |
---|---|
US (4) | US10963385B2 (zh) |
CN (2) | CN111462790B (zh) |
TW (4) | TWI792747B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10963385B2 (en) * | 2019-01-18 | 2021-03-30 | Silicon Motion Technology (Hong Kong) Limited | Method and apparatus for performing pipeline-based accessing management in a storage server with aid of caching metadata with cache module which is hardware pipeline module during processing object write command |
CN113176896B (zh) * | 2021-03-19 | 2022-12-13 | 中盈优创资讯科技有限公司 | 一种基于单进单出无锁队列的随机取出对象的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200907699A (en) * | 2007-06-14 | 2009-02-16 | Qualcomm Inc | Resource management in multi-processor system |
CN102810068A (zh) * | 2011-05-30 | 2012-12-05 | 三星电子株式会社 | 存储装置、存储系统和使存储装置虚拟化的方法 |
CN106484316A (zh) * | 2015-09-02 | 2017-03-08 | 慧荣科技股份有限公司 | 用来管理一记忆装置的方法以及记忆装置与控制器 |
CN108292162A (zh) * | 2015-12-11 | 2018-07-17 | 图芯芯片技术有限公司 | 用于多线程访问的软件定义fifo缓冲器 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8443134B2 (en) * | 2006-12-06 | 2013-05-14 | Fusion-Io, Inc. | Apparatus, system, and method for graceful cache device degradation |
US8601222B2 (en) | 2010-05-13 | 2013-12-03 | Fusion-Io, Inc. | Apparatus, system, and method for conditional and atomic storage operations |
US9122579B2 (en) * | 2010-01-06 | 2015-09-01 | Intelligent Intellectual Property Holdings 2 Llc | Apparatus, system, and method for a storage layer |
US20120110259A1 (en) * | 2010-10-27 | 2012-05-03 | Enmotus Inc. | Tiered data storage system with data management and method of operation thereof |
US9047178B2 (en) * | 2010-12-13 | 2015-06-02 | SanDisk Technologies, Inc. | Auto-commit memory synchronization |
KR101876574B1 (ko) * | 2012-02-02 | 2018-07-09 | 에스케이하이닉스 주식회사 | 데이터 입출력 컨트롤러 및 이를 포함하는 시스템 |
US9659019B1 (en) * | 2013-06-27 | 2017-05-23 | EMC IP Holding Company LLC | Burst buffer appliance with storage tiering control functionality based on user specification |
CN110543747B (zh) * | 2014-03-26 | 2023-07-21 | TiVo解决方案有限公司 | 多媒体流水线架构 |
US9430149B2 (en) * | 2014-05-13 | 2016-08-30 | Netapp, Inc. | Pipeline planning for low latency storage system |
EP2966562A1 (en) | 2014-07-09 | 2016-01-13 | Nexenta Systems, Inc. | Method to optimize inline i/o processing in tiered distributed storage systems |
US9875081B2 (en) * | 2015-09-21 | 2018-01-23 | Amazon Technologies, Inc. | Device selection for providing a response |
US10853233B2 (en) * | 2016-10-18 | 2020-12-01 | Toshiba Memory Corporation | Reconstruction of address mapping in a host of a storage system |
US20180329634A1 (en) | 2017-05-10 | 2018-11-15 | Strato Scale Ltd. | Object overlay for storage-area network (san) appliances |
US10114586B1 (en) * | 2017-06-22 | 2018-10-30 | Western Digital Technologies, Inc. | System and method for using host command data buffers as extended memory device volatile memory |
US10474496B1 (en) | 2018-10-17 | 2019-11-12 | EMC IP Holding Company LLC | Dynamic multitasking for distributed storage systems by detecting events for triggering a context switch |
US10963385B2 (en) * | 2019-01-18 | 2021-03-30 | Silicon Motion Technology (Hong Kong) Limited | Method and apparatus for performing pipeline-based accessing management in a storage server with aid of caching metadata with cache module which is hardware pipeline module during processing object write command |
-
2019
- 2019-09-25 US US16/581,769 patent/US10963385B2/en active Active
- 2019-09-25 US US16/581,776 patent/US10884933B2/en active Active
-
2020
- 2020-01-02 TW TW110145777A patent/TWI792747B/zh active
- 2020-01-02 TW TW109100034A patent/TWI755668B/zh active
- 2020-01-02 TW TW109100029A patent/TWI752399B/zh active
- 2020-01-02 TW TW111100765A patent/TWI782847B/zh active
- 2020-01-02 CN CN202010000704.4A patent/CN111462790B/zh active Active
- 2020-01-07 CN CN202010014242.1A patent/CN111459400B/zh active Active
- 2020-11-29 US US17/106,158 patent/US11288197B2/en active Active
-
2021
- 2021-02-04 US US17/167,109 patent/US11416403B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200907699A (en) * | 2007-06-14 | 2009-02-16 | Qualcomm Inc | Resource management in multi-processor system |
CN102810068A (zh) * | 2011-05-30 | 2012-12-05 | 三星电子株式会社 | 存储装置、存储系统和使存储装置虚拟化的方法 |
CN106484316A (zh) * | 2015-09-02 | 2017-03-08 | 慧荣科技股份有限公司 | 用来管理一记忆装置的方法以及记忆装置与控制器 |
CN108292162A (zh) * | 2015-12-11 | 2018-07-17 | 图芯芯片技术有限公司 | 用于多线程访问的软件定义fifo缓冲器 |
Also Published As
Publication number | Publication date |
---|---|
US11288197B2 (en) | 2022-03-29 |
US20200233805A1 (en) | 2020-07-23 |
CN111462790A (zh) | 2020-07-28 |
US20200233609A1 (en) | 2020-07-23 |
US20210081321A1 (en) | 2021-03-18 |
CN111459400A (zh) | 2020-07-28 |
CN111462790B (zh) | 2023-03-28 |
US20210157729A1 (en) | 2021-05-27 |
US10884933B2 (en) | 2021-01-05 |
TWI755668B (zh) | 2022-02-21 |
US11416403B2 (en) | 2022-08-16 |
TW202215236A (zh) | 2022-04-16 |
TWI782847B (zh) | 2022-11-01 |
TWI792747B (zh) | 2023-02-11 |
TW202036278A (zh) | 2020-10-01 |
TWI752399B (zh) | 2022-01-11 |
US10963385B2 (en) | 2021-03-30 |
TW202028986A (zh) | 2020-08-01 |
TW202213102A (zh) | 2022-04-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11467955B2 (en) | Memory system and method for controlling nonvolatile memory | |
CN109643275B (zh) | 存储级存储器的磨损均衡设备和方法 | |
US10248322B2 (en) | Memory system | |
JP7353934B2 (ja) | メモリシステムおよび制御方法 | |
US20190317894A1 (en) | Address Map Caching for a Memory System | |
US12013762B2 (en) | Meta data protection against unexpected power loss in a memory system | |
US11947839B2 (en) | Storage device, system, and method for customizable metadata | |
CN111459400B (zh) | 在存储服务器中进行基于管线的存取管理的方法及设备 | |
US20240020014A1 (en) | Method for Writing Data to Solid-State Drive | |
US10817435B1 (en) | Queue-based wear leveling of memory components | |
CN113168289B (zh) | 使用逐出和恢复管理存储装置中的冗余上下文 | |
US11797183B1 (en) | Host assisted application grouping for efficient utilization of device resources | |
US11893269B2 (en) | Apparatus and method for improving read performance in a system | |
US20240184783A1 (en) | Host System Failover via Data Storage Device Configured to Provide Memory Services | |
US20240184694A1 (en) | Data Storage Device with Storage Services for Database Records and Memory Services for Tracked Changes of Database Records | |
EP4220414A1 (en) | Storage controller managing different types of blocks, operating method thereof, and operating method of storage device including the same | |
CN111190543A (zh) | 一种线程间共享nvdimm存储资源的存储方法及系统 | |
CN117501247A (zh) | 一种数据存储方法及相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |