CN111433732B - 存储设备以及由存储设备执行的计算机实现的方法 - Google Patents
存储设备以及由存储设备执行的计算机实现的方法 Download PDFInfo
- Publication number
- CN111433732B CN111433732B CN201980005982.4A CN201980005982A CN111433732B CN 111433732 B CN111433732 B CN 111433732B CN 201980005982 A CN201980005982 A CN 201980005982A CN 111433732 B CN111433732 B CN 111433732B
- Authority
- CN
- China
- Prior art keywords
- host
- storage device
- memory
- data
- service
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- 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
- 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/06—Address interface arrangements, e.g. address buffers
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
- G11C7/1009—Data masking during input/output
Abstract
示例性多设备存储系统、存储设备和方法在对等存储设备上提供托管服务。存储设备包括本地存储器资源,诸如操作存储器、可远程寻址的存储器或逻辑映射存储器,以及计算资源,诸如处理器或编码引擎。每个存储设备被配置为通过互连构造与多个对等存储设备进行通信。存储设备从通过互连构造接收的服务主机请求中识别所请求的托管服务。存储设备存储多个托管服务,该多个托管服务将使得能够访问本地存储器资源和本地计算资源以用于多个对等存储设备的数据管理操作。
Description
技术领域
本公开整体涉及数据存储系统,并且在更具体的示例中,涉及解聚的多设备数据存储系统。
背景技术
多设备存储系统利用多个分立的存储设备,通常为磁盘驱动器(固态驱动器、硬盘驱动器、混合驱动器、磁带驱动器等)用于存储大量数据。这些多设备存储系统通常被布置成由公共通信架构互连的驱动器阵列,并且在许多情况下,由存储控制器、独立磁盘冗余阵列(RAID)控制器或通用控制器控制,以用于协调跨驱动器阵列的存储和系统活动。存储在阵列中的数据可根据定义的RAID级别、RAID模式的组合或用于提供所需数据冗余、性能和容量利用的其他配置来存储。一般来讲,这些数据存储配置可涉及冗余副本(镜像)、数据剥离和/或奇偶校验(计算和存储)的某种组合,并且可结合其他数据管理、纠错和数据恢复过程,有时特定于所使用的磁盘驱动器的类型(例如,固态驱动器与硬盘驱动器)。
在存储行业中,部署解聚存储存在新兴趋势。解聚存储经由解耦计算和存储节点寿命周期并允许不同的节点或子系统具有不同的计算与存储比率而带来显著的成本节省。此外,解聚存储允许显著灵活地将计算作业从一个物理服务器迁移到另一个物理服务器,以用于可用性和负载平衡目的。
解聚存储已使用多种系统架构来实现,包括被动的仅磁盘簇(JBOD)架构、传统全闪存架构(AFA)和以太网附接闪存簇(EBOF)解聚存储,其通常使用来自Mellanox或Kazan的专用芯片将来自外部NVMe-OF(构造上的非易失性存储器Express)协议的命令转换为内部NVMe(NVM Express)协议。这些架构可能无法最好地利用各个存储设备(诸如此类系统中的固态驱动器(SSD))的I/O带宽、处理和缓冲器存储器。此外,这些架构中的一些将大量计算资源放置在集中式存储控制器中,这可能随着SSD的数量和尺寸增加而导致挑战缩放解决方案。
因此,仍然需要解聚的存储架构,其跨存储设备诸如SSD分配存储器和计算资源,并且在面对驱动故障和/或系统功率中断的情况下实现可靠的数据管理服务。
发明内容
本发明描述了对等存储设备上的托管服务的各方面,特别是多设备存储系统中的分布式数据管理服务。在创新方面,存储设备包括处理器、操作存储器、可远程寻址的存储器和构造接口,该构造接口被配置为在构造接口和多个对等存储设备之间通过互连构造与多个对等存储设备进行通信。服务请求处理程序存储在操作存储器中,并且能够由处理器执行以从通过构造接口接收的服务主机请求中识别所请求的托管服务。多个托管服务存储在操作存储器中,并且能够由处理器执行以访问本地存储器资源和本地计算资源以用于多个对等存储设备的数据管理操作,包括所请求的托管服务。
在各种实施方案中,可远程寻址的存储器被配置为在可远程寻址的存储器中分配传输缓冲器空间,并且所请求的托管服务包括传输缓冲器空间和多个对等存储设备中的至少一个之间的数据传输。存储设备还可包括擦除编码引擎,并且所请求的托管服务还可包括使用擦除编码引擎以擦除用于数据传输的代码数据的擦除编码操作。可远程寻址的存储器可被配置为在可远程寻址的存储器中分配奇偶校验缓冲器空间。所请求的托管服务还可包括从奇偶校验缓冲器空间读取奇偶校验缓冲器数据,对从奇偶校验缓冲器空间读取的奇偶校验缓冲器数据进行擦除编码,以及将擦除编码的奇偶校验缓冲器数据写回到奇偶校验缓冲器空间。
在一些实施方案中,存储设备还包括逻辑映射存储器,该逻辑映射存储器包括用于存储设备的存储设备介质逻辑映射信息和用于多个对等存储设备中的至少一个对等存储设备的主机逻辑映射信息。多个托管服务可以包括使用至少一个主机逻辑块地址从逻辑映射存储器识别主机逻辑映射信息,并且将所识别的主机逻辑映射信息发送到请求者。所请求的主机服务还可以包括基于多个对等存储设备中的至少一个的改变来更新主机逻辑映射信息。所请求主机服务的请求者可以是多个对等存储设备中的至少一个。可远程寻址的存储器可被配置用于在可远程寻址的存储器中分配日志缓冲器空间。多个托管服务可以包括将所请求的更新记录到日志缓冲器空间中的主机逻辑映射信息。所请求的托管服务可以包括在初始化事件之后处理来自日志缓冲器空间的所请求的更新。主机逻辑映射信息可以包括存储在多个对等存储设备中的至少一个中的主机逻辑映射信息的主机逻辑映射奇偶校验数据。所请求的托管服务可以包括从主机逻辑映射奇偶校验数据重新创建主机逻辑映射信息。所请求的托管服务可以包括:接收主机逻辑块地址的验证列表;识别对应于主机逻辑块地址的验证列表的主机逻辑映射信息;以及基于所识别的主机逻辑映射信息生成用于垃圾收集的主机逻辑块地址的筛选列表。接收主机逻辑块地址的验证列表可以包括垃圾收集模块将验证列表写入可远程寻址的存储器中。生成主机逻辑块地址的筛选列表可以包括将筛选列表写入可远程寻址的存储器中以供垃圾收集模块访问。
在一些实施方案中,本地存储器资源选自操作存储器、可远程寻址的存储器或逻辑映射存储器。本地计算资源可选自处理器或擦除编码引擎。
在另一个创新方面,用于由存储设备执行的计算机实现的方法为对等存储设备提供分布式托管服务。管理可远程寻址的存储器,并且通过互连构造与多个对等存储设备进行通信。存储多个托管服务以用于访问本地存储器资源和本地计算资源,以用于所述多个对等存储设备的数据管理操作。从服务请求者接收服务主机请求。从服务主机请求中识别所请求的托管服务。所请求的托管服务使用可远程寻址的存储器执行。响应于所请求的主机服务完成,状态消息被返回到服务请求者。
在各种实施方案中,传输缓冲器空间被分配在可远程寻址的存储器中,并且数据在传输缓冲器空间与多个对等存储设备中的至少一个之间传输。奇偶校验缓冲器空间可以分配在可远程寻址的存储器中,并且可以从奇偶校验缓冲器空间读取奇偶校验缓冲器数据。从奇偶校验缓冲器空间读取的奇偶校验缓冲器数据可以被擦除编码,并且擦除编码的奇偶校验缓冲器数据可以被写回到奇偶校验缓冲器空间。
在一些实施方案中,该方法还包括管理逻辑映射存储器,该逻辑映射存储器包括用于存储设备中的至少一个存储介质的存储设备介质逻辑映射信息和用于多个对等存储设备中的至少一个对等存储设备的主机逻辑映射信息。可使用至少一个主机逻辑块地址从逻辑映射存储器识别主机逻辑映射信息,并且所识别的主机逻辑映射信息可用于执行所请求的托管服务。在执行所请求的托管服务时,可以基于多个对等存储设备中的至少一个中的改变来更新主机逻辑映射信息。日志缓冲器空间可被分配在可远程寻址的存储器中,并且主机逻辑映射信息的所请求的更新可被记录在日志缓冲器空间中。可在响应于服务主机请求的初始化事件之后从日志缓冲器空间处理所请求的更新。主机逻辑映射奇偶校验数据可以存储在逻辑映射存储器中,用于存储在多个对等存储设备中的至少一个中的主机逻辑映射信息。可以响应于服务主机请求从主机逻辑映射奇偶校验数据重新创建主机逻辑映射信息。
在又一个创新方面,存储设备为对等存储设备提供托管服务。存储设备包括至少一个存储介质和可远程寻址的缓冲器存储器。提供了用于通过互连构造与多个对等存储设备进行通信的装置。提供了用于存储多个托管服务的装置,该多个托管服务用于访问用于多个对等存储设备的数据管理操作的本地存储器资源和本地计算资源。提供了用于从服务请求者接收服务主机请求的装置。提供了用于从服务主机请求中识别所请求的托管服务的装置。提供了用于使用可远程寻址的缓冲器存储器执行所请求的托管服务的装置。
在又一个创新方面,存储设备包括至少一个存储介质和构造接口,该构造接口被配置为在构造接口和多个对等存储设备之间通过互连构造与多个对等存储设备进行通信。逻辑映射存储器包括存储设备介质逻辑映射信息和主机逻辑映射信息。存储设备介质逻辑映射信息用于至少一个存储介质,并且被配置在具有等于至少一个存储介质的页面编程尺寸的介质块尺寸的连续逻辑块中。主机逻辑映射信息用于多个对等存储设备中的至少一个,并且被配置在具有小于介质块尺寸的主机块尺寸的主机逻辑块中。服务请求处理程序被配置为从通过构造接口接收的服务主机请求中识别所请求的托管服务。多个托管服务被配置为访问用于多个对等存储设备的数据操作的逻辑映射存储器,并且服务主机请求发起多个托管服务中的至少一个。
在一些实施方案中,介质管理器被配置为管理用于至少一个存储介质的闪存转换层。介质管理器在至少一个存储介质中定义具有介质块尺寸的连续逻辑块。
各种实施方案有利地应用解聚的多设备存储系统的教导内容,以改进此类计算机系统的功能。各种实施方案包括克服或至少减少上面讨论的先前存储系统中的问题的操作,并且因此比用于一些应用的其他计算机数据存储架构更可扩展且更可靠。即,本文所公开的各种实施方案包括硬件和/或软件,其具有基于跨多个对等存储设备的托管服务来改进分布式数据管理操作的可扩展性和可靠性的功能。因此,本文所公开的实施方案为存储系统提供了各种改进。
应当理解,本公开中使用的语言主要是出于可读性和指导目的而选择的,并不限制本文公开的主题的范围。
附图说明
图1示意性地示出了多设备存储系统的示例。
图2示意性地示出了图1的多设备存储系统的存储虚拟化控制器的示例。
图3示意性地示出了图1的多设备存储系统的存储设备的示例。
图4示意性地示出了解聚的存储架构的示例,包括图1的多设备存储系统的示例配置。
图5示出了用于使用存储设备处置服务主机请求的方法的示例。
图6示出了用于在存储设备中提供传输缓冲器服务的方法的示例。
图7示出了用于在存储设备中提供奇偶校验缓冲器服务的方法的示例。
图8示出了用于在存储设备中提供逻辑图查找服务的方法的示例。
图9示出了用于更新存储设备中的逻辑映射信息的方法的示例。
图10示出了用于在存储设备中重新创建主机逻辑映射信息的方法的示例。
图11示出了用于验证存储设备中的逻辑映射信息的方法的示例。
具体实施方式
图1示出了示例多设备数据存储系统100的实施方案。虽然示出了一些示例性特征部,但是为了简洁起见且为了不模糊本文公开的示例性实施方案的相关方面,并未示出各种其他特征部。为此,作为非限制性示例,数据存储系统100包括一个或多个数据存储设备120(有时也称为信息存储设备、存储设备或存储器设备)。
在一些实施方案中,数据存储设备120为固态驱动器(SSD)或包括SSD。每个数据存储设备120.1-120.n可包括基于计算资源(处理器和存储器)的非易失性存储器(NVM)控制器130和用于数据存储的多个NVM设备140(例如,一个或多个NVM设备,诸如一个或多个闪存存储器设备)。在一些实施方案中,一个或多个数据存储设备中的相应数据存储设备120包括一个或多个NVM控制器,诸如闪存控制器或信道控制器(例如,用于在多个存储器通道中具有NVM设备的存储设备)。
在一些实施方案中,相应的数据存储设备120可包括单个NVM设备140,而在其他实施方案中,相应的数据存储设备120包括多个NVM设备。在一些实施方案中,NVM设备包括NAND型闪存存储器或NOR型闪存存储器。在一些实施方案中,数据存储设备120包括一个或多个硬盘驱动器(HDD)。在一些实施方案中,数据存储设备120可包括闪存存储器设备,该闪存存储器设备继而包括一个或多个闪存存储器管芯、一个或多个闪存存储器封装、一个或多个闪存存储器通道等。然而,在一些实施方案中,数据存储设备120中的一个或多个可具有其他类型的一种或多种非易失性数据存储介质(例如,相变随机存取存储器(PCRAM)、电阻式随机存取存储器(ReRAM)、自旋转移扭矩磁随机存取存储器(STT-RAM)、磁阻式随机存取存储器(MRAM)等)。
存储虚拟化控制器(SVC)110通过互连构造114耦接到数据存储设备120.1-120.n。然而,在一些实施方案中,SVC 110可托管为数据存储系统100的部件和/或另一部件的子系统。例如,在一些实施方案中,SVC 110的一些或所有功能可由在数据存储设备120.1-120.n、互连构造114或接口112中的至少一个中的一个或多个计算资源上执行的软件来实现。SVC 110有时被称为控制器系统、主控制器系统、非易失性快速存储器(NVMe)控制器、垃圾收集(GC)前导器、存储控制器或存储虚拟化控制器。在一些实施方案中,与特定存储设备(例如,120.1)相关联的NVM控制器130.1充当数据存储系统100中的其他存储设备(例如,120-2、120-3和l 20.n)的SVC 110。在一些实施方案中,SVC 110是主机102的部件和/或子系统(如下所述)。
在一些实施方案中,主机102通过网络构造104上的接口112耦接到数据存储系统100。在一些实施方案中,多个主机102(图1中仅示出了其中一个)通过接口112耦接到数据存储系统100,该接口可以是存储网络接口或能够支持与多个主机102进行通信的其他接口。网络构造104可包括可以合适的方式耦接以用于传输数据的有线和/或无线网络(例如,任何数量和/或配置的公共和/或专用计算机网络)。例如,网络构造104可包括常规数据通信网络的任何装置,诸如局域网(LAN)、广域网(WAN)、电话网络诸如公共交换电话网络(PSTN)、内联网、互联网或任何其他合适的通信网络或通信网络的组合。
主机102或具有多个主机的系统中的相应主机可以是任何合适的计算机设备,诸如计算机、膝上型计算机、平板设备、上网本、互联网信息亭、个人数字助理、移动电话、智能电话、游戏设备、计算机服务器或任何其他计算设备。有时将主机102称为主机系统、客户端或客户端系统。在一些实施方案中,主机102是服务器系统,诸如数据中心中的服务器系统。在一些实施方案中,一个或多个主机102是不同于SVC 110并且不同于多个存储设备120的一个或多个主机设备;但是在一些其他实施方案中,一个或多个主机102包括存储设备120中的一个,该存储设备已被配置为执行数据处理操作并发送数据存储命令以访问存储在一个或多个存储设备120中的数据。在一些其他实施方案中,一个或多个主机102被配置为存储和访问多个存储设备120中的数据。
在一些实施方案中,数据存储系统100包括一个或多个处理器、一种或多种类型的存储器、显示器和/或其他用户界面部件诸如键盘、触摸屏显示器、鼠标、触控轨迹板,和/或任何数量的添加功能的补充设备。在一些实施方案中,数据存储系统100不具有显示器和其他用户界面部件。
如果包括在相应的存储设备120中,则一个或多个NVM控制器130通过互连构造114与SVC 110耦接。有时将互连构造114称为数据连接件,但通常除了数据之外还传输命令,并且除了传输将被存储在NVM设备140中的数据值和从NVM设备140读取的数据值外,还可选地传输元数据、纠错信息和/或其他信息。
然而,在一些实施方案中,SVC 110、一个或多个NVM控制器130和NVM设备140被包括在与其部件相同的设备(即,集成设备)中。此外,在一些实施方案中,存储设备120(例如,包括SVC 110、一个或多个NVM控制器130和NVM设备140)中的一个或多个嵌入在主机设备(例如,主机102)中,诸如移动设备、平板计算机、其他计算机或计算机控制的设备,并且本文所述的方法至少部分地由嵌入式存储控制器执行。在一些实施方案中,NVM控制器130被配置为控制一个或多个NVM设备140并结合SVC 110提供分布式存储控制器功能。
在一些实施方案中,存储设备120包括多个NVM设备140,诸如闪存存储器设备,并且任选地包括更少的NVM控制器130。以另一种方式来看,在一些实施方案中,存储设备120包括多个存储器通道,存储器通道中的每个具有NVM控制器130和耦接到NVM控制器130的一组NVM设备140。然而,在一些实施方案中,两个或更多个存储器通道共享NVM控制器130。在任一个示例中,每个存储器通道具有其自身的一组不同的NVM设备140。在非限制性示例中,典型存储设备中的存储器通道的数量为8、16或32。在另一个非限制性示例中,每个存储器通道的NVM设备140的数量通常为8、16、32或64。此外,在一些实施方案中,一个存储器通道中的NVM设备140的数量与存储器通道中的另一个存储器通道中的NVM设备的数量不同。
在一些实施方案中,NVM控制器130中的每个NVM控制器包括被配置为在一个或多个程序中(例如,在NVM控制器130中)执行指令的一个或多个处理单元(有时也称为CPU或处理器或微处理器或微控制器)。在一些实施方案中,一个或多个处理器由在NVM控制器130的功能内并在一些情况下超出其功能的一个或多个部件共享。如上所述,NVM设备140通过连接件耦接到NVM控制器130,该连接件除了数据之外通常还传输命令,并且除了传输要存储在NVM设备140中的数据值和从NVM设备140读取的数据值之外,还可选地传输元数据、纠错信息和/或其他信息。NVM设备140可包括任何数量(即,一个或多个)的存储器设备,该存储器设备包括但不限于非易失性半导体存储器设备,诸如一个或多个闪存存储器设备。
一个或多个闪存存储器设备(例如,NVM设备140)可被配置用于适用于诸如云计算的应用程序的企业存储装置、用于数据库应用、主存储装置和/或辅助存储装置,或者用于将已存储的(或将存储的)数据高速缓存到辅助存储装置(诸如硬盘驱动器)中。此外和/或另选地,一个或多个闪存存储器设备(例如,NVM设备140)也可被配置用于相对小规模的应用程序诸如个人闪存驱动器,或者个人计算机、膝上型计算机和平板计算机的硬盘替换品。虽然此处使用闪存存储器设备和闪存控制器作为示例,但在一些实施方案中,存储设备120包括其他非易失性存储器设备和对应的非易失性存储控制器。
在一些实施方案中,NVM设备140被划分为多个可寻址和可单独选择的块,有时称为擦除块。在一些实施方案中,可单独选择的块是闪存存储器设备中尺寸最小的可擦除单元。换句话讲,每个块包含可被同时擦除(即,在单个擦除操作中)的最小数量的存储器单元。每个块通常进一步划分为多个页面和/或字线,其中每个页面或字线通常是块中最小的可单独存取(可读)部分的实例。然而,在一些实施方案(例如,使用某些类型的闪存存储器)中,数据集的最小可单独访问单元是扇区或码字,该扇区或码字是页面的子单元。也就是说,一个块包括多个页面,每个页面包含多个扇区或码字,并且每个扇区或码字是用于从闪存存储器设备读取数据的最小数据单元。
图2是示出根据一些实施方案的示例存储虚拟化控制器(SVC)110的框图,如图1所示。主机可通过向SVC 110发送读取/写入命令来访问存储系统中的存储。在一些实施方案中,SVC 110可仅为控制路径部件而不在数据路径中。与读取/写入命令相关联的数据在存储设备和主机系统之间传输,或者从存储设备传输到存储设备而不通过SVC 110。例如,SVC110可(直接或间接地)与主机、存储设备、互连构造、网络接口等中的远程数据管理系统(RDMS)引擎通信,以建立从一个部件到另一个部件的数据传输,而无需通过SVC 110路由。
在一些实施方案中,SVC 110控制主机和存储设备之间的数据流。SVC 110可从主机接收命令,调用存储设备分布式服务(例如,主机闪存转换层(FTL)服务),从存储设备接收状态,并向主机提供状态。在一些实施方案中,SVC 110可包括硬件自动化以处置特定性能情况。SVC 110可跨存储阵列中的所有存储设备实现存储设备资源的存储系统级管理,诸如介质存储空间的分配、分配服务以及相关的处理器和存储器资源,包括存储设备缓冲器存储器。例如,SVC 110可管理存储设备缓冲器存储器并为读取/写入、垃圾收集操作、降级操作和重建操作分配它们。在一些实施方案中,SVC 110可通过调用由一个或多个存储设备执行的分布式和/或卸载的服务(诸如主机FTL服务)来管理存储系统级操作。
SVC 110通常包括一个或多个处理单元(CPU 202)(在本文中有时称为CPU、处理器或硬件处理器,并且有时使用微处理器、微控制器等来实现,以用于执行存储在存储器210中并从而执行处理操作的模块、程序和/或指令)、存储器210(有时称为存储虚拟化控制器存储器)以及用于使这些部件互连的一条或多条通信总线200。一条或多条通信总线200可选地包括将系统部件互连并且控制其间通信的电路(有时称为芯片组)。
SVC 110可通过主机接口206经由网络构造(例如,图1中的网络构造104)耦接到一个或多个主机(例如,图1中的主机102),并且通过存储设备接口208经由互连构造(例如,图1中的互连构造114)通过互连构造接口204耦接到存储设备(例如,图1中的存储设备120)。在一些实施方案中,来自SVC 110的所有通信可经由互连构造接口204穿过互连构造,包括主机通信和存储设备通信,并且主机通信可通过连接到互连构造的存储网络接口(例如,图1中的接口112)路由。
存储器210可包括高速随机存取存储器诸如DRAM、SRAM、双倍数据速率(DDR)RAM或其他随机存取固态存储器设备,并且可以包括非易失性存储器诸如一个或多个磁盘存储设备、光盘存储设备、闪存存储器设备或其他非易失性固态存储设备。存储器210可以可选地包括位置远离一个或多个CPU 202的一个或多个存储设备。存储器210,或另选地存储器210内的一个或多个非易失性存储器设备,包括非暂态计算机可读存储介质。
在一些实施方案中,存储器210或存储器210的非暂态计算机可读存储介质存储以下程序、模块和数据结构,或其子集或超集:
·用于接收和管理来自其他系统或子系统的请求,诸如来自主机的读取/写入请求的请求处理程序212;
·用于管理阵列中的存储设备之间的分布式和/或卸载的服务的位置的服务映射模块214;
·用于管理阵列中的存储设备中的缓冲器资源的设备缓冲器管理器216;
·用于管理主机与存储设备之间的读取操作的数据读取/写入模块218;
·用于管理跨阵列中的存储设备的RAID剥离的RAID剥离模块220;
·用于管理跨阵列中的存储设备的垃圾收集的垃圾收集模块222;
·用于在电源故障或其他中断之后初始化或重新启动阵列中的一个或多个存储设备的设备初始化模块224;
·用于管理包括分布式服务和存储器资源的故障存储设备的重建的设备重建模块226;和
·附加服务模块228。
SVC 110中的以上识别的元件中的每个可以存储在先前提到的存储器设备(它们一起形成存储器2006)中的一个或多个中,并且对应于用于执行上述功能的指令集。以上识别的模块或程序(即,指令集)不需要实现为单独的软件程序、过程或模块,并且因此这些模块的各种子集可以在各种实施方案中组合或以其他方式重新布置。在一些实施方案中,存储器210可存储以上识别的模块和数据结构的子集。此外,存储器210可存储以上未描述的附加的模块和数据结构。在一些实施方案中,存储器210或存储器210的非暂态计算机可读存储介质中存储的程序、模块和数据结构提供指令以用于实现下面描述的方法中的一些。在一些实施方案中,这些模块中的一些或全部可利用包括模块功能的一部分或全部的专用硬件电路来实现。
在一些实施方案中,请求处理程序212可被配置为经由主机接口206从主机(例如,图1中的主机102)接收命令,诸如主机读取命令和主机写入命令。在一些实施方案中,请求处理程序212可经由请求处理程序212接收其他命令,诸如数据擦除命令和/或与垃圾收集、数据恢复和其他功能相关的命令。请求处理程序212可从除主机之外的系统或子系统诸如阵列中的存储设备中的一个或多个接收命令。在一些实施方案中,请求处理程序212可从托管在其他系统或子系统(包括SVC 110的其他部件)中的数据管理服务接收与数据管理相关的请求。例如,垃圾收集模块222、设备初始化模块224和/或设备重建模块226可以基于用户输入、系统事件、预定维护和/或其他触发来发起数据管理操作。这些模块可向请求处理程序212发送请求以访问一个或多个存储设备120上的托管服务。
在一些实施方案中,请求处理程序212可从主机接收读取命令。例如,读取命令可以识别存储在数据存储系统100的存储设备120中的主机逻辑块地址(主机LBA)的范围,主机请求将数据从主机逻辑块地址(主机LBA)传输到主机数据位置,诸如主机102中的读取缓冲器。请求处理程序212可从主机接收写入命令。例如,写入命令可以识别写入数据位置、要写入的数据量以及应写入数据的主机LBA的范围。在一些实施方案中,可接收对应于与介质编程尺寸(诸如4KB页面)对准的定义页面尺寸的写入命令。
在一些实施方案中,服务映射模块214可包括用于识别存储设备120中的一个或多个卸载或分布式服务的一个或多个表或功能。例如,服务映射模块214可识别托管数据管理操作的存储设备120中的一个或多个,该数据管理操作诸如主机FTL查找、主机FTL更新、奇偶校验主机FTL更新、主机FTL初始化、主机FTL重建、缓冲器到缓冲器复制、缓冲器到缓冲器编码、存储设备日志访问和/或垃圾收集支持,如LBA日志筛选或数据移动。在一些实施方案中,服务映射模块214可包括存储设备标识符(I D)映射214.1(也称为设备虚拟化表),以识别哪些存储设备120托管用于给定命令或数据管理功能的所需服务。例如,响应于接收到主机读取/写入请求,SVC 110可能需要使用主机FTL查找操作访问主机LBA到存储设备存储位置映射信息。
在一些实施方案中,SVC 110可不包含任何主机LBA到存储设备存储位置映射信息,但服务映射模块214可提供用于确定存储设备120中的哪一个存储设备执行的功能。例如,用于存储阵列的主机FTL映射信息可跨多个存储设备分布,并且服务映射模块214可访问存储设备I D映射214.1以识别哪个存储设备120托管主机FTL映射信息的相关部分。在一些实施方案中,服务映射模块214可使用固定函数或计算诸如模数学来确定具有与正被处理的命令相关的服务的存储设备的存储设备I D。SVC 110可使用存储设备I D来与存储设备120中的卸载或分布式服务通信并控制存储设备120中的卸载或分布式服务。包含相关主机FTL服务并且由存储设备I D识别的存储设备可被称为针对任何给定服务请求的服务主机或目标服务主机存储设备。
在一些实施方案中,设备缓冲器管理器216可使得SVC 110能够跨存储设备120利用持久性存储器诸如NVM控制器存储器缓冲器来管理主机数据传输和其他数据管理功能。例如,存储设备120中的每个存储设备可包括可通过远程直接存储器访问(RDMA)寻址的多个存储器设备,并且设备缓冲器管理器216可为主机数据传输和其他数据管理功能分配缓冲器空间。
在一些实施方案中,设备缓冲器管理器216可包括用于管理存储设备120之间的缓冲器使用的缓冲器分配表216.1。例如,当处理主机写入请求时,缓冲器管理器216提供用于基于缓冲器分配表216.1中的当前和/或先前使用数据来确定主机数据如何跨不同存储设备120中的缓冲器序列化的逻辑。由缓冲器管理器216使用的算法可实现RAI D配置、负载平衡、存储容量的分配、输入/输出(I/O)效率和对顺序缓冲器使用的数据可靠性考虑。在一些实施方案中,缓冲器管理器216还可用于垃圾收集、数据重建和/或其他功能的缓冲器分配。
设备缓冲器管理器216可识别存储设备120中的缓冲器位置,并且向一个或多个RDMA引擎发出缓冲器访问命令以发起数据传输。在一些实施方案中,设备缓冲器管理器216诸如在缓冲器分配表216.1中保持跨存储设备120的缓冲器分配的日志,并且向存储设备120发出关于哪些缓冲器被分配给特定主机FTL服务以及哪些缓冲器可用于存储设备120以供本地使用的状态通知。在一些实施方案中,设备缓冲器管理器216可向存储设备120发出缓冲器命令,以管理SVC 110的缓冲器使用、数据管理操作、分布式服务和/或对等存储设备的使用。
在一些实施方案中,设备缓冲器管理器216可为一系列较小的主机读取或主机写入(例如,4K块写入)分配缓冲器存储器,以便填充对应于目的地存储设备的优选粒度的缓冲器空间,诸如96K或192K多平面页面。例如,所分配的主机写入可被序列化或以其他方式分配,直到缓冲器空间已满,并然后从缓冲器空间写入一个或多个存储介质。在一些实施方案中,设备缓冲器管理器216可包括缓冲器刷新命令216.2。缓冲器刷新命令216.2可被发送到存储设备120中的一个或多个,以使目标存储设备将一个或多个缓冲器的内容写入一个或多个介质并清除那些缓冲器以供后续使用。
在一些实施方案中,数据读取/写入模块218可以执行一系列动作以协调存储设备120和主机102之间主机读取命令或主机写入命令的执行。当请求处理程序212接收到主机读取或写入命令时,其可以启动数据读取/写入模块218。数据读取/写入模块218可以使用服务映射模块214以基于主机读取/写入命令中识别的主机LBA来识别存储设备I D。例如,数据读取/写入模块可以使用FTL查找命令来访问由目标服务主机存储设备托管的FTL查找操作。SVC 110可接收来自目标主机存储设备的响应,该响应识别目的地存储设备的存储设备I D和存储设备存储位置以及主机读取/写入命令中的请求数据。
数据读取/写入模块218可以使用设备缓冲器管理器216来请求一个或多个目的地存储设备中的缓冲器分配,并且使用一个或多个读取或写入命令来发起目的地存储设备的一个或多个介质、分配的缓冲器空间和主机数据位置之间的数据传输。例如,缓冲器访问命令可被发送到RDMA引擎,该RDMA引擎能够将所分配的缓冲器空间中的读取数据推送(和/或拉引)到主机读取命令中包括的主机地址。目的地存储设备、主机或通信构造和接口中的其他地方(诸如网络接口卡)中的RDMA引擎可发起存储设备中的缓冲器与主机之间的数据传输。
对于主机写入操作,SVC 110可使用存储设备I D向目标服务主机存储设备发送FTL更新命令。需注意,托管主机LBA映射的相关部分的存储设备可与用于写入命令的目的地存储设备不同,因此用于FTL更新命令的目标服务主机存储设备可与目的地存储设备I D不同。SVC 110可在分布式FTL映射的相关部分已被更新时从目标主机存储设备接收响应。
当目的地存储设备和主机之间的数据传输完成并且FTL图已更新(如需要)时,SVC110可向主机发送读取或写入完成状态。在实现RAI D或奇偶校验错误编码的一些实施方案中,用于更新FTL映射的分布式服务还可以实现驱动器到驱动器RAI D和/或奇偶校验数据传输以及相关的FTL映射更新。
在一些实施方案中,SVC 110可基于所选择的RAI D配置来协调存储设备120之间的RAI D剥离。例如,RAI D剥离模块220可支持写入序列化和设备缓冲器管理器216的使用以在RAI D条带中分配写入。RAI D剥离模块220可将RAI D条带的每个部分交付给存储设备120。在一些实施方案中,当整个条带已被写入时,缓冲器刷新命令可用于将整个条带从其相应的缓冲器写入一个或多个存储介质。
在示例RAI D配置中,存储系统中可存在一个或多个RAI D组,并且任何给定存储设备可参与一个或多个RAI D组。即使存储设备包括多个分立的介质单元,诸如NVM管芯或封装,各个存储设备的存储设备FTL也可能不跨存储设备内的存储介质实现RAI D。在一些实施方案中,RAI D条带跨来自不同存储设备的存储设备存储位置(例如,存储设备LBA),其中条带深度等于设备存储位置粒度或存储单元尺寸,诸如多平面编程尺寸。例如,RAI D条带中没有两个页面可在同一介质单元上,并且RAI D条带中没有两个页面可在同一存储设备中。在多平面编程实施方式中,RAI D条带最初可跨来自不同存储设备的缓冲器进行构建,使得每个缓冲器精确地映射在对应于多平面编程的页面上。
在一些实施方案中,通过使用用于缓冲器到缓冲器传输的RDMA引擎将数据从目的地存储设备的缓冲器移动到奇偶校验存储设备来完成奇偶校验计算。当将数据移动到奇偶校验存储设备时,根据当前奇偶校验和新数据来计算新奇偶校验,并且将新奇偶校验放回奇偶校验设备的缓冲器中。在一些实施方案中,这可在两个存储设备之间的一个原子RDMA操作中完成,而无需来自SVC 110的任何干预。
在一些实施方案中,SVC 110可使用垃圾收集模块222协调存储设备120之间的垃圾收集。如果数据在页面中被写入存储介质,但是存储介质在块中被擦除,则存储介质中的页面可能包含无效(例如,陈旧)数据,但是那些页面不能被重写,直到包含那些页面的整个块被擦除。为了写入具有无效数据的页面,可以读取在该块中具有有效数据的页面(如果有的话)并将其重新写入新块,并且擦除旧块(或将旧块置于队列上以用于擦除)。该过程被称为垃圾收集。在垃圾收集之后,新块包含具有有效数据的页面,并且可具有可用于要写入的新数据的空闲页面,并且旧块可被擦除以便可用于要写入的新数据。多种垃圾收集算法可用于选择要移动的块。
在一些实施方案中,垃圾收集模块222可以使用存储设备120中的一个或多个缓冲器存储器和/或处理容量来执行垃圾收集操作。例如,垃圾收集模块222可以使用LBA筛选命令将存储设备120上的存储器的特定块识别为垃圾收集或其他数据管理操作的候选者。垃圾收集模块222可以使用数据移动命令来移动被识别用于由其实现的垃圾收集算法进行重写的块。在一些实施方案中,垃圾收集模块222还可以收集和跟踪用于存储设备120的使用信息。
在一些实施方案中,SVC 110可使用设备初始化模块224来协调存储设备120的初始化。例如,在一个或多个存储设备120的服务中断之后,可能需要对每个受影响的存储设备进行初始化。服务中断可包括系统和/或各个存储设备的电力中断、一个或多个系统或子系统之间的通信丢失、设备故障和替换等。设备初始化模块224可以负责在被初始化的存储设备之间进行协调,以确保数据(包括存储介质数据、缓冲器数据和逻辑映射数据)是跨存储设备一致的,并且不丢失未决操作的结束中断操作或队列。在适当的情况下,可以重新开始操作和/或可以从另一个存储器位置镜像数据,在一些情况下从对等存储设备镜像数据,以使阵列返回到一致的状态。
在一些实施方案中,设备初始化模块224可以使用对一个或多个受影响的存储设备的主机FTL初始化命令进行初始化操作。例如,主机FTL初始化命令可以初始化由服务主机存储设备托管的主机FTL映射表的区段。该命令可以指示存储设备处理一系列日志条目以更新主机FTL映射表。
在一些实施方案中,SVC 110可使用设备重建模块226来协调阵列内故障存储设备的重建。例如,当RAID组内的存储设备发生故障并且无法恢复时,存储设备可被替换和重建,或重建为一个或多个其他存储设备,诸如阵列可用的热备用设备。设备重建可包括根据RAID配置重建RAID数据条带以及阵列中剩余存储设备上可用的镜像数据和/或奇偶校验数据两者,以及重建分布式服务和相关数据。
在一些实施方案中,托管在故障存储设备上的主机FTL映射表的部分可被重建到新存储设备或现有存储设备上的存储位置。在一些实施方案中,主机FTL映射表可具有分布在存储设备之间的其自身的RAID配置和奇偶校验数据。为缺失或故障的设备重建主机FTL映射表的一个或多个部分可包括向每个剩余存储设备发送主机FTL重建命令,该主机FTL重建命令包含缺失部分的相关主机FTL映射数据和/或主机FTL映射奇偶校验数据。例如,主机FTL映射表的重建部分可从存储设备返回到SVC 110,并然后发送到新存储位置,或者重建部分可通过对等传输直接发送到重建存储设备或新存储位置。
在一些实施方案中,SVC 110可包括对应于附加数据管理服务或操作的任何数量的附加服务模块(例如,附加服务模块228)。SVC 110中所示的示例数据管理服务可能不是数据管理服务或操作的穷举,该数据管理服务或操作可分布在对等存储设备之间,并受益于SVC 110或在存储设备之间提供一定程度协调的另一部件。
虽然图2示出了SVC 110作为架构上隔离的存储控制器,但是图2更多地旨在作为可存在于管理模块中的各种特征的功能描述,而不是作为本文描述的实施方案的结构图示。在实践中,并且如本领域的普通技术人员认识到,单独示出的项可以组合,并且一些项可以分开。在一些实施方案中,SVC 110的操作和/或模块中的一个或多个可替代地由数据存储系统100中的其他部件执行和/或实现。在一些实施方案中,SVC 110的操作和/或模块中的一个或多个可替代地由一个或多个NVM控制器130执行和/或实现。例如,存储设备120.1的NVM控制器130可包括用于管理一个或多个存储设备120.1至l20.n中的存储器块的数据寿命的数据管理逻辑(例如,类似于图2的存储器210中的一个或多个模块)。在一些实施方案中,存储器210中的模块可全部或部分地由数据存储系统100中的软件、硬件、固件或它们的任何组合来实现。
在一些实施方案中,SVC 110可由主机系统(例如,主机102,图1)实现,该主机系统还存储和访问多个存储设备120中的数据。此外,在一些实施方案中,SVC 110可由多设备存储环境中的存储设备(例如,存储设备120.1,图1)实现。更进一步地,在一些实施方案中,SVC 110可在数据存储系统100的通信构造和接口中的其他地方实施。例如,SVC 110可被实现为互连构造114、接口112或主机侧网络构造104的一部分。
在一些实施方案中,如图3所示,存储设备120.1包括使用公共计算资源诸如一个或多个处理单元(CPU 302)的NVM控制器130.1和分布式托管服务322的功能,该处理单元在本文中有时称为CPU、处理器或硬件处理器,并且有时使用微处理器、微控制器等来实现,该微处理器、微控制器等被配置为执行一个或多个程序(例如,存储器320中的模块)中的指令。在一些实施方案中,一个或多个CPU 302由在存储设备120的功能内并在一些情况下超出其功能的一个或多个部件共享。在存储器320中并且由CPU 302执行的模块可以耦接到互连构造301、RDMA接口304、NVM接口308、存储器接口310和任何数量的附加模块,诸如擦除编码引擎314和纠错引擎316,以便协调这些部件的操作。在一些实施方案中,存储设备120.1的部件可通过一条或多条通信总线300互连。在一些实施方案中,CPU 302、存储器320、NVM接口308和任何数量的附加模块可被封装为在专用集成电路(ASIC)、现场可编程门阵列(FPGA)或类似架构中实现的NVM控制器130.1。
存储设备120.1可包括各种本地存储器资源和本地计算资源。在一些实施方案中,本地资源可包括集成到存储设备120.1中并且可与存储设备的数量成比例的部件。示例本地存储器资源可包括存储器320(例如,NVM控制器130.1的操作存储器)、缓冲器存储器306(例如,通过可远程寻址的接口可用的可远程寻址的存储器)和FTL存储器312(可由NVM控制器130.1访问,但不一定共享相同的总线、板或封装的专用存储器部件)。在一些实施方案中,一个或多个存储介质(诸如NVM设备140)可以为数据管理功能提供本地存储器资源,但是这些可以与用于主机数据的存储位置不同。示例本地计算资源可包括CPU 302(例如,NVM控制器130.1的操作处理器)、擦除编码引擎314、纠错引擎316和任何其他专用处理系统。在一些实施方案中,一个或多个接口(诸如互连构造接口301或RDMA接口304)还可包括或利用存储器和/或计算资源,并且可以是存储设备120.1的可用本地资源的一部分。
在一些实施方案中,RDMA接口304可以是用于向缓冲器存储器306提供远程数据管理访问的硬件、软件或组合硬件/软件引擎。这可包括对用于CPU 302或NVM控制器130.1的其他部件的缓冲器存储器306的本地直接存储器访问(DMA)。RDMA接口304的RDMA引擎可允许存储设备120.1向缓冲器存储器306以及向其他存储设备、存储控制器(例如,SVC 110)或服务器(例如,主机102)中的存储器位置推送数据,或从缓冲器存储器306以及这些存储器位置拉取数据。
在一些实施方案中,擦除编码引擎314可以是用于提供异或计算或实现另一擦除编码操作的硬件、软件或组合硬件/软件引擎。擦除编码引擎314可支持存储在存储器320中的多种功能和/或支持对传输到缓冲器存储器306或从缓冲器存储器306传输的数据的XOR其他擦除代码处理,具有或不具有RDMA接口304和/或FTL存储器312。
在一些实施方案中,纠错引擎316可以是用于为写入NVM设备140和从NVM设备140读取的数据提供错误控制的硬件、软件或组合硬件/软件引擎。例如,纠错引擎316可包括错误控制模块,以限制在写入存储器和/或从存储器读取期间意外引入到数据中的不可纠正错误的数量,诸如纠错码(ECC)编码器和解码器。
支持存储设备120的一个或多个功能的附加模块(未示出)可连接到CPU 302、RDMA接口304、NVM接口308、擦除编码引擎314、FTL存储器312和存储器320。在一些实施方案中,一个或多个附加模块由CPU 302在软件中执行;在其他实施方案中,使用专用电路(例如,以执行编码和解码功能)全部或部分地实现一个或多个附加模块。
在一些实施方案中,在由主机102发起的写入操作期间,SVC 110经由接口112(图1)接收主机写入命令(例如,在一组一个或多个主机写入命令中),将该主机写入命令转换成写入命令,有时称为适用于由数据存储设备120执行的已转换命令或已转换写入命令,并且将已转换命令发送到对应于由主机写入命令指定的一个或多个地址的一个或多个数据存储设备,即目的地存储设备。
在一些存储系统中,存储控制器还经由接口112接收要存储在一个或多个数据存储设备中的数据,该数据存储设备对应于由主机写入命令指定的一个或多个地址。相应的数据存储设备经由互连构造114从存储控制器接收要存储在其NVM设备140.1.1-140.l.n中的数据或要存储的数据的一部分。存储设备所接收的数据可被编码或以其他方式处理并可用于存储NVM接口308,该存储NVM接口308以取决于所利用的存储介质类型的方式将数据传输到NVM设备140.1。在存储设备120中,RDMA接口304和缓冲器存储器306,结合来自SVC 110的协调,可允许主机102将要存储在主机写入命令中的数据发送到存储设备120中的缓冲器存储器306,而无需它们经过SVC 110或另一个存储控制器。
在一些实施方案中,当主机102向SVC 110发送主机读取命令(例如,在一组一个或多个主机读取命令中)时发起读取操作,SVC 110将所接收的主机读取命令转换成读取命令(例如,转换成更低级数据存储设备命令,在本文中有时称为已转换命令或已转换读取命令,适用于由数据存储设备120执行),并且将已转换读取命令发送到目的地数据存储设备120,从该数据存储设备的存储介质(例如,一个或多个NVM设备140.1)请求数据。CPU 302可以根据主机读取命令指定的存储器位置(地址)经由NVM接口308向NVM设备140.1发送一个或多个读取访问命令。
NVM接口308可以提供用于解码或其他处理的原始读取数据(例如,包括一个或多个码字)。读取访问命令对应于所接收的读取命令,但是读取命令由存储设备120转换成读取访问命令,例如以便从NVM设备140.1指向一个或多个特定NVM设备。在一些实施方案中,如果读取不成功,则存储控制器120可采取许多补救措施或提供不可解决的错误条件的指示。
在一些存储系统中,来自存储设备120的读取数据被提供给存储控制器以使其可用于主机102。在存储设备120中,RDMA接口304和缓冲器存储器306,结合来自SVC 110的协调,可允许主机102从存储设备120中的缓冲器存储器306接收要在主机读取命令中读取的数据,而无需它们通过SVC 110或另一个存储控制器。
如上所述,一个或多个存储介质(例如,NVM设备140.1)被分成多个可寻址且可单独选择的块,并且每个块任选地(但通常)进一步被分成多个页面和/或字线和/或扇区、具有定义的存储单元尺寸的存储位置。虽然基于块执行从存储介质擦除数据,但在许多实施方案中,在块的较小子单元上(例如,基于页面、基于字线或基于扇区)执行对存储介质的读取和编程。
在一些实施方案中,块的较小子单元由多个存储器单元(例如,单级单元(SLC)或多级单元)组成。在一些实施方案中,在整个页面上执行编程。在一些实施方案中,多级单元(MLC)NAND闪存通常每个单元具有四个可能的状态,每个单元产生两位信息。此外,在一些实施方案中,MLC NAND具有两个页面类型:(1)下部页面(有时称为快速页面),以及(2)上部页面(有时称为慢速页面)。在一些实施方案中,三级单元(TLC)NAND闪存每个单元具有八个可能的状态,每个单元产生三位信息。虽然本文的描述使用TLC、MLC和SLC作为示例,但本领域的技术人员将理解,本文所述的实施方案可扩展到每个单元具有多于八个可能状态的存储器单元,每个单元产生多于三个位的信息。在一些实施方案中,一个或多个存储介质的编码格式(即TLC、MLC或SLC和/或所选择的数据冗余机制或ECC代码)是当数据实际上被写入一个或多个存储介质时作出的选择。
图3是示出根据一些实施方案的由存储设备120处置的分布式数据管理和读取/写入操作的框图。存储设备120包括用于执行存储在存储器320中的模块、程序和/或指令并从而执行处理操作的CPU 302、存储器320(有时称为NVM控制器存储器或操作存储器)以及用于使这些部件互连的一条或多条通信总线300。
一条或多条通信总线300可选地包括将系统部件互连并且控制其间通信的电路(有时称为芯片组)。CPU 302和存储器320可通过一条或多条通信总线300耦接到互连构造接口301、RDMA接口304、缓冲器存储器306、NVM接口308、NVM设备140.1、存储器接口310、FTL存储器312、擦除编码引擎314、纠错引擎316互连构造和任何附加模块。在一些实施方案中,还可存在用于通过通信总线300提供通信的接口硬件和/或协议,以用于与任何给定部件进行通信。例如,FTL存储器312可设置在FPGA、ASI C或其他架构集成CPU 302、存储器320和图3中的其他部件外部的RAM中,并且可为CPU 302提供存储器接口310以向FTL存储器312传输数据以及从该FTL存储器传输数据。
存储器320可包括高速随机存取存储器诸如DRAM、SRAM、DDR RAM或其他随机存取固态存储器设备,并且可以包括非易失性存储器诸如一个或多个磁盘存储设备、光盘存储设备、闪存存储器设备或其他非易失性固态存储设备。存储器320可以可选地包括位置远离CPU 302的一个或多个存储设备。在一些实施方案中,可提供用于特定功能的一个或多个附加存储器,诸如用于闪存转换层(FTL)数据和/或缓冲器存储器306的FTL存储器312。这些功能存储器可包括专门的处理、硬件加速和/或与其功能相关的其他资源。在一些实施方案中,FTL存储器312和/或缓冲器存储器306中的一个或多个可为存储器320的一部分。
存储器320,或另选地存储器320内的非易失性存储器设备,包括非暂态计算机可读存储介质。在一些实施方案中,存储器320或存储器320的非暂态计算机可读存储介质存储以下程序、模块和数据结构,或其子集或超集:
·服务请求处理程序321,该服务请求处理程序用于接收和管理来自其他系统或子系统(诸如SVC 110或对等存储设备)的请求
·托管服务322,该托管服务用于管理分布式数据管理操作(包括逻辑地址映射)以及相关的过程和请求,诸如来自主机、存储控制器或另一存储设备(例如,主机102、SVC110或存储设备120)的主机FTL查找请求;
·NVM管理器324,该NVM管理器用于管理存储设备FTL数据(包括逻辑地址映射)以及相关过程和请求,诸如通过NVM接口308向NVM 140.1.l-l40.l.n进行的介质读取和写入操作;
·缓冲器访问模块326,该缓冲器访问模块用于监视内容并由存储设备120以及主机、存储控制器和对等存储设备(例如,主机102、SVC 110或存储设备120)访问缓冲器存储器306,有时称为持久性存储器缓冲器或控制器存储器缓冲器;
·分布式读取模块328,该分布式读取模块用于结合NVM管理器324和缓冲器访问模块326将读取操作执行为目的地存储设备;
·分布式写入模块330,该分布式写入模块用于结合NVM管理器324和缓冲器访问模块326将写入操作执行为目的地存储设备;和
·分布式奇偶校验模块332,该分布式奇偶校验模块用于结合擦除编码模块314、NVM管理器324和缓冲器访问模块326执行奇偶校验写入与用于计算奇偶校验和相关主机FTL更新的相关过程。
以上识别的元件中的每个可以存储在先前提到的存储器设备(它们一起形成存储器320)中的一个或多个中,并且对应于用于执行上述功能的指令集。以上标识的模块或程序(即,指令集)不需要实现为单独的软件程序、过程或模块,并且因此这些模块的各种子集可以在各种实施方案中组合或以其他方式重新布置。在一些实施方案中,存储器320可存储以上识别的模块和数据结构的子集。此外,存储器320可存储以上未描述的附加的模块和数据结构。在一些实施方案中,存储器320或存储器320的非暂态计算机可读存储介质中存储的程序、模块和数据结构提供指令以用于实现下面描述的方法的相应操作。在一些实施方案中,这些模块中的一些或全部可利用包括模块功能的一部分或全部的专用硬件电路来实现。
在一些实施方案中,服务请求处理程序321可包括用于从其他系统或子系统诸如主机、存储控制器和对等存储设备(例如主机102、SVC 110或存储设备120)接收消息的可寻址通信信道。在一些实施方案中,请求处理程序212可接收数据管理命令或请求,该数据管理命令或请求可由存储设备120.1的存储器和计算资源单独地或结合对等存储设备和/或SVC 110来执行。例如,服务请求处理程序321可接收主机FTL查找请求、主机FTL更新请求、奇偶校验主机FTL更新请求、主机FTL初始化请求、主机FTL重建请求、缓冲器访问请求、缓冲器到缓冲器复制请求、缓冲器到缓冲器编码请求、日志读取请求、日志处理请求、LBA筛选请求、数据移动请求等。服务请求处理程序321可解析所接收的请求并发起、继续或停止托管服务。在一些实施方案中,服务请求处理程序321可基于对应的请求发起读取、写入和奇偶校验操作,其可以利用或不利用一个或多个托管服务322。
在一些实施方案中,托管服务322可包括可能已以其他方式在存储控制器或主机处执行的FTL服务的部分,诸如访问和维护存储在FTL存储器312中的主机FTL逻辑图312.1。例如,主机FTL逻辑图312.1可包括数据存储系统100中的所有存储设备的完整逻辑图的一部分。在一些实施方案中,完整逻辑图以大致相等的部分分配在跨存储设备120分布的部分中。任何给定存储设备120上的主机FTL逻辑图312.1可包括或可不包括该存储设备120上的存储位置。在一些实施方案中,完整逻辑图的部分可被随机地、以轮询调度方式顺序地或根据更确定的分配方案进行分配,以支持数据保护、性能或服务的容量利用标准。在一些实施方案中,完整逻辑图的每个部分在存储设备发生故障的情况下跨两个或更多个存储设备冗余地存储。
在一些实施方案中,主机FTL逻辑图312.1可以托管在FTL存储器312的专用部分中。例如,FTL存储器312可以是具有专用于存储设备FTL图312.2的部分和专用于主机FTL逻辑图312.1的剩余部分的DRAM。主机FTL逻辑图312.1可用于将映射信息的区段保持在主机逻辑块地址(LBA)与存储设备LBA或介质存储位置之间。在一些实施方案中,数据存储系统100中的所有主机LBA的完整逻辑图可以包含在主机FTL表中,并且任何给定存储设备120中的主机FTL逻辑图312.1可以是主机FTL表的数学确定部分,以使主机FTL查找请求能够被寻址到正确的目标服务主机存储设备。例如,存储设备120中的托管服务322可以负责主机LBA1-1000,而不管存储设备120.1-120.n中的哪些托管其一个或多个介质上的实际数据,并且对那些LBA的主机FTL查找请求将寻址到托管服务322。
在一些实施方案中,主机FTL逻辑图312.1可由对应于主机写入尺寸(诸如4K数据块)的主机LBA存储位置进行分配和/或组织。存储设备FTL图312.2可由介质LBA存储位置分配和/或组织,该介质LBA存储位置对应于作为主机写入尺寸的较大倍数的介质写入或编程尺寸。例如,可将介质编程尺寸设置为页面编程尺寸,诸如96K或192K的多平面页面尺寸。因此,主机块尺寸可以是介质块尺寸的1/6、1/12、1/24、1/48或更小,这取决于主机写入粒度与页面编程粒度之间的关系。
通过增加介质写入粒度,存储设备FTL图312.2可使用更少的FTL存储器312。例如,相对于可用于主机FTL逻辑图312.1的剩余存储器空间,存储设备FTL图312.2可使用少于FTL存储器312的5%。在一些实施方案中,这可启用能够在常规主机数据块映射(例如,4K主机写入存储介质位置)和卸载主机FTL之间切换的存储设备,其中在更高的介质写入粒度(例如,96K或192K介质写入)下存储设备FTL的存储器减小,而不改变FTL存储器312硬件。
在一些实施方案中,存储设备FTL图312.2可被配置用于对应于介质编程尺寸的连续逻辑块尺寸。可呈现和管理每个存储介质块,而不考虑坏块、介质缺陷或耗损或不连续的物理介质位置。例如,NVM管理器324可以管理存储设备FTL,使得提供介质编程尺寸的连续逻辑块以用于分配存储设备FTL图312.2中的介质存储位置。
托管服务322可包括用于支持分布式读取/写入操作、驱动器到驱动器操作和其他数据管理操作的多个服务或功能。在一些实施方案中,托管服务322可以包括与以下相关的服务:初始化、访问、更新和使用主机FTL逻辑图312.1、使用缓冲器存储器306和擦除编码引擎314支持分布式读取/写入操作的服务、分布式垃圾收集服务、用于连续性的日志数据的维护和使用、对等驱动通信和/或存储设备重建(主机数据和/或主机FTL映射信息的RAID重建)。这些服务操作中的每个可利用本地存储器和计算资源。
托管服务322可包括主机FTL查找322.1,用于查找映射信息以将主机LBA转换为介质存储位置,反之亦然。例如,服务请求处理程序321可以接收指示一个或多个主机LBA的主机FTL查找请求,查找主机FTL逻辑图312.1中的对应条目,并且返回对应于相应存储设备上的介质存储位置的映射信息。返回的映射信息可包括一个或多个存储设备标识符和对应的存储设备LBA或介质存储位置标识符两者,以供其他集中式(SVC 110或主机102)或分布式(其他存储设备)功能诸如读取/写入、垃圾收集、奇偶校验计算、RAID剥离、数据恢复、数据或FTL图重建等使用。
托管服务322可包括用于更新FTL存储器312中的主机FTL逻辑图312.1的部分的主机FTL更新器322.2。服务请求处理程序321可接收主机FTL更新请求,该主机FTL更新请求指定一个或多个主机LBA以及用于对应存储设备识别和介质存储位置的新映射信息。在一些实施方案中,主机FTL更新器322.2将新映射信息写入主机FTL逻辑图312.1。
在使用冗余主机FTL映射的实施方案中,主机FTL更新器322.2还可将新映射信息发送到另一存储设备中的主机FTL逻辑映射的对应部分。例如,主机FTL更新器322.2可通过向另一存储设备的主机FTL更新器发送更新请求来写入新映射信息。在一些实施方案中,主机FTL更新器322.2还可记录冗余存储设备中的缓冲器存储器306和/或对应缓冲器的变化。主机FTL更新器322.2可向请求者发送更新完成消息。
在一些实施方案中,更新请求将包括更新用于目的地存储设备和奇偶校验存储设备两者的主机FTL映射信息。主机FTL更新器322.2可以接收具有主机LBA、映射信息和奇偶校验存储设备标识符的主机FTL更新命令。主机FTL更新器322.2可以查找FTL逻辑图312.1中的所存储的映射信息并且将所存储的映射信息与所接收的映射信息进行XOR运算,然后将主机FTLXOR更新命令发送到奇偶校验存储设备的主机FTL服务。在一些实施方案中,主机FTL更新器322.2可以接收主机FTL XOR更新命令完成的状态或其他通知,并且用新映射信息更新本地主机FTL逻辑图312.1。在一些实施方案中,主机FTL更新器可以将主机FTL逻辑图312.1中的主机FTL条目的变化记录在缓冲器存储器306中的缓冲器日志306.3中。
在一些实施方案中,存储设备120还充当奇偶校验存储设备,并且托管服务322可以包括奇偶校验主机FTL更新器322.3。奇偶校验主机更新器322.2可以从另一存储设备(诸如保持主机FTL逻辑图312.1的相关部分的存储设备)的主机FTL服务接收主机FTL XOR更新命令。奇偶校验主机FTL更新器322.3可以发出命令以访问在请求中识别的本地数据,对该数据与在请求中识别的XOR缓冲器(例如,缓冲器存储器306中的奇偶校验缓冲器306.2)的内容进行XOR运算,并且将所得数据写入到同一XOR缓冲器中。
在一些实施方案中,奇偶校验主机FTL更新器322.3可以对请求中的映射信息处理类似的操作:检索对应的映射信息(对应于奇偶校验LBA的主机FTL条目);将请求中的映射信息与所检索的映射信息进行XOR运算;并且将结果存储回(本地)主机FTL逻辑图312.1中。在一些实施方案中,奇偶校验主机FTL更新器322.3可以将主机FTL逻辑图312.1中的主机FTL条目的变化记录在缓冲器存储器306中的日志中。奇偶校验主机FTL更新器322.2可以将状态发送回发送请求的存储设备的服务请求处理程序321。
托管服务322可以包括主机FTL初始化器322.4,用于在通电或其他初始化事件之后初始化FTL存储器312中的主机FTL逻辑图312.1的一部分。在一些实施方案中,初始化可包括从存储在持久性存储器中的日志重播一系列主机FTL更新。例如,主机FTL初始化器322.4可以使用在缓冲器存储器306中分配的日志缓冲器306.3。服务请求处理程序321可接收主机FTL初始化请求,该主机FTL初始化请求定义要在FTL逻辑图312.1中初始化的主机LBA映射信息。例如,该请求可以指定包含更新的主机FTL映射信息的一个或多个持久性存储器位置,诸如通过提供要处理的日志条目的起始位置和数量。主机FTL初始化器322.4可以将每个日志条目解析成LBA字段和对应的映射信息。主机FTL初始化器322.4可以计算用于主机FTL图312.1中的对应条目的存储器位置,并且基于来自日志缓冲器306.3的映射信息来更新主机FTL图312.1。当已处理指定日志条目时,服务请求处理程序321可向请求者诸如SVC 110返回完整的状态消息。
托管服务322可以包括主机FTL重建器322.5,用于重建存储在缺失或已经故障的对等存储设备中的主机FTL逻辑图312.1的一部分。在一些实施方案中,镜像部分和/或奇偶校验信息可以分布在对等存储设备之间,并且可以将重建请求发送到用于主机FTL重建的剩余存储设备中的每一个。服务请求处理程序321可接收主机FTL重建请求,该主机FTL重建请求定义接收存储设备中与缺失或故障存储设备中的主机FTL区段对应的FTL映射条目的列表。例如,主机FTL重建器322.5可通过对主机FTL逻辑图312.1中的对应条目进行XOR运算来重新创建缺失条目。在一些实施方案中,对应条目跨多个剩余存储设备分布,并且驱动器到驱动器通信可用于完成重建,诸如缓冲器到缓冲器复制322.6和/或缓冲器到缓冲器编码322.7。
托管服务322可以包括缓冲器到缓冲器复制322.6和缓冲器到缓冲器编码322.7,以实现驱动器到驱动器通信和数据管理功能。这些服务可以具体地通过对服务请求处理程序321的缓冲器到缓冲器复制请求来请求,并且/或者可以集成到其他服务中,诸如分布式奇偶校验模块332或主机FTL重建器322.5。在一些实施方案中,缓冲器到缓冲器复制322.6将数据从第一存储设备中的缓冲器存储器306中的一个缓冲器位置移动到另一个存储设备的缓冲器存储器306中的第二缓冲器位置。例如,缓冲器到缓冲器复制请求可指定源存储设备I D和目的地存储设备I D、对应的缓冲器存储器位置以及正在移动的数据的长度。
在一些实施方案中,缓冲器到缓冲器编码322.7与缓冲器到缓冲器复制322.6类似地起作用,不同的是其可在移动期间插入编码步骤。在一些实施方案中,缓冲器到缓冲器编码322.7使用在缓冲器存储器306中分配的至少一个奇偶校验缓冲器306.2。例如,可以从一个缓冲器存储器306读取数据,用奇偶校验缓冲器306.2的内容对该数据进行XOR运算或擦除编码,并将该数据存储回到奇偶校验缓冲器306.2。从中读取一个数据集的缓冲器存储器可不与奇偶校验缓冲器306.2和其可包含的擦除编码数据在同一存储设备上。缓冲器到缓冲器编码请求可指定源存储设备和目的地存储设备以及对应的缓冲器存储器位置,包括奇偶校验缓冲器306.2,以及待处理和移动的数据的长度。
托管服务322可以包括用于获得NVM单元的有效LBA列表以帮助垃圾收集的LBA筛选器322.8。LBA筛选器322.8可解析对应于NVM单元的存储位置的日志,诸如页面,以识别和筛选掉NVM单元中的有效LBA。服务请求处理程序321可接收LBA筛选请求,该LBA筛选请求指定缓冲器存储器中的位置,诸如缓冲器日志306.3中的起始位置和条目数量,其中存储包含页面信息的日志条目。该请求还可指定目的地缓冲器位置,LBA筛选器322.8可将所得的LBA列表写入该目的地缓冲器位置。LBA筛选器322.8可将每个日志条目解析成主机LBA字段和对应的映射信息,为主机LBA查找主机FTL图312.1中的条目中的映射信息,并且将来自日志条目的映射信息与从主机FTL图312.1检索的映射信息进行比较。然后可以将具有匹配的日志和图信息的LBA条目写入筛选后的LBA列表。当已处理指定日志条目时,服务请求处理程序321可向请求者诸如SVC 110返回完整的状态消息。
托管服务322可以包括用于从移动列表中选择、序列化和重写LBA以帮助垃圾收集的数据移动器322.9。数据移动器322.9可解析日志,该日志包含LBA移动列表和应当写入序列化数据的存储位置。在一些实施方案中,服务请求处理程序321可接收数据移动请求,该数据移动请求指定缓冲器存储器中的位置,诸如缓冲器日志306.2中的起始位置和条目数量,其中存储包含移动列表的日志条目。数据移动请求还可指定缓冲器存储器306中用于序列化数据的位置的分配以及要用于序列化数据的目的地LBA。
数据移动器322.9可读取移动列表上的每个LBA并使用NVM管理器324访问存储设备FTL映射312.2,以定位每个LBA并将其写入缓冲器存储器306中的指定序列化缓冲器空间。来自移动列表的LBA可被写入缓冲器存储器306,直到序列化缓冲器空间已满。然后,数据移动器322.9可通过NVM管理器324发起写入介质操作。当移动列表中的所有LBA已被移动并且最终批被写入一个或多个介质时,服务请求处理程序321可将完整的状态消息返回给请求者,诸如SVC 110。在一些实施方案中,数据可留在序列化缓冲器空间中并用于奇偶校验存储设备中的奇偶校验计算。例如,可以启动奇偶校验存储设备中的分布式奇偶校验模块332,并将其指向序列化缓冲器空间(重新用作传输缓冲器306.1),以供缓冲器到缓冲器编码322.7(也在奇偶校验存储设备中)处理原始写入数据。
在一些实施方案中,NVM管理器324包括用于存储设备120的基础FTL服务并管理存储设备FTL图312.2。在一些实施方案中,存储设备FTL图312.2为存储设备120提供FTL映射的基础水平。存储设备FTL图312.2可包括基于与NVM设备140.1中的存储单元的兼容性(诸如页面尺寸)来分配具有定义尺寸的存储位置,并且相同的定义存储单元尺寸可用于缓冲器存储器306。例如,存储位置可被分配为4KB或8KB页面。在一些实施方案中,存储位置的分配尺寸可以对应于更大的多平面NVM页面尺寸,诸如192KB中的96KB。
存储设备FTL图312.2可启用对存储位置的NVM级管理。例如,NVM管理器324可使用存储设备FTL图312.2用于FTL管理,包括在NVM的整个寿命期间进行坏块管理、坏块备用过度调配和连续或无间隙逻辑空间的分配。在一些实施方案中,NVM管理器324还可以包括由纠错引擎316支持的纠错(例如,低密度奇偶校验(LDPC)或Bose-Chaudhur i-Hocquenghem(BCH)代码)和NVM访问参数的调谐(例如,读取级、编程阈值等)。NVM管理器324可使得能够从NVM设备140.1中的LBA存储位置读取以写入缓冲器存储器306,并且能够从缓冲器存储器306读取以写入NVM设备140.1中的LBA存储位置。在一些实施方案中,NVM管理器324在其管理和RAI D组下不管理任何与RAI D相关的冗余或跨NVM的剥离,并且可以分布式方式跨存储设备管理剥离。
在一些实施方案中,缓冲器访问模块326结合RDMA接口304进行操作以管理缓冲器存储器306的本地和远程使用。例如,NVM管理器324的本地操作可包括对缓冲器存储器306的写入和读取,读取/写入操作可包括协调缓冲器存储器306中用于本地访问和远程访问两者的空间的使用,并且其他分布式操作可使用SVC 110或其他存储设备所请求的缓冲器存储器306中的空间。在一些实施方案中,缓冲器访问模块326可实现用于托管服务322的一个或多个缓冲器相关的服务。例如,缓冲器访问模块326可分配缓冲器空间以用于接收主机数据、来自另一存储设备的数据或与分布式FTL服务相关的其他数据。在一些实施方案中,缓冲器访问模块326可结合托管服务322和/或读取/写入操作来为特定目的分配缓冲器存储器306,诸如用于在存储设备和/或主机之间移动数据的传输缓冲器306.1、用于在奇偶校验存储设备中接收和更新奇偶校验数据的奇偶校验缓冲器306.2,以及用于存储与托管服务322和/或读取/写入操作相关的顺序数据管理信息的日志缓冲器306.3。
在一些实施方案中,缓冲器访问模块326从属于由远程缓冲器管理器(诸如SVC110中的设备缓冲器管理器216)进行的缓冲器分配。例如,缓冲器访问模块326可接收并记录由设备缓冲器管理器216进行的缓冲器分配和/或请求来自设备缓冲器管理器216的缓冲器分配以供本地使用。在一些实施方案中,缓冲器访问模块326还可处理从远程缓冲器管理器接收的缓冲器刷新命令。例如,缓冲器刷新命令可使NVM管理器324将缓冲器存储器306的内容写入NVM设备140.1,并使缓冲器访问模块326清除缓冲器存储器306的内容以供重复使用。在一些实施方案中,当缓冲器刷新命令完成时,缓冲器访问模块326可将状态提供回远程缓冲器管理器。
在一些实施方案中,当存储设备120包括主机读取命令或其他读取命令的目的地存储位置时,分布式读取模块328完成本地读取操作。SVC 110可发起读取命令。可以基于识别用于读取命令的目的地存储设备的先前FTL查找将读取命令寻址到存储设备120。读取命令可以包括用于读取的LBA范围和缓冲器存储器306中的目的地缓冲器位置。
分布式读取模块328然后可以发起介质读取操作。例如,介质读取操作可以包括对NVM管理器324的指令,以基于FTL存储器312中的存储设备FTL图312.2,执行来自与读取请求中的LBA范围对应的NVM设备140.1上的存储位置的读取。该指令还可指示缓冲器存储器306中用于NVM管理器324写入数据的所分配的缓冲器位置。在一些实施方案中,介质读取操作还可使用缓冲器访问模块326来记录缓冲器分配,使缓冲器空间可用于NVM管理器324写入所读取的数据,和/或用于可能随后的主机数据从缓冲器存储器306传输的准备就绪RDMA接口304。
在一些实施方案中,当从NVM设备140.1读取数据并在缓冲器存储器306中准备就绪时,分布式读取模块328可将读取完成状态发送到请求系统。然后,请求系统能够基于缓冲器存储器306中的所分配的缓冲器空间中可用的数据来继续主机读取操作。在一些实施方案中,分布式读取模块328可以使用RDMA接口304发起从缓冲器存储器306的数据的推送传输。在其他实施方案中,SVC 110、主机102或数据存储系统100中其他地方的RDMA引擎可发起到主机102的数据传输。
在一些实施方案中,当存储设备120包括主机写入命令或其他写入命令的目的地存储位置时,分布式写入模块330完成本地写入操作。SVC 110可发起写入命令。可基于识别用于写入命令的目的地存储设备的先前FTL查找将写入命令寻址到存储设备120。写入命令可以包括用于主机数据传输的缓冲器存储器306中的目的地缓冲器位置和用于目的地存储位置的LBA。
分布式写入模块330可使用缓冲器访问模块326来分配缓冲器存储器306中的缓冲器位置以接收主机数据。RDMA接口304可以准备好进行主机数据传输。在一些实施方案中,分布式写入模块330还可使用缓冲器访问模块326来记录缓冲器分配并且使缓冲器空间可用于NVM管理器324以用于读取待写入的数据。
分布式写入模块330然后可以发起介质写入操作。例如,介质写入操作可以包括对NVM管理器324的指令,以基于FTL存储器312中的存储设备FTL图312.2,执行从缓冲器存储器306中所分配的缓冲器空间对主机数据的读取,以及对NVM设备140.1上与写入请求中的LBA范围对应的存储位置的写入。NVM管理器324还可以更新存储设备FTL图312.2以反映新写入的数据。在一些实施方案中,当从缓冲器存储器306读取数据并将数据写入NVM设备140.1时,分布式写入模块330可将写入完成状态发送到请求系统。然后,请求系统能够继续主机写入操作,这可以包括主机FTL的更新和任何奇偶校验操作。
在一些实施方案中,分布式奇偶校验模块332支持由奇偶校验主机FTL更新器322.3发起的本地奇偶校验计算、存储和相关主机FTL映射信息更新。缓冲器到缓冲器复制322.6可允许奇偶校验存储设备针对写入请求从目的地存储设备的缓冲器拉取数据并将其写入本地缓冲器存储器306。例如,奇偶校验存储设备中的缓冲器到缓冲器复制322.6可以使用RDMA命令访问由奇偶校验主机FTL更新器322.2识别的其他存储设备中的缓冲器。
分布式奇偶校验模块332可以使用NVM管理器324从NVM设备140.1读取本地奇偶校验条带数据,使用错误编码引擎314用本地奇偶校验条带数据对奇偶校验缓冲器306.2的内容进行XOR运算,并将所得数据写回奇偶校验缓冲器306.2。例如,缓冲器到缓冲器编码322.7可用于该操作。然后可将奇偶校验缓冲器306.2的内容写入NVM设备140.1以用于奇偶校验存储。在一些实施方案中,当从远程缓冲器管理器诸如SVC 110接收到单独命令时,可将奇偶校验缓冲器306.2的内容写入NVM设备140.1。例如,可以允许奇偶校验缓冲器306.2累积完整的信息条带,并然后接收缓冲器刷新命令以将完整奇偶校验条带数据写入NVM设备140.1。
图4示出了根据一些实施方案的可用于解聚存储系统中的具有分布式读取/写入处理的多设备存储架构的示例实施方式。SSD阵列400可以是高可用性(HA)独立磁盘冗余阵列(RAID)闪存簇(BOF)。如名称所指出的那样,该示例示出了在冗余编码(RC)配置中经由互连构造114连接以促进高可用性的闪存驱动器簇,SSD 404。
在一些实施方案中,一个或多个适配器或存储网络接口卡(SNIC)402经由一个或多个网络构造104将SSD阵列400连接到一个或多个主机102,并且可包括用于在连接到互连构造114和网络构造104的部件之间传输数据的RDMA引擎402.1.1。该示例示出了通过一个或多个互连构造114连接到一个或多个后端固态存储设备(SSD,404.1至404.n)和一个或多个网络构造104(例如以太网、Infinband、外围部件快速互连(PCIe))的一个或多个存储虚拟化控制器(SVC)110。在一些实施方案中,互连构造114是PCIe或类似构造。在一些实施方案中,SVC 110是SNIC/适配器402和/或互连构造114的一部分。
存储虚拟化控制器110.1可以是单独的片上系统(SOC)、ASIC、FPGA,或其自身具有执行全局FTL管理器434.1以协调来自主机l02.l-l02.m的读取/写入请求的CPU 430.1和DRAM 432.1的类似部件。此外,在一些实施方案中,每个SVC 110包含执行初始化、管理和其他类似慢速路径活动的廉价CPU 430,以及完全处置快速路径命令处理(例如,主机102和后端SSD 404之间的数据传输)的快速路径自动化硬件,使得CPU 430几乎不参与或不参与快速路径命令的处理(例如,除了初始化或设置SNIC/适配器402(包括RDMA引擎402.1.1)、缓冲器410和RDMA 420以处置这些操作之外不参与)。
在一些实施方案中,每个SSD 404被配置为支持卸载或分布式操作,如下文更详细地讨论。每个SSD 404具有被组织为一个或多个缓冲器410的内部缓冲器存储器。在一些实施方案中,SSD 404支持SSD之间的对等通信,使得SSD 404可以在它们自身之间传输数据,诸如用于在来自XOR模块422的协助下对奇偶校验SSD执行奇偶校验计算,而无需外部控制。每个SSD 404还具有NVM管理模块414,该NVM管理模块管理一个或多个非易失性存储器设备(NVM)416并为相应SSD执行各种闪存管理操作。主机FTL服务模块418与NVM管理模块414协同工作或协调,以实现各种分布式操作,诸如分布式读取/写入操作。
在一些实施方案中,NVM控制器406中的一个或多个模块执行从一个或多个SVC110卸载的卸载服务。此类服务包括全局闪存转换层(FTL)寻址操作、奇偶校验计算(例如,XOR、Reed-Solomon)、垃圾收集(GC)相关功能、GC数据传输(经由对等通信)以及通常在SVC中执行的其他操作。另外,在一些实施方案中,延迟的操作(例如,条带关闭或垃圾收集的一部分,将在将来执行)与需要更立即关注的操作一起被卸载到SSD。根据一些实施方案,利用对等SSD提供的支持,SSD 404响应于来自SVC 110的主机命令和/或中间命令来处置卸载操作。
示例SSD 404.1还可包括用于存储SSD FTL映射412.1.2和主机FTL映射412.1.1的一部分两者的RAM存储器412.1。一些SSD具有足够的硬件和计算资源来支持卸载的服务,并且仅需要固件改变来实现本文所述的实施方案中的一些的SSD部分。图4所示的系统架构使得能够以与后端SSD几乎相同的性能低成本解聚存储,同时支持卸载的服务,诸如全局FTL寻址、线速度卸载编码(LSOC)、写入事务、重映射、缩小和X拷贝。使用图4的存储系统架构使用存储系统从主机102卸载此类服务可节省操作。
另外,如图4所示,主机102与SSD 404之间的通信构造的各个部分可以单个(实线)或冗余(虚线)配置来提供。例如,可提供冗余网络构造104、SNIC/适配器402、互连构造114和SVC 110以用于附加故障转移保护。冗余通信路径和SVC在实现如本文所述的分布式读取/写入操作的实施方案中可能不太可取,这可通过结构化使用持久性存储器、驱动器到驱动器通信和事件记录来减小电力中断的影响。
如图5所示,在数据存储系统100内操作的存储设备120.1可根据分布式或卸载的数据管理服务来操作,以用于访问数据存储设备120.1的本地存储器和/或计算资源。例如,根据图5的框510-580所示的方法500,存储设备120.1可响应来自存储虚拟化控制器(例如,SVC 110)、主机(例如,主机102)和/或一个或多个对等存储设备(例如,存储设备120)的一个或多个服务请求。
在框510处,可由目标服务主机存储设备接收服务主机请求。例如,当使用用于数据存储的数据存储系统的主机、服务器、对等存储设备或其他网络系统需要访问托管服务时,其可以向目标服务主机存储设备发送用于托管服务的服务主机请求。服务主机请求可根据存储设备I D在存储系统内路由,以供目标服务主机存储设备中的服务请求处理程序接收。
在框520处,目标服务主机存储设备解析所接收的服务主机请求,以识别已从存储设备中的多个托管服务中请求什么主机服务。例如,所接收的服务主机请求可以包括用于发起或继续托管服务的类型、格式和对应的自变量。在一些实施方案中,每个托管服务可以在目标主机存储设备内具有对应的过程,该过程使用一个或多个本地存储器资源和/或本地计算资源。
在框530处,可访问目标主机存储设备内的可远程寻址的存储器以完成请求中的托管服务。例如,能够通过RDMA访问的缓冲器存储器可被分配用于与主机或对等存储设备的一个或多个数据传输。在一些实施方案中,可远程寻址的存储器可被分配用于接收、记录或返回数据管理信息或用于计算和存储奇偶校验数据。
在框540处,可访问目标主机存储设备内的主机逻辑映射信息以用于完成请求中的托管服务。例如,目标主机存储设备可将用于存储系统的主机LBA映射信息的一部分托管在逻辑映射存储器中,并且请求可涉及检索、更新、初始化、比较或重建主机LBA映射信息。在一些实施方案中,所访问的主机LBA映射信息涉及存储在对等存储设备上的主机LBA和/或主机LBA映射信息。
在框550处,可访问目标主机存储设备内的擦除编码引擎以用于完成请求中的托管服务。例如,目标主机存储设备可以包括用于对数据进行XOR运算以计算奇偶校验的擦除编码引擎。在一些实施方案中,托管服务可以包括计算主机数据或LBA映射数据的奇偶校验,并且使用可远程寻址的存储器读取、存储和/或传输奇偶校验数据。
在框560处,目标主机存储设备可以访问对等存储设备以用于完成请求中的托管服务。例如,目标主机存储设备可以将数据从其可远程寻址的缓冲器传输到对等存储设备的可远程寻址的缓冲器,以用于奇偶校验计算、数据镜像、重建、垃圾收集或其他数据管理功能。在一些实施方案中,对等存储设备能够向其他存储设备发送主机服务请求以完成其托管服务。
在框570处,可使用已在框520-560中访问的资源来执行主机服务。执行主机服务可包括使用各种本地存储器资源来访问、共享和存储数据。执行主机服务可包括用于执行功能和输入/输出协议以完成托管服务的各种本地计算资源。在一些实施方案中,执行主机服务可包括与其他资源进行通信并等待所请求的资源完成其请求。
在框580处,状态消息可返回到请求者。例如,所请求的服务完成消息可由服务请求处理程序发送到发起服务主机请求的系统或子系统。在一些实施方案中,状态消息可包括服务请求的一个或多个结果和/或存储服务结果的缓冲器存储器位置的指示。
如图6所示,可操作在数据存储系统100内操作的存储设备120.1以处置数据传输请求。例如,根据图6的框610-630所示的方法600,存储设备120.1可响应于来自存储虚拟化控制器(例如,SVC 110)、主机(例如,主机102)和/或一个或多个对等存储设备(例如,存储设备120)的一个或多个服务请求。在一些实施方案中,数据传输请求可以是托管服务请求的一部分,如关于图5中的方法500所描述的。
在框610处,数据传输请求可由目标服务主机存储设备接收。例如,当主机、服务器、对等存储设备或其他网络系统需要在两个存储设备之间、在存储设备和主机之间或在存储设备内传输数据(诸如用于垃圾收集)时,其可将数据传输请求发送到目标服务主机存储设备。数据传输请求可根据存储设备I D在存储系统内路由,以供目标服务主机存储设备中的服务请求处理程序接收。在一些实施方案中,数据传输请求可以是另一托管服务或读取/写入操作内的子请求。
在框620处,可在可远程寻址的存储器内分配传输缓冲器空间。例如,存储设备可分配可远程寻址的缓冲器存储器的一部分,以用于在存储设备中的一个或多个存储介质与另一个存储位置之间传输数据。在一些实施方案中,传输缓冲器空间的分配可由存储设备外部的缓冲器管理器管理,该缓冲器管理器将传输缓冲器空间分配为数据传输请求的一部分。
在框630处,可使用传输缓冲器空间传输数据。例如,待传输的数据可从一个存储位置写入传输缓冲器空间并从传输缓冲器空间读取到第二存储位置。在一些实施方案中,存储位置中的一个可以是存储设备的一个或多个本地存储介质,并且第二存储位置可以在另一个系统或部件中,诸如主机系统或对等存储设备。传输到第二存储位置可使用远程存储器访问协议,诸如RDMA。
如图7所示,可操作在数据存储系统100内操作的存储设备120.1以处置擦除编码请求。例如,存储设备120.1可根据图7的框710-760所示的方法700对来自存储虚拟化控制器(例如,SVC 110)、主机(例如,主机102)和/或一个或多个对等存储设备(例如,存储设备120)的一个或多个服务请求作出响应。在一些实施方案中,数据传输请求可以是托管服务请求的一部分,如关于图5中的方法500所描述的。
在框710处,目标服务主机存储设备可接收擦除编码请求。例如,当主机、服务器、对等存储设备或其他网络系统需要擦除代码数据诸如用于奇偶校验计算时,其可以向目标服务主机存储设备发送擦除编码请求。可根据存储设备I D在存储系统内路由擦除编码请求,以供目标服务主机存储设备中的服务请求处理程序接收。在一些实施方案中,擦除编码请求可以是另一个托管服务或读取/写入操作内的子请求。
在框720处,奇偶校验缓冲器空间可以分配在可远程寻址的存储器内。例如,存储设备可以分配可远程寻址的缓冲器存储器的一部分以用于保持要在奇偶校验计算中使用的第一数据集。奇偶校验缓冲器空间可以已经包括来自先前数据传输和/或奇偶校验计算的数据,或者可以将数据传输到奇偶校验缓冲器空间中以用于擦除编码请求,诸如使用数据传输请求或指定擦除编码请求中的数据源。
在框730处,可从奇偶校验缓冲器空间读取奇偶校验缓冲器数据。例如,可从奇偶校验缓冲器空间读取用于擦除编码操作的第一数据集。在一些实施方案中,可以从另一个位置读取第一数据集以初始化奇偶校验缓冲器空间。
在框740处,可从另一个存储位置读取新的数据集。例如,可从存储设备或对等存储设备中的传输缓冲器空间读取用于擦除编码操作的第二数据集。在一些实施方案中,第二数据集可在擦除编码请求中接收、从存储设备中的一个或多个存储介质检索或从另一个源读取。
在框750处,奇偶校验缓冲器数据和新数据可以用于擦除编码操作。例如,来自奇偶校验缓冲器的第一数据集可以与第二数据集一起使用存储设备中的擦除编码引擎进行XOR运算。在一些实施方案中,可以通过RAI D或类RAI D存储配置对主机数据、逻辑映射数据和/或跨存储设备和/或存储器或存储介质位置保护的其他数据管理数据执行奇偶校验计算。
在框760处,可将擦除编码数据存储在奇偶校验缓冲器空间中。例如,在框750处计算的新奇偶校验数据可以覆盖在框730处从奇偶校验缓冲器空间检索到的第一数据集。在一些实施方案中,擦除编码数据可被存储在新奇偶校验缓冲器空间中或被传输到另一个存储位置。
如图8所示,可操作在数据存储系统100内操作的存储设备120.1以处置主机逻辑映射查找请求。例如,根据图8的框810-830所示的方法800,存储设备120.1可对来自存储虚拟化控制器(例如,SVC 110)、主机(例如,主机102)和/或一个或多个对等存储设备(例如,存储设备120)的一个或多个服务请求作出响应。在一些实施方案中,主机逻辑映射查找请求可以是托管服务请求的一部分,如关于图5中的方法500所描述的。
在框810处,主机逻辑映射查找请求可由目标服务主机存储设备接收。例如,当主机、服务器、对等存储设备或其他网络系统需要从存储设备中的主机LBA图的部分查找主机LBA映射信息(诸如用于读取、写入或数据管理操作)时,其可将主机逻辑映射查找请求发送到目标服务主机存储设备。主机逻辑映射查找请求可根据存储设备I D在存储系统内路由,以供目标服务主机存储设备中的服务请求处理程序接收。在一些实施方案中,主机逻辑映射查找请求可以是另一个托管服务或读取/写入操作内的子请求。
在框820处,使用存储在存储设备中的主机LBA映射信息来识别主机逻辑映射信息。例如,主机逻辑映射查找请求可指定可用作主机LBA图的一部分中的主机LBA逻辑映射信息的索引的一个或多个LBA。在一些实施方案中,每个LBA条目可包括描述LBA的映射信息的多个字段,并且所识别的信息可包括请求内的指定字段。
在框830处,可将主机逻辑映射信息返回给请求者。例如,来自框820的所识别的主机逻辑映射信息可被包括在对请求者的响应或状态消息中。在一些实施方案中,可将所识别的逻辑映射信息写入日志缓冲器空间以供请求者检索或进行进一步处理。
如图9所示,可操作在数据存储系统100内操作的存储设备120.1以处置主机逻辑映射更新或初始化请求。例如,存储设备120.1可根据图9的框910-950所示的方法900对来自存储虚拟化控制器(例如,SVC 110)、主机(例如,主机102)和/或一个或多个对等存储设备(例如,存储设备120)的一个或多个服务请求作出响应。在一些实施方案中,主机逻辑映射更新或初始化请求可以是如关于图5中的方法500所述的托管服务请求的一部分。方法900可包括用于启动和/或验证存储设备中的主机逻辑映射信息的初始化请求,诸如在初始设置、电源故障和/或其他中断之后。
在框910处,主机逻辑映射更新请求可由目标服务主机存储设备接收。例如,当主机、服务器、对等存储设备或其他网络系统需要更新存储设备中的主机LBA图的部分中的主机LBA映射信息(诸如用于写入或数据管理操作)时,其可将主机逻辑映射更新请求发送到目标服务主机存储设备。主机逻辑映射更新请求可根据存储设备I D在存储系统内路由,以供目标服务主机存储设备中的服务请求处理程序接收。在一些实施方案中,主机逻辑映射更新请求可以是另一个托管服务或读取/写入操作内的子请求。
在框920处,可更新存储设备中的主机LBA图内的主机逻辑映射信息。例如,主机逻辑映射更新请求可包括用于新主机逻辑映射信息的一个或多个字段或完整的LBA条目,以覆盖或添加到存储设备中的主机LBA图。在一些实施方案中,新映射信息可至少部分地由存储设备生成,诸如基于与存储设备的一个或多个存储介质中的存储位置相关的写入或移动操作。
在框930处,可将对主机逻辑映射信息的更新记录到日志缓冲器空间。例如,更新的LB和相关时间戳可存储在持久性存储器中的日志缓冲器空间中的一个或多个日志条目中。在一些实施方案中,日志缓冲器空间中的数据在发生电力损失的情况下被保持,并且对等存储设备、存储控制器或用于验证更新已被处理的其他系统可访问。
在框940处,目标服务主机存储设备可接收对主机逻辑映射信息的初始化请求。例如,当主机、服务器、对等存储设备或其他网络系统需要在存储设备中的主机LBA图的部分中设置和/或验证更新的主机LBA映射信息时,诸如在电力故障或其他服务中断之后,其可将初始化请求发送到目标服务主机存储设备。在一些实施方案中,初始化请求可包括识别日志缓冲器空间,要用于初始化主机LBA图的一部分的LBA映射信息可存储在该日志缓冲器空间中。初始化请求可以根据存储设备I D在存储系统内路由,以供目标服务主机存储设备中的服务请求处理程序接收。在一些实施方案中,初始化请求可以是另一个托管服务或读取/写入操作内的子请求。
在框950处,可处理来自日志缓冲器的LBA映射信息以用于更新主机逻辑映射信息。例如,初始化请求可以识别包括用于一系列主机LBA的LBA映射信息的日志缓冲器空间,并且每个LBA条目可以相对于存储设备中的主机LBA图的部分进行解析,以确保日志中的映射信息反映在主机LBA图中。在一些实施方案中,在主机LBA图中缺失或不同的日志中的任何LBA条目可如框920中所述进行更新。可以这种方式解析和选择性地写入或更新每个LBA条目。
如图10所示,可操作在数据存储系统100内操作的存储设备120.1以处置主机逻辑映射重建请求。例如,存储设备120.1可根据图10的框1010-1030所示的方法1000对来自存储虚拟化控制器(例如,SVC 110)、主机(例如,主机102)和/或一个或多个对等存储设备(例如,存储设备120)的一个或多个服务请求作出响应。在一些实施方案中,主机逻辑映射重建请求可以是如关于图5中的方法500所述的托管服务请求的部分。
在框1010处,用于主机逻辑映射信息的奇偶校验数据可以存储在存储设备上。例如,存储在一个存储设备上的用于主机LBA图的部分的奇偶校验数据可以存储在至少一个其他存储设备上。在一些实施方案中,用于主机LBA图的奇偶校验数据可以跨存储阵列中的多个存储设备分布,使得在任何给定存储设备上的主机LBA图的部分可以从存储在剩余存储设备上的奇偶校验数据重建。
在框1020处,主机逻辑图重建请求可由目标服务主机存储设备接收。例如,当主机、服务器、RAI D控制器、对等存储设备或其他网络系统需要为故障存储设备中的主机LBA图的部分重建主机LBA映射信息时,其可向目标服务主机存储设备发送主机逻辑映射重建请求。在一些实施方案中,主机逻辑映射重建请求可被发送到阵列中的剩余存储设备中的每一个。主机逻辑映射重建请求可根据存储设备I D在存储系统内路由,以供目标服务主机存储设备中的服务请求处理程序接收。在一些实施方案中,主机逻辑映射重建请求可以是在已经识别出存储设备故障之后另一个托管服务或读取/写入操作内的子请求。
在框1030处,可从奇偶校验数据重新创建在目标服务主机存储设备上具有奇偶校验数据的主机逻辑映射数据。例如,主机逻辑图重建请求可以包括与故障存储设备的主机LBA图中的LBA条目对应的LBA条目的列表,并且目标服务主机存储设备可以使用擦除编码引擎从奇偶校验数据重新创建列表中的LBA条目。在一些实施方案中,来自对应于LBA条目的多个存储设备的奇偶校验数据可以用于重新创建数据,并且可远程寻址的存储器可以用于在对等驱动器之间共享奇偶校验数据和重新创建的主机LBA映射信息并将其传输到重建或替换的存储设备。
如图11所示,可操作在数据存储系统100内操作的存储设备120.1以处置主机逻辑映射验证请求。例如,存储设备120.1可根据图11的框1110-1140所示的方法1100对来自存储虚拟化控制器(例如,SVC 110)、主机(例如,主机102)和/或一个或多个对等存储设备(例如,存储设备120)的一个或多个服务请求作出响应。在一些实施方案中,主机逻辑映射验证请求可以是托管服务请求的一部分,如关于图5中的方法500所描述的。
在框1110处,主机逻辑映射验证请求可由目标服务主机存储设备接收。例如,当主机、服务器、对等存储设备或其他网络系统需要验证来自在存储设备中的主机LBA图的部分的映射信息的主机LBA映射信息(诸如用于垃圾收集或数据管理操作)时,其可将主机逻辑映射验证请求发送到目标服务主机存储设备。主机逻辑映射验证请求可根据存储设备I D在存储系统内路由,以供目标服务主机存储设备中的服务请求处理程序接收。在一些实施方案中,主机逻辑映射查找请求可以是另一个托管服务或读取/写入操作内的子请求。
在框1120处,可从日志缓冲器空间读取主机LBA的验证列表。例如,主机逻辑映射验证请求可指定可远程寻址的存储器位置,该可远程寻址的存储器位置包括主机LBA的列表和用于验证的对应映射信息。在一些实施方案中,主机LBA的列表可以对应于垃圾收集操作中使用的页面信息。
在框1130处,可识别主机LBA图中的对应主机LBA条目以用于与验证列表进行比较。例如,可从存储设备中的主机LBA图检索与列表中的主机LBA中的每一个主机LBA对应的主机LBA映射信息。在一些实施方案中,当从验证列表条目解析每个LBA时,识别来自主机LBA图的对应条目以进行比较。
在框1140处,基于将验证列表条目与主机LBA图条目进行比较来生成有效LBA的筛选列表。例如,如果验证列表条目中的映射信息与主机LBA图条目匹配,则验证LBA并将其写入要返回到请求者的已验证的LBA列表。在一些实施方案中,主机逻辑验证请求可以指定用于存储已验证的LBA列表的可远程寻址的存储器位置。
尽管在本技术的前述详细描述中已经呈现了至少一个示例性实施方案,但应当理解,可存在大量变化。还应当理解,一个或多个示例性实施方案是示例,并且不旨在以任何方式限制技术的范围、适用性或配置。相反,前面的详细描述将为本领域技术人员提供用于实现本技术的示例性实施方案的便利指导方针,应当理解,在不脱离如所附权利要求及其合法等同物所阐述的技术范围的情况下,可以对示例性实施方案中描述的元件的功能和/或布置进行各种修改。
如本领域普通技术人员将理解的,本技术的各个方面可以体现为系统、方法、或计算机程序产品。因此,本技术的一些方面可以采取完全为硬件的实施方案、完全为软件的实施方案(包括固件、驻留软件、微代码等)、或硬件和软件方面的组合的形式,这些方面通常都可以在本文中称为电路、模块、系统和/或网络。此外,本技术的各个方面可以采取体现在一个或多个计算机可读介质中的计算机程序产品的形式,包括在其上体现的计算机可读程序代码。
可以利用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或物理计算机可读存储介质。例如,物理计算机可读存储介质可以是但不限于电子、磁性、光学、晶体、聚合物、电磁、红外或半导体系统、装置或设备等,或前述的任何合适组合。物理计算机可读存储介质的非限制性示例可以包括但不限于包括一条或多条电线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、闪存存储器、光纤、紧凑光盘只读存储器(CD-ROM)、光学处理器、磁处理器等,或前述的任何合适的组合。在本文档的上下文中,计算机可读存储介质可以是可包含或存储用于供指令执行系统、装置、和/或设备使用或与其结合的程序或数据的任何有形介质。
计算机可读介质上体现的计算机代码可以使用任何适当的介质来传输,包括但不限于无线、有线、光纤电缆、射频(RF)等,或者前述的任何合适组合。用于执行本技术的各方面的操作的计算机代码可以用任何静态语言编写,诸如C编程语言或其他类似的编程语言。计算机代码可以完全在用户的计算设备上执行,部分在用户的计算设备上执行,作为独立的软件包,部分在用户的计算设备上并且部分在远程计算设备上执行,或者完全在远程计算设备或服务器上执行。在后一种情况下,远程计算设备可以通过任何类型的网络或通信系统连接到用户的计算设备,包括但不限于,可以对外部计算机(例如,通过使用互联网服务提供商的互联网)建立局域网(LAN)或广域网(WAN)、聚合网络或连接。
以上可以参考方法、装置、系统和计算机程序产品的流程图图示和/或框图来描述本技术的各方面。应当理解,流程图图示和/或框图的每个框以及流程图图示和/或框图中的框的组合可以由计算机程序指令实现。可以将这些计算机程序指令提供给通用计算机、专用计算机、或其他可编程数据处理装置的处理设备(处理器)以生产机器,使得可经由处理设备或其他可编程数据处理装置执行的指令创建用于实现在流程图和/或框图的一个或多个框中指定的操作/动作的装置。
一些计算机程序指令还可以存储在计算机可读介质中,该计算机可读介质可以指示计算机、其他可编程数据处理装置或一个或多个其他设备以特定方式操作,使得指令存储在计算机可读介质中以产生包括实现在流程图和/或框图的一个或多个框中指定的操作/动作的指令的制品。一些计算机程序指令也可以被加载到计算设备、其他可编程数据处理装置、或一个或多个其他设备上,以致使在计算设备、其他可编程装置、或一个或多个其他设备上执行一系列操作步骤以产生计算机实现的过程,使得由计算机或其他可编程装置执行的指令提供用于实现在流程图和/或框图的框中指定的一个或多个操作/一个或多个动作的一个或多个过程。
以上附图中的流程图和/或框图可以示出根据本技术的各方面的装置、系统、方法和/或计算机程序产品的可能具体实施的架构、功能和/或操作。在这方面,流程图或框图中的框可以表示代码的模块、片段或部分,其可以包括用于实现一个或多个指定逻辑功能的一个或多个可执行指令。还应当指出,在一些另选的方面中,框中示出的一些功能可以不按图中所示的顺序发生。例如,事实上,连续示出的两个框可基本上同时执行,或者这些框有时可以采用相反的顺序执行,这取决于所涉及的操作。还应当注意,框图和/或流程图图示的框或框图和/或流程图图示中的框的组合可以由可执行一个或多个指定操作或动作的基于专用硬件的系统,或专用硬件和计算机指令的组合来实现。
虽然已经详细说明和讨论了本技术的一个或多个方面,但本领域普通技术人员将理解,在不脱离如所附权利要求中阐述的本技术的范围的情况下,可以对各个方面进行修改和/或调整。
Claims (22)
1.一种存储设备,包括:
处理器;
操作存储器;
可远程寻址的存储器;
构造接口,所述构造接口被配置为在所述构造接口和多个对等存储设备之间通过数据连接件与所述多个对等存储设备进行通信;
服务请求处理程序,所述服务请求处理程序存储在所述操作存储器中并能够由所述处理器执行,以从通过所述构造接口接收的服务主机请求中识别所请求的托管服务;和
用于管理分布式数据管理操作以及相关的过程和请求的多个托管服务:
存储在所述操作存储器中并能够由所述处理器执行,以访问用于所述多个对等存储设备的数据管理操作的本地存储器资源和本地计算资源;以及
包括所述所请求的托管服务。
2.根据权利要求1所述的存储设备,其中:
所述可远程寻址的存储器被配置为在所述可远程寻址的存储器中分配传输缓冲器空间;以及
所述所请求的托管服务包括所述传输缓冲器空间和所述多个对等存储设备中的至少一个之间的数据传输。
3.根据权利要求2所述的存储设备,还包括擦除编码引擎,其中所述所请求的托管服务还包括使用所述擦除编码引擎来擦除用于所述数据传输的代码数据的擦除编码操作。
4.根据权利要求3所述的存储设备,其中:
所述可远程寻址的存储器还被配置为在所述可远程寻址的存储器中分配奇偶校验缓冲器空间;以及
所述所请求的托管服务还包括:
从所述奇偶校验缓冲器空间读取奇偶校验缓冲器数据;
对从所述奇偶校验缓冲器空间读取的所述奇偶校验缓冲器数据进行擦除编码;并且
将所擦除编码的奇偶校验缓冲器数据写回到所述奇偶校验缓冲器空间。
5.根据权利要求1所述的存储设备,还包括:
逻辑映射存储器,所述逻辑映射存储器包括:
用于所述存储设备的存储设备介质逻辑映射信息;和
用于所述多个对等存储设备中的至少一个对等存储设备的主机逻辑映射信息,
其中所述多个托管服务包括:
使用至少一个主机逻辑块地址来从所述逻辑映射存储器识别主机逻辑映射信息;以及
将所识别的主机逻辑映射信息发送到请求者。
6.根据权利要求5所述的存储设备,其中所述所请求的托管服务还包括基于所述多个对等存储设备中的至少一个对等存储设备的改变来更新所述主机逻辑映射信息。
7.根据权利要求6所述的存储设备,其中所述所请求的托管服务的所述请求者是所述多个对等存储设备中的至少一个对等存储设备。
8.根据权利要求6所述的存储设备,其中:
所述可远程寻址的存储器被配置为在所述可远程寻址的存储器中分配日志缓冲器空间;
所述多个托管服务包括将对所述主机逻辑映射信息的所请求的更新记录到所述日志缓冲器空间中;以及
所述所请求的托管服务包括在初始化事件之后处理来自所述日志缓冲器空间的所请求的更新。
9.根据权利要求5所述的存储设备,其中:
所述主机逻辑映射信息包括用于存储在所述多个对等存储设备中的至少一个对等存储设备中的主机逻辑映射信息的主机逻辑映射奇偶校验数据;以及
所述所请求的托管服务包括从所述主机逻辑映射奇偶校验数据重新创建主机逻辑映射信息。
10.根据权利要求5所述的存储设备,其中所述所请求的托管服务包括:
接收主机逻辑块地址的验证列表;
识别对应于主机逻辑块地址的所述验证列表的主机逻辑映射信息;以及
基于所识别的主机逻辑映射信息生成用于垃圾收集的主机逻辑块地址的筛选列表。
11. 根据权利要求10所述的存储设备,其中:
接收主机逻辑块地址的所述验证列表包括垃圾收集模块,所述垃圾收集模块将所述验证列表写入所述可远程寻址的存储器中;以及
生成主机逻辑块地址的所述筛选列表包括将所述筛选列表写入所述可远程寻址的存储器中以供所述垃圾收集模块访问。
12.根据权利要求1所述的存储设备,其中:
所述本地存储器资源选自:
所述操作存储器,
所述可远程寻址的存储器,或
逻辑映射存储器,和
所述本地计算资源选自:
所述处理器,或者
擦除编码引擎。
13.一种用于由存储设备执行的计算机实现的方法,包括:
管理可远程寻址的存储器;
通过数据连接件与多个对等存储设备进行通信;
存储用于访问所述多个对等存储设备的数据管理操作的本地存储器资源和本地计算资源的多个托管服务,其中所述托管服务管理分布式数据管理操作以及相关的过程和请求;
从服务请求者接收服务主机请求;
从所述服务主机请求中识别所请求的托管服务;
使用所述可远程寻址的存储器执行所述所请求的托管服务;以及
响应于所述所请求的托管服务完成而向所述服务请求者返回状态消息。
14. 根据权利要求13所述的计算机实现的方法,还包括:
在所述可远程寻址的存储器中分配传输缓冲器空间;以及
在所述传输缓冲器空间和所述多个对等存储设备中的至少一个对等存储设备之间传输数据。
15.根据权利要求14所述的计算机实现的方法,还包括:
在所述可远程寻址的存储器中分配奇偶校验缓冲器空间;
从所述奇偶校验缓冲器空间读取奇偶校验缓冲器数据;
对从所述奇偶校验缓冲器空间读取的所述奇偶校验缓冲器数据进行擦除编码;以及
将擦除编码的奇偶校验缓冲器数据写回到所述奇偶校验缓冲器空间。
16.根据权利要求13所述的计算机实现的方法,还包括:
管理逻辑映射存储器,所述逻辑映射存储器包括:
用于所述存储设备中的至少一个存储介质的存储设备介质逻辑映射信息;和
用于所述多个对等存储设备中的至少一个对等存储设备的主机逻辑映射信息;
使用至少一个主机逻辑块地址从所述逻辑映射存储器识别主机逻辑映射信息;以及
使用所识别的主机逻辑映射信息来执行所述所请求的托管服务。
17.根据权利要求16所述的计算机实现的方法,还包括在执行所述所请求的托管服务的同时,基于所述多个对等存储设备中的至少一个对等存储设备的改变来更新所述主机逻辑映射信息。
18.根据权利要求17所述的计算机实现的方法,还包括:
在所述可远程寻址的存储器中分配日志缓冲器空间;
将对所述主机逻辑映射信息的所请求的更新记录到所述日志缓冲器空间中;以及
响应于所述服务主机请求,在初始化事件之后处理来自所述日志缓冲器空间的所请求的更新。
19. 根据权利要求16所述的计算机实现的方法,还包括:
将主机逻辑映射奇偶校验数据存储在所述逻辑映射存储器中,用于存储在所述多个对等存储设备中的至少一个对等存储设备中的主机逻辑映射信息;以及
响应于所述服务主机请求,从所述主机逻辑映射奇偶校验数据重新创建主机逻辑映射信息。
20.一种存储设备,包括:
至少一种存储介质;
可远程寻址的缓冲器存储器;
用于通过数据连接件与多个对等存储设备进行通信的装置;
用于存储用于访问所述多个对等存储设备的数据管理操作的本地存储器资源和本地计算资源的多个托管服务的装置,其中所述托管服务管理分布式数据管理操作以及相关的过程和请求;
用于从服务请求者接收服务主机请求的装置;
用于从所述服务主机请求中识别所请求的托管服务的装置;和
用于使用所述可远程寻址的缓冲器存储器执行所述所请求的托管服务的装置。
21.一种存储设备,包括:
至少一种存储介质;
构造接口,所述构造接口被配置为在所述构造接口和多个对等存储设备之间通过数据连接件与所述多个对等存储设备进行通信;
逻辑映射存储器,所述逻辑映射存储器包括:
用于所述至少一个存储介质的存储设备介质逻辑映射信息,
其中所述存储设备介质逻辑映射信息被配置在具有等于所述至少一个存储介质的页面编程尺寸的介质块尺寸的连续逻辑块中;以及
用于所述多个对等存储设备中的至少一个对等存储设备的主机逻辑映射信息,其中所述主机逻辑映射信息被配置在主机逻辑块中,其中所述主机逻辑块具有的主机块尺寸小于所述介质块尺寸;
服务请求处理程序,所述服务请求处理程序被配置为从通过所述构造接口接收的服务主机请求中识别所请求的托管服务;和
用于管理分布式数据管理操作以及相关的过程和请求的多个托管服务,所述多个托管服务被配置为访问用于所述多个对等存储设备的数据操作的所述逻辑映射存储器,其中所述服务主机请求发起所述多个托管服务中的至少一个托管服务。
22.根据权利要求21所述的存储设备,还包括:
介质管理器,所述介质管理器被配置为管理用于所述至少一个存储介质的闪存转换层,其中所述介质管理器在所述至少一个存储介质中定义具有所述介质块尺寸的连续逻辑块。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/024,738 | 2018-06-30 | ||
US16/024,738 US10725941B2 (en) | 2018-06-30 | 2018-06-30 | Multi-device storage system with hosted services on peer storage devices |
PCT/US2019/020165 WO2020005337A1 (en) | 2018-06-30 | 2019-02-28 | Multi-device storage system with hosted services on peer storage devices |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111433732A CN111433732A (zh) | 2020-07-17 |
CN111433732B true CN111433732B (zh) | 2023-08-22 |
Family
ID=68986774
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980005982.4A Active CN111433732B (zh) | 2018-06-30 | 2019-02-28 | 存储设备以及由存储设备执行的计算机实现的方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US10725941B2 (zh) |
CN (1) | CN111433732B (zh) |
DE (1) | DE112019000149T5 (zh) |
WO (1) | WO2020005337A1 (zh) |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10824369B2 (en) * | 2018-07-31 | 2020-11-03 | Nutanix, Inc. | Elastic method of remote direct memory access memory advertisement |
US11372580B2 (en) | 2018-08-07 | 2022-06-28 | Marvell Asia Pte, Ltd. | Enabling virtual functions on storage media |
US11656775B2 (en) | 2018-08-07 | 2023-05-23 | Marvell Asia Pte, Ltd. | Virtualizing isolation areas of solid-state storage media |
US11010314B2 (en) | 2018-10-30 | 2021-05-18 | Marvell Asia Pte. Ltd. | Artificial intelligence-enabled management of storage media access |
KR20200069889A (ko) * | 2018-12-07 | 2020-06-17 | 에스케이하이닉스 주식회사 | 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법 |
US11481118B2 (en) * | 2019-01-11 | 2022-10-25 | Marvell Asia Pte, Ltd. | Storage media programming with adaptive write buffer release |
US10831407B2 (en) * | 2019-01-31 | 2020-11-10 | EMC IP Holding Company LLC | Write flow offloading to raid array storage enclosure |
US11204716B2 (en) | 2019-01-31 | 2021-12-21 | EMC IP Holding Company LLC | Compression offloading to RAID array storage enclosure |
JP6942748B2 (ja) * | 2019-03-19 | 2021-09-29 | 株式会社日立製作所 | 分散ストレージシステム、データ管理方法、及びデータ管理プログラム |
KR20200123684A (ko) * | 2019-04-22 | 2020-10-30 | 에스케이하이닉스 주식회사 | 메모리 시스템에서 맵 정보를 전송하는 장치 |
KR20200137181A (ko) | 2019-05-29 | 2020-12-09 | 에스케이하이닉스 주식회사 | 메모리 시스템에서 맵정보를 전송하는 장치 |
US11422942B2 (en) | 2019-04-02 | 2022-08-23 | SK Hynix Inc. | Memory system for utilizing a memory included in an external device |
KR20210004502A (ko) | 2019-07-05 | 2021-01-13 | 에스케이하이닉스 주식회사 | 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법 |
KR20200139433A (ko) | 2019-06-04 | 2020-12-14 | 에스케이하이닉스 주식회사 | 컨트롤러의 동작 방법 및 메모리 시스템 |
US11055256B2 (en) * | 2019-04-02 | 2021-07-06 | Intel Corporation | Edge component computing system having integrated FaaS call handling capability |
US11055188B2 (en) | 2019-04-12 | 2021-07-06 | EMC IP Holding Company LLC | Offloading error processing to raid array storage enclosure |
US11663139B2 (en) * | 2019-04-22 | 2023-05-30 | SK Hynix Inc. | Apparatus for transmitting map information in memory system |
FR3097994B1 (fr) * | 2019-06-28 | 2022-03-11 | St Microelectronics Rousset | Modification d'une mémoire d'un microprocesseur sécurisé |
US11127442B2 (en) * | 2019-12-06 | 2021-09-21 | Xilinx, Inc. | Data transfers between a memory and a distributed compute array |
US11334434B2 (en) * | 2020-02-19 | 2022-05-17 | Seagate Technology Llc | Multi-level erasure system with cooperative optimization |
US11675499B2 (en) | 2020-06-19 | 2023-06-13 | Western Digital Technologies, Inc. | Synchronous discovery logs in a fabric storage system |
US11079939B1 (en) | 2020-07-30 | 2021-08-03 | Hewlett Packard Enterprise Development Lp | Distributing I/O Q-connections of subsytems among hosts |
US11314423B2 (en) * | 2020-08-21 | 2022-04-26 | Seagate Technology Llc | Sync-mark detection error recovery |
US11733920B2 (en) * | 2020-09-10 | 2023-08-22 | Western Digital Technologies, Inc. | NVMe simple copy command support using dummy virtual function |
US20210117246A1 (en) | 2020-09-25 | 2021-04-22 | Intel Corporation | Disaggregated computing for distributed confidential computing environment |
US11531498B2 (en) * | 2020-11-20 | 2022-12-20 | Western Digital Technologies, Inc. | Peer storage device messaging over control bus |
US20220187992A1 (en) * | 2020-12-16 | 2022-06-16 | Kioxia Corporation | Systems and methods for data copy offload for storage devices |
US20210117123A1 (en) * | 2020-12-24 | 2021-04-22 | Intel Corporation | Accelerated raid rebuild offload |
US11372553B1 (en) | 2020-12-31 | 2022-06-28 | Seagate Technology Llc | System and method to increase data center availability using rack-to-rack storage link cable |
US11573718B2 (en) | 2021-02-12 | 2023-02-07 | Western Digital Technologies, Inc. | Disaggregation of control path and data path |
US11818031B2 (en) | 2021-03-04 | 2023-11-14 | Dell Products L.P. | Automated internet protocol (IP) route update service for ethernet layer 3 (L3) IP storage area networks (SANs) |
US11805171B2 (en) * | 2021-03-04 | 2023-10-31 | Dell Products L.P. | Automated ethernet layer 3 (L3) connectivity between non-volatile memory express over fabric (NVMe-oF) hosts and NVM-oF subsystems using bind |
US20220300165A1 (en) * | 2021-03-22 | 2022-09-22 | Google Llc | Cooperative Storage Architecture |
WO2022207551A1 (en) | 2021-03-29 | 2022-10-06 | Arlanxeo Netherlands B.V. | Process for producing polymers |
US11567883B2 (en) * | 2021-06-04 | 2023-01-31 | Western Digital Technologies, Inc. | Connection virtualization for data storage device arrays |
US11507321B1 (en) | 2021-06-04 | 2022-11-22 | Western Digital Technologies, Inc. | Managing queue limit overflow for data storage device arrays |
US11698854B2 (en) | 2021-08-25 | 2023-07-11 | Western Digital Technologies, Inc. | Global extension of a logical-to-physical region of a data storage device |
WO2023217397A1 (en) | 2022-05-09 | 2023-11-16 | Arlanxeo Netherlands B.V. | Process for producing polymers |
US11671350B1 (en) * | 2022-08-15 | 2023-06-06 | Red Hat, Inc. | Data request servicing using multiple paths of smart network interface cards |
Family Cites Families (64)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5208813A (en) * | 1990-10-23 | 1993-05-04 | Array Technology Corporation | On-line reconstruction of a failed redundant array system |
US5220653A (en) | 1990-10-26 | 1993-06-15 | International Business Machines Corporation | Scheduling input/output operations in multitasking systems |
US5530948A (en) | 1993-12-30 | 1996-06-25 | International Business Machines Corporation | System and method for command queuing on raid levels 4 and 5 parity drives |
JP4072271B2 (ja) | 1999-02-19 | 2008-04-09 | 株式会社日立製作所 | 複数のオペレーティングシステムを実行する計算機 |
US7934074B2 (en) | 1999-08-04 | 2011-04-26 | Super Talent Electronics | Flash module with plane-interleaved sequential writes to restricted-write flash chips |
US7809854B2 (en) * | 2002-02-12 | 2010-10-05 | Open Design, Inc. | Logical routing system |
US6871263B2 (en) | 2001-08-28 | 2005-03-22 | Sedna Patent Services, Llc | Method and apparatus for striping data onto a plurality of disk drives |
US7162582B2 (en) * | 2002-11-18 | 2007-01-09 | Aristos Logic Corporation | Caching in a virtualization system |
US10075750B2 (en) * | 2002-12-10 | 2018-09-11 | Sony Interactive Entertainment America Llc | Porting locally processed media data with low latency to a remote client device via various wireless links |
US7996645B2 (en) * | 2003-09-26 | 2011-08-09 | Hitachi Global Storage Technologies Netherlands B.V. | Log-structured file system for disk drives with shingled writing |
JP4766240B2 (ja) | 2005-11-08 | 2011-09-07 | 日本電気株式会社 | ファイル管理方法、装置、およびプログラム |
US9118698B1 (en) | 2005-12-02 | 2015-08-25 | Branislav Radovanovic | Scalable data storage architecture and methods of eliminating I/O traffic bottlenecks |
US7962827B2 (en) | 2006-03-08 | 2011-06-14 | Marvell World Trade Ltd. | Systems and methods for achieving higher coding rate using parity interleaving |
US8307359B1 (en) * | 2006-06-23 | 2012-11-06 | Emc Corporation | Embedded virtual storage area network using a virtual block network fabric |
US8296337B2 (en) | 2006-12-06 | 2012-10-23 | Fusion-Io, Inc. | Apparatus, system, and method for managing data from a requesting device with an empty data token directive |
US8151082B2 (en) | 2007-12-06 | 2012-04-03 | Fusion-Io, Inc. | Apparatus, system, and method for converting a storage request into an append data storage command |
TWI467370B (zh) | 2009-01-23 | 2015-01-01 | Infortrend Technology Inc | 執行儲存虛擬化之儲存子系統及儲存系統架構及其方法 |
US8250283B1 (en) | 2009-05-22 | 2012-08-21 | Google Inc. | Write-distribute command for RAID mirroring |
KR101644125B1 (ko) | 2009-09-22 | 2016-07-29 | 삼성전자주식회사 | 비휘발성 메모리를 이용한 로깅 최적화 장치 및 방법 |
US8468534B2 (en) | 2010-04-05 | 2013-06-18 | Apple Inc. | Dynamic priority queuing |
US8677068B2 (en) | 2010-06-18 | 2014-03-18 | Lsi Corporation | Scalable storage devices |
US8473648B2 (en) | 2010-12-16 | 2013-06-25 | Lsi Corporation | System and method of I/O path virtualization between a raid controller and an environment service module in a storage area network |
US8626989B2 (en) | 2011-02-02 | 2014-01-07 | Micron Technology, Inc. | Control arrangements and methods for accessing block oriented nonvolatile memory |
US9021178B2 (en) | 2011-05-02 | 2015-04-28 | Western Digital Technologies, Inc. | High performance path for command processing |
US8706834B2 (en) | 2011-06-30 | 2014-04-22 | Amazon Technologies, Inc. | Methods and apparatus for remotely updating executing processes |
US9389805B2 (en) * | 2011-08-09 | 2016-07-12 | Seagate Technology Llc | I/O device and computing host interoperation |
US8806160B2 (en) | 2011-08-16 | 2014-08-12 | Pure Storage, Inc. | Mapping in a storage system |
US9098406B2 (en) * | 2012-01-23 | 2015-08-04 | Empire Technology Development Llc | Managing addressable memory in heterogeneous multicore processors |
US9645917B2 (en) * | 2012-05-22 | 2017-05-09 | Netapp, Inc. | Specializing I/O access patterns for flash storage |
US9390055B2 (en) | 2012-07-17 | 2016-07-12 | Coho Data, Inc. | Systems, methods and devices for integrating end-host and network resources in distributed memory |
US9268682B2 (en) | 2012-10-05 | 2016-02-23 | Skyera, Llc | Methods, devices and systems for physical-to-logical mapping in solid state drives |
US9300574B2 (en) * | 2012-12-31 | 2016-03-29 | Advanced Micro Devices, Inc. | Link aggregation emulation for virtual NICs in a cluster server |
US9652376B2 (en) | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US20140280767A1 (en) * | 2013-03-15 | 2014-09-18 | Western Digital Technologies, Inc. | Web services provided from software framework |
US9122588B1 (en) * | 2013-03-15 | 2015-09-01 | Virident Systems Inc. | Managing asymmetric memory system as a cache device |
US9009565B1 (en) | 2013-03-15 | 2015-04-14 | Pmc-Sierra, Inc. | Systems and methods for mapping for solid-state memory |
US9438665B1 (en) | 2013-06-18 | 2016-09-06 | Amazon Technologies, Inc. | Scheduling and tracking control plane operations for distributed storage systems |
US9053167B1 (en) | 2013-06-19 | 2015-06-09 | Amazon Technologies, Inc. | Storage device selection for database partition replicas |
US20160179403A1 (en) | 2013-07-17 | 2016-06-23 | Hitachi, Ltd. | Storage controller, storage device, storage system, and semiconductor storage device |
US9519577B2 (en) | 2013-09-03 | 2016-12-13 | Sandisk Technologies Llc | Method and system for migrating data between flash memory devices |
US9405623B2 (en) | 2013-09-25 | 2016-08-02 | Xyratex Technology Limited | Method of, and apparatus for, layout rectification of erasure encoded storage systems |
US9740409B2 (en) * | 2013-12-13 | 2017-08-22 | Ineda Systems, Inc. | Virtualized storage systems |
US9448924B2 (en) | 2014-01-08 | 2016-09-20 | Netapp, Inc. | Flash optimized, log-structured layer of a file system |
US9600203B2 (en) | 2014-03-11 | 2017-03-21 | Amazon Technologies, Inc. | Reducing data volume durability state for block-based storage |
US9794186B2 (en) * | 2014-03-27 | 2017-10-17 | Nicira, Inc. | Distributed network address translation for efficient cloud service access |
US9639268B2 (en) | 2014-08-21 | 2017-05-02 | Datrium, Inc. | Distributed data storage system with key-based addressing |
US10380026B2 (en) | 2014-09-04 | 2019-08-13 | Sandisk Technologies Llc | Generalized storage virtualization interface |
US10621138B2 (en) * | 2014-09-25 | 2020-04-14 | Intel Corporation | Network communications using pooled memory in rack-scale architecture |
WO2016051512A1 (ja) | 2014-09-30 | 2016-04-07 | 株式会社日立製作所 | 分散型ストレージシステム |
US9720596B1 (en) | 2014-12-19 | 2017-08-01 | EMC IP Holding Company LLC | Coalescing writes for improved storage utilization |
EP3247111A4 (en) * | 2015-01-12 | 2018-06-20 | LG Electronics Inc. | Broadcast signal transmission device, broadcast signal reception device, broadcast signal transmission method, and broadcast signal reception method |
US11099746B2 (en) | 2015-04-29 | 2021-08-24 | Marvell Israel (M.I.S.L) Ltd. | Multi-bank memory with one read port and one or more write ports per cycle |
US10140149B1 (en) * | 2015-05-19 | 2018-11-27 | Pure Storage, Inc. | Transactional commits with hardware assists in remote memory |
TWI531963B (zh) | 2015-06-04 | 2016-05-01 | Accelstor Inc | Data storage systems and their specific instruction enforcement methods |
US9904490B2 (en) * | 2015-06-26 | 2018-02-27 | Toshiba Memory Corporation | Solid-state mass storage device and method for persisting volatile data to non-volatile media |
US9817714B2 (en) * | 2015-08-28 | 2017-11-14 | Intel Corporation | Memory device on-die error checking and correcting code |
US10013370B2 (en) | 2015-12-29 | 2018-07-03 | EMC IP Holding Company LLC | Method and system for providing access of a storage system using a shared storage module as a transport mechanism |
WO2017151211A1 (en) * | 2016-02-29 | 2017-09-08 | Microsemi Storage Solutions (U.S.), Inc. | Method and system for handling random access write requests for a shingled magnetic recording hard disk drive |
US9780829B1 (en) * | 2016-03-24 | 2017-10-03 | Focal Point Positioning Ltd. | Method, apparatus, computer program, chip set, or data structure for correlating a digital signal and a correlation code |
US10164897B1 (en) * | 2016-06-28 | 2018-12-25 | Amazon Technologies, Inc. | System and method for host isolation in a web-based computing system |
US10289568B2 (en) | 2016-07-07 | 2019-05-14 | Microsoft Technology Licensing, Llc | Application-driven storage systems for a computing system |
US10476846B2 (en) * | 2016-08-05 | 2019-11-12 | The Boeing Company | Data-at-rest (DAR) encryption for integrated storage media |
US10230398B2 (en) | 2016-08-19 | 2019-03-12 | Samsung Electronics Co., Ltd. | Erasure code data protection and recovery computation system and method |
US11023275B2 (en) * | 2017-02-09 | 2021-06-01 | Intel Corporation | Technologies for queue management by a host fabric interface |
-
2018
- 2018-06-30 US US16/024,738 patent/US10725941B2/en active Active
-
2019
- 2019-02-28 WO PCT/US2019/020165 patent/WO2020005337A1/en active Application Filing
- 2019-02-28 DE DE112019000149.3T patent/DE112019000149T5/de active Pending
- 2019-02-28 CN CN201980005982.4A patent/CN111433732B/zh active Active
-
2020
- 2020-06-26 US US16/913,596 patent/US11281601B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20200004701A1 (en) | 2020-01-02 |
US11281601B2 (en) | 2022-03-22 |
WO2020005337A1 (en) | 2020-01-02 |
CN111433732A (zh) | 2020-07-17 |
US10725941B2 (en) | 2020-07-28 |
DE112019000149T5 (de) | 2020-09-03 |
US20200327074A1 (en) | 2020-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111433732B (zh) | 存储设备以及由存储设备执行的计算机实现的方法 | |
CN111373362B (zh) | 具有分布式读取/写入处理的多设备存储系统 | |
US11947423B2 (en) | Data reconstruction in distributed storage systems | |
CN111480148B (zh) | 具有对等数据恢复的存储系统 | |
US11243837B2 (en) | Data storage drive rebuild with parity generation offload using peer-to-peer data transfers | |
US10725859B2 (en) | Parity generation offload using peer-to-peer data transfers in data storage system | |
US20180341606A1 (en) | Offloaded Disaggregated Storage Architecture | |
US11182258B2 (en) | Data rebuild using dynamic peer work allocation | |
US9026845B2 (en) | System and method for failure protection in a storage array | |
CN111465922B (zh) | 具有对等数据清理的存储系统 | |
US10628074B2 (en) | Tiered storage system with data routing by peer storage devices | |
US10878111B2 (en) | Peer storage devices supporting protection information | |
US10956058B2 (en) | Tiered storage system with tier configuration by peer storage devices | |
US11232032B2 (en) | Incomplete write group journal | |
US10747455B2 (en) | Peer storage system with peer operation state indicator | |
KR20220083716A (ko) | 블록 디바이스의 구성 | |
KR20220083710A (ko) | 블록 디바이스의 구성 | |
US20230418518A1 (en) | Peer RAID Control Among Peer Data Storage Devices |
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 |