CN111712802B - 数据存储系统中的虚拟存储驱动器管理 - Google Patents
数据存储系统中的虚拟存储驱动器管理 Download PDFInfo
- Publication number
- CN111712802B CN111712802B CN201980012819.0A CN201980012819A CN111712802B CN 111712802 B CN111712802 B CN 111712802B CN 201980012819 A CN201980012819 A CN 201980012819A CN 111712802 B CN111712802 B CN 111712802B
- Authority
- CN
- China
- Prior art keywords
- virtual storage
- task control
- storage drive
- drive
- allocated
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
- 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/2094—Redundant storage or storage space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
- G06F11/2071—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 using a plurality of controllers
- G06F11/2074—Asynchronous techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3034—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- 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/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/805—Real-time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/81—Threshold
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/815—Virtual
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/82—Solving problems relating to consistency
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)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
在一个实施例中,向RAID阵列分配虚拟存储驱动器,使得没有一个RAID阵列的两个虚拟存储驱动器被映射到同一物理存储驱动器。另一方面,将错误处理例程限制到受物理存储驱动器中的错误影响的虚拟存储驱动器,从而绕过不受错误影响的物理存储驱动器的虚拟存储驱动器。另一方面,可以根据对针对虚拟存储驱动器被分配到的RAID阵列的高速缓存操作施加的限度和对针对被映射到同一物理存储驱动器作为目标虚拟存储驱动器的一组虚拟存储驱动器的高速缓存操作施加的另外的限度,来调节对目标虚拟存储驱动器的高速缓存操作。根据特定应用,可以实现其他特征和方面。
Description
技术领域
本发明涉及用于数据存储系统中的虚拟存储驱动器管理的计算机程序产品、系统和方法。
背景技术
数据存储系统,特别是企业级的数据存储系统,通常被设计为提供高水平的冗余度,以减少数据存储系统部件发生故障时数据丢失的风险。因此,数据的多个副本经常存储在可能在地理上分散的多个系统上。因此,来自主机的要存储在数据存储系统中的数据通常被定向到本地地点上的主数据存储系统的主设备,然后被复制到可以在地理上远离主数据存储系统的系统的辅助数据存储系统的一个或多个辅助设备。一个主设备可以具有其中将定向到主设备的数据复制到多个辅助设备的多个辅助关系。
存储控制器可以控制可以包括硬盘、磁带、固态驱动器等的多个存储设备。该存储控制器可以管理从联网的主机对多个存储设备的输入/输出(I/O)请求。随着存储设备的存储容量的增加,已知将物理存储驱动器分段或细分为多个虚拟存储驱动器,每个虚拟存储驱动器具有映射到物理存储驱动器的物理存储器的一部分的虚拟存储器。虚拟存储驱动器的较小存储容量可便利存储控制器进行资源管理并改善系统性能。
也可以由存储控制器维护一个高速缓存,其中,高速缓存可以包括与某些其他存储设备(例如硬盘、磁带等)相比可以被更快速地访问的高速存储器。高速缓存被用于快速访问从外部存储器被暂存的(staged)的数据,以服务读数据访问请求,并提供对已修改数据的缓冲存储。但是,与由存储控制器控制的某些其他存储设备(例如硬盘等)的存储容量相比,高速缓存的总存储容量可能相对较小。因此,写请求通常首先被写入高速缓存,然后随后被写入(即被转储(destaged))到外部存储设备。
任务控制块(TCB)是操作系统内核中的任务控制数据结构,其中包含管理特定进程所需的信息。存储控制器可以使用TCB管理数据的移动,从而在存储设备之间以及在高速缓存(包括NVS)之间来回移动信息。当从主机向存储控制器发出写请求时,可以从操作系统代码中分配TCB。当要写入的数据从主机通过高速缓存传递到存储设备时,TCB用于维护有关写入过程自始至终的信息。如果高速缓存已满,则可以将TCB排队在TCB等待队列中,直到可以释放高速缓存中的现有数据可以被转储(即,被写入存储设备),以释放空间。转储(destage)操作可能涉及将信息从高速缓存移动到诸如独立磁盘冗余阵列(RAID)存储器的存储器,并且可以分配转储TCB任务控制块,用于执行转储操作。
对任何一个特定RAID阵列(也称为RAID列组)进行过多的暂存(stage)或转储操作可能会对性能产生不利影响。为了提供这样的暂存和转储操作的更均匀的分布,已知基于高速缓存操作所针对的RAID阵列来“限制”暂存或转储操作的数量。因此,每个RAID阵列在被分配和分派以针对特定RAID阵列或阵列执行高速缓存操作的暂存或转储TCB的数量上,可能具有关联的上限。一旦达到上限,用于针对特定RAID阵列或阵列进行高速缓存操作的任何其他TCB就会在TCB等待队列中排队,以等待特定RAID阵列或阵列的TCB的释放(重新分配)。在为RAID阵列重新分配TCB时,可以将TCB等待队列中的等待的TCB出列,并调度用于完成相关的高速缓存操作。
存储控制器经常采用安全数据提交过程,该过程扫描高速缓存目录以查找修改后的(通常称为“脏”)数据,以将其转储到辅助存储器。对高速缓存目录的这种扫描可以例如按小时定期地启动。还可以根据主机操作在其他时间启动转储操作。
发明内容
根据一个方面,提供了一种方法,包括:创建多个虚拟存储驱动器组,其中创建一个虚拟存储驱动器组包括将物理存储驱动器的存储区域细分为一组较小的存储区域,并将该组较小的存储区域中的每个较小的存储区域映射到该虚拟存储驱动器组中的一个存储驱动器;和将虚拟存储驱动器分配给虚拟存储驱动器的独立磁盘冗余阵列(RAID)阵列,其中将虚拟存储驱动器分配给一个RAID阵列包括组识别和驱动器分配操作,该操作包括:针对已识别的RAID阵列,识别所述多个虚拟存储驱动器组中的没有分配给已识别的RAID阵列的虚拟存储驱动器并且分配给任何RAID阵列的虚拟存储驱动器的数量最少的一组,作为已识别的组,并且将该已识别的虚拟存储驱动器组中的一个虚拟驱动器分配给已识别的RAID阵列;判定已识别的RAID阵列是否完成,以及重复所述组识别和驱动器分配操作,直到已识别的RAID阵列完成。
根据一个实施例,提供了一种在数据存储系统中采用虚拟存储驱动器管理的计算环境。这是为了创建多个虚拟存储驱动器组,其中创建一个虚拟存储驱动器组包括将物理存储驱动器的存储区域细分为一组较小的存储区域,并将该组较小的存储区域中的每个较小的存储区域映射到该虚拟存储驱动器组中的一个存储驱动器。在组识别和驱动器分配操作中将虚拟存储驱动器分配给虚拟存储驱动器的独立磁盘冗余阵列(RAID)阵列。在一个实施例中,组识别和驱动器分配操作包括识别所述多个虚拟存储驱动器组中的没有分配给已识别的RAID阵列的虚拟存储驱动器并且分配给任何RAID阵列的虚拟存储驱动器的数量最少的一组,作为已识别的组,并且将该已识别的虚拟存储驱动器组中的一个虚拟驱动器分配给已识别的RAID阵列。判定已识别的RAID阵列是否完成,以及重复所述组识别和驱动器分配操作,直到已识别的RAID阵列完成。
例如,在一个实施例中,RAID阵列逻辑可以被配置成以确保任何RAID阵列中没有两个虚拟存储驱动器都映射到同一物理存储驱动器的方式自动地将虚拟存储驱动器分配给虚拟存储驱动器的RAID阵列。因此,任何一个物理存储驱动器的故障都不会导致任何一个RAID阵列中多于一个物理驱动器出现故障。此外,每个阵列的故障虚拟存储驱动器的数据都可以使用适当的RAID数据重建技术更容易地重建。
此外,RAID阵列逻辑可以配置为以确保映射到虚拟存储驱动器的物理存储驱动器的分布更加均匀的方式自动将虚拟存储驱动器分配给虚拟存储驱动器的RAID阵列。因此,受特定物理存储驱动器丢失影响的RAID阵列的数量可以减少或最小化。因此,通过更均匀地分配映射到虚拟存储驱动器的物理存储驱动器,可以减少导致单个物理存储驱动器过度驱动的不均匀工作负载分布。
在根据本说明书的虚拟存储驱动器管理的另一方面,响应于检测到物理存储驱动器的一组虚拟驱动器的虚拟存储驱动器中的错误,识别哪个物理存储驱动器包括具有检测到的错误的虚拟驱动器,以及识别所识别的物理存储驱动器的哪些存储区域受检测到的错误的影响。判定被识别为受检测到的错误影响的组合存储区域是否小于所识别的物理存储驱动器的总存储区域,如果是,则识别映射到受检测到的错误影响的组合存储区域的虚拟存储驱动器集合。此外,为所识别的虚拟驱动器集启动错误处理例程。以这种方式,错误处理例程可以专注于物理存储驱动器的受影响的虚拟存储驱动器上,同时绕过同一物理存储驱动器的不受错误影响的虚拟存储驱动器。因此,可以提高错误处理的效率。
在根据本说明书的虚拟存储驱动器管理的另一方面,判定是否所识别的物理存储驱动器的所有存储区域都受到检测到的错误的影响。如果是,则会为所识别的物理存储驱动器的虚拟存储驱动器组的所有虚拟存储驱动器启动错误处理例程。在这里,错误处理例程也是可以专注于集物理存储驱动器的所有受影响的虚拟存储驱动器上,以提高错误处理效率。
根据本说明书的虚拟存储驱动器管理的另一个方面,针对接收被分配用于控制第一高速缓存操作的第一任务控制块,所述第一高速缓存操作用来在第一目标RAID阵列的高速缓存和第一目标物理存储驱动器的第一目标虚拟存储驱动器之间传输数据,其中第一高速缓存操作是将数据从第一目标虚拟存储驱动器暂存到高速缓存的暂存操作和将数据从高速缓存转储到第一目标虚拟存储驱动器的转储操作的其中之一。判定第一分配的任务控制块是否超过分配给第一目标RAID阵列的已分配任务控制块的第一限度,并且响应于确定第一分配的任务控制块超过分配给第一目标RAID阵列的已分配任务控制块的第一限度,将第一分配的任务控制块在等待队列中排队,以延迟调度第一分配的任务控制块用于执行第一高速缓存操作。相反,响应于确定第一分配的任务控制块不超过分配给第一目标RAID阵列的已分配任务控制块的第一限度,判定第一分配的任务控制块是否超过分配给第一目标虚拟存储驱动器组的已分配任务控制块的第二限度,如果不超过,则调度第一分配的任务控制块用于执行第一高速缓存操作,而不是将第一分配的任务控制块等待队列中排队以延迟调度第一分配的任务控制块用于执行第一高速缓存操作。响应于确定第一分配的任务控制块确实超过分配给第一目标虚拟存储驱动器组的已分配任务控制块的第二限度,将第一分配的任务控制块在等待队列中排队,以延迟调度第一分配的任务控制块用于执行第一任务控制块高速缓存操作。
因此,在一个实施例中,如果两个限度都没有超过,则任务控制块被调度以执行与目标虚拟存储驱动器相关联的高速缓存操作。相反,如果超过任一限度,等待队列逻辑将分配的任务控制块排在目标虚拟存储驱动器的TCB等待队列中,以延迟对分配的任务控制块的调度。以这种方式,可以基于目标虚拟存储驱动器的RAID阵列的身份以及映射到高速缓存操作的目标虚拟存储驱动器的物理存储驱动器的身份来调节特定虚拟存储驱动器的任务控制块,以避免任何一个特定RAID阵列或物理存储驱动器因过多的高速缓存操作而过载。因此,可以改进系统性能。
根据另一个方面,提供一种与数据存储系统一起使用的计算机程序产品,所述数据存储系统具有存储控制器和由存储控制器控制并配置为存储数据的多个物理存储驱动器,其中,存储控制器具有处理器和高速缓存,并且其中,所述计算机程序产品包括一种计算机可读存储介质,其上包含程序指令,所述程序指令可由存储控制器的处理器执行以引起处理器操作,所述处理器操作包括:创建多个虚拟存储驱动器组,其中创建一个虚拟存储驱动器组包括将物理存储驱动器的存储区域细分为一组较小的存储区域,并将该组较小的存储区域中的每个较小的存储区域映射到该虚拟存储驱动器组中的一个存储驱动器;和将虚拟存储驱动器分配给虚拟存储驱动器的独立磁盘冗余阵列(RAID)阵列,其中将虚拟存储驱动器分配给一个RAID阵列包括组识别和驱动器分配操作,该操作包括:针对已识别的RAID阵列,识别所述多个虚拟存储驱动器组中的没有分配给已识别的RAID阵列的虚拟存储驱动器并且分配给任何RAID阵列的虚拟存储驱动器的数量最少的一组,作为已识别的组,并且将该已识别的虚拟存储驱动器组中的一个虚拟驱动器分配给已识别的RAID阵列;判定已识别的RAID阵列是否完成,以及重复所述组识别和驱动器分配操作,直到已识别的RAID阵列完成。
根据另一个方面,提供一种系统,包括:具有存储控制器的数据存储系统和由存储控制器控制并配置为存储数据的多个物理存储驱动器和计算机程序产品,其中,存储控制器具有处理器和高速缓存,计算机程序产品包括计算机可读存储介质,其上包含程序指令,所述程序指令可由存储控制器的处理器执行以引起处理器操作,所述处理器操作包括:创建多个虚拟存储驱动器组,其中创建一个虚拟存储驱动器组包括将物理存储驱动器的存储区域细分为一组较小的存储区域,并将该组较小的存储区域中的每个较小的存储区域映射到该虚拟存储驱动器组中的一个存储驱动器;和将虚拟存储驱动器分配给虚拟存储驱动器的独立磁盘冗余阵列(RAID)阵列,其中将虚拟存储驱动器分配给一个RAID阵列包括组识别和驱动器分配操作,该操作包括:针对已识别的RAID阵列,识别所述多个虚拟存储驱动器组中的没有分配给已识别的RAID阵列的虚拟存储驱动器并且分配给任何RAID阵列的虚拟存储驱动器的数量最少的一组,作为已识别的组,并且将该已识别的虚拟存储驱动器组中的一个虚拟驱动器分配给已识别的RAID阵列;判定已识别的RAID阵列是否完成,以及重复所述组识别和驱动器分配操作,直到已识别的RAID阵列完成。
所述技术的实现可包括硬件、方法或过程,或计算机可访问介质上的计算机软件。根据特定的应用,可以实现其它特征和方面。
附图说明
现在将参照附图,仅通过举例来描述本发明的实施例进行描述,附图中:
图1示出了在数据存储系统中采用虚拟存储驱动器管理的计算环境的实施例;
图2示出了在图1的计算环境中采用虚拟存储驱动器管理的数据存储系统的示例;
图3示出了图1的计算环境中的主机的示例;
图4示出了具有虚拟存储驱动器的RAID阵列形成的示例;
图5示出了被细分为多个较小存储区域的物理存储驱动器的存储区域的示例,这些存储区域映射到一组虚拟存储器的虚拟存储驱动器;
图6是将虚拟存储驱动器映射到物理存储驱动器、虚拟存储驱动器组、物理存储区域、RAID阵列和TCB等待队列的表的示例;
图7是虚拟存储驱动器管理的示例;
图8示出了数据存储系统中的虚拟存储驱动器管理的一个实施例中的错误处理操作的示例;
图9示出了在虚拟存储驱动器管理的一个实施例中,与错误处理操作相关的物理存储驱动器支持的虚拟存储驱动器中的错误影响的局部区域的示例;
图10示出了在虚拟存储驱动器管理的一个实施例中,与错误处理操作相关的物理存储驱动器支持的虚拟存储驱动器中的错误影响的全局区域的示例;
图11示出作为目标RAID阵列和目标虚拟存储驱动器组身份的函数的TCB调节操作的示例;
图12示出了采用虚拟存储驱动器管理的一个实施例中的高速缓存操作逻辑的示例;
图13示出了分配给作为虚拟存储驱动器的RAID阵列和虚拟存储驱动器组的身份的函数的虚拟存储驱动器的TCB等待队列的示例;
图14示出了将TCB等待队列映射到作为每个虚拟存储驱动器的RAID阵列和虚拟存储驱动器组的身份的函数的虚拟存储驱动器的表的示例;
图15示出了在采用虚拟存储驱动器管理的一个实施例中针对调度的TCB的TCB处理的示例;
图16示出了在采用虚拟存储驱动器管理的一个实施例中针对虚拟存储驱动器的TCB等待队列处理的示例;以及
图17示出了在数据存储系统中采用虚拟存储驱动器管理的计算机实施例。
具体实施方式
尽管将高容量物理驱动器拆分或细分为多个虚拟存储驱动器可以提高性能,但是在这里可以理解的是,配置具有映射到单个物理驱动器的多个虚拟存储驱动器的任何一个RAID阵列(或RAID列组)可能增加在支持阵列的多个虚拟存储驱动器的物理存储驱动器出现故障的情况下数据丢失的可能性。因此,在根据本说明书的采用虚拟存储驱动器管理的存储控制器或其他计算机系统的一个实施例中,RAID阵列逻辑被配置成以确保没有任何RAID阵列的两个虚拟存储驱动器都映射到同一物理存储驱动器的方式自动地将虚拟存储驱动器分配给虚拟存储驱动器的RAID阵列。因此,在任何一个磁盘阵列中任何一个物理驱动器的故障都不会导致多个虚拟存储驱动器发生故障。此外,可以使用适当的RAID数据重建技术更容易地重建每个阵列的故障虚拟存储驱动器的数据。
在本说明书的另一个实施例中,RAID阵列逻辑可以被配置成以确保映射到虚拟存储驱动器的物理存储驱动器的更均匀分布的方式,自动地将虚拟存储驱动器分配给虚拟存储驱动器的RAID阵列。因此,受特定物理存储驱动器丢失影响的RAID阵列的数量可能会减少或最小化。此外,通过映射到虚拟存储驱动器的物理存储驱动器的更均匀的分布,可以减少导致单个物理存储驱动器过度驱动(overdriving)的不均匀工作负载分布。
在一个实施例中,将虚拟存储驱动器分配给RAID阵列的RAID阵列逻辑执行自动的组识别和驱动器分配操作,该操作包括:针对已识别的RAID阵列,识别一组虚拟存储驱动器,其没有分配给所识别的RAID阵列的虚拟存储驱动器,并且,与没有分配给所识别的RAID阵列的虚拟存储驱动器的其他组相比,分配给任何RAID阵列的虚拟存储驱动器的数量最少。RAID阵列逻辑将一个虚拟驱动器从所识别的虚拟存储驱动器组分配给所识别的RAID阵列。判定所识别的RAID阵列是否完成,并且该逻辑重复该组识别和驱动器分配操作,直到所识别的RAID阵列完成。
在采用根据本说明书的虚拟存储驱动器管理的存储控制器或其他计算机系统的另一实施例中,错误处理逻辑被配置为检测虚拟存储驱动器中的错误,并自动识别哪个物理驱动器映射到具有检测到的错误的虚拟驱动器。此外,错误处理逻辑会自动识别已识别的物理存储驱动器的哪些存储区域受到检测到的错误的影响。如果错误处理逻辑确定所识别的物理存储驱动器的所有存储区域都受到检测到的错误的影响,即错误影响的“全局”(global)区域,则可以为所识别的物理存储驱动器的所有虚拟存储驱动器启动错误处理例程。相反,如果错误处理逻辑确定被识别为受到检测到的错误影响的组合存储区域小于所识别的物理存储驱动器的总存储区域,也就是说,错误的影响区域是错误影响的“局部”(local)区域,则识别映射到该组合存储区域—即错误影响的局部区域—的虚拟存储驱动器集合,并为所识别的虚拟驱动器集合启动错误处理例程。以这种方式,错误处理例程可以专注在物理存储驱动器的受影响的虚拟存储驱动器上,同时绕过同一物理存储驱动器不受错误影响的的虚拟存储驱动器。因此,可以提高错误处理的效率。
在采用按照本说明书的虚拟存储驱动器管理的存储控制器或其他计算机系统的又一实施例中,目标阈值水平逻辑确定以特定虚拟存储驱动器为目标的某分配的任务控制块是否超过了分配给该目标虚拟存储驱动器的RAID阵列的已分配任务控制块的第一限度(limit),如果没有,还确定该分配的任务控制块是否超过分配给目标虚拟存储驱动器的物理存储驱动器的已分配任务控制块的第二限度。目标虚拟存储驱动器的物理存储驱动器定义都被映射到相同物理存储驱动器的一组虚拟驱动器,其中该组包括该物理存储驱动器作为该组的成员。
如果这两个限度都没有超过,任务控制块将被调度以执行与目标虚拟存储驱动器相关联的高速缓存操作。相反,如果超过任一限度,等待队列逻辑将分配的任务控制块排在TCB等待队列中,以便目标虚拟存储驱动器延迟分配的任务控制块的调度。在其他在高速缓存和虚拟存储驱动器之间传输数据的高速缓存操作完成、释放了足够数量的任务控制块,从而不限度RAID阵列和虚拟存储驱动器的物理存储驱动器的TCB的允许数量时,等待队列逻辑从TCB等待队列中移除一个等待的任务控制块,并调度该移除的任务控制块以执行针对目标虚拟存储驱动器的高速缓存操作。
通过这种方式,可以根据目标虚拟存储驱动器的RAID阵列的身份以及映射到高速缓存操作的目标虚拟存储驱动器的物理存储驱动器的身份来限制特定虚拟存储驱动器的任务控制块,以避免任何一个特定的RAID阵列或物理存储驱动器因过多的高速缓存操作而过载。因此,可以改进系统性能。根据具体的应用,可以实现其它方面和优点。
根据本说明书,可以将一个或多个计算机的系统配置为在数据存储系统中进行虚拟存储驱动器管理,这可以通过安装在系统上的具有软件、固件、硬件,或它们的组合在操作中导致系统执行根据本说明书的虚拟存储驱动器管理而实现。例如,可以将一个或多个计算机程序配置成在数据存储系统中执行虚拟存储驱动器管理,这可以通过包括当由数据处理装置执行时导致装置执行这些操作的指令而实现。
本文所述的操作由逻辑执行,所述逻辑被配置得自动或基本自动执行操作,很少或没有系统操作员的干预,除非指示为手动执行。因此,如本文所使用的,术语“自动”包括全自动的,即由一个或多个硬件或软件控制的机器执行的操作,无需人工干预,例如用户输入到图形用户选择界面。如本文所使用的,术语“自动”还包括主要是自动的,即,大多数操作(例如大于50%)由一个或多个硬件或软件控制的机器执行,无需人为干预,例如用户输入到图形用户选择界面,而其余操作(例如小于50%)是手动执行的,也就是说,手动操作由一个或多个硬件或软件控制的机器执行,具有人工干预,包括用户输入到图形用户选择界面,以指导操作的执行。
本说明书中描述的许多功能元素都被标记为“逻辑”,以便更具体地强调它们的实现独立性。例如,逻辑元件可以实现为包含定制VLSI电路或门阵列、现成半导体(例如逻辑芯片、晶体管或其他分立元件)的硬件电路。逻辑元件也可以在诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑器件等可编程硬件器件中实现。
逻辑元件也可以在供各种类型的处理器执行的软件中实现。包括可执行代码的逻辑元件可以例如包括一个或多个计算机指令的物理或逻辑块,这些指令可以例如被组织为对象、过程或函数。然而,所识别的逻辑元件的可执行文件不需要在物理上位于一起,而是可以包括存储在不同位置的不同指令,这些指令在逻辑上连接在一起时,构成逻辑元件并实现逻辑元件的目的。
实际上,逻辑元件的可执行代码可以是单个指令或多个指令,甚至可以分布在多个不同的代码段上、不同的程序之间、不同的处理器之间以及多个内存设备之间。类似地,操作数据可以在这里的逻辑元件中被识别和说明,并且可以以任何合适的形式来体现和在任何合适类型的数据结构内来组织。操作数据可以作为单个数据集收集,或者可以分布在不同的位置,包括在不同的存储设备上。
所述技术的实现可以包括在计算机可访问介质上的硬件、方法或过程或计算机软件。图1、2示出根据本说明书的在数据存储系统中采用虚拟存储驱动器管理的计算环境的实施例。多个主机1a、1b…1n可通过网络6向一个或多个数据存储设备或系统2a、2b、2(图2)提交输入/输出(I/O)请求,以读取或写入数据。主机1a、1b…1n可以是单独的物理设备,也可以是例如使用分配的服务器分区的资源实现的虚拟设备。类似地,数据存储系统或系统2(图2)、2a、2b可以是单独的物理设备,或者可以是例如使用分配的一个或多个服务器的分区的资源实现的虚拟设备。
在图示实施例中,数据存储系统2a是主数据存储系统,数据存储系统2b是辅助数据存储系统,其中,由主机存储在主数据存储系统2a上的数据被镜像到辅助数据存储系统2b。虽然图1所示的实施例示出了单个辅助数据存储系统2b,但是要理解主数据存储系统2a可以具有多个辅助数据存储系统。
每个数据存储系统2(图2)、2a、2b分别包括存储控制器或控制单元4(图2)、4a、4b,其分别访问存储在存储器10、10a、10b的多个数据存储单元中的数据。存储器10、10a、10b的每个数据存储单元可以包括本领域已知的能够存储数据的任何合适的设备,例如物理硬盘、固态驱动器等。因此,在一个实施例中,存储器10、10a、10b可以包括一个或多个顺序存取存储设备,例如硬盘驱动器和磁带,或者可以包括诸如固态驱动器(SSD)的非顺序存取存储设备。存储器10(图2)、10a、10b的每个设备可以包括用于数据存储的单个顺序或非顺序访问设备,或者可以包括用于数据存储的设备阵列,诸如“磁盘簇”(JBOD)、直接访问存储设备(DASD)、独立磁盘冗余阵列(RAID)阵列、虚拟化设备、磁带存储器,闪存等。
在某些实施例中,例如,存储单元可以是被配置为独立磁盘冗余阵列(RAID)存储阵列11a(图2)、…11n的磁盘,其中,一个或多个RAID存储阵列是RAID配置中的一个硬盘阵列,以便于在硬盘丢失时进行数据恢复。存储器10、10a、10b的存储单元还可以是诸如RAID配置中的固态驱动器之类的其它类型的存储器,以便于在固态驱动器丢失时进行数据恢复。存储器10(图2)、10a、10b的存储单元可以被配置成将数据存储在诸如卷、磁道等数据存储的子单元中。
每个存储控制器4(图2)、4a、4b包括CPU复合体12(图2),其包括由一个或多个处理器或中央处理器单元提供的处理器资源,每个处理器或中央处理器单元具有单个或多个处理器核。在本实施例中,处理器核包含涉及执行指令的CPU的组件,例如算术逻辑单元(ALU)、浮点单元(FPU)和/或各种级别的高速缓存(例如L1和L2高速缓存)。应当理解,处理器核可以具有除这里提及的逻辑元件之外的或代替这里提及的逻辑元件的其他逻辑元件。
每个存储控制器4(图2)、4a、4b还具有内存20,内存20包括用于管理存储操作的存储器管理器24,所述存储操作包括响应于来自主机的I/O数据请求或来自另一数据存储系统的镜像数据而向关联存储器10(图2)、10a、10b写数据或从关联存储器10(图2)、10a、10b读数据。内存20的高速缓存28可以包括一个或多个不同类型的存储器,诸如RAM、写高速缓存、读高速缓存、NVS等。包含高速缓存的不同类型的存储器可以相互操作。每个存储控制器4(图2)、4a、4b的CPU复合体12可以具有多个处理器集群,每个集群具有其自己分配的内存20、存储管理器24、高速缓存28等。分配给每个集群的处理和内存资源可以是物理的、虚拟的、共享的、可传输的或专用的,视具体应用而定。
来自主机1a…1n的写(writes),起初可以写入主存储控制器4a的高速缓存28,以后可以转储到主存储系统2a的存储器10a。如果相应的信息在主存储控制器4a的高速缓存28中可用,则可以从该高速缓存满足来自主机1a…1n的读请求,否则则将该信息从存储器10a暂存到高速缓存28,然后提供给请求的主机1a…1n。
起初写入主存储控制器4a的高速缓存28和存储器10a的来自主机1a…1n的写,可以由主存储控制器4a的存储管理器24镜像到辅助存储控制器4b。镜像的数据可以初始写入辅助存储控制器4b的高速缓存28,然后再转储到由辅助存储系统2b的辅助存储控制器4b控制的存储器10b。
存储控制器4(图2)、4a、4b的内存20包括一个高速缓存目录30,该高速缓存目录30标识具有作为预暂存(prestage)或暂存操作的结果或者作为主机写操作的结果而被存储在高速缓存28中的数据的磁道,所述预暂存或暂存操作将存储在存储器10(图2)、10a、10b中的磁道的数据传输到高速缓存28,所述主机写操作将数据写入高速缓存28以用于随后将数据转储到存储器10(图2)、10a、10b的相应的一个或多个磁道。在所示实施例中,高速缓存目录30以已知数据结构的形式实现,该数据结构是高速缓存28中所有磁道的哈希表。每个磁道被哈希到高速缓存目录30的一个槽中,该槽包括一个磁道标识符(ID)和一个关于该磁道的数据是否“脏”的指示,磁道的数据“脏”即数据尚未被安全地转储到存储器10(图2)、10a、10b的对应磁道。将哈希到一个槽的多个磁道连接在一起。应当理解,可以使用其他类型的数据结构来实现合适的高速缓存目录。
例如,包括存储管理器24的I/O操作的操作利用内存20的任务控制块(TCBs)32,上述操作包括高速缓存写操作、暂存操作、预暂存操作和转储操作。每个TCB是操作系统内核中的一个数据结构,其中包含管理特定进程所需的信息。存储控制器可以通过使用TCBs来管理数据的移动,在存储器之间来回移动信息,以及在高速缓存之间来回移动信息。当主机向存储控制器发出写请求或将数据从主数据存储系统镜像到辅助数据存储系统时,可以从操作系统代码分配TCB。在一个实施例中,当将要写入的数据从源通过高速缓存传递到存储器时,TCB可用于维护关于写入过程的从头到尾的信息。如果高速缓存已满,则可以让TCB排队,直到高速缓存中的现有数据可以被转储(即写入存储器),以释放空间。
TCB可根据特定TCB控制的任务进行分类。例如,“后台”TCB是控制与主机输入/输出操作不直接相关的操作的TCB。另一种类型的TCB是“前台”TCB,其控制与主机输入/输出操作直接相关的操作。
在本说明书的一个实施例中,存储管理器24包括虚拟存储驱动器管理逻辑34,其被配置为以一种提高系统性能方式来管理虚拟存储驱动器。存储管理器24还包括存储管理器24的数据复制逻辑35(图2),其被配置为同步生成主数据存储系统2a的主卷1(图1)的副本,作为由辅助数据存储系统2b表示的辅助数据存储系统的辅助卷2(图1)。主从卷对(卷1、卷2)处于同步复制或镜像关系37,使得对主卷1的更新将同步镜像到每个辅助卷2。
可由主存储控制器和辅助存储控制器4a、4b(图1)的数据复制逻辑35维护的一个或多个复制关系37,将主存储驱动器10a中的主存储位置与由镜像关系的存储驱动器10b表示的每个辅助存储驱动器中的对应的辅助存储位置相关联,使得对主存储驱动器10a位置的更新被镜像,即,复制到相应的辅助存储驱动器10b位置。例如,存储驱动器10a的主存储卷1(图1)中的源存储位置可以根据镜像复制关系37(图2)在镜像数据复制操作中同步镜像到存储驱动器10b的辅助卷2的目标存储位置。类似地,存储驱动器10a的主存储卷1(图3)中的源存储位置可以根据镜像复制关系37(图2)在镜像数据复制操作中同步镜像到另一辅助数据存储系统的另一辅助卷2的附加目标存储位置(图2)。
在所示实施例中,复制关系37包括一对存储位置的对等(peer-to-peer)同步镜像关系,其中对镜像关系37的主(源)存储位置的更新被同步镜像到镜像关系37的辅助(目标)存储位置。应当理解,例如,可以根据特定应用建立诸如异步之类的其他类型的复制关系。
在图1所示的配置中,存储控制器4a和数据存储驱动器10a分别被配置为主数据存储系统2a的主存储控制单元和主存储器,存储控制器4b及其数据存储驱动器10b分别被配置为辅助数据存储系统2b的辅助存储控制单元和辅助存储器。因此,在图1所示的配置中,存储控制器4a将被称为主存储控制器或控制单元4a,数据存储驱动器10a将被称为主存储驱动器10a。同样地,存储控制器或控制单元4b将被称为辅助存储控制器或控制单元4b,数据存储驱动器10b将被称为辅助数据存储驱动器10b。在本实施例中,可能有多个辅助数据存储,使得复制关系可以是一对多的关系,这也被称为多目标关系。
在特定的复制关系中,源单元通常被称为主单元,目标单元通常被称为辅助单元。在主数据存储驱动器10a和辅助数据存储驱动器10b的存储单元之间定义了复制关系。尽管将数据存储驱动器10a称为“主”而将数据存储驱动器10b称为“辅助”,但是数据存储器10a、10b的特定存储单元,根据特定的复制关系,可以同时充当主(或源角色)和辅助(或目标角色)。
在数据复制系统中,数据通常以卷对的形式进行维护,包括例如主存储系统中的主卷,如卷1(图1),以及例如辅助存储系统中的相应的辅助卷,例如卷2,辅助卷包含在主卷中维护的数据的相同副本。主卷和辅助卷由复制关系标识,其中主卷(也称为源卷)的数据被复制到辅助卷(也称为目标卷)。主存储控制器和辅助存储控制器可用于控制对主设备和辅助设备的访问。例如,诸如卷1的主设备可以与多个辅助设备(例如辅助数据存储系统2b的卷2)形成一对多的镜像多目标关系。
主存储控制器4a位于第一地点,辅助存储控制器4b位于第二地点,第二地点在地理位置或功能上可能与第一地点相距较远。因此,在该示例中,第一地点可以位于本地地点,而第二地点可以位于地理上较远的地点,这些地点与本地地点以及彼此之间的地理距离或短或长。或者,本地地点和远程地点可以相对接近,例如在网络6的相同一般地理位置的不同建筑物中、在同一建筑物的不同房间中、在同一房间中的不同机器中、或在同一机器的不同部分或分区中。
在一个实施例中,存储设备10、10a、10b可以包括一个或多个顺序存取存储设备,例如硬盘驱动器和磁带,或者可以包括诸如固态驱动器(SSD)的非顺序访问存储设备。每个存储设备10、10a、10b可以包括单个顺序或非顺序访问存储设备,或者可以包括存储设备阵列,例如磁盘簇(JBOD)、直接访问存储设备(DASD)、独立磁盘冗余阵列(RAID)阵列、虚拟化设备、磁带存储器、闪存等。
数据复制逻辑35管理复制关系的的一种模式可以用诸如根据本说明书适当修改的对等远程复制(PPRC)程序的同步复制操作来实现。所描述的操作可以用其他程序来实现,例如用根据本说明书适当修改的其他复制程序或其他全局恢复程序来实现。
存储管理器24还包括高速缓存操作逻辑40,其将数据从存储器10暂存到高速缓存28,并且还将数据从高速缓存28转储到存储器10。在一个实施例中,高速缓存操作逻辑40周期性地扫描高速缓存目录30以查找要转储到存储器10(图2)、10a、10b(图1)的脏数据。通常被称为安全数据提交过程的一种类型的高速缓存操作,允许操作员确保在安全数据提交扫描开始时间之前写入高速缓存28的任何内容都已成功地转储并安全地存储在存储器10(图2)、10a、10b(图1)上。逻辑40的其它类型的高速缓存操作根据特定应用执行与其他事件相关联的暂存和转储操作。
在所示实施例中,包括虚拟存储驱动器管理逻辑34和高速缓存操作逻辑40的存储管理器24被示为在内存20中存储并由CPU复合体12执行的软件。然而,应当理解,存储管理器24的逻辑功能可以实现为硬件、软件、固件或其一个或多个的组合,这取决于特定的应用。
在一个实施例中,存储管理器24(图2)可以在高速缓存28中存储数据,并且在高速缓存28和存储器10(图2)、10a、10b(图1)之间传输数据。在向高速缓存写磁道时,TCB分配一个或多个高速缓冲存储器段用于写磁道。类似地,在一个实施例中,存储管理器24(图2)可以按磁道将数据从主存储驱动器10a(图a)传输到辅助存储驱动器10b。如本文所使用的,术语磁道(track)可以指磁盘存储单元、固态存储单元或其他类型的存储单元的数据或存储的子单元。除了磁道之外,存储单元可以具有其它的存储或数据的子单元,例如位、字节、字、段、页、块(例如逻辑块地址(LBA))、柱面、段、盘区(extent)、卷、逻辑设备等或其任何部分,或适于传输或存储的其他子单元。因此,如本文所用,段是磁道的子单元。因此,根据本说明书在高速缓存写和高速缓存操作处理中处理的数据的子单元的大小,可以根据特定应用而变化。因此,如本文所使用的,术语“磁道”或术语“段”是指数据存储或传输的任何合适的子单元。
系统组件1a(图1)、1b...1n、4(图2)、6连接到网络6,网络6使得这些组件之间能够通信。因此,该网络包括一个可以包括存储区域网(SAN)、局域网(LAN)、内联网、因特网、广域网(WAN)、对等网络、无线网络、仲裁环网等的结构。从存储子系统到主机1a、1b、...1n的通信路径可以基于特定的主机连接协议,例如光纤连接(FICON)。结构的其他通信路径可以包括例如光纤通道仲裁环路配置、串行环路体系结构或总线接口,例如诸如PCI Express接口的外围组件互连(PCI)接口。结构的通信路径也可以例如是以太网网络的一部分,使得每个节点具有单独的网络(因特网协议)地址。根据特定应用,可以使用其它类型的通信路径,例如调制解调器电话路径、无线网络等。
与通信路径相关联的通信软件包括控制通信协议以及根据通信协议的通信硬件的操作(如果有的话)的指令和其他软件。应当理解,根据特定应用,可以使用其他通信路径协议。
由图3的主机1a表示的典型主机包括CPU复合体202和内存204,所述内存204具有操作系统206和应用程序208,后者协作通过存储控制器4、4a、4b从存储器10(图2)、10a、10b读取数据和将数据更新写入存储器10(图2)、10a、10b。一个合适的操作系统的例子是z/OS操作系统。应当理解,根据特定的应用,可以采用其他类型的操作系统。
图4示出了虚拟存储驱动器管理逻辑34(图2)的一个操作示例,该操作使用从虚拟存储驱动器管理逻辑34创建的虚拟存储驱动器组获得的虚拟存储驱动器来配置RAID阵列。在一个实施例中,虚拟存储驱动器管理逻辑34被配置成通过将物理存储驱动器的存储区域细分为一组较小的存储区域来从物理存储驱动器创建一组虚拟存储驱动器(框250,图4)。图5示出了物理存储驱动器的一个示例,即本例中的驱动器A的,该物理存储驱动器具有配置为存储数据的物理存储区域,.其中物理存储区域被细分为一组较小的物理存储区域。在本例中,物理存储驱动器A的物理存储区域被细分为四个较小的存储区域,区域A1、区域A2...区域4。应认识到,结果的细分物理存储区域的大小和数量可以根据特定应用而变化。例如,一个15TB的物理存储驱动器可以分为15个较小的虚拟存储驱动器,每个虚拟存储驱动器的虚拟存储容量为1TB。
物理存储驱动器的四个较小的存储区域,即区域A1、区域A2…区域4,构成一个组,即组A,组A还包括映射到组A的存储区域的虚拟存储驱动器。如图6的表的行中所示,虚拟存储驱动器管理逻辑34被配置成将组A的每个物理存储区域映射到组A的虚拟存储驱动器的单个虚拟存储驱动器。因此,组A的物理存储区域A1映射到组A的单个虚拟存储驱动器A1,组A的物理存储区域A2映射到组A的单个虚拟存储驱动器A2,依此类推。这样,虚拟存储驱动器A1的存储能力由物理存储驱动器A的物理存储区域A1提供,虚拟存储驱动器A2的存储能力由同一物理存储驱动器A的物理存储区域A2提供,依此类推。因为虚拟存储驱动器驱动器A1-驱动器A4的存储能力是由同一个物理存储驱动器驱动器A提供的,所以虚拟存储驱动器驱动器A1-驱动器A4被分配给同一个组,即本例中的组A。存储系统2(图2)的附加物理驱动器可以以类似的方式细分并映射到其他虚拟存储驱动器组。
已经形成了各组虚拟存储驱动器,其中一个组的每个虚拟存储驱动器都映射到该组的同一个物理存储驱动器,然后可以从各组的各个虚拟存储驱动器配置RAID阵列,其方式与物理存储驱动器的RAID分配过程类似。然而,如下文更详细地解释的那样,在本说明书的一个实施例中,以减少由于物理存储驱动器的丢失而导致的数据丢失并且以能够提高虚拟存储驱动器的性能的方式,选择虚拟存储驱动器来构造RAID阵列。
在图4的实施例中,在确定(框254,图4)要添加RAID阵列时,虚拟存储驱动器管理逻辑34的RAID阵列逻辑260(图7)被配置为将虚拟存储驱动器分配给虚拟存储驱动器的独立磁盘冗余阵列(RAID)阵列。在一个实施例中,虚拟存储驱动器管理逻辑34的RAID阵列逻辑260(图7)被配置为执行自动组识别和驱动器分配操作,该操作包括对于要形成的已识别的RAID阵列,识别一组虚拟存储驱动器,该组虚拟存储驱动器没有分配给已识别的RAID阵列的虚拟存储驱动器,并且所识别的虚拟存储驱动器组只要没有分配给已识别的RAID阵列的虚拟存储驱动器,分配给任何RAID阵列的虚拟存储驱动器数量最少。因此,在图4的实施例中,RAID阵列逻辑260(图7)被配置为识别(框264,图4)具有分配给任何RAID阵列的最小数量的虚拟存储驱动器的一组虚拟存储驱动器,并确定(框268,图4)所识别的组是否已经有分配给已识别的RAID阵列的虚拟存储驱动器。如果是这样,则RAID阵列逻辑260(图7)被配置为识别(框272,图4)具有分配给任何RAID阵列的次小数量的虚拟存储驱动器的一组虚拟存储驱动器,并再次确定(框268,图4)所识别的组是否已经有分配给已识别的RAID阵列的虚拟存储驱动器。
一旦一组虚拟存储驱动器满足以下两个条件:1)没有其他虚拟存储驱动器分配给正在形成的已识别的RAID阵列,和2)与没有分配给正在形成的已识别的RAID阵列的虚拟存储驱动器的其他虚拟存储驱动器组相比,分配给任何RAID阵列的虚拟存储驱动器的数量最少,则组识别和驱动器分配操作还包括从已识别的组分配一个虚拟存储驱动器给正在形成的已识别的RAID阵列。因此,在所示的实施例中,RAID阵列逻辑260(图7)被进一步配置成将(方框276,图4)一个(且仅一个)虚拟存储驱动器从已识别的组分配给正在形成的已识别的RAID阵列。
执行组识别和驱动器分配操作时的RAID阵列逻辑260(图7)被进一步配置以确定(框280,图4)正在形成的RAID阵列是否完成。如果不是,则重复框272、268和276的自动操作,直到RAID阵列的形成完成为止(框284,图4)。每次向正在形成的RAID阵列添加一个虚拟存储驱动器,被添加的虚拟存储驱动器来自满足下述连个条件的组:1)没有其它虚拟存储驱动器被分配给所识别的正在形成的RAID阵列;2)与其它没有虚拟存储驱动器被分配给所识别的正在形成的RAID阵列的虚拟存储驱动器组相比,被分配给任何RAID阵列的虚拟存储驱动器的数量最少。
因此,任何一个RAID阵列的每个虚拟存储驱动器都是从不同的唯一性组中选择的,使得没有一个RAID阵列具有来自同一物理存储驱动器的多个虚拟存储驱动器。在这种方式下,可以避免由于单个物理存储驱动器的丢失而导致一个RAID阵列中两个或更多的虚拟驱动器的丢失。因此,单个物理驱动器的故障最多只影响任何一个RAID阵列的单个虚拟存储驱动器。因此,使用已知的RAID阵列技术,可以重建该RAID阵列的数据,因为在单个物理存储设备发生故障时,最多只会丢失一个虚拟驱动器。
此外,由于任何一个RAID阵列的每个虚拟存储驱动器都是从与其它没有虚拟存储驱动器被分配给所识别的正在形成的RAID阵列的虚拟存储驱动器组相比被分配给任何RAID阵列的虚拟存储驱动器的数量最少的组中选择的,分配给RAID阵列的虚拟存储驱动器可以在物理驱动器之间更均匀地分布。因此,由于任何一个物理驱动器过载而导致的性能下降可以得到改善。
在图6的示例中,组A的虚拟存储驱动器1被分配给RAID阵列A。然而,在图6的示例中,根据上面结合图4描述的组识别和驱动器分配操作,没有将组A的其他虚拟存储驱动器分配给同一RAID阵列。因此,组A的虚拟存储驱动器A2被分配给RAID阵列D,组A的虚拟存储驱动器A3被分配给RAID阵列C,组A的虚拟存储驱动器A4尚未被分配给任何RAID阵列,因此被指示为未分配。
图8描述了虚拟存储驱动器管理逻辑34(图2)的自动操作的一个示例,该逻辑将来自存储驱动器的错误分为两类并处理错误:a)仅影响映射到物理存储驱动器的虚拟存储驱动器组的一个虚拟驱动器或虚拟驱动器子集的局部区域错误;b)存储驱动器中的影响物理存储驱动器的所有虚拟存储驱动器的全局区域错误。在图8的示例中,虚拟存储驱动器管理逻辑34(图7)包括错误处理逻辑304,所述错误处理逻辑304被配置为检测(框308,图8)虚拟存储驱动器中的错误,并自动识别(框312,图8)哪个物理存储驱动器映射到具有检测到的错误的虚拟驱动器。因此,例如,如果在虚拟存储驱动器A2中检测到错误,则图6的虚拟驱动器映射表指示组A的虚拟存储驱动器A2被映射到物理存储驱动器A。
错误处理逻辑304进一步被配置为识别(框316,图8)被识别的物理存储驱动器的哪个或哪些存储区域受到错误的影响。在图9的示例中,确定物理存储驱动器A的存储区域320受检测到的错误的影响。例如,存储区域320可能展现介质错误。如图9所示,受影响的存储区域320本质上是局部的,即,受错误影响的存储区域320延及到物理存储驱动器A的一些而不是全部物理存储区域。因此,在图9的示例中,受影响的存储区域320延及物理存储驱动器A的物理存储区域区域A2和区域A3,而不延及物理存储区域区域A1或区域A4。因此,在该示例中,确定(框316,图8)检测到的错误限于物理存储驱动器a的局部区域(局部区域320)。
如果确定(框316,图8)检测到的错误限于物理存储驱动器的局部区域,则错误处理逻辑304还被配置为识别(框330,图8)映射到受错误影响的局部存储区域的虚拟存储驱动或者—如果不止一个—虚拟存储驱动器集合。如上所述,在图9的示例中,受影响的存储区域320延及物理存储驱动器A的物理存储区域区域A2和区域A3,但不延及物理存储区域区域A1或区域A4。图6的虚拟驱动器映射表指示虚拟存储区域A2映射到虚拟存储驱动器A2。此外,虚拟存储区域A3映射到虚拟存储驱动器A3。因此,虚拟存储驱动器驱动器A2和驱动器A3被自动识别(框330,图8)为映射到受影响的局部区域320。
在识别了映射到受错误影响的局部存储区域320的一个或多个虚拟存储驱动器之后,错误处理逻辑304进一步被配置为(方框334,图8)为所识别的一组虚拟存储驱动器驱动器A2和驱动器A3自动启动错误处理例程。例如,图6的虚拟驱动器映射表指示虚拟存储驱动器A2被分配给RAID阵列D。因此,可以在RAID阵列D中用一个新的虚拟存储驱动器替换故障虚拟存储驱动器A2,后者被从RAID阵列D中移除。替代虚拟存储驱动器是以以上结合图4所述方式从没有任何虚拟存储驱动器已经被分配给RAID阵列D的组中选择的。以前存储在故障虚拟存储驱动器A2上的数据,可以使用已知的RAID技术在替代虚拟存储驱动器上重建。
类似地,图6的虚拟驱动器映射表指示虚拟存储驱动器A3被分配给RAID阵列C。因此,可以按照上面结合图4描述的方式,在RAID阵列C中用新的虚拟存储驱动器替代发生故障的虚拟存储驱动器A3。以前存储在故障虚拟存储驱动器A3上的数据,可以使用已知的RAID技术在替代虚拟存储驱动器上重建。
因此,如果错误处理逻辑304(图7)确定被检测到的错误影响的组合存储区域小于所识别的物理存储驱动器的总存储区域,则识别映射到被确定为受到所检测到的错误影响的组合错误影响存储区域的虚拟存储驱动器集合,并为所识别的虚拟驱动器集启动错误处理例程。以这种方式,错误处理例程可以专注于物理存储驱动器的受影响的虚拟存储驱动器,同时绕过不受错误影响的同一物理存储驱动器(本例中为物理存储驱动器A)的虚拟存储驱动器(如本例中的虚拟存储驱动器驱动器A1和驱动器A4)。因此,可以提高错误处理的效率。
如果错误处理逻辑304(图7)确定(框316,图8)所识别的物理存储驱动器的所有存储区域都受到检测到的错误的影响,则可以针对所识别的物理存储驱动器的所有虚拟存储驱动器启动错误处理例程(框338,图8)。例如,所识别的物理存储驱动器可能已遭受整个驱动器的灾难性故障。因此,如果检测到的错误是影响物理存储驱动器的所有虚拟存储驱动器的全局区域错误,则可以将受全局区域错误影响并分配给RAID阵列的每个虚拟存储驱动器,从关联的RAID阵列中移除,并且可以从尚未将任何虚拟存储驱动器分配给出现故障的虚拟存储驱动器的RAID阵列的组中选择新的虚拟存储驱动器。
在图10的示例中,确定了物理存储驱动器A的存储区域342受检测到的错误的影响。如图10所示,受错误影响的存储区域342是全局性的,即,受错误影响的存储区域342延及到物理存储驱动器A的所有物理存储区域。因此,在图10的示例中,受影响的存储区域342延及到物理存储驱动器A的每个物理存储区域,即区域A1、区域A2、区域A3和区域A4。因此,在该示例中,确定(框312,图8)检测到的错误是延及到物理存储驱动器A的所有存储区域的全局区域错误。
如果确定(框312,图8)检测到的错误不限于物理存储驱动器的一个局部区域,则错误处理逻辑304进一步被配置为针对在图10的示例中是物理存储驱动器A的受影响物理存储驱动器的所有虚拟存储驱动器启动(框338,图8)错误处理例程。图6的虚拟驱动器映射表指示映射到物理存储驱动器A的物理存储区域A1的虚拟存储驱动器A1被分配给RAID阵列A。因此,可以在RAID阵列A中用新的虚拟存储驱动器替代从RAID阵列A中移除的故障虚拟存储驱动器A1。替代虚拟存储驱动器以上面结合图4所述的方式从尚未分配给RAID阵列A的任何虚拟存储驱动器的组中选择。以前存储在故障虚拟存储驱动器A2上的数据,可以使用已知的RAID技术在替代虚拟存储驱动器上重建。
类似地,可以以上述方式将故障虚拟存储驱动器—驱动器A2和驱动器A3—分别从它们的RAID阵列—阵列D和阵列C—中移除,并以不同的组中的虚拟存储驱动器来替代,使得分配给同一RAID阵列的任何两个虚拟存储驱动器都不映射到同一组或物理存储驱动器。以前存储在发生故障的虚拟存储驱动器—驱动器A2和驱动器A3—上的数据,可以使用已知的RAID技术在其关联的RAID阵列的替代虚拟存储驱动器上重建。
因此,如果错误处理逻辑304(图7)确定所检测到的错误影响的组合存储区域等于所识别的物理存储驱动器的总存储区域,则识别映射到受影响的物理存储驱动器的所有虚拟存储驱动器,并针对该物理存储驱动器的每个虚拟存储驱动器启动错误处理例程。在图6的示例中,全局区域342(图1)的物理存储区域A4没有被分配给虚拟存储驱动器,因此不需要从任何RAID阵列中移除。在针对受影响的虚拟存储驱动器有限集合(框334)或受影响的虚拟存储驱动器完整集合(框338)的错误处理例程完成后,错误处理逻辑304(图7)的错误处理完成(框350,图8)。
在本说明书的另一个实施例中,应该认识到,由于物理存储驱动器可以通过跨多个RAID阵列虚拟存储驱动器被共享,因此一个物理存储驱动器可能比其他物理存储驱动器经历更高的暂存或转储操作工作负载,这取决于各个物理存储驱动器支持哪些RAID阵列。因此,如果接收暂存或转储操作的RAID阵列集中在相对较少的物理存储驱动器中,则基于RAID阵列限制TCB的先前暂存或转储操作可能无法充分地防止特定物理存储驱动器上的过载。如果某个特定物理存储驱动器因针对该物理存储驱动器所支持的RAID阵列的暂存或转储操作而过载,则过载的物理存储驱动器可能会在输入/输出操作上出现过度驱动和超时,从而对性能产生不利影响。
图11示出了虚拟存储驱动器管理逻辑34(图2)管理包括存储驱动器和高速缓存之间的暂存和转储操作的高速缓存操作的一个示例。在采用根据本说明书的虚拟存储驱动器管理的存储控制器或其他计算机系统的又一实施例中,高速缓存操作逻辑40的目标阈值水平逻辑404(图12)确定用于控制针对特定(目标)RAID阵列的目标虚拟存储驱动器的高速缓存操作的已分配任务控制块是否超过分配给目标RAID阵列的已分配任务控制块的第一限度,如果不是,还确定用于控制针对目标虚拟存储驱动器的缓存操作的已分配任务控制块是否超过了分配给该虚拟存储驱动器是其成员的目标虚拟存储驱动器组(所有虚拟存储驱动器都映射到同一物理存储驱动器)的已分配任务控制块的第二限度。如果这两个限度都没有超过,任务控制块将被调度以执行相关的高速缓存操作。
相反,如果超过任一限度,则等待队列逻辑406(图12)将已分配任务控制块在TCB等待队列(图13的408处示出了该队列的示例)中排队,以延迟已分配任务控制块的调度。TCB在TCB等待队列408的后面408a排队,以等待针对目标虚拟存储驱动器的足够数量的TCB的释放。TCBs在TCB等待队列中排队,排队的顺序是它们随后将退出队列并被调度以执行高速缓存操作的顺序。因此,处于前端408b的TCB将在TCB等待队列的任何其他TCB之前从TCB等待队列408中退出队列。相反地,处于末端408a的TCB,将在起初位于TCB等待队列的末端408a的位于该TCB之前的所有TCB已经被调度之后,被退出队列并调度以针对TCB等待队列的目标虚拟存储驱动器执行高速缓存操作。
TCB在TCB控制的高速缓存操作完成后释放。当将足够数量的针对目标虚拟存储驱动器的任务控制块释放时,等待队列逻辑406(图12)从目标虚拟存储驱动器的TCB等待队列408的前端408b(图13)移除一个等待任务控制块,并调度该移除的任务控制块以执行针对目标虚拟存储驱动器的高速缓存操作。在所示实施例中,如果当前分配给目标虚拟存储驱动器的目标RAID阵列的高速缓存操作TCB数量的增量计数均未超过分配给目标RAID阵列的已分配任务控制块的特定限度,并且如果当前分配给目标虚拟存储驱动器的目标虚拟存储驱动器组的高速缓存操作TCB数的增量计数不超过分配给目标虚拟存储驱动器组的已分配任务控制块的特定限度,所有这些都映射到同一个物理存储驱动器,则满足针对目标虚拟存储驱动器的足够数量的任务控制块的释放。以这种方式,任务控制块可以根据目标虚拟存储驱动器的目标RAID阵列的身份以及目标虚拟存储驱动器的目标组(或物理存储驱动器)的身份来限制,以避免任何一个特定的RAID阵列或物理存储驱动器因过多的高速缓存操作而过载。因此,可以改进系统性能。
在图11的实施例中,高速缓存操作逻辑40(图12)被配置为接收(框410,图11)为控制高速缓存操作以在高速缓存和特定RAID阵列的特定虚拟存储驱动器之间传输数据而分配的任务控制块,特定虚拟存储驱动器在这里被称为目标虚拟存储驱动器,诸如虚拟存储驱动器A1(图6),特定RAID阵列在这里被称为目标RAID阵列,诸如包括目标虚拟存储驱动器A1的RAID阵列A(图6)。分配的TCB的目标虚拟存储驱动器也是特定虚拟存储驱动器组的成员,特定虚拟存储驱动器组在这里被称为目标组,诸如包括目标虚拟存储驱动器A1的组A(图6)。如前所述,每个虚拟存储驱动器组由该组的所有虚拟存储驱动器都映射到的特定物理存储驱动器定义。因此,在分配的高速缓存操作针对目标虚拟存储驱动器A1的本示例中,支持目标虚拟存储驱动器A1的物理存储驱动器A在此被称为目标物理存储驱动器,即目标物理存储驱动器A(图5)。如前所述,高速缓存操作可以是将数据从目标虚拟存储驱动器暂存到高速缓存的暂存操作,或者是将数据从高速缓存转储到目标虚拟存储驱动器的转储操作。
目标阈值水平逻辑404(图12)被配置为跟踪当前分配给每个RAID阵列的高速缓存操作TCBs个数,以及当前分配给每个虚拟存储驱动器组的高速缓存操作TCBs个数。因此,在分配(方框410,图11)针对特定虚拟存储驱动器(即目标虚拟存储驱动器)的高速缓存操作时,目标阈值水平逻辑404被配置为递增(框414,图11)当前分配给目标RAID阵列(包括所分配的高速缓存操作的目标虚拟存储驱动器)的高速缓存操作TCBs个数的计数,并且还递增(方框418,图11)当前分配给目标虚拟存储器(包括所分配的高速缓存操作的目标虚拟存储驱动器)的高速缓存操作TCBs个数的单独计数。
进一步配置目标阈值水平逻辑404(图12)以判定(框422,图11)当前分配给目标虚拟存储驱动器的目标RAID阵列的高速缓存操作TCBs个数的递增计数是否超过分配给特定RAID阵列的已分配任务控制块的特定限度。如果是,则不是调度所分配的任务控制块以执行针对目标RAID阵列的目标虚拟存储驱动器的高速缓存操作,而是将所分配的任务控制块(块426,图11)在目标虚拟存储驱动器的等待任务控制块的队列408(图13)中排队。
相反,如果当前分配给目标虚拟存储驱动器的目标RAID阵列的高速缓存操作TCBs数量的递增计数不超过分配给目标RAID阵列的已分配任务控制块的特定限度,则进一步配置目标阈值水平逻辑404(图12)以判定(方框428,图11)是否当前分配给目标虚拟存储驱动器的目标虚拟存储驱动器组的高速缓存操作TCBs个数的递增计数超过了分配给目标虚拟存储驱动器组的已分配任务控制块的特定限度。如果是,则不是调度所分配的任务控制块以执行针对目标虚拟存储驱动器组的目标虚拟存储驱动器的高速缓存操作,而是将所分配的任务控制块(框426,图11)在目标虚拟存储驱动器的等待任务控制块的队列408(图13)中排队。
如果确定当前分配给目标虚拟存储驱动器的目标RAID阵列的高速缓存操作TCBs数量的递增计数(方框422,图11)不超过分配给目标RAID阵列的分配的任务控制块的特定限度,当前分配给目标虚拟存储驱动器的目标虚拟存储驱动器组的高速缓存操作TCBs数量的递增计数(方框428,图11)也不超过分配给目标虚拟存储驱动器组的已分配任务控制块的特定限度,则将目标阈值水平逻辑404(图12)进一步配置为调度(方框432,图11)所分配的任务控制块,以执行针对目标RAID阵列的目标虚拟存储驱动器和目标虚拟存储驱动器组的目标虚拟存储驱动器的高速缓存操作,如下文更详细地解释的那样。
在所示实施例中,如果确定了(方框422,图11)当前分配给目标虚拟存储器的目标RAID阵列的高速缓存操作TCBs数量的递增计数超过分配给目标RAID阵列的已分配任务控制块的特定限度,或者如果确定了(方框428,图11)当前分配给目标虚拟存储驱动器的目标虚拟存储驱动器组的高速缓存操作TCBs数量的递增计数超出分配给特定虚拟存储驱动器组的已分配任务控制块的特定限度,高速缓存操作逻辑40的等待队列逻辑406(图12)被配置成将分配给目标RAID阵列和目标虚拟存储驱动器组的目标虚拟存储驱动器的任务控制块在TCB等待队列408(图13)排队(框426,图11)中。如下面结合图16更详细地解释的,在调度在等待队列上等待的TCB以执行针对目标虚拟存储驱动器的高速缓存操作之前,在目标虚拟存储驱动器的TCB等待队列上排队的TCBs等待释放足够数量的目标虚拟存储驱动器的TCBs。以这种方式,针对虚拟存储驱动器的RAID阵列的高速缓存操作的任务控制块的数量以及针对目标虚拟存储驱动器的虚拟存储驱动器组的高速缓存操作的任务控制块的数量,每个都可以单独进行调节,以减少或消除目标RAID阵列或定义目标虚拟存储驱动器的虚拟存储驱动器组的物理存储驱动器的过度驱动,从而减少或消除由于过度驱动而导致的性能下降。
在所示的实施例中,每个虚拟存储驱动器被分配一个作为虚拟存储驱动器被分配到的RAID阵列的身份和虚拟存储驱动器所属的虚拟存储驱动器组的身份的函数的TCB等待队列。如前所述,每个虚拟存储驱动器组都由映射到该组的每个虚拟存储驱动器的唯一性物理存储驱动器定义。图14是将每个虚拟存储驱动器映射到作为虚拟存储驱动器已分配到的RAID阵列的身份以及虚拟存储驱动器所属的虚拟存储驱动器组的身份的函数的特定TCB等待队列的表。因此如图6和14所示,例如,已分配给RAID阵列A并且属于(物理存储驱动器A的)虚拟存储驱动器组A的虚拟存储驱动器A1被分配一个TCB等待队列AA。类似地,例如,已分配给RAID阵列D并且也属于(物理存储驱动器A的)虚拟存储驱动器组A的虚拟存储驱动器A2被分配一个TCB等待队列DA。
在所示实施例中,有四个RAID阵列,即阵列A-阵列D,以及四个虚拟存储驱动器组,每个阵列有四个虚拟存储驱动器,每个组有四个虚拟存储驱动器映射到一个唯一性物理存储驱动器,即驱动器A-驱动器D。因此,在本例中,有16个可能的虚拟存储驱动器,每个组的每个虚拟存储驱动器被分配到不同的RAID阵列。本例的16个可能的虚拟存储驱动器中的每一个可以被分配到唯一性TCB等待队列。然而,应当理解的是,RAID存储阵列、虚拟存储驱动器组、物理存储驱动器、虚拟存储驱动器和TCB等待队列的数量可能会有所不同,这取决于特定的应用。
TCB等待队列408(图13)代表图14的表的每个TCB等待队列。高速缓存操作逻辑40(图12)包括用于实现每个TCB等待队列的存储器资源436(图12)。下面结合图16更详细地描述等待队列逻辑406在处理每个TCB等待队列以有选择地从TCB等待队列中将任务控制块出列(de-queue)和调度从TCB等待队列中出列的任务控制块时的操作。
参照图15,高速缓存操作逻辑40(图12)被配置为接收(框504)针对特定虚拟存储驱动器(目标虚拟存储驱动器)的已调度任务控制块,并执行由所接收的任务控制块控制的高速缓存操作。因此,根据所接收的TCB分别用于暂存操作还是用于转储操作,可以在暂存操作中将数据段从目标虚拟存储驱动器暂存到高速缓存,或者可以将数据段从高速缓存转储到目标虚拟存储驱动器。在高速缓存操作完成(框508)时,可以解除分配(deallocate)该已调度TCB(框512),释放该TCB以重新分配给另一个高速缓存操作。
响应于针对高速缓存操作的TCB的解除分配(框512),目标阈值水平逻辑404(图12)被配置为递减(框516,图15)当前分配给已解除分配的TCB操作的目标虚拟存储驱动器的目标RAID阵列的高速缓存操作TCB数量的计数。另外,目标阈值水平逻辑404(图12)还递减(框520、图15)当前分配给已解除分配的高速缓存操作TCB的目标虚拟存储驱动器的目标虚拟存储驱动器组的高速缓存操作TCBs数量的单独计数。
参照图16,目标阈值水平逻辑404(图12)被进一步配置为响应于(框544,图16)针对特定虚拟存储驱动器(目标虚拟存储驱动器)的高速缓存操作的TCB的解除分配,判定(框548,图16)当前分配给目标虚拟存储驱动器的目标RAID阵列的高速缓存操作TCBs数量的计数是已经充分地减少,还是继续超过分配给目标RAID阵列的已分配任务控制块的特定限度。如果当前分配给目标虚拟存储驱动器的目标RAID阵列的高速缓存操作TCBs数量的计数继续超过分配给目标RAID阵列的已分配任务控制块的特定限度,则目标阈值级别逻辑404(图12)被进一步配置为等待(框544,图16)针对目标RAID阵列的TCBs的其它解除分配。
相反,如果当前分配给目标虚拟存储驱动器的目标RAID阵列的高速缓存操作TCBs数量的计数已经充分减少,不再超过分配给目标RAID阵列的已分配任务控制块的特定限度,目标阈值水平逻辑404(图12)被进一步配置以判定(框552,图16)当前分配给目标虚拟存储驱动器的目标虚拟存储驱动器组的高速缓存操作TCBs数量的计数是已经充分地减少,还是继续超过分配给目标虚拟存储驱动器组的已分配任务控制块的特定限度。如果当前分配给目标虚拟存储驱动器的目标虚拟存储驱动器组的高速缓存操作TCBs数量的计数已经充分地减少到不再超过分配给目标组的已分配任务控制块的特定限度,则可以将处于目标虚拟存储驱动器的TCB等待队列408(图13)的前端408b的等待TCB(框556,图16)出列(框560,图16),也就是说,将该等待TCB从等待队列中移除并调度以执行针对目标虚拟存储驱动器的高速缓存操作,如上面结合图15所述的那样。相反,如果当前分配给目标虚拟存储驱动器的目标组的高速缓存操作TCBs数量的计数继续超过分配给目标组的已分配任务控制块的特定限度,则目标阈值级别逻辑404(图12)被进一步配置为等待(框544,图16)针对虚拟存储驱动器的目标组的TCBs的其他解除分配。
因此,除非当前已分配给目标虚拟存储驱动器的目标RAID阵列的高速缓存操作TCBs数量的计数已充分减小到不再超过分配给目标RAID阵列的已分配任务控制块的特定限度,同时当前分配给目标虚拟存储驱动器组的目标虚拟存储驱动器组的高速缓存操作TCBs数量的计数已充分减小到不再超过分配给目标虚拟存储驱动器组的已分配任务控制块的特定限度,否则不会将在目标虚拟存储驱动器的等待队列上的等待TCB移出队列并调度以执行针对目标虚拟存储驱动器的TCB的高速缓存操作。以这种方式,可以基于目标虚拟存储驱动器的RAID阵列的身份以及映射到高速缓存操作的虚拟存储驱动器的物理存储驱动器的身份来限制针对特定虚拟存储驱动器的任务控制块的调度,以避免由于过多的高速缓存操作而使任何一个特定的RAID阵列或任何一个物理存储驱动器过载。结果,可以提高系统性能。取决于特定应用,可以实现其他方面和优点。
附图的计算组件均可以在一个或多个计算机系统(例如图17中所示的计算机系统1002)中实现。可以在由计算机系统执行的计算机系统可执行指令(例如程序模块)的一般上下文中描述计算机系统/服务器1002。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。可以在分布式云计算环境中实践计算机系统/服务器1002,在分布式云计算环境中,任务由通过通信网络链接的远程处理设备执行。在分布式云计算环境中,程序模块可以位于包括内存存储设备的本地和远程计算机系统存储介质中。
如图17所示,计算机系统/服务器1002以通用计算设备的形式表现。计算机系统/服务器1002的组件可以包括但不限于:一个或者多个处理器或者处理单元1004,系统存储器1006,连接不同系统组件(包括系统存储器1006和处理单元16)的总线1008。总线1008表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器1002典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器1002访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器1006可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)1010和/或高速缓冲存储器1012。计算机系统/服务器1002可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统1013可以用于读写不可移动的、非易失性磁介质(图中未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线1008相连。存储器1006可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块1016的程序/实用工具1014,可以存储在例如存储器1006中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。计算机1002的组件可以实现为通常执行本发明所描述的实施例中的功能和/或方法的程序模块1016。图1的系统可以在一个或多个计算机系统1002中实现,其中如果是在多个计算机系统1002中实现的,则这些计算机系统可以通过网络进行通信。
计算机系统/服务器1002也可以与一个或多个外部设备1018(例如键盘、指向设备、显示器1020等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器1002交互的设备通信,和/或与使得该计算机系统/服务器1002能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口1022进行。并且,计算机系统/服务器12还可以通过网络适配器1024与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器1024通过总线1008与计算机系统/服务器1002的其它模块通信。应当明白,尽管图中未示出可以结合计算机系统/服务器1002使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
这里使用的参考字符,例如i、j和n,用于表示一个元素的实例的可变数目,其可以表示相同或不同的值,并且当在不同描述实例中与不同或相同的元素一起使用时,可以表示相同或不同的值。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
除非另外明确指出,否则术语“某实施例”、“实施例”、“多个实施例”、“该实施例”、“这些实施例”、“一个或多个实施例”、“一些实施例”和“一个实施例”意指“本发明的一个或多个(但不是全部)实施例”。
除非另外明确指出,否则术语“包括”、“包含”、“具有”及其变体是指“包括但不限于”。
除非另外明确指出,否则列举的项目列表并不意味着任何或所有项目是互斥的。
除非另外明确规定,否则术语"一"、"一个"和"该"表示"一个或多个"。
除非另外明确指出,否则彼此通信的设备不需要彼此连续通信。另外,彼此通信的设备可以直接通信或通过一个或多个中间物间接通信。
具有彼此通信的若干组件的实施例的描述并不暗示需要所有此类组件。相反,描述了各种可选组件以说明本发明的各种可能的实施例。
当在此描述单个设备或产品时,很明显,可以使用多于一个的设备/产品(无论它们是否协作)来代替单个设备/产品。类似地,在这里描述了多于一个设备或产品(无论它们是否协作)的情况下,将容易明白的是,可以使用单个设备/产品来代替多于一个设备或产品,或者可以使用不同数量的设备/产品来代替所示数量的设备或程序。设备的功能和/或特征可以替代地由一个或多个未明确描述为具有这样的功能/特征的其他设备来体现。因此,本发明的其它实施例不需要包括该设备本身。
为了说明和描述的目的,已经给出了本发明的各种实施例的上述描述。其不是穷举的,也不是要将本发明限制为所公开的精确形式。根据上述教导,许多修改和变化是可能的。本发明的范围不是由该详细描述来限定,而是由所附权利要求来限定。上述说明、示例和数据提供了对本发明的组成的制造和使用的完整描述。由于在不脱离本发明的精神和范围的情况下可以做出本发明的许多实施例,因此本发明在于所附权利要求书。
Claims (21)
1.一种方法,包括:
创建多个虚拟存储驱动器组,其中创建一个虚拟存储驱动器组包括将物理存储驱动器的存储区域细分为一组较小的存储区域,并将该组较小的存储区域中的每个较小的存储区域映射到该虚拟存储驱动器组中的一个存储驱动器;和
将虚拟存储驱动器分配给虚拟存储驱动器的独立磁盘冗余阵列RAID阵列,其中将虚拟存储驱动器分配给一个RAID阵列包括组识别和驱动器分配操作,该操作包括:针对已识别的RAID阵列,识别所述多个虚拟存储驱动器组中的没有分配给已识别的RAID阵列的虚拟存储驱动器并且分配给任何RAID阵列的虚拟存储驱动器的数量最少的一组,作为已识别的组,并且将该已识别的虚拟存储驱动器组中的一个虚拟驱动器分配给已识别的RAID阵列;判定已识别的RAID阵列是否完成,以及重复所述组识别和驱动器分配操作,直到已识别的RAID阵列完成。
2.根据权利要求1所述的方法,还包括:
检测物理存储驱动器的一组虚拟驱动器中的虚拟存储驱动器中的错误;
识别哪个物理存储驱动器包括具有检测到的错误的虚拟驱动器;
识别已识别的物理存储驱动器的哪些存储区域受到检测到的错误的影响;和
判定被识别为受检测到的错误影响的组合存储区域是否小于已识别的物理存储驱动器的总存储区域,如果是,则识别映射到被识别为受检测到的错误影响的组合存储区域的虚拟存储驱动器集合,并针对已识别的虚拟驱动器集合启动错误处理例程。
3.根据权利要求2所述的方法,还包括:
判定是否已识别的物理存储驱动器的所有存储区域都受到检测到的错误的影响,如果是,则针对已识别的物理存储驱动器的虚拟存储驱动器组中的所有虚拟存储驱动器启动错误处理例程。
4.根据权利要求1所述的方法,还包括:
接收第一分配的任务控制块,所述第一分配的任务控制块控制用于在高速缓存与第一目标虚拟存储驱动器之间传输数据的第一高速缓存操作,所述第一目标虚拟存储驱动器是分配给第一目标RAID阵列的并且是第一目标物理存储驱动器的第一目标虚拟存储驱动器组中的,其中,所述第一高速缓存操作是用于将数据从第一目标虚拟存储驱动器暂存到高速缓存的暂存操作和用于将数据从高速缓存转储到第一目标虚拟存储驱动器的转储操作的其中之一;
判定第一分配的任务控制块是否超过分配给第一目标RAID阵列的已分配任务控制块的第一限度;和
响应于确定第一分配的任务控制块超过分配给第一目标RAID阵列的已分配任务控制块的第一限度,将第一分配的任务控制块排入等待队列以推迟调度第一分配的任务控制块来执行第一高速缓存操作。
5.根据权利要求4所述的方法,还包括:
响应于确定所述第一分配的任务控制块不超过分配给第一目标RAID阵列的已分配任务控制块的第一限度,判定第一分配的任务控制块是否超过分配给第一虚拟存储驱动器目标组的已分配任务控制块的第二限度,如果不是,则调度第一已分配任务控制块以执行第一高速缓存操作,而不是将第一分配的任务控制块排入等待队列以推迟调度第一分配的任务控制块来执行第一高速缓存操作。
6.根据权利要求5所述的方法,还包括:
响应于确定第一分配的任务控制块确实超过了分配给第一虚拟存储驱动器目标组的已分配任务控制块的第二限度,将第一分配的任务控制块排入等待队列以推迟调度第一分配的任务控制块来执行第一高速缓存操作。
7.根据权利要求6所述的方法,还包括:
在用于在高速缓存和目标虚拟存储驱动器之间传输数据的第二高速缓存操作完成时对任务控制块解除分配;和
如果分配给第一目标RAID阵列的已分配任务控制块的第一限度未被超过,同时分配给第一虚拟存储驱动器目标组的已分配任务控制块的第二限度也未被超过,则从等待队列中移除一个等待任务控制块,并调度已移除的任务控制块以执行高速缓存操作。
8.一种与数据存储系统一起使用的计算机可读存储介质,其上包含程序指令,所述数据存储系统具有存储控制器和由存储控制器控制并配置为存储数据的多个物理存储驱动器,其中,存储控制器具有处理器和高速缓存,并且其中,所述程序指令可由存储控制器的处理器执行以引起处理器操作,所述处理器操作包括:
创建多个虚拟存储驱动器组,其中创建一个虚拟存储驱动器组包括将物理存储驱动器的存储区域细分为一组较小的存储区域,并将该组较小的存储区域中的每个较小的存储区域映射到该虚拟存储驱动器组中的一个存储驱动器;和
将虚拟存储驱动器分配给虚拟存储驱动器的独立磁盘冗余阵列RAID阵列,其中将虚拟存储驱动器分配给一个RAID阵列包括组识别和驱动器分配操作,该操作包括:针对已识别的RAID阵列,识别所述多个虚拟存储驱动器组中的没有分配给已识别的RAID阵列的虚拟存储驱动器并且分配给任何RAID阵列的虚拟存储驱动器的数量最少的一组,作为已识别的组,并且将该已识别的虚拟存储驱动器组中的一个虚拟驱动器分配给已识别的RAID阵列;判定已识别的RAID阵列是否完成,以及重复所述组识别和驱动器分配操作,直到已识别的RAID阵列完成。
9.根据权利要求8所述的计算机可读存储介质,其中,处理器操作还包括:
检测物理存储驱动器的一组虚拟驱动器中的虚拟存储驱动器中的错误;
识别哪个物理存储驱动器包括具有检测到的错误的虚拟驱动器;
识别已识别的物理存储驱动器的哪些存储区域受到检测到的错误的影响;和
判定被识别为受检测到的错误影响的组合存储区域是否小于已识别的物理存储驱动器的总存储区域,如果是,则识别映射到被识别为受检测到的错误影响的组合存储区域的虚拟存储驱动器集合,并针对已识别的虚拟驱动器集合启动错误处理例程。
10.根据权利要求9所述的计算机可读存储介质,其中,处理器操作还包括:
判定是否已识别的物理存储驱动器的所有存储区域都受到检测到的错误的影响,如果是,则针对已识别的物理存储驱动器的虚拟存储驱动器组中的所有虚拟存储驱动器启动错误处理例程。
11.根据权利要求8所述的计算机可读存储介质,其中,处理器操作还包括:
接收第一分配的任务控制块,所述第一分配的任务控制块控制用于在高速缓存与第一目标虚拟存储驱动器之间传输数据的第一高速缓存操作,所述第一目标虚拟存储驱动器是分配给第一目标RAID阵列的并且是第一目标物理存储驱动器的第一目标虚拟存储驱动器组中的,其中,所述第一高速缓存操作是用于将数据从第一目标虚拟存储驱动器暂存到高速缓存的暂存操作和用于将数据从高速缓存转储到第一目标虚拟存储驱动器的转储操作的其中之一;
判定第一分配的任务控制块是否超过分配给第一目标RAID阵列的已分配任务控制块的第一限度;和
响应于确定第一分配的任务控制块超过分配给第一目标RAID阵列的已分配任务控制块的第一限度,将第一分配的任务控制块排入等待队列以推迟调度第一分配的任务控制块来执行第一高速缓存操作。
12.根据权利要求11所述的计算机可读存储介质,其中,处理器操作还包括:
响应于确定所述第一分配的任务控制块不超过分配给第一目标RAID阵列的已分配任务控制块的第一限度,判定第一分配的任务控制块是否超过分配给第一虚拟存储驱动器目标组的已分配任务控制块的第二限度,如果不是,则调度第一已分配任务控制块以执行第一高速缓存操作,而不是将第一分配的任务控制块排入等待队列以推迟调度第一分配的任务控制块来执行第一高速缓存操作。
13.根据权利要求12所述的计算机可读存储介质,其中,处理器操作还包括:
响应于确定第一分配的任务控制块确实超过了分配给第一虚拟存储驱动器目标组的已分配任务控制块的第二限度,将第一分配的任务控制块排入等待队列以推迟调度第一分配的任务控制块来执行第一高速缓存操作。
14.根据权利要求13所述的计算机可读存储介质,其中,处理器操作还包括:
在用于在高速缓存和目标虚拟存储驱动器之间传输数据的第二高速缓存操作完成时对任务控制块解除分配;和
如果分配给第一目标RAID阵列的已分配任务控制块的第一限度未被超过,同时分配给第一虚拟存储驱动器目标组的已分配任务控制块的第二限度也未被超过,则从等待队列中移除一个等待任务控制块,并调度已移除的任务控制块以执行高速缓存操作。
15.一种系统,包括:
具有存储控制器的数据存储系统和由存储控制器控制并配置为存储数据的多个物理存储驱动器,其中,存储控制器具有处理器和高速缓存,所述存储控制器的处理器可执行程序指令以引起处理器操作,所述处理器操作包括:
创建多个虚拟存储驱动器组,其中创建一个虚拟存储驱动器组包括将物理存储驱动器的存储区域细分为一组较小的存储区域,并将该组较小的存储区域中的每个较小的存储区域映射到该虚拟存储驱动器组中的一个存储驱动器;和
将虚拟存储驱动器分配给虚拟存储驱动器的独立磁盘冗余阵列RAID阵列,其中将虚拟存储驱动器分配给一个RAID阵列包括组识别和驱动器分配操作,该操作包括:针对已识别的RAID阵列,识别所述多个虚拟存储驱动器组中的没有分配给已识别的RAID阵列的虚拟存储驱动器并且分配给任何RAID阵列的虚拟存储驱动器的数量最少的一组,作为已识别的组,并且将该已识别的虚拟存储驱动器组中的一个虚拟驱动器分配给已识别的RAID阵列;判定已识别的RAID阵列是否完成,以及重复所述组识别和驱动器分配操作,直到已识别的RAID阵列完成。
16.根据权利要求15所述的系统,其中,处理器操作还包括:
检测物理存储驱动器的一组虚拟驱动器中的虚拟存储驱动器中的错误;
识别哪个物理存储驱动器包括具有检测到的错误的虚拟驱动器;
识别已识别的物理存储驱动器的哪些存储区域受到检测到的错误的影响;和
判定被识别为受检测到的错误影响的组合存储区域是否小于已识别的物理存储驱动器的总存储区域,如果是,则识别映射到被识别为受检测到的错误影响的组合存储区域的虚拟存储驱动器集合,并针对已识别的虚拟驱动器集合启动错误处理例程。
17.根据权利要求16所述的系统,其中,处理器操作还包括:
判定是否已识别的物理存储驱动器的所有存储区域都受到检测到的错误的影响,如果是,则针对已识别的物理存储驱动器的虚拟存储驱动器组中的所有虚拟存储驱动器启动错误处理例程。
18.根据权利要求15所述的系统,其中,处理器操作还包括:
接收第一分配的任务控制块,所述第一分配的任务控制块控制用于在高速缓存与第一目标虚拟存储驱动器之间传输数据的第一高速缓存操作,所述第一目标虚拟存储驱动器是分配给第一目标RAID阵列的并且是第一目标物理存储驱动器的第一目标虚拟存储驱动器组中的,其中,所述第一高速缓存操作是用于将数据从第一目标虚拟存储驱动器暂存到高速缓存的暂存操作和用于将数据从高速缓存转储到第一目标虚拟存储驱动器的转储操作的其中之一;
判定第一分配的任务控制块是否超过分配给第一目标RAID阵列的已分配任务控制块的第一限度;和
响应于确定第一分配的任务控制块超过分配给第一目标RAID阵列的已分配任务控制块的第一限度,将第一分配的任务控制块排入等待队列以推迟调度第一分配的任务控制块来执行第一高速缓存操作。
19.根据权利要求18所述的系统,其中,处理器操作还包括:
响应于确定所述第一分配的任务控制块不超过分配给第一目标RAID阵列的已分配任务控制块的第一限度,判定第一分配的任务控制块是否超过分配给第一虚拟存储驱动器目标组的已分配任务控制块的第二限度,如果不是,则调度第一已分配任务控制块以执行第一高速缓存操作,而不是将第一分配的任务控制块排入等待队列以推迟调度第一分配的任务控制块来执行第一高速缓存操作。
20.根据权利要求19所述的系统,其中,处理器操作还包括:
响应于确定第一分配的任务控制块确实超过了分配给第一虚拟存储驱动器目标组的已分配任务控制块的第二限度,将第一分配的任务控制块排入等待队列以推迟调度第一分配的任务控制块来执行第一高速缓存操作。
21.根据权利要求20所述的系统,其中,处理器操作还包括:
在用于在高速缓存和目标虚拟存储驱动器之间传输数据的第二高速缓存操作完成时对任务控制块解除分配;和
如果分配给第一目标RAID阵列的已分配任务控制块的第一限度未被超过,同时分配给第一虚拟存储驱动器目标组的已分配任务控制块的第二限度也未被超过,则从等待队列中移除一个等待任务控制块,并调度已移除的任务控制块以执行高速缓存操作。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/905,780 | 2018-02-26 | ||
US15/905,780 US10783049B2 (en) | 2018-02-26 | 2018-02-26 | Virtual storage drive management in a data storage system |
PCT/IB2019/051222 WO2019162811A1 (en) | 2018-02-26 | 2019-02-15 | Virtual storage drive management in a data storage system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111712802A CN111712802A (zh) | 2020-09-25 |
CN111712802B true CN111712802B (zh) | 2023-08-18 |
Family
ID=67684490
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980012819.0A Active CN111712802B (zh) | 2018-02-26 | 2019-02-15 | 数据存储系统中的虚拟存储驱动器管理 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10783049B2 (zh) |
JP (1) | JP7139435B2 (zh) |
CN (1) | CN111712802B (zh) |
DE (1) | DE112019000992T5 (zh) |
GB (1) | GB2584064B (zh) |
WO (1) | WO2019162811A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10761743B1 (en) | 2017-07-17 | 2020-09-01 | EMC IP Holding Company LLC | Establishing data reliability groups within a geographically distributed data storage environment |
US11169961B2 (en) * | 2018-06-29 | 2021-11-09 | Weka.IO Ltd. | Data migration in a distributive file system |
CN110737394B (zh) * | 2018-07-20 | 2023-09-01 | 伊姆西Ip控股有限责任公司 | 管理缓存的方法、装置和计算机程序产品 |
US11748004B2 (en) | 2019-05-03 | 2023-09-05 | EMC IP Holding Company LLC | Data replication using active and passive data storage modes |
US11693983B2 (en) | 2020-10-28 | 2023-07-04 | EMC IP Holding Company LLC | Data protection via commutative erasure coding in a geographically diverse data storage system |
US20210117134A1 (en) * | 2020-12-23 | 2021-04-22 | Intel Corporation | Technologies for storage and processing for distributed file systems |
US11847141B2 (en) | 2021-01-19 | 2023-12-19 | EMC IP Holding Company LLC | Mapped redundant array of independent nodes employing mapped reliability groups for data storage |
US11625174B2 (en) * | 2021-01-20 | 2023-04-11 | EMC IP Holding Company LLC | Parity allocation for a virtual redundant array of independent disks |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1617113A (zh) * | 2003-11-13 | 2005-05-18 | 国际商业机器公司 | 向物理内存分配虚拟内存的方法、存储控制器和计算机系统 |
CN103946846A (zh) * | 2011-11-23 | 2014-07-23 | 国际商业机器公司 | 使用虚拟驱动作为用于raid组的热备用 |
CN105612499A (zh) * | 2013-10-29 | 2016-05-25 | 华中科技大学 | 混合高速缓存管理 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3454183B2 (ja) * | 1999-04-13 | 2003-10-06 | 日本電気株式会社 | ディスクアレイ装置 |
US7111147B1 (en) | 2003-03-21 | 2006-09-19 | Network Appliance, Inc. | Location-independent RAID group virtual block management |
US20060069888A1 (en) * | 2004-09-29 | 2006-03-30 | International Business Machines (Ibm) Corporation | Method, system and program for managing asynchronous cache scans |
JP4331746B2 (ja) * | 2006-12-28 | 2009-09-16 | 株式会社日立製作所 | ストレージ装置構成管理方法、管理計算機及び計算機システム |
US7668981B1 (en) | 2007-03-28 | 2010-02-23 | Symantec Operating Corporation | Storage paths |
US20090222621A1 (en) * | 2008-02-29 | 2009-09-03 | International Business Machines Corporation | Managing the allocation of task control blocks |
US20090240880A1 (en) * | 2008-03-21 | 2009-09-24 | Hitachi, Ltd. | High availability and low capacity thin provisioning |
US8918488B2 (en) | 2009-02-04 | 2014-12-23 | Citrix Systems, Inc. | Methods and systems for automated management of virtual resources in a cloud computing environment |
US8838889B2 (en) * | 2010-01-19 | 2014-09-16 | Infinidat Ltd. | Method of allocating raid group members in a mass storage system |
CN103136114B (zh) * | 2011-11-30 | 2015-11-25 | 华为技术有限公司 | 存储方法及存储装置 |
US20140130055A1 (en) | 2012-02-14 | 2014-05-08 | Aloke Guha | Systems and methods for provisioning of storage for virtualized applications |
US9342463B2 (en) * | 2012-09-20 | 2016-05-17 | International Business Machines Corporation | Management of destage tasks with large number of ranks |
US9235471B2 (en) | 2013-04-29 | 2016-01-12 | Netapp, Inc. | Background initialization for protection information enabled storage volumes |
CN103513938B (zh) | 2013-09-16 | 2016-06-29 | 华为技术有限公司 | 一种独立磁盘冗余阵列raid系统扩容方法及装置 |
CN103617006A (zh) * | 2013-11-28 | 2014-03-05 | 曙光信息产业股份有限公司 | 存储资源的管理方法与装置 |
WO2015173925A1 (ja) * | 2014-05-15 | 2015-11-19 | 株式会社日立製作所 | ストレージ装置 |
WO2016118125A1 (en) | 2015-01-21 | 2016-07-28 | Hewlett Packard Enterprise Development Lp | Virtual storage |
US10296232B2 (en) | 2015-09-01 | 2019-05-21 | Western Digital Technologies, Inc. | Service level based control of storage systems |
US9798584B1 (en) | 2015-09-29 | 2017-10-24 | EMC IP Holding Company LLC | Methods and apparatus for IO sizing based task throttling |
US10678470B2 (en) * | 2016-04-05 | 2020-06-09 | Hitachi, Ltd. | Computer system,control method for physical storage device,and recording medium |
US10089026B1 (en) * | 2016-12-29 | 2018-10-02 | EMC IP Holding Company LLC | Virtual drive based RAID groups |
-
2018
- 2018-02-26 US US15/905,780 patent/US10783049B2/en active Active
-
2019
- 2019-02-15 GB GB2014835.9A patent/GB2584064B/en active Active
- 2019-02-15 JP JP2020542662A patent/JP7139435B2/ja active Active
- 2019-02-15 WO PCT/IB2019/051222 patent/WO2019162811A1/en active Application Filing
- 2019-02-15 CN CN201980012819.0A patent/CN111712802B/zh active Active
- 2019-02-15 DE DE112019000992.3T patent/DE112019000992T5/de active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1617113A (zh) * | 2003-11-13 | 2005-05-18 | 国际商业机器公司 | 向物理内存分配虚拟内存的方法、存储控制器和计算机系统 |
CN103946846A (zh) * | 2011-11-23 | 2014-07-23 | 国际商业机器公司 | 使用虚拟驱动作为用于raid组的热备用 |
CN105612499A (zh) * | 2013-10-29 | 2016-05-25 | 华中科技大学 | 混合高速缓存管理 |
Also Published As
Publication number | Publication date |
---|---|
JP2021515298A (ja) | 2021-06-17 |
US20190266062A1 (en) | 2019-08-29 |
DE112019000992T5 (de) | 2020-12-03 |
GB2584064A (en) | 2020-11-18 |
WO2019162811A1 (en) | 2019-08-29 |
US10783049B2 (en) | 2020-09-22 |
CN111712802A (zh) | 2020-09-25 |
GB202014835D0 (en) | 2020-11-04 |
GB2584064B (en) | 2021-04-14 |
JP7139435B2 (ja) | 2022-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111712802B (zh) | 数据存储系统中的虚拟存储驱动器管理 | |
US9990147B2 (en) | Methods and apparatus for optimizing resource utilization in distributed storage systems | |
US8010485B1 (en) | Background movement of data between nodes in a storage cluster | |
JP4884198B2 (ja) | ストレージネットワークの性能管理方法、並びに、その方法を用いた計算機システム及び管理計算機 | |
US9329792B2 (en) | Storage thin provisioning and space reclamation | |
US11544226B2 (en) | Metadata control in a load-balanced distributed storage system | |
US9785349B2 (en) | Efficient free-space management of multi-target peer-to-peer remote copy (PPRC) modified sectors bitmap in bind segments | |
US11144461B2 (en) | Bandwidth efficient access to persistent storage in a distributed storage system | |
US11144462B2 (en) | Wait classified cache writes in a data storage system | |
US9792061B2 (en) | Efficient cache management of multi-target peer-to-peer remote copy (PPRC) modified sectors bitmap | |
US9535844B1 (en) | Prioritization for cache systems | |
JP2013531283A (ja) | ストレージの仮想化機能と容量の仮想化機能との両方を有する複数のストレージ装置を含んだストレージシステム | |
CN111448554B (zh) | 数据存储系统中的拷贝源至目标管理 | |
US20200379899A1 (en) | Methods for facilitating efficient storage operations using host-managed solid-state disks and devices thereof | |
US20210263653A1 (en) | Implementing coherency and page cache support for a storage system spread across multiple data centers | |
CN107577733B (zh) | 一种数据复制的加速方法及系统 | |
US10885061B2 (en) | Bandwidth management in a data storage system | |
US9785553B2 (en) | Asynchronous cleanup after a peer-to-peer remote copy (PPRC) terminate relationship operation | |
US10530870B2 (en) | Direct volume migration in a storage area network | |
US9535610B2 (en) | Optimizing peer-to-peer remote copy (PPRC) transfers for partial write operations using a modified sectors bitmap | |
US11481147B1 (en) | Buffer allocation techniques | |
US20240220136A1 (en) | Reducing provisioned storage capacity of an aggregate of a storage appliance | |
WO2024145283A1 (en) | Reducing provisioned storage capacity of an aggregate of a storage appliance | |
WO2016132524A1 (ja) | ストレージ管理システム、ストレージ管理方法及びストレージ装置 |
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 |