CN114443346A - 用于存储装置的基于奇偶校验的故障保护的系统及方法 - Google Patents
用于存储装置的基于奇偶校验的故障保护的系统及方法 Download PDFInfo
- Publication number
- CN114443346A CN114443346A CN202111268276.4A CN202111268276A CN114443346A CN 114443346 A CN114443346 A CN 114443346A CN 202111268276 A CN202111268276 A CN 202111268276A CN 114443346 A CN114443346 A CN 114443346A
- Authority
- CN
- China
- Prior art keywords
- storage device
- data
- buffer
- controller
- host
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/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
- 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/1012—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 using codes or arrangements adapted for a specific type of error
- G06F11/1032—Simple parity
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/065—Replication mechanisms
-
- 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/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30029—Logical and Boolean instructions, e.g. XOR, NOT
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)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明大体上涉及用于存储装置的基于奇偶校验的故障保护的系统及方法。本文中所描述的各种实施方案涉及用于为驱动器故障提供数据保护及恢复的系统及方法,其包含由第一存储装置的控制器从主机接收请求。响应于接收到所述请求,所述控制器从第二存储装置传送新数据。所述控制器通过对所述新数据及现有数据执行XOR运算来确定XOR结果,所述现有数据存储于非易失性存储装置中。
Description
相关专利申请案的交叉参考
本申请案主张2020年10月30日申请的题为“用于存储装置的基于奇偶校验的故障保护的系统及方法(System and Methods for Parity-Based Failure Protection forStorage Devices)”的序列号为63/108,196的美国临时专利申请案的优先权,所述申请案的全部内容特此以宛如全文阐述引用的方式并入本文中用于所有目的。
技术领域
本公开大体上涉及用于数据存储装置中的驱动器故障的数据保护及恢复的系统、方法及非暂时性处理器可读媒体。
背景技术
廉价驱动器冗余阵列(RAID)可在基于非易失性存储器装置的驱动器上实施以实现防驱动器故障的保护。各种形式的RAID可基于数据是被复制还是奇偶校验保护来大体分类。就存储成本来说,复制更昂贵,因为复制使所需装置的数目加倍。
另一方面,奇偶校验保护通常需要比复制的存储成本低的存储成本。在RAID 5的实例中,需要一个额外装置通过保存最少两个数据装置的奇偶校验数据来在给定时间为单装置故障提供保护。当采用RAID 5奇偶校验保护时,额外存储成本在总成本中的百分比通常随着RAID群组中受保护装置的数目增加而降低。
就为多达两个装置同时发生故障提供保护的RAID 6来说,需要两个额外装置来保存最少两个数据装置的奇偶校验数据。类似地,当采用RAID 6奇偶校验保护时,额外存储成本在总成本中的百分比随着RAID群组中受保护装置的数目增加而降低。为减轻保存奇偶校验数据的驱动器发生故障的风险,轮换其上存储奇偶校验数据的驱动器。
奇偶校验保护的其它变体包含组合复制与奇偶校验保护(例如,如同RAID 51及RAID 61)以改变在装置之间使用的条带大小以匹配给定应用等等。
发明内容
在一些布置中,一种第一存储装置包含非易失性存储装置及控制器。所述控制器经配置以:从可操作地耦合到所述第一存储装置的主机接收请求;响应于接收到所述请求,从第二存储装置传送新数据;及通过对所述新数据及现有数据执行XOR运算来确定XOR结果,所述现有数据存储于所述非易失性存储装置中。
在一些布置中,一种第一存储装置包含非易失性存储装置及控制器。所述控制器经配置以:从第二存储装置接收请求;响应于接收到所述请求,从所述第二存储装置传送新数据;及通过对所述新数据及现有数据执行XOR运算来确定XOR结果,所述现有数据存储于所述非易失性存储装置中。
附图说明
图1展示根据一些实施方案的包含存储装置及主机的系统的实例的框图。
图2A是说明根据一些实施方案的用于执行数据更新的实例方法的框图。
图2B是说明根据一些实施方案的用于执行数据更新的实例方法的流程图。
图3A是说明根据一些实施方案的用于执行奇偶校验更新的实例方法的框图。
图3B是说明根据一些实施方案的用于执行奇偶校验更新的实例方法的流程图。
图4A是说明根据一些实施方案的用于执行数据恢复的实例方法的框图。
图4B是说明根据一些实施方案的用于执行数据恢复的实例方法的流程图。
图5A是说明根据一些实施方案的用于使备用存储装置投入使用的实例方法的框图。
图5B是说明根据一些实施方案的用于使备用存储装置投入使用的实例方法的流程图。
图6是说明根据一些实施方案的用于为驱动器故障提供数据保护及恢复的实例方法的过程流程图。
图7A是说明根据一些实施方案的用于执行奇偶校验更新的实例方法的框图。
图7B是说明根据一些实施方案的用于执行奇偶校验更新的实例方法的流程图。
图8A是说明根据一些实施方案的用于执行数据恢复的实例方法的框图。
图8B是说明根据一些实施方案的用于执行数据恢复的实例方法的流程图。
图9A是说明根据一些实施方案的用于使备用存储装置投入使用的实例方法的框图。
图9B是说明根据一些实施方案的用于使备用存储装置投入使用的实例方法的流程图。
图10是说明根据一些实施方案的用于为驱动器故障提供数据保护及恢复的实例方法的过程流程图。
图11是说明根据一些实施方案的用于为驱动器故障提供数据保护及恢复的实例方法的过程流程图。
图12是说明根据一些实施方案的用于更新数据的主机侧视图的示意图。
图13是说明根据一些实施方案的奇偶校验数据放置的示意图。
具体实施方式
各种挑战面临基于奇偶校验的保护。目前,绝大多数实施方案通过专用磁盘阵列控制器(DAC)实现。DAC通过对给定RAID群组中每一数据磁盘的每一条带数据执行异或(XOR)来计算奇偶校验数据且将所得奇偶校验数据存储于一或多个奇偶校验磁盘上。DAC通常通过外围组件互连快速(PCIe)总线或网络附接到主中央处理单元(CPU),同时DAC使用存储专用互连及协议(接口)(例如(但不限于)AT附接(ATA)、小型计算机系统接口(SCSI)、光纤通道及串行附接SCSI(SAS))来连接磁盘且与其通信。对于存储专用互连,需要专用硬件控制器在PCIe总线与存储接口(如SCSI或光纤通道)之间转译。
申请人已认识到,基于非易失性存储器的存储装置(例如固态硬盘(SSD))的演进已从根本上改变系统架构,因为存储装置通过非易失性存储器快速(NVMe)接口直接附接到PCIe总线上,因此消除路径的低效率且优化成本、功耗及性能。尽管SSD故障保护仍需要DAC的功能性,但DAC功能性正从专用硬件控制器迁移到在通用CPU上运行的软件。
由于硬盘驱动器(HDD)的存取时间是毫秒级,因此未暴露DAC低效率。SSD的出现已减少数据存取时间,因此对DAC提出非常严格要求以导出及聚合大量SSD的性能。申请人认识到,随着SSD的存取时间减少到数十微秒数量级,DAC的常规实施方案变得低效,因为DAC的性能转译成SSD的性能。
由于NVMe的出现,用于HDD的接口需要升级以与SSD兼容。此类接口界定在主机与存储装置之间传递命令、返回状态及交换数据的方式。接口可优化及简化与CPU的直接连接,而不受中间接口转译器困扰。
此外,随着SSD采用开始增加,HDD的成本(每GB)已显着降低,其部分由于已在HDD中提供以区别市场上的SSD的提高容量。然而,提高容量以牺牲性能为代价,尤其是在RAID群组中的驱动器发生故障时重建数据。因此,DAC供应商从使用基于奇偶校验的保护移动到基于复制的HDD保护。HDD的数据存储及存取时间已比SSD的数据存储及存取时间慢,因此封装更多容量使HDD的平均性能更差。在这方面,DAC供应商不想通过使用基于奇偶校验的保护来进一步减慢HDD。因此,基于复制的保护实际上几乎已普遍用于HDD的标准DAC中。当SSD对DAC提出更高数量级的改进要求时,DAC也可仅对SSD及时重复使用基于复制的保护。
因此,基于奇偶校验的SSD保护未继续系统范围内的架构改变。另外,还以特殊库存单位(SKU)的形式在主CPU上设置成本障碍及存取障碍及选定客户的有限可用性。DAC供应商失去为SSD提供基于奇偶校验的保护的自由,就像DAC供应商对基于复制的SSD的情况。
因此,对SSD实施基于RAID 5及RAID 6奇偶校验的保护变得更难以实施。
通常,通过依赖主机执行XOR计算且更新SSD上的奇偶校验数据来为存储装置(例如SSD)创建RAID(例如RAID 5及RAID 6)冗余。SSD执行在不知道数据是否为奇偶校验数据的情况下从存储媒体(例如存储器阵列)读取数据或将数据写入到所述存储媒体其常见功能。因此,在RAID 5及RAID 6中,计算开销以及额外数据产生及移动通常成为存储媒体的性能瓶颈。
本文中所公开的布置涉及基于奇偶校验的保护方案,其是用于SSD故障保护的具成本效益解决方案,而不影响更快地满足业务需求的需要。本公开改进基于奇偶校验的保护,同时创建与当前系统架构及演进变化协调的解决方案。在一些布置中,本公开涉及在存储系统的两个或更多个元件之间协作地执行数据保护及恢复操作。尽管本文中呈现非易失性存储器装置作为实例,但所公开的方案可在通过接口连接到主机且暂时或永久存储数据供主机以后检索的任何存储系统或装置上实施。
为帮助说明本发明实施方案,图1展示根据一些实例的包含耦合到主机101的存储装置100a、100b、…、100n(统称为存储装置100)的系统的框图。主机101可为由用户操作的用户装置或存储装置100的自主中央控制器,其中主机101及存储装置100对应于存储子系统或存储设备。主机101可连接到通信网络109(经由网络接口108),使得其它主机计算机(未展示)可经由通信网络109存取存储子系统或存储设备。此存储子系统或设备的实例包含全闪存阵列(AFA)或网络附接存储(NAS)装置。如所展示,主机101包含存储器102、处理器104及总线106。处理器104可操作地耦合到存储器102及总线106。处理器104有时称为主机101的中央处理单元(CPU),且经配置以执行主机101的处理。
存储器102是主机101的本地存储器。在一些实例中,存储器102或是缓冲区,有时称为主机缓冲区。在一些实例中,存储器102是易失性存储装置。在其它实例中,存储器102是非易失性永久存储装置。存储器102的实例包含(但不限于)随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态RAM(SRAM)、磁性RAM(MRAM)、相变存储器(PCM)等等。
总线106包含软件、固件及硬件中的一或多者,其提供通过主机101的组件可通信的接口。组件的实例包含(但不限于)处理器104、网卡、存储装置、存储器102、图形卡等等。另外,主机101(例如处理器104)可使用总线106与存储装置100通信。在一些实例中,存储装置100通过合适接口140直接附接或可通信地耦合到总线106。总线106是串行、PCIe总线或网络、PCIe根复合体、内部PCIe开关等等中的一或多者。
处理器104可执行操作系统(OS),其提供文件系统及使用文件系统的应用程序。处理器104可经由通信链路或网络与存储装置100(例如存储装置100中的每一者的控制器110)通信。在这方面,处理器104可使用到通信链路或网络的接口140向存储装置100中的一或多者发送数据及从存储装置100中的一或多者接收数据。接口140允许在处理器104上运行的软件(例如文件系统)经由总线106与存储装置100(例如其控制器110)通信。存储装置100(例如其控制器110)直接经由接口140可操作地耦合到总线106。尽管接口140概念性展示为主机101与存储装置100之间的虚线,但接口140可包含一或多个控制器、一或多个物理连接器、一或多个数据传送协议(包含命名空间、端口、传输机制及其连接性)。尽管主机101与存储装置100a、b…n之间的连接展示为直接链路,但在一些实施方案中,链路可包括可包含例如网桥及交换机的网络组件的网络结构。
为发送及接收数据,处理器104(在其上运行的软件或文件系统)使用在接口140上运行的存储数据传送协议与存储装置100通信。协议的实例包含(但不限于)SAS、串行ATA(SATA)及NVMe协议。在一些实例中,接口140包含在总线106、存储装置100(例如控制器110)或经由一或多个合适网络可操作地耦合到总线106及/或存储装置100的另一装置上实施或可操作地耦合到所述总线、存储装置或所述另一装置的硬体(例如控制器)。接口140及在其上运行的存储协议还包含在此硬件上执行的软件及/或固件。
在一些实例中,处理器104可经由总线106及网络接口108与通信网络109通信。附接或可通信地耦合到通信网络109的其它主机系统(未展示)可使用合适网络存储协议(其实例包含(但不限于)经由结构NVMe(NVMeoF)、iSCSI、光纤通道(FC)、网络文件系统(NFS)、服务器消息块(SMB)等等)与主机101通信。网络接口108允许在处理器104上运行的软件(例如存储协议或文件系统)经由总线106与附接到通信网络109的外部主机通信。依此方式,网络存储命令可由外部主机发出且由处理器104处理,处理器104可根据需要向存储装置100发出存储命令。因此,可经由通信网络109在外部主机与存储装置100之间交换数据。在此实例中,任何交换数据缓冲于主机101的存储器102中。
在一些实例中,存储装置100位于数据中心(未展示,为简洁起见)中。数据中心可包含一或多个平台或机架单元,其中每一者支持一或多个存储装置(例如(但不限于)存储装置100)。在一些实施方案中,主机101及存储装置100一起形成存储节点,其中主机101充当节点控制器。存储节点的实例是Kioxia Kumoscale存储节点。平台内的一或多个存储节点连接到架顶式(TOR)交换机,每一存储节点经由一或多个网络连接(例如以太网、光纤通道或InfiniBand)连接到TOR,且可经由TOR交换机或另一合适平台内通信机制彼此通信。在一些实施方案中,存储装置100可为连接到TOR交换机的网络附接存储装置(例如以太网SSD),其中主机101也连接到TOR交换机且能够经由TOR交换机与存储装置100通信。在一些实施方案中,至少一个路由器可促进不同平台、机架或机柜中的存储节点中的存储装置100之间经由合适网络结构通信。存储装置100的实例包含非易失性装置,例如(但不限于)固态硬盘(SSD)、以太网附接SSD、非易失性双列直插存储器模块(NVDIMM)、通用闪存(UFS)、安全数字(SD)装置等等。
存储装置100中的每一者至少包含控制器110及存储器阵列120。为简洁起见,未展示存储装置100的其它组件。存储器阵列120包含NAND闪存装置130a到130n。NAND闪存装置130a到130n中的每一者包含一或多个个别NAND闪存裸片,其是能够在没有电源的情况下保存数据的NVM。因此,NAND闪存装置130a到130n指代闪存装置100内的多个NAND闪存装置或裸片。NAND闪存装置130a到130n中的每一者包含一或多个裸片,其中每一者具有一或多个平面。每一平面具有多个块,且每一块具有多个页面。
尽管NAND闪存装置130a到130n展示为存储器阵列120的实例,但用于实施存储器阵列120的非易失性存储器技术的其它实例包含(但不限于)非易失性(电池备援)DRAM、磁性随机存取存储器(MRAM)、相变存储器(PCM)、铁电RAM(FeRAM)等等。本文中所描述的布置同样可在使用此类存储器技术及其它合适存储器技术的存储器系统上实施。
控制器110的实例包含(但不限于)SSD控制器(例如客户端SSD控制器、数据中心SSD控制器、企业SSD控制器等等)、UFS控制器或SD控制器等等。
控制器110可组合多个NAND闪存装置130a到130n中的原始数据存储,使得所述NAND闪存装置130a到130n逻辑上用作单个存储单元。控制器110可包含处理器、微控制器、缓冲存储器111(例如缓冲区112、114、116)、错误校正系统、数据加密系统、闪存转译层(FTL)及闪存接口模块。此类功能可在硬件、软件及固件或其任何组合中实施。在一些布置中,控制器110的软件/固件可存储于存储器阵列120或任何其它合适计算机可读存储媒体中。
控制器110包含适于执行本文中所描述的功能及其它功能的处理及存储能力。如所描述,控制器110管理NAND闪存装置130a到130n的各种特征,其包含(但不限于)I/O处置、读取、写入/编程、擦除、监测、记录、错误处置、废弃项目收集、磨损均衡、逻辑到物理地址映射、数据保护(加密/解密、循环冗余校验(CRC))、错误校正编码(ECC)、数据加扰等等。因此,控制器110提供对NAND闪存装置130a到130n的可见性。
缓冲存储器111是在控制器110本地且可操作地耦合到控制器110的存储器装置。例如,缓冲存储器111可为位于控制器110的芯片上的芯片上SRAM存储器。在一些实施方案中,缓冲存储器111可使用控制器110外部的存储装置110的存储器装置实施。例如,缓冲存储器111可为位于除控制器110的芯片之外的芯片上的DRAM。在一些实施方案中,缓冲存储器111可使用控制器110内部及外部(例如,在控制器110的芯片上及芯片外)的存储器装置实施。例如,缓冲存储器111可使用内部SRAM及外部DRAM两者实施,其是透明/暴露的且可由其它装置(例如主机101及其它存储装置100)经由接口140存取。在此实例中,控制器110包含使用单个地址空间内的存储器地址的内部处理器,且控制内部SRAM及外部DRAM两者的存储器控制器基于效率选择是否将数据放置于内部SRAM及外部DRAM上。换句话说,内部SRAM及外部DRAM像单个存储器一样被寻址。如所展示,缓冲存储器111包含缓冲区112、写入缓冲区114及读取缓冲区116。换句话说,缓冲区112、写入缓冲区114及读取缓冲区116可使用缓冲存储器111实施。
控制器110包含缓冲区112,其有时称为驱动缓冲区或控制器存储器缓冲区(CMB)。除可由控制器110存取之外,缓冲区112也可由其它装置(例如主机101及其它存储装置100a、100b、…100n)经由接口140存取。依此方式,缓冲区112(例如缓冲区112内的存储器位置的地址)跨总线106暴露,且可操作地耦合到总线106的任何装置可使用对应于缓冲区112内的存储器位置的地址发出命令(例如读取命令、写入命令等等)以便从缓冲区内的所述存储器位置读取数据及将数据写入到缓冲区112内的所述存储器位置。在一些实例中,缓冲区112是易失性存储装置。在一些实例中,缓冲区112是非易失性永久存储装置,其可提供防存储装置100中的一或多者意外断电的保护改进。缓冲区112的实例包含(但不限于)RAM、DRAM、SRAM、MRAM、PCM等等。缓冲区112可指代各自经配置以存储不同类型的数据的多个缓冲区,如本文中所描述。
在一些实施方案中,如图1中所展示,缓冲区112是控制器110的本地存储器。例如,缓冲区112可为位于控制器110的芯片上的芯片上SRAM存储器。在一些实施方案中,缓冲区112可使用控制器110外部的存储装置110的存储器装置实施。例如,缓冲区112可为位于除控制器110的芯片之外的芯片上的DRAM。在一些实施方案中,缓冲区112可使用控制器110内部及外部(例如,在控制器110的芯片上及芯片外)的存储器装置实施。例如,缓冲区112可使用内部SRAM及外部DRAM两者实施,其是透明/暴露的且可由其它装置(例如主机101及其它存储装置100)经由接口140存取。在此实例中,控制器110包含使用单个地址空间内的存储器地址的内部处理器,且控制内部SRAM及外部DRAM两者的存储器控制器基于效率选择是否将数据放置于内部SRAM及外部DRAM上。换句话说,内部SRAM及外部DRAM像单个存储器一样被寻址。
在关于写入操作的一个实例中,响应于从主机101(经由主机接口140)接收到数据,控制器110在将数据写入到写入缓冲区114之后向主机101确认写入命令。在一些实施方案中,写入缓冲区114可在不同于缓冲区112的单独存储器中实施,或写入缓冲区114可为包括缓冲区112的存储器的界定区或部分,其中仅存储器的CMB部分可由其它装置存取,而非写入缓冲区114。控制器110可将存储于写入缓冲区114中的数据写入到存储器阵列120(例如NAND闪存装置130a到130n)。一旦完成将数据写入到存储器阵列120的物理地址,则FTL更新由主机101用于与数据相关联的逻辑地址(例如逻辑块地址(LBA))与由控制器110用于识别数据的物理位置的物理地址之间的映射。在关于读取操作的另一实例中,控制器110包含不同于缓冲区112及缓冲区114的另一缓冲区116(例如读取缓冲区)以存储从存储器阵列120读取的数据。在一些实施方案中,读取缓冲区116可在不同于缓冲区112的单独存储器中实施,或读取缓冲区116可为包括缓冲区112的存储器的界定区或部分,其中仅存储器的CMB部分可由其它装置存取,而非读取缓冲区116。
尽管非易失性存储器装置(例如NAND闪存装置130a到130n)在本文中作为实例呈现,但所公开的方案可在通过接口连接到主机101的任何存储系统或装置上实施,其中此系统暂时或永久存储供主机101以后检索的数据。
在一些实例中,存储装置100形成用于奇偶校验保护的RAID群组。即,存储装置100中的一或多者存储用于存储于所述装置上的数据及/或存储于存储装置100中的其它者上的数据的奇偶校验数据(例如奇偶校验位)。
通常,为了更新RAID 5群组中的奇偶校验驱动器上的奇偶校验数据(或奇偶校验),需要2个读取I/O操作、2个写入I/O操作、4次通过总线106传送及4次存储器缓冲区传送。所有此类操作需要处理器104上的CPU周期、提交队列(SQ)/完成队列(CQ)条目、上下文切换等等。另外,在处理器104与存储器102之间执行的传送消耗缓冲区缓冲空间及处理器104与存储器102之间的带宽。此外,处理器104与总线106之间的数据通信消耗总线106的带宽,其中总线106的带宽被认为是宝贵资源,因为总线106用作主机101的不同组件之间的接口。因此,传统奇偶校验更新方案消耗主机101上的大量资源(例如带宽、CPU周期及缓冲空间)。
本文中所公开的一些布置涉及基于存储装置100之间的对等(P2P)传送实现基于奇偶校验的驱动器故障保护(例如RAID)。在使用P2P传送的驱动器故障保护方案中,存储装置100的本地存储器缓冲区(例如缓冲区112)用于执行从一个存储装置(例如存储装置100a)到另一存储装置(例如存储装置100b)的数据传送。因此,不再需要将数据复制到主机101的存储器102中,因此减少将数据传入及传出存储器102所需的延时及带宽。使用本文中所描述的驱动器故障保护方案,每当在RAID 5装置上更新数据时,I/O操作的数目可使用主机导向P2P传送从4减少到2或使用装置导向P2P传送从4减少到1。效率增益不仅提高性能,而且降低成本、功耗及网络利用率。
为了实现此类提高效率且在一些实例中,作为存储装置100内的现有容量的缓冲区112跨总线106(例如,通过基址寄存器)暴露给主机101使用。
在一些布置中,主机101与存储装置100协作以不仅对奇偶校验数据读取及写入而且对非奇偶校验数据读取及写入执行XOR计算。特定来说,控制器110可经配置以执行XOR计算而非从主机101接收XOR结果。因此,主机101无需为此类操作消耗额外计算或存储器资源,无需消耗CPU周期发送额外命令用于执行XOR计算,无需为相关直接存储器存取(DMA)传送分配硬件资源,无需为额外命令消耗提交及完成队列,且无需消耗额外总线/网络带宽。
鉴于在使存储装置100在存储装置100内内部执行XOR计算中获得的改进,不仅总系统成本(针对包含主机101及存储装置100的系统)变低,而且系统性能提高。因此,与常规RAID冗余机制相比,本公开涉及允许存储装置100卸载功能性及功能性重新分区,从而导致更少操作及更少数据移动。
除从主机101卸载XOR运算之外,本文中所公开的布置还利用存储装置100之间的P2P通信执行数据的计算传送以进一步改进性能、成本、功耗及网络利用率。具体来说,主机101不再需要将从存储于数据装置上的数据确定的瞬时数据(例如瞬时XOR数据结果)发送到奇偶校验装置。即,主机101不再需要将瞬时XOR结果从数据装置传送到存储器102中且接着将瞬时XOR结果从存储器102传出到奇偶校验装置中。
相反地,绕过存储器102,且将瞬时XOR数据结果从数据装置传送到奇偶校验装置。例如,存储装置100中的每一者的缓冲区112(例如CMB)由参考识别。参考的实例包含(但不限于)地址、CMB地址、地址描述符、识别符、指针或识别存储装置的缓冲区112的其它合适指示符。根据存储装置的地址,数据可从主机101或其它存储装置传送到所述存储装置。存储装置100的缓冲区112的地址存储于主机101已知的共享地址寄存器(例如共享PCIe基址寄存器)内。例如,在NVMe中,CMB由NVMe控制器寄存器CMBLOC界定,其界定CMB开始的PCI地址位置及控制器寄存器CMBSZ(其是CMB的大小)。在一些实例中,数据装置将XOR瞬时结果存储于缓冲区112中(例如,在CMB中)。鉴于数据装置的地址在主机101的共享PCIe基址寄存器中,主机101向奇偶校验装置发送包含数据装置的缓冲区112的地址的写入命令。奇偶校验装置可使用传送机制(例如DMA传送机制)直接获取数据装置的缓冲区112的内容(例如XOR瞬时结果),因此绕过存储器102。
传统上,为了更新RAID 5群组中的数据驱动器上的数据(常规、非奇偶校验数据),执行以下步骤。主机101通过接口140向数据驱动器的控制器110提交NVMe读取请求。作为响应,控制器110执行到读取缓冲区中的NAND读取。换句话说,控制器110从存储器阵列120(NAND闪存装置130a到130n中的一或多者)读取读取请求中所请求的数据且将其存储于读取缓冲区116中。控制器110将数据从缓冲区116跨接口140传送到存储器102(例如旧数据缓冲区)中。因此,主机101的旧数据缓冲区存储从存储器阵列120读取的旧数据。接着,主机101向控制器110提交NVMe写入请求且将新数据呈现于主机101的新数据缓冲区中以由控制器110写入。作为响应,控制器110执行数据传送以将来自主机101的新数据缓冲区的新数据跨NVMe接口传送到写入缓冲区114中。接着,控制器110通过将新数据写入到存储器阵列120(例如NAND闪存装置130a到130n中的一或多者)来更新旧现有数据。新数据及旧数据共享相同逻辑地址(例如LBA)且具有不同物理地址(例如,存储于NAND闪存装置130a到130n的不同NAND页面中)。接着,主机101在(i)已驻留于主机101的新数据缓冲区中的新数据与(ii)从存储装置100读取且驻留于主机101的旧数据缓冲区中的现有数据之间执行XOR运算。主机101将XOR运算的结果(称为瞬时XOR数据)存储于主机101的瞬时XOR主机缓冲区中。在一些情况下,瞬时XOR缓冲区可潜在地相同于旧数据缓冲区或新数据缓冲区,因为瞬时XOR数据可替换所述缓冲区中的现有内容以节省存储器资源。
另一方面,用于更新存储于数据驱动器(例如存储装置100a作为实例)中的数据的一些布置包含在控制器110内及通过接口140(例如NVMe接口)执行XOR计算以更新存储于数据驱动器的存储器阵列120中的数据。在此方面,图2A是说明根据一些实施方案的用于执行数据更新的实例方法200a的框图。参考图1到2A,方法200a提供比上文所提及的常规数据更新方法提高的I/O效率、主机CPU效率及存储器资源效率。方法200a可由主机101及存储装置100a执行。存储器102包含主机缓冲区(新数据)201。NAND页面(旧数据)203及NAND页面(新数据)205是NAND闪存装置130a到130n中的不同页面。
在方法200a中,主机101通过总线106且通过接口140向存储装置100a的控制器110提交新类型的NVMe写入命令或请求。在一些实施方案中,新类型的NVMe写入命令或请求可类似于传统NVMe写入命令或请求,但具有不同命令操作码或旗标以指示命令不是正常NVMe写入命令且命令应根据本文中所描述的方法处理。主机101将主机缓冲区(新数据)201呈现给控制器110用于写入。作为响应,在211,控制器110执行数据传送以跨接口140通过总线106从主机缓冲区(新数据)201获得新数据(常规、非奇偶校验数据),且将新数据存储到写入缓冲区(新数据)202中。写入请求包含新数据的逻辑地址(例如LBA)。
在212,存储装置100a的控制器110执行到读取缓冲区(旧数据)204中的NAND读取。换句话说,控制器110从存储器阵列120(例如一或多个NAND页面(旧数据)203)读取对应于在211接收的主机写入请求中的逻辑地址的旧及现有数据且将旧数据存储于读取缓冲区(旧数据)204中。一或多个NAND页面(旧数据)203是存储装置100a的NAND闪存装置130a到130n中的一或多者的页面。新数据及旧数据是数据(例如常规、非奇偶校验数据)。换句话说,旧数据被更新为新数据。
在213,控制器110接着通过将来自写入缓冲区(新数据)202的新数据写入到NAND页面(新数据)205中来用新数据更新旧数据。NAND页面(新数据)205是不同于NAND页面(旧数据)203的物理NAND页面位置,鉴于其是NAND存储器的物理属性且其在物理上无法覆盖NAND页面中的现有数据。相反地,写入新NAND物理页面且更新逻辑到物理(L2P)地址映射表以指示对应于由主机101使用的逻辑地址的新NAND页面。控制器110(例如FTL)更新L2P寻址映射表以使NAND页面(新数据)205的物理地址与逻辑地址对应。控制器110标记NAND页面(旧数据)203的物理地址用于废弃项目收集。
在214,控制器110在存储于写入缓冲区(新数据)202中的新数据与存储于读取缓冲区(旧数据)204中的旧数据之间执行XOR运算以确定瞬时XOR结果,且将瞬时XOR结果存储于CMB(瞬时XOR)206中。在一些布置中,写入缓冲区(新数据)202是存储装置100a的写入缓冲区114的特定实施方案。读取缓冲区(旧数据)204是存储装置100a的读取缓冲区116的特定实施方案。CMB(瞬时XOR)206是存储装置100a的缓冲区112的特定实施方案。在其它布置中,为了节省存储器资源,CMB(瞬时XOR)206可相同于读取缓冲区(旧数据)204且是存储装置100a的缓冲区112的特定实施方案,使得瞬时XOR结果可覆盖读取缓冲区(旧数据)204的内容。依此方式,执行从NAND页面到读取缓冲区(旧数据)204的仅一次数据传送且接着在相同位置适当计算XOR结果,无需传送任何数据。
来自CMB(瞬时XOR)206的瞬时XOR结果不跨接口140传送到主机101中。相反地,CMB(瞬时XOR)206中的瞬时XOR结果可直接传送到奇偶校验驱动器(例如存储装置100b)以更新对应于经更新、新数据的奇偶校验数据。此将参考图3A及3B进一步详细讨论。
图2B是说明根据一些实施方案的用于执行数据更新的实例方法200b的流程图。参考图1、2A及2B,方法200b对应于方法200a。方法200b可由存储装置100a的控制器110执行。
在221,控制器110从可操作地耦合到存储装置100a的主机101接收新类型的写入请求。在222,响应于接收到新类型的写入请求,控制器110将新数据(新常规、非奇偶校验数据)从主机101(例如从主机缓冲区(新数据)201)跨总线106且经由接口140传送到存储装置100a的写入缓冲区(例如写入缓冲区(新数据)202)。因此,控制器110从主机101接收对应于写入请求中所识别的逻辑地址的新数据。在223,控制器110执行读取操作以将现有(旧)数据从非易失性存储装置(例如从NAND页面(旧数据)203)读取到位于可由其它装置存取的存储器区(即,CMB)中的现有数据驱动器缓冲区(例如读取缓冲区(旧数据)204)中。现有数据具有相同于新数据的逻辑地址,如写入请求中所识别。
在224,控制器110将存储于存储装置100a的新数据驱动器缓冲区中的新数据写入到非易失性存储装置(例如NAND页面(新数据)205)。如所提及,新数据及现有数据对应于相同逻辑地址,但位于不同物理NAND页面中。现有数据位于非易失性存储装置的第一物理地址处(例如在NAND页面(旧数据)203处)。将新数据写入到非易失性存储装置包含将新数据写入到非易失性存储装置的第二物理地址(例如在NAND页面(新数据)205处)及更新逻辑到物理(L2P)映射以使逻辑地址对应于第二物理地址。框223及224可依任何合适顺序或同时执行。
在225,控制器110通过对新数据及现有数据执行XOR运算来确定XOR结果。XOR结果称为瞬时XOR结果。在226,控制器110在确定瞬时XOR结果之后将瞬时XOR结果暂时存储于瞬时XOR结果驱动器缓冲区(例如CMB(瞬时XOR)206)中。
鉴于在更新数据驱动器上的数据(例如方法200a及200b)之后对奇偶校验驱动器上的奇偶校验进行对应更新(例如方法300a及300b)以维持RAID 5群组保护的完整性,效率实际上是两个过程的总和。换句话说,常规机制中的每次写入导致4个I/O操作(读取旧数据、读取旧奇偶校验、写入新数据及写入新奇偶校验)。在本文中所描述的机制中,I/O操作的数目减半到两个(写入新数据、写入新奇偶校验)。
通常,为了更新RAID 5群组中的奇偶校验驱动器上的奇偶校验数据(或奇偶校验),执行以下步骤。主机101通过接口140向奇偶校验驱动器的控制器110提交NVMe读取请求。作为响应,控制器110执行到驱动器缓冲区中的NAND读取。换句话说,控制器110从存储器阵列120(NAND闪存装置130a到130n中的一或多者)读取读取请求中所请求的数据(旧的、现有奇偶校验数据)且将数据存储于读取缓冲区116中。控制器110将来自读取缓冲区116的数据跨接口140传送到存储器102(例如旧数据缓冲区)中。因此,主机101的旧数据缓冲区存储从存储器阵列120读取的旧数据。接着,主机101在(i)主机101早先已计算(称为瞬时XOR数据)且驻留于存储器102(例如瞬时XOR缓冲区)中的数据与(ii)从存储器阵列120读取且存储于主机101的旧数据缓冲区中的旧数据之间执行XOR运算。接着,结果(称为新数据)存储于存储器102(例如新数据缓冲区)中。在一些情况下,新数据缓冲区可潜在地相同于旧数据缓冲区或瞬时XOR缓冲区,因为新数据可替换所述缓冲区中的现有内容以节省存储器资源。接着,主机101向控制器110提交NVMe写入请求且将来自新数据缓冲区的新数据呈现给控制器110。作为响应,控制器110接着执行数据传送以跨接口140从主机101的新数据缓冲区获得新数据,且将新数据存储到写入缓冲区116中。接着,控制器110通过将新数据写入到存储器阵列120(例如NAND闪存装置130a到130n中的一或多者)中来更新旧的、现有数据。由于NAND闪存的操作的性质,新数据及旧数据共享相同逻辑地址(例如相同LBA)且具有不同物理地址(例如,存储于NAND闪存装置130a到130n的不同NAND页面中)。控制器110还更新逻辑到物理映射表以记录新物理地址。
另一方面,用于更新存储于奇偶校验驱动器(例如存储装置100b作为实例)的存储器阵列120中的奇偶校验数据的一些布置不仅包含在奇偶校验驱动器的控制器110内而非在处理器104内执行XOR计算,而且包含直接从数据驱动器(例如存储装置100a作为实例)的缓冲区112传送瞬时XOR数据,不使用主机101的存储器102。在此方面,图3A是说明根据一些实施方案的用于执行奇偶校验更新的实例方法300a的框图。参考图1到3A,方法300a提供比上文所提及的常规奇偶校验更新方法提高的I/O效率、主机CPU效率、存储器资源效率及数据传送效率。方法300a可由主机101、存储装置100a(数据驱动器)及存储装置100b(存储存储于数据驱动器上的数据的奇偶校验数据的奇偶校验驱动器)执行。
NAND页面(旧数据)303及NAND页面(XOR结果)306是存储装置100b的NAND闪存装置130a到130n中的不同页面。NAND页面(旧数据)203a及NAND页面(新数据)206b是存储装置100b的NAND闪存装置130a到130n中的不同页面。
在方法300a中,在311,主机101通过接口140向存储装置100b的控制器110提交新类型的NVMe写入命令或请求。在一些实施方案中,新类型的NVMe写入命令或请求可类似于传统NVMe写入命令或请求,但具有不同命令操作码或旗标以指示命令不是正常NVMe写入命令且命令应根据本文中所描述的方法处理。写入请求包含存储装置100a的CMB(瞬时XOR)206的地址的参考。参考的实例包含(但不限于)地址、CMB地址、地址描述符、识别符、指针或识别存储装置的缓冲区112的另一合适指示符。如方法200a及200b中所描述,CMB(瞬时XOR)206存储由存储装置100a的控制器110通过对新数据及现有数据执行XOR运算(例如在214)来确定的瞬时XOR结果。因此,在311由存储装置100b的控制器110接收的写入请求不包含瞬时XOR结果,且代以包含暂时存储瞬时XOR结果的数据驱动器的缓冲区的地址。写入请求进一步包含存储装置100b中其中将写入(例如,瞬时XOR结果(其是奇偶校验数据)的)新数据的逻辑地址(例如LBA)。
在312,控制器110执行到读取缓冲区(新数据)304中的NAND读取。换句话说,控制器110从存储器阵列120(例如一或多个NAND页面(旧数据)303)读取对应于在311接收的主机的写入请求中的逻辑地址的旧及现有数据且将旧数据存储于读取缓冲区(新数据)304中。旧及现有数据位于对应于在311接收的写入请求中提供的新数据的LBA的旧物理地址处。旧物理地址由控制器110使用逻辑到物理查找表获得。一或多个NAND页面(旧数据)303是存储装置100b的NAND闪存装置130a到130n中的一或多者中的页面。
在313,存储装置100b的控制器110执行P2P读取操作以将新数据从存储装置100a的CMB(瞬时XOR)206传送到存储装置100b的写入缓冲区(新数据)302。换句话说,存储装置100b可使用合适传送机制直接获取存储装置100a的CMB(瞬时XOR)206中的内容(例如XOR瞬时结果),因此绕过主机101的存储器102。传送机制可使用在311从主机101接收的CMB(瞬时XOR)206的地址来识别待传送新数据的源头(CMB(瞬时XOR)206)。传送机制可将数据从源头传送到存储装置100b的写入缓冲区(写入缓冲区(新数据)302)。在一些实施方案中,读取操作由存储装置100b的控制器110执行,作为从主机101接收的任何NVMe写入命令的正常处理的部分,只是待写入数据的地址参考存储装置100a中的CMB(瞬时XOR)206而非主机缓冲区102。传送机制的实例包含(但不限于)DMA传送机制、通过无线或有线网络传送、通过总线或串行传送、平台内通信机制或连接源头及目标缓冲区的另一合适通信通道。
在一些实例中,在新数据从CMB(瞬时XOR)206成功传送到写入缓冲区(新数据)302之后,存储装置100b的控制器110可向主机101确认在311接收的写入请求。在一些实例中,在新数据从CMB(瞬时XOR)206成功传送到写入缓冲区(新数据)302(如通过传送机制或存储装置100b的控制器110向存储装置100a的控制器110确认)之后,存储装置100a的控制器110移除CMB(瞬时XOR)206的内容或指示CMB(瞬时XOR)206的内容无效。
关于方法300a,新数据及旧数据是奇偶校验数据(例如一或多个奇偶校验位)。换句话说,旧数据(旧奇偶校验数据)经更新为新数据(新奇偶校验数据)。为清楚起见,未展示存储装置100a的其它组件。
在314,控制器110在存储于写入缓冲区(新数据)302中的新数据与存储于读取缓冲区(新数据)304中的旧数据之间执行XOR运算以确定XOR结果,且将XOR结果存储于写入缓冲区(XOR结果)305中。在一些布置中,写入缓冲区(新数据)302是存储装置100b的写入缓冲区114的特定实施方案。读取缓冲区(新数据)304是存储装置100b的读取缓冲区116的特定实施方案。写入缓冲区(XOR结果)305是存储装置100b的缓冲区112的特定实施方案。在其它布置中,为了节省存储器资源,写入缓冲区(XOR结果)305可相同于写入缓冲区(新数据)302且是存储装置100b的缓冲区114的特定实施方案,使得XOR结果可覆盖写入缓冲区(新数据)302的内容。
在315,控制器110接着通过将XOR结果写入到NAND页面(XOR结果)306中来用新数据更新旧数据。控制器110(例如FTL)更新逻辑到物理寻址映射表以使NAND页面(XOR结果)306的物理地址与逻辑地址对应。控制器110将NAND页面(旧数据)303的物理地址标记为含有无效数据,准备用于废弃项目收集。
图3B是说明根据一些实施方案的用于执行奇偶校验更新的实例方法300b的流程图。参考图1到3B,方法300b对应于方法300a。方法300b可由存储装置100b的控制器110执行。
在321,控制器110从可操作地耦合到存储装置100b的主机101接收新类型的写入请求,新类型的写入请求包含另一存储装置(例如存储装置100a)的缓冲区(例如CMB(瞬时XOR)206)的地址。在322,响应于接收到写入请求,控制器110使用传送机制将新数据(新奇偶校验数据)从另一存储装置的缓冲区传送到新数据驱动器缓冲区(例如写入缓冲区(新数据)302)。因此,控制器110从另一存储装置而非主机101的缓冲区接收对应于写入请求中所识别的缓冲区的地址的新数据。在323,控制器110执行读取操作以将来自非易失性存储装置(例如来自NAND页面(旧数据)303)的现有(旧)数据(现有旧奇偶校验数据)读取到现有数据驱动器缓冲区(例如读取缓冲区(新数据)304)中。框322及323可依任何合适顺序或同时执行。
在324,控制器110通过对新数据及现有数据执行XOR运算来确定XOR结果。在325,控制器110在确定XOR结果之后将XOR结果暂时存储于XOR结果驱动器缓冲区(例如写入缓冲区(XOR结果)305)中。在326,控制器110将存储于XOR结果驱动器缓冲区中的XOR结果写入到非易失性存储装置(例如NAND页面(XOR结果)306)。如所提及,新数据及现有数据对应于相同逻辑地址。现有数据位于非易失性存储装置的第一物理地址处(例如在NAND页面(旧数据)304处)。将XOR结果写入到非易失性存储装置包含将XOR结果写入到非易失性存储装置的第二物理地址(例如在NAND页面(XOR结果)306处)及更新L2P映射以使逻辑地址对应于第二物理地址。
方法300a及300b通过在驱动器硬件中(例如,在所提及的存储装置100b的硬件中)执行XOR运算来改进常规奇偶校验数据更新方法以避免在主机级需要任何XOR运算。另外,新奇偶校验数据直接从数据驱动器(例如存储装置100a)传送到奇偶校验驱动器(存储装置100b),无需通过主机101。因此,方法300a及300b比常规奇偶校验更新方法提高I/O效率、主机CPU效率、存储器资源效率及数据传送效率。
关于I/O性能效率,主机101需要提交仅一个请求(311/321处的写入请求)而非两个请求来更新奇偶校验数据,且此请求仅包含缓冲区地址而非瞬时XOR数据或位于主机中的存储器102中的缓冲区地址。在一些实例中,每一请求所涉及的工作包含:1)主机101将命令写入到提交队列中;2)主机101将经更新提交队列尾指针写入到门铃寄存器中;3)存储装置100b(例如控制器110)从提交队列获取命令;4)存储装置100b(例如控制器110)处理命令;5)存储装置100b(例如控制器110)将关于完成状态的细节写入到完成队列中;6)存储装置100b(例如控制器110)通知主机101命令已完成;7)主机101处理完成;及8)主机101将经更新完成队列头指针写入到门铃寄存器。
因此,主机101无需读取现有奇偶校验数据且执行瞬时XOR数据及现有奇偶校验数据的XOR,主机101也无需将瞬时XOR数据传送到其存储器102且接着将瞬时XOR数据从存储器102传送到奇偶校验数据装置。本文中所公开的机制消耗从存储装置100b获取4KB数据的总流逝时间的接近10%,不包含在存储装置100b内流逝的获取命令、处理命令、从存储媒体(例如存储器阵列120)获取数据及完成XOR运算的所有时间。因此,本布置可将主机请求的数目减少至少一半(从两个到一个),其表示显著效率提高。
关于主机CPU效率,主机计算比存储装置100的计算更昂贵,因为主机CPU的成本显著高于存储装置100的CPU。因此,节省主机CPU的计算周期导致更高效率。研究估计,每NVMe请求所需的CPU时钟数目是约34,000。因此,每次需要执行奇偶校验更新时,发生34,000个时钟的CPU节省。为了比较,SSD的12Gb SAS接口请求每请求消耗约79,000个时钟。使用NVMe接口技术,此要求可减少到约34,000,节省约45,000个时钟周期。考虑到主机级XOR计算的消除连同请求减少,可比较效率提高与由NVMe接口通过SAS接口提供的效率。
关于存储器资源效率,除CPU级主机101的节省之外,还在存储器消耗方面获得节省。DRAM存储器仍是主机101的宝贵资源,不仅因为由于双列直插式存储器模块(DIMM)插槽有限而仅可向主机101添加有限量,而且由于DRAM技术本身的容量扩充限制。另外,现代应用(例如机器学习、内存数据库、大数据分析)增加主机101处额外存储器的需求。因此,鉴于DRAM无法满足此增加存储器需求,已出现称为存储类存储器(SCM)的新类别装置来弥合差距。尽管此技术仍处于起步阶段,但绝大多数现有系统仍在寻找可帮助减少存储器资源消耗且不影响其它属性(例如成本或性能)的解决方案。本布置通过消除在主机101中潜在地分配多达两个缓冲区的需要(每请求节省多达200%)来减少存储器消耗,因此降低成本。
关于数据传送效率,用于从驱动器缓冲区(例如缓冲区112)到主机缓冲区(例如存储器102)的数据拷贝的跨NVMe接口的数据传送的次数可减少一半以上,其减少DMA传送寻求的硬件资源的消耗及PCIe总线/网络的利用率。另外,在实例实施方案中,存储装置100a、100b、…100n可驻留于连接到PCI交换机且接着经由PCI交换机结构连接到主机的远程存储设备中,使得存储装置之间的传送在“下游”返回到目标装置之前仅需从源装置“上游”行进到最近交换机,因此不消耗带宽且不遭受第一交换机上游的网络结构延迟。此资源及网络延迟减少不仅降低功耗,而且提高性能。
通常,为了从RAID 5群组中的故障装置恢复数据,执行以下步骤。主机101通过接口140向RAID 5群组的一系列存储装置中的第一存储装置的控制器110提交NVMe读取请求。在RAID 5群组中,第n存储装置是故障装置,且第一存储装置到第(n-1)存储装置是运行装置。RAID 5群组中的每一存储装置是存储装置100中的一者。作为响应,第一存储装置的控制器110执行到第一存储装置的驱动器缓冲区中的NAND读取。换句话说,控制器110从第一存储装置的存储器阵列120(NAND闪存装置130a到130n中的一或多者)读取读取请求中所请求的数据且将数据存储于第一存储装置的读取缓冲区116中。第一存储装置的控制器110将来自第一存储装置的读取缓冲区116的数据跨接口140传送到主机101的存储器102(例如先前数据缓冲区)中。
接下来,主机101通过接口140向RAID 5群组的第二存储装置的控制器110提交NVMe读取请求。作为响应,第二存储装置的控制器110执行到第二存储装置的驱动器缓冲区中的NAND读取。换句话说,第二存储装置的控制器110从第二存储装置的存储器阵列120(NAND闪存装置130a到130n中的一或多者)读取读取请求中所请求的数据且将数据存储于第二存储装置的读取缓冲区116中。第二存储装置的控制器110将来自第二存储装置的读取缓冲区116的数据跨接口140传送到主机101的存储器102(例如当前数据缓冲区)中。接着,主机101在(i)主机101的先前数据缓冲区中的数据与(ii)主机101的当前数据缓冲区中的数据之间执行XOR运算。接着,结果(瞬时XOR结果)存储于主机101的瞬时XOR缓冲区中。在一些情况下,主机101的瞬时XOR缓冲区可潜在地相同于先前数据缓冲区或当前数据缓冲区,因为瞬时XOR数据可替换所述缓冲区中的现有内容以节省存储器资源。
接下来,主机101通过接口140向RAID 5群组的下一存储装置的控制器110提交NVMe读取请求以依参考第二存储装置描述的方式读取下一存储装置的当前数据。接着,主机101在(i)先前数据缓冲区中的数据(其是在涉及先前存储装置的先前迭代中确定的瞬时XOR结果)与(ii)下一存储装置的当前数据之间执行XOR运算。重复此类过程,直到主机101通过在第(n-1)存储装置的当前数据与在涉及第(n-2)存储装置的先前迭代中确定的瞬时XOR结果之间执行XOR运算来确定经恢复数据。
另一方面,用于恢复RAID 5群组中的故障装置的数据的一些布置不仅包含在存储装置的控制器110内而非在处理器104内执行XOR计算,而且包含直接从另一存储装置的缓冲区112传送瞬时XOR数据,无需使用主机101的存储器102。在此方面,图4A是说明根据一些实施方案的用于执行数据恢复的实例方法400a的框图。参考图1及4A,方法400a提供比上文所提及的常规数据恢复方法提高的主机CPU效率及存储器资源效率。方法400a可由主机101、存储装置100a(先前存储装置)及存储装置100b(当前存储装置)执行。NAND页面(经保存数据)403指代存储装置100b的NAND闪存装置130a到130n中的一或多个页面。
图4A展示包含存储装置100的RAID 5群组中的故障第n装置(作为实例,存储装置100n)的数据恢复方法的一次迭代。当前存储装置指代在图4A中所展示的此迭代中当前正执行XOR运算的存储装置(作为实例,存储装置100b)。先前存储装置指代当前存储装置从其获得先前数据的存储装置(作为实例,存储装置100a)。因此,当前存储装置可为RAID 5群组中的第二到第(n-1)存储装置中的任何一者。
CMB(先前数据)401是存储装置100a的缓冲区112的实例及特定实施方案。为清楚起见,图4A中未展示除CMB(先前数据)401之外的存储装置100a的组件。
在其中存储装置100a是RAID 5群组中的第一存储装置的实例中,主机101通过总线106且通过接口140向存储装置100a的控制器110提交对逻辑地址的NVMe读取请求。作为响应,存储装置100a的控制器110执行到存储装置100a的驱动器缓冲区(例如CMB(先前数据)401)中的NAND读取。换句话说,控制器110从存储装置100a的存储器阵列120(NAND闪存装置130a到130n中的一或多者)读取对应于读取请求中所请求的逻辑地址的开始数据且将开始数据存储于CMB(先前数据)401中。存储装置100a的控制器110不跨接口140将来自CMB(先前数据)401的开始数据传送到主机101的存储器102中,而是将开始数据暂时存储于CMB(先前数据)401中以直接传送到RAID 5群组中的随后存储装置。因此,在其中存储装置100a是RAID 5群组的第一存储装置的实例中,先前数据是开始数据。
在其中存储装置100a是RAID 5群组的第一存储装置与当前存储装置100b之间的任何存储装置的实例中,CMB(先前数据)401中的内容(例如瞬时XOR数据)依相同于确定当前存储装置100b的驱动器缓冲区(瞬时XOR)405的内容的方式的方式确定。换句话说,存储装置100a是数据恢复方法的先前迭代的当前存储装置。因此,在其中存储装置100a为RAID5群组的第一存储装置与当前存储装置100b之间的任何存储装置的实例中,先前数据指代瞬时XOR数据。
在当前迭代中且如图4A中所展示,在411,主机101通过总线106且通过接口140向当前存储装置100b的控制器110提交新类型的NVMe命令或请求。在一些实施方案中,新类型的请求可类似于传统NVMe写入命令,但具有不同命令操作码或旗标以指示命令不是正常NVMe写入命令且命令应根据本文中所描述的方法处理。新类型的NVMe命令或请求包含先前存储装置100a的CMB(先前数据)401的地址的参考。参考的实例包含(但不限于)地址、CMB地址、地址描述符、识别符、指针或识别存储装置的缓冲区112的另一合适指示符。因此,在411由存储装置100b的控制器110接收的新类型的请求不包含先前数据,而是包含暂时存储先前数据的先前存储装置的缓冲区的地址。新类型的请求进一步包含保存数据的逻辑地址(例如LBA)。然而,在新类型的NVMe命令中,此LBA指代待读取的保存数据的地址,而非像常规NVMe写入命令那样,LBA是待写入数据的地址。
在412,控制器110执行到读取缓冲区(经保存数据)404中的NAND读取。换句话说,控制器110从存储器阵列120(例如一或多个NAND页面(经保存数据)403)读取对应于从主机101接收的新类型的请求中的逻辑地址的经保存数据且将经保存数据存储于读取缓冲区(经保存数据)404中。一或多个NAND页面(经保存数据)403是存储装置100b的NAND闪存装置130a到130n中的一或多者中的页面。
在413,存储装置100b的控制器110执行P2P读取操作以将先前数据从存储装置100a的CMB(先前数据)401传送到存储装置100b的写入缓冲区(新数据)402。换句话说,存储装置100b可使用合适传送机制直接获取存储装置100a的CMB(先前数据)401中的内容(例如先前数据),因此绕过主机101的存储器102。传送机制可使用在411从主机101接收的CMB(先前数据)401的地址来识别待传送的先前数据的源头(CMB(先前数据)401)。传送机制可将数据从源头传送到目标缓冲区(写入缓冲区(新数据)402)。传送机制的实例包含(但不限于)DMA传送机制、通过无线或有线网络传送、通过总线或串行传送、平台内通信机制或连接源头及目标缓冲区的另一合适通信通道。
在一些实例中,在先前数据从CMB(先前数据)401成功传送到写入缓冲区(新数据)402之后,存储装置100b的控制器110可向主机101确认在411接收的新类型的请求。在一些实例中,在先前数据从CMB(先前数据)401成功传送到写入缓冲区(新数据)402(如通过传送机制或存储装置100b的控制器110向存储装置100a的控制器110确认)之后,存储装置100a的控制器110解除分配由CMB(先前数据)401使用的存储器或指示CMB(先前数据)401的内容无效。
在414,控制器110在存储于写入缓冲区(新数据)402中的先前数据与存储于读取缓冲区(经保存数据)404中的经保存数据之间执行XOR运算以确定瞬时XOR结果,且将瞬时XOR结果存储于CMB(瞬时XOR)405中。在一些布置中,写入缓冲区(新数据)402是存储装置100a的写入缓冲区114的特定实施方案。读取缓冲区(经保存数据)404是存储装置100a的读取缓冲区116的特定实施方案。CMB(瞬时XOR)405是存储装置100b的缓冲区112的特定实施方案。在其它配置中,为了节省存储器资源,CMB(瞬时XOR)405可相同于读取缓冲区(经保存数据)404且是存储装置100a的缓冲区112的特定实施方案,使得瞬时XOR结果可覆盖读取缓冲区(经保存数据)404的内容。
此时,当前存储装置100b的迭代完成,且瞬时XOR结果变成当前存储装置100b之后的下一存储装置的先前数据,且在下一迭代中,CMB(瞬时XOR)405变成CMB(先前数据)401。来自CMB(瞬时XOR)405的瞬时XOR结果不跨接口140传送到主机101的存储器102中,而是保存于CMB(瞬时XOR)405中以在类似于413的操作中直接传送到下一存储装置。在其中当前存储装置100b是RAID 5群组中的第(n-1)存储装置的情况下,瞬时XOR结果实际上是故障第n存储装置100n的恢复数据。
图4B是说明根据一些实施方案的用于执行数据恢复的实例方法400b的流程图。参考图1、4A及4B,方法400b对应于方法400a。方法400b可由当前存储装置100b的控制器110执行。
在421,控制器110从可操作地耦合到存储装置100b的主机101接收新类型的请求,新类型的请求包含另一存储装置(例如存储装置100a)的缓冲区(例如CMB(先前数据)401)的地址。在422,响应于接收到新类型的请求,控制器110使用传送机制将先前数据从另一存储装置的缓冲区传送到新数据驱动器缓冲区(例如写入缓冲区(新数据)402)。因此,控制器110从另一存储装置而非主机101的缓冲区接收对应于新类型的请求中识别的缓冲区的地址的先前数据。新类型的请求进一步包含经保存数据的逻辑地址(例如LBA)。然而,在新类型的请求中,此LBA指代待读取的经保存数据的地址,而非像常规NVMe写入命令那样,LBA是待写入数据的地址。在423,控制器110执行读取操作以将现有(经保存)数据(位于对应于LBA的物理地址处)从非易失性存储装置(例如从NAND页面(经保存数据)403)读取到现有数据驱动器缓冲区(例如读取缓冲区(经保存数据)404)中。框422及423可依任何合适顺序或同时执行。
在424,控制器110通过对先前数据及经保存数据执行XOR运算来确定XOR结果。XOR结果称为瞬时XOR结果。在425,控制器110在确定瞬时XOR结果之后将瞬时XOR结果暂时存储于瞬时XOR结果驱动器缓冲区(例如CMB(瞬时XOR)405)中。
通常,为了使RAID 5群组中的备用存储装置投入使用,执行以下步骤。主机101通过接口140向RAID 5群组的一系列存储装置的第一存储装置的控制器110提交NVMe读取请求。在RAID 5群组中,第n存储装置是备用装置,且第一存储装置到第(n-1)存储装置是当前运行装置。RAID 5群组中的每一存储装置是存储装置100中的一者。作为响应,第一存储装置的控制器110执行到第一存储装置的驱动器缓冲区中的NAND读取。换句话说,控制器110从第一存储装置的存储器阵列120(NAND闪存装置130a到130n中的一或多者)读取读取请求中所请求的数据且将数据存储于第一存储装置的读取缓冲区116中。第一存储装置的控制器110将来自第一存储装置的读取缓冲区116的数据跨接口140传送到主机101的存储器102(例如先前数据缓冲区)中。
接下来,主机101通过接口140向RAID 5群组的第二存储装置的控制器110提交NVMe读取请求。作为响应,第二存储装置的控制器110执行到第二存储装置的驱动器缓冲区中的NAND读取。换句话说,第二存储装置的控制器110从第二存储装置的存储器阵列120(NAND闪存装置130a到130n中的一或多者)读取读取请求中所请求的数据且将数据存储于第二存储装置的读取缓冲区116中。第二存储装置的控制器110将来自第二存储装置的读取缓冲区116的数据跨接口140传送到主机101的存储器102(例如当前数据缓冲区)中。接着,主机101在(i)主机101的先前数据缓冲区中的数据与(ii)主机101的当前数据缓冲区中的数据之间执行XOR运算。接着,结果(瞬时XOR结果)存储于主机101的瞬时XOR缓冲区中。在一些情况下,主机101的瞬时XOR缓冲区可潜在地相同于先前数据缓冲区或当前数据缓冲区,因为瞬时XOR数据可替换所述缓冲区中的现有内容以节省存储器资源。
接下来,主机101通过接口140向RAID 5群组的下一存储装置的控制器110提交NVMe读取请求以依参考第二存储装置描述的方式读取下一存储装置的当前数据。接着,主机101在(i)先前数据缓冲区中的数据(其是在涉及先前存储装置的先前迭代中确定的瞬时XOR结果)与(ii)下一存储装置的当前数据之间执行XOR运算。重复此类过程,直到主机101通过在第(n-1)存储装置的当前数据与在涉及第(n-2)存储装置的先前迭代中确定的瞬时XOR结果之间执行XOR运算来确定恢复数据。主机101将恢复数据存储于主机101的恢复数据缓冲区中。
恢复数据被写入到所述逻辑地址的备用第n存储装置中。例如,主机101向第n装置提交NVMe写入请求且呈现待写入的主机101的恢复数据缓冲区。作为响应,第n存储装置通过将恢复数据从主机101的恢复数据缓冲区跨NVMe接口传送到第n存储装置的驱动器缓冲区中来执行数据传送以从主机101获得恢复数据。接着,第n存储装置的控制器110通过将来自第n存储装置的驱动器缓冲区的恢复数据写入到一或多个新NAND页面中来用恢复数据更新存储于第n存储装置的NAND页面中的旧数据。控制器110(例如FTL)更新寻址映射表以使新NAND页面的物理地址与逻辑地址对应。控制器110标记其上已存储旧数据的NAND页面的物理地址用于废弃项目收集。
另一方面,用于使RAID 5群组中的备用存储装置投入使用的一些布不仅包含在存储装置的控制器110内而非在处理器104内执行XOR计算,而且包含直接从另一存储装置的缓冲区112传送瞬时XOR数据,无需使用主机101的存储器102。在此方面,图5A是说明根据一些实施方案的用于使备用存储装置投入使用的实例方法500a的框图。参考图1及5A,方法500a提供比上文所提及的用于使备用存储装置投入使用的常规方法提高的主机CPU效率及存储器资源效率。方法500a可由主机101、存储装置100a(先前存储装置)及存储装置100b(当前存储装置)执行。NAND页面(经保存数据)503指代存储装置100b的NAND闪存装置130a到130n中的一或多个页面。
图5A展示使包含存储装置100的RAID 5群组中的备用第n装置(作为实例,存储装置100n)投入使用的一次迭代。当前存储装置指代在图5A中所展示的此迭代中当前正执行XOR运算的存储装置(作为实例,存储装置100b)。先前存储装置指代当前存储装置从其获得先前数据的存储装置(作为实例,存储装置100a)。因此,当前存储装置可为RAID 5群组中的第二到第(n-1)存储装置中的任何一者。
CMB(先前数据)501是存储装置100a的缓冲区112的实例及特定实施方案。为清楚起见,图5A中未展示除CMB(先前数据)501之外的存储装置100a的组件。
在其中存储装置100a是RAID 5群组中的第一存储装置的实例中,主机101通过总线106且通过接口140向存储装置100a的控制器110提交对逻辑地址的NVMe读取请求。作为响应,存储装置100a的控制器110执行到存储装置100a的驱动器缓冲区(例如CMB(先前数据)501)中的NAND读取。换句话说,控制器110从第一存储装置的存储器阵列120(NAND闪存装置130a到130n中的一或多者)读取对应于读取请求中所请求的逻辑地址的开始数据且将开始数据存储于存储装置100a的缓冲区112中。存储装置100a的控制器110不跨接口140将开始数据从CMB(先前数据)501传送到主机101的存储器102中,而是将开始数据暂时存储于CMB(先前数据)501中以直接传送到RAID5群组中的随后存储装置。因此,在其中存储装置100a是RAID 5群组的第一存储装置的实例中,先前数据是开始数据。
在其中存储装置100a是RAID 5群组的第一存储装置与当前存储装置100b之间的任何存储装置的实例中,CMB(先前数据)501中的内容(例如瞬时XOR数据)依相同于确定当前存储装置100b的CMB(瞬时XOR)505的内容的方式的方式确定。换句话说,存储装置100a是数据恢复方法的先前迭代的当前存储装置。因此,在其中存储装置100a是RAID 5群组的第一存储装置与当前存储装置100b之间的任何存储装置的实例中,先前数据指代瞬时XOR数据。
在当前迭代中且如图5A中所展示,在511,主机101通过总线106且通过接口140向当前存储装置100b的控制器110提交新类型的NVMe命令或请求。在一些实施方案中,新类型的请求可类似于传统NVMe写入命令,但具有不同命令操作码或旗标以指示命令不是正常NVMe写入命令且命令应根据本文中所描述的方法处理。新类型的NVMe命令或请求包含先前存储装置100a的CMB(先前数据)501的地址的参考。参考的实例包含(但不限于)地址、CMB地址、地址描述符、识别符、指针或识别存储装置的缓冲区112的另一合适指示符。因此,在511由存储装置100b的控制器110接收的新类型的请求不包含先前数据,而是包含暂时存储先前数据的先前存储装置的缓冲区的地址。新类型的请求进一步包含经保存数据的逻辑地址(例如LBA)。然而,在新类型的NVMe命令中,此LBA指代待读取的经保存数据的地址,而非像常规NVMe写入命令那样,LBA是待写入数据的地址。
在512,控制器110执行到读取缓冲区(经保存数据)504中的NAND读取。换句话说,控制器110从存储器阵列120(例如一或多个NAND页面(经保存数据)503)读取对应于从主机101接收的新类型的请求中的逻辑地址的经保存数据且将经保存数据存储于读取缓冲区(经保存数据)504中。一或多个NAND页面(经保存数据)503是存储装置100b的NAND闪存装置130a到130n中的一或多者中的页面。
在513,存储装置100b的控制器110执行P2P读取操作以将先前数据从存储装置100a的CMB(先前数据)501传送到存储装置100b的写入缓冲区(新数据)502。换句话说,存储装置100b可使用合适传送机制直接获取存储装置100a的CMB(先前数据)501中的内容(例如先前数据),因此绕过主机101的存储器102。传送机制可使用在511从主机101接收的CMB(先前数据)501的地址来识别待传送的先前数据的源头(CMB(先前数据)501)。传送机制可将数据从源头传送到目标缓冲区(写入缓冲区(新数据)502)。传送机制的实例包含(但不限于)DMA传送机制、通过无线或有线网络传送、通过总线或串行传送、平台内通信机制或连接源头及目标缓冲区的另一合适通信通道。
在一些实例中,在先前数据从CMB(先前数据)501成功传送到写入缓冲区(新数据)502之后,存储装置100b的控制器110可向主机101确认在511接收的写入请求。在一些实例中,在先前数据从CMB(先前数据)501成功传送到写入缓冲区(新数据)502(如通过传送机制或存储装置100b的控制器110向存储装置100a的控制器110确认)之后,存储装置100a的控制器110解除分配由CMB(先前数据)501使用的存储器或指示CMB(先前数据)501的内容无效。
在514,控制器110在存储于写入缓冲区(新数据)502中的先前数据与存储于读取缓冲区(经保存数据)504中的经保存数据之间执行XOR运算以确定瞬时XOR结果,且将瞬时XOR结果存储于CMB(瞬时XOR)505中。在一些布置中,写入缓冲区(新数据)502是存储装置100b的写入缓冲区114的特定实施方案。读取缓冲区(经保存数据)504是存储装置100b的读取缓冲区116的特定实施方案。CMB(瞬时XOR)505是存储装置100b的缓冲区112的特定实施方案。在其它布置中,为了节省存储器资源,CMB(瞬时XOR)505可相同于读取缓冲区(经保存数据)504且是存储装置100b的缓冲区112的特定实施方案,使得瞬时XOR结果可覆盖读取缓冲区(经保存数据)504的内容。
此时,当前存储装置100b的迭代完成,且瞬时XOR结果变成当前存储装置100b之后的下一存储装置的先前数据,且在下一迭代中,CMB(瞬时XOR)505变成CMB(先前数据)501。来自CMB(瞬时XOR)505的瞬时XOR结果不跨接口140传送到主机101的存储器102中,而是保存于CMB(瞬时XOR)505中以在类似于513的操作中直接传送到下一存储装置。在其中当前存储装置100b是RAID 5群组中的第(n-1)存储装置的情况下,瞬时XOR结果实际上是备用第n存储装置100n的恢复数据且存储于存储装置100n的存储器阵列120中。
图5B是说明根据一些实施方案的用于使备用存储装置投入使用的实例方法500b的流程图。参考图1、5A及5B,方法500b对应于方法500a。方法500b可由存储装置100b的控制器110执行。
在521,控制器110从可操作地耦合到存储装置100的主机101接收新类型的请求,新类型的请求包含另一存储装置(例如存储装置100a)的缓冲区(例如CMB(先前数据)501)的地址。在522,响应于接收到新类型的请求,控制器110使用传送机制将先前数据从另一存储装置的缓冲区传送到新数据驱动器缓冲区(例如写入缓冲区(新数据)502)。因此,控制器110从另一存储装置而非主机101的缓冲区接收对应于在新类型的请求中识别的缓冲区的地址的先前数据。新类型的请求进一步包含经保存数据的逻辑地址(例如LBA)。然而,在新类型的请求中,LBA指代待读取的经保存数据的地址,而非像常规NVMe写入命令那样,LBA是待写入数据的地址。在523,控制器110执行读取操作以将现有(经保存)数据从非易失性存储装置(例如从NAND页面(经保存数据)503)读取到现有数据驱动器缓冲区(例如读取缓冲区(经保存数据)504)中。框522及523可依任何合适顺序或同时执行。
在524,控制器110通过对先前数据及经保存数据执行XOR运算来确定XOR结果。XOR结果称为瞬时XOR结果。在525,控制器110在确定瞬时XOR结果之后将瞬时XOR结果暂时存储于瞬时XOR结果驱动器缓冲区(例如CMB(瞬时XOR)505)中。
图6是说明根据一些实施方案的用于为驱动器故障提供数据保护及恢复的实例方法600的过程流程图。参考图1到6,方法600由第一存储装置(例如存储装置100b)的控制器110执行。方法200a、200b、300a、300b、400a、400b、500a及500b是方法600的特定实例。
在610,第一存储装置的控制器110从主机101接收新类型的请求。主机101通过接口140可操作地耦合到第一存储装置。在一些实例中,新类型的请求包含第二存储装置(例如存储装置100a)的缓冲区的地址。在620,响应于接收到新类型的请求,第一存储装置的控制器110从第二存储装置传送新数据。在630,第一存储装置的控制器110通过对新数据及现有数据执行XOR运算来确定XOR结果。现有数据存储于第一存储装置的非易失性存储装置中(例如在存储器阵列120中)。
在一些布置中,响应于接收到新类型的请求,第一存储装置的控制器110使用传送机制基于第二存储装置的缓冲区的地址将新数据从第二存储装置的缓冲区传送到第一存储装置的新数据驱动器缓冲区。控制器110执行读取操作以将现有数据从非易失性存储装置(例如在存储器阵列120中)读取到现有数据驱动器缓冲区中。
如参考更新奇偶校验数据(例如方法300a及300b)所描述,第一存储装置的控制器110进一步经配置以使XOR结果在被确定之后存储于XOR结果驱动器缓冲区(例如写入缓冲区(XOR结果)305)中且将XOR结果写入到非易失性存储装置(例如,写入到NAND页面(XOR结果)306)。新数据及现有(旧)数据对应于相同逻辑地址(相同LBA)。现有数据位于非易失性存储装置(例如NAND页面(旧数据)303)的第一物理地址处。第一存储装置的控制器110将XOR结果写入到非易失性存储装置包含将XOR结果写入到非易失性存储装置(例如NAND页面(XOR结果)306)的第二物理地址及更新L2P映射以对应于到第二物理地址的逻辑地址。现有数据及新数据是奇偶校验位。
如参考执行数据恢复(例如方法400a及400b)所描述,XOR结果对应于瞬时XOR结果。来自第一存储装置的瞬时XOR结果驱动器缓冲区(例如CMB(瞬时XOR)405)的瞬时XOR结果作为先前数据传送到第三存储装置,而不跨接口104发送到主机101。第三存储装置是在一系列存储装置中在第一存储装置之后的下一存储装置。
如参考使备用存储装置投入使用(例如方法500a及500b)所描述,XOR结果对应于瞬时XOR结果。来自第一存储装置的瞬时XOR结果驱动器缓冲区(例如CMB(瞬时XOR)505)的瞬时XOR结果作为恢复数据传送到第三存储装置,而不跨接口104发送到主机101。第三存储装置是投入使用的备用存储装置。恢复数据由第三存储装置的控制器存储于第三存储装置的非易失性存储器中。
在方法300a、300b、400a、400b、500a及500b中所公开的主机导向P2P传送机制中,主机101向存储装置100b发送新类型的命令或请求以触发从存储装置100a的缓冲区112到存储装置100b的缓冲区的数据传送。写入命令或请求的所得状态由存储装置100b向主机报告。
在装置导向P2P传送机制中,存储装置100a向存储装置100b发送新类型的命令或请求(包含缓冲区地址)以触发从存储装置100a的缓冲区112到存储装置100b的缓冲区的数据传送。图7A到10说明装置导向P2P传送机制。新类型的命令或请求的所得状态由存储装置100b向存储装置100a报告。存储装置100a在报告其首先接收的主机命令或数据写入更新请求的所得状态之前考虑存储装置100b的所得状态,其因此触发由存储装置100b进行奇偶校验写入更新。
在主机导向P2P传送机制中,鉴于在奇偶校验更新中将新类型的请求发送到奇偶校验驱动器,奇偶校验驱动器负责使状态返回到主机101。而在装置导向P2P传送机制中,主机101不向奇偶校验驱动器发送所述请求,因此消除又一个I/O(因此从2到1)。相反地,当主机101首先发出更新数据的请求时,主机101暗中委托数据驱动器负责。数据驱动器在计算瞬时XOR之后通过使用CMB地址启动新类型的请求(代表主机101)来将其发送到奇偶校验驱动器。因为奇偶校验驱动器接收到来自数据驱动器的请求,所以奇偶校验驱动器使所得状态返回到数据驱动器,而非返回到主机101。主机101不知道此事务,但当然在主机101通过提供奇偶校验驱动器的CMB地址来提出第一写入请求时请求此事务暗中发生。数据驱动器本身不知道哪个是奇偶校验驱动器且确实需要主机101提供的奇偶校验驱动器的CMB地址信息。
图7A是说明根据一些实施方案的用于执行奇偶校验更新的实例方法700a的框图。参考图1到3B及7A,方法700a与方法300a的不同之处在于:在311',存储装置100a(例如数据驱动器)的控制器110经由无线或有线网络、总线或串行、平台内通信机制或存储装置100a与存储装置100b之间的另一合适通信通道向存储装置100b(例如奇偶校验驱动器)的控制器110提交新类型的NVMe写入命令或请求。新类型的请求包含存储装置100a的CMB(瞬时XOR)206的缓冲区地址的参考以及用于待写入数据的XOR运算的数据的位置的LBA。在接收到请求之后,存储装置100b的控制器110在313读取位于缓冲区CMB(瞬时XOR)处的数据且将其传送到写入缓冲区(新数据)302中。在存储装置100b的控制器110通知存储装置100a请求完成之后,存储装置100a解除分配用于缓冲区CMB(瞬时XOR)206中的存储器。参考的实例包含(但不限于)地址、CMB地址、地址描述符、识别符、指针或识别存储装置的缓冲区112的另一合适指示符。313处的传送响应于在311'接收到写入请求而执行。
图7B是说明根据一些实施方案的用于执行奇偶校验更新的实例方法700b的流程图。参考图1到3B、7A及7B,方法700b对应于方法700a。方法700b可由存储装置100b的控制器110执行。方法700b与方法300b的不同之处在于:在321',存储装置100b(例如奇偶校验驱动器)的控制器110接收来自存储装置100a(例如数据驱动器)的写入请求。框322响应于在321'接收到的请求而执行。
图8A是说明根据一些实施方案的用于执行数据恢复的实例方法800a的框图。参考图1、4A、4B及8A,方法800a与方法400a的不同之处在于:在411',存储装置100a(例如先前存储装置)的控制器110经由无线或有线网络、总线或串行、平台内通信机制或存储装置100a与存储装置100b之间的另一合适通信通道向存储装置100b(例如当前存储装置)的控制器110提交新类型的NVMe写入命令或请求。请求包含存储装置100a的CMB(先前数据)401的缓冲区地址的参考以及将与位于用于XOR运的算缓冲区地址处的数据一起使用的数据的位置的LBA。在接收到请求之后,存储装置100b的控制器110在413读取位于缓冲区CMB(瞬时XOR)处的数据且将其传送到写入缓冲区(新数据)402中。在存储装置100b的控制器110通知存储装置100a请求完成之后,存储装置100a解除分配用于缓冲区CMB(瞬时XOR)206中的存储器。参考的实例包含(但不限于)地址、CMB地址、地址描述符、识别符、指针或识别存储装置的缓冲区112的另一合适指示符。413处的传送响应于在411'接收到写入请求而执行。
图8B是说明根据一些实施方案的用于执行数据的实例方法800b的流程图。参考图1、4A、4B、8A及8B,方法800b对应于方法800a。方法800b可由存储装置100b的控制器110执行。方法800b与方法400b的不同之处在于:在421',存储装置100b(例如当前存储装置)的控制器110从存储装置100a(例如先前存储装置)接收新类型的写入请求。框422响应于在421'接收到的请求而执行。
图9A是说明根据一些实施方案的用于使备用存储装置投入使用的实例方法900a的框图。参考图1、5A、5B及9A,方法900a与方法500a的不同之处在于:在511',存储装置100a(例如先前存储装置)的控制器110经由无线或有线网络、总线或串行、平台内通信机制或存储装置100a与存储装置100b之间的另一合适通信通道向存储装置100b(例如当前存储装置)的控制器110提交新类型的NVMe写入命令或请求。请求包含存储装置100a的CMB(先前数据)501的缓冲区地址的参考以及将与位于用于XOR运算的缓冲区地址处的数据一起使用的数据的位置的LBA。在接收到请求之后,存储装置100b的控制器110在413读取位于缓冲区CMB(瞬时XOR)处的数据且将其传送到写入缓冲区(新数据)402中。在存储装置100b的控制器110通知存储装置100a请求完成之后,存储装置100a解除分配用于缓冲区CMB(瞬时XOR)206中的存储器。参考的实例包含(但不限于)地址、CMB地址、地址描述符、识别符、指针或识别存储装置的缓冲区112的另一合适指示符。513处的传送响应于在511'接收到写入请求而执行。
图9B是说明根据一些实施方案的用于使备用存储装置投入使用的实例方法900b的流程图。参考图1、5A、5B、9A及9B,方法900b对应于方法900a。方法900b可由存储装置100b的控制器110执行。方法900b与方法500b的不同之处在于:在521',存储装置100b(例如当前存储装置)的控制器110从存储装置100a(例如先前存储装置)接收新类型的写入请求。框522响应于在521'接收到的请求而执行。
图10是说明根据一些实施方案的用于为驱动器故障提供数据保护及恢复的实例方法1000的过程流程图。参考图1、6及7A到10,方法1000由第一存储装置(例如存储装置100b)的控制器110执行。方法700a、700b、800a、800b、900a及900b是方法1000的特定实例。方法1000与方法600的不同之处在于:在610',第一存储装置(例如存储装置100b)的控制器110从第二存储装置(例如存储装置100a)而非从主机101接收新类型的写入请求。在一些实例中,新类型的写入请求包含第二存储装置(例如存储装置100a)的缓冲区的地址以及将与位于用于XOR运算的缓冲区地址处的数据一起使用的数据的位置的LBA。框620响应于框610'而执行。
图11是说明根据一些实施方案的用于为驱动器故障提供数据保护及恢复的实例方法1100的过程流程图。参考图1到11,方法1100由第一存储装置(例如存储装置100b)的控制器110执行。方法200a、200b、300a、300b、400a、400b、500a、500b、600、700a、700b、800a、800b、900a、900b、1000是方法1100的特定实例。在1110,第一存储装置(例如存储装置100b)的控制器110接收新类型的写入请求。在一些布置中,新类型的写入请求可从主机101接收,如方法600中的框610处所公开。在其它布置中,新类型的写入请求可从第二存储装置(例如存储装置100a)接收,如方法1000中的框610'处所公开。框620(在方法600及1000中)响应于方法1100中的框1110而执行。框630(在方法600及1000中)响应于方法1100中的框620而执行。
图12是说明根据一些实施方案的用于更新数据的主机侧视图1200的示意图。参考图1到12,由主机101写入的RAID条带包含逻辑块1201、1202、1203、1204及1205。逻辑块1201到1204含有常规、非奇偶校验数据。逻辑块1205含有逻辑块1201到1204中的数据的奇偶校验数据。如所展示,响应于确定新数据1211将写入到存储装置100中的一者中的逻辑块1202(起初含有旧数据),而非像以往一样执行两个XOR运算或存储瞬时数据(例如瞬时XOR结果),主机101仅需将逻辑块1205更新为新数据1211。存储装置100的控制器110执行XOR运算且进行所描述的P2P传送。新数据1211及旧数据1212两者用于更新逻辑块1205中的奇偶校验数据。
图13是说明根据一些实施方案的奇偶校验数据放置的示意图。参考图1到13,RAID群组1300(例如RAID 5群组)包含四个驱动器:驱动器1、驱动器2、驱动器3及驱动器4。每一驱动器的实例是存储装置100中的一者。驱动器1到4中的每一者在其相应存储器阵列120中存储数据及奇偶校验数据。描绘四个RAID条带A、B、C、D,其中条带A包括数据A1、A2、A3及奇偶校验A,条带B、C及D依此类推。奇偶校验A通过对数据A1、A2及A3进行XOR运算来产生且存储于驱动器4上。奇偶校验B通过对数据B1、B2及B3进行XOR运算来产生且存储于驱动器3上。奇偶校验C通过对数据C1、C2及C3进行XOR运算来产生且存储于驱动器2上。奇偶校验D通过对数据D1、D2及D3进行XOR运算来产生且存储于驱动器1上。
通常,如果将A3修改(更新)为A3',那么主机101从驱动器1读取A1且从驱动器2读取A2,且对A1、A2及A3'进行XOR运算以产生奇偶校验A',且将A3'写入到驱动器3且将奇偶校验A'写入到驱动器4。替代地且通常,为了避免必须重新读取所有其它驱动器(尤其在RAID群组中存在四个以上驱动器时),主机101也可通过从驱动器3读取A3、从驱动器4读取奇偶校验A及对A3、A3'及奇偶校验A进行XOR运算且接着将A3'写入到驱动器3且将奇偶校验A'写入到驱动器4来产生奇偶校验A'。在两种常规情况下,修改A3将需要主机101至少执行从驱动器两次读取及两次写入到驱动器。
本文中所公开的布置可通过使驱动器(例如其控制器110)不仅能够内部执行XOR运算而且能够执行数据的P2P传送以产生及存储奇偶校验A'来消除主机101必须读取奇偶校验A。在一些实例中,驱动器可支持新类型的写入命令(其可为供应商唯一命令(VUC)或根据扩展现有规范的命令集的新NVMe规范的新命令)用于计算及存储结果XOR运算的结果以及协调驱动器之间的P2P数据传送。
主机101可向第一驱动器发送含有LBA的VUC,LBA用于(1)存储于第一驱动器上的数据或奇偶校验数据及(2)含有与对应于LBA的数据或奇偶校验数据XOR运算的数据的第二驱动器的地址。第一驱动器可读取由主机101发送的对应于LBA的数据或奇偶校验数据。读取是内部读取,且读取数据不发回到主机101。第一驱动器使基于地址从第二驱动器获得的数据与内部读取数据或奇偶校验数据XOR运算,将XOR运算的结果存储于对应于已读取的数据或奇偶校验数据的LBA中,且向主机101确认成功命令完成。此命令可以不超过同等大小的读取及写入命令所需的时间的时间执行。
主机101可向驱动器4发送命令,命令包含用于奇偶校验A及存储使A3与A3'进行XOR运算的结果的另一驱动器的地址的LBA。作为响应,驱动器4计算奇偶校验A'且将其存储于先前含有奇偶校验A的相同LBA中。
在一些实例中,命令可触发在控制器110内执行的XOR运算。命令还可触发P2P传送。命令可通过用于与存储装置通信的任何接口实施。在一些实例中,可使用NVMe接口命令。例如,主机101可向控制器110发送XFER命令(具有指示LBA)以引起控制器110对来自存储器阵列120的对应于指示LBA的数据执行计算函数(CF),待执行的CF的类型、执行CF的时间及关于哪些数据是CF特定的。例如,在将数据写入到存储器阵列120之前,CF操作可调用来自存储器阵列120的读取数据与从另一驱动器传送的写入数据XOR运算。
在一些实例中,不对元数据执行CF操作。主机101可指定待包含的保护信息作为CF操作的部分。在其它实例中,XFER命令引起控制器110根据为命令中指示的逻辑块指定的CF对数据及元数据进行操作。主机101同样可指定待包含的保护信息作为CF操作的部分。
在一些布置中,主机101可援引关于发送到存储装置100(例如用于写入操作)或从存储装置100请求(例如用于读取操作)的数据的CF。在一些实例中,在将数据保存到存储器阵列120之前应用CF。在一些实例中,在将数据保存到存储器阵列120之后应用CF。在一些实例中,存储装置100在执行CF之后将数据发送到主机101。CF的实例包含本文中所描述的XOR运算,例如针对RAID5。
提供先前描述来使所属领域的技术人员能够实践本文中所描述的各个方面。所属领域的技术人员将易于明白这些方面的各种修改,且本文中所界定的一般原理可应用于其它方面。因此,权利要求书不希望限于本文中所展示的方面,而是被给予与语言权利要求书一致的全范围,其中以单数形式指称的元件不希望意味着“有且仅有一个”(除非明确如此说明),而是意味着“一或多个”。除非另有明确说明,否则术语“一些”指代一或多个。所属领域的一般技术人员已知以后将知晓的贯穿先前描述描述的各个方面的元件的所有结构及功能等效物以引用方式明确并入本文中且希望由权利要求书涵盖。此外,无论权利要求书中是否明确叙述此公开,本文中所公开的任何内容不希望向公众公开。除非元件使用短语“用于…的构件”明确叙述,否则任何权利要求元件不应被解释为构件加功能。
应理解,所公开的过程中的步骤的特定顺序或层次是说明性方法的实例。基于设计偏好,将理解,可重新布置过程中步骤的特定顺序或层次,同时仍在先前描述的范围内。随附方法权利要求依样本顺序呈现各个步骤的元件,且不意味着受限于所呈现的特定顺序或层次。
提供所公开的实施方案的先前描述来使所属领域的技术人员能够制造或使用所公开的标的物。所属领域的技术人员将易于明白这些实施方案的各种修改,且可在不脱离先前描述的精神或范围的情况下将本文中所界定的一般原理应用于其它实施方案。因此,先前描述不希望限于本文中所展示的实施方案,而是应被给予与本文中所公开的原理及新颖特征一致的最广范围。
所说明及描述的各种实例仅作为实例供于说明权利要求书的各种特征。然而,关于任何给定实例展示及描述的特征不一定限于相关联实例,而是可与所展示及描述的其它实例使用或组合。此外,权利要求书不希望受限于任何一个实例。
前述方法描述及过程流程图仅作为说明性实例提供且不希望要求或暗示各种实例的步骤必须依所呈现的顺序执行。所属领域的技术人员将了解,前述实例中的步骤的顺序可依任何顺序执行。例如“此后”、“接着”、“接下来”等等的词语不希望限制步骤的顺序;这些词语仅用于引导读者理解方法的描述。此外,以单数形式指称的任何权利要求元件(例如,使用冠词“一(a/an)”或“所述”)不应被解释为将元件限制为单数。
结合本文中所公开的实例描述的各种说明性逻辑块、模块、电路及算法步骤可实施为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件及软件的此可互换性,上文已根据其功能性大体上描述各种说明性组件、块、模块、电路及步骤。此功能性实施为硬件还是软件取决于特定应用及强加于整个系统的设计约束。技术人员可依不同方式对每一特定应用实施所描述的功能性,但此类实施决策不应被解译为引起脱离本公开的范围。
用于实施结合本文中所公开的实例描述的各种说明性逻辑、逻辑块、模块及电路的硬件可用经设计以执行本文中所描述的功能的通用处理器、DSP、ASIC、FPGA或其它可编程逻辑装置、分立门或晶体管逻辑、分立硬件组件或其任何组合实施或执行。通用处理器可为微处理器,但替代地,处理器可为任何常规处理器、控制器、微控制器或状态机。处理器还可实施为计算装置的组合,例如DSP及微处理器的组合、多个微处理器、与DSP核心结合的一或多个微处理器或任何其它此配置。替代地,一些步骤或方法可由特定于给定功能的电路系统执行。
在一些例示性实例中,所描述的功能可以硬件、软件、固件或其任何组合实施。如果以软件实施,那么功能可作为一或多个指令或代码存储于非暂时性计算机可读存储媒体或非暂时性处理器可读存储媒体上。本文中所公开的方法或算法的步骤可体现于可驻留于非暂时性计算机可读或处理器可读存储媒体上的处理器可执行软件模块中。非暂时性计算机可读或处理器可读存储媒体可为可由计算机或处理器存取的任何存储媒体。通过实例而非限制,此类非暂时性计算机可读或处理器可读存储媒体可包含RAM、ROM、EEPROM、闪存、CD-ROM或其它光学驱动存储装置、磁性驱动存储装置或其它磁性存储装置或可用于以指令或数据结构的形式存储所要程序码且可由计算机存取的任何其它媒体。如本文中所使用,驱动器及光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)、软盘驱动器及蓝光光盘,其中驱动器通常磁性复制数据,而光盘用激光光学复制数据。上文的组合也包含于非暂时性计算机可读及处理器可读媒体的范围内。另外,方法或算法的操作可作为代码及/或指令的一者或任何组合或集合驻留于非暂时性处理器可读存储媒体及/或计算机可读存储媒体上,其可并入到计算机程序产品中。
提供所公开实例的前述描述来使所属领域的技术人员能够制造或使用本公开。所属领域的技术人员将易于明白这些实例的各种修改,且可在不脱离本公开的精神或范围的情况下将本文中所界定的一般原理应用于一些实例。因此,本公开不希望限于本文中所展示的实例,而是应被给予与随附权利要求书及本文中所公开的原理及新颖特征一致的最广范围。
Claims (20)
1.一种第一存储装置,其包括:
非易失性存储装置;及
控制器,其经配置以:
接收请求;
响应于接收到所述请求,从第二存储装置传送新数据;及
通过对所述新数据及现有数据执行XOR运算来确定XOR结果,所述现有数据存储于所述非易失性存储装置中。
2.根据权利要求1所述的第一存储装置,其中所述请求从可操作地耦合到所述第一存储装置的主机接收。
3.根据权利要求1所述的第一存储装置,其中所述请求从第二存储装置接收。
4.根据权利要求1所述的第一存储装置,其中所述请求包括所述第二存储装置的缓冲区的参考。
5.根据权利要求4所述的第一存储装置,其进一步包括现有数据驱动器缓冲区及新数据驱动器缓冲区,其中
响应于接收到所述请求,所述控制器使用基于所述第二存储装置的所述缓冲区的所述参考的传送机制将所述新数据从所述第二存储装置的所述缓冲区传送到所述新数据驱动器缓冲区;且
所述控制器执行读取操作以将所述现有数据从所述非易失性存储装置读取到所述现有数据驱动器缓冲区中。
6.根据权利要求4所述的第一存储装置,其进一步包括XOR结果驱动器缓冲区,其中所述控制器进一步经配置以:
使所述XOR结果在被确定之后存储于所述XOR结果驱动器缓冲区中;及
将所述XOR结果写入到所述非易失性存储装置。
7.根据权利要求6所述的第一存储装置,其中
所述新数据及所述现有数据对应于相同逻辑地址;
所述现有数据位于所述非易失性存储装置的第一物理地址处;且
将所述XOR结果写入到所述非易失性存储装置包括:
将所述XOR结果写入到所述非易失性存储装置的第二物理地址;及
更新逻辑到物理映射以对应于到所述第二物理地址的所述逻辑地址。
8.根据权利要求6所述的第一存储装置,其中所述现有数据及所述新数据是奇偶校验位。
9.根据权利要求5所述的第一存储装置,其进一步包括瞬时XOR结果驱动器缓冲区,其中
所述XOR结果对应于瞬时XOR结果;
来自所述瞬时XOR结果驱动器缓冲区的所述瞬时XOR结果作为先前数据传送到第三存储装置,而不跨接口发送到所述主机;且
所述第三存储装置是一系列存储装置中在所述第一存储装置之后的下一存储装置。
10.根据权利要求5所述的第一存储装置,其进一步包括瞬时XOR结果驱动器缓冲区,其中
所述XOR结果对应于瞬时XOR结果;
来自所述瞬时XOR结果驱动器缓冲区的所述瞬时XOR结果作为恢复数据传送到第三存储装置,而不跨接口发送到所述主机;
所述第三存储装置是投入使用的备用存储装置;且
所述恢复数据由所述第三存储装置的控制器存储于所述第三存储装置的非易失性存储器中。
11.一种方法,其包括:
由第一存储装置的控制器接收请求;
响应于接收到所述请求,由所述控制器从第二存储装置传送新数据;及
由所述控制器通过对所述新数据及现有数据执行XOR运算来确定XOR结果,所述现有数据存储于非易失性存储装置中。
12.根据权利要求11所述的方法,其中所述请求从可操作地耦合到所述第一存储装置的主机接收。
13.根据权利要求11所述的方法,其中所述请求从第二存储装置接收。
14.根据权利要求11所述的方法,其中所述请求包括所述第二存储装置的缓冲区的参考。
15.根据权利要求14所述的方法,其进一步包括:
响应于接收到所述请求,由所述控制器使用基于所述第二存储装置的所述缓冲区的所述参考的传送机制将所述新数据从所述第二存储装置的所述缓冲区传送到所述第一存储装置的新数据驱动器缓冲区;及
由所述控制器执行读取操作以将所述现有数据从所述非易失性存储装置读取到现有数据驱动器缓冲区中。
16.一种非暂时性计算机可读媒体,其包括计算机可读指令,使得当被执行时,引起第一存储装置的处理器:
接收请求;
响应于接收到所述请求,从第二存储装置传送新数据;及
通过对所述新数据及现有数据执行XOR运算来确定XOR结果,所述现有数据存储于所述非易失性存储装置中。
17.根据权利要求16所述的非暂时性计算机可读媒体,其中所述请求从可操作地耦合到所述第一存储装置的主机接收。
18.根据权利要求16所述的非暂时性计算机可读媒体,其中所述请求从第二存储装置接收。
19.根据权利要求16所述的非暂时性计算机可读媒体,其中所述请求包括所述第二存储装置的缓冲区的参考。
20.根据权利要求19所述的非暂时性计算机可读媒体,进一步引起所述处理器:
响应于接收到所述请求,使用基于所述第二存储装置的所述缓冲区的所述参考的传送机制将所述新数据从所述第二存储装置的所述缓冲区传送到所述第一存储装置的新数据驱动器缓冲区;及
执行读取操作以将所述现有数据从所述非易失性存储装置读取到现有数据驱动器缓冲区中。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063108196P | 2020-10-30 | 2020-10-30 | |
US63/108,196 | 2020-10-30 | ||
US17/133,373 | 2020-12-23 | ||
US17/133,373 US20220137835A1 (en) | 2020-10-30 | 2020-12-23 | Systems and methods for parity-based failure protection for storage devices |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114443346A true CN114443346A (zh) | 2022-05-06 |
Family
ID=81362773
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111268276.4A Pending CN114443346A (zh) | 2020-10-30 | 2021-10-29 | 用于存储装置的基于奇偶校验的故障保护的系统及方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220137835A1 (zh) |
CN (1) | CN114443346A (zh) |
TW (1) | TW202225968A (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11687286B2 (en) | 2021-07-16 | 2023-06-27 | Vmware, Inc. | Resiliency and performance for cluster memory |
US11704030B2 (en) | 2021-07-16 | 2023-07-18 | Vmware, Inc. | Resiliency and performance for cluster memory |
US11698760B2 (en) | 2021-07-16 | 2023-07-11 | Vmware, Inc. | Copy and restore of page in byte-addressable chunks of cluster memory |
US11914469B2 (en) * | 2021-07-16 | 2024-02-27 | Vmware, Inc. | Resiliency and performance for cluster memory |
KR20230106920A (ko) * | 2022-01-07 | 2023-07-14 | 삼성전자주식회사 | 스토리지 시스템 및 이를 포함하는 컴퓨팅 시스템 |
CN114610542B (zh) * | 2022-05-10 | 2023-03-14 | 深圳佰维存储科技股份有限公司 | 数据恢复方法、装置、可读存储介质及电子设备 |
US12050945B2 (en) * | 2022-07-15 | 2024-07-30 | Micron Technology, Inc. | Storage products with connectors to operate external network interfaces |
US11983434B2 (en) | 2022-07-15 | 2024-05-14 | Micron Technology, Inc. | Network-ready storage products with computational storage processors |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5774641A (en) * | 1995-09-14 | 1998-06-30 | International Business Machines Corporation | Computer storage drive array with command initiation at respective drives |
US5692200A (en) * | 1995-10-16 | 1997-11-25 | Compaq Computer Corporation | Bridge circuit for preventing data incoherency by holding off propagation of data transfer completion interrupts until data clears the bridge circuit |
JP4054182B2 (ja) * | 2001-09-25 | 2008-02-27 | 株式会社東芝 | 仮想的なraid装置を有するクラスタシステム及び同システム用のコンピュータ |
US8239706B1 (en) * | 2007-01-03 | 2012-08-07 | Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations | Data retrieval system and method that provides retrieval of data to any point in time |
US7921243B1 (en) * | 2007-01-05 | 2011-04-05 | Marvell International Ltd. | System and method for a DDR SDRAM controller |
WO2012010930A2 (en) * | 2010-07-21 | 2012-01-26 | Freescale Semiconductor, Inc. | Integrated circuit device, data storage array system and method therefor |
US9342405B2 (en) * | 2011-02-25 | 2016-05-17 | Seagate Technology Llc | Hierarchical data compression testing |
JP5422687B2 (ja) * | 2012-02-20 | 2014-02-19 | 京セラドキュメントソリューションズ株式会社 | 通信処理装置および画像形成装置 |
US20130304970A1 (en) * | 2012-04-20 | 2013-11-14 | Stec, Inc. | Systems and methods for providing high performance redundant array of independent disks in a solid-state device |
JP6039699B2 (ja) * | 2012-07-23 | 2016-12-07 | 株式会社日立製作所 | ストレージシステム及びデータ管理方法 |
EP2915049B1 (en) * | 2012-10-30 | 2020-03-04 | Hewlett-Packard Enterprise Development LP | Smart memory buffers |
US9645765B2 (en) * | 2015-04-09 | 2017-05-09 | Sandisk Technologies Llc | Reading and writing data at multiple, individual non-volatile memory portions in response to data transfer sent to single relative memory address |
US20170193003A1 (en) * | 2015-12-30 | 2017-07-06 | Commvault Systems, Inc. | Redundant and robust distributed deduplication data storage system |
US10067717B2 (en) * | 2016-05-10 | 2018-09-04 | International Business Machines Corporation | Processing a chain of a plurality of write requests |
US10372534B2 (en) * | 2016-09-20 | 2019-08-06 | Samsung Electronics Co., Ltd. | Method of operating memory device using a compressed party difference, memory device using the same and memory system including the device |
US10732893B2 (en) * | 2017-05-25 | 2020-08-04 | Western Digital Technologies, Inc. | Non-volatile memory over fabric controller with memory bypass |
US10481834B2 (en) * | 2018-01-24 | 2019-11-19 | Samsung Electronics Co., Ltd. | Erasure code data protection across multiple NVME over fabrics storage devices |
US10409511B1 (en) * | 2018-06-30 | 2019-09-10 | Western Digital Technologies, Inc. | Multi-device storage system with distributed read/write processing |
US10628258B2 (en) * | 2018-07-20 | 2020-04-21 | Micron Technology, Inc. | Die-level error recovery scheme |
US10922178B2 (en) * | 2018-10-31 | 2021-02-16 | Hewlett Packard Enterprise Development Lp | Masterless raid for byte-addressable non-volatile memory |
US10977073B2 (en) * | 2019-07-10 | 2021-04-13 | Dell Products L.P. | Architectural data mover for RAID XOR acceleration in a virtualized storage appliance |
KR20210113906A (ko) * | 2020-03-09 | 2021-09-17 | 에스케이하이닉스 주식회사 | 컴퓨팅 시스템 및 그 동작 방법 |
US11513891B2 (en) * | 2020-07-24 | 2022-11-29 | Kioxia Corporation | Systems and methods for parity-based failure protection for storage devices |
US11640334B2 (en) * | 2021-05-21 | 2023-05-02 | Microsoft Technology Licensing, Llc | Error rates for memory with built in error correction and detection |
-
2020
- 2020-12-23 US US17/133,373 patent/US20220137835A1/en active Pending
-
2021
- 2021-10-25 TW TW110139513A patent/TW202225968A/zh unknown
- 2021-10-29 CN CN202111268276.4A patent/CN114443346A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220137835A1 (en) | 2022-05-05 |
TW202225968A (zh) | 2022-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11513891B2 (en) | Systems and methods for parity-based failure protection for storage devices | |
US20220137835A1 (en) | Systems and methods for parity-based failure protection for storage devices | |
US11281601B2 (en) | Multi-device storage system with hosted services on peer storage devices | |
AU2014236657B2 (en) | Synchronous mirroring in non-volatile memory systems | |
US10685010B2 (en) | Shared volumes in distributed RAID over shared multi-queue storage devices | |
EP2703991B1 (en) | Scalable storage protection | |
US9037795B1 (en) | Managing data storage by provisioning cache as a virtual device | |
US8560772B1 (en) | System and method for data migration between high-performance computing architectures and data storage devices | |
US8583865B1 (en) | Caching with flash-based memory | |
US20150095696A1 (en) | Second-level raid cache splicing | |
EP2732375A2 (en) | Raided memory system | |
TWI451257B (zh) | 保護在直接附加儲存(das)系統中快取資料的完整性之裝置及方法 | |
EP2831735A1 (en) | Storage system and storage apparatus | |
JP2013156977A (ja) | 冗長キャッシュデータのエラスティックキャッシュ | |
US20200341873A1 (en) | Data access method, apparatus and computer program product | |
US10579540B2 (en) | Raid data migration through stripe swapping | |
WO2015011825A1 (ja) | ストレージシステムおよびストレージシステムの制御方法 | |
US12093566B2 (en) | Memory controller for managing raid information | |
US20210271393A1 (en) | Method and apparatus for performing data access management of all flash array server | |
US12056362B2 (en) | Non-volatile storage device offloading of host tasks | |
EP2859553A1 (en) | Memory system management | |
US11809274B2 (en) | Recovery from partial device error in data storage system | |
US20220187992A1 (en) | Systems and methods for data copy offload for storage devices | |
US12019917B2 (en) | Peer RAID control among peer data storage devices | |
US20240103765A1 (en) | Non-volatile storage device offloading of host tasks |
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 |