CN101617297A - 多处理器存储区域网络中的虚拟化支持 - Google Patents
多处理器存储区域网络中的虚拟化支持 Download PDFInfo
- Publication number
- CN101617297A CN101617297A CN200780043621A CN200780043621A CN101617297A CN 101617297 A CN101617297 A CN 101617297A CN 200780043621 A CN200780043621 A CN 200780043621A CN 200780043621 A CN200780043621 A CN 200780043621A CN 101617297 A CN101617297 A CN 101617297A
- Authority
- CN
- China
- Prior art keywords
- processor
- frame
- incident
- core
- assigned
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- 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
- G06F3/0613—Improving I/O performance in relation to throughput
-
- 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/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multi Processors (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Hardware Redundancy (AREA)
Abstract
存储区域网络中对虚拟化的支持可利用多种技术来提供。在本发明的一个实施例中,可通过判定设备接收到的输入/输出(IO)是否为新的来提供交换级别负载平衡。如果特定的IO是新的,则可将该IO指派给特定的数据路径处理器并且可创建与该IO和与该处理器相对应的上下文。然后,当接收到与该IO相对应的事件时,可将该事件转发到被指派给该IO的处理器。
Description
相交申请的交叉引用
本申请是2007年11月27日提交的Maurilio Cometto、JeevanKamisetty、Arindam Paul、Varagur V.Chandrasekaran等人的题为“LOCKMANAGER ROTATION IN A MULTIPROCESSOR STORAGE AREANETWORK”的美国专利申请No.XX/XXX,XXX(代理人案卷号No.CISC-P493)的部分继续案,此处通过引用将该申请完全并入。
技术领域
本公开涉及存储区域网络。
背景技术
存储区域网络(SAN)是这样的计算机系统:其中,诸如独立盘冗余阵列(Redundant Array of Independent Disks,RAID)设备之类的大容量存储设备经由高速网络技术(而不是例如经由系统总线)连接到一个或多个中央处理器。随着因特网的出现,SAN越来越多地被用于存储大量信息并且对其的使用已经有了指数的增长。
存在两种一般方式来实现SAN:集中式的和分散式的。集中式SAN将多个主机捆绑到具有大量缓存和冗余电源的单个存储系统中。图1示出了典型的集中式SAN。发起者(也称为主机)100、102、104与大容量存储设备106通信。
另一方面,分散式SAN将多个大容量存储设备与诸如交换机之类的协调主机和这多个大容量存储设备之间的存储的集中式控制器相连接。图2示出了典型分布式SAN。这里,发起者200、202、204经由交换机212与包括若干个大容量存储设备206、208、210的虚拟SAN通信。
存在若干个可用于SAN内的各种应用,例如,卷管理(volumemanagement)应用、数据复制应用、数据迁移应用、以及数据保护应用,等等。这些应用或者是在主机方操作的,或者是在存储装置方操作的。
图3示出了典型SAN中的IO命令的操作。命令300被从发起者302发送到存储装置304。在此示例中,该命令可以是读取请求。这样,存储装置304随后向发起者302发回数据项306、308、310。一旦所有数据已被发送,存储装置304就发回响应消息312。
在主机方操作的应用能够对存储装置方隐藏操作的物理细节。类似地,在存储装置方操作的应用能够对主机方隐藏操作的物理细节。但是,在任一种实现方式中,用户经常受惠于单个厂商。例如,如果用户希望实现主机方应用,则任何利用该应用的主机都必须来自分发了该主机方应用的厂商。同样,如果用户希望实现存储装置方应用,则任何利用该应用的存储装置都必须来自分发了该存储装置方应用的厂商。
附图说明
图1示出了典型的集中式SAN。
图2示出了典型的分布式SAN。
图3示出了典型SAN中的IO命令的操作。
图4示出了SAN中执行的命令的示例。
图4A示出了示例性的软件栈。
图5示出了用于处置互锁请求的示例性方法。
图6示出了用于处置互锁请求的示例性装置。
图7示出了用于在存储区域网络中的具有多个处理器或核心的设备处处置帧的一种示例性方法。
图8示出了用于在存储区域网络中的具有多个处理器或核心的设备处处置帧的另一种示例性方法。
图9示出了用于在存储区域网络中的具有多个处理器或核心的设备处处置帧的另一种示例性方法。
图10示出了用于在存储区域网络中的具有多个处理器或核心的设备处处置帧的另一种示例性方法。
图11示出了用于在存储区域网络中的具有多个处理器或核心的设备处处置帧的一种示例性装置。
图12示出了用于在存储区域网络中的具有多个处理器或核心的设备处处置帧的另一种示例性装置。
图13示出了用于存储区域网络中交换级别负载平衡的示例性方法。
图14示出了用于存储区域网络中交换追赶的示例性方法。
具体实施方式
概述
存储区域网络中对虚拟化的支持可利用多种技术来提供。在本发明的一个实施例中,可通过判定设备接收到的输入/输出(IO)是否为新的来提供交换级别负载平衡。如果特定的IO是新的,则可将该IO指派给特定的数据路径处理器并且可创建与该IO和与该处理器相对应的上下文。然后,当接收到与该IO相对应的事件时,可将该事件转发到被指派给该IO的处理器。
示例性实施例
在本申请中,阐述了许多具体细节以帮助全面理解本发明。但是,对于本领域的技术人员来说显而易见的是,没有这些具体细节中的一些或全部也可以实现本发明。在其他情况下,没有详细描述公知的过程步骤,以避免模糊本发明。
提供了一种方案,其中SAN应用在分布式SAN环境中被移动到交换机。这使得应用可以高效且有效地操作,而不考虑主机和存储装置的特定厂商。它还提供了单个管理点。
来自SAN中的主机和存储装置的输入或去往这些主机或存储装置的输出被称为SAN的交换,或者说流。交换通常是以输入/输出(IO)来衡量的。传统上,每个输入或输出由主机发送并由存储装置端接,或者反之。这是因为将会发送或解释IO的应用位于主机或存储装置处。由于本发明描述了将应用移动到交换机,因此在本发明的一个实施例中,IO可在交换机(或者位于主机和存储装置之间的某个其他设备)处被端接。应当注意,本文档中各处使用的术语“存储装置”(storage)应当指单个存储设备或一组存储设备。
图4示出了SAN中执行的命令的示例。与图3类似,此图中的命令是读取请求。但是,不是直接发生于发起者400和存储装置402之间的通信,命令404必须首先在交换机406处被端接。交换机406随后对命令执行一个或多个处理,然后生成由此产生的命令408以便传输到存储装置402。对于在交换机406处端接的数据消息410、412、414来说也是如此,其中在将数据416、418、420重放给发起者400前可对其执行处理。
在本发明的一个实施例中,可使用与标准交换机兼容的定制硬件.。这种实施例使得无需修改交换机本身。该硬件可被称为存储服务模块(SSM),其可以是插入到交换机中的刀片并且包括硬件和软件。其他实施例也是可能的,其中使用了交换机本身或者使用了其他硬件和/或软件。
在本发明的一个实施例中,所使用的软件可被分割成三个单独的部分。图4A示出了示例性的软件栈。伙伴软件(PS)层450可包括要运行的下层应用。控制路径处理器(CPP)层452可控制软件和硬件。数据路径处理器(DPP)层454可以是执行应用进程本身之处。每个DPP实质上表示多处理器或多核环境中的单个处理器或核心。
一种用于在SAN内通信的常见协议是小型计算系统接口(SCSI)。主机可通过使用光纤信道(FC)交换技术来经由SCSI以高速通信。近来的发展已经使得这种通信可以利用10Gb/s FC或10Gig以太网标准以高达10Gb/s的速度发生。因此,SAN交换机所执行的复杂虚拟化功能也以10Gb/s来执行,以免产生瓶颈,将会是有利的。不幸的是,大多数交换机内常见的单处理器体系结构对于这些级别的线路速度来说不是可行方案。任何方案都要求使用多处理器或多核处理器技术。
然而,这种高性能要求复杂的软件。当尝试利用多核处理器来控制虚拟SAN时,会发生若干个各种技术问题。
所有存储设备中的一个常见的问题涉及数据完整性。具体而言,当多个主机正在访问同一存储卷时,经常必须锁定存储卷的特定部分,以确保每次只有一个主机可以修改下层数据。如果没有采取适当的锁定并且两个主机发出了矛盾的写入命令,则可能发生数据损坏并且有可能发生系统故障。在访问一个卷之前,发起者发出互锁(interlock)请求,该请求要求该卷被锁定。在典型的单核或单处理器环境中,每个存储卷的集中式锁定管理器接收该互锁请求并且控制相应存储卷的锁定,以确保数据完整性。但是,如果想要先前论述的高线路速度,则在多核或多处理器环境中,是不可能实现这种集中式锁定管理器的。这是因为单个锁定管理器将会代表交换机处的潜在瓶颈点。
为了解决该问题,提供了本发明的一个实施例,其中,每个卷的锁定管理器保持在多个核心或处理器之间移动。通过使锁定管理器从一个处理器“跳跃”到另一个处理器,可以防止任何处理器处的瓶颈。希望经常在处理器间移动锁定管理器以防止这种瓶颈,但不希望太经常以至于这变得低效。在本发明的一个实施例中,在处理器间移动的频率可基于对锁定管理器所处置的IO的数目进行计数的计数器,并且可以一旦达到预定的阈值就将锁定管理器移动到一个不同的处理器。在本发明的另一个实施例中,在处理器之间移动的频率可以基于对锁定管理器在处理器上操作的时间量计数的时间,并且一旦达到预定的时间就将锁定管理器移动到一个不同的处理器。应当注意,当达到预定的阈值或定时器时,有可能当前选择的处理器仍是负载最轻的处理器。在这种情况下,可以实现这样的实施例,即或者不管怎样都改变处理器,或者始终选择负载最轻的处理器,即使负载最轻的处理器就是当前选择的处理器。
在本发明的一个实施例中,当锁定管理器被移动到一个不同的处理器时,所选择的处理器是负载最轻的(即,在当时处理的IO的量最少)。也可以实现其他实施例,其中其他标准或者被与处理器的负载级别结合使用或者取代处理器的负载级别被使用,所述其他标准例如是随机选择例程、循环方案、或者用户选择。
在本发明的一个实施例中,利用上述的锁定管理器提供了对同一虚拟逻辑单元号(VLUN)的共同访问。图5示出了用于处置互锁请求的示例性方法。该过程可以在SAN的主机与存储装置方之间的中介处(例如在交换机中)执行。但是,可以实现这样的实施例,其中,该过程物理上是在主机和存储装置方执行的,但是软件充当中介。在500,接收互锁请求。在502,判定这是否是第一互锁请求。如果是,则在504,可选择负载最轻的DPP。如果不是,则先前可能已经选择了DPP。这样,在506,可以判定是否已达到了针对所选DPP的预定阈值个连续互锁请求。这可以通过将互锁请求的计数器与预定的数目相比较来实现。可以使用一定时器并且可将该定时器与预定的时间相比较。如果已经达到预定的阈值,则过程前进到504,其中负载最轻的DPP被选择。在508,所选DPP处理互锁请求。在510,可以递增(或者递减,这是基于所使用的实施例的)计数器,以表明已经处置又一个互锁请求。过程随后对于每个接收到的互锁请求循环到500。
在另一个实施例中,可以使用诸如多核Octeon处理器之类的处理器。在该实施例中,互锁请求被实现在称为工作队列条目(WQE)的数据结构中,其可被标记以标签,以表明WQE是互锁请求。核心拾取WQE并且对其进行处理。在处理一定数目的WQE之后(或者基于时间),核心将核心组改变到核心映射,以便随后被排队的WQE被调遣到新的(一个或多个)核心并且在该处被处理。新的核心可以是核心组中最不繁忙的那个。这样,透明地实现了负载平衡。
图6示出了用于处置互锁请求的示例性装置。锁定请求接收器600可接收互锁请求。耦合到锁定请求接收器600的第一互锁请求判定器602可判定这是否是第一互锁请求。如果是,则耦合到锁定请求接收器600的锁定请求处理器重选择器604可选择一处理器来处置该锁定请求。其可包括最轻负载处理器选择器606,该最轻负载处理器选择器606可选择负载最轻的处理器。如果这不是第一互锁请求,则DPP先前可能已经被选择过了。这样,耦合到第一互锁请求判定器602和锁定请求处理器重选择器604的预定阈值锁定请求处理器判定器608可判定是否已达到针对所选DPP的预定阈值个连续互锁请求。在另一种实施例中,该组件可被替换为预定时间处理器判定器,该预定时间处理器判定器可判定所选处理器的定时器是否已达到预定的时间。如果已达到预定的阈值或者时间,则锁定请求处理器重选择器604可选择一处理器来处置锁定请求。互锁请求随后可被所选的DPP所处理。如果尚未达到预定的阈值或时间,则这可包括利用耦合到预定阈值锁定请求处理器判定器608的先前所选处理器锁定请求指派器610来将锁定请求指派给先前选择的处理器。如果尚未达到预定阈值或时间,则这可包括利用耦合到预定阈值锁定请求处理器判定器608的重选择处理器锁定请求指派器612来将锁定请求指派给新选择的处理器。如果尚未达到预定的阈值或时间,则耦合到预定阈值锁定请求处理器判定器608的计数器递增器614可递增计数器,而如果已经达到预定的阈值或时间,则耦合到预定阈值锁定请求处理器判定器608的计数器重置器616可重置计数器。注意,以上描述的各个元件以及本文档中各处的其他图中的元件,不需要是不同的设备或组件。本领域的普通技术人员将会认识到,这些元件中的任何两个或更多个的操作可被组合到单个组件中。
多核或多处理器SAN环境中出现的另一个问题涉及状态信息的管理。主机和存储装置在被称为上下文的数据结构中维护状态信息。这在主机方通常被称为主机上下文,而在存储装置方则被称为盘上下文。但是,主机上下文和盘上下文都要求互斥的访问,因为它们包含状态变量。在本发明的一个实施例中,这可经由每个上下文的单独条目来实现,所述条目例如是三元内容可寻址存储器(TCAM)条目。每个主机IO可被指派以一主机上下文。由虚拟化功能对存储装置方执行的每个IO可被指派以一盘上下文。该上下文可用于跟踪例如在任意给定时刻已执行了多少IO处理。每当IS中发生新的事件(例如响应消息)时,该上下文就可被取出。
在本发明的一个实施例中,为特定IO服务直到完成所需的处理被尽可能地保持在单个DPP内。这使得昂贵的查找达最小化。它还利用了本地缓存中的热数据。由于只有一个DPP在处理交换,因此它不需要被冲回存储器并被另一DPP重新读取。在另一个实施例中,新的IO可被重定向到负载最轻的DPP,从而改善等待时间。此外,DPP上的软件和ASIC硬件之间的交互可达到最低限度。
在本发明的这个实施例中,标签和软切换以及显式的锁定模型都可用来执行交换级别负载平衡。这样允许了完全在一个核心处处置交换,从而更有效地利用了驻留于核心上的数据缓存,而不会用同样的数据拷贝来污染其他核心的数据缓存。除了硬件提供的队列之外(通常每个核心组一个队列),每个核心还可具有软队列,该软队列是由该特定核心上的软件管理的。这样就可以直接访问该特定核心,这与硬件工作队列不同,硬件工作队列覆盖了多个核心并且不允许指定向其指派特定帧或事件的特定核心。这些软队列可驻留在共享存储器中,从而任何核心在希望将帧/事件调遣到特定核心时就可以将该帧/事件加入队列。在本发明的一个实施例中,只有队列的所有者(核心)会把帧/事件取出队列并且进行处理。在本实施例中,硬件在这些队列的管理方面不起作用。调度器可以从核心所提供的硬件工作队列以及软件工作队列中轮询事件。该调度器可以仅在确保了该核心的软件工作队列为空时才从硬件工作队列中轮询事件。这确保了核心之间的适当负载平衡,并且向软件事件赋予了适当的权力。显式锁定模型是通过使将在核心之间共享的所有数据结构被显式锁定来实现的。帧可在两个阶段中被处理。
第一阶段可以通过执行帧级别差错校验来开始。这可包括诸如循环冗余校验之类的校验。然后,该阶段可进行到确定帧的类型。可执行查找来判定帧是例如命令帧、数据帧、传送帧还是响应帧。对于命令帧,可利用队列指针(例如发起者标签LUN),使用硬件工作队列来执行标签切换。对于数据、传送或响应帧,可对该指针执行交换表查找,以获得正在处理该交换的核心的核心标识。随后可利用该指针作为帧的新标签来切换标签。这样就将帧指派给特定的核心组,而不是特定的核心。随后可利用相应的软件工作队列来将帧调遣到特定的核心。主机/盘交换的交换表条目可能已在第二阶段的先前操作期间、在主机命令处理期间被编程了。或者,该表可能已在某个其他时间创建。
第二阶段可涉及整个帧处理。对于命令帧,可为主机交换创建交换表条目,并可将其核心标识指派为正在处理该命令的核心。然后,可执行诸如范围表(Extent Map,XMAP)或虚拟到物理(V2P)查找、向目标发送命令等等之类的命令级处理。对于数据、传送或响应帧,上下文最有可能在数据缓存中,从而可以利用热缓存,而无需频繁地冲刷或搜索数据。
这样,当接收到命令帧时,硬件可选择负载最轻的处理器来处理该命令帧。一旦硬件将该命令帧调遣到特定的核心,该命令在交换表中就立即被指派给该核心。从此刻以后,所有与该命令帧有关的事件都由该核心处置。这是通过下述各项的组合而发生的:软件工作队列、通过标签切换根据需要串行化数据结构访问,并且将整个虚拟化任务在逻辑上划分成两个阶段。这样,通过将交换限制到特定核心,可以获得以下益处:
使昂贵的查找达到最低限度-由于核心标识被存储在交换本身之中,因此交换的各种事件可被确定地指派给优先(in first order time)负责该交换的特定核心。
可以利用本地缓存中的热数据-由于只有一个核心处置一交换,所以与该交换有关的各种对象驻留在特定核心的数据缓存中的概率要高得多。
通过利用硬件功能,可将新的输入/输出重定向到负载最轻的核心。该硬件可在每次接收到新的命令帧时选择负载最轻的核心。
可以更高效地管理交换中的资源-由于交换被重定向到一个特定的核心,所以完成一个交换所需的各种对象可以从其池中分配并随后被释放到同一池中。
对锁定的争用减少了-由于特定的上下文被单个核心所“拥有”,所以大大减少了必须锁定上下文以供独家访问的次数。
在本发明的另一个实施例中,帧类型的粒度可被设置到极精细的级别。这样例如就使得交换处理的不同阶段可由不同核心来处置,每次前往负载最轻的处理器。这是由于以下事实:存在某些类型的帧,这些帧不是真正需要与交换中的先前帧共享同一缓存,从而将这些帧实时转发到负载最轻的处理器而不是可能不必要地将其发送到过载的处理器,则会是更高效的。实行这个策略还消除了对用于获得对完全处理帧所需的各种上下文状态的独家访问的集中式锁定措施或其他先占措施的需要。
随着帧类型的粒度被设置到越来越细的级别而变得更加普遍的另一个问题是需要“追赶”交换。即,有可能特定的帧可被指派到特定核心的软件工作队列,但到该帧准备好被处理时(例如,当它在队头时),拥有该交换的核心可能已经变了。为了处置这种情况,在本发明的一个实施例中,在实际处理帧之前,处理器将多次检查以确保它仍是拥有者,如果不是,则帧将会被放置在与交换的新拥有者相对应的软件工作队列中。
图7示出了用于在存储区域网络中的具有多个处理器或核心的设备处处置帧的一种示例性方法。该帧可对应于特定的交换。这可以由例如帧中的交换标识来指示,但本领域的普通技术人员将会认识到,可能存在其他方式来跟踪哪个交换对应于一个帧。在700,可对该帧执行帧级别差错校验。在702,可以判定该帧是否是命令帧。如果该帧是命令帧,则在704,可以确定负载最轻的处理器或核心的核心标识。这可通过将该帧放置在与一核心组相对应的硬件工作队列中来实现。硬件工作队列可使用发起者目标逻辑单元号(ITL)指针作为标签来执行标签切换。然后在706,可以在交换查找数据结构中创建一条目,将该交换映射到该核心标识。如果该帧不是命令帧,则在708,可以在交换查找数据结构中执行查找以确定与该交换相对应的核心标识。然后,在710,可以将该帧转发到该核心标识所标识的处理器或核心。这可通过将该帧放置在与该核心标识所标识的处理器或核心相对应的软件工作队列中来实现。在712,可以运行队列调度器,其中队列调度器从与特定核心组相对应的硬件工作队列和与该核心组内的每个核心相对应的软件工作队列中轮询事件,并且所述队列调度器仅在所述软件工作队列为空之后才从所述硬件工作队列中轮询事件。
图8示出了用于在存储区域网络中的具有多个处理器或核心的设备处处置帧的另一种示例性方法。与先前实施例一样,该帧可对应于特定的交换。在第一阶段中,在800,可对该帧执行帧级别差错校验。然后在802,可以判定该帧是否是命令帧。如果该帧是命令帧,则在804,可以将该命令帧指派给负载最轻的处理器。这可通过将该帧放置在与一核心组相对应的硬件工作队列中来实现。硬件工作队列可使用发起者目标逻辑单元号(ITL)指针作为标签来执行标签切换。如果该帧不是命令帧,则在806,可以将该帧指派给与该交换相对应的交换查找数据结构所指示的处理器。这可通过将该帧放置在与该核心标识所标识的处理器或核心相对应的软件工作队列中来实现。在808,可以运行队列调度器,其中队列调度器从与特定核心组相对应的硬件工作队列和与该核心组内的每个核心相对应的软件工作队列中轮询事件,并且所述队列调度器仅在所述软件工作队列为空之后才从所述硬件工作队列中轮询事件。
图9示出了用于在存储区域网络中的具有多个处理器或核心的设备处处置帧的另一种示例性方法。同样,该帧可对应于特定的交换。在900,可对该帧执行帧级别差错校验。在902,可以确定该帧的类型。如果该帧是命令帧,则在904,可以确定负载最轻的处理器或核心的核心标识。这可通过将该帧放置在与一核心组相对应的硬件工作队列中来实现。硬件工作队列可使用发起者目标逻辑单元号(ITL)指针作为标签来执行标签切换。然后在906,可以在交换查找数据结构中创建一条目,将该交换映射到该核心标识。然后在908,可在交换查找数据结构中的该条目中指示要指派给处理器的一个或多个帧的类型。如果该帧不是命令帧,则在910,可以在交换查找数据结构中执行查找以确定与该交换相对应并且与该非命令帧的类型相对应的核心标识。然后,在912,如果该帧是命令帧或者如果找到了与该交换相对应并且与该非命令帧的类型相对应的核心标识,则可以将该帧转发到该核心标识所标识的处理器或核心。这可通过将该帧放置在与该核心标识所标识的处理器或核心相对应的软件工作队列中来实现。在914,如果该帧不是命令帧并且没有找到与该交换相对应并且与该非命令帧的类型相对应的核心标识,则可将该帧转发到负载最轻的处理器或核心。如上所述,这可通过将该帧放置在与一核心组相对应的硬件工作队列中来实现。在916,可以运行队列调度器,其中队列调度器从硬件和软件工作队列中轮询事件。在一些实现方式中,队列调度器可以仅在与特定核心组内的每个核心相对应的软件工作队列为空之后才从与该核心组相对应的硬件工作队列中轮询事件。
图10示出了用于在存储区域网络中的具有多个处理器或核心的设备处处置帧的另一种示例性方法。与先前实施例一样,该帧可对应于特定的交换。在第一阶段中,在1000,可对该帧执行帧级别差错校验。然后在1002,可以确定该帧的类型。如果该帧是命令帧,则在1004,可以将该命令帧指派给负载最轻的处理器。这可通过将该帧放置在与一核心组相对应的硬件工作队列中来实现。硬件工作队列可使用发起者目标逻辑单元号(ITL)指针作为标签来执行标签切换。如果该帧不是命令帧,则在1006,可以将该帧指派给与该交换相对应并且与该非命令帧的类型相对应的交换查找数据结构所指示的处理器。这可通过将该帧放置在与该核心标识所标识的处理器或核心相对应的软件工作队列中来实现。在1008,可以运行队列调度器,其中队列调度器从硬件和软件工作队列中轮询事件,并且仅在与特定核心组内的每个核心相对应的软件工作队列为空之后才从与该核心组相对应的硬件工作队列中轮询事件。在第二阶段中,在1010,可以确定帧的类型。如果该帧是命令帧,则在1012,可以在与负载最轻的处理器相对应的交换查找数据结构中创建条目。然后在1014,可在交换查找数据结构中的该条目中指示要指派给处理器的一个或多个帧类型。如果该帧不是命令帧,则在1016,可利用与对应于该交换并对应于该非命令帧的类型的交换查找数据结构所指示的处理器相对应的数据缓存来处理该帧。
图11示出了用于在存储区域网络中的具有多个处理器或核心的设备处处置帧的一种示例性装置。该帧可对应于特定的交换。这可以由例如帧中的交换标识来指示,但本领域的普通技术人员将会认识到,可能存在其他方式来跟踪哪个交换对应于一个帧。帧级别差错校验器1100可对该帧执行帧级别差错校验。耦合到帧级别差错校验器1100的帧类型确定器1102可判定该帧是否是命令帧。如果该帧是命令帧,则耦合到帧类型确定器1102的最轻负载处理器核心标识确定器1104可以确定负载最轻的处理器或核心的核心标识。这可通过将该帧放置在与一核心组相对应的硬件工作队列1106中来实现。硬件工作队列1106可使用发起者目标逻辑单元号(ITL)指针作为标签来执行标签切换。耦合到最轻负载处理器核心标识确定器1104的交换查找数据结构条目创建器1108在交换查找数据结构中创建一条目,将该交换映射到该核心标识。如果该帧不是命令帧,则耦合到帧类型确定器1102的交换查找数据结构搜索器1112可以在存储器1110中的交换查找数据结构中执行查找以确定与该交换相对应的核心标识。然后,耦合到交换查找数据结构搜索器1112的帧转发器1114可以将该帧转发到该核心标识所标识的处理器或核心。这可通过将该帧放置在与该核心标识所标识的处理器或核心相对应的软件工作队列1116中来实现。软件工作队列1116可被配置为基于对相应处理器是帧所属的交换的拥有者这一判定来存储将被相应处理器所执行的这些帧。耦合到软件工作队列1116和硬件工作队列1106的队列调度器1118可被运行,其中队列调度器1118被配置为从硬件和软件工作队列中轮询事件,并且仅在与特定核心组内的每个核心相对应的软件工作队列为空之后才从与该核心组相对应的硬件工作队列中轮询事件。
图12示出了用于在存储区域网络中的具有多个处理器或核心的设备处处置帧的另一种示例性装置。同样,该帧可对应于特定的交换。帧级别差错校验器1200可对该帧执行帧级别差错校验。耦合到帧级别差错校验器1200的帧类型确定器1202可以确定该帧的类型。如果该帧是命令帧,则耦合到帧类型确定器1202的最轻负载处理器核心标识确定器1204可以确定负载最轻的处理器或核心的核心标识。这可通过将该帧放置在与一核心组相对应的硬件工作队列1206中来实现。硬件工作队列1206可使用发起者目标逻辑单元号(ITL)指针作为标签来执行标签切换。耦合到最轻负载处理器核心标识确定器1204的交换查找数据结构条目创建器1208可以在存储器1210中的交换查找数据结构中创建一条目,将该交换映射到该核心标识。然后,耦合到交换查找数据结构条目创建器1208的帧类型指示器1212可在交换查找数据结构中的该条目中指示要指派给处理器的一个或多个帧的类型。如果该帧不是命令帧,则耦合到帧类型确定器1202和存储器1210的帧类型交换查找数据结构搜索器1214可以在交换查找数据结构中执行查找,以确定与该交换相对应并且与该非命令帧的类型相对应的核心标识。然后,如果该帧是命令帧或者如果找到了与该交换相对应并且与该非命令帧的类型相对应的核心标识,则耦合到交换查找数据结构搜索器1214、帧类型确定器1202和最轻负载处理器核心标识确定器1204的帧转发器1216可以将该帧转发到该核心标识所标识的处理器或核心。这可通过将该帧放置在与该核心标识所标识的处理器或核心相对应的软件工作队列1218中来实现。如果该帧不是命令帧并且没有找到与该交换相对应并且与该非命令帧的类型相对应的核心标识,则帧转发器1216可将该帧转发到负载最轻的处理器。如上所述,这可通过将该帧放置在与一核心组相对应的硬件工作队列1206中来实现。耦合到软件工作队列1218和硬件工作队列1206的队列调度器1220可从硬件和软件工作队列中轮询事件,并且仅在与特定核心组内的每个核心相对应的软件工作队列为空之后才从与该核心组相对应的硬件工作队列中轮询事件。
图13示出了用于存储区域网络中交换级别负载平衡的示例性方法。该过程可在SAN的主机与存储装置方之间的中介处(例如在交换机中)执行。但是,可以实现这样的实施例,其中,该过程物理上是在主机和存储装置方执行的,但是软件充当中介。在1300,可接收IO。该IO可包括多个不同的处理步骤,这些处理步骤在被执行时生成事件。在1302,可以判定该IO是否是新的IO。在这里,“新”指的是对应于系统当前不知晓的交换。如果该IO是新的,则在1304,IO被指派到特定的DPP。在一个实施例中,该指派可以是指派给负载最轻的DPP,但是也可能实现这样的实施例,其中,取代DPP的负载状态或者与DPP的负载状态相结合,其他因素被用于确定向哪个DPP指派IO。在1306,可以创建与该IO和该处理器相对应的上下文。当接收到源自主机的IO时,则可创建主机上下文。当交换机随后向存储装置源发IO时,可以创建盘上下文。在1308,可以接收与IO相对应的事件。该事件可以改变该特定IO和DPP的上下文。这样,它应当被转发到处置相应IO的特定DPP。应当注意,只有在事件潜在地改变IO的状态(上下文)时才有必要将事件转发到特定的DPP。可能实现这样的实施例,其中所有事件都被转发到相应的DPP,但是也可能实现这样的实施例,其中不会潜在改变状态的事件根本不被转发。在1310,该事件被转发到相应的DPP。在本发明的一个实施例中,事件是经由标签-长-度值(TLV)帧或光纤信道协议(FCP)帧来接收的。当TCAM条目被创建时,这些条目可被加标签以表明它们是否应当处置或转发特定的事件帧。然后,可通过检查TCAM条目来判定DPP是否应当处置帧或者转发帧并且如果要转发那么应当转发到哪个处理器,来处理这些帧。在本发明的另一个实施例中,可以配置SPI信道,使得针对特定交换的所有IO都到达特定的核心组。这可通过配置处理器中的适当的比特掩码以利用不同的标签值来标记来自不同交换的帧并且指派不同的核心组来实现。当某个核心组接收到它不应当处理的帧时,该核心组可通过改变WQE中的核心组id并且通过诸如TAG_DESCHEDULE之类的标签重新调度它,来将该分组转发到正确的核心组。因此,在1312,当DPP接收到事件时,它可判定它是否应当处理该事件。如果否,则在1314它可将该事件转发到正确的DPP。
在本发明的另一个实施例中,交换级别负载平衡可经由标签切换来执行。当某个DPP希望与另一DPP通信时,它能够实现此目的的一种方式是构建WQE并将其推送到DPP队列之一中。该WQE可具有带目标核心组号的字段,并且一处理核心可被从目标核心组号中选出并被赋予要被处理的WQE。如果存在多个希望对某个数据结构进行读取或写入的核心,则这些核心可以显式地或者通过标签切换来锁定该数据结构。
分布式负载平衡和没有集中式锁定管理器的一个结果是,可能除了拥有上下文并在其上工作的那个DPP外,任何其他DPP都不能改变状态。但是,可能存在必须立即访问上下文的情况(例如,当主机发出ABTS时)。在这种情形下,DPP应当将事件转发给处置任务的DPP。
图14示出了用于存储区域网络中交换追赶的示例性方法。在1400,上下文中的字段可包括访问它的DPP的DPP标识。在1402,可接收事件。在1404,接收事件的DPP可通过考查上下文中的该字段来向处理任务(并且负有改变状态的责任)的DPP发送消息。在1406,在接收到该消息后,DPP可验证其内容并且或者处理该事件或者将该事件转发到现在推测起来应当在处置该任务的下一DPP(通过考查上下文中的该字段)。接收端的这种检查确保了在DPP发送消息和该消息被接收到之间的时间间隔中任务未被重指派。
虽然这里示出和描述了本发明的示例性实施例和应用,但是可以进行许多保持在本发明的概念、范围和精神之类的变化和修改,并且本领域的普通技术人员在研读本申请之后将会清楚这些变化。因此,所描述的实施例应当被认为是示例性的而不是限制性的,并且本发明不应当限于这里给出的细节,而是可在所附权利要求的范围及其等同物的范围内被修改。
Claims (18)
1.一种用于存储区域网络中的交换级别负载平衡的方法,该方法包括:
接收输入/输出(I/O);
判定所述IO是否是新的;
如果所述IO是新的,则:
将所述IO指派到特定的数据路径处理器;
创建与所述IO和所述处理器相对应的上下文;
接收与所述IO相对应的事件;以及
将所述事件转发到被指派给所述IO的处理器。
2.如权利要求1所述的方法,其中,所述特定的数据路径处理器是负载最轻的数据路径处理器。
3.如权利要求1所述的方法,其中,如果所述IO源自所述存储区域网络中的主机,则所述上下文是主机上下文。
4.如权利要求1所述的方法,其中,如果所述IO源自交换机并朝向所述存储区域网络中的存储装置,则所述上下文是盘上下文。
5.如权利要求1所述的方法,其中,所述方法是在所述存储区域网络中的主机和盘之间的设备处执行的。
6.如权利要求1所述的方法,还包括:
在处理器处接收所述事件;
判定所述处理器是否仍被指派给所述IO;并且
如果所述处理器并非仍被指派给所述IO,则将所述事件转发到被指派给所述IO的处理器。
7.如权利要求1所述的方法,其中,接收事件的步骤包括经由标签-长度-值TLV帧来接收事件。
8.如权利要求1所述的方法,其中,接收事件的步骤包括经由光纤信道协议(FCP)帧来接收事件。
9.如权利要求1所述的方法,其中,所述创建上下文的步骤包括创建三元内容可寻址存储器(TCAM)条目。
10.一种用于存储区域网络中的交换级别负载平衡的设备,该设备包括:
用于接收输入/输出(IO)的装置;
用于判定所述IO是否是新的的装置;
如果所述IO是新的,则:
用于将所述IO指派到特定的数据路径处理器的装置;
用于创建与所述IO和所述处理器相对应的上下文的装置;
用于接收与所述IO相对应的事件的装置;以及
用于将所述事件转发到被指派给所述IO的处理器的装置。
11.如权利要求10所述的设备,其中,所述特定的数据路径处理器是负载最轻的数据路径处理器。
12.如权利要求10所述的设备,其中,如果所述IO源自所述存储区域网络中的主机,则所述上下文是主机上下文。
13.如权利要求10所述的设备,其中,如果所述IO源自交换机并朝向所述存储区域网络中的存储装置,则所述上下文是盘上下文。
14.如权利要求10所述的设备,其中,所述设备处于所述存储区域网络中的主机和盘之间。
15.如权利要求10所述的设备,还包括:
用于在处理器处接收所述事件的装置;
用于判定所述处理器是否仍被指派给所述IO的装置;并且
用于如果所述处理器并非仍被指派给所述IO则将所述事件转发到被指派给所述IO的处理器的装置。
16.如权利要求10所述的设备,其中,用于接收事件的装置包括用于经由标签-长度-值(TLV)帧来接收事件的装置。
17.如权利要求10所述的设备,其中,用于接收事件的装置包括用于经由光纤信道协议(FCP)帧来接收事件的装置。
18.如权利要求10所述的设备,其中,用于创建上下文的装置包括用于创建三元内容可寻址存储器(TCAM)条目的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/605,843 US7882283B2 (en) | 2006-11-27 | 2006-11-28 | Virtualization support in a multiprocessor storage area network |
US11/605,843 | 2006-11-28 | ||
PCT/US2007/085750 WO2008067370A2 (en) | 2006-11-28 | 2007-11-28 | Virtualization support in a multiprocessor storage area network |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101617297A true CN101617297A (zh) | 2009-12-30 |
CN101617297B CN101617297B (zh) | 2011-09-28 |
Family
ID=39465137
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800436216A Expired - Fee Related CN101617297B (zh) | 2006-11-28 | 2007-11-28 | 多处理器存储区域网络中的虚拟化支持 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7882283B2 (zh) |
EP (1) | EP2084611B1 (zh) |
CN (1) | CN101617297B (zh) |
WO (1) | WO2008067370A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113316769A (zh) * | 2019-01-14 | 2021-08-27 | 瑞典爱立信有限公司 | 网络功能虚拟化中使用基于规则反馈的事件优先级的方法 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7844784B2 (en) | 2006-11-27 | 2010-11-30 | Cisco Technology, Inc. | Lock manager rotation in a multiprocessor storage area network |
US7882283B2 (en) | 2006-11-27 | 2011-02-01 | Cisco Technology, Inc. | Virtualization support in a multiprocessor storage area network |
US8677014B2 (en) * | 2006-11-27 | 2014-03-18 | Cisco Technology, Inc. | Fine granularity exchange level load balancing in a multiprocessor storage area network |
US7783805B2 (en) * | 2006-11-29 | 2010-08-24 | Cisco Technology, Inc. | Interlocking input/outputs on a virtual logic unit number |
US7962458B2 (en) * | 2008-06-12 | 2011-06-14 | Gravic, Inc. | Method for replicating explicit locks in a data replication engine |
US8301593B2 (en) * | 2008-06-12 | 2012-10-30 | Gravic, Inc. | Mixed mode synchronous and asynchronous replication system |
US20130067069A1 (en) | 2011-09-13 | 2013-03-14 | International Business Machines Corporation | Flow topology of computer transactions |
US9229749B2 (en) | 2011-10-31 | 2016-01-05 | Cisco Technology, Inc. | Compute and storage provisioning in a cloud environment |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2123447C (en) | 1993-09-20 | 1999-02-16 | Richard L. Arndt | Scalable system interrupt structure for a multiprocessing system |
US7480653B2 (en) | 1996-10-22 | 2009-01-20 | International Business Machines Corporation | System and method for selective partition locking |
US6192408B1 (en) | 1997-09-26 | 2001-02-20 | Emc Corporation | Network file server sharing local caches of file access information in data processors assigned to respective file systems |
US6658002B1 (en) * | 1998-06-30 | 2003-12-02 | Cisco Technology, Inc. | Logical operation unit for packet processing |
US6480918B1 (en) | 1998-12-22 | 2002-11-12 | International Business Machines Corporation | Lingering locks with fairness control for multi-node computer systems |
US6321238B1 (en) | 1998-12-28 | 2001-11-20 | Oracle Corporation | Hybrid shared nothing/shared disk database system |
US6412034B1 (en) | 1999-04-16 | 2002-06-25 | Oracle Corporation | Transaction-based locking approach |
US6697901B1 (en) | 2000-10-24 | 2004-02-24 | Oracle International Corporation | Using secondary resource masters in conjunction with a primary resource master for managing resources that are accessible to a plurality of entities |
US7089293B2 (en) | 2000-11-02 | 2006-08-08 | Sun Microsystems, Inc. | Switching system method for discovering and accessing SCSI devices in response to query |
US20020157113A1 (en) | 2001-04-20 | 2002-10-24 | Fred Allegrezza | System and method for retrieving and storing multimedia data |
US6691184B2 (en) * | 2001-04-30 | 2004-02-10 | Lsi Logic Corporation | System and method employing a dynamic logical identifier |
CN1209714C (zh) * | 2002-03-12 | 2005-07-06 | 中国科学院计算技术研究所 | 基于网络存储和可扩展体系结构的服务器系统及方法 |
JP2005165702A (ja) | 2003-12-03 | 2005-06-23 | Hitachi Ltd | クラスタストレージのデバイス連結方法 |
CN100501684C (zh) * | 2004-03-19 | 2009-06-17 | "英特尔A/O"股份公司 | 故障转移和负载平衡 |
US7197588B2 (en) | 2004-03-31 | 2007-03-27 | Intel Corporation | Interrupt scheme for an Input/Output device |
US7689794B2 (en) * | 2004-10-22 | 2010-03-30 | Scientific-Atlanta, Llc | System and method for handling memory allocation failures through reserve allocation of event data |
US7735089B2 (en) | 2005-03-08 | 2010-06-08 | Oracle International Corporation | Method and system for deadlock detection in a distributed environment |
US7937435B2 (en) * | 2006-02-21 | 2011-05-03 | Strangeloop Networks, Inc. | Identifying, storing, and retrieving context data for a network message |
US8255910B2 (en) * | 2006-07-18 | 2012-08-28 | Hewlett-Packard Development Company, L.P. | Fair weighted proportional-share virtual time scheduler |
US8677014B2 (en) | 2006-11-27 | 2014-03-18 | Cisco Technology, Inc. | Fine granularity exchange level load balancing in a multiprocessor storage area network |
US7882283B2 (en) | 2006-11-27 | 2011-02-01 | Cisco Technology, Inc. | Virtualization support in a multiprocessor storage area network |
US7844784B2 (en) | 2006-11-27 | 2010-11-30 | Cisco Technology, Inc. | Lock manager rotation in a multiprocessor storage area network |
-
2006
- 2006-11-28 US US11/605,843 patent/US7882283B2/en active Active
-
2007
- 2007-11-28 WO PCT/US2007/085750 patent/WO2008067370A2/en active Application Filing
- 2007-11-28 CN CN2007800436216A patent/CN101617297B/zh not_active Expired - Fee Related
- 2007-11-28 EP EP07868910.6A patent/EP2084611B1/en not_active Not-in-force
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113316769A (zh) * | 2019-01-14 | 2021-08-27 | 瑞典爱立信有限公司 | 网络功能虚拟化中使用基于规则反馈的事件优先级的方法 |
Also Published As
Publication number | Publication date |
---|---|
EP2084611A4 (en) | 2013-01-23 |
WO2008067370A2 (en) | 2008-06-05 |
WO2008067370A3 (en) | 2008-11-27 |
US20080126693A1 (en) | 2008-05-29 |
US7882283B2 (en) | 2011-02-01 |
EP2084611B1 (en) | 2014-05-07 |
CN101617297B (zh) | 2011-09-28 |
EP2084611A2 (en) | 2009-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101617297B (zh) | 多处理器存储区域网络中的虚拟化支持 | |
US10645150B2 (en) | Hierarchical dynamic scheduling | |
CN101414277B (zh) | 一种基于虚拟机的按需增量恢复容灾系统及方法 | |
US11755356B2 (en) | Asynchronous queries on secondary data cores in a distributed computing system | |
KR102051282B1 (ko) | 선택적 리소스 이동을 이용하는 네트워크 결합 메모리 | |
US20160085601A1 (en) | Transparent user mode scheduling on traditional threading systems | |
US8677014B2 (en) | Fine granularity exchange level load balancing in a multiprocessor storage area network | |
JP4748950B2 (ja) | 記憶領域管理方法及びシステム | |
US20220229688A1 (en) | Virtualized i/o | |
CN101542448B (zh) | 多处理器存储区域网中锁定管理器的轮换 | |
EP3042282A1 (en) | Hierarchical dynamic scheduling | |
EP3042305A1 (en) | Selective resource migration | |
US11755438B2 (en) | Automatic failover of a software-defined storage controller to handle input-output operations to and from an assigned namespace on a non-volatile memory device | |
US8671186B2 (en) | Computer system management method and management apparatus | |
CN114168306B (zh) | 调度方法及调度装置 | |
CN117687701A (zh) | 一种基于多对多控制的kvm切换器及其控制方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110928 Termination date: 20201128 |
|
CF01 | Termination of patent right due to non-payment of annual fee |