CN113641303A - 用于故障弹性存储的系统、方法和设备 - Google Patents

用于故障弹性存储的系统、方法和设备 Download PDF

Info

Publication number
CN113641303A
CN113641303A CN202110510880.7A CN202110510880A CN113641303A CN 113641303 A CN113641303 A CN 113641303A CN 202110510880 A CN202110510880 A CN 202110510880A CN 113641303 A CN113641303 A CN 113641303A
Authority
CN
China
Prior art keywords
storage device
mode
storage
read
failure
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110510880.7A
Other languages
English (en)
Inventor
奇亮奭
柳星旭
A.特兰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN113641303A publication Critical patent/CN113641303A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/142Reconfiguring to eliminate the error
    • G06F11/1428Reconfiguring to eliminate the error with loss of hardware functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1084Degraded mode, e.g. caused by single or multiple storage removals or disk failures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1629Error detection by comparing the output of redundant processing systems
    • G06F11/165Error detection by comparing the output of redundant processing systems with continued operation after detection of the error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/85Active fault masking without idle spares

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Retry When Errors Occur (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

一种操作存储设备的方法可以包括:确定存储设备的故障状况;基于存储设备的故障状况选择故障弹性模式;以及以所选择的故障弹性模式操作存储设备。所选择的故障弹性模式可以包括供电循环模式、重新格式化模式、降低容量只读模式、降低容量模式、降低性能模式、只读模式、部分只读模式、临时只读模式、临时部分只读模式或易受攻击模式中的一种。存储设备可以被配置成执行从主机接收的名称空间容量管理命令。名称空间容量管理命令可以包括调整尺寸子命令和/或零尺寸名称空间子命令。存储设备可以向主机报告所选择的故障弹性模式。

Description

用于故障弹性存储的系统、方法和设备
相关申请的交叉引用
本申请要求2020年5月11日提交的题为“故障弹性存储设备和接口”的第63/023,243号美国临时专利申请的优先权和利益,该申请通过引用结合于此;本申请要求2020年12月18日提交的题为“具有多种故障隔离模式的存储系统、方法和设备”的第63/128,001号美国临时专利申请的优先权和利益,该申请通过引用结合于此;本申请要求2020年7月13日提交的题为“故障弹性存储设备和接口”的第63/051,158号美国临时专利申请的优先权和利益,该申请通过引用结合于此;本申请要求2020年7月16日提交的题为“具有可持续只读特征的故障弹性驱动器”的第63/052,854号美国临时专利申请的优先权和利益,该申请通过引用结合于此;和本申请要求2020年7月28日提交的题为“使用故障弹性驱动器的故障弹性RAID 0方法”的第63/057,744号美国临时专利申请的优先权和利益,该申请通过引用结合于此。
技术领域
本公开一般涉及存储,更具体地说,涉及用于故障弹性存储的系统、方法和设备。
背景技术
存储设备可能会遇到故障状况,这可能会影响存储设备在存储系统中运行的能力。
在背景技术部分公开的上述信息仅用于增强对本发明背景的理解,因此它可能包含不构成现有技术的信息。
发明内容
一种操作存储设备的方法可以包括:确定存储设备的故障状况;基于存储设备的故障状况选择故障弹性模式;以及以所选择的故障弹性模式操作存储设备。所选择的故障弹性模式可以包括供电循环模式。所选择的故障弹性模式可以包括重新格式化模式。所选择的故障弹性模式可以包括降低容量只读模式。所选择的故障弹性模式可以包括降低容量模式。所选择的故障弹性模式可以包括降低性能模式。所选择的故障弹性模式可以包括只读模式。所选择的故障弹性模式可以包括部分只读模式。所选择的故障弹性模式可以包括临时只读模式。所选择的故障弹性模式可以包括临时部分只读模式。所选择的故障弹性模式可以包括易受攻击模式。所选择的故障弹性模式可以包括正常模式。存储设备可以被配置成执行从主机接收的命令。该命令可以包括名称空间容量管理命令。名称空间容量管理命令可以包括调整尺寸子命令。名称空间容量管理命令可以包括零尺寸名称空间命令。
一种存储设备可以包括存储介质和存储控制器,其中存储控制器被配置为:确定存储设备的故障状况;基于存储设备的故障状况选择故障弹性模式;并且以所选择的故障弹性模式操作存储设备。所选择的弹性模式可以包括供电循环模式、重新格式化模式、降低容量只读模式、降低容量模式、降低性能模式、只读模式、部分只读模式、临时只读模式、临时部分只读模式或易受攻击模式中的一种。存储设备可以执行从主机接收的名称空间容量管理命令。
一种系统可以包括主机和耦合到主机的至少一个存储设备,其中存储设备被配置成:确定存储设备的故障状况;基于存储设备的故障状况选择故障弹性模式;以所选择的故障弹性模式操作;并且向主机报告所选择的故障弹性模式。
一种操作存储阵列的方法可以包括:确定存储阵列的第一故障弹性存储设备的第一故障弹性操作模式;确定存储阵列的第二故障弹性存储设备的第二故障弹性操作模式;分配存储阵列的一个或多个附加故障弹性存储设备的一个或多个救援空间;将来自第一故障弹性存储设备的用户数据映射到一个或多个救援空间;以及将来自第二故障弹性存储设备的用户数据映射到一个或多个救援空间。该方法还可以包括将一个或多个附加故障弹性存储设备的至少一个设备标识符(ID)重新分配给第一故障弹性存储设备的设备ID。可以基于当前未受影响的设备ID和当前故障设备ID来重新分配一个或多个附加故障弹性存储设备的至少一个设备ID。该方法还可以包括将来自第一故障弹性存储设备的一个或多个输入和/或输出(IO)重定向到一个或多个附加故障弹性存储设备。用户数据可以包括数据子带。基于用户数据的条带ID,数据子带可以被重定向到一个或多个附加故障弹性存储设备的目标存储设备。将来自第一故障弹性存储设备的用户数据映射到一个或多个救援空间可以包括维护第一映射表。将来自第二故障弹性存储设备的用户数据映射到一个或多个救援空间可以包括维护第二映射表。一个或多个救援空间可以具有存储设备容量的救援空间百分比。救援空间百分比可以大于或等于存储阵列容纳的故障存储设备的数量除以存储阵列中存储设备的总数。一个或多个救援空间可以静态分配。一个或多个救援空间可以动态分配。
一种系统可以包括:存储阵列,该存储阵列包括第一故障弹性存储设备、第二故障弹性存储设备、一个或多个附加故障弹性存储设备;和卷管理器,该卷管理器被配置为:确定第一故障弹性存储设备的第一故障弹性操作模式,确定第二故障弹性存储设备的第二故障弹性操作模式,分配存储阵列的一个或多个附加故障弹性存储设备的一个或多个救援空间,将来自第一故障弹性存储设备的用户数据映射到一个或多个救援空间,并将来自第二故障弹性存储设备的用户数据映射到一个或多个救援空间。卷管理器还可以被配置为将一个或多个附加故障弹性存储设备的至少一个设备标识符(ID)重新分配给第一故障弹性存储设备的设备ID。卷管理器还可以被配置为将来自第一故障弹性存储设备的一个或多个输入和/或输出(IO)重定向到一个或多个附加故障弹性存储设备。用户数据可以包括数据子带,并且卷管理器可以进一步被配置为基于用户数据的条带ID将数据子带重定向到一个或多个附加故障弹性存储设备的目标存储设备。一个或多个救援空间具有存储设备容量的救援空间百分比,并且救援空间百分比可以基于存储阵列容纳的故障存储设备的数量除以存储阵列中存储设备的总数。
一种装置可以包括用于存储阵列的卷管理器,该卷管理器可以包括被配置为用于以下的逻辑:确定存储阵列的第一故障弹性存储设备的第一故障弹性操作模式,确定存储阵列的第二故障弹性存储设备的第二故障弹性操作模式,分配存储阵列的一个或多个附加故障弹性存储设备的一个或多个救援空间,将来自第一故障弹性存储设备的用户数据映射到一个或多个救援空间,并将来自第二故障弹性存储设备的用户数据映射到一个或多个救援空间。用户数据可以包括数据子带,并且该数据子带可以基于用户数据的条带标识符(ID)被重定向到一个或多个附加故障弹性存储设备的目标存储设备。一个或多个救援空间具有存储设备容量的救援空间百分比,并且救援空间百分比可以基于存储阵列容纳的故障存储设备的数量除以存储阵列中存储设备的总数。
一种操作存储阵列的方法可以包括:分配存储阵列的第一故障弹性存储设备的第一救援空间,分配存储阵列的第二故障弹性存储设备的第二救援空间,确定存储阵列的第三故障弹性存储设备的故障弹性操作模式,以及基于确定故障弹性操作模式将来自第三故障弹性存储设备的用户数据映射到第一救援空间和第二救援空间。用户数据的第一块可以被映射到第一救援空间,并且用户数据的第二块可以被映射到第二救援空间。用户数据可以包括数据子带。数据子带的第一部分可以被映射到第一救援空间,并且数据子带的第一部分可以包括基于数据子带的尺寸和数据块的尺寸的多个数据块。数据块的数量可以进一步基于存储阵列中存储设备的总数。该方法还可以包括将第一故障弹性存储设备的至少一个设备标识符(ID)重新分配给第三故障弹性存储设备的设备ID。该方法还可以包括将来自第三故障弹性存储设备的一个或多个输入和/或输出(IO)重定向到第一救援空间和第二救援空间。第一救援空间可以具有基于第一故障弹性存储设备的容量和存储阵列中存储设备的总数的容量。基于第一救援空间的尺寸和块的尺寸,第一救援空间可以具有子带的容量。
一种系统可以包括存储阵列,该存储阵列包括第一故障弹性存储设备、第二故障弹性存储设备、第三故障弹性存储设备和卷管理器,该卷管理器被配置为分配第一故障弹性存储设备的第一救援空间、分配第二故障弹性存储设备的第二救援空间、确定第三故障弹性存储设备的故障弹性操作模式、以及基于确定故障弹性操作模式将来自第三故障弹性存储设备的用户数据映射到第一救援空间和第二救援空间。卷管理器还可以被配置成将用户数据的第一块映射到第一救援空间,并将用户数据的第二块映射到第二救援空间。用户数据可以包括数据子带,并且卷管理器可以进一步被配置成将数据子带的第一部分映射到第一救援空间。基于数据子带的尺寸和数据块的尺寸,数据子带的第一部分可以包括多个数据块。数据块的数量可以进一步基于存储阵列中存储设备的总数。
一种操作存储阵列的方法可以包括:确定存储阵列的第一故障弹性存储设备的第一参数,确定存储阵列的第二故障弹性存储设备的第二参数,以及基于第一参数和第二参数确定存储阵列的服务质量(QoS)。该方法还可以包括基于QoS调整第一参数。可以基于监控第一参数来自动调整第一参数。可以基于监控第二参数来自动调整第一参数。第一参数可以通过配置存储阵列的组件来调整。可以通过控制存储阵列的组件的操作来调整第一参数。第一参数可以包括存储阵列中的存储设备数量、第一故障弹性存储设备的用户数据子带中的数据块数量、用于将来自第一故障弹性存储设备的数据重定向到第二故障弹性存储设备的写入方法、存储阵列支持的故障存储设备的数量或者第一故障弹性存储设备的存储容量中的一个。
一种系统可以包括存储阵列,该存储阵列包括第一故障弹性存储设备、第二故障弹性存储设备和卷管理器,该卷管理器被配置为确定第一故障弹性存储设备的第一参数,确定第二故障弹性存储设备的第二参数,并且基于第一参数和第二参数确定存储阵列的服务质量(QoS)。音量管理器还可以被配置为基于QoS来调整第一参数。音量管理器还可以被配置为基于对第一参数的监控来自动调整第一参数。音量管理器还可以被配置为基于监控第二参数来自动调整第一参数。
附图说明
附图不一定是按比例绘制的,为了说明的目的,在所有附图中,类似结构或功能的元件通常可以由相同的附图标记或其部分表示。附图仅旨在便于描述这里描述的各种实施例。附图没有描述在此公开的教导的每个方面,并且没有限制权利要求的范围。为了防止附图变得模糊,并非所有的组件、连接等都可以被示出,并且并非所有的组件都可以具有附图标记。然而,组件配置的模式可以从附图中容易地显而易见。附图与说明书一起示出了根据本公开的示例实施例,并且与说明书一起用于解释本公开的原理。
图1示出了根据本公开的示例实施例的存储系统的实施例。
图2A示出了根据本公开的示例实施例的故障弹性存储设备的实施例可能遇到的一些可能的故障状况的表格。
图2B示出了根据本公开的示例实施例的可由存储设备实现的故障弹性模式和相关空间类型的一些示例实施例的表格。
图2C示出了根据本公开的示例实施例的可由存储设备实现的命令和子命令的一些示例实施例的表格。
图2D示出了根据本公开的示例实施例的存储设备可以通过API实现的命令表。
图3A示出了根据本公开的示例实施例的用于在故障弹性模式下操作的方法的实施例的流程图。
图3B示出了根据本公开的示例实施例的操作存储设备的方法的实施例的流程图。
图4A示出了根据本公开的示例实施例的执行写操作的RAID-0系统的示意性数据布局图。
图4B示出了根据本公开的示例实施例的执行读取操作的RAID-0系统的示意性数据布局图。
图4C示出了根据本公开的示例实施例的执行重映射和写操作的RAID-0系统的示意性数据布局图。
图5A示出了根据本公开的示例实施例的用于操作RAID-0系统的方法的流程图。
图5B示出了示出根据本公开的示例实施例的用于操作RAID-0存储系统的方法的细节的流程图。
图6示出了根据本公开的示例实施例的RAID-0系统的实施例的示意图。
图7示出了根据本公开的示例实施例的可以利用数据块写入来实现救援空间管理的RAID-0系统的实施例的示意图。
图8示出了根据本公开的示例实施例的用于在存储系统中实现服务质量(QoS)管理的系统的示例实施例。
图9示出了根据本公开的示例实施例的操作存储阵列的方法的实施例。
图10示出了根据本公开的示例实施例的操作存储阵列的另一方法的实施例。
图11示出了根据本公开的示例实施例的操作存储阵列的另一方法的实施例。
具体实施方式
概览
根据本公开的示例实施例的一些原理涉及在存储设备发生故障的情况下可以继续以一种或多种故障弹性模式操作的存储设备。例如,存储设备可以继续以有限的方式操作,这可以使存储系统能够快速和/或有效地从存储驱动器的故障中恢复。
在一些实施例中,存储设备可以实现任意数量的以下故障弹性(FR)模式:
一些实施例可以实现供电循环模式,该模式可以包括基于存储设备的供电循环的自修复。
一些实施例可以实现重新格式化模式,该模式可以包括基于格式化全部或部分存储设备的自修复。
一些实施例可以实现降低容量只读模式,其中存储设备的存储空间的第一部分可以正常操作,第二部分可以作为只读存储空间操作。
一些实施例可以实现降低容量模式,其中存储设备的存储空间的第一部分可以正常操作,而第二部分可能不可用于输入和/或输出(I/O)操作。
一些实施例可以实现降低性能模式,其中可以降低存储设备的性能的一个或多个方面。
一些实施例可以实现只读模式,其中可以从存储设备读取数据,但不能向存储设备写入数据。
一些实施例可以实现部分只读模式,其中存储设备的存储空间的第一部分可以作为只读存储空间操作,而第二部分可能不可用于正常的输入和/或输出(I/O)操作。
一些实施例可以实现临时只读模式,在该模式中,可以从存储设备的存储空间中读取数据,但不能向存储设备的存储空间中写入数据,该模式可以是临时有效的,并且可以变得无效。
一些实施例可以实现临时部分只读模式,在该模式中,可以从存储设备的存储空间的第一部分读取数据,但是不可以向其写入数据,该第一部分可以是临时有效的,并且可以变得无效。第二部分可能不可用于输入和/或输出(I/O)操作。
一些实施例可以实现易受攻击模式,其中存储设备可能不可用于输入和/或输出(I/O)操作。
一些实施例可以实现存储设备可以正常操作的正常模式。
在一些实施例中,存储设备可以实现一个或多个命令,主机可以使用这些命令来确定和/或管理存储设备的一个或多个特征。例如,在一些实施例中,存储设备可以实现名称空间容量管理命令,该命令可以包括调整尺寸和/或零尺寸子命令。
这里公开的原理具有独立的实用性,并且可以单独实施,并且不是每个实施例都可以利用每个原理。然而,这些原理也可以以各种组合来体现,其中一些可以以协同的方式放大各个原理的益处。
存储系统
图1示出了根据本公开的示例实施例的存储系统的实施例。图1所示的实施例可以包括主机105和一个或多个存储设备110。一个或多个存储设备110中的一些或全部可以直接连接到主机105,并且一个或多个存储设备110中的一些或全部可以通过卷管理器115连接到主机105,如图1所示。每个存储设备110可以包括存储控制器120(或“控制电路”)和存储介质125。在一些实施例中,存储设备110可能经历内部故障状况,并且存储设备可以表现出各种故障弹性行为,如下面进一步详细讨论的,以减轻故障状况的系统级影响。
一个或多个存储设备110可以用任何类型的存储装置和相关联的存储介质来实现,包括固态驱动器(SSD)、硬盘驱动器(HDD)、光盘驱动器、基于例如具有体电阻变化的交叉网格非易失性存储器等的任何类型的永久存储器的驱动器、和/或它们的任何组合。每个存储设备中的数据可以被安排为块、关键值结构等和/或其任意组合。每个存储设备110可以具有任何形状因数,例如3.5英寸、2.5英寸、1.8英寸、M.2、MO-297、MO-300、企业和数据中心SSD形状因数(EDSFF)等,使用任何连接器配置,例如串行ATA(SATA)、小型计算机系统接口(SCSI)、串行连接SCSI(SAS)、U2等,并且使用任何存储接口和/或协议,例如外围组件互连(PCI)、PCI express(PCIe)、非易失性存储器高速(NVMe)、光纤NVMe(NVMe-oF)、以太网、无限带宽、光纤通道等。一些实施例可以完全或部分地与服务器机箱、服务器机架、数据室、数据中心、边缘数据中心、移动边缘数据中心和/或其任意组合等一起实现和/或结合其使用。
这里公开的主机105、卷管理器115、存储控制器120和/或任何其他组件中的任何一个或全部可以用硬件、软件或其任意组合来实现,包括组合逻辑、时序逻辑、一个或多个定时器、计数器、寄存器、状态机、复杂可编程逻辑器件(CPLD)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、复杂指令集计算机(CISC)处理器和/或精简指令集计算机(RISC)处理器、和/或执行存储在易失性存储器(例如动态随机存取存储器(DRAM)和/或静态随机存取存储器(SRAM))、非易失性存储器(例如闪存等)以及图形处理单元(GPU)、神经处理单元(NPU)等中的指令的组件。
虽然本发明的原理不限于任何特定的实现细节,但是为了说明的目的,在一些实施例中,每个存储设备110可以被实现为SSD,其中存储介质可以被实现为例如非与(NAND)闪存,并且每个存储控制器120可以实现与操作SSD相关联的任何功能,包括闪存转换层(FTL)、存储接口以及与实现这里公开的故障弹性特征相关联的任何功能。存储设备110中最小的可擦除单元可以被称为“块”,存储设备110中最小的可写单元可以被称为“页”。
存储介质125可以具有保留期(其可以取决于存储介质125的使用历史,并且因此可以在存储介质125内变化);存储时间超过保留期的数据(即数据的年龄超过保留期)可能变得不可靠,并可能被认为已过期。可以使用纠错码将数据存储在存储介质125中,纠错码可以是例如块编码(block code)。当从存储介质125读取数据时,可以从存储介质125读取被称为代码块的大量原始数据,并且可以尝试对其进行解码。如果尝试失败,可以进行额外的尝试(例如,读取检索)。随着使用,存储介质125的一部分(例如,块)可能退化到保留期变得不可接受地短的程度,并且该块可能被分类为“坏块”。为了避免这种情况导致整个存储介质125不可操作,可以存在被称为“坏块管理保留空间”的保留空间(例如,包括在每个闪存管芯或每个闪存平面中),并且控制器120或闪存管芯或闪存平面内部的另一个控制器可以开始使用保留空间中的块并停止使用坏块。
关于图1所示实施例描述的操作和/或组件,以及这里描述的所有其他实施例,是示例操作和/或组件。在一些实施例中,可以省略一些操作和/或组件,和/或可以包括其他操作和/或组件。此外,在一些实施例中,操作和/或组件的时间和/或空间顺序可以变化。虽然一些组件可以被示为单独的组件,但是在一些实施例中,单独示出的一些组件可以被集成到单个组件中,和/或示为单个组件的一些组件可以用多个组件来实现。
故障条件
图2A示出了根据本公开的示例实施例的故障弹性存储设备的实施例可能遇到的一些可能的故障状况的表格。每个故障条件(或“故障状态”)可以在第一列中用情况标识符(“情况ID”)来标记。第二列可以指示处于故障状态的存储器的操作状态。对于每种情况,表的第三列可以指示有效的用户数据是否仍然可用。表格的第四列可以指示存储设备110是否最终可以返回到全部功能,例如,通过重新格式化存储介质125。
情况1可包括存储设备110不再能够执行读或写操作的故障状况,并且该故障状况不能通过循环供电和/或重新格式化存储介质来解决。存储设备110以这种方式表现的状态可以具有各种子状态,例如,每个子状态对应于不同的故障机制。这种状态或故障状况(其中存储设备110不再能够执行读或写操作,并且这不能通过循环供电或重新格式化存储介质来解决)可以由例如控制器的固件的一部分被破坏(在这种情况下,控制器可能重新启动到安全模式,其中被破坏的指令可能不被执行)或存储设备110中的处理电路的故障(例如,管理与存储介质的交互但不负责与主机105的通信的处理电路的故障)造成。当这种类型的故障状况发生时,存储设备110可以用错误消息来响应来自主机105的读或写命令。
情况2可包括故障状况(i)其中存储设备110可能不再能够执行读或写操作,以及(ii)通过循环存储设备110的供电、通过重新格式化存储介质(例如,非易失性存储器(NVM))、通过重新加载固件和/或类似方式,从故障状况中回复是可能的。这种故障状况可以由例如存储设备110的控制器120的程序执行错误(例如,由于控制器120的随机存取存储器(RAM)中的位翻转而超出范围的指针,或者由于位翻转而不正确的指令)引起。如果程序执行错误没有导致控制器120向存储介质125写入不正确的数据(例如,如果自控制器最近一次向存储介质写入以来发生了程序执行错误),那么对存储设备进行供电循环足以将存储设备110恢复到正常操作。如果程序执行错误导致控制器120将错误数据写入存储介质125,则重新格式化存储介质125和/或重新加载固件足以将存储设备110恢复到正常操作。
情况3可以包括可以通过以只读模式操作存储设备110来减轻的故障状况,并且对于该故障状况,重新格式化存储介质125可能无法恢复全部功能。这种故障的示例可以包括(i)温度传感器故障,以及(ii)存储介质125的一部分已经转变为只读模式。在温度传感器故障的情况下,可以通过确定温度传感器读数超出范围(例如,已经超过阈值温度)来检测故障,并且在这种情况下,可以通过避免写操作来降低存储设备110过热的风险,写操作可能比读操作消耗更多的功率。例如,对于闪存存储介质125,如果闪存平面或管芯耗尽了用于运行时坏块管理的坏块管理保留空间,则可以发生存储介质125的一部分向只读模式的转换。例如,存储设备110可以在尝试执行读取操作时,不成功地尝试解码数据项,确定存储数据的块是坏块,并且在将数据从坏块移动到坏块管理保留空间时,确定剩余的坏块管理保留空间小于阈值尺寸,因此不足以确保平面或管芯的可靠性。存储设备110然后可以确定不再执行坏块管理,并且转换到只读模式。在一些实施例中,数据项可以指在一个操作中被处理的任何数量的数据,例如,从解码代码块得到的数据可以是数据项。
情况4可以包括可以通过以直写模式操作存储设备110来减轻的故障状况。例如,如果存储设备110中的供电备用电容器出现故障,则该设备可以响应于从主机接收到的写命令,在向主机105发送命令完成之前完成对存储介质125的写入,使得如果在对存储介质125的写入已经完成之前供电出现故障,主机不会被错误地告知写入成功完成。以直写模式操作可能导致性能降低(例如,就吞吐量和/或延迟方面而言)。
情况5可以包括可以通过以降低功耗的方式操作存储设备110来减轻的故障状况。例如,在温度传感器故障的情况下,存储设备110可以以如上所述的只读模式操作,或者它可以降低可以执行操作(例如,写操作,其可以消耗比读操作更多的功率)的速率,以降低存储设备110中的功率消耗。例如,存储设备110可以对存储介质执行第一次写入,然后在对应于性能降低的间隔期间等待(该等待导致执行写入操作的速率降低),然后对存储介质执行另一次(例如,第二次)写入。
情况6可以包括可以通过以只读模式操作存储设备110来减轻的故障状况,并且对于该故障状况,重新格式化存储介质125可以恢复全部功能。
故障弹性
基于一个或多个故障状况,例如由图2A中列出的情况所例示的那些,在一些实施例中,根据本公开的示例性实施例,存储设备110可以实现各种级别的故障弹性。例如,一些实施例可以实现完全弹性模式、部分弹性模式和易受攻击模式。在完全弹性模式下,存储设备110可以以自修复特征操作,并且存储设备110可以能够通过重置操作(例如供电循环、重新加载固件或存储介质125的格式化)来恢复全部功能(尽管设备中的用户数据可能丢失)。
在部分弹性模式中,当存在故障状况时,存储设备110可以以较低的性能、降低的容量或降低的能力操作。例如,如上所述,如果供电备用电容器出现故障,则仅在数据被写入存储介质125(即,可以执行同步写入)之后,才可以完成写入(例如,可以向主机105发送命令完成),从而减慢存储设备110的操作,并降低其性能。在这种情况下,可以保留用户数据。作为另一个例子,如果坏块管理运行时坏块(RTBB)的保留空间耗尽,存储设备110可以以减小的容量操作。在这种情况下,存储设备110中受影响的管芯可以从磁盘空间中排除,并且整体磁盘容量可以减小。在丢失空间上的用户数据可能会丢失。例如,如果IO确定性中的集合或分区名称空间中的区域不再能够接受新的数据写入,则该集合或该区域可能会被排除在磁盘空间之外,但剩余的磁盘空间仍可用于读写操作。区域或集合上的用户数据可能会丢失。
例如,如果存储设备110不允许写操作,并且切换到只读模式,则存储设备110可以以降低的能力操作。在一些实施例中,存储设备110能够以两种类型的只读模式操作:可持续只读模式(可称为“第一只读模式”)和不可持续只读模式(可称为“第二只读模式”)。在可持续只读模式中,存储设备110可以在存储介质125的保留期之外继续服务读取请求。例如,当在可持续只读模式下操作不可行时,例如,当没有足够的未使用的存储空间来建立救援空间时,可以采用不可持续只读模式。当转换到不可持续只读模式时,存储设备110可以向主机105发送存储设备110正在第二(不可持续)只读模式下操作的通知,并且存储在存储设备110中的数据项可以被允许期满(例如,在它们各自的保留期结束时)。在不可持续只读模式中,存储设备110可以在存储介质125的保留期期间继续服务读取请求,并且如果存储设备110遇到数据完整性问题(例如,检测到通过在读取操作期间解码数据的一次或多次不成功的尝试),存储设备110可以报告无效数据区域。
在易受攻击模式下操作的存储设备110可能不能执行正常的读和/或写操作,并且可能执行优雅的退出,例如,通过继续从主机接收命令并返回错误。
因此,在一些实施例中,根据本公开的示例性实施例的具有一个或多个故障弹性特征的存储设备可以扩展和/或组织这些特征,使得主机可以系统地利用它们,并且尽管存在故障状况,该设备也可以继续以某种容量操作。在一些实施例中,例如,如果存储设备用于RAID(独立(或廉价)驱动器冗余阵列)或RAIN(独立节点冗余阵列),并且节点发生故障,则系统可以通过从存储设备的可访问空间复制数据来恢复数据,而不计算条带奇偶校验。
逻辑块地址空间类型
在一些实施例中,根据本公开的示例实施例,各种逻辑块地址(LBA)空间类型可以由具有故障弹性特征的存储设备来实现。这些LBA空间类型可以由例如如图1所示的存储设备使用。LBA空间类型的一些示例可能包括执行(P)空间、性能不佳(UP)执行空间、只读(RO)空间、易失性只读(VRO)空间和不可访问(IA)空间。在一些实施例中,LBA空间还可以指任何存储空间单位,例如页面、分区、集合、区域等。
执行(P)空间可包括包含有效数据的LBA空间,其能够以正常方式被读取和写入而不牺牲性能。执行空间中的数据可以有效。
性能不佳(UP)执行空间可能包括包含有效数据的LBA空间,这些数据可能能够以正常方式读取和写入,但性能下降(例如,写入性能下降)。
只读(RO)空间可能包括包含有效数据的LBA空间,该空间可能是只读的。例如,存储设备可以拒绝写入从主机接收的数据和/或可以用错误消息来响应来自主机的指向这种类型的LBA空间的写命令。只读空间中的数据可能会在超过保留期的一段时间内保持有效。
易失性只读(VRO)空间可以包括只读空间,并且存储设备可以用错误消息来响应从主机向这种类型的LBA空间的写命令。这种类型的LBA空间中的数据可以是暂时有效的,并且当其过期时,即当其存储介质中的数据的年龄达到存储介质的保留期时,可能变得无效。
不可访问(IA)空间可能包括包含无效数据的LBA空间,主机可能无法访问这些数据。
故障弹性模式
在一些实施例中,例如,可以使用LBA空间类型来实现故障弹性模式的一些实施例。图2B示出了根据本公开的示例实施例的可由存储设备实现的故障弹性模式和相关联的LBA空间类型的一些示例实施例的表格。根据本公开的示例实施例,图2B所示的表格的模式列可以包括故障弹性模式号和名称,其可以用于例如在应用编程接口(API)中识别模式,通过该API可以访问存储设备的一个或多个特征。在图2B所示的表格中标记为P、UP、RO、VRO和IA的列可以分别指示可在相应模式中使用的执行(P)、性能不佳(UP)、只读(RO)、易失性只读(VRO)和不可访问(IA)LBA空间的量。
在一些实施例中,例如,主机可以通过API调用图2B所示的模式。在一些实施例中,主机可以使用如下所述的获取特征命令来查询存储设备。在一些实施方式中,响应于获取特征命令,用星号(*)标识的模式可以向主机提供关于模式使用的每种类型的LBA空间的详细信息。在一些实现中,关于由其他命令使用的LBA空间的信息可以是隐式的。例如,在供电循环模式(模式1)下,所有存储器可以是执行(P)类型。然而,在一些实施例中,可以使用LBA空间类型和/或其部分的其他组合。
在一些实施例中,存储设备可以实现任意数量的以下故障弹性模式。例如,设备制造商可以在不同的产品中实现这些和其他故障弹性模式的不同组合。
供电循环模式(模式1)可能包括基于存储设备供电循环的自修复。例如,基于诸如SRAM或DRAM的存储器中的一个或多个翻转位,存储设备可能经历故障状况。翻转位可能由例如老化、发热和/或基于天线或海平面以上的高海拔引起的辐射引起,这可能干扰存储单元。具有故障弹性供电循环模式的存储设备可以具有自修复能力,使得对存储设备进行供电循环(例如,移除然后重新施加供电)可以重置当前状态并将故障SSD恢复到正常状态。在这种情况下,提交队列中的一个或多个正在运行的命令可能会丢失。存储设备的用户数据是否保持有效可能取决于实现细节,例如设备的分区、存储控制器的不同电路被重置的程度等。在一些实施例中,在供电循环模式下,存储设备的整个存储空间(100%)可以正常操作(例如,作为执行(P)空间)。
重新格式化模式(模式2)可以包括基于格式化全部或部分存储设备的自修复。在一些实施例中,格式化存储设备可以重置其当前状态,并将故障存储设备恢复到其正常状态。然而,根据实现细节(例如,快速格式、完整格式、分区细节等),盘上的所有数据都可能丢失。在一些实施例中,在重新格式化模式下,存储设备的整个存储空间(100%)可以正常操作(例如,作为执行(P)空间)。
在容量降低只读模式(模式3)中,存储设备的存储空间的第一部分(例如,百分之X)可以正常操作(例如,作为执行(P)空间),而第二部分(例如,(百分之100-X)可以作为只读(RO)存储空间操作。因此,存储设备中的性能(P)空间的尺寸可以减小,并且存储设备可以相对于该空间表现得像正常驱动器,但是只读(RO)类型的空间可能不可写。在一些实施例中,例如,响应于获取特征命令,存储设备可以向主机提供执行(P)空间和/或只读(RO)空间的LBA范围的列表。如果存储设备支持IO确定性,则LBA范围可能代表一个集合。如果存储设备支持分区名称空间(ZNS),则LBA范围可能代表一个区域。在一些实施例中,存储设备还可以响应于获取特征命令来提供关于集合和/或ZNS的地址范围的信息。
在降低容量模式(模式4)中,存储设备的存储空间的第一部分(例如,百分之X)可以正常操作(例如,作为执行(P)空间),并且第二部分(例如,百分之100-X)可以不可访问(IA)。因此,存储设备中的执行(P)空间的尺寸可以减小,并且存储设备可以相对于该空间表现得像正常驱动器,但是不可访问(IA)空间对于正常IO可能不可用。例如,如果RTBB耗尽,则有问题的管芯可能被排除在磁盘空间之外,因此,整体磁盘容量可能降低。存储设备可以为执行(P)空间和/或不可访问(IA)空间类型提供LBA范围列表。如果存储设备支持IO确定性,则LBA范围可能代表一个集合。如果存储设备支持ZNS,则LBA范围可能代表一个区域。在一些实施例中,存储设备可以响应于获取特征命令来提供关于LBA范围、集合、区域等的信息。
在降低性能模式(模式5)中,可以降低存储设备的一个或多个方面的性能。例如,存储设备可以执行正常操作,但是吞吐量和/或延迟降低。在一些实施例中,存储设备可以包括一个或多个备用电容器,在主供电丢失的事件下,该备用电容器可以向存储设备提供足够长时间的电力,以使存储设备能够完成写操作。如果这些备用电容器中的一个或多个发生故障,存储设备可能不会通知主机写操作完成,直到数据被写入介质之后。(这可以称为同步写操作。)这可能会减少每秒的输入和/或输出操作(IOPS)和/或增加延迟,从而降低存储设备的性能。因此,在一些实施例中,降低性能模式可以在100%的性能不佳(UP)空间下操作。根据实施细节,部分或全部用户数据可能仍然有效。在一些实施例中,存储设备可以向主机提供推测性能信息,这可以使主机能够以减轻故障状况的系统级影响的方式做出关于向存储设备发送写数据的决定。
在只读模式(模式6)中,存储设备可能只允许读操作,并可能阻止外部写操作。根据实施细节,只读空间中的数据可能会保持有效,例如,在保留期之后。只读模式可以在100%的只读(RO)空间下运行。
在部分只读模式(模式7)中,存储设备的存储空间的第一部分(例如,百分之X)可以作为只读(RO)空间操作,而第二部分(例如,百分之100-X)可以是不可访问(IA)空间。因此,存储设备可以只允许读操作,并且在存储空间的第一部分中可以禁止外部写操作。根据实施细节,只读空间中的数据可能仍然有效,例如,在保留期之后。存储设备可以为只读(RO)空间和/或不可访问(IA)空间类型提供LBA范围列表。如果存储设备支持IO确定性,则LBA范围可能代表一个集合。如果存储设备支持ZNS,则LBA范围可能代表一个区域。在一些实施例中,存储设备可以响应于获取特征命令来提供关于LBA范围、集合、区域等的信息。
在临时只读模式(模式8)中,可以从存储设备的存储空间读取数据,该存储设备可以在百分之100空间下运行,但可能会禁止外部写入。此空间中的数据可能暂时有效,但在保留期后可能会失效。
在临时部分只读模式(模式9)中,可以从存储设备的存储空间的第一部分(例如,百分之X)读取数据,该存储空间可以作为VRO空间操作,而可以禁止外部写入。第二部分(例如,百分之100-X)可能是不可访问(IA)空间。第一部分中的数据可能暂时有效,但在保留期后可能会失效。如果存储设备支持IO确定性,则LBA范围可能代表一个集合。如果存储设备支持ZNS,则LBA范围可能代表一个区域。在一些实施例中,存储设备可以响应于获取特征命令来提供关于LBA范围、集合、区域等的信息。
在易受攻击模式(模式10)中,存储设备可能无法用于I/O操作。但是,它可能会继续从主机接收命令并返回错误。
在正常模式(模式11)中,存储设备可以正常运行。
命令
在一些实施例中,根据本公开的示例实施例的存储设备可以实现一个或多个命令,这些命令可以例如由主机用来查询存储设备和/或管理存储设备的一个或多个特征。图2C示出了根据本公开的示例实施例的可由存储设备实现的命令和子命令的一些示例实施例的表格。图2C中示出的表格的子命令列可指示可用于识别例如在命令及其响应可通过其传递的API中的子命令的名称。
可以包括如图2C所示的表中所示的子命令的获取特征命令可以从主机传递到存储设备,存储设备可以向其返回响应。在一些实施例中,存储设备可以基于子命令如下响应获取特征命令。
弹性类型子命令(FR_INFO_RESERVE_TYPE)可能会在出现故障时返回一种故障弹性类型。例如,存储设备可以基于其遇到的故障状况来指示该设备已经选择在图2B所示的故障弹性模式中的哪一种模式下操作。
保留期子命令(FR_INFO_RETENTION_PERIOD)可以返回数据的平均保留期,而无需对存储介质重新编程。在一些实施例中,这可以是从故障时起数据在存储介质中的保留时间的上限。该子命令可以用于例如临时只读模式(模式8)和/或临时部分只读模式(模式9)。
最早到期子命令(FR_INFO_EARLIEST_EXPIRY)可返回数据完整性的最大剩余时间。在一些实施例中,这可以是从故障时起数据在存储介质中的保留时间的下限。时间单位可以例如基于巡逻周期来确定。该子命令可以用于例如临时只读模式(模式8)和/或临时部分只读模式(模式9)。
IOPS子命令(FR_INFO_IOPS)可返回存储设备基于故障状况可能能够处理的最大可用IOPS的百分比。该子命令可用于例如降低性能模式(模式5)。
带宽子命令(FR_INFO_BW)可以返回存储设备基于故障条件可以处理的最大可用带宽的百分比。该子命令可用于例如降低性能模式(模式5)。
空间子命令(FR_INFO_SPACE)可以根据故障条件返回存储设备中可用的存储空间量。例如,该子命令可用于容量降低只读模式(模式3)和/或容量降低模式(模式4)。
可以包括如图2C所示的表中所示的子命令的名称空间容量管理命令可以从主机传递到存储设备,存储设备可以通过执行该子命令指示的动作来响应。在一些实施例中,存储设备可以基于该子命令如下响应名称空间容量管理(NCM)命令。在一些实施例中,名称空间可以被实现为可以被格式化为逻辑块的一定量的非易失性存储器(NVM)。
调整尺寸命令(FR_NAMESPACE_RESIZE)可以使存储设备基于该命令可能包括的一个或多个参数来调整名称空间的尺寸。在一些实施例中,该子命令可以应用于可以支持两个或更多名称空间的存储设备。在一些实施例中,名称空间可以支持NVMe调整尺寸。
零尺寸名称空间命令(FR_NAMESPACE_ZERO_SIZE)可能会导致存储设备将救援空间的尺寸减小到零。
应用编程接口
在一些实施例中,如上所述,根据本公开的示例实施例的存储设备可以实现使主机能够查询存储设备和/或管理存储设备的一个或多个特征的API。图2D示出了根据本公开的示例实施例的存储设备可以通过API实现的命令表。一些实施例可以包括存储设备可以用来响应的故障弹性特征类别内的列举常数的层级。如图2D所示,层级可以包括第一级,包括完全弹性状态、部分弹性状态和易受攻击状态。还可以定义子状态和子子状态。例如,如图2D所示,部分弹性状态可以包括指示能力损失的第一子状态,并且第一子状态可以包括指示在可持续只读模式下操作的第一子子状态,以及指示在不可持续只读模式下操作的第二子子状态。在一些实施例中,可以例如使用NVMe命令来实现API。
特征命令(FAULT_RESERVE_FEATURE)可以返回存储设备可能支持的故障弹性类和每个类中的特征。
状态命令(FAULT_RESILIENT_STATUS)在执行故障弹性恢复后可返回存储设备的状态。
易失性块命令(FAULT_RESILIENT_VOLATILE_BLOCKS(H))可以返回一个LBA范围列表,该列表在接下来的H个小时内到达保留期。在一些实施例中,这可以用于确定需要为不可持续只读重新定位的块。
无效数据块命令(FAULT_RESILIENT_INVALID_DATA_BLOCKS)可返回切换到故障弹性模式后可能变得无效的LBA范围列表。
附加实施例
图3A示出了根据本公开的示例实施例的用于在故障弹性模式下操作的方法的实施例的流程图。图3A所示的方法可以例如由图1所示的系统和/或组件来实现。该方法可以在操作300开始。在操作305,主机105可以从存储设备110发送或接收数据。在操作310,主机105可以确定存储设备110中是否发生了错误。在操作315,存储设备110可以执行内部诊断并确定其故障弹性状态(例如,完全弹性、部分弹性或易受攻击)。在操作320,存储设备110可以基于诊断来修改其性能、容量和/或能力(例如,转换到只读模式)。在操作325,存储设备110可以基于应用编程接口(API)根据来自主机105的请求发布状态。在操作330,主机105可以基于状态以给定的带宽将给定类型的数据路由到存储设备110或不同的存储设备110。该方法可以在操作335结束。
图3B示出了根据本公开的示例实施例的操作存储设备的方法的实施例的流程图。该方法可以在操作350开始。在操作355,该方法可以确定存储设备的故障状况。在操作360,该方法可以基于存储设备的故障状况选择故障弹性模式。在操作365,该方法可以在所选择的故障弹性模式下操作存储设备。该方法可以在操作370结束。
关于图3A和3B所示的实施例描述的操作和/或组件,以及这里描述的所有其他实施例,是示例操作和/或组件。在一些实施例中,可以省略一些操作和/或组件,和/或可以包括其他操作和/或组件。此外,在一些实施例中,操作和/或组件的时间和/或空间顺序可以变化。虽然一些组件可以被示为单独的组件,但是在一些实施例中,单独示出的一些组件可以被集成到单个组件中,和/或示为单个组件的一些组件可以用多个组件来实现。
也可以构建本文公开的任何数量的实施例和/或实施例的变型。诸如现场可编程门阵列(FPGA)或嵌入式处理器的存储控制器可以执行内部块检查,并向主机105发送关于存储设备110的状态的异步更新。事件可能发生并被发生到主机105(例如,温度或设备内部的其他参数)。例如,如果没有用于提供通知的设备驱动器特征,主机105可以按预定的时间表轮询存储设备110。存储控制器可以监控存储设备110的历史性能,并使用机器学习来提供预测分析(例如,存储设备处于给定故障弹性状态的可能性)。例如,可以实现和/或扩展命令(例如,NVMe命令),以报告存储设备110的状态。
在一些实施例中,主机可以:(i)基于存储设备110的状态,发送不同的数据类型(例如,诸如图像、视频、文本或高优先级或低优先级数据的文件类型)(例如,高优先级数据或实时数据可以不被写入被认为处于部分易受攻击模式的设备);(ii)如果存储设备110处于部分易受攻击状态和较低性能状态,则降低传输速率;(iii)如果存储设备110处于部分易受攻击且容量较低的状态,则发送减少的数据总量;(iv)如果存储设备110处于部分易受攻击的不可持续只读模式,则以最大可能的速率读取数据,和/或将数据存储在别处,以避免超过保留期(在这种情况下,主机可以基于要复制的数据量和保留期来计算所需的数据速率);(v)忽略从易受攻击的存储设备110“读取”的数据,因为它可能是错误的,并且在主机105接收到该数据时删除该数据;(vi)基于控制主机和存储设备110之间的这种事件的定时的消息,将读/写输入和输出临时重新路由到正在被循环供电和/或格式化的完全弹性存储设备110中的高速缓存。容量降低的部分易受攻击的存储设备上的存储控制器可以过滤传入的数据写入,并且仅将该数据的一部分写入存储设备110。在某些情况下,过滤可以包括压缩。这种存储控制器可以从主机105接收各种类型的数据(例如,诸如图像、视频、文本或高优先级或低优先级数据的文件类型),并基于存储设备110的状态进行过滤。例如,存储控制器可以确定高优先级数据不能被写入处于部分易受攻击模式的存储设备110。存储控制器可以向主机105发送拒绝消息,并给出拒绝的原因。可选地,存储控制器可以过滤出特定类型的数据(例如,图像数据)以写入部分弹性的低容量状态存储设备110。例如,如果存储设备110失去性能(例如,以降低的写入速率操作),则延迟敏感的读取和写入可能被拒绝。
具有故障弹性存储设备的故障弹性系统
在一些实施例中,包括存储设备110的阵列和卷管理器115的RAID-0系统可以被构造成适应RAID-0系统的任何故障弹性存储设备110到只读模式的转换。在正常操作中,卷管理器115可以负责跨存储设备110的阵列的子带化数据,例如,将每个条带的一个子带写入存储设备110的阵列的相应存储设备110。在这样的系统中,当存储设备110的阵列中的任何一个转换到只读模式(表示为110A)时,RAID-0系统可以转换到第二操作模式(也可以称为紧急模式),并且存储设备110的阵列的卷管理器115可以(i)在每个剩余的未受影响的存储设备110B(例如,保持读写状态的那些)上分配救援空间,用于元数据和从故障存储设备110A中拯救的用户数据,和/或(ii)创建和/或维护映射表(也可以称为紧急映射表)。救援空间可以在系统运行之前静态地预分配,在运行期间动态地预分配,或者以它们的任意组合来预分配。
每个存储设备110A上的救援空间(可以表示为R)可以能够存储n个子带,其中n=R/(子带尺寸),R=C/M,C可以是存储设备110的阵列的每个存储设备的容量,M可以是存储设备的总数。在一些实施例中,卷管理器115可以实现为独立组件,或者可以部分或完全集成到主机、RAID 0系统的RAID控制器(例如,其可以容纳在与主机分离的外壳中)或任何其他配置中。在一些实施例中,卷管理器115可以例如用FPGA来实现。RAID-0系统可以是自包含的,并且可以虚拟化存储设备110的阵列,使得从主机的角度来看,RAID-0系统可以表现为单个存储设备。在一些实施例中,卷管理器可以被实现为被(例如,通过合适的软件或固件)配置来执行这里描述为由卷管理器执行的操作的处理电路(下面将进一步详细讨论)。
当RAID-0系统在紧急模式下操作,并且从主机105接收到请求将数据写入存储设备110的阵列的条带的写命令时,卷管理器115可以检查紧急映射表以确定该条带是否被注册,例如是否已经为该条带创建了条目。如果还没有创建条目(例如,条带没有被注册,这也可以被称为开放映射),则卷管理器115可以在紧急映射表中创建条目,以指示通常会已经被写入到故障存储设备110A(已经转换到只读模式的存储设备)的子带将被写入到哪里。如果紧急映射表已经包含用于条带的条目,则该条目可以用于确定将通常已经被写入故障存储设备110A的子带写入哪里。在任一情况下,卷管理器115然后可以将每个子带写入存储设备110的阵列,如图4A所示,将通常会已经被写入故障(例如,只读)存储设备110A的子带405写入另一存储设备110B中的救援空间。
当从主机105接收到请求从存储设备110的阵列读取条带的数据的读取命令时,卷管理器115可以检查紧急映射表以确定是否已经为该条带创建了条目。如果还没创建条目,则如图4B所示,卷管理器115可以读取条带,就好像在正常操作中它从包括故障存储设备110A的每个存储设备110读取子带一样。如果紧急映射表包含用于条带的条目,则该条目可用于确定从哪里读取通常会已经从故障存储设备110A读取的子带。
通常会已经被写入故障存储设备110A的子带的重新映射可以例如如下完成。存储设备110的阵列的每个存储设备110可以具有驱动器标识号(或“驱动器ID”),其可以是0和M-1之间的数字,其中M可以是存储设备110的阵列中存储设备110的数量。卷管理器115可以重新分配驱动器标识号,例如,向存储设备110的阵列的每个未受影响的存储设备110B分配替代的驱动器标识号,用于对已注册的条带执行读或写操作(对未注册的条带的读操作可以继续使用原始的驱动器标识号)。以下公式(公式A)可用于生成替代驱动器识别号:
If drive ID<faulty drive ID,
new drive ID=((drive ID–1)+M)mod(M-1)
Otherwise,
new drive ID=((drive ID–1)+(M–1))mod(M-1). (公式A)
公式A的效果可以是(i)为每个具有小于故障存储设备的原始驱动器标识号的标识号的存储设备分配相应的原始驱动器标识号,和/或(ii)为每个具有大于故障存储设备的原始驱动器标识号的标识号的存储设备分配相应的原始驱动器标识号减1。
使用替换驱动器号,可以使用公式“目标驱动器ID=sid%(M-1)”来标识(例如基于每个条带)目标驱动器(通常会已经被写入故障存储设备110A的子带可以被写入该目标驱动器),其中目标驱动器ID可以是目标驱动器的替换驱动器标识号,sid可以是通常可能已经被写入故障存储设备110的子带的条带标识符,并且“%”可以是模(mod)运算符。
图4C是根据本公开的示例实施例的RAID-0系统的实施例的示意图。图4C所示的实施例可以包括四个故障弹性存储设备110(即,M=4),其中被标识为驱动器1的存储设备已经转变为只读模式。使用上述公式A,驱动器0可以保持映射到新的驱动器ID 0(例如,3mod3),驱动器2可以映射到新的驱动器ID 1(例如,4mod 3),并且驱动器3可以映射到新的驱动器ID 2(例如,5mod 3)。
目标驱动器ID(例如,用于读或写操作)可以由等式“目标驱动器ID=条带ID(%M-1)”来隐式确定。例如,如果M=4并且写入了条带1,则条带ID=1,因此目标驱动器ID=1%3=1。也就是说,目标驱动器可以是具有替代(新)驱动器ID号1的存储设备110B(即,先前的驱动器2)。在存储设备内,救援空间可以被分成尺寸可以与子带尺寸相同的子带(其可以被称为救援子带或R-子带)。在一些实施例中,紧急映射表可以包含具有格式(条带ID,R子带ID)的每个子带的条目,其中第一元素可以是条带ID,第二元素可以是目标驱动器上的R子带ID。例如,紧急映射表中的条目(1,0)可以指示子带(1,1)被映射到R-子带(1,0),如图4C所示。
图5A示出了根据本公开的示例实施例的用于操作RAID-0系统的方法的流程图。在505,RAID-0系统中的存储设备110出现故障,并转换到只读模式;在510,受影响的存储设备110执行内部诊断,并确定其故障弹性状态是部分弹性和只读的;在515,卷管理器115确定受影响的存储设备110处于只读模式,并重新分配(“活动的”)未受影响的存储设备的ID;在520,卷管理器115接收写操作,将条目添加到紧急映射表以指示受影响设备的子带被重定向到目标(未受影响的)存储设备110,并且基于未受影响的存储设备的新驱动器ID将整个子带写入目标(未受影响的)存储设备的救援空间;并且,在525,卷管理器115从主机105接收读取命令,并且从RAID系统的活动的未受影响的存储设备110读取条带的所有子带,同时从目标(未受影响的)存储设备的救援空间读取受影响的存储设备的子带。
图5B示出了示出根据本公开的示例实施例的用于操作RAID-0存储系统的方法的细节的流程图。该方法包括,在530,确定第一存储设备处于只读状态,并且第二存储设备处于读写状态;在535,通过将第一条带的一部分写入第二存储设备,并在第一条带的映射表中创建条目,来执行第一条带对存储系统的写操作;在540,通过从第一存储设备和第二存储设备读取第二条带的一部分,从存储系统执行第二条带的第一读取操作;以及在545,通过确定映射表包括第一条带的条目,并从第二存储设备读取第一条带的一部分,从存储系统执行第一条带的第二读取操作。
对N设备故障具有弹性的系统
在一些实施例中,可以构建RAID-0系统来适应多个(例如,N个)故障弹性存储设备110的故障。这种系统的示例性实施例在某些方面可以以类似于上面参照图4A-4C描述的实施例的方式来构造和操作,但是每个存储设备的救援空间R的尺寸可以通过考虑系统可以容纳的故障存储设备110A的数量N来确定。例如,在一些实施例中,救援空间百分比比率(例如,b百分比,也可以称为预留比率)可以用于确定每个存储设备的救援空间R的尺寸,其中R=(b/100)*C。在系统具有M个存储设备并且可以容纳可以转换到只读模式的N个故障存储设备的一些实施例中,设置b,使得N/M≤b/100可以确保来自N个故障存储设备110A的所有数据可以被写入剩余的未受影响的存储设备(其可以被称为活动存储设备)中的救援空间。例如,在可能有五个存储设备并且可能容纳两个可能转换为只读模式的故障存储设备的系统中,b可以设置为2/5=40%。因此,每个存储设备的救援空间R的尺寸可设置为R=40/100*C。每个未受影响的存储设备110A上的救援空间R可以能够存储n个子带,其中n=R/(子带尺寸),但是在该实施例中,R可以被设置为R=(b/100)*C。救援空间可以在系统操作之前静态地预分配,在操作期间动态地预分配,或者以它们的任意组合来预分配。
在可以适应N个故障弹性存储设备故障的系统中,M′可以表示未受影响的(例如,活动的)存储设备的数量,使得M′<=M。在一些实施例中,未受影响的存储设备110B的驱动器ID可以根据以下公式(公式B)被重新分配:
If current drive ID>current faulty drive ID
new drive ID=((current drive ID–1)+(M’–1))mod(M’–1)
Otherwise
new drive ID=((current drive ID–1)+M’)mod(M’–1). (公式B)
使用备用驱动器号,可以使用公式“目标驱动器ID=sid%(M′-1)”隐式地识别(例如,基于每个条带)用于写操作的目标存储设备,其中目标驱动器ID可以是目标存储设备的替换(新)驱动器标识号,sid可以是通常可能已经被写入故障存储设备110A并且现在可以被写入具有目标驱动器ID的目标存储设备的子带的条带标识符。
图6示出了根据本公开的示例实施例的RAID-0系统的实施例的示意图。图6所示的实施例可以包括四个故障弹性存储设备110(即,M=4),其中被标识为驱动器1和驱动器2的存储设备已经转变为只读模式。因此,M′=2。使用上述公式B,驱动器0可以保持映射到新的驱动器ID 0(例如,1mod 1),并且驱动器3可以映射到新的驱动器ID 1(例如,3mod 1)。
此外,使用公式:目标驱动器ID=sid%(M′-1),如果写入条带1,条带ID=1,因此目标驱动器ID=1%2=1。也就是说,目标驱动器可以是具有替代(新)驱动器标识号1的存储设备110B(即,先前的驱动器2)。
在一些实施例中,当第一故障存储设备110A转换到只读模式时,RAID-0系统可以转换到紧急模式,其中卷管理器115可以(i)在每个剩余的未受影响的存储设备110B上为来自故障存储设备110A的元数据和获救的用户数据分配救援空间(如果还没有分配足够的救援空间,或者如果已经分配了不足够的空间),和/或(ii)为第一故障存储设备110A创建和/或维护第一映射表。然后,RAID 0系统可以以类似于上述单个设备故障实施例的方式操作。
在一些实施例中,如果第二故障存储设备110A转换到只读模式,则RAID-0系统可以再次在剩余的未受影响的存储设备110B中的每一个上为元数据和来自故障存储设备110A的获救用户数据分配救援空间(如果还没有分配足够的救援空间,或者如果已经分配了不足够的空间)。在一些实施例中,RAID-0系统然后可以为第二故障存储设备110A创建和/或维护第二映射表。每个映射表可以被指定为第L映射表,其中L=1…M′,并且第L映射表对应于第L故障存储设备。在其他实施例中,RAID-0系统可以创建和/或修改单个映射表,以将所有故障存储设备110A的数据条带和/或子带映射到未受影响的存储设备110B。在一些实施例中,例如,在用于RAID配置的磁盘数据格式(DDF)结构之前,一个或多个映射表可以存储在保留的救援空间中。
然后,例如,基于公式B,RAID-0系统可以重新分配未受影响的存储设备110B的驱动器ID,并继续以只读模式操作两个故障存储设备110A。
当从主机接收到读取命令时,卷管理器115可以检查一个或多个紧急映射表,以确定是否已经为要读取的条带创建了条目。如果没有创建条目,则卷管理器115可以读取条带,就像在正常操作中,它会从包括两个故障存储设备110A的每个存储设备110读取子带一样。如果一个或多个紧急映射表包含条带的条目,则该条目可用于确定在哪里读取通常会已经从一个或两个故障存储设备110A读取的子带。
当从主机接收到写命令时,卷管理器115可以检查一个或多个紧急映射表,以确定是否已经为条带创建了条目。如果还没有创建条目(例如,条带没有被注册),则卷管理器115可以在一个或多个紧急映射表中创建条目,以指示通常会已经被写入到故障存储设备110A(已经转换到只读模式的存储设备)的子带将被写入到哪里。如果一个或多个紧急映射表已经包含用于条带的条目,则该条目可以用于确定将通常会已经写入故障存储设备110A的子带写入哪里。在任一情况下,卷管理器115然后可以将子带写入存储设备110的阵列,将通常会被写入故障(例如,只读)存储设备110A的子带写入其他存储设备110B中的救援空间。
利用数据块写入进行救援空间管理
图7示出了根据本公开的示例实施例的可以利用数据块写入来实现救援空间管理的RAID-0系统的实施例的示意图。图7所示的实施例可以包括四个故障弹性存储设备110(即,M=4),其中被标识为驱动器1的存储设备已经转变为只读模式。图7中示出的实施例在某些方面可以以类似于以上关于图4A-4C描述的实施例的方式来构造和操作,但是不是将整个子带从有故障的存储设备110A重定向到单个未受影响的存储设备110B的救援空间,而是可以将子带分成救援块(也可以称为R块),救援块可以分布在一些或所有剩余的未受影响的存储设备110B的救援空间中。
在每个存储设备110内,一些或所有救援空间可以被分成救援块(其可以被称为R块)。R块的尺寸可以被设置为例如与存储设备通常使用的数据块尺寸相同的尺寸。
在一些实施例中,卷管理器115可以维护紧急映射表,其中每个条目可以简单地是条带ID,以指示该条带已经被映射到未受影响的存储设备110B中的救援空间。例如,在图7所示的实施例中,其中被指定为驱动器ID 1的存储设备110A已经进入只读模式,(条带ID)=(1)的紧急映射表中的条目可以指示子带(1,1)被分成3个组块(chunk),并被映射到所有未受影响的(例如,活动的)存储设备110B。
在一些实施例中,来自故障存储设备的可存储在每个存储设备的救援空间中的子带的部分(可被称为组块)可等于子带尺寸/块尺寸/(M-1)。为了适应子带尺寸和块尺寸可能不均匀地划分为未受影响的存储设备110B的数量,存储在满足公式“目标驱动器ID<(子带尺寸/块尺寸)mod(M 1)”的目标存储设备110B的救援空间中的组块可以包括额外的块。因此,对于图7所示的例子,其中子带(1,1)可以包括10个块,存储在新驱动器ID 1中的子带(1,1)的组块可以包括3个块,存储在新驱动器ID 2中的组块可以包括3个块,但是存储在新驱动器ID 0中的组块可以包括4个块,因为新驱动器ID 0小于10mod3(10mod 3(等于1)。
在图7所示的实施例中,目标驱动器ID(例如,用于读或写操作)可以例如通过等式“目标驱动器ID=条带ID%(M-1)”来隐式确定,其中M可以指示存储设备110的数量。例如,如果M=4并且写入了条带1,条带ID=1,因此目标驱动器ID=1%3=1。
在图7所示的实施例中,卷管理器115可以使用例如公式C为每个未受影响的存储设备110B重新分配驱动器标识号,如下所示:
If drive ID<faulty drive ID,
new drive ID=((drive ID–1)+M)mod(M-1)
Otherwise,
new drive ID=((drive ID–1)+(M–1))mod(M-1). (公式C)
在一些实施例中,每个存储设备110中的救援空间R的尺寸可以被设置为例如R=C/M,其中C可以是存储设备110的阵列的每个存储设备的容量,并且M可以是存储设备的总数。每个存储设备110中的救援空间R能够存储n个块,其中n=R/(块尺寸)。
当从主机接收到读取命令时,卷管理器115可以检查紧急映射表,以确定是否已经为要读取的子带的条带创建了条目。如果没有创建条目,则卷管理器115可以像在普通操作中那样读取条带,从包括故障存储设备110A在内的每个存储设备110读取子带。如果紧急映射表包含条带的条目,则可以从未受影响的存储设备110B(在该示例中,具有新驱动器ID0、1和2的存储设备)的救援空间中读取对应于故障存储设备110A(在该示例中,驱动器1)的子带的组块,并将其重新组装成子带(1,1)。
当从主机接收到写入命令时,卷管理器115可以检查紧急映射表,以确定是否已经为要写入的子带的条带创建了条目。如果还没有创建条目(例如,条带没有被注册),则卷管理器115可以在紧急映射表中创建条目,以指示通常会已经被写入到故障存储设备110A(已经转换到只读模式的存储设备)的子带的组块将被写入到未受影响的存储设备110B。如果紧急映射表已经包含用于条带的条目,则该条目可以用于确定通常会已经被写入故障存储设备110A(已经转变为只读模式的存储设备)的子带的组块将被写入未受影响的存储设备110B。在任一情况下,卷管理器115然后可以将最初打算用于驱动器1的子带的组块写入未受影响的存储设备110B的救援空间,如图7所示。
具有服务质量管理的故障弹性系统
在一些实施例中,根据本公开的示例性实施例,诸如FR-RAID-0系统的故障弹性(FR)存储系统可以实现一个或多个服务质量(QoS)管理特征。例如,用户和/或卷管理器可以调整RAID子带化配置中子带的尺寸,和/或用于将数据写入RAID配置中的一个或多个存储设备上的救援空间的写入技术,以提供特定的QoS级别。
图8示出了根据本公开的示例实施例的用于在存储系统中实现QoS管理的系统的示例实施例。图8所示的实施例可以包括QoS管理器802,其被配置为例如通过一个或多个控制和/或配置输入806来实现存储阵列804的一个或多个QoS特征。存储阵列804可以被布置为例如RAID-0阵列,可以包括卷管理器815和任意数量的存储设备810。在一些实施例中,存储阵列804可以至少部分地用这里公开的任何故障弹性存储设备、系统和/或方法来实现。
QoS管理器802可以包括QoS逻辑808,QoS逻辑808可以接收、利用、控制、配置、指导、通知等任何数量的与QoS相关的参数,例如存储阵列804中的存储设备811A的数量、子带811B中的数据块的数量、救援空间中使用的一种或多种写入方法811C、存储阵列804可以容纳的故障存储设备811D的数量、存储阵列804中使用的存储设备的容量811E,
例如,在一些实施例中,诸如性能之类的QoS度量可以以下列任何方式受到参数811A-811E的影响。增加存储阵列804中存储设备811A的数量可以提高性能,例如在存储容量、延迟、吞吐量等方面。子带中数据块811B的数量可以基于预期存储事务的类型来调整。例如,使用较大的数据块可以为较大的、不太频繁的事务提供更大的吞吐量,而较小的数据块可以为较小的、更频繁的事务提供每秒更大数量的输入和/或输出操作(IOPS)。写入方法811C也可以被调整,例如,因为将数据块写入多个存储设备上的救援空间比将子带写入单个存储设备的救援空间花费更少的时间。增加存储阵列804可容纳的故障存储设备811D的数量可能会降低性能,例如,因为容纳更多故障设备可能涉及更多地分配更大百分比的存储设备容量。
QoS管理器802可以自动、手动或其任意组合来操作。例如,响应于监控来自存储阵列804的一个或多个参数812,QoS管理器802可以自动操作。例如,响应于通过用户接口816接收的一个或多个参数814,QoS管理器802可以手动操作。另外,QoS管理器802可以通过用户接口816提供一个或多个输出818,其可以指示用户采取一个或多个特定动作,例如,添加和/或移除一个或多个存储设备810。
在一些实施例中,给定用户的系统要求,QoS管理器802可以基于存储性能信息来确定一个或多个参数。例如,用户可以指定存储阵列804可以作为RF-RAID-0配置来操作,该配置可以适应一个存储设备故障,对于32K块具有500K IOPS,并且总存储容量为8TB。基于这些输入,QoS管理器802可以确定以下参数,以得到可用于提供指定性能的存储设备数量:
存储设备容量:1TB;
每个存储设备4K写IOPS:400K;
每个存储设备32K写IOPS:200K;和
RAID子带尺寸:32K。
求解容量:(1-1/M)*2*(M-1)>=8,M^2 6M+1>0,(M-3)^2>8,因此M=6。
求解性能:200K*(M 1)/2>=500K,因此M=6。
因此,可以使用六个存储设备来提供指定的性能。
在一些实施例中,QoS管理器802和/或QoS逻辑808可以用硬件、软件或其任意组合来实现,包括组合逻辑、时序逻辑、一个或多个定时器、计数器、寄存器、状态机、CPLD、FPGA、ASIC、CISC处理器和/或RISC处理器,和/或执行存储在易失性存储器(例如DRAM和/或SRAM)、非易失性存储器(例如闪存和/或类似物)以及GPU、NPU等中的指令的类似物。QoS管理器802和/或QoS逻辑808可以被实现为一个或多个单独的组件,与诸如卷管理器815、主机和/或其任意组合的一个或多个其他组件集成。
图9示出了根据本公开的示例实施例的操作存储阵列的方法的实施例。该方法可以在操作902开始。在操作904,该方法可以确定存储阵列的第一故障弹性存储设备的第一故障弹性操作模式。在操作906,该方法可以确定存储阵列的第二故障弹性存储设备的第二故障弹性操作模式。在操作908,该方法可以分配存储阵列的一个或多个附加故障弹性存储设备的一个或多个救援空间。在操作910,该方法可以将用户数据从第一故障弹性存储设备映射到一个或多个救援空间。在操作912,该方法可以将来自第二故障弹性存储设备的用户数据映射到一个或多个救援空间。该方法可以在操作914结束。
图10示出了根据本公开的示例实施例的操作存储阵列的另一方法的实施例。该方法可以在操作1002开始。在操作1004,该方法可以分配存储阵列的第一故障弹性存储设备的第一救援空间。在操作1006,该方法可以分配存储阵列的第二故障弹性存储设备的第二救援空间。在操作1008,该方法可以确定存储阵列的第三故障弹性存储设备的故障弹性操作模式。在操作1010,该方法可以基于确定故障弹性操作模式,将用户数据从第三故障弹性存储设备映射到第一救援空间和第二救援空间。该方法可以在操作1012结束。
图11示出了根据本公开的示例实施例的操作存储阵列的另一方法的实施例。该方法可以在操作1102开始。在操作1104,该方法可以确定存储阵列的第一故障弹性存储设备的第一参数。在操作1106,该方法可以确定存储阵列的第二故障弹性存储设备的第二参数。在操作1108,该方法可以基于第一参数和第二参数来确定存储阵列的服务质量(QoS)。该方法可以在操作1110结束。
关于图9-11所示的实施例描述的操作和/或组件,以及这里描述的所有其他实施例,是示例操作和/或组件。在一些实施例中,可以省略一些操作和/或组件,和/或可以包括其他操作和/或组件。此外,在一些实施例中,操作和/或组件的时间和/或空间顺序可以变化。
已经在各种实施细节的上下文中描述了上述实施例,但是本公开的原理不限于这些或任何其他具体细节。例如,已经在存储设备和/或救援空间的容量和/或尺寸对于每个存储设备可以相同的系统的上下文中描述了一些存储阵列,但是可以使用不同容量和/或尺寸的存储设备和/或救援空间。作为另一个例子,已经在诸如RAID-0的RAID系统的上下文中描述了一些实施例,但是这些原理也可以应用于任何其他类型的存储阵列。
作为另一个例子,一些功能已经被描述为由某些组件实现,但是在其他实施例中,该功能可以分布在不同位置并且具有各种用户界面的不同系统和组件之间。某些实施例已经被描述为具有特定的过程、操作等。但是这些术语也包含其中可以用多个过程、操作等来实现特定过程、步骤等的实施例或多个过程、操作等可以集成到单个过程、步骤等中的实施例。对组件或元素的引用可以仅指组件或元素的一部分。例如,对集成电路的引用可以指集成电路的全部或仅一部分,对块的引用可以指整个块或一个或多个子块。在本公开和权利要求中使用诸如“第一”和“第二”的术语可能仅仅是为了区分它们所修饰的事物,并且可能不指示任何空间或时间顺序,除非从上下文中明显看出。在一些实施例中,“基于”可以指“至少部分基于”。在一些实施例中,“禁用”可以指“至少部分禁用”。“提及第一元素并不意味着存在第二元素。为了方便起见,可以提供各种组织辅助,例如节标题等,但是根据这些辅助和本公开的原理安排的主题不受这些组织辅助的定义或限制。
根据本专利公开的发明原理,上述各种细节和实施例可被组合以产生附加的实施例。由于本专利公开的发明原理可以在不脱离本发明概念的情况下在布置和细节上进行修改,因此这种改变和修改被认为落入以下权利要求的范围内。

Claims (20)

1.一种操作存储设备的方法,该方法包括:
确定存储设备的故障状况;
基于存储设备的故障状况选择故障弹性模式;和
以所选择的故障弹性模式操作存储设备。
2.根据权利要求1所述的方法,其中所选择的故障弹性模式包括供电循环模式。
3.根据权利要求1所述的方法,其中所选择的故障弹性模式包括重新格式化模式。
4.根据权利要求1所述的方法,其中所选择的故障弹性模式包括降低容量只读模式。
5.根据权利要求1所述的方法,其中所选择的故障弹性模式包括降低容量模式。
6.根据权利要求1所述的方法,其中所选择的故障弹性模式包括降低性能模式。
7.根据权利要求1所述的方法,其中所选择的故障弹性模式包括只读模式。
8.根据权利要求1所述的方法,其中所选择的故障弹性模式包括部分只读模式。
9.根据权利要求1所述的方法,其中所选择的故障弹性模式包括临时只读模式。
10.根据权利要求1所述的方法,其中所选择的故障弹性模式包括临时部分只读模式。
11.根据权利要求1所述的方法,其中所选择的故障弹性模式包括易受攻击模式。
12.根据权利要求1所述的方法,其中所选择的故障弹性模式包括正常模式。
13.根据权利要求1所述的方法,其中所述存储设备被配置成执行从主机接收的命令。
14.根据权利要求13所述的方法,其中,所述命令包括名称空间容量管理命令。
15.根据权利要求14所述的方法,其中所述名称空间容量管理命令包括调整尺寸子命令。
16.根据权利要求14所述的方法,其中所述名称空间容量管理命令包括零尺寸名称空间子命令。
17.一种存储设备,包括:
存储介质;和
存储控制器,其中所述存储控制器被配置成:
确定存储设备的故障状况;
基于存储设备的故障状况选择故障弹性模式;和
在所选择的故障弹性模式下操作存储设备。
18.根据权利要求17所述的存储设备,其中所选择的弹性模式包括供电循环模式、重新格式化模式、降低容量只读模式、降低容量模式、降低性能模式、只读模式、部分只读模式、临时只读模式、临时部分只读模式或易受攻击模式中的一种。
19.根据权利要求17所述的存储设备,其中所述存储设备被配置成执行从主机接收的名称空间容量管理命令。
20.一种系统,包括:
主机;和
耦合到所述主机的至少一个存储设备,其中所述存储设备被配置成:
确定存储设备的故障状况;
基于存储设备的故障状况选择故障弹性模式;
以所选择的故障弹性模式运行;和
向主机报告所选择的故障弹性模式。
CN202110510880.7A 2020-05-11 2021-05-11 用于故障弹性存储的系统、方法和设备 Pending CN113641303A (zh)

Applications Claiming Priority (12)

Application Number Priority Date Filing Date Title
US202063023243P 2020-05-11 2020-05-11
US63/023,243 2020-05-11
US202063051158P 2020-07-13 2020-07-13
US63/051,158 2020-07-13
US202063052854P 2020-07-16 2020-07-16
US63/052,854 2020-07-16
US202063057744P 2020-07-28 2020-07-28
US63/057,744 2020-07-28
US202063128001P 2020-12-18 2020-12-18
US63/128,001 2020-12-18
US17/232,144 2021-04-15
US17/232,144 US20210349782A1 (en) 2020-05-11 2021-04-15 Systems, methods, and devices for fault resilient storage

Publications (1)

Publication Number Publication Date
CN113641303A true CN113641303A (zh) 2021-11-12

Family

ID=78412659

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110510880.7A Pending CN113641303A (zh) 2020-05-11 2021-05-11 用于故障弹性存储的系统、方法和设备

Country Status (4)

Country Link
US (3) US20210349782A1 (zh)
KR (1) KR20210138502A (zh)
CN (1) CN113641303A (zh)
TW (1) TW202147092A (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11803446B2 (en) 2020-07-13 2023-10-31 Samsung Electronics Co., Ltd. Fault resilient storage device
US20210349780A1 (en) * 2020-05-11 2021-11-11 Samsung Electronics Co., Ltd. Systems, methods, and devices for data recovery with spare storage device and fault resilient storage device
US11782791B2 (en) * 2021-08-25 2023-10-10 Western Digital Technologies, Inc. System and method for memory hang recovery using a distributed power management system

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6886108B2 (en) * 2001-04-30 2005-04-26 Sun Microsystems, Inc. Threshold adjustment following forced failure of storage device
US7395452B2 (en) * 2004-09-24 2008-07-01 Microsoft Corporation Method and system for improved reliability in storage devices
JP2007293448A (ja) * 2006-04-21 2007-11-08 Hitachi Ltd ストレージシステム及びその電源制御方法
JP4884885B2 (ja) * 2006-08-25 2012-02-29 株式会社日立製作所 記憶制御装置及び記憶制御装置の障害回復方法
US8099623B1 (en) * 2008-10-08 2012-01-17 Netapp, Inc. Efficient distributed hot sparing scheme in a parity declustered RAID organization
US8799705B2 (en) * 2012-01-04 2014-08-05 Emc Corporation Data protection in a random access disk array
US9542272B2 (en) * 2014-03-24 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Write redirection in redundant array of independent disks systems
US9477549B2 (en) * 2014-09-15 2016-10-25 Sandisk Technologies Llc Methods, systems, and computer readable media for address and data integrity checking in flash memory operations
US9519545B2 (en) * 2014-11-11 2016-12-13 Facebook, Inc. Storage drive remediation in a raid system
US10402092B2 (en) * 2016-06-01 2019-09-03 Western Digital Technologies, Inc. Resizing namespaces for storage devices
US10210060B2 (en) * 2016-08-22 2019-02-19 Hewlett Packard Enterprise Development Lp Online NVM format upgrade in a data storage system operating with active and standby memory controllers
US10936453B2 (en) * 2017-09-19 2021-03-02 Seagate Technology Llc Data storage systems using elastic spares
US11869586B2 (en) * 2018-07-11 2024-01-09 Pure Storage, Inc. Increased data protection by recovering data from partially-failed solid-state devices
US10891068B2 (en) * 2019-06-03 2021-01-12 International Business Machines Corporation Temporary relocation of data within local storage of a dispersed storage network

Also Published As

Publication number Publication date
KR20210138502A (ko) 2021-11-19
US20220291996A1 (en) 2022-09-15
TW202147092A (zh) 2021-12-16
US20220269566A1 (en) 2022-08-25
US20210349782A1 (en) 2021-11-11

Similar Documents

Publication Publication Date Title
US20220291996A1 (en) Systems, methods, and devices for fault resilient storage
US20090077302A1 (en) Storage apparatus and control method thereof
US9026845B2 (en) System and method for failure protection in a storage array
US20230244570A1 (en) Fault resilient storage device
CN111104056B (zh) 存储系统中数据恢复方法、系统及装置
US20210349781A1 (en) Systems, methods, and devices for data recovery using parity space as recovery space
CN110795279B (zh) 用于促进dram数据缓存转储和机架级电池备份的系统和方法
US20210349780A1 (en) Systems, methods, and devices for data recovery with spare storage device and fault resilient storage device
CN113811862A (zh) 存储驱动器的动态性能等级调整
CN117693732A (zh) 耐久性组ecc分配
US7330955B2 (en) Recovery record for updating a system configuration
CN113811861A (zh) 存储驱动器的动态性能等级调整

Legal Events

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