经由持久保留的用于共享写访问的资源仲裁的制作方法

文档序号:12464454阅读:151来源:国知局
经由持久保留的用于共享写访问的资源仲裁的制作方法与工艺

背景

服务器群集一般是被这样安排的一组服务器(节点):如果任何服务器失败,则该群集的其他服务器可以透明地接管失败的服务器的工作,即,重启其应用程序并进而在没有显著中断的情况下继续服务客户机。该操作一般被称为故障转移,或故障转移群集。

在群集中,每一存储设备(硬盘驱动器)由一个节点拥有。如果正确地操作,所有者节点针对其他节点对所有权的挑战来防护对存储设备的所有权,从而使得如果所有者失败则另一节点可以接管所有权。

为了实现该挑战-防护模型,使用了如美国专利第7,277,952号所描述的持久保留所有权算法。然而,该持久保留所有权算法实现无共享模型,其中拥有盘的节点具有独占所有权和对盘的完全访问,而其他节点具有只读访问。

共享群集的存储卷技术(在序列号为12/147,956的相关专利申请中描述)的一个方面在于其他健康的群集节点需要能够同时写入共享的群集盘。结果,需要一种向健康节点授予对存储设备的访问同时排除未正确参与群集的任何节点的方式。

概述

提供本概述以便以简化形式介绍将在以下的详细描述中进一步描述的一些代表性概念。本概述不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在以限制所要求保护的主题的范围的任何方式来使用。

简言之,此处描述的主题的各方面涉及一种使服务器群集中的所有者节点独占地拥有存储机制(例如,盘或其他存储设备)但允许非拥有节点对该存储机制具有共享的读和写访问的技术。在一方面,一个节点包括所有者节点,该所有者节点通过将密钥与同存储机制相关联的注册表相关联(例如,写入)的持久保留机制来维护存储机制的所有权。非拥有节点将共享密钥与注册表相关联。所有者节点对照群集成员数据来确认共享密钥,并且取代(例如,移除)被认为无效的任何密钥,使得无效节点不再具有对该存储机制访问。

在一方面,所有者节点防护对所有权的挑战。非拥有节点将挑战密钥写入存储机制,并等待一段防护时间。如果所有者节点正确地操作,则它在防护时间内检测到该挑战密钥,并取代该挑战密钥来维护所有权。如果所有者节点未正确地操作,则所有者节点不能在防护时间内防护该挑战,由此该挑战节点成为新的所有者。

结合附图阅读以下详细描述,本发明的其他优点会变得显而易见。

附图简述

作为示例而非限制,在附图中示出了本发明,附图中相同的附图标记指示相同或相似的元素,附图中:

图1A和1B是表示带有共享盘的服务器群集环境中的示例组件的框图。

图2是示出用于经由持久保留来实现资源仲裁和共享写盘访问的示例组件的框图。

图3是示出保留和/或访问群集共享卷所采取的示例步骤的流程图。

图4和5包括示出SCSI环境中的保留和/或访问群集共享卷所采取的示例步骤的流程图。

图6示出可以将本发明的各方面并入其中的计算环境的说明性示例。

详细描述

此处描述的技术的各方面一般涉及允许群集节点与其他节点共享对盘(例如,被配置为存储卷)的访问,包括共享读和写访问。一般而言,存储设备(或者被称为“盘”或“硬盘”,无论实际上是否是盘类型的存储设备)由单个群集节点拥有;然而,如此处所描述的,移除了其他节点对读和写I/O操作的限制。这允许在群集中的任意节点上运行的经群集的应用程序和服务访问任何共享卷上的数据。

在一个示例实现中,通过允许节点向所拥有的盘注册SCSI持久保留(PR)密钥来使这种共享成为可能。更具体地,所有者节点注册独占PR密钥来声称其所有权,而其余节点各自注册其中编码了该节点的标识符的“共享”PR密钥。一般而言,有效节点的共享PR密钥授予该节点对由另一节点拥有的盘的读和写访问。如果注册了共享PR密钥的节点变得不再有效(例如,失败或以其他方式被认为无效),则所有者节点清除该节点的共享PR密钥,从而阻止无效节点对盘的进一步I/O。

在一个示例实现中,该技术与将 NTFS用作文件系统的服务器故障转移群集和SCSI盘一起工作。然而,应该理解这些仅是示例。事实上,可以使用其他环境、文件系统和/或存储技术来实现此处描述的技术的一个或多个方面。如此,本发明不限于此处所描述的任何特定实施例、方面、概念、结构、功能或示例。相反,在此所描述的实施例、方面、概念、结构、功能或示例中的任何一个都是非限制性的,并且本发明可以按一般在计算、群集和数据访问中提供益处和优点的各种方式来使用。

转向图1A,示出了群集环境的简化框图,包括三个节点,N0、N1和N2,各自分别拥有盘100-102。群集节点通常经由SCSI、光纤通道、ISCSI或其他高速通信链路被连接到群集的盘。

注意,图1A仅示出了一个可能的配置,因为节点可能拥有一个盘,节点可能拥有一个以上的盘,以此类推。例如,在图1B中,节点N2失败了(或者无法用某种方式进行通信),从而节点N0经由其保留机制取得了盘102的所有权,如以下概括地描述的。其他节点N1和N2一般分别具有相同的保留机制111和112。

为了使拥有盘的节点提供对该盘的共享访问,提供了允许从多个群集节点的并发访问的经改变的保留方案。为此,如图2概括地表示的,每一节点(诸如节点N1)包括含有保留机制111的群集盘驱动程序220(例如,包括内核驱动程序的群集盘系统)。如以下所述,另一节点(例如,由框222表示)的类似群集盘驱动程序参与保留机制/算法来访问盘101,而拥有节点的群集盘驱动程序N1参与保留机制/算法来维护和保护所有权。所例示的群集盘驱动程序220与群集服务组件224一起工作,如下所述。

作为背景,在美国专利第7,277,952号中描述的传统持久保留所有权算法实现无分享模型,即,拥有盘的节点具有独占的所有权和完全访问,而其他节点具有只读访问。所有者节点通过使用保留密钥(被称为PR密钥)来将写独占的、仅注册者的持久保留放置在盘上的PR保留表中来声称所有权。拥有节点通过周期性地(例如,默认地每三秒)检查PR注册表来维护/防护该所有权;其他节点通过在PR注册表中注册它们自己的密钥来挑战所有权(如果拥有节点崩溃则接管)。如果拥有节点可用并且在表中只找到它自己的PR密钥,则不必采取动作,然而如果它在PR注册表中找到除了它自己的密钥之外的任何密钥,则拥有节点取代该密钥(例如,将其从表中移除;如果拥有节点不可用并且挑战节点的密钥保留,由此挑战节点通过用它自己的密钥来取代当前所有者的PR保留来接管所有权)。在稳定且正常工作的群集之下,盘的PR保留表具有一个密钥,其PR注册表具有M个密钥(全部都来自同一个所有者节点),其中M是到MIPO系统的盘的I/O路径的数量;对于非MPIO系统,M为1。

对于分配在群集共享卷中的盘,如此处所述地将该持久保留算法修改为允许群集中的节点以读-写模式用安全的方式基本上同时地访问盘。群集外部的机器不具有对群集共享卷盘的访问。

如图2概括地表示的,物理盘资源226管理群集中的共享盘,并且特别地确保经群集的盘被安全地访问并被保护免受恶化,包括便于基本上同时访问同一个共享盘。这通过使用共享持久保留(PR)密钥以及群集成员的知识来实现,如此处所描述的。

对于群集共享卷盘保留算法,在一个示例实现中,(例如,群集服务224的)盘控制管理器228调用物理盘资源226来为经群集的盘101设置新的保留策略。更具体地,经群集的盘101需要允许从其他节点的读-写I/O,但不违背上述所有者的概念。为此,所有者节点保留对盘的控制,但经由共享PR密钥230来放松基于每节点的I/O策略。在该共享PR密钥机制/保留算法111之下,N节点群集中的群集共享卷盘101在其注册表240中具有N*M个密钥,其中M是从MPIO配置中的节点到盘的I/O路径的数量;对于非MPIO系统,M为1。所有者节点在注册表232中具有M个密钥而在注册表242中具有一个密钥,即PR密钥231。这些表不必在物理上分开并且可以用任何方式来保存,而事实上,注册表可以包含对于其密钥中的哪个在注册表242“中”(哪个因此不必在物理上存在)的某些指示(例如,标志或指令)。

一个方面因此提供了控制对群集盘的访问的算法,由此参与到群集中的所有群集节点具有对该盘的读-写访问。注意,这向该群集中的所有节点授予了对群集盘的读-写访问,并且,同时允许对声誉良好的其他群集节点的读-写I/O访问,其保留了当前算法的安全特性。它还保留了活跃度和性能特性,以及盘最多由一个群集节点拥有和控制的概念。

如此处所述,非所有者节点将共享PR密钥插入到盘PR注册表240中。该共享密钥不由所有的节点共享;相反,它表示插入该密钥的节点与其他节点共享对盘101的读-写访问。在密钥中编码插入该密钥的节点的标识符(id)。因此,N节点群集中由该算法仲裁的盘101将在其注册表240中具有N个共享PR密钥。在一个实现中,第一个密钥是由所有者节点插入的独占(PR)密钥231。其余N-1个密钥是由非所有者节点插入的共享PR密钥。

拥有节点周期性地查询PR注册表240来评估密钥。如果密钥是共享密钥,则所有者从该密钥中提取插入该密钥的节点的id。如果节点有效(在群集中“声誉良好”),则所有者允许该密钥保留在注册表240中。如果节点声誉不良,则所有者取代该密钥,进而将其从注册表240中移除。

如果密钥不是共享密钥,则所有权遭受挑战。所有者取代该密钥,进而将其从注册表240中移除。

图3是示出经由例如图2的所例示的组件实现的一个这样的算法的示例步骤的一般流程图。对于诸如经由步骤300所表示的任何非所有者节点,盘控制管理器228请求物理盘资源226将共享PR密钥230插入到注册表240中(步骤302)。该密钥不在节点之间共享,相反它指示它所表示的节点与所有者节点以及任何其他节点共享对盘的读-写访问。该节点的标识符(例如,节点Id)是该共享PR密钥230的一部分。

在所有者节点上,如经由示例步骤300所区分的,步骤304向物理盘资源226通知群集节点成员数据254。这可以经由表示群集中共享盘的活动节点(例如,通常是所有节点,但不必要)的简单位掩码来实现。物理盘资源226将该成员数据254传递给群集盘驱动程序220。

如步骤306所表示的,当所有者节点上的群集盘驱动程序220看见注册表240中(除了其自己的独占PR密钥之外)的一个或多个额外密钥时,如步骤308所表示的,群集盘驱动程序220对照群集成员数据254来确认这些密钥中的每一个的节点Id。如果密钥有效(步骤310),则允许该密钥保留在注册表240中,否则取代它(步骤312)。步骤314重复对其他密钥的确认;对于其中每一节点参与共享卷访问的N节点群集,存在N-1个这样的共享PR密钥。

图4和5包括带有SCSI命令环境的其他细节的示例流程图。步骤402和404是节点的保留机制的输入,包括PR_KEY(例如,包括随机生成的数字)和用户可配置间隔(例如,有三秒的默认值)。

步骤406表示在保留之前执行的试图注册。如果注册成功(步骤408),则在步骤410处作出保留尝试。如果保留成功,则过程前进至图5来如下所述地维护该保留。否则,过程分支到步骤414来执行持久保留仲裁。

步骤414读取注册表。如果只存在一个PR注册并且是独占-仅注册者的类型,则存在受到该节点挑战的所有者;该机制在挑战所有权之前等待两倍的间隔。该间隔允许所有者节点防护该挑战的时间。步骤422对应于该挑战。

图5表示如果在步骤502和504之后节点在注册表中检测到其PR密钥,关于持久保留的各个维护方面。如果未列出,则它已经由另一节点的密钥所替代,并且需要再次挑战。如果未列出其他密钥(步骤506),则不必防护,并且该过程结束。否则,过程继续到步骤518来维持保留,如以下所述。

步骤508评估在步骤506处所检测到的其他密钥是否是来自有效节点的共享密钥。如果有任何密钥不是来自有效节点,则在步骤510处取代它。这移除了任何无效节点对盘的访问。如果在步骤512处未成功,则运行该过程的节点不具有移除其的能力并结束该过程。如果成功,则过程继续至步骤514。

步骤514表示评估该节点是否保持在线并继续操作。注意,在任何时刻可能从用户模式盘资源发出结束在线的请求,并因此步骤514表示一个逻辑流。如果离线,则执行步骤516来移除该节点的保留。

步骤518表示在等待特定时间间隔之后,过程的正常继续以确保保留仍然存在,并且针对任何挑战保留来防护该保留。

示例性操作环境

图6示出其上可实现图1A-5的各示例的合适的计算和联网环境600的示例。计算系统环境600只是合适计算环境的一个示例,而非意在暗示对本发明使用范围或功能有任何限制。也不应该将计算环境600解释为对示例性操作环境600中示出的任一组件或其组合有任何依赖性或要求。

本发明可用各种其他通用或专用计算系统环境或配置来操作。适用于本发明的公知计算系统、环境、和/或配置的示例包括但不限于:个人计算机、服务器计算机、手持式或膝上型设备、平板设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、微型计算机、大型计算机、包括任何以上系统或设备的分布式计算环境等等。

本发明可在诸如程序模块等由计算机执行的计算机可执行指令的通用上下文中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。本发明也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实现。在分布式计算环境中,程序模块可以位于包括存储器存储设备在内的本地和/或远程计算机存储介质中。

参考图6,用于实现本发明的各方面的示例性系统可包括计算机610形式的通用计算设备。计算机610的组件可以包括但不限于:处理单元620、系统存储器630和将包括系统存储器在内的各种系统组件耦合至处理单元620的系统总线621。系统总线621可以是几种类型的总线结构中的任何一种,包括存储器总线或存储控制器、外围总线、以及使用各种总线体系结构中的任一种的局部总线。作为示例而非限制,这样的体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和外围部件互连(PCI)总线(也称为夹层(Mezzanine)总线)。

计算机610通常包括各种计算机可读介质。计算机可读介质可以是能由计算机610访问的任何可用介质,并包含易失性和非易失性介质以及可移动、不可移动介质。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以存储诸如计算机可读的指令、数据结构、程序模块或其他数据之类的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不仅限于,RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储或其他磁存储设备,或可以用来存储所需信息并可以被计算机610访问的任何其他介质。通信介质通常以诸如载波或其他传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并包括任一信息传送介质。术语“已调制数据信号”指的是其一个或多个特征以在信号中编码信息的方式被设定或更改的信号。作为示例而非限制,通信介质包括有线介质,如有线网络或直接线连接,以及诸如声学、射频(RF)、红外线及其他无线介质之类的无线介质。上面各项中的任何项的组合也包括在计算机可读介质的范围内。

系统存储器630包括易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM)631和随机存取存储器(RAM)632。基本输入/输出系统633(BIOS)包括如在启动时帮助在计算机610内的元件之间传输信息的基本例程,它通常储存在ROM 631中。RAM 632通常包含处理单元620可以立即访问和/或目前正在操作的数据和/或程序模块。作为示例而非限制,图6示出了操作系统634、应用程序635、其他程序模块636和程序数据637。

计算机610还可以包括其他可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图6示出了从不可移动、非易失性磁介质中读取或向其写入的硬盘驱动器641,从可移动、非易失性磁盘652中读取或向其写入的磁盘驱动器651,以及从诸如CD ROM或其他光学介质等可移动、非易失性光盘656中读取或向其写入的光盘驱动器655。可以在示例性操作环境中使用的其他可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器641通常由不可移动存储器接口,诸如接口640连接至系统总线621,磁盘驱动器651和光盘驱动器655通常由可移动存储器接口,诸如接口650连接至系统总线621。

以上描述并在图6中示出的驱动器及其相关联的计算机存储介质为计算机610提供了对计算机可读指令、数据结构、程序模块和其他数据的存储。例如,在图6中,硬盘驱动器641被示为存储操作系统644、应用程序645、其他程序模块646和程序数据647。注意,这些组件可以与操作系统634、应用程序635、其他程序模块636和程序数据637相同,也可以与它们不同。操作系统644、应用程序645、其他程序模块646和程序数据647在这里被标注了不同的附图标记是为了说明至少它们是不同的副本。用户可通过诸如平板或电子数字化仪664、话筒663、键盘662和定点设备661(通常指的是鼠标、跟踪球或触摸垫)等输入设备向计算机610输入命令和信息。图6中未示出的其他输入设备可以包括操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等。这些和其他输入设备通常由耦合至系统总线的用户输入接口660连接至处理单元620,但也可以由其他接口和总线结构,诸如并行端口、游戏端口或通用串行总线(USB),来连接。监视器691或其他类型的显示设备也经由接口,诸如视频接口690,连接至系统总线621。监视器691也可以与触摸屏面板等集成。注意,监视器和/或触摸屏面板可以在物理上耦合至其中包括计算设备610的外壳,诸如在平板型个人计算机中。此外,诸如计算设备610等计算机还可以包括其他外围输出设备,诸如扬声器695和打印机696,它们可以通过输出外围接口694等连接。

计算机610可使用至一个或多个远程计算机,诸如远程计算机680的逻辑连接在网络化环境中操作。远程计算机680可以是个人计算机、服务器、路由器、网络PC、对等设备或其他常见网络节点,并且通常包括许多或所有以上关于计算机610所描述的元件,尽管在图6中仅示出了存储器存储设备681。图6中所示的逻辑连接包括一个或多个局域网(LAN)671和一个或多个广域网(WAN)673,但也可以包括其他网络。这样的联网环境在办公室、企业范围计算机网络、内联网和因特网中是常见的。

当在LAN联网环境中使用时,计算机610通过网络接口或适配器670连接至LAN 671。当在WAN联网环境中使用时,计算机610通常包括调制解调器672或用于通过诸如因特网等WAN 673建立通信的其他装置。可为内置或可为外置的调制解调器672可以经由用户输入接口660或其他合适的机制连接至系统总线621。诸如包括接口和天线的无线联网组件674可以通过诸如接入点或对等计算机等合适的设备耦合到WAN或LAN。在网络化环境中,相对于计算机610所描述的程序模块或其部分可被储存在远程存储器存储设备中。作为示例而非限制,图6示出远程应用程序685驻留在存储器设备681上。可以理解,所示的网络连接是示例性的,也可以使用在计算机之间建立通信链路的其他手段。

辅助子系统699(例如,用于内容的辅助显示)可经由用户接口660连接,从而即使计算机系统的主要部分处于低功率状态中,也允许诸如程序内容、系统状态和事件通知等数据被提供给用户。辅助子系统699可连接至调制解调器672和/或网络接口670,从而在主处理单元620处于低功率状态中时,也允许在这些系统之间进行通信。

结论

尽管本发明易于作出各种修改和替换构造,但其某些说明性实施例在附图中示出并在上面被详细地描述。然而应当了解,这不旨在将本发明限于所公开的具体形式,而是相反地,旨在覆盖落入本发明的精神和范围之内的所有修改、替换构造和等效方案。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1