CN116134424A - 通过在存储系统中选择性使用降级写入和备用容量来平衡弹性和性能 - Google Patents
通过在存储系统中选择性使用降级写入和备用容量来平衡弹性和性能 Download PDFInfo
- Publication number
- CN116134424A CN116134424A CN202180058921.1A CN202180058921A CN116134424A CN 116134424 A CN116134424 A CN 116134424A CN 202180058921 A CN202180058921 A CN 202180058921A CN 116134424 A CN116134424 A CN 116134424A
- Authority
- CN
- China
- Prior art keywords
- raid array
- storage
- storage devices
- raid
- spare capacity
- 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/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1084—Degraded mode, e.g. caused by single or multiple storage removals or disk failures
-
- 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/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2056—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/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
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)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
提供了当容错数据存储系统(例如,RAID存储系统)在降级模式中操作时,用于通过在执行降级写入操作或对备用容量的写入操作之间进行选择来处理容错数据存储系统中的用户输入/输出(I/O)写入请求的技术。方法包括:接收用户I/O写入请求,其包括要写入在降级模式中操作的RAID阵列的数据,以及确定是否已分配备用容量用于重建RAID阵列的不可访问存储设备的丢失数据,以及是否已将与I/O写入请求相关联的丢失数据块重建到备用容量。当与I/O写入请求的数据相关联的丢失数据块还没有被重建到所分配的备用容量时,执行降级写入操作,而不使用备用容量。
Description
技术领域
本公开总体上涉及信息处理系统中的数据存储管理,并且更具体而言,涉及用于增强数据存储的性能和可靠性的数据存储管理技术。
背景技术
在数据存储系统中利用各种技术来提供弹性和纠错以在存储设备或存储节点发生故障的情况下保护所存储的数据。例如,这样的技术包括擦除编码技术和RAID(独立驱动器的冗余阵列)技术。通常,RAID是用于增强数据存储的性能和可靠性的技术。存在各种RAID等级,其实现诸如数据镜像、数据条带化、奇偶校验等技术的不同组合,以提供容错,并且允许在诸如硬盘驱动器(HDD)、固态硬盘(SSD)等的存储设备发生故障的情况下恢复或以其他方式重建丢失数据。
对于各种应用和服务,数据存储系统通常需要具有“5个9”可用性(99.999%正常运行时间)或“6个9”可用性(99.9999%正常运行时间)。为RAID存储系统提供如此高等级的可用性的关键因素是RAID控制系统以比可能发生错误的速度快得多的速度纠正错误的能力,否则,太多的设备错误将导致数据丢失和离线时间。通常保留一定量的备用容量,当存储设备发生故障时,RAID控制系统可以立即利用这些备用容量。这缩短了RAID存储系统易受附加故障影响的时间。即使当没有备用容量可用时,RAID存储系统也可以在“降级模式”下操作,只要当前存在的故障数目不超过RAID系统被配置为支持的最大故障数目或容错等级。当RAID存储系统中存在一个或多个设备故障时,并非所有数据(例如,数据条带、奇偶校验数据等)都可以写入RAID阵列,因为只能写入非故障存储设备上的现有数据条或奇偶校验数据,这导致所谓的“降级写入”。当RAID存储系统在降级模式中操作时,存在与利用降级写入来处理用户输入/输出(I/O)写入请求相关联的性能影响。
发明内容
本公开的示例性实施例包括用于当容错数据存储系统在降级模式中运行时,在容错数据存储系统(例如,RAID存储系统)中通过在执行降级写入操作或执行对备用容量的写入操作之间进行选择来处理用户I/O写入请求的技术。例如,一个实施例包括由存储控制系统实现的方法。存储控制系统接收用户I/O写入请求,用户I/O写入请求包括要写入到包括多个存储设备的RAID阵列的数据,RAID阵列由存储控制系统管理。存储控制系统确定RAID阵列是否在降级模式中操作,在降级模式中,RAID阵列的多个存储设备中的至少一个存储设备由于故障而不可访问。响应于确定RAID阵列在降级模式中操作,存储控制系统确定(i)是否已经将备用容量分配给RAID阵列以用于重建RAID阵列的至少一个不可访问的存储设备的丢失数据,以及(ii)与I/O写入请求的数据相关联的丢失数据块是否已经重建到所分配的备用容量。存储控制系统响应于确定备用容量已经被分配给RAID阵列但是与I/O写入请求的数据相关联的丢失数据块还没有被重建到所分配的备用容量,通过使用RAID阵列的多个存储设备中的剩余存储设备执行降级写入操作来处理用户I/O写入请求,而不使用备用容量。
在另一实施例中,响应于确定RAID阵列在降级模式中操作,存储控制系统确定RAID阵列的剩余弹性等级是否足以提供针对RAID阵列的剩余存储设备的至少一个附加故障的容错。然后,响应于确定RAID阵列的剩余弹性等级足以提供针对RAID阵列的剩余存储设备的至少一个附加故障的容错,存储控制系统使用RAID阵列的多个存储设备中的剩余存储设备来执行降级写入操作,而不使用所分配的备用容量。另一方面,响应于确定RAID阵列的剩余弹性等级不足以提供针对RAID阵列的剩余存储设备的至少一个附加故障的容错,存储控制系统通过使用所分配的备用容量和RAID阵列的剩余存储设备执行写入操作来处理用户I/O写入请求。
本公开的其他实施例包括但不限于包括处理器可读存储介质的方法、系统和制品,其被配置为当数据存储系统在降级模式中操作时,通过在执行降级写入操作或执行对备用容量的写入操作之间进行选择来处理容错数据存储系统中的用户I/O写入请求。
附图说明
图1A和图1B示意性地示出了根据本公开的示例性实施例,包括RAID存储系统的信息处理系统,RAID存储系统被配置为当在降级模式中操作时,通过在执行降级写入操作或执行对备用容量的写入操作之间进行选择来处理用户I/O写入请求。
图2示意性地示出了根据本公开的示例性实施例,可以在图1A和图1B的信息处理系统中实现的RAID 1配置。
图3示意性地示出了根据本公开的示例性实施例,可以在图1A和图1B的信息处理系统中实现的RAID 6配置。
图4A和图4B示出了根据本公开的示例性实施例,在RAID存储系统中实现的方法的流程图,用于通过在执行降级写入操作或执行对备用容量的写入操作之间进行选择来处理用户I/O写入请求。
图5示意性地示出了根据本公开的示例性实施例,用于实现托管RAID控制模块的存储节点的服务器节点的框架。
具体实施方式
现在将关于用于实现容错数据存储系统(例如,RAID存储系统)的系统和方法进一步详细地讨论本公开的示例性实施例,其被配置为当容错数据存储系统在降级模式中操作时,通过在执行降级写入操作或执行对备用容量的写入操作之间进行选择来处理用户I/O写入请求。出于说明的目的,本文将参考实现RAID数据存储系统的示例性信息处理系统以及相关联的计算机、服务器、存储设备和其他处理设备来描述示例性实施例。然而,应当理解,这些和其他实施例不限于所示的特定说明性系统和设备配置。因此,本文所使用的术语“信息处理系统”旨在被广义地解释,以便涵盖例如包括云计算和存储系统的处理系统,以及包括物理和虚拟处理资源的各种组合的其他类型的处理系统。因此,信息处理系统可以包括例如至少一个数据中心或其他基于云的系统,其包括托管共享云资源的多个租户的一个或多个云。许多不同类型的企业计算和存储系统也被术语“信息处理系统”所涵盖,因为该术语在本文中被广泛使用。
图1A和图1B示意性地示出了根据本公开的示例性实施例,包括RAID存储系统的信息处理系统,RAID存储系统被配置为当在降级模式中操作时,通过在执行降级写入操作或执行对备用容量的写入操作之间进行选择来处理用户I/O写入请求。更具体而言,图1A示意性地示出了信息处理系统100,其包括多个计算节点110-1,110-2,…,110-c(统称为计算节点110)、一个或多个管理节点115(其支持系统100的管理层),通信网络120和数据存储系统130(其支持系统100的数据存储层)。数据存储系统130包括多个存储节点140-1,140-2,…,140-n(统称为存储节点140,或各自单独称为存储节点140)。在如下文进一步详细讨论的示例性实施例的上下文中,管理节点115实现数据恢复控制系统117,其被配置为在数据存储系统130的存储设备和/或存储节点140发生故障的情况下执行各种功能以支持数据恢复操作。图1B示意性地示出了存储节点140中的至少一个或多个的示例性框架。
具体而言,如图1B所示,存储节点140包括存储控制系统150,其包括存储虚拟化和管理服务模块160、RAID控制模块170和本地存储设备180。RAID控制模块170包括各种模块,包括但不限于,数据条带化模块172、奇偶校验计算模块174、重建控制模块176和降级写入控制模块178,其功能将在下面进一步详细说明。在一些实施例中,存储控制系统150包括软件定义存储系统的软件层,其中RAID控制模块170是存储控制系统150的集成软件模块,其实现软件RAID控制系统(例如,RAID驱动器)。在其他实施例中,RAID控制模块170包括独立软件系统,其与存储控制系统150分离,但被配置为与存储控制系统150结合操作。还应注意的是,存储控制系统150可以包括通常包括在存储控制系统(例如,软件定义的存储系统)的各种实现中的附加模块和其他组件,尽管为了说明的清楚和简单而省略了这样的附加模块和其他组件。
计算节点110示意性地包括处理数据并且执行工作负载的物理计算节点和/或虚拟计算节点。例如,计算节点110可以包括一个或多个服务器节点(例如,裸机服务器节点)和/或一个或多个虚拟机。在一些实施例中,计算节点110包括物理服务器节点的集群或企业计算机系统的其他类型的计算机、基于云的计算系统或与相应用户相关联的多个计算节点的其他布置。在一些实施例中,计算节点110包括在一个或多个物理服务器节点上执行的虚拟机的集群。
计算节点110被配置为单独地或以分布式方式处理数据并且执行任务/工作负载并且执行计算工作,从而提供计算服务,例如代表与计算节点中的相应一个计算节点相关联的一个或多个用户中的每个用户执行一个或多个应用。这样的应用示意性地发出由存储节点140中的对应一个存储节点处理的I/O请求。本文所使用的术语I/O请求是指输入和输出中的至少一个。例如,I/O请求可以包括针对数据存储系统130的给定一个存储节点140的存储数据的写入请求和/或读取请求。
计算节点110被配置为根据系统用户在计算节点上执行的应用向存储节点140写入数据和从存储节点读取数据。计算节点110通过通信网络120与存储节点140通信。虽然通信网络120在图1中被一般地描绘,但应当理解,通信网络120可以包括任何已知的通信网络,例如,全球计算机网络(例如,互联网)、广域网(WAN)、局域网(LAN)、内联网、卫星网络、电话或电缆网络、蜂窝网络、诸如Wi-Fi或WiMAX的无线网络、存储结构(例如,以太网存储网络)或这些和其他类型的网络的各种部分或组合。
在这方面,本文所使用的术语“网络”因此旨在广义地解释为涵盖各种不同的网络布置,包括可能具有不同类型的多个网络的组合,其实现使用例如传输控制/互联网协议(TCP/IP)或其他通信协议,诸如光纤信道(FC)、以太网FC(FCoE)、互联网小型计算机系统接口(iSCSI)、外围组件互连快速(PCIe)、无限带宽(InfiniBand)、千兆以太网等通信,以实现I/O信道并且支持存储网络连接。如本领域技术人员将理解的,在给定的实施例中,许多备选的联网布置是可能的。
数据存储系统130可以包括任何类型的数据存储系统或数据存储系统的组合,包括但不限于,存储区域网络(SAN)系统、网络附接存储(NAS)系统、直接附接存储(DAS)系统等,以及其他类型的数据存储系统,包括软件定义的存储、集群或分布式虚拟和/或物理基础设施。如本文所使用的术语“数据存储系统”应被广义地解释并且不被视为限于任何特定类型的存储系统。在一些实施例中的存储系统可以使用存储节点和计算节点的组合来实现。在一些实施例中,存储节点140包括存储服务器节点(例如,图5中所示的服务器节点500),其具有一个或多个处理设备,每个处理设备具有处理器和存储器,可能实现虚拟机和/或容器,但是多个其他配置是可能的。在一些实施例中,存储节点140中的一个或多个存储节点可以另外实现计算节点的功能,反之亦然。因此,本文所使用的术语“存储节点”旨在广义地解释为服务器节点(例如,物理服务器机器),其包括本地永久存储设备(例如,存储设备180)并且包括存储控制系统(例如,控制系统150,图1B),其被配置为管理和控制对本地永久存储设备的访问。存储节点可以进一步包括一个或多个计算节点以处理数据并且执行任务/工作负载。
在一些实施例中,如图1B所示,存储节点140是物理服务器节点或存储设备,其中存储设备180包括DAS资源(内部和/或外部存储资源),例如硬盘驱动器(HDD)、固态驱动器(SSD)、闪存卡,或其它类型的非易失性存储器(NVM)设备,例如非易失性随机存取存储器(NVRAM)、相变RAM(PC-RAM)和磁性RAM(MRAM)。多个不同类型的存储设备180的这些和各种组合可以在存储节点140中实现。在这方面,本文所使用的术语“存储设备”旨在被广义地解释,以便涵盖例如SSD、HDD、闪存驱动器、混合驱动器或其他类型的存储介质。数据存储设备180通过使用诸如ATA、SATA、eSATA、NVMe、SCSI、SAS等适合的协议的任何适合的主机接口(例如,主机总线适配器)连接到存储节点140。在其他实施例中,存储节点140可以是通过局域网连接到一个或多个NAS节点的网络。
存储控制系统150被配置为管理存储设备180并且控制对存储设备180的I/O访问和/或直接附接到或网络连接到存储节点140的其他存储资源(例如,DAS或NAS资源)。在一些实施例中,存储控制系统150是软件定义存储(SDS)系统的组件(例如,存储数据服务器),其通过将控制和管理软件与存储设备180的底层硬件架构分离来支持存储设备180的虚拟化。存储控制系统150在存储节点140的服务器操作系统上运行以提供存储服务。更具体而言,在软件定义的存储环境中,存储控制系统150包括存储数据服务器,其被配置为从底层存储硬件抽象存储访问服务,从而控制和管理由计算节点110发出的I/O请求,以及支持联网和连接。在该实例中,存储控制系统150包括由存储节点140托管并且部署在计算节点110与存储节点140的存储设备180之间的数据路径中的软件层,其中,存储控制系统150被配置为通过访问存储设备180来处理来自计算节点110的I/O请求,以基于I/O请求向/从存储设备180存储/取回数据。
在软件定义的存储环境中,存储控制系统150包括存储数据服务器,该存储数据服务器安装在将其存储贡献给数据存储系统的每个存储节点上。存储控制系统150被配置为提供、协调和管理存储节点140的本地存储资源(例如,存储设备180)。例如,存储控制系统150实现被配置为通过聚合来自存储设备180的容量来创建和管理存储池(例如,块存储的虚拟池)的方法。存储控制系统150可以将存储池划分为一个或多个卷,并且将这些卷作为虚拟块设备暴露给计算节点110。例如,虚拟块设备可以对应于存储池的卷。每个虚拟块设备包括任何数目的实际物理存储设备,其中每个块设备在构成块设备的存储设备的类型方面优选地是同类的(例如,块设备可以仅包括HDD设备或SSD设备等)。
在软件定义的存储环境中,图1A中的存储节点140中的每个存储节点可以运行存储控制系统150的实例以将存储节点140的相应本地存储资源(例如,DAS存储设备和/或NAS存储设备)转换成本地块存储。存储控制系统150的每个实例将其部分或全部本地块存储(HDD、SSD、PCIe、NVMe和闪存卡)贡献给存储服务器节点集群的聚合存储池(例如,存储节点的集群140)以实现基于服务器的SAN(例如,虚拟SAN)。在该配置中,每个存储节点140是松散耦合的服务器集群的部分,该服务器集群能够“扩展”软件定义的存储环境,其中在存储节点140中的相应一个存储节点上运行的存储控制系统150的每个实例将其本地存储空间贡献给虚拟SAN内具有不同性能层(例如,HDD、SSD等)的块存储的聚合虚拟池。
在一些实施例中,除了存储控制系统150作为存储数据服务器操作以创建和暴露存储层的卷之外,软件定义的存储环境还包括其他组件,例如(i)消耗存储层的数据存储客户端和(ii)协调存储层的元数据管理器。更具体而言,在客户端侧(例如,计算节点110),SDS数据存储客户端(SDC)是部署在每个节点上的轻量级块设备驱动器(例如,服务器节点),其消耗由存储节点140的存储控制系统150暴露的共享块存储卷。具体而言,SDC在与计算节点110相同的主机(例如,服务器)上运行,其需要访问由存储节点140中的存储控制系统150暴露和管理的块设备。SDC暴露了代表当前映射到该主机的虚拟存储卷的块设备。具体而言,SDC用作针对客户端(服务器)的块驱动器,其中SDC拦截由计算节点110发出的I/O请求,并且利用所拦截的I/O请求来访问由存储控制系统150管理的块存储。SDC提供对逻辑块设备(例如,卷)的操作系统或管理程序(其运行SDC)访问。
在软件定义的存储环境中,每个存储卷的主数据和副本分布在存储节点140上,并且每个SDC知道哪个SDS数据存储服务器(例如,存储控制系统150)保存其块数据,因此,多路径可以通过SDC本地完成。具体而言,每个SDC知道如何将I/O请求定向到相关的目的地SDS存储数据服务器(例如,存储控制系统150)。在这方面,没有路由的中心点,并且每个SDC执行的是独立于任何其他SDC的自己的路由。此实现防止了不必要的网络业务和冗余SDS资源使用。每个SDC保持到管理存储池的每个存储控制系统150的对等连接,因此每个SDC可以通过多个路径与存储数据的所有存储节点140通信。多点对等通信方式允许SDC同时向和从所有点读取和写入数据,从而消除了瓶颈并且在故障路径周围快速路由。
图1A中的管理节点115实现被配置为管理和配置系统100的存储环境的管理层。在一些实施例中,管理节点115包括SDS元数据管理器组件,其中管理节点115包括被配置为监督存储集群的操作和管理存储集群配置的节点的紧密耦合集群。SDS元数据管理器在数据路径外部操作,并且将相关信息提供给SDS客户端和存储服务器,以允许这样的组件控制数据路径操作。SDS元数据管理器被配置为管理SDC数据客户端到SDS数据存储服务器的映射。SDS元数据管理器管理SDS环境的系统操作所需的各种类型的元数据,诸如配置更改、管理SDS数据客户端和数据服务器、设备映射、值、快照、系统容量(包括设备分配和/或释放容量)、RAID保护、从错误和故障中恢复,以及系统重建任务,包括重新平衡。
尽管图1A示出了其中计算节点110与存储节点140分开并且通过通信网络120连接的两层部署的示例性实施例,但在其他实施例中,可以实现融合基础设施(例如,超融合基础设施)以将计算节点110、存储节点140和通信网络120一起整合在工程系统中。例如,在超融合部署中,实现单层部署,其中存储数据客户端和存储数据服务器(例如,存储控制系统150)在相同节点(例如,每个节点部署存储数据客户端和存储数据服务器)上运行,使得每个节点是数据存储消费者和数据存储供应方。在其他实施例中,图1A的系统可以用单层和两层部署的组合来实现。
无论存储环境的具体实现如何,如上所述,图1B的存储控制系统150的各种模块共同提供被配置为执行如下各种功能的数据存储和管理方法。具体而言,存储虚拟化和管理服务模块160实现任何适当的逻辑卷管理(LVM)系统,该系统被配置为通过将本地存储设备180聚合到一个或多个虚拟存储池来创建和管理本地存储卷,一个或多个虚拟存储池被精简配置以获得最大容量,并且在逻辑上将每个存储池划分为一个或多个存储卷,一个或多个存储卷向计算节点110暴露为块设备(例如,原始逻辑单元号(LUN))以存储数据。在一些实施例中,存储设备180被配置为块存储设备,其中创建原始存储卷,并且每个块可以被存储控制系统150控制为例如单独的盘驱动。根据给定数据存储系统应用的需要,可以使用相同或不同的文件系统来单独格式化每个块。存储池主要用于基于设备类型和性能对存储设备进行分组。例如,SSD被分组为SSD池,而HDD被分组为HDD池。此外,在一些实施例中,存储虚拟化和管理服务模块160实现支持各种数据存储管理服务的方法,诸如数据保护、数据迁移、重复数据删除、复制、精简配置、快照、数据备份等。
RAID控制模块170实现被配置为根据给定的RAID等级配置(例如,RAID 1、RAID 6等)跨RAID阵列的多个存储设备分布、组织和管理数据的控制方法。给定存储节点140的RAID控制模块170被配置为管理包括多个存储设备HDD或SSD等的RAID阵列,包括给定存储节点140的本地存储设备180和图1A所示的数据存储系统130中的其他存储节点140的远程存储设备180-R。在一些实施例中,给定存储节点140的RAID控制模块170被配置为与其他存储节点140上的远程存储设备180-R直接通信,其他存储节点140上的远程存储设备180-R是由RAID控制模块170管理和控制的RAID阵列的部分。在这方面,RAID控制模块170可以在作为由RAID控制模块170管理的RAID阵列的部分的远程存储设备180-R上执行I/O读取操作和I/O写入操作。
根据给定的RAID等级配置,RAID控制模块170被配置为使用诸如条带化、镜像、奇偶校验及其组合的RAID存储技术来控制和管理给定的RAID阵列中的数据的组织。具体而言,数据条带化模块172实现被配置为支持实现数据条带化技术以在RAID阵列的多个存储设备上分布数据的RAID方案的方法。具体而言,数据条带化模块172实现被配置为将数据划分成称为“条带”的弹性单元并且将条带划分成存储在RAID阵列内的不同存储设备上的大小相等的数据“条带”的方法。
奇偶校验计算模块174实现被配置为支持基于奇偶校验的RAID方案的方法。具体而言,奇偶校验计算模块174实现被配置为使用一种或多种类型的奇偶校验函数(例如,异或(XOR)函数等)来计算奇偶校验数据(例如,数据条)的方法。所实现的奇偶校验函数的类型将取决于由RAID控制模块170支持的RAID等级配置。重建控制模块176实现被配置为在给定RAID阵列的一个或多个故障(例如,给定RAID阵列中的存储设备故障、包括在给定RAID阵列中实现的存储设备的给定存储节点140的故障等)的情况下控制备用容量的重建的方法。
在RAID控制模块170由于与给定的RAID阵列相关联的存储设备和/或存储节点的一个或多个故障而在降级模式中操作给定的RAID阵列的时段期间,当处理用户I/O写入请求时,RAID控制模块170实现被配置为在I/O性能与数据弹性之间提供平衡的方法。更具体而言,当RAID阵列在降级模式中操作时,降级写入控制模块178被配置为通过在(i)执行对RAID阵列的降级写入或(ii)执行对备用容量的写入操作之间进行选择,来做出用于处理用户I/O写入请求的智能判定。如下面进一步详细解释的,这样的确定是基于诸如例如当在降级模式中操作时给定的RAID配置的剩余弹性的量、备用容量是否已被分配和重建过程的当前状态以及其他相关因素的因素来做出的。当RAID阵列在降级模式中操作时,RAID控制模块170区分由重建控制模块176处理的对RAID阵列的用户I/O写入请求和与RAID阵列的后台重建过程相关联的I/O请求。
在一些实施例中,RAID控制模块170包括存储控制系统150的软件模块,其中使用主机存储节点140的操作系统和现有硬件来执行RAID功能。例如,基于软件的RAID控制170模块利用诸如处理器(例如,CPU)的现有硬件和诸如SAS、IDE、SATA、SCSI、SSD控制器的硬件控制器。在主存储节点140实现硬件RAID控制器的情况下,存储控制系统150可以超越硬件RAID控制器,使得基于软件的RAID控制模块170控制RAID配置和功能。在一些实施例中,基于软件的RAID控制模块170可以利用硬件RAID控制器的读取高速缓存和写入高速缓存来支持对RAID阵列的读取和写入操作。
如本领域已知的,不同的RAID等级具有不同的容错、数据冗余性以及性能特性和属性。具体而言,容错指的是RAID阵列遭受一次或多次故障而不丢失数据的能力。给定RAID等级的性能是指与读取和写入单个存储设备相比,给定RAID阵列的读取和写入性能(例如,速度)的变化。给定的RAID阵列的容量是指可以写入RAID阵列的数据量。给定的RAID阵列的容量通常小于给定的RAID阵列内的存储设备的总容量。
本公开的示例性实施例可以使用各种类型的RAID等级配置来实现。出于说明性目的,将在RAID 1和RAID 6等级实现的上下文中讨论示例性实施例。例如,图2示意性地示出了可以在图1A和图1B的系统100中实现的RAID 1配置200。一般而言,RAID 1利用数据镜像过程将数据存储到给定存储设备,并且将数据的镜像副本(备选地称为副本)存储到一个或多个附加存储设备。具体而言,如图2所示,RAID 1配置200包括三个存储设备210-1、210-2和210-3,其中每个存储设备210-1、210-2和210-3存储每个数据块1、块2、块3等的副本。在一些实施例中,如图2所示,每个存储设备210-1、210-2和210-3分别与不同的存储节点220-1、220-2和220-3相关联。
RAID 1配置200使用不带奇偶校验的数据镜像技术来提供容错。更具体而言,在图2的示例性实施例中,RAID 1配置200提供针对以下故障的弹性:(i)单个故障,例如,存储设备210-1、210-2和210-3中的一个存储设备或存储节点220-1、220-2和220-3中的一个存储节点的故障,以及(ii)两个故障,例如,存储设备210-1、210-2和210-3中的两个存储设备或存储节点220-1、220-2和220-3中的两个存储设备的故障。在单故障或双故障的情况下,RAID控制模块170可以访问存储在(多个)功能存储设备中的数据块,块1、块2、块3等的副本。RAID 1配置的容量等于RAID 1阵列内的单个存储设备的容量。
在这方面,图2所示的RAID 1配置200实现镜像技术和三个存储设备,以提供对两个故障的容错。实际上,由于每个存储设备210-1、210-2和210-3具有相同的数据块副本,所以任何I/O读取请求或I/O写入请求可以由当前可访问并且可操作的RAID阵列中的存储设备210-1、210-2和210-3中的任何一个存储设备来服务。在存储设备或存储节点故障的情况下,RAID 1配置200可以在降级模式中操作,只要RAID阵列内的一个存储设备是可访问并且可操作的。在诸如RAID 5和RAID 6的RAID的其他实施例中,取决于RAID配置,跨多个存储设备的数据的分布式奇偶校验和条带化被用来提供针对一个或多个故障的容错。
具体而言,RAID 5和RAID 6利用块级数据条带化和分布式奇偶校验技术的组合来在发生故障(例如,存储设备故障)的情况下提供弹性和纠错。用于RAID 5和RAID 6的数据条带化过程包括将所存储的数据划分为弹性单元,弹性单元被称为“条带”,并且进一步将数据“条带”划分成多个大小相等的被称为“条带”的数据块。给定条带的组成条带按给定顺序存储在RAID阵列内的不同存储设备上。此外,为数据条带中的每个数据条带计算奇偶校验数据块,并且将其写入到RAID阵列内的数据存储设备。针对数据条带的奇偶校验数据块不会写入单个存储设备,而是分布在RAID阵列内的所有存储设备上。在组成数据条带由于存储设备故障而丢失的情况下,可以使用针对给定数据条带的奇偶校验数据块来重新计算组成数据条带的数据。
RAID 5利用单个奇偶校验函数(例如,XOR函数)来计算给定数据条带的奇偶校验数据块,而RAID 6利用两个独立的奇偶校验函数来计算针对给定数据条带的两个不同的奇偶校验数据块,这两个不同的奇偶校验数据块被写入到RAID 6阵列内的两个分离的存储设备。RAID 5最少需要三个存储设备,而RAID 6最少需要四个存储设备。包括N个存储设备的RAID 5阵列的容量等于阵列中最小存储设备的大小的(N-1)倍(因为使用一个存储设备的容量来存储奇偶校验函数数据以提供容错)。包括N个存储设备的RAID 6阵列的容量等于阵列中最小存储设备的大小的(N-2)倍(因为使用两个存储设备的容量来存储奇偶校验函数数据以提供容错)。
例如,图3示意性地示出了可以在图1A和图1B的系统100中实现的RAID 6配置300。具体而言,如图3所示,RAID 6配置300包括四个存储设备310-1、310-2、310-3和310-4,其中每个存储设备310-1、310-2、310-3和310-4分别与不同的存储节点320-1、320-2、320-3和320-4相关联。在图3的示例性实施例中,每个数据块(数据条带),即块1、块2、块3、块4等,被划分为两个组成数据块(数据条带),并且具有两个独立的奇偶校验数据块。具体而言,如图3所示,块1被划分为两个组成数据块,块1A和块1B,并且具有两个独立的奇偶校验数据块,奇偶校验B1-1和奇偶校验B1-2(例如,P和Q奇偶校验码)。块2被划分为两个组成数据块,块2A和块2B,并且具有两个独立的奇偶校验数据块,奇偶校验B2-1和奇偶校验B2-2。块3被划分为两个组成数据块,块3A和块3B,并且具有两个独立的奇偶校验数据块,奇偶校验B3-1和奇偶校验B3-2。框4被划分为两个组成数据块,块4A和块4B,并且具有两个独立的奇偶校验数据块,奇偶校验B4-1和奇偶校验B4-2。
虽然图3示出了用于数据块和奇偶校验数据块的示例性RAID 6布局,但是可以实现不同的RAID 6布局方案,其指定将数据块(条)的组成数据块(条)和相关联的奇偶校验数据块写入到RAID 6配置300内的存储设备310-1、310-2、310-3和310-4的顺序和位置。对于每个数据条带,RAID配置300包括最少四个存储设备和两个独立的数据奇偶校验块,以在两个故障的情况下提供弹性和数据保护。
在一些实施例中,当存在存储节点140的给定存储设备180的故障时或当存在给定存储节点140的故障时,系统100(图1A)的管理节点115将自动启动并且执行重建过程。在例如(i)存储设备遭受硬件故障或失灵、(ii)相关联的硬件设备驱动器被损坏或破坏、(iii)存在将存储设备180连接到存储节点140的故障连接(例如,坏的电缆或总线)、(iv)存在存储设备的功率故障、或当(v)控制存储设备180的存储节点140崩溃等情况下,存储设备故障可能出现。
管理节点115的数据恢复控制系统117可以在不同类型的故障的情况下启动和管理不同类型的数据恢复过程。例如,当给定存储设备180的故障是存储设备180的硬件故障或失灵,或相关联的存储节点140的故障或失灵的结果时,数据恢复控制系统117可以自动启动“前向重建”过程。前向重建过程涉及例如分配存储节点140的集群内的一个或多个存储设备的备用容量,并且向存储节点140的存储控制系统150提供指令以开始重建过程,以使用另一存储设备上的数据的副本或镜像副本来重建具有(多个)故障存储设备的数据的备用容量,或者使用现有数据块和奇偶校验信息来重建丢失数据等。
在一些实施例中,当故障存储设备或存储节点与由给定的RAID控制模块170管理的给定的RAID阵列相关联时,重建控制模块176将根据由管理节点115提供的重建参数/指令并且使用由管理节点115分配的备用容量来继续执行后台重建过程。根据给定的RAID等级配置,RAID重建控制模块176将使用相关联的RAID算法和奇偶校验数据、镜像副本等来重建具有丢失数据的备用容量。
在其他实施例中,当给定存储设备180或相关联的存储节点140的故障是可修复的问题(例如,功率故障)的结果时,数据恢复控制系统117可以自动启动“向后重建”过程。后向重建过程涉及例如在故障修复之后重新附接存储环境中的存储设备或存储节点,然后更新或以其他方式同步重新附接的存储设备上的数据,以添加在存储设备或相关联的存储节点不可访问的时间段期间对数据所做的改变。
数据恢复控制系统117可以根据故障的类型以及与某些重建操作相关联的延时来确定是执行前向重建还是后向重建操作。例如,在给定存储设备180或相关联的存储节点140的故障可修复的情况下,当问题被修复时,数据恢复控制系统117可以自动启动“后向重建”过程,或者在执行前向重建操作将导致比执行后向重建过程更快的恢复时间的情况下,启动前向重建操作以在备用容量上重建丢失数据。
在一些实施例中,管理节点115(图1A)将监控来自存储节点140的“心跳”,并且当没有检测到给定存储节点140的心跳时,管理节点115将确定给定存储节点140已经发生故障。数据恢复控制系统117将启动重建过程以保护数据,并且管理节点115可以响应于检测到的存储节点故障,根据需要执行附加操作以重新配置存储环境。在其他实施例中,当给定存储节点140的存储控制系统150或RAID控制模块170在读取或写入给定存储节点140的给定存储设备180时检测到发生I/O故障时,存储控制系统150将向管理节点115提供针对给定存储设备返回的存储设备I/O错误的通知。响应于该通知,数据恢复控制系统117将启动重建过程以保护数据,并且管理节点115可以根据需要来执行附加操作,以响应于检测到的存储设备故障来重新配置存储环境。
将备用容量用作后台重建操作的部分时,必须考虑性能影响。例如,当分配备用容量时,备用容量最初不包含任何数据。当新数据被写入备用容量时,写入操作需要更新与新写入的数据相关联的元数据,其中元数据指示备用容量的哪些部分有效以及哪些部分无效。元数据的大小可能会影响性能,因为元数据的粒度通常大于I/O粒度。例如,存储系统可以被配置为使得元数据可能仅能够以32KB的粒度追踪变化,而I/O的粒度是4KB。在这种情况下,需要读取28KB,并且将其与用户的4KB相结合,从而创建可由元数据引用的32KB的更大写入,从而引入了性能开销。本文所使用的术语“工作区域”指的是元数据粒度(例如,32KB)的区域。
此外,尤其是当在多个存储节点之间共享备用容量时,备用容量的分配不是即时的过程。在这种情况下,仅在出现故障时才分配实际容量,因为当出现故障时,任何需要备用容量的存储节点都可以使用备用容量。在故障期间,甚至在多个故障期间,将存在来自备用分配机制的许多请求,其可能导致瓶颈,这将减慢用户I/O。对于RAID后台重建操作,完成重建过程所花费的时间将根据诸如存储设备故障的数目、必须重建的故障存储设备的容量、与执行用户I/O操作相比分配用于执行I/O重建操作的带宽等因素而异。
具体而言,高容量存储设备(例如,太字节(terabytes)量级的容量)或多个高容量存储设备的故障可能导致需要数小时或数天才能完成的相对较长的重建操作。此外,在一些实施例中,当启动RAID重建过程时,数据恢复控制系统117可以指定与RAID后台重建过程相关联的重建节流策略。RAID重建过程的重建节流策略确定在访问存储设备时执行重建I/O操作与执行用户/应用I/O操作的优先级。可以应用不同的重建节流策略,这些策略(i)对重建I/O操作没有限制,(ii)限制给定存储节点的并发I/O操作,(iii)有利于用户/应用I/O操作,(iv)实现动态带宽节流等。应用重建节流将增加完成重建操作所需的时间,并且将RAID系统保持在降级操作模式,同时减少对用户I/O性能的影响。
此外,关于执行降级写入操作必须考虑性能影响,其中性能影响根据给定的RAID配置而异。例如,对于RAID 1,在执行降级写入操作时不会出现性能降级。具体而言,对于具有N个存储设备的RAID 1配置的降级写入操作涉及当N个存储设备中的一个或多个存储设备发生故障或以其他方式不可用时向现有存储设备写入数据(其与I/O写入请求相关联)。在这种情况下,降级写入操作涉及将数据的少于N个副本写入存储设备。
例如,在图2的示例性RAID 1配置200中,假设存储设备210-3由于存储节点220-3的故障而发生故障或不可用,从而将RAID 1配置置于降级模式。在该故障状态下,降级写入操作将涉及(i)向主存储节点220-1的存储设备210-1写入数据,以及(ii)向镜像存储节点220-2的存储设备210-2写入镜像副本。在这种情况下,当数据仅被写入存储设备210-1和210-2而不是故障/不可用的存储设备210-3时,不存在与降级写入操作相关联的损失。此外,不存在与响应于对先前写入的数据的I/O读取请求而执行的后续读取操作相关联的性能损失,因为可以从存储设备210-1和210-2中的一个存储设备读取所请求的数据(例如,块1),而无需像利用用于容错的奇偶校验数据的RAID配置那样重建这种所请求的数据。
另一方面,对于基于奇偶校验的RAID配置,存在与降级写入操作相关联的性能损失。具体而言,当用户发出从故障存储设备读回数据的I/O读取请求时,存在性能损失,这需要RAID控制模块使用在RAID阵列内的当前可用存储设备上的剩余数据(例如,奇偶校验数据)来重建所请求的数据。
例如,在图3的示例性RAID 6配置300中,假设存储设备310-1由于存储节点320-1的故障而发生故障或不可用,从而将RAID 6配置300置于降级模式。进一步假设已经接收到将数据写入数据块1A的I/O写入请求。在该故障状态下,由于数据块1A不可用,降级写入操作将涉及(i)读取数据块1B以及奇偶校验数据块,奇偶校验B1-1和奇偶校验B2-1,(ii)使用接收到的I/O写数据和读取的数据块1B来为奇偶校验块,奇偶校验B1-1和奇偶校验B2-1,计算新的奇偶校验数据,以及(iii)将新的奇偶校验数据块,奇偶校验B1-1和奇偶校验B2-1,写入存储设备310-3和310-4。
利用降级写入操作,更新的数据块1A不被写入存储设备,而是新的奇偶校验数据块,奇偶校验B1-1和奇偶校验B2-1,将包括重构更新的数据块1A以服务于更新的数据块1A的后续I/O读取请求所需的信息。具体而言,响应于对更新的数据块1A的I/O读取请求,将执行降级读取操作,其涉及(i)读取数据块1B以及新的奇偶校验数据块,奇偶校验B1-1和奇偶校验B2-1,(ii)使用数据块1B和新的奇偶校验数据块,奇偶校验B1-1和奇偶校验B2-1,来重构数据块1A,以及(iii)返回重构的数据块1A以服务于I/O读取请求。在这方面,存在与执行降级读取操作以从RAID阵列的故障存储设备读取数据相关联的性能损失,因为必须使用RAID阵列的当前可用存储设备上的剩余数据来重构数据。
如上所述,当在RAID控制模块170在降级模式中操作RAID阵列的时间段期间处理用户I/O写入请求时,RAID控制模块170实现被配置为在I/O性能与数据弹性之间提供平衡的方法。当RAID阵列在降级模式中操作时,降级写入控制模块178被配置为通过在(i)执行对RAID阵列的降级写入或(ii)执行对备用容量的写入操作之间进行选择来做出用于处理用户I/O写入请求的智能判定。在该配置中,RAID控制模块170区分对RAID阵列的用户I/O写入请求和与由重建控制模块176处理的RAID阵列的后台重建过程相关联的I/O请求。
在一些实施例中,降级写入控制模块178部分地基于当在降级模式中操作时对于给定的RAID配置剩余的弹性的量来做出关于如何处理用户I/O写入请求的判定。例如,对于提供针对两个故障弹性的RAID阵列,是否执行降级I/O写入操作而不是执行对备用容量的写入操作的判定将取决于RAID阵列是处于一个故障的降级状态(在这种情况下存在对另一故障的容错等级)还是处于两个故障的降级状态(在这种情况下,RAID阵列不能针对另一故障进行保护)。当RAID阵列处于具有一些剩余弹性的降级模式时,可以将RAID控制模块170配置为仅由重建控制模块176执行的后台重建过程将分配和写入备用容量以获得弹性。后台过程对延时不敏感,并且可以容忍性能开销。
另一方面,对于性能敏感的用户I/O写入请求,仅当已分配备用容量的后台过程和与I/O写入请求相关联的数据块已在备用容量上重建时,RAID控制模块170才通过写入备用容量来处理用户I/O请求。否则,RAID控制模块170将通过将与用户I/O请求相关联的数据写入到RAID阵列的功能可访问的存储设备来执行降级写入操作。在发生两个故障(没有针对另一故障的剩余保护)时,弹性变得至关重要,并且所有用户I/O写入请求都将通过使用备用容量将数据写入到RAID阵列来处理。
图4A和4B示出了根据本公开的示例性实施例,在RAID存储系统中实现的方法的流程图,该方法用于当在降级模式中操作时,通过在执行降级写入操作或执行对备用容量的写入操作之间进行选择来处理用户I/O写入请求。在一些实施例中,图4A和图4B示出了图1B的RAID控制模块170的示例性操作模式,以在RAID控制模块170在降级模式中操作RAID阵列的时间段期间处理用户I/O写入请求时,提供I/O性能与数据弹性之间的平衡。出于说明性目的,将在图1A和图1B的信息处理系统100的上下文中讨论过程流程。
参考图4A,RAID控制模块170接收将数据写入RAID阵列的用户I/O写入请求(框400)。如上所述,在一些实施例中,给定计算节点110的I/O请求由运行在与计算节点相同的服务器上的SDC服务,并且当I/O请求是写入请求时,SDC将I/O写入请求发送到数据的主副本所在的存储节点140,或者发送到具有被分配用于处理给定RAID阵列的数据条带化和奇偶校验计算的RAID控制模块170的存储节点140。
确定RAID阵列是否在降级模式中操作(框401)。如果确定RAID阵列不在降级模式中操作(框401中的否定确定),则RAID控制模块170将根据给定的RAID阵列配置来执行正常写入操作(框402)。例如,对于RAID 1配置,RAID控制模块170将继续将I/O写入请求的数据写入本地存储设备(例如,主副本)以及将数据的镜像副本写入RAID阵列内的远程存储设备。对于RAID 6配置,RAID控制模块170将执行必要的数据条带化和奇偶校验计算功能,以将数据写入RAID阵列的本地和远程存储设备。
另一方面,如果确定RAID阵列在降级模式中操作(框401中的肯定确定),则RAID控制模块170将继续确定是执行降级写入操作还是使用备用容量执行写入操作。这样的确定是基于诸如当在降级模式中操作时给定RAID配置的剩余弹性的量(判定框403)、以及备用容量是否已被分配和重建过程的当前状态(判定框404)以及其他相关因素等因素来做出的。
当出现与关联于RAID阵列的存储设备或存储节点相关联的至少一个故障时,RAID阵列将以降级模式操作。用户I/O写入请求可以在由于与RAID阵列相关联的存储设备和/或存储节点的一个或多个故障而导致RAID阵列已经在降级模式中操作时被接收(在框400中)。在这种情况下,RAID控制模块170可以处于使用由管理节点115为重建操作分配的备用容量执行由管理节点115指示的重建操作的过程中。
在其他实例中,I/O写入请求可以在当RAID阵列未在降级模式中操作,但是在正常写入操作(框402)的执行不成功并且作为写入操作失败的结果而导致RAID控制模块170接收到I/O错误(例如,存储设备I/O错误)时被接收(在框400中)。在一些实施例中,当响应于对RAID阵列的尝试写入操作而返回I/O错误时,RAID控制模块170将继续执行由存储控制系统150和/或RAID控制模块170实现的用于处理I/O错误的任何适合的过程。
此外,RAID控制模块170可以继续确定I/O错误是否是存储设备故障、存储节点故障、网络故障等的结果。如上所述,可能发生I/O错误的原因有很多,例如存储设备硬件失灵、错误连接、存储设备的电源故障、远程存储节点140的故障等。RAID控制模块170可以基于各种因素来做出这样的确定,包括但不限于,针对给定存储设备的写入操作(在相对较短的时间段内)接收到许多I/O错误,从管理节点115接收关于存储设备、存储节点或通信网络等导致这种I/O错误的给定故障的通知,或者使RAID控制模块170能够确定RAID阵列的存储设备已经故障或以其他方式不可用的其他类型的条件或指示。
在一些实施例中,如上所述,当发生I/O错误时,存储控制系统150将向管理层(例如,管理节点115)提供I/O错误的通知。响应于该通知,管理层将根据需要自动执行某些操作以重新配置存储环境并且从I/O错误中恢复。这样的操作包括,例如,向一个或多个存储控制系统提供指令以继续重建故障存储设备或故障存储节点(例如,故障服务器),向RAID控制模块提供指令以使用由管理层分配的备用容量来重建RAID阵列的数据,重新配置存储环境的映射元数据使得客户端将I/O请求定向到(另一存储节点140的)另一存储控制系统,该另一存储控制系统包括具有存储在故障存储设备中的数据的备份或副本的存储设备等。
当RAID控制模块170确定I/O错误是与RAID阵列相关联的某种故障的结果时,RAID控制模块170可以确定RAID阵列处于降级操作状态,并且以降级模式继续处理与RAID阵列的用户I/O请求。在降级模式中,根据给定时间的并发存在故障的数目以及给定RAID阵列配置的容错(例如,允许的并发存在故障的最大数目),RAID阵列保持运行,但具有降低的容错或不再具有容错。
在认为RAID阵列在降级模式中操作的所有情况下(框401中的肯定确定),RAID控制模块170将继续确定是(i)执行降级写入操作还是(ii)使用备用容量来执行写入操作。在一些实施例中,这样的确定部分地基于确定RAID阵列的剩余弹性是否足以提供期望的容错等级(框403中的确定)。例如,在一些实施例中,这样的确定是基于与RAID阵列在不丢失数据的情况下能够处理的并发故障的最大数目(F)相比较,RAID阵列的并发存在故障的数目(f)来做出的。在一些实施例中,当并发存在故障的数目小于RAID阵列在不丢失数据的情况下能够处理的并发故障的最大数目时(即,当f<F时),将认为RAID阵列的剩余弹性足够(框403中的肯定确定)。
例如,图2所示的示例性RAID 1配置200提供针对最多两个并发故障(F=2)的容错。类似地,图3所示的示例性RAID 6配置300提供针对最多两个并发故障(F=2)的容错。在这样的实施例中,当有一个存在故障(即,f=1)时,可以认为RAID阵列的剩余弹性足够(框403中的肯定确定),而当有两个并发存在故障(即,f=2)时,将认为RAID阵列的剩余弹性不足(框403中的否定确定)。
在其他实施例中,可以将RAID阵列配置为提供针对多于两个并发故障(例如,F=3、4、5、…)的容错,在需要如此高的容错等级的某些应用中。在这样的实施例中,当RAID阵列的并发存在故障的数目(f)等于RAID阵列在不丢失数据的情况下能够处理的并发存在故障的最大数目(F)时(即,当f=F时,其中F=3、4、5、…),可以认为RAID阵列的剩余弹性不足。在其他实施例中,当RAID阵列被配置为提供针对多于两个并发故障(例如,F=3、4、5等)的容错时,当RAID阵列的并发存在故障数目(f)小于RAID阵列能够处理的最大并发故障数目(F)时,例如当f=F-1、f=F-2等时,取决于给定的应用,可以认为RAID阵列的剩余弹性不足。
具体而言,可以基于弹性阈值(fThreshold)来确定(在框403中)关于给定RAID阵列的剩余弹性是足够还是不足的确定,弹性阈值是基于RAID阵列的各种操作特性(静态地或动态地)设置的。例如,在存储设备故障率相对高并且执行后台重建过程的时间相对长的容错存储系统中,可能希望将弹性阈值设置为小于F的某个值(即,fThreshold<F),以确保在可以为一个或多个故障存储设备完成后台重建过程之前,在某个时间点并发故障的数目f超过RAID阵列能够处理的最大并发故障数目(F)的情况下,RAID控制系统可以执行降级写入,同时仍然防止数据丢失。
例如,假设给定的RAID阵列具有针对最多四个故障的容错(即,F=4),并且弹性阈值被设置为三(即,fThreshold=3)。在该示例中,可以基于将并发存在的故障的数目(f)与弹性阈值(fThreshold)进行比较来确定(在框403中)关于给定RAID阵列的剩余弹性是足够还是不足的确定。当并发存在的故障的数目小于弹性阈值(即,f<fThreshold)时,可以认为RAID阵列的剩余弹性足够(框403中的肯定确定)。另一方面,当并发存在故障的数目等于或大于弹性阈值(即,f≥fThreshold)时,可以认为RAID阵列的剩余弹性不足(框403中的否定确定)。在F=4的示例性实施例中,当并发存在的故障的数目被确定为等于弹性阈值时(例如,f=fThreshold=3),一(1)个故障(即,F-fThreshold或4-3=1)的剩余弹性对于执行降级写入操作的目的可以被认为不足,同时防止在完成后台重建过程之前由于一个或多个附加故障而导致的潜在数据丢失。
在一些实施例中,可以基于与硬件故障和软件故障相关联的统计数据和计算来确定给定容错存储系统的弹性阈值(fThreshold)。例如,存储设备的硬件故障特性可以被确定为故障率随时间的函数。此外,硬件和软件组件的可用性可以基于可靠性参数或度量来确定,可靠性参数或度量包括但不限于,故障间平均时间(MTBF)、故障时间(FIT)(其表示每十亿小时1个的故障率)、平均修复时间(MTTR)等。在这方面,应当理解,可以使用本领域中已知的各种统计方法和可靠性参数来计算给定容错存储系统的弹性阈值(fThreshold),并且这种阈值将根据与容错数据存储系统中使用的各种硬件和软件组件相关联的统计确定的可用性和可靠性特性而异。
返回参考图4A,当认为RAID阵列的剩余弹性足够时(框403中的肯定确定),确定是否已经分配备用容量并且利用RAID阵列的丢失数据来重建(框404中的确定)。如上所述,在一些实施例中,当给定存储设备或存储节点发生故障时,管理层将继续分配给定存储节点的现有存储设备的备用容量,并且通过指示存储控制系统重建与给定RAID阵列相关联的(多个)故障存储设备和/或(多个)存储节点的丢失数据并且用重建数据来重新填充所分配的备用容量来启动重建过程。例如,对于图2所示的示例性RAID 1配置200,重建操作涉及使用来自RAID阵列的给定存储设备的现有数据在备用容量上存储数据的镜像副本。对于图3的示例性RAID 6配置300,重建操作涉及例如使用P和Q奇偶校验来重建故障存储设备上的数据以及RAID阵列的剩余存储设备上的数据。
当已经分配备用容量并且利用RAID阵列的丢失数据重建备用容量时(框404中的肯定确定),可以使用备用容量来执行写入操作(框405)。在一些实施例中,在接收到用户I/O写入请求时(在框400中),重建过程可以处于其中丢失数据的部分已被复制或以其他方式重构并且在备用容量上重新填充的中间阶段。在这种情况下,与接收到的用户I/O写入请求相关联的给定数据块的“工作区域”可能已经在备用容量上重建,在这种情况下,可以使用备用容量来执行写入操作(框405)。另一方面,与接收到的用户I/O写入请求相关联的给定数据块的“工作区域”可能还没有被在备用容量上重建。在这种情况下,尽管备用容量可以被分配并且可用,但是备用容量可以仅被部分重建,并且尚不具有与接收到的用户I/O写入请求相关联的重建数据和相关联的元数据(导致在框404中的否定确定)。
当确定已经分配备用容量但还没有被在备用容量上重建与I/O写入请求相关联的数据时(框404中的否定确定),当服务请求时,RAID阵列控制模块170可以请求访问备用容量并且等待使用备用容量执行写入操作(框406)。如果等待的延时超过预定延时阈值(框407中的肯定确定),则RAID控制模块170将继续执行降级写入操作(框408)。另一方面,如果确定I/O请求由或可以由具有不超过延时阈值的延时服务(框407中的否定确定),则使用备用容量来执行写入操作。
在一些实施例中,不实现框406和407的过程流。例如,如果备用容量还没有被分配或以其他方式不可用,则RAID控制模块170将继续执行降级写入操作(框408),如图4A中从框404到框408的虚线所示。在其他实施例中,当RAID阵列包括RAID 1镜像配置时,如果已经分配备用容量,但与I/O写入请求相关联的数据还没有被在备用容量上重建(导致在框404中的否定确定),则RAID阵列控制模块170将继续执行降级写入操作(框408)。该备选过程流由图4A中从框404到框408的虚线表示。该备选流程基于将RAID 1阵列配置的延时阈值设置为零“0”,因为对于RAID 1镜像配置,不存在与执行降级写入操作相关联的延时。
实际上,对于RAID 1配置,与执行降级写入操作(框408)相比,通过等待重建操作(在框406中)来使用备用容量执行写入操作(框405)没有获得I/O性能优势。具体而言,对于RAID 1配置,不能通过避免针对给定数据块的降级写入操作来实现性能优势,因为与基于奇偶校验的RAID配置不同,对于给定数据块的后续读取操作不需要执行奇偶校验和/或数据计算来读取使用降级写入而先前写入到RAID 1阵列的给定数据块。实际上,从RAID 1阵列读取数据块的后续操作只需要直接从主存储设备或镜像存储设备读取数据。
在这种情况下,对于RAID 1阵列配置,与等待利用备用容量来完成用户I/O写入请求相反,RAID控制模块170将继续执行降级写入操作(框408),从而以最小延时服务于用户I/O写入请求。最终,与降级写入操作相关联的I/O写数据将在后台重建过程期间使用RAID重建I/O写入操作写入到备用容量。
另一方面,在实现基于奇偶校验的RAID阵列配置的实施例中(例如,RAID 6配置300,图3),可以执行框406和407的过程流以增强执行用户I/O写入请求的性能。例如,可能存在与使用备用容量执行写入操作相关联的延时大于与执行降级写入操作相关联的延时的情况。在这种情况下,当等待备用容量并且使用备用容量执行写入操作的延时大于执行降级写入操作的延时时(框407中的肯定确定),执行降级写入操作(框408)以服务于用户I/O写入请求。在这种情况下,与降级写入操作相关联的I/O写数据将在后台重建过程期间使用RAID重建I/O写入操作写入到备用容量。
另一方面,可能存在与使用备用容量执行写入操作相关联的延时小于或基本上等于与执行降级写入操作相关联的延时的情况。在这种情况下,当确定等待备用容量并且使用备用容量执行写入操作的延时没有超过执行降级写入操作的延时时(框407中的否定确定),将通过使用备用容量执行写入操作来服务用户I/O写入请求(框405)。
在一些实施例中,针对判定框407的确定过程实现的延时阈值可以是预定的超时值或动态分配的超时值,该超时值被调整以考虑到后台RAID阵列重建过程的总体系统性能和不同的节流率。此外,在一些实施例中,取决于应用,延时阈值可以至少部分地基于为基于奇偶校验的RAID配置中的后续读取操作实现的性能优势来确定,该性能优势是通过等待重建操作(在框406中)并且使用具有备用容量的RAID阵列执行写入操作(框405)来获得的。
实际上,当使用备用容量对给定数据块执行I/O写入操作时(框405),实现了关于给定数据块的后续I/O读取请求的性能优势,因为可以从RAID阵列(例如,使用备用容量)读取数据块,而不必执行作为I/O读取操作的部分所需的数据/奇偶计算以重构丢失数据块。相反,如果使用降级写入操作将数据写入RAID阵列(框408),则读取这种数据的后续I/O读取操作可能需要(i)从RAID阵列的现有存储设备读取相关联的数据条和/或奇偶校验块,以及(ii)执行使用数据条和奇偶校验数据重构丢失数据所需的计算。因此,使用降级写入操作将数据写入RAID阵列导致对数据的后续读取操作的I/O性能降低,这是由于与必须读取现有数据条和奇偶校验并且根据需要执行重建丢失数据所需的计算相关联的延时增加。
回到判定框403,如果确定RAID阵列的剩余弹性不足以提供期望的容错等级(框403中的否定确定),则过程流前进到图4B的框409,其中确定是否已经分配备用容量并且利用RAID阵列的丢失数据重建备用容量(判定框409)。在一些实施例中,如上所述,当RAID阵列的并发存在故障的数目(f)等于RAID阵列在不丢失数据的情况下能够处理的并发存在故障的最大数目(F)时(即,当f=F时),则认为RAID阵列的剩余弹性不足。在其他实施例中,当RAID阵列的并发存在故障数目(f)小于RAID阵列在不丢失数据的情况下能够处理的并发故障的最大数目(F)时,例如当f=F-1、f=F-2时,可以认为RAID阵列的剩余弹性不足,这取决于例如为给定存储系统指定的弹性阈值(fThreshold)。
如果确定已经分配备用容量并且利用RAID阵列的丢失数据重建备用容量(框409中的肯定确定),则可以通过使用备用容量执行对RAID阵列的写入操作来服务未决的用户I/O写入请求(框410)。当确定已经分配备用容量但还没有被在备用容量上重建与I/O写入请求相关联的数据时(框409中的否定确定),当服务请求时,RAID阵列控制模块170将请求访问备用容量并等待使用备用容量执行写入操作(框411)。在这种情况下,假设认为剩余弹性不足,则通过等待使用备用容量执行对RAID阵列的写入操作,RAID控制模块170将继续以I/O写入性能为代价来最大化容错和冗余,而无论延时如何。在一些实施例中,如果确定(在框409中)备用容量还没有被分配或以其他方式不可用,则RAID控制模块170将继续执行降级写入操作(框413),如图4A中从框404到框408的虚线所示。
当RAID控制模块170等待对备用容量的访问(在框411中)以执行针对未决用户I/O写入请求的写入操作时,如果确定备用容量已经耗尽(框412中的肯定确定),则RAID控制模块170将继续执行降级写入操作(框413)。另一方面,如果给予RAID控制模块170使用备用容量执行写入操作的访问权,并且备用容量还没有被耗尽(框412中的否定判定),则RAID控制模块170将继续通过使用备用容量对RAID阵列执行写入操作来服务未决的用户I/O写入请求(框410)。
应当理解,图4A和图4B的过程流涉及为处理用户I/O写入请求而执行的处理。在后台RAID重建过程期间,作为重建过程的部分,RAID控制模块将执行RAID重建I/O读和写入操作,以例如重构与备用容量上的RAID阵列相关联的一个或多个故障存储设备或存储节点的丢失数据。在这方面,如上所述,在执行后台RAID重建过程期间,管理层可以将I/O请求之间的I/O带宽分配给备用容量,并且将I/O请求重建到备用容量。
此外,如上所述,当RAID存储系统在降级模式中操作时,在确定是通过执行降级写入操作还是通过写入备用容量来处理RAID存储系统中的用户I/O写入请求时考虑了各种因素(例如,现有故障的数目、延时等)。这样的确定是为了在以下情况下在降级模式中操作的RAID数据存储系统中的容错和I/O性能之间取得平衡:当存在相对较少数目的现有故障时,可以容忍降级写入操作,直到后台重建操作用丢失数据重新填充备用容量;以及当存在相对大量现有故障而具有最小容错或没有容错时的其他情况下,其中系统应当以I/O性能为代价最大化冗余。虽然传统的RAID系统通常在备用容量可用时使用备用容量来处理用户I/O写入请求,但在降级写入操作与等待写入备用容量相比提供更好的I/O性能的情况下,即使在备用容量仍然可用的情况下,本文讨论的本公开的实施例也将选择性地利用降级写入操作来处理用户I/O写入请求。
图5示意性地示出了根据本公开的示例性实施例,用于实现存储节点(例如,存储节点140,图1A和1B)的服务器节点500的框架。服务器节点500包括处理器502、存储接口电路504、网络接口电路506、虚拟化资源508、系统存储器510和存储资源516。系统存储器510包括易失性存储器512和非易失性存储器514。处理器502包括被配置为处理程序指令和数据以执行在服务器节点500上运行的本机操作系统(OS)和应用的一种或多种类型的硬件处理器。
例如,处理器502可以包括一个或多个CPU、微处理器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)和其他类型的处理器,以及这些处理器的部分或组合。本文所使用的术语“处理器”被广义地解释为包括基于软件、硬件、固件等执行处理功能的任何类型的处理器。例如,“处理器”被广义地解释为包括所有类型的硬件处理器,包括例如(i)包括“性能核”(例如,低延时核)的通用处理器,和(ii)工作负载优化的处理器,其包括多个“吞吐量核”和/或多个基于硬件的加速器的任何可能的组合。工作负载优化的处理器的示例包括例如,图形处理单元(GPU)、数字信号处理器(DSP)、片上系统(SoC)、张量处理单元(TPU)、图像处理单元(IPU)、深度学习加速器(DLA)、人工智能(AI)加速器以及被配置为执行一个或多个固定功能的其他类型的专用处理器或协处理器。
存储接口电路504使处理器502能够使用一个或多个标准通信和/或存储控制协议从易失性和非易失性存储器/存储设备读取数据或向其写入数据,从而与系统存储器510、存储资源516和其他本地存储和非基础设施存储介质接口和通信。这样的协议包括但不限于,非易失性存储器快速(NVMe)、外围组件互连快速(PCIe)、并行ATA(PATA)、串行ATA(SATA)、串行附接SCSI(SAS)、光纤信道等。网络接口电路506使服务器节点500能够与网络和其他系统组件接口和通信。网络接口电路506包括诸如网卡和资源的网络控制器(例如,网络接口控制器(NIC)(例如,SmartNIC、支持RDMA的NIC)、主机总线适配器(HBA)卡、主机信道适配器(HCA)卡、I/O适配器、融合以太网适配器等),以支持通信协议和接口,包括但不限于,PCIe、DMA和RDMA数据传输协议等。
可以实例化虚拟化资源508以执行由服务器节点500托管的一个或多个服务或功能。例如,虚拟化资源508可以被配置为实现本文讨论的存储控制系统150(图1B)的各种模块和功能。在一个实施例中,虚拟化资源508包括使用在服务器节点500上执行的管理程序平台实现的虚拟机,其中一个或多个虚拟机可以被实例化以执行服务器节点500的功能。如本领域公知的,虚拟机是可以在一个或多个物理处理元件(例如,服务器、计算机或其他处理设备)上实例化的逻辑处理元件。也就是说,“虚拟机”通常指的是以与物理机器类似的方式执行程序的机器(即计算机)的软件实现。因此,不同的虚拟机可以在同一物理计算机上运行不同的操作系统和多个应用。
管理程序是更普遍地称为“虚拟化基础设施”的示例。管理程序运行在服务器节点500的物理基础设施上,例如CPU和/或存储设备,并模拟主机系统的CPU、存储器、硬盘、网络和其他硬件资源,使得多个虚拟机能够共享资源。管理程序可以模拟彼此隔离的多个虚拟硬件平台,从而允许虚拟机在同一底层物理主机上运行例如Linux和Windows服务器操作系统。底层物理基础设施可以包括适合于目标应用的一个或多个商业上可用的分布式处理平台。
在另一实施例中,虚拟化资源508包括诸如Docker容器或其他类型的Linux容器(LXC)的容器。如本领域已知的,在基于容器的应用框架中,每个应用容器包括分离的应用和相关联的依赖项以及其他组件以提供完整的文件系统,但是与其他应用容器共享主机操作系统的内核功能。每个应用容器作为隔离进程在主机操作系统的用户空间中执行。具体而言,容器系统利用底层操作系统,该操作系统使用用于隔离的虚拟存储器支持向所有容器化应用提供基本服务。一个或多个容器可以被实例化以执行服务器节点500的一个或多个应用或功能,以及执行本文讨论的存储控制系统150的各种模块和功能中的一个或多个。在又一实施例中,容器可以与诸如使用管理程序实现的虚拟机的其他虚拟化基础设施组合使用,其中Docker容器或其他类型的LXC被配置为在多租户环境中的虚拟机上运行。
存储控制系统、快照管理系统和数据备份管理系统的各种组件包括加载到系统存储器510(例如,易失性存储器512)中并且由处理器502执行以执行本文描述的相应功能的程序代码。在这方面,系统存储器510、存储资源516以及在其上有形地包含程序代码和数据的本文描述的其他存储器或存储资源是本文更一般地称为“处理器可读存储介质”的示例,其存储一个或多个软件程序的可执行程序代码。包括这种处理器可读存储介质的制品被认为是本公开的实施例。制品可以包括例如存储设备,诸如存储盘、存储阵列或包含存储器的集成电路。本文所使用的术语“制品”应被理解为不包括瞬时传播信号。
系统存储器510包括各种类型的存储器,例如易失性RAM、NVRAM或其他类型的存储器,以任何组合的形式。易失性存储器512可以是动态随机存取存储器(DRAM)(例如,DRAMDIMM(双列直插式存储器模块))或其他形式的易失性RAM。非易失性存储器514可以包括NAND闪存存储设备、SSD设备或其他类型的下一代非易失性存储器(NGNVM)设备中的一个或多个。可以使用分层存储器层结构来实现系统存储器510,其中易失性系统存储器512被配置为最高等级存储器层,并且非易失性系统存储器514(以及包括存储类存储器的其他附加非易失性存储器设备)被配置为较低等级存储器层,其被用作处理器存储器总线上的高速加载/存储非易失性存储器设备(即,通过加载和存储来访问数据,而不是通过I/O读和写来访问数据)。本文所使用的术语“存储器”或“系统存储器”指的是易失性和/或非易失性存储器,其用于存储由处理器502读取和处理的应用程序指令,以执行由服务器节点500托管的本机操作系统和一个或多个应用或进程,并且临时存储由本机OS和在服务器节点500上运行的应用程序和进程使用和/或生成的数据。存储资源516可以包括一个或多个HDD、SSD存储设备等。
应当理解,本公开的上述实施例仅出于说明目的而呈现。在所示的特殊安排中,可以做出许多变化。例如,尽管在特定系统和设备配置的上下文中进行了描述,但是这些技术可以应用于各种其他类型的信息处理系统、计算系统、数据存储系统、处理设备和分布式虚拟基础设施布置。此外,上面在描述说明性实施例的过程中做出的任何简化假设也应该被视为示例性的,而不是被视为此类实施例的要求或限制。在所附权利要求的范围内的许多其他备选实施例对于本领域的技术人员将是清楚的。
Claims (20)
1.一种方法,包括:
由存储控制系统接收用户输入/输出(I/O)写入请求,所述用户输入/输出(I/O)写入请求包括要被写入由所述存储控制系统管理的RAID(独立驱动器冗余阵列)阵列的数据,所述RAID阵列包括多个存储设备;
由所述存储控制系统确定所述RAID阵列是否在降级模式中操作,在所述降级模式中所述RAID阵列的所述多个存储设备中的至少一个存储设备由于故障而不可访问,并且响应于确定所述RAID阵列在降级模式中操作,则:
由所述存储控制系统确定(i)备用容量是否已经被分配给所述RAID阵列以用于重建所述RAID阵列的至少一个不可访问的存储设备的丢失数据,以及(ii)与所述I/O写入请求的所述数据相关联的丢失数据块是否已经被重建到所分配的所述备用容量;以及
响应于确定所述备用容量已经被分配给所述RAID阵列,但是与所述I/O写入请求的所述数据相关联的所述丢失数据块还没有被重建到所分配的所述备用容量,由所述存储控制系统通过使用所述RAID阵列的所述多个存储设备中的剩余存储设备来执行降级写入操作来处理所述用户I/O写入请求,而不使用所述备用容量。
2.根据权利要求1所述的方法,其中响应于确定所述RAID阵列在降级模式中操作,所述方法还包括:
由所述存储控制系统确定所述RAID阵列的剩余弹性等级是否足以针对所述RAID阵列的所述剩余存储设备的至少一个附加故障提供容错;
响应于确定所述RAID阵列的所述剩余弹性等级足以针对所述RAID阵列的剩余存储设备的至少一个附加故障提供容错,由所述存储控制系统使用所述RAID阵列的所述多个存储设备中的所述剩余存储设备来执行所述降级写入操作,而不使用所分配的所述备用容量;以及
响应于确定所述RAID阵列的所述剩余弹性等级不足以针对所述RAID阵列的所述剩余存储设备的至少一个附加故障提供容错,由所述存储控制系统通过使用所分配的所述备用容量和所述RAID阵列的所述剩余存储设备来执行写入操作,来处理所述用户I/O写入请求。
3.根据权利要求2所述的方法,其中确定所述RAID阵列的剩余弹性等级是否足以针对所述RAID阵列的所述剩余存储设备的至少一个附加故障提供容错包括:
由所述存储控制系统确定所述RAID阵列中当前不可访问的存储设备的数目;
响应于确定当前不可访问的存储设备的所述数目小于所述RAID阵列被配置为处理以提供容错的存储设备故障的最大数目,由所述存储控制系统确定所述RAID阵列的所述剩余弹性等级足够;以及
响应于确定当前不可访问的存储设备的所述数目等于所述RAID阵列被配置为处理以提供容错的存储设备故障的所述最大数目,由所述存储控制系统确定所述RAID阵列的所述剩余弹性等级不足。
4.根据权利要求3所述的方法,其中所述RAID阵列被配置为针对不少于两个存储设备故障提供容错。
5.根据权利要求2所述的方法,其中确定所述RAID阵列的剩余弹性等级是否足以针对所述RAID阵列的所述剩余存储设备的至少一个附加故障提供容错包括:
由所述存储控制系统确定所述RAID阵列中当前不可访问的存储设备的数目;
响应于确定当前不可访问的存储设备的所述数目小于弹性阈值,由所述存储控制系统确定所述RAID阵列的所述剩余弹性等级足够,其中所述弹性阈值小于所述RAID阵列被配置为处理以提供容错的存储设备故障的最大数目;以及
响应于确定当前不可访问的存储设备的所述数目等于或大于所述弹性阈值,由所述存储控制系统确定所述RAID阵列的所述剩余弹性等级不足。
6.根据权利要求1所述的方法,其中通过使用所述RAID阵列的所述多个存储设备中的所述剩余存储设备来执行所述降级写入操作来处理所述用户I/O写入请求,而不使用所述备用容量,是响应于确定以下项而被执行的:(i)所述备用容量已经被分配给所述RAID阵列,但与所述I/O写入请求的所述数据相关联的所述丢失数据块还没有被重建到所分配的所述备用容量,以及(ii)执行所述降级写入操作的延时小于与等待所述备用容量的可用性以处理所述I/O写入请求相关联的延时。
7.根据权利要求1所述的方法,其中响应于确定所述RAID阵列在降级模式中操作,所述方法还包括:
由所述存储控制系统请求访问所分配的所述备用容量,以处理所述用户I/O写入请求;以及
响应于访问所分配的所述备用容量的所述请求在指定时间段的期满之前被服务,由所述存储控制系统使用所分配的所述备用容量和所述RAID阵列的所述多个存储设备中的所述剩余存储设备来执行写入操作;
其中当访问所分配的所述备用容量的所述请求在所述指定时间段的所述期满之前没有被服务时,所述存储控制系统使用所述RAID阵列的所述多个存储设备中的所述剩余存储设备来执行所述降级写入操作,而不使用所分配的所述备用容量。
8.根据权利要求1所述的方法,其中所述RAID阵列配置包括RAID等级1配置,所述RAID等级1配置具有针对所述RAID阵列的所述多个存储设备中的不少于两个存储设备故障的容错。
9.根据权利要求1所述的方法,其中所述RAID阵列配置包括基于奇偶校验的RAID配置,所述基于奇偶校验的RAID配置具有针对所述RAID阵列的所述多个存储设备中的不少于两个存储设备故障的容错。
10.一种包括非瞬态处理器可读存储介质的制品,所述非瞬态处理器可读存储介质具有存储在其中的一个或多个软件程序的程序代码,其中所述程序代码是一个或多个处理器可执行的,以实现方法,所述方法包括:
由存储控制系统接收用户输入/输出(I/O)写入请求,所述用户输入/输出(I/O)写入请求包括要被写入由所述存储控制系统管理的RAID(独立驱动器冗余阵列)阵列的数据,所述RAID阵列包括多个存储设备;
由所述存储控制系统确定所述RAID阵列是否在降级模式中操作,在所述降级模式中所述RAID阵列的所述多个存储设备中的至少一个存储设备由于故障而不可访问,并且响应于确定所述RAID阵列在降级模式中操作,则:
由所述存储控制系统确定(i)备用容量是否已经被分配给所述RAID阵列以用于重建所述RAID阵列的至少一个不可访问的存储设备的丢失数据,以及(ii)与所述I/O写入请求的所述数据相关联的丢失数据块是否已经被重建到所分配的所述备用容量;以及
响应于确定所述备用容量已经被分配给所述RAID阵列,但是与所述I/O写入请求的所述数据相关联的所述丢失数据块还没有被重建到所分配的所述备用容量,由所述存储控制系统通过使用所述RAID阵列的所述多个存储设备中的剩余存储设备来执行降级写入操作来处理所述用户I/O写入请求,而不使用所述备用容量。
11.根据权利要求10所述的制品,其中响应于确定所述RAID阵列在降级模式中操作,所述方法还包括:
由所述存储控制系统确定所述RAID阵列的剩余弹性等级是否足以针对所述RAID阵列的所述剩余存储设备的至少一个附加故障提供容错;
响应于确定所述RAID阵列的所述剩余弹性等级足以针对所述RAID阵列的剩余存储设备的至少一个附加故障提供容错,由所述存储控制系统使用所述RAID阵列的所述多个存储设备中的所述剩余存储设备来执行所述降级写入操作,而不使用所分配的所述备用容量;以及
响应于确定所述RAID阵列的所述剩余弹性等级不足以针对所述RAID阵列的所述剩余存储设备的至少一个附加故障提供容错,由所述存储控制系统通过使用所分配的所述备用容量和所述RAID阵列的所述剩余存储设备来执行写入操作,来处理所述用户I/O写入请求。
12.根据权利要求11所述的制品,其中确定所述RAID阵列的剩余弹性等级是否足以针对所述RAID阵列的所述剩余存储设备的至少一个附加故障提供容错包括:
由所述存储控制系统确定所述RAID阵列中当前不可访问的存储设备的数目;
响应于确定当前不可访问的存储设备的所述数目小于所述RAID阵列被配置为处理以提供容错的存储设备故障的最大数目,由所述存储控制系统确定所述RAID阵列的所述剩余弹性等级足够;以及
响应于确定当前不可访问的存储设备的所述数目等于所述RAID阵列被配置为处理以提供容错的存储设备故障的所述最大数目,由所述存储控制系统确定所述RAID阵列的所述剩余弹性等级不足。
13.根据权利要求11所述的制品,其中确定所述RAID阵列的剩余弹性等级是否足以针对所述RAID阵列的剩余存储设备的至少一个附加故障提供容错包括:
由所述存储控制系统确定所述RAID阵列中当前不可访问的存储设备的数目;
响应于确定当前不可访问的存储设备的所述数目小于弹性阈值,由所述存储控制系统确定所述RAID阵列的所述剩余弹性等级足够,其中所述弹性阈值小于所述RAID阵列被配置为处理以提供容错的存储设备故障的最大数目;以及
响应于确定当前不可访问的存储设备的所述数目等于或大于所述弹性阈值,由所述存储控制系统确定所述RAID阵列的所述剩余弹性等级不足。
14.根据权利要求10所述的制品,其中通过使用所述RAID阵列的所述多个存储设备中的所述剩余存储设备来执行所述降级写入操作来处理所述用户I/O写入请求,而不使用所述备用容量,是响应于确定以下项而被执行的:(i)所述备用容量已经被分配给所述RAID阵列,但与所述I/O写入请求的数据相关联的所述丢失数据块还没有被重建到所分配的所述备用容量,以及(ii)执行所述降级写入操作的延时小于与等待所述备用容量的可用性以处理所述I/O写入请求相关联的延时。
15.根据权利要求10所述的制品,其中响应于确定所述RAID阵列在降级模式中操作,所述方法还包括:
由所述存储控制系统请求访问所分配的所述备用容量,以处理所述用户I/O写入请求;以及
响应于访问所分配的所述备用容量的所述请求在指定时间段的期满之前被服务,由所述存储控制系统使用所分配的所述备用容量和所述RAID阵列的所述多个存储设备中的所述剩余存储设备来执行写入操作;
其中当访问所分配的所述备用容量的所述请求在所述指定时间段的所述期满之前没有被服务时,所述存储控制系统使用所述RAID阵列的所述多个存储设备中的所述剩余存储设备来执行所述降级写入操作,而不使用所分配的所述备用容量。
16.一种系统,包括:
至少一个处理器;以及
系统存储器,被配置为存储程序代码,其中所述程序代码由所述至少一个处理器可执行,以实现存储控制系统,所述存储控制系统被配置为:
接收用户输入/输出(I/O)写入请求,所述用户输入/输出(I/O)写入请求包括要被写入由所述存储控制系统管理的RAID(独立驱动器冗余阵列)阵列的数据,所述RAID阵列包括多个存储设备;
确定所述RAID阵列是否在降级模式中操作,在所述降级模式中所述RAID阵列的所述多个存储设备中的至少一个存储设备由于故障而不可访问,并且响应于确定所述RAID阵列在降级模式中操作,则:
确定(i)备用容量是否已经被分配给向所述RAID阵列以用于重建所述RAID阵列的至少一个不可访问的存储设备的丢失数据,以及(ii)与所述I/O写入请求的所述数据相关联的丢失数据块是否已经被重建到所分配的所述备用容量;以及
响应于确定所述备用容量已经被分配给所述RAID阵列,但是与所述I/O写入请求的所述数据相关联的所述丢失数据块还没有被重建到所分配的所述备用容量,通过使用所述RAID阵列的所述多个存储设备中的剩余存储设备来执行降级写入操作来处理所述用户I/O写入请求,而不使用所述备用容量。
17.根据权利要求16所述的系统,其中响应于确定所述RAID阵列在降级模式中操作,所述存储控制系统被配置为:
确定所述RAID阵列的剩余弹性等级是否足以针对所述RAID阵列的所述剩余存储设备的至少一个附加故障提供容错;
响应于确定所述RAID阵列的所述剩余弹性等级足以针对所述RAID阵列的剩余存储设备的至少一个附加故障提供容错,使用所述RAID阵列的所述多个存储设备中的所述剩余存储设备来执行所述降级写入操作,而不使用所分配的所述备用容量;以及
响应于确定所述RAID阵列的所述剩余弹性等级不足以针对所述RAID阵列的所述剩余存储设备的至少一个附加故障提供容错,通过使用所分配的所述备用容量和所述RAID阵列的所述剩余存储设备来执行写入操作,来处理所述用户I/O写入请求。
18.根据权利要求16所述的系统,其中在确定所述RAID阵列的剩余弹性等级是否足以针对所述RAID阵列的所述剩余存储设备的至少一个附加故障提供容错时,所述存储控制系统被配置为:
确定所述RAID阵列中当前不可访问的存储设备的数目;
响应于确定当前不可访问的存储设备的所述数目小于所述RAID阵列被配置为处理以提供容错的存储设备故障的最大数目,确定所述RAID阵列的所述剩余弹性等级足够;以及
响应于确定当前不可访问的存储设备的所述数目等于所述RAID阵列被配置为处理以提供容错的存储设备故障的所述最大数目,确定所述RAID阵列的所述剩余弹性等级不足。
19.根据权利要求16所述的系统,其中通过使用所述RAID阵列的所述多个存储设备中的所述剩余存储设备来执行所述降级写入操作来处理所述用户I/O写入请求,而不使用所述备用容量,是响应于所述存储控制系统确定以下项而被执行的:(i)所述备用容量已经被分配给所述RAID阵列,但与所述I/O写入请求的所述数据相关联的所述丢失数据块还没有被重建到所分配的所述备用容量,以及(ii)执行所述降级写入操作的延时小于与等待所述备用容量的可用性以处理所述I/O写入请求相关联的延时。
20.根据权利要求16所述的系统,其中响应于确定所述RAID阵列在降级模式中操作,所述存储控制系统被配置为:
请求访问所分配的所述备用容量,以处理所述用户I/O写入请求;以及
响应于访问所分配的所述备用容量的所述请求在指定时间段的期满之前被服务,使用所分配的所述备用容量和所述RAID阵列的所述多个存储设备中的所述剩余存储设备来执行写入操作;
其中当访问所分配的所述备用容量的所述请求在所述指定时间段的期满之前没有被服务时,所述存储控制系统使用所述RAID阵列的所述多个存储设备中的所述剩余存储设备来执行所述降级写入操作,而不使用所分配的所述备用容量。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/888,742 | 2020-05-31 | ||
US16/888,742 US11301162B2 (en) | 2020-05-31 | 2020-05-31 | Balancing resiliency and performance by selective use of degraded writes and spare capacity in storage systems |
PCT/US2021/029397 WO2021247166A1 (en) | 2020-05-31 | 2021-04-27 | Balancing resiliency and performance by selective use of degraded writes and spare capacity in storage systems |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116134424A true CN116134424A (zh) | 2023-05-16 |
Family
ID=75977813
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180058921.1A Pending CN116134424A (zh) | 2020-05-31 | 2021-04-27 | 通过在存储系统中选择性使用降级写入和备用容量来平衡弹性和性能 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11301162B2 (zh) |
CN (1) | CN116134424A (zh) |
DE (1) | DE112021003061T5 (zh) |
WO (1) | WO2021247166A1 (zh) |
Families Citing this family (11)
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 |
US11630773B1 (en) | 2022-01-05 | 2023-04-18 | Dell Products L.P. | Utilizing a persistent write cache as a redo log |
US11842051B2 (en) | 2022-01-25 | 2023-12-12 | Dell Products L.P. | Intelligent defragmentation in a storage system |
US11789917B2 (en) | 2022-01-25 | 2023-10-17 | Dell Products L.P. | Data deduplication in a storage system |
US11868248B2 (en) | 2022-02-25 | 2024-01-09 | Dell Products L.P. | Optimization for garbage collection in a storage system |
US11704053B1 (en) | 2022-04-06 | 2023-07-18 | Dell Products L.P. | Optimization for direct writes to raid stripes |
US11960481B2 (en) | 2022-06-29 | 2024-04-16 | Dell Products L.P. | Managing lookup operations of a metadata structure for a storage system |
US11971825B2 (en) | 2022-07-14 | 2024-04-30 | Dell Products L.P. | Managing granularity of a metadata structure for a storage system |
US11921714B2 (en) | 2022-07-19 | 2024-03-05 | Dell Products L.P. | Managing insert operations of a metadata structure for a storage system |
CN116302673B (zh) * | 2023-05-26 | 2023-08-22 | 四川省华存智谷科技有限责任公司 | 一种提高Ceph存储系统数据恢复速率的方法 |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5381539A (en) | 1992-06-04 | 1995-01-10 | Emc Corporation | System and method for dynamically controlling cache management |
US5416915A (en) | 1992-12-11 | 1995-05-16 | International Business Machines Corporation | Method and system for minimizing seek affinity and enhancing write sensitivity in a DASD array |
US5764880A (en) | 1996-09-10 | 1998-06-09 | International Business Machines Corporation | Method and system for rebuilding log-structured arrays |
US6052799A (en) | 1998-05-15 | 2000-04-18 | International Business Machines Corporation | System and method for recovering a directory for a log structured array |
US6256705B1 (en) | 1998-06-05 | 2001-07-03 | International Business Machines Corporation | System and method for organizing data stored in a log structured array |
US6647514B1 (en) * | 2000-03-23 | 2003-11-11 | Hewlett-Packard Development Company, L.P. | Host I/O performance and availability of a storage array during rebuild by prioritizing I/O request |
GB0104469D0 (en) | 2001-02-23 | 2001-04-11 | Ibm | Log-structured array |
US7305579B2 (en) * | 2005-03-22 | 2007-12-04 | Xiotech Corporation | Method, apparatus and program storage device for providing intelligent rebuild order selection |
US7908236B2 (en) | 2006-07-20 | 2011-03-15 | International Business Machines Corporation | Using multiple data structures to manage data in cache |
US8326897B2 (en) | 2007-12-19 | 2012-12-04 | International Business Machines Corporation | Apparatus and method for managing data storage |
US8364900B2 (en) | 2008-02-12 | 2013-01-29 | Oracle America, Inc. | Pseudo-LRU cache line replacement for a high-speed cache |
WO2013024485A2 (en) | 2011-08-17 | 2013-02-21 | Scaleio Inc. | Methods and systems of managing a distributed replica based storage |
US8751861B2 (en) * | 2012-02-08 | 2014-06-10 | Lsi Corporation | System and method for improved rebuild in RAID |
US8843676B2 (en) | 2012-06-27 | 2014-09-23 | International Business Machines Corporation | Optimizing an operating system I/O operation that pertains to a specific program and file |
US9372751B2 (en) | 2012-09-06 | 2016-06-21 | International Business Machines Corporation | Free space collection in log structured storage systems |
US20140215147A1 (en) * | 2013-01-25 | 2014-07-31 | Hewlett-Packard Development Company, L.P. | Raid storage rebuild processing |
CN103970481B (zh) | 2013-01-29 | 2017-03-01 | 国际商业机器公司 | 重建存储器阵列的方法和装置 |
US9454434B2 (en) | 2014-01-17 | 2016-09-27 | Netapp, Inc. | File system driven raid rebuild technique |
US9460025B1 (en) | 2014-06-12 | 2016-10-04 | Emc Corporation | Maintaining a separate LRU linked list for each thread for multi-threaded access |
US9753853B2 (en) | 2014-10-09 | 2017-09-05 | Netapp, Inc. | Methods and systems for cache management in storage systems |
US9892045B1 (en) | 2015-01-30 | 2018-02-13 | EMC IP Holding Company LLC | Methods to select segments of an evicted cache unit for reinsertion into the cache |
US10331561B1 (en) | 2016-06-29 | 2019-06-25 | Emc Corporation | Systems and methods for rebuilding a cache index |
US10007459B2 (en) | 2016-10-20 | 2018-06-26 | Pure Storage, Inc. | Performance tuning in a storage system that includes one or more storage devices |
US10235283B2 (en) | 2017-03-14 | 2019-03-19 | International Business Machines Corporation | Techniques for supporting in-place updates with a log-structured array controller |
US10664367B2 (en) | 2017-11-30 | 2020-05-26 | International Business Machines Corporation | Shared storage parity on RAID |
US10891162B2 (en) | 2018-01-25 | 2021-01-12 | Vmware, Inc | Methods and apparatus to improve external resource allocation for hyper-converged infrastructures based on costs analysis |
CN111104244B (zh) | 2018-10-29 | 2023-08-29 | 伊姆西Ip控股有限责任公司 | 用于在存储阵列组中重建数据的方法和设备 |
-
2020
- 2020-05-31 US US16/888,742 patent/US11301162B2/en active Active
-
2021
- 2021-04-27 DE DE112021003061.2T patent/DE112021003061T5/de active Pending
- 2021-04-27 CN CN202180058921.1A patent/CN116134424A/zh active Pending
- 2021-04-27 WO PCT/US2021/029397 patent/WO2021247166A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
US20210373796A1 (en) | 2021-12-02 |
US11301162B2 (en) | 2022-04-12 |
DE112021003061T5 (de) | 2023-04-20 |
WO2021247166A1 (en) | 2021-12-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11301162B2 (en) | Balancing resiliency and performance by selective use of degraded writes and spare capacity in storage systems | |
US11144399B1 (en) | Managing storage device errors during processing of inflight input/output requests | |
US7725768B1 (en) | System and method for handling a storage resource error condition based on priority information | |
US8694724B1 (en) | Managing data storage by provisioning cache as a virtual device | |
US20190235777A1 (en) | Redundant storage system | |
US11262933B2 (en) | Sharing memory resources between asynchronous replication workloads | |
US20150268883A1 (en) | Managing metadata and data for a logical volume in a distributed and declustered system | |
US11853587B2 (en) | Data storage system with configurable durability | |
US10782898B2 (en) | Data storage system, load rebalancing method thereof and access control method thereof | |
US10318393B2 (en) | Hyperconverged infrastructure supporting storage and compute capabilities | |
US20170220249A1 (en) | Systems and Methods to Maintain Consistent High Availability and Performance in Storage Area Networks | |
CN111587420A (zh) | 分布式存储系统快速故障恢复的方法和系统 | |
US11487432B2 (en) | Direct response to IO request in storage system with remote replication | |
US11809720B2 (en) | Techniques for storage management | |
US20210303178A1 (en) | Distributed storage system and storage control method | |
JP2023099186A (ja) | 複数の故障ドメインに及ぶストレージシステム | |
US11740823B2 (en) | Storage system and storage control method | |
US11842051B2 (en) | Intelligent defragmentation in a storage system | |
US11733874B2 (en) | Managing replication journal in a distributed replication system | |
US11650920B1 (en) | Write cache management | |
US11809274B2 (en) | Recovery from partial device error in data storage system | |
US8756370B1 (en) | Non-disruptive drive firmware upgrades | |
US11966294B2 (en) | Journal barrier consistency determination | |
US20240134799A1 (en) | Multiple-instance write cache for a storage system | |
US11537312B2 (en) | Maintaining replication consistency during distribution instance changes |
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 |