储存虚拟化控制器间动态逻辑媒体单元重新指定方法

文档序号:6631654阅读:204来源:国知局
专利名称:储存虚拟化控制器间动态逻辑媒体单元重新指定方法
技术领域
本发明涉及一种在储存虚拟化系统中执行主机端输出入(IO)绕送的方法,更进一步地亦揭露有关动态逻辑媒体单元(LMU)重新指定的方法。
背景技术
所谓储存虚拟化(storage virtualization)是一种将实体储存空间虚拟化的技术,其是将实体储存装置(PSDs)的不同区段结合成可供一主机系统存取使用的逻辑储存体(logical storage entity)-在此称为「逻辑媒体单元」(logical media units,LMU)。该技术主要用于磁盘阵列(RAID)储存虚拟化,经由此磁盘阵列的技术,可将较小实体储存装置结合成为容量较大、可容错、高效能的逻辑媒体单元。
一逻辑媒体单元(Logical Media Units,LMU)是一储存体,而其中个别的储存部份(例如储存区块)藉由一逻辑储存位址而被唯一定址。一个常见的LMU的例子为一硬盘实体储存空间经由主机输出入装置连结(Host IO-Device Interconnect)呈现至一主机。于本例子中,尽管在实体层,硬盘被分为磁柱、磁头以及磁区,其呈现于主机者为储存区块的连续组(磁区,sector),且每一储存区块可藉由一单一逻辑区块位址而定址。另一个例子是一储存磁带经由主机输出入装置连结呈现至一主机。
一储存虚拟化控制器(storage virtualization controller,SVC)的主要目的是将实体储存媒体的各区段的组合映射(map)形成一主机系统可见的逻辑媒体单元。由该主机系统发出的输出入(IO)请求于接收之后会先被剖析并解译,且相关的操作及数据会被编译成实体储存装置的输出入请求。这个过程可以是间接地,例如运用快取、延迟(如回写(write-back))、预期(anticipate)(先读(read-ahead))、群集(group)等操作来加强效能及其他的操作特性,因而一主机输出入请求并不一定是以一对一的方式直接对应于实体储存装置输出入请求。
一个外接式(或可称为独立式(stand-alone))储存虚拟化控制器为一种经由输出入介面连接于主机系统的储存虚拟化控制器,且其可连接至位于主机系统外部的装置,一般而言,外接式的储存虚拟化控制器通常是独立于主机进行运作。
外接式(或独立式)直接存取磁盘阵列控制器(external direct-accessRAID controller)是外接式储存虚拟化控制器的一个例子。磁盘阵列控制器是将一或多个实体直接存取储存装置(direct access storage devices,DASDs)的区段组合以构成逻辑媒体单元,而它们的构成方式由所采用的特定磁盘阵列等级(RAID level)决定,其所构成的逻辑媒体单元对于可利用其主机系统而言,为可连续定址的。典型地,一个单一的磁盘阵列控制器(single RAID controllcr)可支援多种磁盘阵列型态,因此,不同的逻辑媒体单元可以由直接存取储存装置的各个区段藉由不同的磁盘阵列等级而以不同的方式组合而成,所组合成的各个不同的逻辑媒体单元则具有各该磁盘阵列等级的特性。
另一个外接式储存虚拟化控制器的例子是JBOD(Just a Bunch ofDrives)模拟控制器。JBOD为『仅是一捆碟机』的缩写,是一组实体直接存取储存装置,并经由一或多个多装置输出入装置连结通道(multiple-device IO device interconnect channel)直接连接于一主机系统上。使用点对点输出入装置连结连接至该主机系统的直接存取储存装置(如SATA硬盘、PATA硬盘等),无法通过直接连结而构成如前述的JBOD系统,因为这些直接存取储存装置并不允许多个装置直接连接至输出入装置通道上。
另一个外接式储存虚拟化控制器的例子为一种外接式磁带备份子系统。
一个储存虚拟化子系统由一或多个上述的储存虚拟化控制器或外接式储存虚拟化控制器,以及连接至其上用以提供储存空间的至少一个PSD所构成。
一个冗余储存虚拟化子系统是一个包含两或多个冗余组态的储存虚拟化控制器的储存虚拟化子系统。将一对储存虚拟化控制器(StorageVirtualization Controller,SVC)设定组态为一对冗余对的主要动机,是让主机可以连续不断地存取数据,即便是在发生了单一个SVC故障(malfunction)或是失效(failure)的情况下。此可藉由以下的方法而达成在各SVC中加入一功能而使得当一个SVC发生问题(handicapped)或是完全失效(completely incapacitated)时,让另一个SVC取代(take overfor)它。在装置端方面,这需要两个SVC均能存取其所管理的所有实体储存装置(PSD),而不论任一个PSD开始时是被指定(assign)给哪一个SVC管理。在主机端方面,这需要每一个SVC,当发生了其同伴(mate)SVC原本并未上线(on line)或是在某一时间点离线(off line)(其发生原因譬如像是因为故障/失效、维护作业等等)等情况时,该SVC都具有能力得以呈现(present)所有可存取的资源(accessible resources)至主机并让这些资源可以为主机所利用(available),这些资源亦包括了原本指定给另一个SVC管理的资源。
一个典型的装置端实作方案为,装置端输出入装置连结(device-sideIO device interconnect)是多发动者(multiple-initiator)、多装置(multiple-device)类型,且所有的装置端输出入装置连结均连接至该等SVC两者,以使得该两SVC任一者皆可以存取任一个连接至一装置端输出入装置连结上的PSD。当该两SVC均上线且为可操作时,每一个PSD将可被其中一个或另一个SVC所管理,通常此是由使用者所设定或由组态设定(configuration)而决定。举例来说,一个由PSD的RAID组合所构成的逻辑媒体单元(logical media unit,LMU)的所有成员PSD,将会为该LMU所被指定的特定SVC所管理。
一个典型的主机端实作方案,包含多装置输出入装置连结(multiple-device IO device interconnect)连接至该一或多个主机以及该两个SVC上,且对每一个连结来说,每一个SVC将会呈现其自身的一组唯一装置识别号(ID),该组唯一装置识别号是用来映射(map)该等LMU的各区段(section)。如果一个特定的SVC并未上线或是已经离线的话,该上线的SVC将会呈现该等两组装置ID-它自身的装置ID组以及在正常状态下指定给它的同伴的装置ID组,并且以相同的方式映射LMU至这些ID,就如同当该两SVC均在线上且处于完全的可操作状态下。以此种实作方案,当一个SVC未上线或离线时,主机部份不需要有特别的功能来从一个装置/路径切换至另一个装置/路径来维持其可以存取所有的LMU各区段。此种类型的实作方案通常称为『透明冗余(transparent redundancy)』的方式。
冗余SVC组态通常被区分为两大类第一类是『主动-待命(active-standby)』式,第二类是『主动-主动(active-active)』式。在第一类『主动-待命』式冗余SVC组态中,其中一个SVC呈现、管理及处理在储存虚拟化子系统(Storage Virtualization Subsystem,SVS)中所有的LMU的所有的IO请求,而另一个SVC仅是处于待命状态并准备好随时取代之,如果该主动SVC发生问题(handicapped)或是完全失效(completelyincapacitated)的话。在第二类『主动-主动(active-active)』式冗余SVC组态中,该两个SVC呈现、管理及处理在储存虚拟化子系统(StorageVirtualization Subsystem,SVS)中同时存在的不同的LMU的IO请求。在主动-主动式组态下,该两个SVC总是随时准备好了当另一个SVC故障而发生问题(handicapped)或是完全失效(completely incapacitated)时取代它。主动-主动式组态通常提供较佳的效能,因为有两个SVC的资源(例如CPU时间、内部汇流排频宽等等),而非仅有一个SVC的资源,可用以服务IO请求。
一冗余SVS的另一项基本条件(element)是,每一个SVC均有能力监视另一个SVC的状态。通常,这可以藉由以下的方式达成-实作一个或多个控制器间通讯通道(inter-controller communications channel,ICCchannel)介于该两SVC之间,而该两SVC则可通过该ICC交换(exchange)操作状态。此等ICC可以是专用的(dedicated)通道,其唯一功能仅是用来交换关于该冗余SVS的操作的参数(parameter)以及数据;或者此等ICC可以是该等IO装置连结,抑或是主机端或者是装置端的IO装置连结,中的一者或多者,而该等操作的参数(parameter)以及数据的交换是与在这些连结上的主机与SVC间或装置与SVC间的IO请求相关数据以多工的方式传递。此等ICC通道也可以是专用的通道与多工的通道的组合。
冗余SVS的另一项重要条件(element)是,一个SVC让另一个SVC完全失效(completely incapacitated)而无干扰地完全取代它的能力。举例来说,存活的(surviving)SVC要承接(take on)其同伴SVC的身分,可能需要承接该离线SVC原来呈现于该主机端IO装置连结的装置ID组,这转而(in turn)需要该离线SVC释出其(relinquish)对该等ID的控制权。此一『失效作用(incapacitation)』通常藉由以下的方式达成-拉启(assert)被下线的SVC上的重置信号线(reset signal line),将所有连接至外部的信号线设为一预先定义的状态(pre-defined state)以消除干扰到存活的SVC的可能性。将该两SVC间接设有重置信号线以使得在此情况下其中一个SVC可以重置另一个SVC是达成此一目的的一种常见方式。另一种达成此一目的的方式是在SVC中建立以下的能力-一SVC可以检测出何时其可能会发生故障,并拉启(assert)其自身的重置信号以『自杀』(例如,加入一个监视者计时器(watchdog timer)而当万一执行于该SVC上的程式不能在一预定的时间间隔内探询(poll)它时拉启一重置信号),而将所有连接至外部的信号线设为一预先定义的状态以消除干扰到存活的SVC的可能性。
由此可见,上述现有的储存虚拟化控制器的控制方法在使用上,显然仍存在有不便与缺陷,而亟待加以进一步改进。为了解决现有的储存虚拟化控制器的控制方法存在的问题,相关厂商莫不费尽心思来谋求解决之道,但长久以来一直未见适用的设计被发展完成,此显然是相关业者急欲解决的问题。因此如何能创设一种新的外接式储存虚拟化控制器的控制方法,便成了当前业界极需改进的目标。
有鉴于上述现有的储存虚拟化控制器的控制方法存在的缺陷,本发明人基于从事此类产品设计制造多年丰富的实务经验及专业知识,并配合学理的运用,积极加以研究创新,以期创设一种新的储存虚拟化控制器间动态逻辑媒体单元重新指定方法,能够改进一般现有的储存虚拟化控制器间动态逻辑媒体单元重新指定方法,使其更具有实用性。经过不断的研究、设计,并经反复试作及改进后,终于创设出确具实用价值的本发明。

发明内容
本发明的目的在于,克服现有的储存虚拟化控制器的控制方法存在的缺陷,而提供一种新的储存虚拟化控制器间动态逻辑媒体单元重新指定方法,所要解决的技术问题是使其基于前述冗余储存虚拟化子系统的概念,发展提供实际可行的实施方案。
本发明的另一目的在于,克服现有的储存虚拟化控制器的控制方法存在的缺陷,而提供一种新的储存虚拟化控制器间动态逻辑媒体单元重新指定方法,在储存虚拟化系统中,当主机支援多重路径功能时,提供一种动态逻辑媒体重新指定的机制,使可动态调整各储存虚拟化控制器的逻辑媒体单元的指定状况,以解决储存虚拟化控制器间负载不平衡的问题,或者解决当一储存虚拟化控制器接收到一主机端输入请求,而此储存虚拟化控制器并非此输出入请求所定址的逻辑媒体单元目前所指定的储存虚拟化控制器时,而产生的无法处理该输出入请求的问题。
本发明与现有技术相比具有明显的优点和有益效果。由以上技术方案可知,本发明的主要技术内容如下为了达到上述目的,依据本发明的一特色,提供有一种于储存虚拟化子系统中执行动态逻辑媒体单元重新指定的方法,该储存虚拟化子系统包含复数个储存虚拟化控制器及一实体储存装置阵列连接于其上,该实体储存装置阵列包含至少一实体储存装置,且定义有至少一逻辑媒体单元,该逻辑媒体单元包含该实体储存装置阵列的复数区段;该等储存虚拟化控制器的一启始一第一逻辑媒体单元的重新指定;及一为该至少一逻辑媒体单元的一第一逻辑媒体单元的拥有者的第一储存虚拟化控制器依据该启始指示而释出该第一逻辑媒体单元,并使该第一逻辑媒体单元指定移转一第二储存虚拟化控制器,使其成为新的该第一逻辑媒体单元的拥有者。
于本发明的一实施例中,该启始重新指定的储存虚拟化控制器为该第一储存虚拟化控制器。
于本发明的另一实施例中,该启始重新指定的储存虚拟化控制器为该等储存虚拟化控制器中的一第三储存虚拟化控制器。
于本发明的又一实施例中,该启始重新指定的储存虚拟化控制器为该第二储存虚拟化控制器。
其中前述第二储存虚拟化控制器是在接收到一定址于该第一逻辑媒体单元的输出入请求后启始该重新指定第一逻辑媒体单元。
而该第二储存虚拟化控制器是在成为该新的第一逻辑媒体单元拥有者之前是将所接收到的定址于该第一逻辑媒体单元的输出入请求放入队列中,并于成为该新的第一逻辑媒体单元拥有者后处理该等队列中定址于该第一逻辑媒体单元的输出入请求以及任何新接收到定址于该第一逻辑媒体单元的输出入请求。
在本发明的一实施例中,在该第一储存虚拟化控制器释出该第一逻辑媒体单元之前是将必须由该第一逻辑媒体单元拥有者来进行的逻辑媒体单元虚拟化的操作进行下列的一处理暂停、放弃及等待其做完。且若为暂停或放弃必须由该第一逻辑媒体单元拥有者来进行的逻辑媒体单元虚拟化的操作,则该第二储存虚拟化控制器成为该新的第一逻辑媒体单元拥有者后继续进行该暂停或放弃的逻辑媒体单元虚拟化的操作。
在本发明的另一实施例中,在第一储存虚拟化控制器释出该第一逻辑媒体单元之前更包括执行以下步骤允许并使任何进行中而定址于该第一逻辑媒体单元的输出入请求做完;让任何定址于该第一逻辑媒体单元的主机输出入的执行暂停;及将任何还没开始的定址于该第一逻辑媒体单元的输出入请求放入队列中。
在本发明的又一实施例中,该第一储存虚拟化控制器释出该第一逻辑媒体单元的步骤包括有改变其自身的逻辑媒体单元指定状态版本以指出该第一逻辑媒体单元已不再指定给该第一储存虚拟化控制器。
在该第一储存虚拟化控制器于释出该第一逻辑媒体单元后是以一个指定通知告知该第二储存虚拟化控制器说该第一逻辑媒体单元已指定移转给该第二储存虚拟化控制器。
而当该第二储存虚拟化控制器收到该指定通知后,改变其自身的指定状态版本以指出该第一逻辑媒体单元现在已经指定给该第二储存虚拟化控制器。
前述改变指定状态版本中,包括修改其自身的数据快取控制结构。
在本发明的一实施例中,该第一储存虚拟化控制器于释出该第一逻辑媒体单元后,是对该第二储存虚拟化控制器发送请求该第一逻辑媒体单元所有权归还,以请求该第二储存虚拟化控制器在之后归还该第一逻辑媒体单元的所有权。
在本发明的另一实施例中,该第一储存虚拟化控制器是将在该逻辑媒体单元重新指定过程中任何放入队列的定址于该第一逻辑媒体单元的输出入请求绕送至该第二储存虚拟化控制器。
在本发明的一实施例中,更包含一协调机制,用以在产生该等储存虚拟化控制器中有复数个储存虚拟化控制器同时启始该第一逻辑媒体单元的重新指定时决定重新指定的对象。
前述的协调机制可为该第一储存虚拟化控制器所执行,且于该释出该第一逻辑媒体单元后通知该等储存虚拟化控制器的其他储存虚拟化控制器谁成为该新的第一逻辑媒体单元的拥有者。
或前述的协调机制为一第三储存虚拟化控制器所执行,该第一储存虚拟化控制器于释出该第一逻辑媒体单元后通知该第三储存虚拟化控制器,该第三储存虚拟化控制器通知该等储存虚拟化控制器的其他储存虚拟化控制器谁成为该新的第一逻辑媒体单元的拥有者。
在一实施例中,前述的协调机制是依据该等启始第一逻辑媒体单元的重新指定程序的储存虚拟化控制器中所具有的定址于该第一逻辑媒体单元的主机输出入请求的时间长短来决定该重新指定对象。
本发明的一实施例中,该第一储存虚拟化控制器于释出该第一逻辑媒体单元之前,包含一判断是否达到可释出该第一逻辑媒体单元的时机的步骤。
前述的判断步骤可包括下列至少之一步骤查核是否对该该第一逻辑媒体单元保持了一段最小指定保持期间、查核是否有任何定址于该第一逻辑媒体单元的输出入请求、及查核该第一逻辑媒体单元的输出入空窗期间是否超过一预定的输出入空窗期间临界值。
前述的输出入空窗期间设定为开始于收到最后一个定址于该第一逻辑媒体单元的主机输出入请求。
或者该输出入空窗期间的起始时点设定于当处理一定址于该第一逻辑媒体单元的输出入请求完成时,并于收到一新的定址于该第一逻辑媒体单元的输出入请求时取消计时。
在本发明的进一步的实施例中,该等储存虚拟化控制器可以执行主机端输出入绕送程序,以使该等储存虚拟化控制器于收到非指定于其自身的一特定的逻辑媒体单元的输出入请求时,可转送至该特定逻辑媒体单元的拥有者的储存虚拟化控制器处理。
在前述同时可执行绕送程序的实施例中,该重新指定过程可更包含有以下步骤该第一储存虚拟化控制器在释出该第一逻辑媒体单元之前,指示其他的该储存虚拟化控制器让定址于该第一逻辑媒体单元正在执行绕送的输出入请求执行完毕,并将定址于该第一逻辑媒体单元的主机输出入请求的绕送暂停;及该等储存虚拟化控制器于收到该指示后进行相关的动作。
前述绕送暂停步骤包含将所有定址于该第一逻辑媒体单元的输出入请求存入队列。
在另一实施例中,更包括有一决定步骤,用以决定是否启始该第一逻辑媒体单元的重新指定,并于启始该第一逻辑媒体单元的重新指定程序前,该等储存虚拟化控制器中的非该第一逻辑媒体单元的拥有者于收到定址于该第一逻辑媒体单元的输出入请求时执行该绕送程序。
前述决定步骤包含执行一输出入流动的智慧型分析功能的操作。
在一实施例中,前述智慧型分析功能的操作包括以下步骤计算对于该第一逻辑媒体单元经过经过该段时间的输出入比率及数据比率;以及检测该输出入比率及数据比率是否与一事先定义的条件相符合,当该条件符合时,才能将执行该第一逻辑媒体单元重新指定功能。在另一实施例中,前述智慧型分析功能的操作包括以下步骤计算对于该第一逻辑媒体单元经过某一段时间的输出入比例;以及查核是否该输出入流所显示的实际比例值超过一第一临界值,若是,才能启始该第一逻辑媒体单元重新指定,其中该该第一临界值为在一段期间内被绕送的定址于该第一逻辑媒体单元的输出入请求与其他未被绕送的输出入请求的比例。
在又一实施例中,前述智慧型分析功能的操作包括以下步骤计算对于该第一逻辑媒体单元经过某一段时间的数据比例;以及查核是否该输出入流所显示的实际比例值超过一第二临界值,若是,才能启始该第一逻辑媒体单元重新指定,其中该第二临界值为在一段期间内被绕送的定址于该第一逻辑媒体单元的单位时间数据量与其他未被绕送的单位时间数据量的比例。
在再一实施例中,前述智慧型分析功能的操作更包括以下步骤计数该输出入流所显示的实际比例值超过该临界值的次数;及检查该所计数超过该临界值的次数是否以超过或等于一临界值次数,当该所计数的次数超过或等于该临界值次数时,才能启始该第一逻辑媒体单元重新指定程序。
或在一实施例中,前述智慧型分析功能的操作包括以下步骤计算对该第一逻辑媒体单元经过一段时间的输出入流所显示的实际比例值超过该临界值的时间;及检查该所计算的超过该临界值时间是否以超过或等于一临界值期间,并当该所计算的时间超过或等于该临界值期间时,才能启始该第一逻辑媒体单元重新指定程序。
而在进一步的实施例中,该智慧型分析功能的操作包括以下步骤检测自从前一次该第一逻辑媒体单元重新指定后的时间是否已经超过一等候期间,若未超过,则该第一储存虚拟化控制器不会发动执行该重新指定功能。
在本发明的一实施例中,更包括执行一负载平衡逻辑媒体单元重新指定机制以决定是否启始该重新指定。
前述的负载平衡逻辑媒体单元重新指定机制包括有以下步骤监测该等储存虚拟化控制器间的处理负载的平衡;及检查该等储存虚拟化控制器间是否存在有处理负载上的实质不平衡,并当存在有处理负载上实质不平衡时,才能执行逻辑媒体单元重新指定。
又,为了达到上述目的,本发明还提供了一种储存虚拟化子系统,包含复数个储存虚拟化控制器及一实体储存装置阵列连接于其上,该实体储存装置阵列包含至少一实体储存装置;至少一逻辑媒体单元,该逻辑媒体单元包含该实体储存装置阵列的复数区段;该等储存虚拟化控制器的一启始一第一逻辑媒体单元的重新指定;及一为该至少一逻辑媒体单元的一第一逻辑媒体单元的拥有者的第一储存虚拟化控制器依据该启始指示而释出该第一逻辑媒体单元,并使该第一逻辑媒体单元指定移转一第二储存虚拟化控制器,使其成为新的该第一逻辑媒体单元的拥有者。
在本发明的一实施例中,前述的储存虚拟化子系统可以执行主机端输出入绕送。
在本发明的另一实施例中,该等储存虚拟化控制器的至少一者具有一该第一逻辑媒体单元的输出入请求状态表,用以纪录该等储存虚拟化控制器中的非该第一逻辑媒体单元拥有者的其他各储存虚拟化控制器的各该第一逻辑媒体单元的输出入请求收迄时间。
其中该具有该状态表的储存虚拟化控制器为该第一储存虚拟化控制器。
其中该具有该状态表的储存虚拟化控制器为一第三储存虚拟化控制器。
在本发明的又一实施例中,该等逻辑媒体单元支援藉由使用者组态设定以动态地重新指定而不需要重新初始化任一个SVC。
又,为了达到上述目的,本发明还提供了一种电脑系统,包含一主机及一储存虚拟化子系统连接于其上;该储存虚拟化子系统包含复数个储存虚拟化控制器及一实体储存装置阵列连接于其上,该实体储存装置阵列包含至少一实体储存装置;该储存虚拟化子系统并定义至少一逻辑媒体单元,该逻辑媒体单元包含该实体储存装置阵列的复数区段;该储存虚拟化子系统更包含该等储存虚拟化控制器的一启始一第一逻辑媒体单元的重新指定程序;及一为该至少一逻辑媒体单元的一第一逻辑媒体单元的拥有者的第一储存虚拟化控制器依据该启始指示而释出该第一逻辑媒体单元,并使该第一逻辑媒体单元指定移转一第二储存虚拟化控制器,使其成为新的该第一逻辑媒体单元的拥有者。
在本发明的一实施例中,该储存虚拟化子系统可执行主机端输出入绕送。
在本发明的另一实施例中,该储存虚拟化子系统及一主机被设置成可执行分离冗余路径输出入传送功能。
在本发明的又一实施例中,该主机是被预先设定组态成,当其发送定址于该第一逻辑媒体单元的输出入请求时,是通过连接该主机与该第一逻辑媒体单元所指定的储存虚拟化控制器的连结来发送该输出入请求,而当该第一逻辑媒体单元无法再通过前述路径存取,才改经连接该主机与其他储存虚拟化控制器的连结来发送该输出入请求。
再,为了达到上述目的,本发明还提供了一种储存虚拟化控制器,是用于一储存虚拟化子系统而与该子系统中的一第二储存虚拟化控制器互为冗余组态,该储存虚拟化控制器包含一中央处理电路,用以执行输出入操作以回应于一主机的输出入请求;至少一主机端输出入装置连结端口设置来连接至该主机;至少一控制器间通讯通道控制器用以连接至该第二储存虚拟化控制器;及其中该中央处理电路被构造成可用以执行动态逻辑媒体单元的重新指定。
在本发明的一实施例中,该储存虚拟化控制器亦可以执行主机端输出入请求绕送。
经由上述可知,本发明一种执行主机端输出入请求绕送以及动态逻辑媒体单元重新指定的储存虚拟化子系统。在一实施例中,当一主机输出入请求为一储存虚拟化控制器所接收到而该储存虚拟化控制器不是该主机输出入请求所定址的逻辑媒体单元的逻辑媒体单元拥有者时,该输出入请求可被绕送至另一储存虚拟化控制器-该逻辑媒体单元拥有者-而被执行。在另一实施例中,该逻辑媒体单元拥有者的指定可以动态地重新指定给原先不是逻辑媒体单元拥有者的接收储存虚拟化控制器,而使得该接收储存虚拟化控制器变成新的逻辑媒体单元拥有者以执行该主机输出入请求。
借由上述技术方案,本发明储存虚拟化控制器间动态逻辑媒体单元重新指定的储存虚拟化子系统方法至少具有下列优点在现有的储存虚拟化子系统的基础上本发明中具有多重路径功能性(multi-pathing functionality)的实作方案中所采用组态具有的优点为,不需要开关电路(switch circuitry)来连接该两SVC6002,6003的主机端IO装置连结,因而减少了主动元件的数目,也因而减少了易于失效元件的数目(因为主动元件较易于失效),同时也降低了SVC的成本。
综上所述,本发明特殊的储存虚拟化控制器间动态逻辑媒体单元重新指定方法,其具有上述诸多的优点及实用价值,并在同类方法中未见有类似的方法及结构设计公开发表或使用而确属创新,其不论在方法或功能上皆有较大的改进,在技术上有较大的进步,并产生了好用及实用的效果,且较现有的外接式储存虚拟化控制器的控制方法具有增进的多项功效,从而更加适于实用,而具有产业的广泛利用价值,诚为一新颖、进步、实用的新设计。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。


图1是一典型的冗余储存虚拟化子系统实作方案的方块图。
图2是另一冗余储存虚拟化子系统实作方案的方块图。
图3是描述一非冗余(non-redundant)储存虚拟化子系统的组态。
图4是描述一冗余(redundant)储存虚拟化子系统的组态。
图5是描述依据本发明的一实施例的一冗余储存虚拟化子系统的组态,其中是以多装置主机端输出入装置连结将主机与两个储存虚拟化控制器连接在一起。
图6显示依据本发明的一实施例的一组态,其中该主机具有多重路径功能性(multi-pathing functionality)。
图7显示依据本发明的一实施例的一组态,其中是设置有多重冗余路径(multiple redundant paths)。
图8显示依据本发明的一实施例的一种具有分离冗余路径(splitredundant paths)于主机与储存虚拟化子系统间的实作方案。
图9显示依据本发明的另一实施例的一种具有分离冗余路径于主机与储存虚拟化子系统间的实作方案。
图10显示依据本发明的一实施例,其中该两个储存虚拟化控制器各设置有一个控制器间通讯通道控制器且由一个控制器间通讯通道连接在一起,同时该等储存虚拟化控制器的主要功能方块图亦显示于图中。
图11A、图11B及图11C显示依据本发明的一实施例的一种主机端输出入绕送流程。
图12A是描述依据本发明的一实施例的一逻辑媒体单元动态重新指定程序的主要操作流程。
图12B是描述依据本发明的一实施例的一典型的逻辑媒体单元重新指定程序。
图13是描述依据本发明的一实施例的一逻辑媒体单元重新指定起始时机分析的流程图。
图14A及图14B是为说明逻辑媒体单元重新指定起始时机的一些实例。
图15A及图15B例示依据本发明的一实施例的一用以设定该输出入空窗期间的开始时点的改良机制。
图16A及图16B描述依据本发明的一实施例的一涉及主机端输出入绕送的逻辑媒体单元重新指定程序。
图17A是例示依据本发明的一智慧型输出入流分析的一实施例。
图17B是例示依据本发明的另一智慧型输出入流分析的一实施例。
图17C是例示依据本发明的又一智慧型输出入流分析的一实施例。
图17D是例示依据本发明的再一智慧型输出入流分析的一实施例。
图18是例示依据本发明的又再一智慧型输出入流分析的一实施例。
图19A及图19B是例示依据本发明的一智慧型输出入流分析的其他的实施例。
图20是描述依据本发明的一实施例的负载平衡逻辑媒体单元重新指定机制。
图21是描述依据本发明的一实施例的重新指定时机决定机制。
10,1001,2001,3001,4001,5001,6001,7001,8001,9001主机1002,2000,2002,3002,4002,5002,6002,7002,8002,9002第一储存虚拟化控制器1003,2003,2900,4003,5003,6003,7003,8003,9003第二储存虚拟化控制器1005,2005,3005,4005,8005,9005实体储存装置2200主机端输出入装置连结控制器2360ICC连结控制器2400中央处理电路2700控制器间通讯通道2800记忆体3000装置端输出入装置连结控制器3400,4004存取控制开关4000,5005,6005,7005实体储存装置阵列具体实施方式
请参阅图1,所示为一典型的冗余储存虚拟化子系统(SVS)实作方案的方块图。该SVS包含两个储存虚拟化控制器(SVC),第一储存虚拟化控制器(SVC1)1002及第二储存虚拟化控制器(SVC2)1003,以及复数个实体储存装置(PSD)1005通过两个装置端IO装置连结而连接于其上。一个控制器间通讯(ICC)通道设置于该两SVC之间。该等SVC1002,1003是通过主机端IO装置连结而连接至一主机1001上。请注意,该主机端IO装置连结的连接方式使得一个SVC(例如SVC1 1002)可以取代其同伴SVC(例如SVC2 1003),藉由接管在正常状态下将会被其同伴SVC呈现至该连结上的该等IO装置连结ID,并将LMU的各区段以相同于其同伴SVC会采用的方式映射至这些ID上。同时,请注意,该装置端IO装置连结的连接方式使得该两SVC可以存取被连接至该等装置端IO装连结上的所有PSD。在本例中,一个典型的、可能用于或是主机端或是装置端上的IO装置连结可以是平行小型电脑系统介面(Parallel Small Computer System Interface,Parallel SCSI)或是光纤通道仲裁回路(Fibre Channel-Arbitrated Loop,FC-AL),因为两者皆为多发动者、多装置IO装置连结(multiple-initiator,multiple-device IO deviceinterconnect),且因而两个SVC(1002及1003)可以操作于目标模式(亦即,装置模式)下而被连接至在主机端上的单一个连结,且让该两SVC(1002及1003)可操作于发动者模式下,而与多个装置一起,被连接至装置端上。
图1中的组态有的缺点如下,单一个PSD1005的故障,端视其故障的性质而定,可能会使整个装置端IO装置连结当机,因而使得在同一连结上的所有其他的PSD1005均无法存取(inaccessible)。
请参阅图2,图2是另一冗余SVS实作方案的方块图。该SVS包含两个SVC(SVC1及SVC2)2002,以及复数个PSD2005通过四个装置端IO装置连结而连接于其上,其中每一个PSD2005连接至两个装置端IO装置连结。一个ICC通道设置于该两SVC之间。该等SVC2002是通过主机端IO装置连结而连接至一主机2001上。图2中所示的组态是图1的改善,有效地避免了因为造成单一个装置端IO装置连结失效的故障而产生的连接在相同装置端IO装置连结上的其他PSD2005的存取中断,此是利用双端口PSD2005以及增加一条额外的连结至每一PSD2005而达成。以此方式,单一装置端IO装置连结的阻断(可能由在PSD上的连结控制器IC故障所致),将不会造成连接于相同连结上的其他PSD2005无法存取,因为连接至该等相同PSD2005每一者上的该第二条连结可以用来存取该等PSD2005而不会受到干扰。
在图2中的组态更有以下的优点IO请求负载可以分散于该等冗余装置端连结之间,因而使装置端IO装置连结子系统的总频宽相较于每个PSD仅具有单一连结的组态加倍。在此种情况下,典型的装置端IO装置连结选择将会是光纤FC-AL,因为在市场上的该光纤FC-AL PSD的双端口性质,以及该光纤协定的元件使得一个发动者,譬如一个SVC,可以决定在不同的连结上的那一个连结ID对应至相同的PSD。
虽然在图2中的组态,实际上,在遇到装置端IO装置连结失效时,远比图1中的组态强固,但仍然有可能会发生一个PSD2005的故障使连接至其双端口对两个IO装置连结均当机的情形。如果这种情形真的发生的话,再次地,连接至相同连结对上的其他PSD2005的存取亦将会中断。在由PSD2005的标准的单一冗余RAID组合(例如,RAID5)所构成的LMU中,这保证会是一场大灾难,因为这将造成RAID组合中的多个PSD2005下线,导致整个LMU也因而下线。
请参阅图3,图3是描述一非冗余(non-redundant)储存虚拟化子系统的组态,其中每一PSD3005是由连接每一个PSD3005至该SVC3002的一专用的装置端IO装置连结所服务。该SVC3002是通过主机端IO装置连结而连接至一主机3001上。此一组态对于单一装置点对点输出入装置连结(single-device point-to-point IO device interconnect)而言,譬如SATA,是必要的。相较于连接于多个装置上的多装置IO装置连结而言,此组态提供了两个不同的优点。第一个优点是其对抗IO装置连结失效上的强固性(robustness)。在一个PSD 3005上或连结上的故障,顶多仅影响到该单一的连结/连接的PSD3005。所有其他的PSD3005仍然保持完全地可存取,因为他们是由其自身的专用的连接该PSD3005至该等SVC3002的IO装置连结所服务。第二个优点为其全然的效能扩展性。在图1及图2中的组态中,多个PSD1005,2005共用单一个连结,增加PSD仅能让效能扩展至单一连结频宽的最大值,超过以后再增加PSD并无法产生任何效能上的增进。
在图3中的组态中,每一个PSD3005是由一专用的连结所服务,随着PSD3005及/或连结数目的增加,由所有连结及/或PSD3005所构成的装置端子系统的效能可以无限地扩展。然而,在每PSD3005具有一专用的连结的组态中(如图3中所显示者)使用普通标准多装置IO装置连结譬如像是平行SCSI或光纤,成本效益不佳,因为此等连结的每端口成本相当地高。然而,每端口成本相当的低的SATA IO装置连结的出现,带给了此种组态成本低廉的好处。
请参阅图4,图4是描述一冗余(redundant)储存虚拟化子系统的组态,其中结合有专用的单一装置、点对点IO装置连结以将所有的PSD4005连接至两个SVC(SVC1及SVC2)4002上。为了让两个SVC可以存取相同的PSD,一个开关电路(switching circuit)4004,下文中称为『存取控制开关(accesscontrol switch)』,是被插入至装置端IO装置连结路径中、介于该等SVC与该PSD4005之间。因为该连结的点对点本质,一次仅有一个SVC,在当时被指定给该特定PSD的该SVC,可以启动存取该PSD。另一个SVC相对于此一PSD维持于一待命(stand-by)模式,而它连接至该特定PSD的IO装置连结被禁能(disabled)。
藉由每个PSD4005结合专用的连结,图4中的该冗余SVS有效地避免了可能发生的下列后果-在一装置端IO装置连结中断掉或阻断的情形(可能因为一个PSD4005失效而产生),将会造成多个PSD4005无法存取。在主机端,单一个主机端IO装置连结的失效(可能是因一个SVC故障而产生),可能也会造成整个连结的阻断,因而造成该一或该等SVC无法经由该连结存取。典型的解决方法是提供多个冗余路径(path)至每一个由该等SVC所呈现的LMU,此可藉由将每一个LMU在不只一个主机端连结上呈现给该等主机而达成。此种实作方案可见于图6。
在本发明的一个典型的冗余SVS中,每一个呈现给主机端的LMU将被指定给其中的一个SVC或另一个SVC以处理主机IO。这是因为,在处理一个主机IO的过程中,有某些关于一个特定LMU的一些操作必须完整地一起执行(perform atomically),这表示不会有可能修改相关状态的其他操作来插断(interruption)。要完整地一起执行一些操作,通常需要协调正在处理定址于相同LMU的不同执行绪(thread)。当这些执行绪执行于单一SVC上时,执行绪间协调(inter-thread coordination)可以很容易地且有效率地完成而不会造成严重的效能劣化。然而,如果这些执行绪是在不同的SVC上执行的话,SVC间沟通将会频繁地被呼叫来达成执行绪间协调。这不仅会大幅增加设计上的复杂度,而且通常会导致严重的效能劣化。实际上,所产生的效能劣化通常将会远超过原先因为让该等冗余SVC执行于主动-主动模式下所达成的效能增进。
在此,主机IO的处理与LMU指定有关时通常将包括与特定IO处理相关的数据快取操作及与LMU虚拟化处理有关的操作,该等与LMU虚拟化处理有关的操作是可将该LMU映射至实体储存装置。数据快取操作包括如下的情形(a)为被一主机IO所存取的数据搜寻快取记忆体;(b)如果IO相关数据的某些部分目前没有指定快取缓冲区(cachebuffer)来储存的话,分派快取缓冲区来达成此一功能;(c)如果要读取的数据不在快取记忆体中的话,启动IO请求以将该数据自该LMU读取进入该快取记忆体;(d)开始IO相关数据转移的程序,自该主机与被指定来储存该IO相关数据的快取缓冲区之间往返。
(e)对于写入而言,如果是在完全写入模式(write-through mode)下,启动IO请求以将数据自快取的镜像(cached image)写至该LMU中。
LMU虚拟化包括如下的情形(a)将LMU的IO映射至实体储存装置。这可能涉及到将LMU的IO操作的一部份分割成多个实体储存装置IO操作及/或将不同的LMU的IO操作的一部份结合成为单一个PSD操作。
(b)产生冗余数据,譬如RAID同位数据,并将其写至各个适当的PSD的适当位置。
(c)从冗余数据重新产生无法从一特定的PSD回复的数据(其原因可能是该PSD已经失效了或是不存在),可能是利用将该冗余数据与其他PSD上的数据结合而达成。
(d)将一PSD上的数据回复至与其他PSD上的数据一致的状态,此称为PSD数据重建。譬如像是,如果一个PSD被替换掉了因而需要将该PSD的数据重建的话,可能会需要这么做。
(e)当需要时,重新配置数据及重新产生冗余数据于PSD上,以回应于在LMU组态上的变化;在此称为LMU组态修改。新增磁碟机至LMU并重新分割以将该等新增磁碟机纳入或改变RAID等级,将会需要此一操作。
在这个清单中,有些LMU虚拟化操作并不直接涉入主机IO的处理(譬如,PSD数据重建或LMU组态修改),而这,需要他们可以被执行于同一负责处理IO的SVC上(目前LMU所指定的SVC),以避免过多的控制器间协调。
因为LMU通常被指定给其中的一个SVC或另一个SVC以处理IO,每一个主机必需具有一条路径让它能经由LMU所指定的SVC来存取每一个呈现给它的LMU。当主机端IO装置连结为多装置连结时,达成此一目的的最简单的方式是将该两SVC的主机端连接在一起而如图5所示。以汇流排式的(bus-style)连结,譬如平行SCSI,此通常可以达成而无需额外的电路,然而以其他类型的连结,譬如光纤,可能需要开关电路(switching circuit)以达成此连结。在此种组态中,主机5001端可以存取任何由该SVS所呈现的LMU(是由PSD阵列5005的各个区段结合而成)而独立于将该LMU呈现给主机端的SVC。此种组态对于以下的实作方案特别地重要-主机5001不具有特别软体执行于其上,而让该主机于一路径不再提供存取至一特定的LMU的情况下可以聪明地切换于该等冗余的存取路径之间(在此称为『多重路径功能』(multi-pathing functionality))-因为它使得主机可以当一LMU原本指定的SVC(例如SVC2 5003)下线时,继续经由在线上的SVC(例如SVC1 5002)存取LMU。一个SVC可以取代其同伴SVC,藉由接管在正常状态下将会被其同伴SVC呈现至该连结上的该等IO装置连结ID,并将LMU以相同于其同伴SVC原本会采用的方式映射至这些ID上。此种类型的冗余SVC组态通常称为『透明的(transparent)』冗余组态且此种接管机制是为『透明的(transparent)』接管机制,因为主机不需要被告知何时一个SVC将会从另一个SVC处接管其IO处理。
请参阅图6,图6显示该主机6001具有多重路径功能性(multi-pathingfunctionality)的实作方案中所可以采用的另一个组态。在此组态中,如果一特定LMU所指定的SVC下线(或是该LMU指定仅是从一个SVC改变至另一个SVC)的话,在该主机6001上的多重路径功能性将会自动处理IO的绕送(rerouting),而将IO从该主机6001至该下线SVC的连结上绕送(rerouting)到该主机至该线上SVC的连结上去。此种组态具有的优点为,不需要开关电路(switch circuitry)来连接该两SVC6002,6003的主机端IO装置连结,因而减少了主动元件的数目,也因而减少了易于失效元件的数目(因为主动元件较易于失效),同时也降低了SVC的成本。然而,在此种组态中,至少需要两个主机端口,因而增加了主机上的实作上的成本。此外,该等主机本身每一个必须为每一个SVC提供主机端口与每一个SVC上的主机端端口数量相同。
藉由在冗余SVS中结合以专用的连结或多重冗余连结于每个PSD上,在图2及图4中所描绘的冗余SVS消除了以下的风险-在该等装置端连结的一者中发生断掉或是阻断的情形,将会导致多个PSD无法存取而有可能造成一LMU的下线。在主机端,单一主机端IO装置连结的失效(可能是因为形成实体连结一部份的缆线连接断了所造成的),也可能造成整个连结的失效,因而导致无法经由该连结存取SVC。
通常用来消除因为单一主机端IO装置连结的断掉或阻断而无法存取LMU的风险的一种组态为图7中所显示的多重冗余路径(multipleredundant paths)。在此一组态中,每一个呈现给主机7001的LMU的各区段可以通过至少两个连结来存取,因此如果一个连结真的断了或是被阻断的话,主机仍然可以通过其他的连结来存取。当然,这需要在主机上实作上述的多重路径功能性(muli-pathing functionality)以达成IO的绕送(rerouting),万一通过一特定主机端连结无法存取至一LMU的话。
在图7及图6中所显示的组态中,每个SVC有两个主机端连结端口。在单个SVC上的这两个端口形成一冗余端口互补对(redundant portcomplement),每一个指定给该SVC的LMU则可通过端口互补对中任一个端口来存取。万一一个连结断了或是被阻断的话,或是万一一个端口故障的话,LMU的存取可通过互补端口来进行而获得保证。再次地,请注意,在图7及图6中所显示的组态间的取舍。在图7中,该两SVC的主机端连结是连接在一起,此可能需要主动开关电路(switch circuitry),且主机端连结的频宽相加仅能允许其为该两SVC的主机端连结端口的频宽总合的一半。在图6中,在SVC上的每一个主机端连结端口是以一专用的连结连接至一主机连结端口,使得连结的频宽可以依SVC端口的数目放大,但却为因主机端口较多而增加了主机平台的费用。
虽然在一冗余SVC实作方案中,其每一个SVC配置有一对端口用作为冗余端口的目的可以达成本发明的目标(goal),惟其缺点在于成本太高,其是因为既要过多的SVC端口,又要或是开关电路(switch circuitry)用于某种IO装置连结类型(type)譬如光纤FC-AL以将该两SVC上的互补端口(complementary port)连结在一起,或是增加主机的端口数。
请参阅图8及图9,显示了一种实作方案可以有效地将该等SVC上所需的端口数目减半,且可以消除在该等主机端连结的连接及其所必需的开关电路(switch circuitry)。在图8及图9各别中,每一个SVC是被连接至该主机,以该SVC的一主机端端口通过一个主机端IO装置连结而连接至该主机的主机端口。在图8中所示者是使用双端口(dual-ported)SAS实体储存装置,然而在图9中,是使用单端口(single-ported)实体储存装置。它基本上结合了SVC冗余性以及端口的冗余性两者所需的互补特性(complementary aspect)而成为单一对的端口,每个端口设在一个SVC上。在此种实作方案中,LMU的各个区段(section)是由该两SVC在主机端IO装置连结上呈现给主机。此种组态为分离冗余路径(split redundant paths)的一个例子。所谓分离冗余路径是在一冗余储存虚拟化系统(SV system)中的每一个SVC上,恰有一条(存在有一条且只有一条)路径连接到呈现给主机的一LMU的任一个区段(section)。在此一组态中,因为LMU或是其区段是由该两SVC呈现给该主机,在任何时候(也许是因为察觉到路径失效),可以开始IO绕送而将IO绕送至不是LMU目前所指定的SVC去。
本发明更进一步地定义了一功能性,此处称为『主机端IO绕送』,其中当IO由一个SVC所接收到,而该SVC却不是该被定址的LMU所指定的SVC,则所接收到的IO被绕送至该被定址的LMU所指定的SVC去。该被定址的LMU所指定的SVC在下文中称为『LMU所有者』。此种绕送通常将通过控制器间通讯通道(inter-controller communication channel,简称ICC通道)发生,这种ICC通道是用作为两个SVC间的主要通讯媒介。
两个SVC各设置有一个ICC通道(或连结)控制器的例子且由一个ICC通道2700连接在一起的实例可见图10,其中该等SVC的主要功能方块亦显示于图中。在此实施例中,SVC1 2000包含有一主机端输出入装置连结控制器2200,一中央处理电路(central processing circuit,CPC)2400,一记忆体2800,及一装置端输出入装置连结控制器3000,及一ICC连结控制器2360。此处虽以分开的功能方块描述,但于实际应用时,两个以上,甚至全部的功能方块(functional block)可皆整合在一单一芯片上。例如,该ICC连结控制器可以与该主机端输出入装置连结控制器或是该装置端输出入装置连结控制器甚或是与其两者整合为一单一芯片IC。
主机端输出入装置连结控制器2200连接至主机10及中央处理电路2400,用来作为储存虚拟化控制器2000及主机10之间的介面及缓冲,其可接收由主机10传来的输出入请求和相关数据,并且将其映射及/或传递至中央处理电路2400。主机端输出入装置连结控制器2200可以包含有一或多个用来耦接于该主机10的主机端端口。此处所提及端口的类型可以为光纤通道支援Fabric(Fibre Channel supporting Fabric)、点对点连结、公用回路连结及/或专用回路连结于目标模式,操作于目标模式的平行SCSI,支援网际网路SCSI(Internet SCSI;iSCSI)协定且操作于目标模式的乙太网路,操作于目标模式的序列附加(serial-attached)SCSI(SAS),以及操作于目标模式的SATA。该装置端输出入装置连结控制器3000及该ICC连结控制器2360每一者可包含一个或多个端口支援目标及/或发动者模式下的协定,例如那些主机端输出入装置连结控制器2200的主机端端口所支持的协定,以与其他连接于其上的装置通讯。
该中央处理电路2400主要包含CPU及CPU芯片组用以处理及/或监控IO请求处理及LMU虚拟化操作。当中央处理电路2400接收到来自主机端输出入装置连结控制器2200的主机输出入请求时,中央处理电路2400会将此输出入请求剖析,并且执行一些操作以回应此输出入请求,以及将SV12000所请求的数据及/或报告及/或资讯,经由主机端输出入装置连结控制器2200传送至主机10。
将主机10传入的输出入请求剖析之后,若所收到的为一读取请求且一或多个操作被执行以为回应时,中央处理电路2400会由内部或由记忆体2800中或藉由此二种方式取得所请求的数据,并将这些数据传送至主机10。若所请求的数据无法于内部取得或并不存在于记忆体2800,该读取请求将会经由装置端输出入装置连结控制器3000发送至实体储存装置阵列4000,然后这些所请求的数据将由实体储存装置阵列4000传送至记忆体2800,之后再经由主机端输出入装置连结控制器2200传送到主机10。
当由主机10传入一写入请求(write request)传达至中央处理电路2400时,于写入请求被剖析并执行一或多个操作后,中央处理电路2400通过主机端输出入装置连结控制器2200接收从主机10传入的数据,将其储存在记忆体2800中,再经由中央处理电路2400传送至实体储存装置阵列4000。对于同步或非同步装置操作两者,数据皆经由中央处理电路2400传送至实体储存装置阵列4000。当该写入请求为一回写请求(write backrequest),写入做完报告(IO complete report)会先被传送至主机10,而后中央处理电路2400才会执行实际的写入操作;而当该写入请求为一完全写入请求(write through request),则写入做完报告会在数据已实际写入实体储存装置阵列4000后才被传送至主机10。
记忆体2800连接于中央处理电路2400,其作为一缓冲器,用来缓冲传送于主机10及实体储存装置阵列4000之间通过中央处理电路2400的数据。实际应用时,记忆体2800可以是DRAM(动态随机存取记忆体Dynamic RandomAccess Memory),该DRAM亦可为SDRAM(同步动态随机存取记忆体Synchronous Dynamic Random Access Memory)。
装置端输出入装置连结控制器3000为介于中央处理电路2400及实体储存装置阵列4000间的装置端输出入装置连结控制器,用来作为一储存虚拟化控制器2000及实体储存装置阵列4000间的介面及缓冲,并接收中央处理电路2400所发出的IO请求及相关数据,且将这些数据映射及/或传送至实体储存装置阵列4000。
于本例中,该ICC连结控制器2360设置于SVC1 2000中以连接至SVC22900。此外该装置端输出入装置连结控制器300C是通过该存取控制开关3400而连接至该实体储存装置阵列4000。该存取控制开关3400亦连接至该SVC2 2900。该实体储存装置阵列400可以为该等SVC 2000,2900通过该存取控制开关3400存取。另外,来自主机10的控制/数据资讯可以被该CPC2400通过该RCC连结控制器2360而被传送至该SVC2 2900,并进一步传送至一第二实体储存装置阵列(图未示)。请注意,该存取控制开关3400仅仅对于点对点、单端口PSD(譬如像是SATA PSD),且当两个输出入装置连结被连接至该PSD的该单端口时才需要。
图9是显示依据本发明的一个电脑系统的组态,其设置有一SVS包含此种存取控制开关及单端口PSD。而另一方面,一使用双端口PSD(譬如像是SAS PSD),且使其端口对的一端口连接至该SVC1、另一端口连接至该SVC2上,且每一者均通过一个分开的输出入装置连结时,并不需要该存取控制开关3400。图8是显示依据本发明的一个电脑系统的组态,其设置有一SVS包含此种存取控制开关及双端口PSD。
本发明的一种主机端IO绕送流程的实作方案如下。亦请参阅图11A、图11B及图11C。该主机1101准备IO请求并将其发送给SVC(步骤1103)。当一来自该主机的IO请求被接收(步骤1104),接收到的SVC1102是将其剖析以决定该请求所定址的LMU(步骤1105)。在步骤1106中,如果所定址的LMU是被指定给该接收SVC1102,则该SVC直接执行该IO请求(步骤1109)。在步骤1106中,如果该IO请求所定址的LMU是指定给另一个SVC1103,则该SVC通过该ICC通道而将该IO请求转送(forward)给该另一个SVC(步骤1107)。在接收到该IO请求时,该另一个SVC1103则剖析该IO请求(步骤1108)。
请参阅图11B,如果该IO请求需要自该主机传送数据,例如一写入(WRITE)IO请求(步骤1114),该另一个SVC1103会向该接收SVC1102要求数据(步骤1115)。该接收SVC1102可能已经自主机端传送一些或全部数据至其记忆体的缓冲器(buffer)中,或是该接收SVC1102可能在开始自该主机传送数据之前,等待来自该另一个SVC1103的数据传送请求。当该接收SVC1102收到该另一SVC1103的数据请求时,会查核所请求的数据是否存于其自身的记忆体内(步骤1116),如果所请求的数据不在记忆体中的话,该接收SVC1102将对发送该IO请求的主机端转送数据请求,并会等待数据从主机传送过来。而该主机端在收到该请求后传送该数据至该接收SVC1102(步骤1117)。该接收SVC1102将会通过该ICC通道而将数据转送给该另一个SVC1103(步骤1118)。该IO请求于是被该另一个SVC1103所执行(步骤1119)。
在该IO请求执行中或做完时,如果数据要被传送至该主机,例如一读取(READ)IO请求(步骤1124),该另一个SVC1103会转送要被传送至该主机的数据至该接收SVC1102。该接收SVC1102会将此数据通过用来接收该IO请求的主机端IO装置连结来转送至该主机(步骤1125)。在主机1101接收到来自SVC1102的数据之后(步骤1127),通知数据已经收到的收悉确认被发送给该接收SVC1102。在该接收SVC1102收到收悉确认后,是将之转送给该另一个SVC1103(步骤1127)。在IO请求做完时,该IO请求的做完状态将会由该另一个SVC1103转送至该接收SVC1102(步骤1128),然后在所有的数据被传送至该主机后转送该做完状态,当作已被传送的IO请求的一部份(步骤1129)。该IO请求于是完成(步骤1130)。
虽然上述的主机端IO绕送实作方案所支援的组态可以降低系统成本及复杂度,此藉由降低达成SVC冗余性所需的主机端IO装置连结的数目以及连接至每一个LMU的多重冗余路径而达成。然而,如果因为主机中的多重路径功能性而使IO请求绕送所通过的一条装置端连结路径会持续造成IO请求需要绕送(因为所定址的LMU被指定给该另一个SVC1103之故)的话,将会造成严重的IO效能劣化。上述造成严重的IO效能劣化可能会发生的情况如下-如果在主机端与所定址的LMU所指定的SVC间的路径(称为『主要路径』)所形成的连结断掉、阻塞或是因其他原因造成的故障、甚或仅仅是因为该主机1101的多重路径功能并未察觉该主要路径的话-而其结果则为IO将通过另外的连结绕送。
如果主机支援一种方法而可以指定一主要路径让IO请求可以通过该主要路径传送直到该LMU无法再通过该路径存取的话,则该主机可以被预先设定组态成(pre-configured),当其发送(send)定址于一特定LMU的IO请求时,是通过连接该主机与该所定址的LMU所指定的SVC的连结来发送该IO请求,因而消除了绕送的需要。另一种实施态样是,每一个LMU可以在该SVS上预先设定组态(pre-configured),而使得该LMU被指定给一SVC,而该SVC被连接至该主机最可能传送IO请求的连结上。
以上用来使IO请求必需绕送至该另一个SVC的频率降至最低的方法的缺点是,它必须预先设定组态(pre-configuration),而这通常需要先将系统下线然后再让它重新上线,以使得组态的修改得以生效。因而,此方式于一动态改变环境中用起来并不十分好用。在另一个较为复杂的方法中,本发明可以支援LMU至SVC的动态重新指定(dynamic reassignment)。
亦请参阅图12A。LMU的动态重新指定通常必须有以下的操作必须由LMU所指定的SVC来进行的LMU虚拟化(LMU Virtualization)的操作(譬如,PSD数据重建)必须暂停或放弃或做完(步骤1221)。LMU指定被转移至该另一个SVC(步骤1224),该等暂停或放弃的LMU虚拟化操作可以继续进行或重新开始,且该另一个SVC所队列中的主机IO请求也可开始执行(步骤1225)。请注意,整个重新指定过程进行于当该SVS在线上的时候,而这就是所谓的动态LMU重新指定。
在最简单的实施例中,该等LMU可以藉由使用者组态设定以动态地重新指定而不需要重新初始化任一个SVC。如果使用者注意到一个特定的LMU的IO绕送频率过高的话,他可以在该等SVC仍然在线上时以手动的方式将该LMU重新指定给该另一个SVC以期降低IO绕送频率。
在另一个实施例中,LMU重新指定将基于所记录的统计数据而被自动执行,其中所记录的统计数据为定址于该LMU的该等IO请求通过哪一个SVC而被接收到。如果一个SVC(称之为接收SVC)接收到一IO定址于一目前指定给另一个SVC的LMU,一LMU重新指定操作将被执行于该IO处理之前,以自该另一个SVC改变LMU指定至该接收SVC。当该LMU被指定给该接收SVC时,该IO于是会被该接收SVC所处理。请注意,在本实施例中,分离冗余路径传送功能(split redundant pathing)可以无须依赖主机端IO绕送功能而达成,因为其并非将IO发送至该LMU现在被指定的SVC,而将该LMU重新指定给正在接收IO的SVC。
在本实施例中的一典型的重新指定程序描述于图12B中流程图中。当一IO被接收到而该IO为定址于一目前被指定给另一个SVC的LMU时(此SVC于下文中称为LMU拥有者1230)(步骤1201),该接收SVC(下文中称为IO处理SVC)1220是启始该LMU重新指定过程(步骤1202)。此过程是开始于要求该LMU拥有者1230释出该特定LMU的所有权(步骤1203),同时会将取得该特定LMU的所有权之前(即,执行在LMU重新指定过程中)将所接收到的定址于该LMU的IO请求放入队列中。该LMU拥有者1230然后等待一”适当”的时机以开始其LMU重新指定程序(步骤1207)。此程序通常必须暂停或放弃必须由被指定给该LMU的SVC所执行的LMU虚拟化操作(譬如,PSD数据重建)(步骤1208),同时让任何定址于该LMU的主机IO的执行暂停,且将任何还没开始的IO请求放入队列中(步骤1209)。当此种LMU虚拟化操作被暂停或放弃且所有正在进行中的定址于该LMU的IO请求被做完时(步骤1210),该LMU拥有者1230改变其自身的LMU指定状态版本(copy)以指出该LMU已不再指定给它了(步骤1211)。此可以包括修改数据快取控制结构以释出与该LMU相关的快取数据及资源的所有权。该LMU拥有者1230现在以一个指定通知告知该IO处理SVC1220说所有权指定已经被转移给它了(步骤1212)。在该IO处理SVC1220收到该指定通知后(步骤1204),改变其自身的指定状态版本(copy)以指出该LMU现在已经指定给它了(步骤1205)。这也可能涉及修改其自身的数据快取控制结构以接管(take over)与该LMU相关的快取数据及资源。该IO处理SVC1220现在将藉由继续进行或重新开始被暂停或放弃LMU虚拟化操作、执行在LMU重新指定过程中放入队列的IO、以及正常处理任何新接收到的IO而完成该LMU重新指定程序(步骤1206)。
在另一实施例中,若原本的LMU拥有者1230在执行在LMU重新指定过程中有任何放入队列的定址于该LMU的IO时,则在该LMU拥有者1230通知该IO处理SVC1220说所有权指定已经被转移给它的步骤1212中更包含有同时请求该所有权移转归还的讯息,以请求该IO处理SVC1220(新的LMU拥有者)归还该特定LMU的所有权。
在又一实施例中,若原本的LMU拥有者1230在执行在LMU重新指定过程中有任何放入队列的定址于该LMU的IO时,则在该LMU拥有者1230通知该IO处理SVC1220说所有权指定已经被转移给它的步骤1212中更包含有同时将该等放入队列的定址于该LMU的IO绕送至该IO处理SVC1220(新的LMU拥有者)。
而对一再一实施例而言,前述的步骤1209及步骤1210可省略。例如如果主机的组态被设定为其一次只能够发送单一个IO且必须等待相应该IO的完成回应收到后才能发出第二个IO,且该SMS执行完全写入模式(write-through mode),则此种组态下,由于SVS同一时间对定址于一特定LMU的主机IO请求而言仅可能存在有一个,因而当该IO处理SVC1220因接收到该定址于此特定LMU的主机IO请求而启动LMU重新指定程序(如步骤1201,1202),意味着,此可存在于SVS中的唯一一个该特定LMU的主机IO请求,存在于该IO处理SVC中,此时,该LMU拥有者1230不会存在有任何定址于该特定LMU的主机IO请求,因而步骤1209及步骤1210为不必要存在。
又,在另一具有二个以上的控制器的储存虚拟化子系统的实施例中,亦即,在此种实施例中,SVS中除了存在有该IO处理SVC1220与LMU拥有者1230的二SVC外,尚存在有至少一第三SVC。此时,更可包含有一协调机制,用以协调若有二个以上SVC同时请求转移该特定LMU的所有权时的状况。
此协调机制可设计为由目前为该LMU的拥有者来负责执行,亦或可指定由一特定的SVC(此后称为仲裁者)来负责执行。若为前者,则如前述的其他实施例,当一SVC接收到定址于该并非指定给他的LMU的IO时,则会对该LMU目前的拥有者请求释出该LMU的所有权。而若当该LMU拥有者同时接收到来自于复数个不同SVC的释出该LMU的所有权请求时,该LMU拥有者决定要将该LMU的所有权指定给谁,且在该LMU拥有者通知该决定对象所有权指定已经被转移给它的步骤中,则更包含有通知其他的SVC,谁成为新的该特定LMU的拥有者。而此时若其他的SVC仍有需取得该LMU的所有权的需求时,则可在对此新的该LMU拥有者请求释出该LMU的所有权。而若为后者,则当一SVC接收到定址于该并非指定给他的LMU的IO时,则是将请求LMU拥有者释出该LMU的所有权的讯息发送给该仲裁者,而该仲裁者会在对该LMU拥有者发送出请求释出该LMU的所有权。并且在该LMU拥有者完成释出所有权的动作后,是通知该仲裁者所有权已释出。并由该仲裁者决定谁是新的拥有者,并通知该新的拥有者其已成为新的拥有者。
而前述的决定要将该特定LMU的所有权指定给谁的步骤中,可依据该等SVC中各SVC所具有的定址于该特定LMU的主机IO请求的时间长短来决定。此种做法是因顾及主机等待该IO做完回复的时间之故。例如在此种具有二个以上的SVC的SVS中,每个SVC是具有一纪录有其他各SVC的主机IO的收迄时间状态表,而当每个SVC只要收到非属于指定它的LMU的IO请求时,会将相关讯息通知SVS中其他各SVC,而使其得以更新该状态表。而当该特定LMU拥有者欲决定要将该特定LMU的所有权指定给谁时,可依据该状态表中检查其他各SVC收到定址于该特定LMU的主机IO的时间,而将该特定LMU的所有权决定给具有最早时间者(即,代表该SVC具有等待最久的定址于该特定LMU的IO请求)。另外,若该SVS为前述设置有仲裁者的话,或可仅有该仲裁者具有前述各SVC的IO收迄时间状态表,而当每个SVC只要收到非属于指定它的LMU的IO请求时,会将相关讯息通知该仲裁者,而使仲裁者得以更新该状态表,而该仲裁者是依据该表内容决定某一特定LMU的所有权应指定给谁。因为LMU重新指定程序通常会造成暂时性的IO流暂停,而这有可能造成严重的效能劣化,所以LMU重新指定的排程(schedule)通常会以使得重新指定相对于IO数量的频率最小化的方式为之。在前文中提到「于LMU重新指定程序中所谓的等待一”适当”时机」是指,该LMU拥有者1230会对先前的状态及目前的状态进行智慧型分析以决定何时才是开始LMU重新指定程序的最佳时机。
请参阅图13。此智慧型分析的一实施例,当LMU拥有者收到释出所有权请求时,只要是在LMU拥有者继续收到定址于该LMU的IO的话,是要求LMU拥有者在取得所有权后保持所有权一段最短期间(称为最小指定保持期间(minimum assignment retention period)),而若在收到该释出所有权的请求时,LMU拥有者并没有存在有任何与定址于该特定LMU的IO请求需处理或处理中的话,则是要求该LMU拥有者须有另一段期间(此处称为IO空窗期间临界值(idle IO period threshold))没有收到定址于该LMU的IO。因此,LMU拥有者收到释出所有权请求时(步骤1301)后会判断该LMU重新指定的请求是否为已超过该最小指定保持期间(步骤1302)。如果一个LMU重新指定要求是在经过了该最小指定保持期间之后提出的话,则LMU重新指定程序立即开始(步骤1303)。如果一个LMU重新指定要求是在该最小指定保持期间尚未过完之前提出,则续判断是否有任何定址于该特定LMU的IO请求在等待执行或正在执行中(步骤1304)。若有任何正在等待执行或执行中的定址于该LMU的IO请求的话,则回到步骤1302,而若不再有任何定址于该LMU的IO于该LMU拥有者上尚未执行或是在执行的过程中,则判断IO空窗期间(没有收到定址于该LMU的IO的期间)是否超过IO空窗期间临界值(步骤1305),若是,则LMU指定可以释出(步骤1303)。否则,回到步骤1302。
设定一IO空窗期间临界值的背后想法,是要预期是否该主机再有任何定址于该LMU的IO要发给该LMU拥有者。如果这段期间过完了而没有任何来自主机的指示显示它确实具有更多的IO要发出的话,则该LMU拥有者可以假设该主机确实不再有任何IO尚未发出。该LMU拥有者]可以将没有收到定址于该特定LMU的主机IO当作是此一指示。在最简单的实作方案中,该IO空窗期间可以被设定为开始于收到最后一个定址于该特定LMU的主机IO。但是,此种实作方案在后述的情况下可能会错误地预期目前的主机状态-此在一定址于该LMU的IO被接收时即被设定开始的IO空窗期间是在该SVC完成该IO的处理之前就已超过了该IO空窗期间临界值。在此种情况下,如果该主机的组态被设定为它一次只能够发送单一个IO且必须等待相应该IO的完成回应收到后才能发出第二个IO,则该SVS可能错误地认定该主机目前不再有任何定址于该LMU的IO要发出。而因其IO空窗期间已超过其临界值,且因前述主机组态,在LMU完成该定址于该LMU的IO后至收到第二个定址于该LMU的IO必定存在有一时间差,因而LMU拥有者可能因误判而于该IO处理完毕后随即会开始LMU重新指定程序。
请参阅图15A及图15B。用以设定该IO空窗期间的开始时点的改良机制如下。将该IO空窗期间的起始时点设定于当处理一定址于该特定LMU的一IO完成时(步骤1501),且如果该IO空窗期间被标示为尚未开始的话,则将该IO空窗期间标示为已经开始了,而其结果为该IO空窗期间开始计时(步骤1502及1503)。且如果该IO空窗期间被标示为已经开始的话,则将该IO处理完成且不改变该起始时间(步骤1502及1504)。如果,在该计时开始之后(这使得步骤1508的测试结果为肯定),另一个定址于该特定LMU的主机IO被收到的话(步骤1507),则将该IO空窗期间标示为尚未开始(步骤1509)。在此机制中,只有当该IO空窗期间已经开始后才会被用来决定该LMU重新指定何时该开始进行。
请参阅图14A及图14B。该最小指定保持期间1401、该IO空窗期间临界值1402、该IO空窗期间1403以及该LMU重新指定要求的关系如下。图14A是描述该IO空窗期间1403的起始时间开始得够早而可在最小指定保持期间1401内过完该IO空窗期间临界值1402。在此情况下,在第一个案例,案例A中,LMU重新指定要求是在图中的时间点A1404发出,此表示LMU拥有者是在该最小指定保持期间1401内以及该IO空窗期间临界值1402过完之前收到LMU重新指定要求,因而LMU拥有者于该IO空窗期间临界值1402过完之前将不会执行重新指定程序。在第二个案例,案例B中,LMU重新指定要求是在图中的时间点B1405发出,此表示LMU拥有者是在该IO空窗期间临界值1402过完之后但仍然在最小指定保持期间1401中收到LMU重新指定要求,则重新指定程序将会被其立刻执行。在第三个案例,案例C中,LMU重新指定要求是在图中的时间点C1406发出,此表示LMU拥有者是在该最小指定保持期间1401过完之后收到重新指定要求,则重新指定程序将会立刻执行。
在上述案例A中,并未让重新指定要求立刻执行,其可以让重新指定程序在IO空窗期间超过IO空窗期间临界值或在该最小指定保持期间1401过完之后立刻执行,或者,另一种实施方式是,当该IO空窗期间超过IO空窗期间临界值或该最小指定保持期间1401过完之后,该重新指定程序可以被重新评估以决定是否需要在该时间点上进行重新指定,或是,该LMU拥有者可以将该重新指定要求直接拒绝,端视该SVS的组态设定而定。
图14B是描述该IO空窗期间1412的起始时间开始得太晚而无法在最小指定保持期间1411结束之前过完该IO空窗期间临界值1412。在此情况下,在第一个案例,案例D中,LMU重新指定要求是在图中的时间点D1407发出,此表示LMU拥有者在该IO空窗期间临界值1412过完之前且仍然在最小指定保持期间1411中收到该重新指定要求,则重新指定程序于该最小指定保持期间1411过完之前将不会执行。在第二个案例,案例E中,是LMU重新指定要求是在图中的时间点E1408发出,或在第三个案例,案例F中,是LMU重新指定要求是在图中的时间点F1409发出,则重新指定要求将会立刻执行,因为该最小指定保持期间1411已经过完。在案例E中,重新指定要求发出在该IO空窗期间临界值1412过完之前但已超过该最小指定保持期间1411,而在案例F中,重新指定要求发出在该IO空窗期间临界值1412与该最小指定保持期间1411过完之后。
在另一个较为复杂的实施例中,主机端IO绕送及自动动态LMU重新指定可以结合在一起以达到更佳的效能特性。若定址于一LMU的IO的接收SVC并非目前该LMU所指定的SVC,则一开始时(initially)将会被绕送至另一个SVC(该LMU拥有者)。该等SVC可以执行IO流动(IO flow)的智慧型分析功能,特别是关于IO绕送的频率及与被绕送的IO相关的数据被绕送的比率的智慧型分析功能。如果此分析显示出LMU重新指定可以产生明显效能增进,因为,譬如IO绕送频率及/或与被绕送的IO相关的数据被绕送的比率降低的话,则LMU重新指定可以为该冗余SVC对所自动执行。
在本实施例中,典型的LMU重新指定程序大体上如图16A及图16B所示。当已经决定要进行一LMU重新指定时,决定的SVC(可能是任一个SVC该LMU拥有者1620或是另一个SVC)发出一请求至该LMU拥有者1620以启始一LMU重新指定并释出LMU的所有权(步骤1602,1602’)。在图16A中,该LMU重新指定程序是该另一个SVC1630而非该LMU拥有者1620所决定。该LMU拥有者1620于是等待一适当时机以开始其自身部份的LMU重新指定程序(步骤1603)。此程序通常必须将由该LMU所指定的SVC来执行LMU虚拟化操作(例如PSD数据重建)暂停或放弃(步骤1604),且让正在执行的定址于该LMU的任何IO请求执行完毕,同时将定址于该LMU的主机IO请求的执行被暂停(put on hold),且所有定址于该LMU且尚未开始执行的主机IO请求被排入队列(queued)(步骤1605)。此外该LMU拥有者1620指示另一SVC让定址于该LMU的正在执行的绕送的IO请求执行完毕,并将主机IO请求的绕送暂停,此绕送暂停藉由将所有定址于该LMU的等待绕送的IO请求存入队列以于俟后处理而达成(步骤1606)。该另一个SVC让任何定址于该LMU正在处理的IO请求处理完毕,同时将定址于该LMU的主机IO的执行暂停,并且把任何定址于该LMU且尚未开始的IO请求放入队列中(步骤1607)。当该等LMU虚拟化操作暂停或放弃且在该等SVC上的所有定址于该LMU正在进行的IO请求完成后,该LMU拥有者1620改变其自身的LMU指定状态版本(copy)以指出该LMU已不再指定给它了(步骤1608)。此可以包括修改数据快取控制结构以释出与该LMU相关的快取数据及资源的所有权。该LMU拥有者1620现在通知该另一个SVC说所有权指定已经被转移给它了(步骤1609)。在该另一个SVC收到该指定通知(步骤1610)后,该另一个SVC于是改变其自身的指定状态版本(copy)以指出该LMU现在已经指定给它并使得它成为新的LMU拥有者了(步骤1611)。这也可能涉及修改其自身的数据快取控制结构以接管与该LMU相关的快取数据及资源。该新的LMU拥有者现在将藉由继续进行或重新开始被暂停或放弃LMU虚拟化操作、执行在LMU重新指定过程中放入队列的IO、以及正常处理任何新接收到的IO而完成该LMU重新指定程序(步骤1612),而原先的LMU拥有者1620则开始将在它这边存于队列中而等待LMU重新指定完成的IO进行绕送,以及将任何新收到的相关IO绕送(步骤1613)。在图16B中,该LMU重新指定程序是该LMU拥有者1620所决定,且在该步骤1602中的『发出一请求至该LMU拥有者1620以启始一LMU重新指定并释出LMU的所有权』步骤以及步骤1603中的“该LMU拥有者1620于是等待一适当时机以开始其自身部份的LMU重新指定程序”是为该LMU拥有者1620的内部操作。
而若储存虚拟化子系统中若具有二个以上的SVC,则步骤1606中更包含有同时对其他的SVC发出停止定址于该LMU的IO的绕送指示,且在步骤1609中更包含有同时通知其他的SVC谁是新的LMU拥有者,因而其他的SVC可继续恢复绕送并将定址于该LMU的IO至该新的LMU拥有者。
请参阅图17A,上述的智慧型IO流分析的一个实施例为,该分析包括对一LMU定义一第一临界值(threshold),此第一临界值是为该LMU在一段期间内被绕送的IO与未被绕送的IO的比例(步骤1701),以及计算对于该LMU经过某一段时间的IO比率(步骤1702)。如果IO流所显示的实际比例值超过该第一临界值的话(步骤1703),则将执行LMU重新指定功能(步骤1704)。
请参阅图17B,上述的智慧型IO流分析的另一个实施例为,该分析包括对一LMU定义一第二临界值,此第二临界值是为该LMU在一段期间内的被绕送的单位时间数据量与未被绕送的单位时间数据量的比例(步骤1711),以及计算对于该LMU经过某一段时间的数据比率(步骤1712)。如果IO流所显示的实际比例值超过该第二临界值的话(步骤1713),则将执行LMU重新指定功能(步骤1714)。
请参阅图17C,上述的智慧型IO流分析的又一个实施例为,该分析包括对一LMU定义上述该第一临界值与该第二临界值并更进一步藉由该等第一与第二临界值定义一相关的临界值机制(步骤1721),以及计算对于一LMU经过某一段时间的IO比率及数据比率(步骤1722),同时设定与IO比率临界值及/或数据比率临界值相关之用以触发LMU重新指定的一个或多个条件(步骤1723)。当该临界值机制的一个或是复数特定条件满足时(步骤1724),将触发(trigger)一LMU重新指定(步骤1725)。该临界值机制的一个例子为,如果该等第一与第二临界值中任一者为IO流所显示的相关实际比例值所超过的话,则将执行LMU重新指定(步骤1725)。该临界值机制的另一个例子为,如果该等第一与第二临界值两者皆为IO流所显示的相关实际比例值所超过的话,则将执行LMU重新指定。虽然前文中举了两个例子,惟熟习此技艺者将可轻易提出其他与该等第一与第二临界值相关的临界值机制以达成此一实施例的机能而不超出本发明的精神。
请参阅图17D,上述的智慧型IO流分析的再一个实施例为,定义一给定的LMU经过某一段时间与IO比率及数据比率相关的条件(步骤1731),以及计算对于该给定的LMU经过该段时间的IO比率及数据比率(步骤1732)。测试该条件是否符合(步骤1733),且当该条件符合时进行执行LMU重新指定功能(步骤1714)。
上述的智慧型IO流分析机制可能产生的一个问题是,如果对于一个通过两者的LMU的IO比率以及/或者的数据比率相当接近的话,可能会产生LMU重新指定的频率过高的问题,而这本身可能会对效能产生实质的负面冲击,因为在每一次执行LMU重新指定时IO流将会暂停。因而,最好是具有一机制可以限制LMU重新指定的频率。
请参阅图18,上述机制的一个实施例是,该智慧型IO流分析机制可以包括对LMU重新指定定义一等待期间(wait period),而在发生一次LMU重新指定后,至少要经过该等待期间后才能再开始第二次LMU重新指定而将LMU重新指定回第一次指定前原本所指定的SVC。开始时,定义经过某一段时间的IO比率及/或数据比率的一临界值并定义一等待期间(步骤1801)。接下来,计算对一LMU经过某一段时间的该IO比率及/或数据比率(步骤1802)。检测该IO比率及/或数据比率是否超过该临界值(步骤1803)。一但该IO比率及/或数据比率超过该临界值,检测自从上次重新指定后的时间是否已经超过该等候期间(步骤1804)。一但自从上次重新指定后的时间已经超过该等候期间,则执行LMU重新指定(步骤1805)。
请参阅图19A及图19B,另外的一个实施例是,为上述的各期间定义一段期间或一数目,而要求于一次LMU重新指定前,上述的实际I0以及/或者数据比率的比例至少要维持在相关的临界值以上该段期间或该数目。
请参阅图19A,定义经过某一段时间的IO比率及/或数据比率的一临界值,并定义经过一段时间的IO比率及/或数据比率超过该临界值的一临界值次数(N′)(步骤1901)。开始时,N=0,其中N定义IO比率及/或数据比率超过该临界值的次数(步骤1902),且计算针对一LMU经过一段时间的IO比率及/或数据比率(步骤1903)。然后,检查是否IO比率及/或数据比率超过该临界值(步骤1904)。如果IO比率及/或数据比率超过该临界值(步骤1904),则IO比率及/或数据比率超过该临界值的次数N增加1(步骤1905)。步骤1906检查是否N是大于或等于N′。如果N≥N′成立,则进行LMU重新指定(步骤1907)。如果N≥N′不成立,则程序回到步骤1903。
请参阅图19B,定义经过某一段时间的IO比率及/或数据比率的一临界值,并定义IO比率及/或数据比率超过该临界值的一临界值期间(T2)(步骤1911)。开始计算或重新计算对一LMU经过一段时间的IO比率及/或数据比率超过该临界值的时间(步骤1913)。检查是否IO比率及/或数据比率超过该临界值(步骤1914)。如果IO比率及/或数据比率未超过该临界值(步骤1914),则程序回到步骤1912。反之,如果IO比率及/或数据比率超过该临界值,则程序进行至步骤1915。步骤1915检查是否T是大于或等于T2。如果T≥T2成立(步骤1915),程序进行至步骤1916;如果T≥T2不成立,则程序回到步骤1913。步骤1916进行LMU重新指定。
在某些状况下,将LMU指定给一个SVC而该SVC并非是收到大部份主机发送给该LMU的IO的SVC,若由效能的观点来看将可能是有利的。如果当LMU的指定使得IO总是由收到的SVC来处理而在两个SVC之间的处理负载上有实质的不平衡时,则可能发生上述的情形。举例而言,如果有4个LMULMU1,LMU2,LMU3,LMU4,其中定址于LMU1及LMU2的IO由主机发送给SVC-A来处理,定址于LMU3及LMU4的IO由则发送给SVC-B来处理,且LMU1及LMU2两者皆在进行处理密集(processing-intensive)的LMU虚拟化的操作时(例如PSD数据重建),则将LMU1及LMU3指定给SVC-A且LMU2及LMU4指定给SVC-B,然后将定址于LMU2及LMU3的IO加以绕送至它们所指定的SVC的话,与将LMU1及LMU2指定在同一个SVC上并因而免除了绕送的情况相比之下,前者实际上可以产生更好的效能。这是因为藉由将LMU虚拟化的操作的负载加以平衡于两个SVC之间所得到的效能改善,会超过因为LMU所指定的SVC并非收到大部份定址于该LMU的主机IO的SVC而必须进行的IO绕送所造成的负面效应。
为了适应此种情形,除了要分析主机IO流特性以决定LMU该指定给哪一个SVC之外(而且,也许,如果现在并未指定给最佳的SVC的话则重新指定),每一个SVC的处理负载亦需列入考虑。一依据上述考虑的负载平衡LMU重新指定机制描述于图20的流程图中。在此负载平衡LMU重新指定机制2010中,于该两SVC间的处理负载的平衡被监测,例如藉由计算该等SVC间的处理负载而达成。在步骤2013中,检查该两SVC间是否存在有处理负载上的实质不平衡。如果在步骤2013中的回答是肯定的,则于步骤2014中执行LMU重新指定;否则在步骤2013继续检查。每一个LMU指定的各种情境(scenario)的相对效能,其包括在两个SVC间的处理负载的平衡的效能优势,与绕送IO的效能代价两者间的取舍(trade-off),皆可被计算出,且该指定情境达到最佳整体效能者于是可以被选出,而各个LMU的指定则据以进行。
总之,依据本发明上述的各实施例,提出了一重新指定时机决定机制2100于图21中。在步骤2102中,预设了一或多个触发该IO重新指定功能的条件。在步骤2103中,决定重新指定时机决定机制中的一个或多个预设的条件是否被满足。如果在步骤2103中的条件被满足时,将执行该IO重新指定功能(步骤2104)。另一方面,如果该等预设的条件未满足时,将不会触发该动态LMU重新指定功能。又或,依据另一种机制,如果没有任一预设条件被满足时,将不会触发该动态LMU重新指定功能。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的方法及技术内容作出些许的更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
权利要求
1.一种于储存虚拟化子系统中执行动态逻辑媒体单元重新指定的方法,该储存虚拟化子系统包含复数个储存虚拟化控制器及一实体储存装置阵列连接于其上,该实体储存装置阵列包含至少一实体储存装置,且定义有至少一逻辑媒体单元,该逻辑媒体单元包含该实体储存装置阵列的复数区段,其特征在于该方法包含该等储存虚拟化控制器的一启始一第一逻辑媒体单元的重新指定;及一为该至少一逻辑媒体单元的一第一逻辑媒体单元的拥有者的第一储存虚拟化控制器依据该启始指示而释出该第一逻辑媒体单元,并使该第一逻辑媒体单元指定移转至一第二储存虚拟化控制器,使其成为新的该第一逻辑媒体单元的拥有者。
2.根据权利要求1所述的方法,其特征在于其中所述的启始重新指定的储存虚拟化控制器为该第一储存虚拟化控制器。
3.根据权利要求1所述的方法,其特征在于其中所述的启始重新指定的储存虚拟化控制器为该等储存虚拟化控制器中的一第三储存虚拟化控制器。
4.根据权利要求1所述的方法,其特征在于其中所述的启始重新指定的储存虚拟化控制器为该第二储存虚拟化控制器。
5.根据权利要求4所述的方法,其特征在于其中所述的第二储存虚拟化控制器是在接收到一定址于该第一逻辑媒体单元的输出入请求后启始该重新指定第一逻辑媒体单元。
6.根据权利要求5所述的方法,其特征在于其中所述的第二储存虚拟化控制器是在成为该新的第一逻辑媒体单元拥有者之前是将所接收到的定址于该第一逻辑媒体单元的输出入请求放入队列中,并于成为该新的第一逻辑媒体单元拥有者后处理该等队列中定址于该第一逻辑媒体单元的输出入请求以及任何新接收到定址于该第一逻辑媒体单元的输出入请求。
7.根据权利要求1所述的方法,其特征在于其更包括以下步骤该第一储存虚拟化控制器释出该第一逻辑媒体单元之前是将必须由该第一逻辑媒体单元拥有者来进行的逻辑媒体单元虚拟化的操作进行下列之一处理暂停、放弃及等待其做完。
8.根据权利要求7所述的方法,其特征在于其更包括有该第二储存虚拟化控制器成为该新的第一逻辑媒体单元拥有者后继续进行该暂停或放弃的逻辑媒体单元虚拟化的操作步骤。
9.根据权利要求1所述的方法,其特征在于其中所述的第一储存虚拟化控制器释出该第一逻辑媒体单元之前更包括执行以下步骤允许并使任何进行中而定址于该第一逻辑媒体单元的输出入请求做完;让任何定址于该第一逻辑媒体单元的主机输出入的执行暂停;及将任何还没开始的定址于该第一逻辑媒体单元的输出入请求放入队列中。
10.根据权利要求1所述的方法,其特征在于其中所述的第一储存虚拟化控制器释出该第一逻辑媒体单元的步骤包括有改变其自身的逻辑媒体单元指定状态版本以指出该第一逻辑媒体单元已不再指定给该第一储存虚拟化控制器。
11.根据权利要求1所述的方法,其特征在于其更包括有以下步骤该第一储存虚拟化控制器于释出该第一逻辑媒体单元后是以一个指定通知告知该第二储存虚拟化控制器说该第一逻辑媒体单元已指定移转给该第二储存虚拟化控制器。
12.根据权利要求11所述的方法,其特征在于其中所述的第二储存虚拟化控制器收到该指定通知后,改变其自身的指定状态版本以指出该第一逻辑媒体单元现在已经指定给该第二储存虚拟化控制器。
13.根据权利要求10或12所述的方法,其特征在于其包括修改其自身的数据快取控制结构。
14.根据权利要求1所述的方法,其特征在于其中所述的步骤中更包括有该第一储存虚拟化控制器于释出该第一逻辑媒体单元后是对该第二储存虚拟化控制器发送请求该第一逻辑媒体单元所有权归还,以请求该第二储存虚拟化控制器在之后归还该第一逻辑媒体单元之所有权。
15.根据权利要求1所述的方法,其特征在于其更包括有以下步骤该第一储存虚拟化控制器是将在该逻辑媒体单元重新指定过程中任何放入队列的定址于该第一逻辑媒体单元的输出入请求绕送至该第二储存虚拟化控制器。
16.根据权利要求1所述的方法,其特征在于其更包含一协调机制,用以在产生该等储存虚拟化控制器中有复数个储存虚拟化控制器同时启始该第一逻辑媒体单元的重新指定时决定重新指定的对象。
17.根据权利要求16所述的方法,其特征在于其中所述的协调机制为该第一储存虚拟化控制器所执行,且于该释出该第一逻辑媒体单元后通知该等储存虚拟化控制器的其他储存虚拟化控制器谁成为该新的第一逻辑媒体单元的拥有者。
18.根据权利要求16所述的方法,其特征在于其中所述的协调机制为一第三储存虚拟化控制器所执行,该第一储存虚拟化控制器于释出该第一逻辑媒体单元后通知该第三储存虚拟化控制器,该第三储存虚拟化控制器通知该等储存虚拟化控制器的其他储存虚拟化控制器谁成为该新的第一逻辑媒体单元的拥有者。
19.根据权利要求16所述的方法,其特征在于其是依据该等启始第一逻辑媒体单元的重新指定程序的储存虚拟化控制器中所具有定址于该第一逻辑媒体单元的主机输出入请求的时间长短来决定该重新指定对象。
20.根据权利要求1所述的方法,其特征在于其中所述的第一储存虚拟化控制器于释出该第一逻辑媒体单元之前,包含一判断是否达到可释出该第一逻辑媒体单元的时机的步骤。
21.根据权利要求20所述的方法,其特征在于其中所述的判断步骤包括查核是否对该该第一逻辑媒体单元保持了一段最小指定保持期间。
22.根据权利要求20所述的方法,其特征在于其中所述的该判断步骤包括查核是否有任何定址于该第一逻辑媒体单元的输出入请求。
23.根据权利要求20所述的方法,其特征在于其中所述的该判断步骤包括查核该第一逻辑媒体单元的输出入空窗期间是否超过一预定的输出入空窗期间临界值。
24.根据权利要求23所述的方法,其特征在于其中所述的输出入空窗期间设定为开始于收到最后一个定址于该第一逻辑媒体单元的主机输出入请求。
25.根据权利要求23所述的方法,其特征在于其中所述的输出入空窗期间的起始时点设定于当处理一定址于该第一逻辑媒体单元的输出入请求完成时,并于收到一新的定址于该第一逻辑媒体单元的输出入请求时取消计时。
26.根据权利要求1所述的方法,其特征在于其中所述的等储存虚拟化控制器可以执行主机端输出入绕送程序,以使该等储存虚拟化控制器于收到非指定于其自身的一特定的逻辑媒体单元的输出入请求时,可转送至该特定逻辑媒体单元的拥有者的储存虚拟化控制器处理。
27.根据权利要求26所述的方法,其特征在于其更包含有以下步骤该第一储存虚拟化控制器在释出该第一逻辑媒体单元之前,指示其他的该储存虚拟化控制器让定址于该第一逻辑媒体单元正在执行绕送的输出入请求执行完毕,并将定址于该第一逻辑媒体单元的主机输出入请求绕送暂停;及该等储存虚拟化控制器于收到该指示后进行相关的动作。
28.根据权利要求27所述的方法,其特征在于其中所述的绕送暂停步骤包含将所有定址于该第一逻辑媒体单元的输出入请求存入队列。
29.根据权利要求26所述的方法,其特征在于其更包括有一决定步骤,用以决定是否启始该第一逻辑媒体单元的重新指定,并于启始该第一逻辑媒体单元的重新指定程序前,该等储存虚拟化控制器中的非该第一逻辑媒体单元的拥有者是在收到定址于该第一逻辑媒体单元的输出入请求时执行该绕送程序。
30.根据权利要求29所述的方法,其特征在于其中所述的决定步骤包含执行一输出入流动的智慧型分析功能的操作。
31.根据权利要求30所述的方法,其特征在于其中所述的智慧型分析功能的操作包括以下步骤计算对于该第一逻辑媒体单元经过经过该段时间的输出入比率及数据比率;以及检测该输出入比率及数据比率是否与一事先定义的条件相符合,当该条件符合时,才能将执行该第一逻辑媒体单元重新指定功能。
32.根据权利要求30所述的方法,其特征在于其中所述的智慧型分析功能的操作包括以下步骤计算对于该第一逻辑媒体单元经过某一段时间的输出入比例;以及查核是否该输出入流所显示的实际比例值超过一第一临界值,若是,才能启始该第一逻辑媒体单元重新指定,其中该第一临界值为在一段期间内被绕送的定址于该第一逻辑媒体单元的输出入请求与其他未被绕送的输出入请求的比例。
33.根据权利要求30所述的方法,其特征在于其中所述的智慧型分析功能的操作包括以下步骤计算对于该第一逻辑媒体单元经过某一段时间的数据比例;以及查核是否该输出入流所显示的实际比例值超过一第二临界值,若是,才能启始该第一逻辑媒体单元重新指定,其中该第二临界值为在一段期间内被绕送的定址于该第一逻辑媒体单元的单位时间数据量与其他未被绕送的单位时间数据量的比例。
34.根据权利要求32或33所述的方法,其特征在于其中所述的智慧型分析功能的操作包括以下步骤计数该输出入流所显示的实际比例值超过该临界值的次数;及检查该所计数超过该临界值的次数是否以超过或等于一临界值次数,当该所计数的次数超过或等于该临界值次数时,才能启始该第一逻辑媒体单元重新指定程序。
35.根据权利要求32或33所述的方法,其特征在于其中所述的智慧型分析功能的操作包括以下步骤计算对该第一逻辑媒体单元经过一段时间的输出入流所显示的实际比例值超过该临界值的时间;及检查该所计算超过该临界值时间是否以超过或等于一临界值期间,并当该所计算的时间超过或等于该临界值期间时,才能启始该第一逻辑媒体单元重新指定程序。
36.根据权利要求30所述的方法,其特征在于其中所述的智慧型分析功能的操作包括以下步骤检测自从前一次该第一逻辑媒体单元重新指定后的时间是否已经超过一等候期间,若未超过,则该第一储存虚拟化控制器不会发动执行该重新指定功能。
37.根据权利要求1所述的方法,其特征在于其更包括执行一负载平衡逻辑媒体单元重新指定机制以决定是否启始该重新指定。
38.根据权利要求37所述的方法,其特征在于其中所述的负载平衡逻辑媒体单元重新指定机制包括有以下步骤监测该等储存虚拟化控制器间的处理负载的平衡;及检查该等储存虚拟化控制器间是否存在有处理负载上的实质不平衡,并当存在有处理负载上实质不平衡时,才能执行逻辑媒体单元重新指定。
39.一种储存虚拟化子系统,其特征在于其包含复数个储存虚拟化控制器及一实体储存装置阵列连接于其上,该实体储存装置阵列包含至少一实体储存装置;至少一逻辑媒体单元,该逻辑媒体单元包含该实体储存装置阵列的复数区段;该等储存虚拟化控制器的一启始一第一逻辑媒体单元的重新指定;及一为该至少一逻辑媒体单元的一第一逻辑媒体单元的拥有者的第一储存虚拟化控制器依据该起始指示而释出该第一逻辑媒体单元,并使该第一逻辑媒体单元指定移转至一第二储存虚拟化控制器,使其成为新的该第一逻辑媒体单元的拥有者。
40.根据权利要求39所述的储存虚拟化子系统,其特征在于其中所述的储存虚拟化子系统可以执行主机端输出入绕送。
41.根据权利要求39所述的储存虚拟化子系统,其特征在于其中所述的等储存虚拟化控制器的至少一者具有一该第一逻辑媒体单元的输出入请求状态表,用以纪录该等储存虚拟化控制器中的非该第一逻辑媒体单元拥有者的其他各储存虚拟化控制器的各该第一逻辑媒体单元的输出入请求收迄时间。
42.根据权利要求41所述的储存虚拟化子系统,其特征在于其中所述的具有该状态表的储存虚拟化控制器为该第一储存虚拟化控制器。
43.根据权利要求41所述的储存虚拟化子系统,其特征在于其中所述的具有该状态表的储存虚拟化控制器为一第三储存虚拟化控制器。
44.根据权利要求39所述的储存虚拟化子系统,其特征在于其中所述的等逻辑媒体单元支援藉由使用者组态设定以动态地重新指定而不需要重新初始化任一个SVC。
45.一种电脑系统,其特征在于其包含一主机及一储存虚拟化子系统连接于其上;该储存虚拟化子系统包含复数个储存虚拟化控制器及一实体储存装置阵列连接于其上,该实体储存装置阵列包含至少一实体储存装置;该储存虚拟化子系统并定义至少一逻辑媒体单元,该逻辑媒体单元包含该实体储存装置阵列的复数区段;该储存虚拟化子系统更包含该等储存虚拟化控制器的一启始一第一逻辑媒体单元的重新指定程序;及一为该至少一逻辑媒体单元的一第一逻辑媒体单元的拥有者的第一储存虚拟化控制器依据该起始指示而释出该第一逻辑媒体单元,并使该第一逻辑媒体单元指定移转至一第二储存虚拟化控制器,使其成为新的该第一逻辑媒体单元的拥有者。
46.根据权利要求45所述的电脑系统,其特征在于其中所述的储存虚拟化子系统可以执行主机端输出入绕送。
47.根据权利要求45所述的电脑系统,其特征在于其中所述的储存虚拟化子系统及一主机被设置成可执行分离冗余路径输出入传送功能。
48.根据权利要求45所述的电脑系统,其特征在于其中所述的主机被预先设定组态成,当其发送定址于该第一逻辑媒体单元的输出入请求时,是通过连接该主机与该第一逻辑媒体单元所指定的储存虚拟化控制器的连结来发送该输出入请求,而当该第一逻辑媒体单元无法再通过前述路径存取,才改经连接该主机与其他储存虚拟化控制器的连结来发送该输出入请求。
49.一种储存虚拟化控制器,用于一储存虚拟化子系统而与该子系统中的一第二储存虚拟化控制器互为冗余组态,其特征在于其中所述的储存虚拟化控制器包含一中央处理电路,用以执行输出入操作以回应于一主机的输出入请求;至少一主机端输出入装置连结端口设置来连接至该主机;至少一控制器间通讯通道控制器用以连接至该第二储存虚拟化控制器;及其中该中央处理电路被构造成可用以执行动态逻辑媒体单元的重新指定。
50.根据权利要求49所述的储存虚拟化控制器,其特征在于其中所述的储存虚拟化控制器亦可以执行主机端输出入请求绕送。
全文摘要
本发明是有关于一种执行主机端输出入请求绕送以及动态逻辑媒体单元重新指定的储存虚拟化子系统。在一实施例中,当一主机输出入请求为一储存虚拟化控制器所接收到而该储存虚拟化控制器不是该主机输出入请求所定址的逻辑媒体单元的逻辑媒体单元拥有者时,该输出入请求可被绕送至另一储存虚拟化控制器-该逻辑媒体单元拥有者-而被执行。在另一实施例中,该逻辑媒体单元拥有者的指定可以动态地重新指定给原先不是逻辑媒体单元拥有者的接收储存虚拟化控制器,而使得该接收储存虚拟化控制器变成新的逻辑媒体单元拥有者以执行该主机输出入请求。
文档编号G06F3/06GK1725170SQ20051008609
公开日2006年1月25日 申请日期2005年7月19日 优先权日2004年7月19日
发明者施明文, 詹志忠 申请人:普安科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1