在群集共享卷中的卷和文件系统的制作方法

文档序号:6442117阅读:189来源:国知局
专利名称:在群集共享卷中的卷和文件系统的制作方法
技术领域
本发明涉及文件系统,尤其涉及在在群集共享卷中的卷和文件系统。
背景技术
计算机系统和相关技术影响社会的许多方面。的确,计算机系统处理信息的能力已转变了人们生活和工作的方式。计算机系统现在通常执行在计算机系统出现以前手动执行的许多任务(例如,文字处理、日程安排和会计等)。最近,计算机系统彼此耦合并耦合到其他电子设备以形成计算机系统和其他电子设备可以在其上传输电子数据的有线和无线计算机网络。因此,许多计算任务的执行跨多个不同的计算机系统和/或多个不同的计算环境分布。在一些实施例中,一组节点(服务器)被安排在一个群集内。在群集中,如果任何节点发生故障,那么群集的其他节点可透明地接管发生故障的服务器的工作。其他节点可重启应用程序并由此继续服务客户机而没有显著中断。该操作一般被称为故障转移,或故障转移群集。故障转移群集常常实现“无共享”存储模型。即,每一存储单元(例如,磁盘或其一部分)由单独的节点拥有。只有该节点才可执行对该特定存储单元的直接输入/输出(I/ O)。存储单元可通过展露一个或多个卷的逻辑单元号(LUN)来引用。在该模型中,应用程序和磁盘资源是具有应用程序资源和磁盘资源之间显式依赖性的共有组(对应于LUN的故障转移单元)的一部分。这提供了某种保证磁盘在应用程序启动前上线并在应用程序退出之后下线。结果,经群集的应用程序被约束于该I/O模型, 由此需要访问相同磁盘的任何应用程序都需要运行在相同的群集节点上。此外,应用程序的故障转移和重启操作受到卷卸除和再安装所用时间的限制。此外,无共享模型可导致所附接存储的高管理成本,这是由于在实际使用情形中所需的相对大量的LUN所致。例如,当所存储的文件存储在SAN(存储区域网络)上时,为了得到某种程度而言更为粒度化的故障转移,需要在SAN上创建大量的LUN。这至少部分地是由一种需求,即故障转移同时依赖同一 LUN的所有应用程序,所引起的。此外,驻留在相同LUN上的应用程序不能故障转移到不同的节点,因为在给定时刻只有一个节点具有对LUN的访问。某些群集技术在节点之间予以协调,以提供一种带有对卷上文件的直接I/O访问的非所有者(non-owner)节点。这些群集技术主要依赖于文件开放数据(例如,访问模型和共享模型)来确定非所有者节点和卷之间的直接I/O是否被允许。然而,主要依赖文件开放数据来协调对文件的直接I/O是一种过于保守的办法。结果,非所有者节点可被降级为使用重定向的I/O来和卷通信,即便是当直接I/O不会产生实际冲突时。重定向的I/O 增加了网络通信量,并潜在地减少响应时间。

发明内容
本发明涉及用于在群集节点之间共享卷的方法、系统和计算机程序产品。在某些实施例中,计算机系统与存储设备共享数据。计算机系统接收在该计算机系统和在存储设备卷处的文件之间传输文件数据的文件请求。文件请求具有文件请求类型,其指示该文件请求是用于以下项中的一项或多项写数据到文件,和从文件读取数据。响应于文件请求,检查对应于文件的机会锁(oplock)级别。机会锁级别指示计算机系统所被允许具有的高速缓存的级别。根据机会锁级别将文件请求分派至适当的I/o机制。从直接I/o和重定向I/O中选择适当的I/O机制。根据该适当的I/O机制,文件数据在计算机系统和存储设备卷之间传送。在其他实施例中,机会锁被委派给应用程序。计算机系统从应用程序接收文件打开请求。文件打开请求请求打开存储在存储设备上的文件以用于在客户机和文件之间传送文件数据。文件请求具有访问模式和共享模式。文件访问模式指示以下项中的一项或多项 写数据到文件,和从文件读取数据。共享模式指示访问模式是以下项的其中之一共享,或
非共享。计算机系统还从应用程序接收对于该文件的机会锁请求。计算机系统被标识为具有对应于该文件的机会锁级别。机会锁级别指示允许计算机系统具有的高速缓存级别。基于所标识的机会锁级别,以及对应于具有对文件的访问的一个或多个应用程序中的任何其他应用程序的访问模式和共享模式,来为应用程序创制适当的机会锁级别。指示适当的机会锁级别的机会锁被委派给应用程序。在进一步的实施例中,机会锁被升级。文件系统确定至少两个计算机系统已被授予对存储设备卷上的文件的访问。文件系统检测出所述至少两个计算机系统中的一个已经关闭文件。响应于检测到关闭,文件系统过滤器计算,包括在所述至少两个计算机系统中的其余计算机系统可能具有对文件上所有其余非冲突打开的控制。文件系统发送提示给该其余计算机系统,以请求重新评估在该其余计算机系统上的机会锁级别。在发送提示后,文件系统从其余计算机系统接收机会锁请求。响应于机会锁请求, 文件系统尝试获得对于其余计算机系统而言可能的最高机会锁级别。文件系统将指示对于其余计算机系统而言可能的最高机会锁级别的机会锁授予该其余计算机系统。提供本发明内容以便以简化的形式介绍将在以下的具体实施方式
中进一步描述的一些概念。本概述并不旨在标识出所要求保护的主题的关键或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。本发明的附加特征和优点将在以下描述中叙述,且其一部分根据本描述将是显而易见的,或可通过对本发明的实践来获知。本发明的特征和优点可通过在所附权利要求书中特别指出的工具和组合来实现和获得。本发明的这些和其他特征将通过以下描述和所附权利要求书变得更加显而易见,或可通过对下文中所述的本发明的实践来领会。


为了描述可获得本发明的上述和其他优点和特征的方式,将通过参考附图中示出的本发明的具体实施例来呈现以上简要描述的本发明的更具体描述。可以理解,这些附图仅描述本发明的典型实施例,从而不被认为是对其范围的限制,本发明将通过使用附图用附加特征和细节来描述和说明,在附图中图IA示出了用于促进在群集节点之间共享卷的示例性群集共享卷架构。
图IB示出了图IA的示例性群集共享卷架构的组件的附加视图。图IC示出了图IA的示例性群集共享卷架构的组件的附加视图。图ID示出了图IA的示例性群集共享卷架构的组件的附加视图。图IE示出了图IA的示例性群集共享卷架构的组件的附加视图。图2示出了用于在群集节点之间共享卷的示例性方法的流程图。图3示出用于将机会锁委派客户机的示例性方法的流程图。图4示出用于提供升级的机会锁级别给计算机系统的示例性方法的流程图。
具体实施例方式本发明涉及用于在群集节点之间共享卷的方法、系统和计算机程序产品。在某些实施例中,计算机系统与存储设备共享数据。计算机系统接收在该计算机系统和在存储设备卷处的文件之间传输文件数据的文件请求。文件请求具有文件请求类型,其指示该文件请求是用于以下项中的一项或多项写数据到文件,和从文件读取数据。响应于文件请求,检查对应于文件的机会锁(oplock)级别。机会锁级别指示允许计算机系统具有的高速缓存级别。根据机会锁级别将文件请求分派至适当的I/o机制。从直接I/o和重定向I/O中选择适当的I/O机制。根据该适当的I/O机制,文件数据在计算机系统和存储设备卷之间传送。在其他实施例中,机会锁被委派给应用程序。计算机系统从应用程序接收文件打开请求。文件打开请求请求打开存储在存储设备上的文件以用于在客户机和文件之间传送文件数据。文件请求具有访问模式和共享模式。文件访问模式指示以下项中的一项或多项 写数据到文件,和从文件读取数据。共享模式指示访问模式是以下项的其中之一共享,或
非共享。计算机系统还从应用程序接收对于该文件的机会锁请求。计算机系统被标识为具有对应于该文件的机会锁级别。机会锁级别指示允许计算机系统具有的高速缓存级别。基于所标识的机会锁级别,以及对应于具有对文件的访问的一个或多个应用程序中的任何其他应用程序的访问模式和共享模式,来为应用程序创制适当的机会锁级别。指示适当的机会锁级别的机会锁被委派给应用程序。在进一步的实施例中,机会锁被升级。文件系统确定至少两个计算机系统已被授予对存储设备卷上的文件的访问。文件系统检测出所述至少两个计算机系统中的一个已经关闭文件。响应于检测到关闭,文件系统过滤器计算,包括在所述至少两个计算机系统中的其余计算机系统可能具有对文件上所有其余非冲突打开的控制。文件系统发送提示给该其余计算机系统,以请求重新评估在该其余计算机系统上的机会锁级别。在发送提示后,文件系统从其余计算机系统接收机会锁请求。响应于机会锁请求, 文件系统尝试获得对于其余计算机系统而言可能的最高机会锁级别。文件系统将指示对于其余计算机系统而言可能的最高机会锁级别的机会锁授予该其余计算机系统。本发明的各实施例可包括或利用专用或通用计算机,该专用或通用计算机包括诸如例如一个或多个处理器和系统存储器的计算机硬件,如以下更详细讨论的。本发明范围内的各实施例还包括用于携带或存储计算机可执行指令和/或数据结构的物理介质及其他计算机可读介质。这些计算机可读介质可以是通用或专用计算机系统可访问的任何可用介质。存储计算机可执行指令的计算机可读介质是计算机存储介质(设备)。携带计算机可执行指令的计算机可读介质是传输介质。由此,作为示例而非限制,本发明的各实施例可包括至少两种完全不同类型的计算机可读介质计算机存储介质(设备)和传输介质。计算机存储介质(设备)包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置的且可由通用或专用计算机访问的任何其他介质。“网络”被定义为允许在计算机系统和/或模块和/或其他电子设备之间传输电子数据的一个或多个数据链路。当信息通过网络或另一通信连接(硬连线、无线、或者硬连线或无线的组合)传送到或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质可包括可用于携带计算机可执行指令或数据结构形式的所需程序代码装置且通用或专用计算机可访问的网络和/或数据链路。上述的组合也应当被包括在计算机可读介质的范围内。此外,在到达各种计算机系统组件之后,计算机可执行指令或数据结构形式的程序代码装置可从传输介质自动传输到计算机存储介质(设备)(或反之亦然)。例如,通过网络或数据链接接收到的计算机可执行指令或数据结构可被缓存在网络接口模块(例如, “NIC”)内的RAM中,然后最终被传输到计算机系统RAM和/或计算机系统处的较不易失性的计算机存储介质(设备)。因而,应当理解,计算机存储介质(设备)可被包括在还利用 (甚至主要利用)传输介质的计算机系统组件中。计算机可执行指令例如包括,当在处理器处执行时使通用计算机、专用计算机、或专用处理设备执行某一功能或某组功能的指令和数据。计算机可执行指令可以是例如二进制代码、诸如汇编语言之类的中间格式指令、或甚至源代码。虽然用结构特征和/或方法动作专用的语言描述了本主题,但是应当理解,所附权利要求书中定义的主题不必限于上述特征或动作。相反,所述特征和动作是作为实现权利要求的示例形式而公开的。本领域的技术人员将理解,本发明可在具有许多类型的计算机系统配置的网络计算环境中实践,这些计算机系统配置包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持式设备、多处理器系统、基于微处理器的或可编程消费电子设备、网络PC、小型计算机、大型计算机、移动电话、PDA、寻呼机、路由器、交换机等。本发明也可在其中通过网络链接(或者通过硬连线数据链路、无线数据链路,或者通过硬连线和无线数据链路的组合) 的本地和远程计算机系统两者都执行任务的分布式系统环境中实施。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备二者中。在本说明书和随后的权利要求中,“机会锁”或“oplock”被定义为置于文件上(例如,在文件分派表(“FAT”)文件系统中)或流上(例如,在新技术文件系统(“NTFS”) 中),用于在多个节点之间协调数据高速缓存和一致性的锁。在多个节点的群集中,存储设备可被安装在多个节点中的一个上。存储设备所安装的节点可被视为存储设备的“协调 (coordinating) ”节点。群集中多个节点中的其他节点可被视为存储设备的“非所有者”节点。非所有者节点可从协调节点请求对于数据(例如,文件,或其一部分,例如,流)的机会锁,从而非所有者节点可本地地高速缓存数据(因此减少网络通信量,并改进明显响应时间)。机会锁之“机会性”体现于,当条件(例如,新文件请求中的文件访问模式,新文件请求中的文件共享模式,现有文件访问模式,现有文件共享模式,使用文件的其他非所有者,其他流状态,等等)使得机会锁为可能时,协调节点许可所请求的机会锁。当在许可机会锁之后条件改变时,协调节点也可以断开机会锁,或者提示机会锁升级是可能的。协调节点可包括其他组件,其如同在非所有者节点处那样地运作。例如,在图IA中,节点111是卷磁盘121的协调节点。节点111还包括群集共享卷文件系统 (“CsvFs”)114,其运作为相对于磁盘121的非所有者节点。因此,在某些实施例中,多个节点通过网络连接彼此相连以形成群集。磁盘,或其部分,例如,卷,可被安装在群集内所含的协调节点处。协调节点和群集中其他非所有者节点(以及在协调节点处运作为非所有者节点的组件)共享对磁盘的访问。因此,不时地,非所有者节点(或组件)可从协调节点处请求用于存储在磁盘上的文件或流(或其他数据) 的机会锁。协调节点可许可机会锁,提示机会锁升级是可能的,并当条件变化时断开到非所有者节点(和组件)的机会锁。图I示出了用于促进在群集节点之间共享卷的示例性群集共享卷架构100。参考图1,群集共享的卷架构100包括节点101、节点111、和节点199。所描绘的节点中的每一个可表示一计算机系统,并可通过诸如例如局域网(“LAN”)、广域网(“WAN”)或甚至因特网等的网络(或作为网络的一部分)彼此连接,以形成群集。因此,所描绘的节点中的每一个以及任何其他连接的计算机系统及其组件都可以创建消息相关数据并通过网络交换与消息相关数据(例如,网际协议(“IP”)数据报和利用IP数据报的其他更高层协议,诸如传输控制协议(“TCP”)、超文本传输协议(“HTTP”)、简单邮件传输协议(“SMTP”)等)。如所描述的,节点111包括文件系统118、文件系统过滤器117、CsvFsll4,应用程序112、基于机会锁的高速缓存113、和客户机接口 116。磁盘121安装在节点111上(因此节点111可被视为磁盘121的协调节点)。磁盘121可包括一个或多个卷,或为一个或多个卷的部分。每个卷可由文件系统所格式化,诸如,例如文件系统118 (例如,FAT、NTFS、等等)。如此,文件系统118可使用输入/输出(I/O)来传送数据至磁盘121的卷,以及从磁盘121的卷传送数据。通常,文件系统过滤器117被配置为过滤在文件系统118和CsvFs (诸如,例如 CsVFsl04和114中的一个)之间发送的数据(重定向文件数据和机会锁控制数据)。对于节点111中其他组件(诸如,例如应用程序112),以及通过远程文件系统接口 116和节点 111通信的客户机而言,CsvFsll4是文件系统。对于节点111内的应用程序,以及在有通信的客户机处的应用程序而言,CsvFsI 14表现为本地文件系统。CsvFsll4还可将机会锁控制数据传送到远程文件系统接口 116,以将机会锁委派给有通信的客户机和本地运行的应用程序(例如,应用程序112)。基于对文件或流所许可的机会锁级别,基于机会锁的高速缓存113可被用于高速缓存用于文件或流的数据。可基于应用程序的I/O来构建高速缓存。可使用启发法来尝试推测下一次可能会接触和提前读取什么数据和应用程序。另一种功能是延后写入 (write-behind),其中数据先到达高速缓存,然后惰性写入器(lazy writer)以较大的块将数据写入到磁盘中。基于为文件或流所许可的机会锁级别,CsvFsIH还可确定使用直接I/O或重定向I/o来在节点111和磁盘121之间传送文件数据。通常,当机会锁级别许可杂乱高速缓
9存(即,未整理的(not flushed)),诸如,例如读/写(RW)或读/写/处理(RWH)级别,数据可直接地被写入磁盘/从磁盘读取。当机会锁级别许可非杂乱高速缓存,诸如,例如R和 RH级别,数据可从磁盘直接读取,但写入数据被重定向。当写入(W)机会锁丢失,且机会锁降级为R或RH,高速缓存可被整理(但并不必须要清除(purged))。此外,当机会锁级别许可非杂乱(或,写直达(write-through))高速缓存,例如,读(R)或读/处理(RH),数据可从磁盘直接读取(而写将被重定向)。当R机会锁丢失,高速缓存可被清除,无进一步数据被高速缓存,且I/O (读和写)被重定向。如所示,节点101包括CsvFsl04、应用程序102、基于机会锁的高速缓存103、和远程文件系统接口 106。CsvFsl04是到节点101中其他组件(诸如,例如应用程序102),和到通过远程文件系统接口 106和节点101通信的客户机的文件系统。尽管远离文件系统118, 对于节点101内的应用程序和在有通信的客户机处的应用程序而言,CsvFsl04表现为本地文件系统。CsvFsl04还可将机会锁控制数据传送到远程文件系统接口 106以将机会锁委派给有通信的客户机和本地运行的应用程序(例如,应用程序102)。基于对文件或流所许可的机会锁级别,基于机会锁的高速缓存103可被用于高速缓存来自文件或流的数据。高速缓存103可与高速缓存113类似地工作。基于所许可的机会锁级别,CsvFsl04还可确定使用直接I/O或重定向I/O来在节点101和磁盘121之间传送文件数据。用于确定何时使用直接或重定向I/O传送数据的规则可与在CsvFsll4处所使用的类似。节点199可包括类似于在节点101中所述的组件。例如,节点199可包括 CsvFs、基于机会锁的高速缓存、和应用程序。如果节点199和其他客户机通信,节点199还可包括远程文件系统接口。如果磁盘被安装在节点199,节点199可包括文件系统和文件系统过滤器。这些组件的每一个可具有如前关于节点101和/或节点111所描述的功能。当磁盘被安装在节点199时,其他节点可包括附加的CsvFs以和磁盘通信。图IA中的省略号表示一个或多个其他节点也可被包含在群集共享卷架构100 中。这些一个或多个其他节点还可包括以下项中任意项如前所述的文件系统、文件系统过滤器、文件系统代理、基于机会锁的高速缓存、应用程序、以及客户机接口。通常,本发明的实施例包括,使用机会锁以确定何时可安全地允许远程客户机执行本地高速缓存,以及所允许的本地高速缓存的类型。CsvFs从在协调节点处的文件系统接收RW机会锁。基于该机会锁,CsvFs确定对应于RW机会锁的本地高速缓存被允许。再基于RW机会锁,CsvFv还直接发送读和写到磁盘。当CsvFs接收R机会锁时,CsvFs确定对应于R机会锁的本地高速缓存被允许。进一步,基于R机会锁,CsvFs执行直接自磁盘的读1/0( S卩,直接1/0),同时其发送写到协调节点(即,重定向数据)。当机会锁断开,不执行高速缓存,且读和写被发送(重定向)至协调节点。图IB示出了来自群集共享卷架构100的组件的附加视图。如图IB中所示,应用程序102或者通过远程文件系统接口 106来与节点101通信的客户机可发送文件打开请求 131至CsvFsl04o文件打开请求131包括文件ID132 (文件135的ID)、访问模式(例如,读和/或写)、以及共享模式134 (例如,共享或非共享)。因此,文件打开请求131是以133 所指明的访问模式和134所指明的共享模式来打开文件135的请求。CsVFsl04转发文件打开请求131至文件系统过滤器117。文件系统过滤器117可转发文件打开请求131至文件系统118。基于和已将文件135打开的其他节点相关联的访问模式和共享模式,文件系统118可确定,是否可以访问模式133和共享模式134来打开文件135。当文件135可按照要求打开时,文件系统118返回文件句柄(file handle)给CsvFsl04。CsVFsl04还发送机会锁141至文件系统过滤器117。机会锁请求141可以是用于机会锁级别的请求,该机会锁级别允许来自文件135 (或流)的数据(例如,读数据和/或写数据)被高速缓存在基于机会锁的高速缓存103中。文件系统过滤器117可转发机会锁请求141至文件系统118。文件系统118可确定什么级别的机会锁(若有的话)可被授予给节点101。授予给节点101的机会锁级别可基于以下项而确定访问模式133、共享模式 134、和已经打开文件135的其他组件相关联的访问模式和共享模式、其他流状态(例如,字节范围锁存在于来自其他系统的流上)、以及其他组件是如何实际访问文件135的。例如, 文件系统118可授予机会锁142(例如,用于读和/或写数据)给节点101。文件系统过滤器117可转发机会锁142至CsvFsl04。基于机会锁142的授予,节点101可具有在文件135 中的机会锁级别151 (例如,读和/或写机会锁)。基于机会锁级别151,CsvFsl04可在基于机会锁的高速缓存103中高速缓存文件 135的文件数据(例如,文件数据136)。基于机会锁级别151,CsvFsKM还可确定,是否直接I/O或重定向I/O要被用于在节点101和磁盘121之间传送文件数据(例如,文件数据 136)。图2示出用于在计算机系统和存储设备卷之间传送数据的示例性方法200的流程图。方法200将参考图IB中描绘的群集共享卷架构100的组件和数据来描述。方法200包括动作接收在计算机系统和在存储设备卷处的文件之间传送文件数据的文件请求,该文件请求具有文件请求类型,该文件请求类型指示文件请求是用于以下项中的一项或多项写数据到文件,和从文件读数据(动作201)。例如,CsvFsl04可接收在节点101和磁盘121的卷上的文件135之间传送文件数据136的请求。文件请求可包括文件请求类型,其指示文件数据136是否要写至文件135和/或从文件135读取。方法200包括动作检查对应于文件请求的机会锁级别,该机会锁级别指示允许计算机系统具有的高速缓存级别(动作202)。例如,CsvFsl04可响应于机会锁请求141检查CsvFs 104的机会锁级别151。机会锁级别151指示节点101的被允许高速缓存级别。方法200包括动作根据机会锁级别将文件请求分派给适当的I/O机制,该适当的 I/O机制从直接I/O和重定向I/O中选出(动作203)。例如,CsVFsl04可确定,是直接I/ O还是重定向I/O是用于在节点101和磁盘121之间传送文件数据136的适当I/O机制。 基于机会锁级别151,以及数据136是否是读数据和/或写数据,来作出该判断。当机会锁级别151表示,直接I/O可安全用于从文件135读取数据和/或写数据到文件135 (例如, 对群集中的节点维持数据一致性)时,直接I/O可被选中。另一方面,当机会锁级别151表示,直接I/O用于从文件135读取数据和/或写数据到文件135可能并不安全(例如,对群集中的一个或多个节点,数据一致性可能遭到违反)时,重定向I/O可被选中。方法200包括动作根据适当的I/O机制在计算机系统和存储设备卷之间传送文件数据(动作204)。例如,当机会锁级别151表示直接I/O是安全的时,文件数据136可直接在节点101和磁盘121之间传送。另一方面,当机会锁级别151表示直接I/O可能不安全时,节点101和磁盘121之间的文件数据136的传送可重定向通过文件系统过滤器117 和文件系统118。文件系统I/O可被用于在重定向期间在文件系统118和磁盘121之间传送文件数据136。在某些实施例中,一个或多个客户机被连接至被群集的节点。客户机可利用节点内的CsvFs来在客户机和磁盘之间传送文件数据。例如,节点可被远程客户机所访问。对于远程客户机,CsvFs可表现为本地文件系统。由于CsvFs表现为本地文件系统,远程客户机可尝试从CsvFs获得机会锁。CsvFs可基于其从协调节点处接收的机会锁级别而授予机会锁给远程客户机。例如,当CsvFs具有RW机会锁时,CsvFs可授予(委派)R机会锁或RW 机会锁给远程客户机。另一方面,当文件系统代理具有R机会锁时,文件系统代理可授予 (委派)R机会锁。如果CsvFs丢失了机会锁(即,机会锁被断开),CsvFs在回头向协调节点确认机会锁断开之前,断开所有授予(委派)给远程客户机的机会锁。CsvFs还可将缓冲级别降级以匹配新的机会锁级别。例如,可能CsvFs有RW机会锁,而文件系统代理已经向远程客户机授予(委派)RW机会锁。如果协调节点然后告知文件系统代理将机会锁降级为R机会锁,则CsvFs首先和远程客户机通信以将所委派的机会锁降级至R机会锁。一旦远程客户机确认了机会锁降级,则CsvFs将本地高速缓存模式改为非杂乱或写直达高速缓存,然后回头和协调节点确认机会锁降级。图IC示出了来自群集共享卷架构100的组件的附加视图。如图IC中所示,客户机 161包括应用程序162、基于机会锁的高速缓存163、以及远程文件系统客户机接口 164(例如,服务器消息总线(SMB)重定向器,或Samba客户机)。客户机161可使用远程文件系统客户机接口 164来和节点101通信(通过远程文件系统接口 106)。因此,客户机161可通过CsvFsl04发送文件打开请求至磁盘121上的卷,并和该卷交换文件数据。基于对文件 (或流)所许可的机会锁级别,基于机会锁的高速缓存163可被用于为客户机161处的文件高速缓存提前读取和/或写数据。其他客户机,包括客户机197和198,还可连接至节点101,并与其通信。更多客户机可连接至其他节点。例如,一个或多个客户机,包括客户机171,可连接至节点111。如所示,客户机171包括应用程序172、基于机会锁的高速缓存172、和远程文件系统客户机接口 174。客户机171可使用远程文件系统客户机接口 174来和节点111通信(通过远程文件系统接口 116)。因此,客户机171可通过CsvFsll4发送文件打开请求至磁盘121,并和磁盘121交换文件数据。基于对文件所许可的机会锁级别,基于机会锁的高速缓存173可被用于为客户机171处的文件高速缓存提前读取和/或写数据。一旦从客户机处接收了用于文件(或流)的机会锁请求,CsvFs可确定是否其已经为该文件(或流)授予了机会锁(来自文件系统)。如果是的话,CsvFs可确定是否部分或所有的被授予机会锁可被委派给请求客户机。图3示出用于将机会锁委派客户机的示例性方法300的流程图。方法300将参考图IC中描绘的群集共享卷架构100的组件和数据来描述。方法300包括动作从应用程序接收文件打开请求,该文件打开请求请求打开存储在存储设备上的文件以用于在客户机和文件之间传送文件数据,该文件请求具有访问模式和共享模式,所述文件访问模式指示以下的一项或多项写数据到文件和从文件读取数据,所述共享模式指示访问模式是以下的其中之一共享的或非共享的(动作301)。例如, CsvFsl04可从应用程序162接收文件打开请求137。
文件打开请求137包括文件ID 132 (文件135的ID)、访问模式138 (例如,读和/ 或写)、以及共享模式139 (例如,共享或非共享)。因此,文件请求137是以138所指明的访问模式和139所指明的共享模式来打开文件135的请求。CsVFsl04转发请求137至文件系统过滤器117。文件系统过滤器117可转发文件打开请求137至文件系统118。基于和已将文件135打开的其他节点相关联的访问模式和共享模式,文件系统118可确定,是否可以访问模式138和共享模式139来打开文件135。方法300包括动作从应用程序接收对文件的机会锁请求(动作302)。例如,节点101可从应用程序162接收机会锁请求。机会锁请求可对应于文件135。方法300包括动作标识计算机系统可被授予对应于文件的机会锁级别,机会锁级别指示计算机系统在文件上具有用于以下的一项或多项的机会锁从文件读取,和写至文件(动作303)。例如,CsvFsl04可确定其具有对应于文件135的机会锁级别151。机会锁级别151指示节点101具有用于从文件135读取数据和/或写数据到文件135的机会锁(例如,R或RW)。方法300包括动作基于所标识的机会锁级别,以及对应于具有对文件的访问权的一个或多个应用程序中的任何其他应用程序的访问模式和共享模式,来为应用程序创制适当的机会锁级别(动作304)。例如,CsVFsl04可基于机会锁级别151和连接至节点101 的任何其他客户机(例如,197,198)在文件135上所具有的访问模式和共享模式来为客户机161创制机会锁级别152。方法300包括动作将指示适当的机会锁级别的机会锁委派给应用程序(动作305)。例如,CsVFsl04可响应于来自应用程序162的机会锁请求而委派机会锁143给客户机161。机会锁143指示机会锁级别152。节点101可发送机会锁143至客户机161。客户机161可存储机会锁级别152。根据在客户机161和文件135之间传送文件数据的进一步请求,客户机161可参看机会锁级别152以确定文件数据是否可被高速缓存在机会锁高速缓存163中。例如,根据传送文件数据196的请求,客户机161可确定机会锁级别152允许在基于机会锁的高速缓存163中高速缓存文件数据196。在基于机会锁的高速缓存163中所高速缓存的文件数据可最终被传送至节点101。在节点101,在节点101和磁盘121之间的传送之前,文件数据还可被高速缓存在基于机会锁的高速缓存103中。节点可将被授予机会锁的全部,或少于全部,委派给所连接客户机中的一个或多个。例如,当节点具有RW机会锁时,节点可委派R机会锁或RW机会锁给请求客户机。当节点具有R机会锁时,此节点可委派R机会锁给请求客户机。图ID示出了来自群集共享卷架构100的组件的附加视图。如图ID中所示,节点 101还包括群集共享卷对象181,节点111还包括群集共享卷对象182。节点199包括应用程序150、基于机会锁的高速缓存160、CsVFsl70、以及群集共享卷对象180。通常,群集共享卷对象可在节点处加载以虚拟化(virtualize)对物理卷的访问。例如,群集共享卷对象 180、181、和182虚拟化对于在磁盘121处的卷的访问。通过块级I/O从群集共享卷对象到磁盘所附接至的节点的重定向,卷的虚拟化促进块级I/o错误。例如,群集共享卷对象180可重定向块I/O至节点111。群集共享卷对象还可在故障上重试I/o。通过将文件系统寿命和到物理卷的直接连接的寿命、位置、和存在相分离,卷虚拟化还促进文件系统容错。例如,即便当对磁盘121的直接I/O不可用时,群集共享卷对象180 可继续对其他组件表现为卷。当到磁盘121的直接I/O不可用时,数据和/或块I/O数据可重定向至节点111。当到磁盘121的直接I/O再次变得可用时,可在适当时使用直接I/ 0(例如,基于机会锁级别)。CsvFs可被安装在群集共享卷对象上以提供文件系统功能性。安装在群集共享卷对象上的CsvFs对于其他组件表现为本地文件系统。例如,应用程序150可将CsvFsl70 视为本地文件系统。表现为本地文件系统促进与操作系统0/S备份和恢复的无缝集成。 表现为本地文件系统还允许使用与本地文件系统一起工作的工具,诸如,例如碎片整理 (defrag)、格式化、磁盘检查、磁盘管理等。表现为本地文件系统还给予应用程序使用远程文件系统接口(例如,SMB,或者网络文件系统(NFS))访问CsvFs的能力。卷虚拟化还提供了在所有节点上(甚至是在没有到磁盘的直接连接的节点上) 的对称化名空间。在群集共享卷对象上安装CsvFs可实现端对端的名空间控制。因此, CsvFsl70可控制名空间,无需依赖于磁盘121的状态。因此,在群集共享卷架构100中,可与可用的连接类型无关地向存储设备卷提供容错访问。例如,CsvFsl70可从应用程序150接收文件请求以用于在节点199和磁盘121 的卷处的文件之间传送文件数据(可能是在基于机会锁的高速缓存160中的数据)。群集共享卷对象180可检测对磁盘121的直接I/O是可用的。因此,可使用直接I/O在节点 199和磁盘121的卷之间传送文件数据。在传送文件数据之后,从节点199到磁盘121的直接I/O可能丢失(或由于用户操作而有意丢失,或通过错误而丢失)。随后,CsVFsl70可从应用程序150接收第二文件请求以用于在节点199和磁盘121的卷处的文件之间传送文件数据(可能是在基于机会锁的高速缓存160中的数据)。群集共享卷对象180可检测对磁盘121的直接I/O不是可用的。因此,可使用重定向I/O在节点199和磁盘121的卷之间传送文件数据。尽管由于直接I/O的不可用而使用不同的I/O机制,但是CsvFsl70继续对应用程序150表现为起作用的本地文件系统。例如,文件系统118可被卸除,以用于在节点101处重安装文件系统118。或者, 文件系统118可能由于故障而被卸除。群集共享卷对象180允许CsVFsl70经受文件系统 118的卸除。因此,当文件系统118被卸除时,CsvFsl70和群集共享卷对象180的组合对于其他组件仍继续表现为本地文件系统。当文件系统118被重安装(在节点101或节点111 处),其可再次被使用。在某些实施例中,当升级的机会锁可能可用时,机会锁更新机制向CsvFs发出提示。当文件系统(例如,118)检测到CsvFs (例如,104)在文件(例如,由于另一个组件(如组件114)的结果,关闭文件)上有其余的打开(remainingopens)时,可为文件发送提示。 一旦收到提示,CsvFs(例如,104)可发送对该文件的机会锁请求到文件系统(例如,118)。 一旦收到机会锁请求,文件系统(例如,118)为CsvFs (例如,104)重新评估机会锁级别。当文件关闭发生时,这从根本上促进机会锁的重新评估。图IE示出了来自群集共享卷架构100的组件的附加视图。如图IE中所示,节点 101和节点191与文件系统118相通信以传送文件数据到磁盘121或从磁盘121传送文件数据。节点101具有用于文件155的机会锁级别192。机会锁级别192可表示节点101对于文件155没有机会锁,具有R机会锁,或者具有RW机会锁。图4示出用于提供升级的机会锁级别给计算机系统的示例性方法400的流程图。 方法400将参考图IE中描绘的群集共享卷架构100的组件和数据来描述。方法400包括动作确定至少两个计算机系统已被授予对存储设备卷上的文件的访问权(动作401)。例如,节点101可发送文件打开指令156到文件系统过滤器117以打开文件155。重定向数据158然后可在节点101和文件155之间传送。同样,节点191可发送文件打开指令157到文件系统过滤器117以打开文件155。重定向数据159可在节点 191和文件155之间传送。如此,文件系统118可确定节点101和节点191已被授予对文件155的访问权。方法400包括动作检测所述至少两个计算机系统中的一个已经关闭了文件(动作402)。例如,节点191可发送文件关闭指令到文件系统118。因此,文件系统过滤器117 可观察到节点191已经关闭了文件155。方法400包括动作响应于检测到文件关闭指令, 计算得出,所述至少两个计算机系统中所包括的其余计算机系统可能具有对文件上的所有其余打开指令(remaining opens)的控制(动作403)。例如,响应于检测到文件关闭指令 166,文件系统118可计算得出,节点101可能具有对文件155上的任何其余打开指令的控制。响应于文件关闭指令,文件系统过滤器117可确定是否要将更新提示发送给 CsvFsl04。如果CsvFsl04当前具有文件155上的机会锁级别,该级别对读和写数据均不允许直接1/0,则存在为文件系统代理104而升级文件155上的机会锁的可能性。例如,如果 CsvFsl04没有文件155上的机会锁,则存在升级到文件155上的R机会锁或RW机会锁的可能性。如果CsvFsl04具有文件155上的R机会锁,则存在升级R机会锁到RW机会锁的可能性。当存在更新机会锁的可能性时,文件系统188可发送升级提示到CsVFsl04。另一方面,如果CsvFsl05具有对于读和写数据均允许直接I/O的机会锁级别,则本质上没有升级的可能性。当没有升级的可能性时,文件系统过滤器117不发送提示到 CsvFsl04o方法400包括动作发送提示给该其余计算机系统,以请求重新评估在该其余计算机系统上的机会锁级别(动作404)。例如,文件系统过滤器117可向节点101发送提示 167。提示167可向节点101指示重新请求用于文件155的机会锁。节点101可接收提示 167。方法400包括动作在发送提示之后,从其余计算机系统接收机会锁请求(动作 405)。例如,CsvFs 104可发送机会锁请求168到文件系统118。文件系统118可从CsvFs 104 接收机会锁请求168。机会锁请求168可请求文件155上的机会锁,该机会锁若被授予,将增加机会锁级别192。方法400包括动作响应于机会锁请求,为其余计算机系统重新评估机会锁级别, 以确定其余计算机系统的升级机会锁级别(动作406)。例如,响应于机会锁请求168,文件系统118可重新评估机会锁级别192以确定节点101的升级机会锁级别。升级机会锁级别可将机会锁级别192增加至用于文件155的R机会锁或RW机会锁。方法400包括动作授予指示其余计算机系统的升级机会锁级别的机会锁(动作 407)。例如,文件系统118可发送机会锁169到CsvFs 104。响应于接收机会锁169,CsvFs 104可将机会锁级别192转换(升级)到机会锁级别193。因此,如果机会锁级别192指示没有用于文件155的机会锁,则机会锁级别193可指示用于文件155的R机会锁和/或RW机会锁。如果机会锁级别192指示了用于文件155的R机会锁,则机会锁级别193可指示用于文件155的RW机会锁。因此,响应于另一节点关闭文件,用于在一节点处的该文件的机会锁级别被升级。任选地,可用另一个不同的机制来检测何时升级到读机会锁级别是安全的。每当另一系统执行和R机会锁冲突的I/O时(例如,字节范围锁、写或等同于写的另一 1/0(零范围,写卸荷等)、文件大小改变等),读机会锁级别可被断开。在冲突I/O完成后,CsvFs可再次请求R机会锁级别。R机会锁级别可被授予,然后在下一次冲突I/O上被断开。可引入延迟以调节在前次R机会锁级别被断开后,何时CsvFs可再次请求R机会锁级别。该延迟可减轻重复地断开和重新请求R机会锁级别所产生的负荷(可能会很重)。可由文件系统过滤器(例如,118)来监控该延迟。本发明的实施例包括群集共享卷文件系统(CsvFs),其在客户机看来是本地文件系统。CsvFs向其中安装磁盘的节点通信以协调对文件的访问。CsvFs使用机会性锁(机会锁)来决定何时访问卷以直接读或写(不发送数据到卷所安装在的节点)是安全的。以机会锁升级机制来扩展CsvFs,在机会锁丢失的情况下,机会锁升级机制允许协调节点告诉 CsvFs,何时尝试升级机会锁是安全的。CsvFs还使用机会锁的传递性特性,从而得以基于 CsvFs从协调节点所获得了什么机会锁来授予(委派)机会锁给在CsvFs顶部的客户机。本发明可被具体化为其他具体形式而不背离其精神或本质特征。所描述的实施例在所有方面都应被认为仅是说明性而非限制性的。因此,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的所有改变被权利要求书的范围所涵盖。
权利要求
1.一种在计算机系统处实现的方法,所述计算机系统包括一个或多个处理器和系统存储器,所述计算机系统和一个或多个其他计算机系统相群集,所述计算机系统和其他一个或多个计算机系统具有对安装在所群集的计算机系统中的一个上的存储设备卷的共享访问,用于所述存储设备卷的文件系统展露在所群集的计算机系统中的所述一个上,所述计算机系统还包括群集共享卷文件系统,所述群集共享卷文件系统连接至所述存储设备卷, 用于促进所述计算机系统和所述存储设备卷之间的直接1/0,所述群集共享卷文件系统还连接至在所群集计算机系统中的所述一个上的文件系统过滤器,用于通过所述文件系统促进所述计算机系统和所述存储设备卷之间的重定向1/0,所述方法用于在所述计算机系统和所述存储设备卷之间传送数据,所述方法包括接收在所述计算机系统和在所述存储设备卷处的文件之间传送文件数据的文件请求的动作,该文件请求具有文件请求类型,该文件请求类型指示文件请求是以下项中的一项或多项写数据到所述文件,和从所述文件读数据;标识对应于所述文件的机会锁级别的动作,所述机会锁级别指示被允许的高速缓存级别;基于所标识的机会锁级别以及所述文件请求类型,确定用于在所述计算机系统和所述存储设备卷之间传送文件数据的适当I/o机制的动作,该适当I/O机制是从直接I/O和重定向I/o中选出的;以及根据所述适当I/o机制在所述计算机系统和所述存储设备卷之间传送文件数据的动作。
2.如权利要求I所述的方法,其特征在于,所述确定用于在所述计算机系统和所述存储设备卷之间传送文件数据的适当I/o机制的动作包括确定直接I/O为适当I/O机制的动作。
3.如权利要求2所述的方法,其特征在于,所述根据所述适当I/O机制在所述计算机系统和所述存储设备卷之间传送文件数据的动作包括使用直接I/o通过所述存储设备卷的影子卷对象来传送文件数据的动作。
4.如权利要求I所述的方法,其特征在于,所述确定用于在所述计算机系统和所述存储设备卷之间传送文件数据的适当I/O机制的动作包括确定重定向I/O为适当I/O机制的动作。
5.如权利要求4所述的方法,其特征在于,所述在所述计算机系统和所述存储设备卷之间传送文件数据的动作包括使用重定向I/O在所述计算机系统和所群集计算机系统中的所述一个处的所述文件系统过滤器之间传送文件数据的动作。
6.如权利要求4所述的方法,其特征在于,所述使用重定向I/O在所述计算机系统和文件系统过滤器之间传送数据的动作包括使用重定向I/o传送读取数据的动作;且所述方法还包括接收升级到读机会锁的提示的动作,该提示指示将会有一定义的时间段,在该时间段中,所述文件上没有任何断开读机会锁的I/o。
7.如权利要求4所述的方法,其特征在于,所述使用重定向I/O在所述计算机系统和文件系统过滤器之间传送数据的动作包括使用重定向I/o传送写数据的动作;且所述方法还包括接收升级到读/写机会锁的提示的动作,该提示指示所述文件上所有的打开来自所述计算机系统。
8.如权利要求I所述的方法,其特征在于,接收在所述计算机系统和在所述存储设备卷处的文件之间传送文件数据的文件请求的动作包括从所述计算机系统处的应用程序接收文件请求的动作,该应用程序视所述群集共享文件系统为本地文件系统。
9.如权利要求I所述的方法,其特征在于,接收在所述计算机系统和在所述存储设备卷处的文件之间传送文件数据的文件请求的动作包括从所述计算机系统的远程客户机处的应用程序接收文件请求的动作,该远程客户机通过远程文件系统接口访问所述群集共享卷文件系统。
10.一种在计算机系统处实现的方法,所述计算机系统包括一个或多个处理器和系统存储器,所述计算机系统和一个或多个其他计算机系统相群集,所述计算机系统和其他一个或多个计算机系统具有对安装在所群集的计算机系统中的一个上的存储设备卷的共享访问,用于所述存储设备卷的文件系统展露在所群集的计算机系统中的所述一个上,所述计算机系统还包括群集共享卷文件系统,所述群集共享卷文件系统连接至所述存储设备卷,用于促进所述计算机系统和所述存储设备卷之间的直接1/0,该群集共享卷文件系统还连接至在所群集计算机系统中的所述一个上的文件系统过滤器,用于通过所述文件系统促进所述计算机系统和所述存储设备卷之间的重定向1/0,所述方法用于将机会锁委派给客户机,所述方法包括从应用程序接收文件打开请求的动作,该文件打开请求请求打开存储在所述存储设备上的文件以用于在所述应用程序和所述文件之间传送文件数据,所述文件请求具有访问模式和共享模式,所述文件访问模式指示以下的一项或多项写数据到所述文件和从所述文件读取数据,所述共享模式指示访问模式是以下的其中之一共享的或非共享的;从所述应用程序接收对所述文件的机会锁请求的动作;标识所述计算机系统具有对应于所述文件的机会锁级别的动作,所述机会锁级别指示所述计算机系统在所述文件上具有用于以下的一项或多项的机会锁从所述文件读取,和写至所述文件;基于所标识的机会锁级别,以及对应于具有对所述文件的访问权的一个或多个应用程序中的任何其他应用程序的访问模式和共享模式,来为所述应用程序创制适当机会锁级别的动作;将指示所述适当机会锁级别的机会锁委派给所述应用程序的动作。
11.如权利要求10所述的方法,其特征在于,所述标识所述计算机系统具有对应于所述文件的机会锁级别的动作包括标识所述计算机系统具有对应于所述文件的读/写机会锁的动作。
12.如权利要求11所述的方法,其特征在于,所述为所述客户机创制适当机会锁级别的动作包括基于并无所述计算机系统的其他客户机打开了文件,为所述客户机创制读/ 写机会锁级别的动作。
13.如权利要求10所述的方法,其特征在于,所述为所述客户机创制适当机会锁级别的动作包括为所述客户机创制读机会锁级别的动作。
14.如权利要求10所述的方法,其特征在于,所述委派机会锁的动作包括将机会锁委派给在所述计算机系统处的本地运行的应用程序的动作。
15.如权利要求10所述的方法,其特征在于,所述委派机会锁的动作包括使用远程文件系统组件将机会锁委派给在远程客户机处的应用程序的动作。
16.一种在包括一个或多个处理器和系统存储器的计算机系统处实现的方法,所述计算机系统包括群集共享卷,该群集共享卷对象虚拟化对于存储设备卷的访问,所述计算机系统包括在所述群集共享卷对象上的群集共享卷文件系统,该群集共享卷文件系统对于其他组件表现为本地文件系统,所述计算机系统和一个或多个其他计算机系统相群集,所述计算机系统和其他一个或多个其他计算机系统具有对安装在所群集计算机系统中的一个处的存储设备卷的访问,用于所述存储设备卷的所述文件系统在所群集计算机系统的所述一个处展露,所述方法用于提供对所述存储设备卷的容错访问,所述方法包括接收在所述计算机系统和在所述存储设备卷处的文件之间传输文件数据的文件请求的动作;检测对于所述存储设备卷的直接I/o可用的动作;在所述计算机系统和所述存储设备卷之间传送文件数据的动作;在使用直接I/o传送文件数据之后,检测对于所述存储设备卷的直接I/O变为不可用的动作;在检测直接I/o不可用之后,接收用于在所述计算机系统和所述文件之间传送第二文件数据的第二文件请求的动作;以及使用对其中存储磁盘卷可用的所群集计算机系统的重定向I/o来在所述计算机系统和所述存储设备卷之间传送第二文件数据的动作。
17.如权利要求16所述的方法,其特征在于,所述使用重定向I/O来在所述计算机系统和所述存储设备卷之间传送第二文件数据的动作包括所述群集共享卷对象重定向块级 I/O至所群集计算机系统中安装有存储磁盘卷的一个的动作。
18.如权利要求16所述的方法,其特征在于,所述使用重定向I/O来在所述计算机系统和所述存储设备卷之间传送第二文件数据的动作包括所述群集共享卷文件系统重定向文件数据至所群集计算机系统中安装有存储磁盘卷的一个的动作。
19.如权利要求16所述的方法,其特征在于,所述接收文件请求的动作和所述接收第二文件请求的动作包括从视所述群集共享卷文件系统为本地文件系统的应用程序处接收所述文件请求和所述第二文件请求的动作;并且所述方法还包括无关于所述计算机系统和所述存储设备之间的直接I/O的可用性,一致性地向所述应用程序呈现所述存储设备卷的步骤。
20.如权利要求16所述的方法,其特征在于,还包括提供用于所述存储设备卷的对称名空间,即便当直接I/o在一计算机系统上不可用时,所述对称名空间在所述一个或多个计算机系统的每一个处相同。
全文摘要
本发明公开了在群集共享卷中的卷和文件系统,具体涉及用于在群集节点之间共享卷的方法、系统和计算机程序产品。本发明的实施例包括群集共享卷文件系统(CsvFs),其对于客户机表现为本地文件系统。CsvFs向其中安装磁盘的节点通信以协调对磁盘上的文件的访问。CsvFs使用机会性锁(机会锁)来确定何时对卷的直接访问是安全的。可用机会锁升级机制来扩展CsvFs,机会锁升级机制允许协调节点告诉CsvFs,何时尝试升级机会锁是安全的。CsvFs还使用机会锁的传递性特性,从而得以将机会锁授予(委派)给在CsvFs顶部的客户机。
文档编号G06F17/30GK102591842SQ20111042755
公开日2012年7月18日 申请日期2011年12月19日 优先权日2010年12月17日
发明者A·达马托, R·达斯, V·R·尚卡尔, V·彼得 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1