CN111124251B - 用于i/o控制的方法、装置以及计算机可读介质 - Google Patents

用于i/o控制的方法、装置以及计算机可读介质 Download PDF

Info

Publication number
CN111124251B
CN111124251B CN201811280028.XA CN201811280028A CN111124251B CN 111124251 B CN111124251 B CN 111124251B CN 201811280028 A CN201811280028 A CN 201811280028A CN 111124251 B CN111124251 B CN 111124251B
Authority
CN
China
Prior art keywords
information bits
disk
write request
request
stripe
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811280028.XA
Other languages
English (en)
Other versions
CN111124251A (zh
Inventor
韩耕
康剑斌
董继炳
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.)
EMC Corp
Original Assignee
EMC IP Holding Co LLC
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 EMC IP Holding Co LLC filed Critical EMC IP Holding Co LLC
Priority to CN201811280028.XA priority Critical patent/CN111124251B/zh
Priority to US16/587,970 priority patent/US11507461B2/en
Publication of CN111124251A publication Critical patent/CN111124251A/zh
Application granted granted Critical
Publication of CN111124251B publication Critical patent/CN111124251B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/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/1096Parity calculation or recalculation after configuration or reconfiguration of the system
    • 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
    • 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
    • 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/20Error 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/2053Error 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/2056Error 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
    • G06F11/2058Error 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 using more than 2 mirrored copies
    • 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/20Error 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/2053Error 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/2056Error 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
    • G06F11/2087Error 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 with a common controller
    • 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/20Error 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/2053Error 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/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3034Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a storage system, e.g. DASD based or network based
    • 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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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/0653Monitoring storage devices or 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling

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)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本公开的实施例提供了用于I/O控制的方法、装置以及计算机可读介质。该方法包括响应于接收到I/O请求,针对I/O请求涉及的独立冗余盘阵列(RAID)中的条带,检测第一组信息位。RAID建立在由多个盘划分而来的多个盘切片上,条带包括多个区段,第一组信息位中的每个信息位指示条带中的一个对应区段所在的盘切片是否处于故障状态。该方法还包括基于第一组信息位,确定条带中处于故障状态的第一组区段和未处于故障状态的第二组区段。该方法进一步包括针对第二组区段执行I/O请求而不针对第一组区段执行I/O请求。本发明的实施例能够简化I/O控制中信息位的存储、支持针对RAID的降级条带写请求、并且提升执行I/O控制的处理器的性能。

Description

用于I/O控制的方法、装置以及计算机可读介质
技术领域
本公开的实施例涉及数据存储领域,并且更具体地,涉及用于I/O控制的方法、装置以及计算机可读介质。
背景技术
独立磁盘冗余阵列(RAID)技术是一种数据存储虚拟化技术。根据该虚拟化技术,可以在多个物理存储盘上建立一个或多个RAID,以用于提供数据冗余、性能提升等多种特性。一些传统RAID在盘的级别上均匀写入数据。这样的系统可能存在盘管理、I/O控制等多个方面的缺陷。随着RAID技术的发展,已经提出了一种新的RAID技术。该RAID在盘的切片级别上而不是在盘的级别上执行数据读取和写入。根据这种技术,多个盘中的每个盘被划分为多个盘切片。基于这些盘切片建立的RAID的每个条带被分配一定数目的区段,并且RAID的全部条带所包括的区段在多个盘切片上基本均匀分布。通过以盘的切片为单位来创建RAID,实现了更灵活的盘管理和I/O控制、提高了系统的运行性能。然而,尽管RAID技术不断发展,在RAID中仍然需要更优化的I/O控制方案。
发明内容
本公开的实施例提供了一种改进的用于I/O控制的方案。
在本公开的第一方面中,提供了一种用于I/O控制的方法。该方法包括:响应于接收到I/O请求,针对该I/O请求涉及的独立冗余盘阵列(RAID)中的条带,检测第一组信息位,该RAID建立在由多个盘划分而来的多个盘切片上,该条带包括多个区段,该第一组信息位中的每个信息位指示该条带中的一个对应区段所在的盘切片是否处于故障状态;基于该第一组信息位,确定该条带中处于该故障状态的第一组区段和未处于该故障状态的第二组区段;以及针对该第二组区段执行该I/O请求而不针对该第一组区段执行该I/O请求。
在本公开的第二方面中,提供了一种用于I/O控制的装置。该装置包括处理器以及与该处理器耦合的存储器,该存储器具有存储于其中的指令,该指令在被处理器执行时使该装置执行动作,该动作包括:响应于接收到I/O请求,针对该I/O请求涉及的独立冗余盘阵列(RAID)中的条带,检测第一组信息位,该RAID建立在由多个盘划分而来的多个盘切片上,该条带包括多个区段,该第一组信息位中的每个信息位指示该条带中的一个对应区段所在的盘切片是否处于故障状态;基于该第一组信息位,确定该条带中处于该故障状态的第一组区段和未处于该故障状态的第二组区段;以及针对该第二组区段执行该I/O请求而不针对该第一组区段执行该I/O请求。
在本公开的第三方面中,提供了一种计算机可读介质,其上存储有计算机可读指令,计算机可读指令在被执行时使设备:响应于接收到I/O请求,针对该I/O请求涉及的独立冗余盘阵列(RAID)中的条带,检测第一组信息位,该RAID建立在由多个盘划分而来的多个盘切片上,该条带包括多个区段,该第一组信息位中的每个信息位指示该条带中的一个对应区段所在的盘切片是否处于故障状态;基于该第一组信息位,确定该条带中处于该故障状态的第一组区段和未处于该故障状态的第二组区段;以及针对该第二组区段执行该I/O请求而不针对该第一组区段执行该I/O请求。
提供发明内容部分是为了简化的形式来介绍对概念的选择,它们在下文的具体实施方式中将被进一步描述。发明内容部分无意标识本公开的关键特征或主要特征,也无意限制本公开的范围。
附图说明
通过结合附图对本公开示例性实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施例中,相同的参考标号通常代表相同部件。
图1示出了传统的用于操作存储系统的架构的示意图;
图2A至图2C示出了在RRS中各个盘的盘切片处于不同状态时位置信息和组标识的变化的示意图;
图3示出了本公开的实施例可以在其中被实现的架构的示意图;
图4示出了根据本公开的实施例的I/O控制的方法的流程图;
图5示出了根据本公开的实施例的待执行I/O请求的RAID及其盘切片信息的示意图;
图6示出了根据本公开的实施例的在I/O请求为写请求时I/O控制的另一方法的流程图;
图7A至图7D示出了根据本公开的实施例的在图5的RAID结构下的RAID、盘切片信息和第二组信息位的变化的示意图;
图8A和图8B示出了根据本公开的实施例的在I/O请求为读请求时执行读请求的方法的流程图;
图9A和图9B示出了根据本公开的实施例的在图5的RAID结构下的RAID、盘切片信息和第二组信息位的示意图;以及
图10示出了可以用来实施本公开的实施例的示例设备的示意性框图。
具体实施方式
下面将参考附图中示出的若干示例实施例来描述本公开的原理。虽然附图中显示了本公开的优选实施例,但应当理解,描述这些实施例仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
本文所述的RAID技术建立在由多个盘划分而来的多个盘切片上,其中每个盘由多个盘切片组成。在对RAID执行I/O请求时,以条带的形式跨RAID中的多个盘切片执行I/O请求。条带包括多个区段,其中不同的区段处于不同的盘切片上。在执行I/O请求时,跨RAID中的全部盘切片的一个条带(其包括每个盘切片中的各一个区段)执行的I/O请求可以被称为全条带I/O请求,这表示针对RAID中的所有盘切片执行了本次I/O请求。在其他情况下,跨RAID中的部分盘切片的一个条带执行的I/O请求可以被称为降级条带I/O请求,这表示针对RAID中的部分盘切片执行了本次I/O请求。
图1示出了传统的用于操作存储系统的架构100的示意图。架构100包括存储系统130、记录器140、配置调试工具150、映射器160’、高速缓存170和命名空间180。
存储系统130存储有用户数据,并且为架构100中的其他部件(诸如图1中的映射器160’、记录器140和配置调试工具150)提供I/O接口。存储系统130的底层为切片池102,切片池102管理存储系统130中的所有盘。切片池102中的盘由图1中的附图标记104所图示。每个盘104均被划分为多个固定大小的盘切片。在图1中图示了一个盘104包括八个盘切片,这仅仅是为了图示清楚的目的,并且在一些实现中一个盘104可以包括其他数目的盘切片。在一些实现中,每个盘切片的大小为4GB。
切片池102中的各个盘104均被集合到不同的RAID弹性集(RAID Resilience Set,RRS)108-1、108-2…108-N(为了简化的目的,在下文中,各个RRS被统称或分别称为RRS108)。在本文中,RRS被用于包括有限数目的盘104,以使得在该RRS中的盘出现故障时,仅从该RRS中重新分配新的盘(或盘切片)而不会从其他RRS中分配新的盘(或盘切片)以执行I/O请求。由此,一个RRS中的盘出现故障将不会影响其他RRS中盘的可靠性。在一些实现中,一个RRS至多包括25个盘104。在一些实现中,可以根据I/O控制/数据规模的需要而存在不同数目的RRS,每个RRS中也可以包括不同数目的盘104。
在映射器160’从主机接收到I/O请求时,其利用RAID算法将命名空间180中的逻辑地址空间映射到切片池102中的盘104的物理地址空间。然而,与传统RAID技术不同的是,映射器160’在盘切片的级别上、而不是在盘104的级别上,来执行I/O请求。作为示例,映射器160’在切片池102中创建4+1RAID 5类型的一个RAID。已知的是,类似于基于盘的RAID,4+1RAID 5表示I/O请求在五个盘切片上基本上均匀分布,其中在全条带中,四个盘切片存储用户数据、另一盘切片存储校验位。在这种情况下,映射器160’从切片池102中的五个不同盘104中各自分配一个可用的盘切片以组成一个RAID,并且基于RAID算法而在这五个盘切片的范围上执行I/O请求。在一些实现中,还规定组成一个RAID中的多个盘切片必须来自于同一个RRS 108,以实现RRS中的盘的可靠性要求。在图1中,作为示例,用阴影具体示出了RRS 108-1中组成一个RAID的五个盘切片131、132、133、134和135。可以看出,盘切片131至135中的每个盘切片分布在RRS 108-1中的不同盘104上。在一些实现中,盘切片131至135中的两个不同盘切片可以分布在相同的盘104上。
在基于盘切片的RAID中,在出现故障的情况下,能够以盘切片的维度进行存储空间的重新分配而无需停用整个盘104。例如,在盘切片132处于故障状态的情况下,能够重新分配该RRS中各个盘104中的其他盘切片以用于执行I/O请求。
当执行I/O请求时,由切片池102中的多个盘切片组成的RAID将被聚合成一些层(tier)以用于由架构100中的其他部件读取和/或调用。被聚合的层包括启动层112、映射器用户数据层114、映射器元数据层116’、记录用户数据层118、记录元数据层120和配置调试工具层122。层112、114、116’、118、120和122中的每个层均由多个RAID组成,并且在同一个层中的多个RAID基于相同的RAID算法而被分配,而不同层中的RAID之间可以基于不同的RAID算法而被分配。
启动层112、映射器用户数据层114和映射器元数据层116’由映射器160’读取和/或调用,如图1所示。启动层112存储针对映射器160’的关键配置,其将在映射器160’启动时被加载在启动路径上。在一些实现中,为了数据安全性目的,启动层112中的RAID可以采用三重镜像RAID算法(3-Way Mirror RAID 1),实现三重冗余。映射器用户数据层114存储用户数据,并且其中的RAID采用校验RAID算法(RAID 5或RAID 6)。在一些实现中,映射器用户数据层114支持4+1RAID 5、8+1RAID 5和16+1RAID 5。在一些实现中,映射器用户数据层114支持4+2RAID 6、8+2RAID 6和16+2RAID 6。已知的是,x+y RAID x+y表示I/O请求在x+y个盘切片上基本上均匀分布,其中在全条带中,x个盘切片存储用户数据,另外y个盘切片存储校验位。在一些实现中,可以根据切片池102中的盘104和盘切片的数目来确定其他采用的RAID算法。映射器元数据层116’存储用于逻辑地址与物理地址之间的映射的元数据,诸如B+树节点。在一些实现中,映射器元数据层116’存储组标识192,该组标识192表示在映射器160’执行I/O请求时要从RAID数据库层110’中读取位置信息位组的位置。在一些实现中,映射器元数据层116’中的RAID可以采用二重镜像RAID算法(2-Way Mirror RAID 1)。已知的是,三重镜像RAID算法跨三个不同的盘切片存储用户数据的三个冗余版本(即,在三个不同的盘切片上存储相同的用户数据,以提升数据安全性),二重镜像RAID算法跨两个不同的盘切片存储用户数据的两个冗余版本。
此外,记录用户数据层118和记录元数据层120由记录器140读取和/或调用。记录器140进一步由高速缓存170使用应用编程接口而被读取和/或调用,而高速缓存170用于向映射器160’提供事务性操作功能。当映射器160’执行事务时,在该事务修改一些数据页面的情况下,为了防止数据丢失,高速缓存170将出现的全部修改通过记录器140存储在存储系统130的特定层(在图1中为记录用户数据层118和记录元数据层120)中。在本文中,数据页面被定义为映射器160’在执行I/O请求时的最小单位。在一些实现中,数据页面的大小为4KB。在一些实现中,为了提升高速缓存性能,记录用户数据层118和记录元数据层120可以被存储在与动态随机存取存储器(DRAM)性能相近的专用盘中,并且该专用盘可以被单独集合到一个专用RRS中。
此外,配置调试工具层122由配置调试工具150读取和/或调用,以用于记录最近一个时间段的I/O访问的记录,以便技术人员能够利用配置调试工具150来配置系统性能并调试I/O操作中出现的错误。
在一些实现中,层112、114、116’、118、120和122中的任何层可以根据数据安全性的要求来选择安全性较高的三重镜像RAID算法或安全性较低的二重镜像RAID算法。在一些实现中,层112、114、116’、118、120和122中的任何层可以按需扩展,换言之,层112、114、116’、118、120和122中的任何层可以按需被添加新的RAID。
此外,存储系统130中还包括RAID数据库层110’,其不由存储系统130外部的其他部件直接调用。在一些实现中,RAID数据库层110’由存储系统130中的RAID数据库124所调用,RAID数据库124进一步由任务框架126所调用。RAID数据库124和任务框架126用于存储系统130的内部操作。在一些实现中,RAID数据库层110’仅由单个RAID组成。在一些实现中,RAID数据库层110’存储位置信息190,位置信息190包括针对待执行I/O请求的各个盘切片的位置信息位组、以及曾经执行过I/O请求的各个盘切片的位置信息位组。位置信息位组可以指示在RRS中的具体盘切片,例如第3个盘的第5个盘切片。
如上所述,映射器160’利用RAID算法将命名空间180中的逻辑地址空间映射到切片池102中的盘104的物理地址空间。映射器160’作为单个大的扁平线性逻辑空间由命名空间180读取和/或调用。在一些实现中,单个大的扁平线性逻辑空间的大小可以高达8EB。映射器160’采用B+树来维持逻辑地址与物理地址之间的映射,该映射的最小粒度(分辨率)为4KB的数据页面。如上所述,映射器160’从启动层112、映射器用户数据层114和映射器元数据层116’读取和/或调用数据。当映射器160’接收到I/O请求时,其根据I/O请求的类型(读请求或写请求)而向这些层中的RAID执行相应的读请求或写请求。
具体而言,对于映射器160’接收到写请求的情况,映射器160’首先聚集足够多的4KB数据页面至一个2MB的物理大块(Physical Large Block,PLB),然后以PLB为单位对层中的RAID执行写请求。而对于映射器160’接收到读请求的情况,映射器160’可以以小于等于2MB的物理地址为单位来执行读请求。在一些实现中,RAID中的每个盘切片被进一步划分为多个区段,其中每个区段表示盘切片在写操作中能够被写入的最小数据单元。在PLB大小为2MB的实现中,一个区段的大小可以为64KB。在这种情况下,如果RAID采用4+1RAID的架构,则在一个PLB被成功写入后,将占据RAID中的八个全条带;如果RAID采用8+1RAID的架构,则在一个PLB被成功写入后,将占据RAID中的四个全条带。
要注意,上面关于映射器160’的映射的最小粒度、PLB的大小、区段的大小、RAID算法等仅仅作为示例。实际上,它们可以根据应用环境和存储系统的配置而不同。
命名空间180对从映射器160’读取和/或调用的扁平线性逻辑空间进行管理。此外,高速缓存170用于向映射器160’提供事务性操作功能以防止数据页面被修改时的数据丢失,配置调试工具150用于记录I/O访问的记录一时间段以由技术人员配置系统性能并调试I/O操作中出现的错误,如上文所描述的。
在图1的架构100中对RAID执行I/O请求时(诸如通过映射器160),通常需要检测RAID中各个盘切片的信息,以确定待执行I/O请求的各个盘切片的位置以及每个盘切片所处的状态。在检测到盘切片处于正常状态的情况下,则正常执行I/O请求;而在检测到盘切片处于不正常状态,诸如盘故障、读写失败、重建未完成等状态的情况下,则在RRS中分配新的盘切片到该RAID。
图2A至图2C示出了在RRS 108中各个盘的盘切片处于不同状态时位置信息190和组标识192的变化的示意图。
图2A示出了初始时的RRS 108、RAID的位置信息190、以及存储在映射器元数据层116’中的组标识192。此时,各盘切片131至135均处于正常状态。位置信息190包括针对待执行I/O请求的各个盘切片的位置信息位组210。位置信息位组210中的每个信息位包括待执行I/O请求的盘切片的位置,例如“1|5”表示第1个盘的第5个盘切片(即盘切片131)。在本文中,针对待执行I/O请求的各个盘切片的一个位置信息组也可以被称为“计划”。由于在每次分配新的盘切片的情况下,映射器160’将在位置信息190中生成新的位置信息位组(即生成新的计划)。在存在多个位置信息位组的情况下,映射器160’在执行I/O请求时将从组标识192读取正确的位置信息组的标识,以正确执行I/O请求。在图2A中,映射器元数据层116’将存储值为“0”的组标识192,这表示针对标识为“0”的位置信息位组210来执行I/O请求。基于I/O信息位192,映射器160’将标识位置信息位组210并且基于该位置信息位组210来执行I/O请求。
在图2B中,示出了盘切片132处于不正常状态,因而无法针对该盘切片132继续执行I/O请求。此时,映射器160’立即在RRS中为RAID分配新的盘切片231。在一些实现中,映射器160’优选在盘切片132所在的盘之外的其他盘上分配新的盘切片231。然后,映射器160’生成新的位置信息位组211,该新的位置信息位组也被包括在位置信息190中。位置信息位组211此时处于标识“1”,该位置信息位组211包含了新的盘切片231的位置信息并剔除了处于不正常状态的盘切片132的位置信息。此后,映射器160’发出映射器元数据I/O请求以修改组标识192,并且随后将按照映射器元数据层116’中存储的值为“1”的组标识192来执行I/O请求。
在图2C中,进一步示出了因盘切片134处于不正常状态而在RRS中为RAID分配新的盘切片232。与图2B的情况类似,在位置信息190中生成新的位置信息位组212(其标识为“2”),该位置信息位组212包含了新的盘切片232的位置信息并剔除了处于不正常状态的盘切片134的位置信息。并且映射器此后按照映射器元数据层116’中存储的值为“2”的组标识192来执行I/O请求。
图2A至图2C中示出的方案存在诸多缺陷。首先,在映射器创建新的位置信息位组后,老的位置信息位组并未被替换或移除,而是仍然保留在位置信息190中。这使得在I/O控制的过程中、尤其是在I/O控制持续时间较长的情况下,存在大量的冗余信息。这会显著地影响存储位置信息190的存储器(诸如图1所示的RAID数据库层110’)的性能。其次,图2中要求在检测到盘切片处于不正常状态时分配新的盘切片,由此使得映射器始终能够针对RAID执行全条带写请求。然而,在RRS中的所有剩余盘切片均处于不正常状态的情况下,映射器将简单地中止写请求,因为此时无法创建新的位置信息位组。换言之,映射器无法针对RAID执行降级条带写请求,即无法在条带中存在处于不正常状态的区段时执行写请求。这在RRS中仅存在少量盘(例如,少于等于6个)的情况下是很容易发生的,并且降低了用户使用友好性。再者,在创建新的位置信息位组后,映射器和RAID需要共同地从先前的位置信息位组中重建数据,在此期间,映射器必须发出映射器元数据写请求以修改映射器元数据(其例如存储在图1所示的映射器元数据层116’中)中的组标识192。这会显著地减慢重建进程。
对此,需要一种改进的用于I/O控制的方案,其能够诸如简化RAID的I/O控制中信息位的存储、支持针对RAID的降级条带写请求、以及提升执行I/O控制的处理器的性能。
根据本公开的一些实施例,提出了一种改进的用于I/O控制的方案。根据该方案,在检测到待执行I/O请求的盘切片处于故障状态时,并不立即分配新的盘切片,而是可以继续执行降级的I/O请求。具体地,响应于接收到I/O请求,检测所涉及RAID的条带中的各区段的第一组信息位,然后基于第一组信息位来确定处于故障状态和未处于故障状态的不同区段,并且随后仅针对未处于故障状态的区段来执行该I/O请求。改进的方案能够简化I/O控制中信息位的存储,并且支持针对RAID的降级条带I/O请求。
图3示出了本公开的实施例可以在其中被实现的架构300的示意图。图3的架构300与图1的架构100的不同之处在于,在架构300中,RAID数据库层110中存储盘切片信息310,盘切片信息310包括一组位置信息位和多组状态信息位。映射器160在执行I/O请求之前,首先检测盘切片信息310中的各信息位,然后基于各信息位来执行I/O请求。在一些实施例中,映射器元数据层116中存储另一组状态信息位312(下文中将被称为第二组信息位312)。映射器160除了检测盘切片信息310之外,还检测第二组信息位312。架构300的其他部件与架构100中的对应部件相同,并且为了简化的目的而不再进一步描述。
盘切片信息310中的位置信息位组包括针对RAID中待执行I/O请求的各个盘切片的位置信息,其可以类似于如图2中所示的位置信息位组210的形式。多组状态信息位包括针对RAID中待执行I/O请求的各个盘切片的不同的状态信息,其指示这些盘切片处于何种状态,诸如故障状态、新盘重建状态、重建状态等。在一些实施例中,多组状态信息位可以包括第一组信息位,其中第一组信息位中的每个信息位指示待执行I/O请求的一个盘切片是否处于故障状态。在一些实施例中,多组状态信息位还可以包括第三组信息位,其中第三组信息位中的每个信息位指示待执行I/O请求的一个盘切片是否处于新盘重建状态。在一些实施例中,多组状态信息位还可以包括可选的第四组信息位,第四组信息位中的每个信息位指示待执行I/O请求的一个盘切片是否处于重建状态。
在架构300中,映射器160在检测到待执行I/O请求的盘切片处于故障状态时,并不立即分配新的盘切片,而是等待一时间段(例如,五分钟)后再自动分配新的盘切片。在该时间段期间,映射器160更新多组状态信息位,并且基于该多组状态信息位来执行降级条带I/O请求。在一些实施例中,多组状态信息位中的每个信息位可以由二进制数“1”和“0”来表示。
作为示例,下面示出了架构300中的对于盘切片信息310的一个代码定义。
在上面的示例中,在结构体cyc_uber_mapping_dev_t中,disk_index和disk_extent_index分别定义了RRS中的盘的最大数目以及每个盘中所包括盘切片的最大数目。随后,在联合体cyc_uber_geometry_t中,以二维数组形式定义了采用不同RAID架构的RAID中盘切片的位置。在该示例中,不同RAID架构可以包括4+1 RAID 5、8+1 RAID 5、16+1 RAID5、4+2 RAID 6、8+2 RAID 6、16+2 RAID 6等。然而,本领域技术人员可以设想关于最大数目以及RAID架构的其他定义。
结构体cyc_uber_info_t可以对应于当前讨论的盘切片信息310,其包括位置信息位组geo(其架构取决于在联合体cyc_uber_geometry_t中的定义)以及第一组信息位rebuild_logging_bitmap、第四组信息位rebuild_bitmap和第三组信息位newdisk_bitmap。
下文将参照流程图来详细描述盘切片信息310以及可能的信息位组312在I/O控制过程中的使用。图4示出了根据本公开的实施例的I/O控制的方法400的流程图。方法400可以由图3中的映射器160来执行。为便于说明,将参考图3来描述方法400。
在框402,映射器160响应于接收到I/O请求,针对该I/O请求涉及的RAID中的条带,检测第一组信息位。如前所述,RAID是基于盘切片而建立的,并且条带是跨RAID中的不同盘切片的区段的集合。
如上所述,第一组信息位中的每个信息位指示条带中的一个对应区段所在的盘切片是否处于故障状态。在本文中,故障状态被定义为在盘切片出现故障、但未被替换时的状态。在盘切片被替换之后,先前指示处于故障状态的信息位的值改变(例如被反转),以指示该盘切片不再处于故障状态。在一些实施例中,在盘切片处于故障状态的情况下,映射器160将无法对盘切片正常执行I/O请求。具体而言,在执行I/O请求时,映射器160将无法向该盘切片写入数据或从该盘切片读取数据。
图5示出了根据本公开的实施例的待执行I/O请求的RAID及其盘切片信息的示意图。在图5中,示出了由图3中的盘切片131至135已经被组合成一个RAID 510。每个盘切片均由多个区段组成。RAID530的一个条带530包括跨盘切片131至135中的区段531、532、533、534和535。图5中还示出了具有一个PLB的大小的待执行I/O请求的条带组520,其由多个条带组成。作为示例,假设盘切片132处于故障状态而盘切片131、133、134和135未处于故障状态。图5中还示出了盘切片信息310,盘切片信息310包括第一组信息位510以及如上所述的位置信息位组550。在图5所示的RAID 510的各个盘切片的状态下,第一组信息位540中与盘切片132对应的信息位指示条带530中的一个区段532所处的盘切片132处于故障状态(例如以值“1”指示)。第一组信息位540中的其他信息位指示条带530中的其他区段所处的盘切片131、133、134和135未处于故障状态(例如以值“0”指示)。
现在回到图4,在框404,映射器160基于第一组信息位,确定条带中处于故障状态的第一组区段和未处于故障状态的第二组区段。取决于第一组信息位的具体指示内容,第一组区段或第二组区段可以包括条带的一个或多个区段。在图5的示例,基于第一组信息位540,映射器160可以确定条带530中处于故障状态的第一组区段532以及未处于故障状态的第二组区段531、533、534和535。
在框406,映射器160针对第二组区段执行I/O请求而不针对第一组区段执行I/O请求。由此,仅针对未处于故障状态的第二组区段来执行I/O请求,即可以实现降级条带I/O请求。这可以适用于降级条带写请求和降级条带读请求两者。针对图5的示例,映射器160针对第二组区段531、533、534和535执行I/O请求而不针对第一组区段532执行I/O请求。
以上参照图4描述了I/O请求的总体控制过程。在I/O请求为读请求或写请求的不同情况下,映射器160的处理可能不同,这在下文中继续讨论。
图6示出了根据本公开的实施例的在I/O请求为写请求时的I/O控制的另一方法600的流程图。方法600可以被认为在I/O请求是写请求的情况下方法400的后续过程。因此,方法600也可以由图3的映射器160来实现。在下文中,为了便于理解,还将参照图7A至图7C来描述方法600。图7A至图7D示出了在图5的RAID结构下的RAID、盘切片信息和第二组信息位的变化的示意图。
针对第二组区段执行写请求而不针对第一组区段执行写请求之后,在框604,映射器160检测与写请求相关联的数据是否被成功写入所有第二组区段。如果在框604确定该数据未被成功写入第二组区段中的至少一个区段,则方法600前进到框608,否则方法600前进到框606。
图7A示出了与写请求相关联的数据未被成功写入第二组区段531、533、534和535中的至少一个区段的情况。在该示例中,假设RAID 510中的盘切片135先前被确定为未处于故障状态的盘切片135发生故障,这将导致与写请求相关联的数据无法被成功写入区段535。这由区段535被标记为“F”、而其他的区段531、533和534被标记为“S”来表示。
在框608,映射器160更新第一组信息位,以将未成功写入数据的至少一个区段所在的至少一个盘切片相对应的信息位更新为指示该至少一个盘切片处于故障状态。
这种情况在图7B中示出,其中由于在图7A中盘切片135发生故障而使得第二组区段中的区段535未成功写入数据,因此映射器160更新了第一组信息位540,使得更新后的第一组信息位540指示盘切片135处于故障状态。此时,由于盘切片132仍然故障,因此第一组信息位540中的相应信息位仍然指示盘切片133的故障状态。
在更新第一组信息位后,在框610,映射器160基于更新后的第一组信息位来重新执行写请求。由此,第二组区段中未成功写入数据的区段所在的盘切片被更新为处于故障状态,并且在重新执行写请求时将不会针对这个区段执行写请求。这可以进一步避免对故障区段的操作。
例如,基于图7B中更新后的第一组信息位540来重新执行写请求时,在条带530中重新确定处于故障状态的第一组区段532和535以及未处于故障状态的第二组区段531、533和534。由此,将针对第二组区段531、533和534执行写请求而不针对第一组区段532和535执行写请求。
在方法600中,如果在框604确定与写请求相关联的数据被成功写入所有第二组区段,则方法600前进到框606。在框606,映射器160获得由RAID更新后的第二组信息位312。更新后的第二组信息位312指示所有第二组区段所在的盘切片包含有效数据,而未被执行写请求的第一组区段所在的盘切片不包含有效数据。
在本文中,盘切片包含有效数据被定义为:在写请求中,盘切片被成功写入数据。在其他情况下,盘切片不包含有效数据。例如,在写请求中,由于盘切片已经处于如上所述的故障状态而并未针对该盘切片执行任何写请求,则该盘切片不包含有效数据。例如,在写请求中,虽然映射器160已经试图对盘切片执行写请求,但是该写请求由于盘切片被转换为处于故障状态而未成功,则该盘切片不包含有效数据。在一些实施例中,第二组信息位中的每个信息位也可以由二进制数“1”和“0”来表示。
在一些实施例中,由RAID更新的第二组信息位在映射器160结束执行写操作之后被返回映射器160,并且映射器160可以例如将第二组信息位存储在映射器元数据中。在一些实施例中,在执行读请求时,映射器160将存储的第二组信息位传递到RAID以不针对不包含有效数据的盘切片执行读请求。换言之,与第一组信息位和位置信息位组相反,映射器160并不修改第二组信息位的值,而仅基于第二组信息位来执行降级条带I/O请求。因此,映射器160不需要解析或修改第二组信息位的值,我们称第二组信息位对于映射器而言是“不透明信息(Opaque Information)”。这与映射器必须发出映射器元数据写请求以修改映射器元数据的架构100相比,显著提升了执行I/O请求的性能。
如上文提及的,第二组信息位312被存储在RAID数据库层110中。图7C和图7D图示了在RAID 510的不同盘切片状态下第二组信息位312的更新。在图7C的示例中,第二组信息位312的所有信息位具有“0”值,指示针对RAID的某个条带的前一次写请求执行之后所有盘切片131至135均包含有效数据。在执行针对条带530的当前写请求时,由于盘切片132和135的故障,数据被成功写入了所有的位于盘切片131、133和134的区段531、533和534(如标记“S”所示),但由于盘切片132和135由第一组信息位540标识为处于故障状态,因此未被执行写请求。针对这种情况,执行数据写入的所有区段(即区段531、533和534均被成功写入数据),因此RAID需要将第二组信息位312中与盘切片132和135对应的信息位更新为“1”,以指示盘切片132和135不包含有效数据,如图7D所示。在一些实施例中,RAID可以在映射器执行写操作之后将第二组信息位312返回映射器。
可以看出,方法400除了能够支持降级条带I/O请求的执行之外,还通过动态更新RAID中盘切片的盘切片信息而避免了信息位的冗余存储。在一些优选实施例中,针对I/O请求是写请求的情况,包括方法600的方法400还能够确保写请求仅针对未处于故障状态的盘切片来执行,并且在数据未成功写入应当执行写请求的盘切片时,能够更新盘切片的第一组信息位并重新执行写请求。由此,进一步提高了执行降级条带写请求的可靠性。
现在参考图8A和图8B,图8A和图8B分别示出了根据本公开的实施例的在I/O请求为读请求时执行读请求的方法800和810的流程图。具体地,方法800和810对应于在I/O请求为读请求时、针对第二组区段执行读请求而不针对第一组区段执行读请求的本公开的两个实施例。
首先介绍图8A中的方法800。方法800开始于框802,针对读请求涉及的RAID中的条带检测第二组信息位。如上所述,第二组信息位指示RAID中的每个盘切片是否包含有效数据。在一些实施例中,在本次读请求之前的写请求中因处于故障状态而未被执行写请求的盘切片可以被认为不包含有效数据。在一些实施例中,在本次读请求之前的写请求中未成功写入与该写请求相关联的数据的盘切片可以被认为不包含有效数据。在一些实施例中,第二组信息位基于与本次读请求之前的写请求相关联的数据是否被成功写入盘切片而被确定。
例如,图9A示出了根据本公开的实施例的待执行读请求的RAID及其盘切片信息310和第二组信息位312的示意图。盘切片信息310包括位置信息位550和第一组信息位540。第二组信息位312中的第二位和第五位的值为“1”,指示盘切片132和135不包含有效数据。
回到图8A,在框804,基于第二组信息位,确定第二组区段中包含有效数据的第三组区段和不包含有效数据的第四组区段。参考图9A,在基于第一组信息位540确定执行读请求的第二组区段(条带530中的区段531、533和534)之后,进一步检测第二组信息位312,并且确定第二组区段531、533和534中包含有效数据的第三组区段(条带530中的区段531、533和534)和不包含有效数据的第四组区段(在图9A中,第四组区段为空集,即第二组区段531、533和534中的每个区段均包含有效数据)。
随后,在图8A的框806,针对第三组区段执行读请求而不针对第四组区段执行读请求。由此,方法800实现了在不针对处于故障状态的盘切片执行读请求的同时,进一步不针对不包含有效数据的盘切片执行该读请求。
下面介绍图8B中的方法810。方法810开始于框812,针对读请求涉及的RAID中的条带检测第三组信息位。
如上所述,第三组信息位指示RAID中的每个盘切片是否处于新盘重建状态。在本文中,新盘重建状态被定义为:盘切片出现故障并且已经在RAID中分配新的盘切片,但是该新的盘切片未完成重建。例如,在检测到有盘切片处于故障状态并等待一时间段之后,自动在RRS中为RAID分配新的盘切片。然而,新分配的盘切片需要另一时间段被重建以诸如从其他盘切片恢复数据。在该另一时间段期间,第三组信息位将指示该新分配的盘切片处于新盘重建状态。在新分配的盘切片完成重建之后,先前指示处于新盘重建状态的信息位的值反转,以指示该盘切片不再处于新盘重建状态。在一些实施例中,映射器将无法对处于新盘重建状态的盘切片正常执行读请求,但是可以对该盘切片正常执行写请求。这是由于在重建新的盘切片时,可以针对已经完成的盘切片的部分来写入数据,但是因为例如该盘切片的数据尚未完成恢复而无法被读取数据。在这种情况下,映射器将对RAID执行降级条带读请求。
现在参考图9B,图9B示出了根据本公开的另一实施例的待执行读请求的RAID及其盘切片信息310的示意图。盘切片信息310包括位置信息位550、第一组信息位540和第三组信息位910。第三组信息位312中的第四位的值为“1”,指示盘切片134处于新盘重建状态。
回到图8B,在框814,基于第三组信息位,确定第二组区段中处于新盘重建状态的第五组区段和未处于新盘重建状态的第六组区段。参考图9B,在基于第一组信息位540确定执行读请求的第二组区段(条带530中的区段531、533和534)之后,进一步检测第三组信息位910,并且确定第二组区段531、533和534中处于新盘重建状态的第五组区段(条带530中的区段534)和未处于新盘重建状态的第六组区段(条带530中的区段531和533)。
随后,在图8B中的框816,针对第六组区段执行读请求而不针对第五组区段执行读请求。由此,方法810实现了在不针对处于故障状态的盘切片执行读请求的同时,进一步不针对处于新盘重建状态的盘切片执行该读请求。
在一些优选实施例中,方法800和810可以组合,以针对读请求涉及的RAID中的条带同时检测第二组信息位和第三组信息位两者。如果确定第二组区段中存在不包含有效数据或处于新盘重建状态的一组区段,则不针对该组区段执行读请求而针对第二组区段中的其他区段执行读请求。在一些实施例中,响应于接收到I/O请求为读请求,可以同时检测第一组信息位、第二组信息位和第三组信息位,如果确定条带中的区段所在的盘切片的上述三组信息位进行逻辑或(OR)运算后的值为“1”(即与该盘切片相对应的第一组信息位、第二组信息位和第三组信息位中的任一个信息位为“1”),则不针对该区段执行读请求而针对条带中的其他区段执行读请求。
方法800和810实现了针对在RAID中的盘切片诸如处于故障状态、新盘重建状态或不包含有效数据的情况下的降级条带读请求的执行。
上文已经描述了在盘切片处于故障状态下如何执行I/O请求的实施例。在一些情况下,还可以对处于故障状态下的盘切片进行替换。例如,可以在等待一时间段后替换处于故障状态的盘切片。在一些实施例中,替换盘切片可以包括在RRS中为该RAID分配新的盘切片。在一些实施例中,替换盘切片可以包括将出现故障的盘切片取出,并且将经过修复后的该盘切片归还至存储系统。在一些实施例中,替换盘切片可以包括将故障的盘切片取出,并且将经过固件升级后的该盘切片归还至存储系统。在后文中,将经过修复后的盘切片或者经过固件升级后的盘切片归还等情况将被简称为“归还老的盘切片”。
此外,在本公开的一些可选实施例中,多组状态信息位还可以包括如上所述的第四组信息位,第四组信息位中的每个信息位指示待执行I/O请求的一个盘切片是否处于重建状态。例如,在盘切片出现故障并且刚刚被替换、尚未开始重建时,第四组信息位中的对应信息位指示该盘切片处于重建状态。在一些实施例中,这可以对应于如上所述的分配新的盘切片和归还老的老切片两种情况。根据该实施例,在分配新的盘切片的情况下,第三组信息位和第四组信息位的值相同。在盘切片完成重建之后,先前指示处于重建状态的信息位的值反转,以指示该盘切片不再处于重建状态。在映射器针对RAID执行I/O请求时,还可以通过检测第四组信息位来实现相关的I/O控制。
通过本公开的改进的用于I/O控制的方案,实现了在基于盘切片的基础建立的RAID上的更优化的I/O控制。具体而言,本公开的改进方案在RAID中的盘切片出现故障时并不立即分配新的盘切片,而是利用RAID中的盘切片信息和在RAID与处理器之间传递的不透明信息,实现了更灵活的降级条带I/O请求的执行。本公开的改进方案因此在无法分配新的盘切片的情况下也能正常地执行I/O请求,包括写请求和读请求。此外,由于RAID中的盘切片信息在I/O控制的过程中被更新,因此简化了信息位的存储,并且不会存在冗余信息。再者,执行I/O控制的处理器将无需解析并修改不透明信息,从而提升了该处理器的性能。
图10示出了可以用来实施本公开的实施例的示例设备1000的示意性框图。设备1000可以被实现为图3的映射器160或者映射器160中的一部分。设备1000可以用于实现图4的方法400、图6的方法600、图8A的方法800和/或图8B的方法810。如图所示,设备1000包括中央处理单元(CPU)1001,其可以根据存储在只读存储器(ROM)1002中的计算机程序指令或者从存储单元1008加载到随机访问存储器(RAM)1003中的计算机程序指令,来执行各种适当的动作和处理。在RAM 1003中,还可存储设备1000操作所需的各种程序和数据。CPU1001、ROM 1002以及RAM 1003通过总线1004彼此相连。输入/输出(I/O)接口1005也连接至总线1004。
设备1000中的多个部件连接至I/O接口1005,包括:输入单元1006,例如键盘、鼠标等;输出单元1007,例如各种类型的显示器、扬声器等;存储单元1008,例如磁盘、光盘等;以及通信单元1009,例如网卡、调制解调器、无线通信收发机等。通信单元1009允许设备1000通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理单元1001执行上文所描述的各个方法和处理,例如方法400、方法600、方法800和/或方法810。例如,在一些实施例中,方法400、方法600、方法800和/或方法810可被实现为计算机软件程序或计算机程序产品,其被有形地包含于机器可读介质,诸如非瞬态计算机可读介质,诸如存储单元1008。在一些实施例中,计算机程序的部分或者全部可以经由ROM 1002和/或通信单元1009而被载入和/或安装到设备1000上。当计算机程序加载到RAM1003并由CPU1001执行时,可以执行上文描述的方法400、方法600、方法800和/或方法810的一个或多个步骤。备选地,在其他实施例中,CPU 1001可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法400、方法600、方法800和/或方法810。
本领域的技术人员应当理解,上述本公开的方法的各个步骤可以通过通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本公开不限制于任何特定的硬件和软件结合。
应当理解,尽管在上文的详细描述中提及了设备的若干装置或子装置,但是这种划分仅仅是示例性而非强制性的。实际上,根据本公开的实施例,上文描述的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
以上所述仅为本公开的可选实施例,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等效替换、改进等,均应包含在本公开的保护范围之内。

Claims (13)

1.一种用于I/O控制的方法,包括针对写请求执行的步骤:
响应于接收到所述写请求,针对所述写请求涉及的独立冗余盘阵列RAID中的条带,检测第一组信息位,所述RAID建立在由多个盘划分而来的多个盘切片上,所述条带包括多个区段,所述第一组信息位中的每个信息位指示所述条带中的一个对应区段所在的盘切片是否处于故障状态,所述故障状态是盘切片已发生故障但尚未被替换的情况;
基于所述第一组信息位,确定所述条带中处于所述故障状态的第一组区段和未处于所述故障状态的第二组区段;
基于所述确定,并且在未分配新的盘切片来替换指示处于所述故障状态的盘切片的情况下,将所述写请求作为第一降级写请求在所述第二组区段上执行而不在所述第一组区段上执行所述第一降级写请求;
检测所述第一降级写请求的数据是否成功写入所述第二组区段;以及
响应于确定所述第一降级写请求的数据写入所述第二组区段中的一个区段失败:
(1)更新所述第一组信息位,使得与处于所述故障状态的一个区段所在的故障盘切片对应的信息位被更新,以指示所述一个区段被包括在所述第一组区段中而不是在所述第二组区段中;以及
(2)基于更新的所述第一组信息位重新执行所述写请求作为第二降级写请求,所述第二降级写请求在所述第二组区段上被执行,而不在所述第一组区段上执行所述降级写请求。
2.根据权利要求1所述的方法,其中通过以下操作,所述写请求之后是在所述第二组区段上作为降级读请求执行的读请求:
针对所述条带检测第二组信息位,所述第二组信息位中的每个信息位指示所述条带中的一个对应区段所在的盘切片是否包含有效数据;
基于所述第二组信息位,确定所述第二组区段中包含所述有效数据的第三组区段和不包含所述有效数据的第四组区段;以及
针对所述第三组区段执行所述读请求作为降级读请求而不针对所述第四组区段执行所述读请求。
3.根据权利要求2所述的方法,其中:
所述第二组信息位基于与所述读请求之前的所述写请求相关联的数据是否被成功写入盘切片而被确定。
4.根据权利要求1所述的方法,其中通过以下操作,所述写请求之后是在所述第二组区段上作为降级读请求执行的读请求:
针对所述条带检测第三组信息位,所述第三组信息位中的每个信息位指示所述条带中的一个对应区段所在的盘切片是否处于新盘重建状态;
基于所述第三组信息位,确定所述第二组区段中处于所述新盘重建状态的第五组区段和未处于所述新盘重建状态的第六组区段;以及
针对所述第六组区段执行所述读请求作为降级读请求而不针对所述第五组区段执行所述读请求。
5.根据权利要求2所述的方法,其中所述第二组信息位在所述写请求完成后存储在映射器元数据中,并且所存储的所述第二组信息位用于所述读请求的执行,以免在没有任何有效数据的情况下对盘切片进行所述读请求。
6.一种用于I/O控制的装置,包括:
处理器;以及
与所述处理器耦合的存储器,所述存储器具有存储于其中的指令,所述指令在被处理器执行时使所述装置执行针对写请求的动作,所述动作包括:
响应于接收到所述写请求,针对所述I/O请求涉及的独立冗余盘阵列RAID中的条带,检测第一组信息位,所述RAID建立在由多个盘划分而来的多个盘切片上,所述条带包括多个区段,所述第一组信息位中的每个信息位指示所述条带中的一个对应区段所在的盘切片是否处于故障状态,所述故障状态是盘切片已发生故障但尚未被替换的情况;
基于所述第一组信息位,确定所述条带中处于所述故障状态的第一组区段和未处于所述故障状态的第二组区段;基于所述确定,并且在未分配新的盘切片来替换指示处于所述故障状态的盘切片的情况下,将所述写请求作为第一降级写请求在所述第二组区段上执行而不在所述第一组区段上执行所述第一降级写请求;
检测所述第一降级写请求的数据是否成功写入所述第二组区段;以及
响应于确定所述第一降级写请求的数据写入所述第二组区段中的一个区段失败:
(1)更新所述第一组信息位,使得与处于所述故障状态的一个区段所在的故障盘切片对应的信息位被更新,以指示所述一个区段被包括在所述第一组区段中而不是在所述第二组区段中;以及
(2)基于更新的所述第一组信息位重新执行所述写请求作为第二降级写请求,所述第二降级写请求在所述第二组区段上被执行,而不在所述第一组区段上执行所述降级写请求。
7.根据权利要求6所述的装置,其中通过以下操作,所述写请求之后是作为降级读请求执行的读请求:
针对所述条带检测第二组信息位,所述第二组信息位中的每个信息位指示所述条带中的一个对应区段所在的盘切片是否包含有效数据;
基于所述第二组信息位,确定所述第二组区段中包含所述有效数据的第三组区段和不包含所述有效数据的第四组区段;以及
针对所述第三组区段执行所述读请求作为降级读请求而不针对所述第四组区段执行所述读请求。
8.根据权利要求7所述的装置,其中:
所述第二组信息位基于与所述读请求之前的所述写请求相关联的数据是否被成功写入盘切片而被确定。
9.根据权利要求6所述的装置,其中通过以下操作,所述写请求之后是在所述第二组区段上作为降级读请求执行的读请求:
针对所述条带检测第三组信息位,所述第三组信息位中的每个信息位指示所述条带中的一个对应区段所在的盘切片是否处于新盘重建状态;
基于所述第三组信息位,确定所述第二组区段中处于所述新盘重建状态的第五组区段和未处于所述新盘重建状态的第六组区段;以及
针对所述第六组区段执行所述读请求作为降级读请求而不针对所述第五组区段执行所述读请求。
10.一种非瞬态计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令在被执行时使设备执行针对写请求的动作,所述动作包括:
响应于接收到所述写请求,针对所述写请求涉及的独立冗余盘阵列RAID中的条带,检测第一组信息位,所述RAID建立在由多个盘划分而来的多个盘切片上,所述条带包括多个区段,所述第一组信息位中的每个信息位指示所述条带中的一个对应区段所在的盘切片是否处于故障状态,所述故障状态是盘切片已发生故障但尚未被替换的情况;
基于所述第一组信息位,确定所述条带中处于所述故障状态的第一组区段和未处于所述故障状态的第二组区段;基于所述确定,并且在未分配新的盘切片来替换指示处于所述故障状态的盘切片的情况下,将所述写请求作为第一降级写请求在所述第二组区段上执行而不在所述第一组区段上执行所述第一降级写请求;
检测所述第一降级写请求的数据是否成功写入所述第二组区段;以及
响应于确定所述第一降级写请求的数据写入所述第二组区段中的一个区段失败:
(1)更新所述第一组信息位,使得与处于所述故障状态的一个区段所在的故障盘切片对应的信息位被更新,以指示所述一个区段被包括在所述第一组区段中而不是在所述第二组区段中;以及
(2)基于更新的所述第一组信息位重新执行所述写请求作为第二降级写请求,所述第二降级写请求在所述第二组区段上被执行,而不在所述第一组区段上执行所述降级写请求。
11.根据权利要求10所述的非瞬态计算机可读介质,其中所述写请求之后是读请求,所述计算机可读指令在被执行时使所述设备通过以下操作执行所述读请求作为降级读请求:
针对所述条带检测第二组信息位,所述第二组信息位中的每个信息位指示所述条带中的一个对应区段所在的盘切片是否包含有效数据;
基于所述第二组信息位,确定所述第二组区段中包含所述有效数据的第三组区段和不包含所述有效数据的第四组区段;以及
针对所述第三组区段执行所述读请求作为降级读请求而不针对所述第四组区段执行所述读请求。
12.根据权利要求11所述的非瞬态计算机可读介质,其中:
所述第二组信息位基于与所述读请求之前的所述写请求相关联的数据是否被成功写入盘切片而被确定。
13.根据权利要求11所述的非瞬态计算机可读介质,其中所述写请求之后是读请求,所述计算机可读指令在被执行时使所述设备通过以下操作执行所述读请求作为降级读请求:
针对所述条带检测第三组信息位,所述第三组信息位中的每个信息位指示所述条带中的一个对应区段所在的盘切片是否处于新盘重建状态;
基于所述第三组信息位,确定所述第二组区段中处于所述新盘重建状态的第五组区段和未处于所述新盘重建状态的第六组区段;以及
针对所述第六组区段执行所述读请求作为降级读请求而不针对所述第五组区段执行所述读请求。
CN201811280028.XA 2018-10-30 2018-10-30 用于i/o控制的方法、装置以及计算机可读介质 Active CN111124251B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201811280028.XA CN111124251B (zh) 2018-10-30 2018-10-30 用于i/o控制的方法、装置以及计算机可读介质
US16/587,970 US11507461B2 (en) 2018-10-30 2019-09-30 Method, apparatus, and computer readable medium for I/O control

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811280028.XA CN111124251B (zh) 2018-10-30 2018-10-30 用于i/o控制的方法、装置以及计算机可读介质

Publications (2)

Publication Number Publication Date
CN111124251A CN111124251A (zh) 2020-05-08
CN111124251B true CN111124251B (zh) 2023-08-29

Family

ID=70326758

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811280028.XA Active CN111124251B (zh) 2018-10-30 2018-10-30 用于i/o控制的方法、装置以及计算机可读介质

Country Status (2)

Country Link
US (1) US11507461B2 (zh)
CN (1) CN111124251B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108733311B (zh) * 2017-04-17 2021-09-10 伊姆西Ip控股有限责任公司 用于管理存储系统的方法和设备
CN111124266B (zh) * 2018-10-31 2023-09-29 伊姆西Ip控股有限责任公司 数据管理方法、设备和计算机程序产品

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8839028B1 (en) * 2011-12-23 2014-09-16 Emc Corporation Managing data availability in storage systems
CN106959912A (zh) * 2017-03-07 2017-07-18 杭州宏杉科技股份有限公司 磁盘检测方法及装置
CN107220148A (zh) * 2016-03-21 2017-09-29 伊姆西公司 针对独立磁盘冗余阵列的重建方法和设备
CN108228086A (zh) * 2016-12-21 2018-06-29 伊姆西Ip控股有限责任公司 Raid重建的方法和设备

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7047358B2 (en) 2001-12-26 2006-05-16 Boon Storage Technologies, Inc. High-performance log-structured RAID
US7711897B1 (en) 2005-06-10 2010-05-04 American Megatrends, Inc. Method, system, apparatus, and computer-readable medium for improving disk array performance
US20070294565A1 (en) * 2006-04-28 2007-12-20 Network Appliance, Inc. Simplified parity disk generation in a redundant array of inexpensive disks
US20080183963A1 (en) 2007-01-31 2008-07-31 International Business Machines Corporation System, Method, And Service For Providing A Generic RAID Engine And Optimizer
US7970994B2 (en) 2008-03-04 2011-06-28 International Business Machines Corporation High performance disk array rebuild
US8539150B2 (en) 2010-12-27 2013-09-17 Hitachi, Ltd. Storage system and management method of control information using a cache memory with multiple cache partitions
US9256381B1 (en) 2011-09-29 2016-02-09 Emc Corporation Managing degraded storage elements in data storage systems
US9529542B2 (en) * 2015-04-14 2016-12-27 E8 Storage Systems Ltd. Lockless distributed redundant storage and NVRAM caching of compressed data in a highly-distributed shared topology with direct memory access capable interconnect
US10120769B2 (en) * 2016-04-13 2018-11-06 Dell Products L.P. Raid rebuild algorithm with low I/O impact

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8839028B1 (en) * 2011-12-23 2014-09-16 Emc Corporation Managing data availability in storage systems
CN107220148A (zh) * 2016-03-21 2017-09-29 伊姆西公司 针对独立磁盘冗余阵列的重建方法和设备
CN108228086A (zh) * 2016-12-21 2018-06-29 伊姆西Ip控股有限责任公司 Raid重建的方法和设备
CN106959912A (zh) * 2017-03-07 2017-07-18 杭州宏杉科技股份有限公司 磁盘检测方法及装置

Also Published As

Publication number Publication date
US11507461B2 (en) 2022-11-22
CN111124251A (zh) 2020-05-08
US20200133779A1 (en) 2020-04-30

Similar Documents

Publication Publication Date Title
US10606491B2 (en) Providing redundancy in a virtualized storage system for a computer system
US10140041B1 (en) Mapped RAID (redundant array of independent disks) in a data storage system with RAID extent sub-groups that are used to perform drive extent allocation and data striping for sequential data accesses to a storage object
US10210045B1 (en) Reducing concurrency bottlenecks while rebuilding a failed drive in a data storage system
US10146447B1 (en) Mapped RAID (redundant array of independent disks) in a data storage system with drive extents allocated to individual RAID extents from individual sub-groups of storage made up of ranges of logical block addresses defined across a group of hard disk drives
US9378093B2 (en) Controlling data storage in an array of storage devices
US10365983B1 (en) Repairing raid systems at per-stripe granularity
US7281089B2 (en) System and method for reorganizing data in a raid storage system
US20190129815A1 (en) Drive extent based end of life detection and proactive copying in a mapped raid (redundant array of independent disks) data storage system
US20190129614A1 (en) Load Balancing of I/O by Moving Logical Unit (LUN) Slices Between Non-Volatile Storage Represented by Different Rotation Groups of RAID (Redundant Array of Independent Disks) Extent Entries in a RAID Extent Table of a Mapped RAID Data Storage System
US10289336B1 (en) Relocating data from an end of life storage drive based on storage drive loads in a data storage system using mapped RAID (redundant array of independent disks) technology
US20120030425A1 (en) Parity declustered storage device array with partition groups
US8341349B2 (en) System and method for loose coupling between raid volumes and drive groups
CN111124264B (zh) 用于重建数据的方法、设备和计算机程序产品
US11449402B2 (en) Handling of offline storage disk
CN105988727B (zh) 一种基于raid的存储方法和存储装置
US11474919B2 (en) Method for managing multiple disks, electronic device and computer program product
CN109725838B (zh) 用于管理多个盘的方法、装置以及计算机可读介质
CN111124262A (zh) 独立盘冗余阵列(raid)的管理方法、设备和计算机可读介质
US11023141B2 (en) Resiliency schemes for distributed storage systems
CN111124251B (zh) 用于i/o控制的方法、装置以及计算机可读介质
US11379326B2 (en) Data access method, apparatus and computer program product
US7330955B2 (en) Recovery record for updating a system configuration
US9620165B2 (en) Banded allocation of device address ranges in distributed parity schemes
US11822829B2 (en) Method, device, and program product for data rebuilding
CN111857540B (zh) 数据存取方法、装置和计算机程序产品

Legal Events

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