法律状态公告日
法律状态信息
法律状态
2015-05-20
专利权的转移 IPC(主分类):G06F15/167 变更前: 变更后: 登记生效日:20150427 申请日:20111219
专利申请权、专利权的转移
2014-11-26
授权
授权
2012-09-19
实质审查的生效 IPC(主分类):G06F15/167 申请日:20111219
实质审查的生效
2012-07-18
公开
公开
技术领域
本发明涉及文件系统,尤其涉及在在群集共享卷中的卷和文件系统。
背景技术
计算机系统和相关技术影响社会的许多方面。的确,计算机系统处理信息 的能力已转变了人们生活和工作的方式。计算机系统现在通常执行在计算机系 统出现以前手动执行的许多任务(例如,文字处理、日程安排和会计等)。最 近,计算机系统彼此耦合并耦合到其他电子设备以形成计算机系统和其他电子 设备可以在其上传输电子数据的有线和无线计算机网络。因此,许多计算任务 的执行跨多个不同的计算机系统和/或多个不同的计算环境分布。
在一些实施例中,一组节点(服务器)被安排在一个群集内。在群集中, 如果任何节点发生故障,那么群集的其他节点可透明地接管发生故障的服务器 的工作。其他节点可重启应用程序并由此继续服务客户机而没有显著中断。该 操作一般被称为故障转移,或故障转移群集。
故障转移群集常常实现“无共享”存储模型。即,每一存储单元(例如, 磁盘或其一部分)由单独的节点拥有。只有该节点才可执行对该特定存储单元 的直接输入/输出(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机制,文件数据在计算机系统和存储设备卷之间传送。
在其他实施例中,机会锁被委派给应用程序。计算机系统从应用程序接收 文件打开请求。文件打开请求请求打开存储在存储设备上的文件以用于在客户 机和文件之间传送文件数据。文件请求具有访问模式和共享模式。文件访问模 式指示以下项中的一项或多项:写数据到文件,和从文件读取数据。共享模式 指示访问模式是以下项的其中之一:共享,或非共享。
计算机系统还从应用程序接收对于该文件的机会锁请求。计算机系统被标 识为具有对应于该文件的机会锁级别。机会锁级别指示允许计算机系统具有的 高速缓存级别。基于所标识的机会锁级别,以及对应于具有对文件的访问的一 个或多个应用程序中的任何其他应用程序的访问模式和共享模式,来为应用程 序创制适当的机会锁级别。指示适当的机会锁级别的机会锁被委派给应用程 序。
在进一步的实施例中,机会锁被升级。文件系统确定至少两个计算机系统 已被授予对存储设备卷上的文件的访问。文件系统检测出所述至少两个计算机 系统中的一个已经关闭文件。响应于检测到关闭,文件系统过滤器计算,包括 在所述至少两个计算机系统中的其余计算机系统可能具有对文件上所有其余 非冲突打开的控制。文件系统发送提示给该其余计算机系统,以请求重新评估 在该其余计算机系统上的机会锁级别。
在发送提示后,文件系统从其余计算机系统接收机会锁请求。响应于机会 锁请求,文件系统尝试获得对于其余计算机系统而言可能的最高机会锁级别。 文件系统将指示对于其余计算机系统而言可能的最高机会锁级别的机会锁授 予该其余计算机系统。
提供本发明内容以便以简化的形式介绍将在以下的具体实施方式中进一 步描述的一些概念。本概述并不旨在标识出所要求保护的主题的关键或必要特 征,也不旨在用于帮助确定所要求保护的主题的范围。
本发明的附加特征和优点将在以下描述中叙述,且其一部分根据本描述将 是显而易见的,或可通过对本发明的实践来获知。本发明的特征和优点可通过 在所附权利要求书中特别指出的工具和组合来实现和获得。本发明的这些和其 他特征将通过以下描述和所附权利要求书变得更加显而易见,或可通过对下文 中所述的本发明的实践来领会。
附图说明
为了描述可获得本发明的上述和其他优点和特征的方式,将通过参考附图 中示出的本发明的具体实施例来呈现以上简要描述的本发明的更具体描述。可 以理解,这些附图仅描述本发明的典型实施例,从而不被认为是对其范围的限 制,本发明将通过使用附图用附加特征和细节来描述和说明,在附图中:
图1A示出了用于促进在群集节点之间共享卷的示例性群集共享卷架构。
图1B示出了图1A的示例性群集共享卷架构的组件的附加视图。
图1C示出了图1A的示例性群集共享卷架构的组件的附加视图。
图1D示出了图1A的示例性群集共享卷架构的组件的附加视图。
图1E示出了图1A的示例性群集共享卷架构的组件的附加视图。
图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)”节点。群集 中多个节点中的其他节点可被视为存储设备的“非所有者”节点。
非所有者节点可从协调节点请求对于数据(例如,文件,或其一部分,例 如,流)的机会锁,从而非所有者节点可本地地高速缓存数据(因此减少网络 通信量,并改进明显响应时间)。机会锁之“机会性”体现于,当条件(例如, 新文件请求中的文件访问模式,新文件请求中的文件共享模式,现有文件访问 模式,现有文件共享模式,使用文件的其他非所有者,其他流状态,等等)使 得机会锁为可能时,协调节点许可所请求的机会锁。当在许可机会锁之后条件 改变时,协调节点也可以断开机会锁,或者提示机会锁升级是可能的。
协调节点可包括其他组件,其如同在非所有者节点处那样地运作。例如, 在图1A中,节点111是卷磁盘121的协调节点。节点111还包括群集共享卷 文件系统(“CsvFs”)114,其运作为相对于磁盘121的非所有者节点。
因此,在某些实施例中,多个节点通过网络连接彼此相连以形成群集。磁 盘,或其部分,例如,卷,可被安装在群集内所含的协调节点处。协调节点和 群集中其他非所有者节点(以及在协调节点处运作为非所有者节点的组件)共 享对磁盘的访问。因此,不时地,非所有者节点(或组件)可从协调节点处请 求用于存储在磁盘上的文件或流(或其他数据)的机会锁。协调节点可许可机 会锁,提示机会锁升级是可能的,并当条件变化时断开到非所有者节点(和组 件)的机会锁。
图1示出了用于促进在群集节点之间共享卷的示例性群集共享卷架构100。 参考图1,群集共享的卷架构100包括节点101、节点111、和节点199。所描 绘的节点中的每一个可表示一计算机系统,并可通过诸如例如局域网(“LAN”)、 广域网(“WAN”)或甚至因特网等的网络(或作为网络的一部分)彼此连接, 以形成群集。因此,所描绘的节点中的每一个以及任何其他连接的计算机系统 及其组件都可以创建消息相关数据并通过网络交换与消息相关数据(例如,网 际协议(“IP”)数据报和利用IP数据报的其他更高层协议,诸如传输控制协 议(“TCP”)、超文本传输协议(“HTTP”)、简单邮件传输协议(“SMTP”) 等)。
如所描述的,节点111包括文件系统118、文件系统过滤器117、CsvFs114, 应用程序112、基于机会锁的高速缓存113、和客户机接口116。磁盘121安装 在节点111上(因此节点111可被视为磁盘121的协调节点)。磁盘121可包 括一个或多个卷,或为一个或多个卷的部分。每个卷可由文件系统所格式化, 诸如,例如文件系统118(例如,FAT、NTFS、等等)。如此,文件系统118 可使用输入/输出(I/O)来传送数据至磁盘121的卷,以及从磁盘121的卷传 送数据。
通常,文件系统过滤器117被配置为过滤在文件系统118和CsvFs(诸如, 例如CsvFs104和114中的一个)之间发送的数据(重定向文件数据和机会锁 控制数据)。对于节点111中其他组件(诸如,例如应用程序112),以及通 过远程文件系统接口116和节点111通信的客户机而言,CsvFs114是文件系统。 对于节点111内的应用程序,以及在有通信的客户机处的应用程序而言, CsvFs114表现为本地文件系统。CsvFs114还可将机会锁控制数据传送到远程 文件系统接口116,以将机会锁委派给有通信的客户机和本地运行的应用程序 (例如,应用程序112)。
基于对文件或流所许可的机会锁级别,基于机会锁的高速缓存113可被用 于高速缓存用于文件或流的数据。可基于应用程序的I/O来构建高速缓存。可 使用启发法来尝试推测下一次可能会接触和提前读取什么数据和应用程序。另 一种功能是延后写入(write-behind),其中数据先到达高速缓存,然后惰性写入 器(lazy writer)以较大的块将数据写入到磁盘中。
基于为文件或流所许可的机会锁级别,CsvFs114还可确定:使用直接I/O 或重定向I/O来在节点111和磁盘121之间传送文件数据。通常,当机会锁级 别许可杂乱高速缓存(即,未整理的(not flushed)),诸如,例如读/写(RW) 或读/写/处理(RWH)级别,数据可直接地被写入磁盘/从磁盘读取。当机会锁 级别许可非杂乱高速缓存,诸如,例如R和RH级别,数据可从磁盘直接读取, 但写入数据被重定向。当写入(W)机会锁丢失,且机会锁降级为R或RH, 高速缓存可被整理(但并不必须要清除(purged))。此外,当机会锁级别许 可非杂乱(或,写直达(write-through))高速缓存,例如,读(R)或读/处理(RH), 数据可从磁盘直接读取(而写将被重定向)。当R机会锁丢失,高速缓存可被 清除,无进一步数据被高速缓存,且I/O(读和写)被重定向。
如所示,节点101包括CsvFs104、应用程序102、基于机会锁的高速缓存 103、和远程文件系统接口106。CsvFs104是到节点101中其他组件(诸如, 例如应用程序102),和到通过远程文件系统接口106和节点101通信的客户 机的文件系统。尽管远离文件系统118,对于节点101内的应用程序和在有通 信的客户机处的应用程序而言,CsvFs104表现为本地文件系统。CsvFs104还 可将机会锁控制数据传送到远程文件系统接口106以将机会锁委派给有通信的 客户机和本地运行的应用程序(例如,应用程序102)。
基于对文件或流所许可的机会锁级别,基于机会锁的高速缓存103可被用 于高速缓存来自文件或流的数据。高速缓存103可与高速缓存113类似地工作。 基于所许可的机会锁级别,CsvFs104还可确定:使用直接I/O或重定向I/O来 在节点101和磁盘121之间传送文件数据。用于确定何时使用直接或重定向I/O 传送数据的规则可与在CsvFs114处所使用的类似。节点199可包括类似于在 节点101中所述的组件。例如,节点199可包括CsvFs、基于机会锁的高速缓 存、和应用程序。如果节点199和其他客户机通信,节点199还可包括远程文 件系统接口。如果磁盘被安装在节点199,节点199可包括文件系统和文件系 统过滤器。这些组件的每一个可具有如前关于节点101和/或节点111所描述的 功能。
当磁盘被安装在节点199时,其他节点可包括附加的CsvFs以和磁盘通信。
图1A中的省略号表示:一个或多个其他节点也可被包含在群集共享卷架 构100中。这些一个或多个其他节点还可包括以下项中任意项:如前所述的文 件系统、文件系统过滤器、文件系统代理、基于机会锁的高速缓存、应用程序、 以及客户机接口。
通常,本发明的实施例包括,使用机会锁以确定何时可安全地允许远程客 户机执行本地高速缓存,以及所允许的本地高速缓存的类型。CsvFs从在协调 节点处的文件系统接收RW机会锁。基于该机会锁,CsvFs确定对应于RW机 会锁的本地高速缓存被允许。再基于RW机会锁,CsvFv还直接发送读和写到 磁盘。当CsvFs接收R机会锁时,CsvFs确定对应于R机会锁的本地高速缓存 被允许。进一步,基于R机会锁,CsvFs执行直接自磁盘的读I/O(即,直接 I/O),同时其发送写到协调节点(即,重定向数据)。当机会锁断开,不执行 高速缓存,且读和写被发送(重定向)至协调节点。
图1B示出了来自群集共享卷架构100的组件的附加视图。如图1B中所示, 应用程序102或者通过远程文件系统接口106来与节点101通信的客户机可发 送文件打开请求131至CsvFs104。文件打开请求131包括文件ID132(文件135 的ID)、访问模式(例如,读和/或写)、以及共享模式134(例如,共享或非 共享)。因此,文件打开请求131是以133所指明的访问模式和134所指明的 共享模式来打开文件135的请求。CsvFs104转发文件打开请求131至文件系统 过滤器117。文件系统过滤器117可转发文件打开请求131至文件系统118。 基于和已将文件135打开的其他节点相关联的访问模式和共享模式,文件系统 118可确定,是否可以访问模式133和共享模式134来打开文件135。当文件 135可按照要求打开时,文件系统118返回文件句柄(file handle)给CsvFs104。
CsvFs104还发送机会锁141至文件系统过滤器117。机会锁请求141可以 是用于机会锁级别的请求,该机会锁级别允许来自文件135(或流)的数据(例 如,读数据和/或写数据)被高速缓存在基于机会锁的高速缓存103中。文件系 统过滤器117可转发机会锁请求141至文件系统118。文件系统118可确定: 什么级别的机会锁(若有的话)可被授予给节点101。授予给节点101的机会 锁级别可基于以下项而确定:访问模式133、共享模式134、和已经打开文件 135的其他组件相关联的访问模式和共享模式、其他流状态(例如,字节范围 锁存在于来自其他系统的流上)、以及其他组件是如何实际访问文件135的。 例如,文件系统118可授予机会锁142(例如,用于读和/或写数据)给节点101。 文件系统过滤器117可转发机会锁142至CsvFs104。基于机会锁142的授予, 节点101可具有在文件135中的机会锁级别151(例如,读和/或写机会锁)。
基于机会锁级别151,CsvFs104可在基于机会锁的高速缓存103中高速缓 存文件135的文件数据(例如,文件数据136)。基于机会锁级别151,CsvFs104 还可确定,是否直接I/O或重定向I/O要被用于在节点101和磁盘121之间传 送文件数据(例如,文件数据136)。
图2示出用于在计算机系统和存储设备卷之间传送数据的示例性方法200 的流程图。方法200将参考图1B中描绘的群集共享卷架构100的组件和数据 来描述。
方法200包括动作:接收在计算机系统和在存储设备卷处的文件之间传送 文件数据的文件请求,该文件请求具有文件请求类型,该文件请求类型指示文 件请求是用于以下项中的一项或多项:写数据到文件,和从文件读数据(动作 201)。例如,CsvFs104可接收在节点101和磁盘121的卷上的文件135之间 传送文件数据136的请求。文件请求可包括文件请求类型,其指示文件数据136 是否要写至文件135和/或从文件135读取。
方法200包括动作:检查对应于文件请求的机会锁级别,该机会锁级别指 示允许计算机系统具有的高速缓存级别(动作202)。例如,CsvFs104可响应 于机会锁请求141检查CsvFs 104的机会锁级别151。机会锁级别151指示节点 101的被允许高速缓存级别。
方法200包括动作:根据机会锁级别将文件请求分派给适当的I/O机制, 该适当的I/O机制从直接I/O和重定向I/O中选出(动作203)。例如,CsvFs104 可确定,是直接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将本地高速缓存模式改为非杂乱或写直达高速缓存,然后回头和协调 节点确认机会锁降级。
图1C示出了来自群集共享卷架构100的组件的附加视图。如图1C中所示, 客户机161包括应用程序162、基于机会锁的高速缓存163、以及远程文件系 统客户机接口164(例如,服务器消息总线(SMB)重定向器,或Samba客户 机)。客户机161可使用远程文件系统客户机接口164来和节点101通信(通 过远程文件系统接口106)。因此,客户机161可通过CsvFs104发送文件打开 请求至磁盘121上的卷,并和该卷交换文件数据。基于对文件(或流)所许可 的机会锁级别,基于机会锁的高速缓存163可被用于为客户机161处的文件高 速缓存提前读取和/或写数据。
其他客户机,包括客户机197和198,还可连接至节点101,并与其通信。
更多客户机可连接至其他节点。例如,一个或多个客户机,包括客户机171, 可连接至节点111。如所示,客户机171包括应用程序172、基于机会锁的高 速缓存172、和远程文件系统客户机接口174。客户机171可使用远程文件系 统客户机接口174来和节点111通信(通过远程文件系统接口116)。因此, 客户机171可通过CsvFs114发送文件打开请求至磁盘121,并和磁盘121交换 文件数据。基于对文件所许可的机会锁级别,基于机会锁的高速缓存173可被 用于为客户机171处的文件高速缓存提前读取和/或写数据。
一旦从客户机处接收了用于文件(或流)的机会锁请求,CsvFs可确定: 是否其已经为该文件(或流)授予了机会锁(来自文件系统)。如果是的话, CsvFs可确定:是否部分或所有的被授予机会锁可被委派给请求客户机。
图3示出用于将机会锁委派客户机的示例性方法300的流程图。方法300 将参考图1C中描绘的群集共享卷架构100的组件和数据来描述。
方法300包括动作:从应用程序接收文件打开请求,该文件打开请求请求 打开存储在存储设备上的文件以用于在客户机和文件之间传送文件数据,该文 件请求具有访问模式和共享模式,所述文件访问模式指示以下的一项或多项: 写数据到文件和从文件读取数据,所述共享模式指示访问模式是以下的其中之 一:共享的或非共享的(动作301)。例如,CsvFs104可从应用程序162接收 文件打开请求137。
文件打开请求137包括文件ID 132(文件135的ID)、访问模式138(例 如,读和/或写)、以及共享模式139(例如,共享或非共享)。因此,文件请 求137是以138所指明的访问模式和139所指明的共享模式来打开文件135的 请求。CsvFs104转发请求137至文件系统过滤器117。文件系统过滤器117可 转发文件打开请求137至文件系统118。基于和已将文件135打开的其他节点 相关联的访问模式和共享模式,文件系统118可确定,是否可以访问模式138 和共享模式139来打开文件135。
方法300包括动作:从应用程序接收对文件的机会锁请求(动作302)。 例如,节点101可从应用程序162接收机会锁请求。机会锁请求可对应于文件 135。
方法300包括动作:标识计算机系统可被授予对应于文件的机会锁级别, 机会锁级别指示计算机系统在文件上具有用于以下的一项或多项的机会锁:从 文件读取,和写至文件(动作303)。例如,CsvFs104可确定其具有对应于文 件135的机会锁级别151。机会锁级别151指示:节点101具有用于从文件135 读取数据和/或写数据到文件135的机会锁(例如,R或RW)。
方法300包括动作:基于所标识的机会锁级别,以及对应于具有对文件的 访问权的一个或多个应用程序中的任何其他应用程序的访问模式和共享模式, 来为应用程序创制适当的机会锁级别(动作304)。例如,CsvFs104可基于机 会锁级别151和连接至节点101的任何其他客户机(例如,197,198)在文件 135上所具有的访问模式和共享模式来为客户机161创制机会锁级别152。方 法300包括动作:将指示适当的机会锁级别的机会锁委派给应用程序(动作 305)。例如,CsvFs104可响应于来自应用程序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机会锁给请求客户 机。
图1D示出了来自群集共享卷架构100的组件的附加视图。如图1D中所 示,节点101还包括群集共享卷对象181,节点111还包括群集共享卷对象182。 节点199包括应用程序150、基于机会锁的高速缓存160、CsvFs170、以及群 集共享卷对象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/O(例如,基于机会锁级别)。
CsvFs可被安装在群集共享卷对象上以提供文件系统功能性。安装在群集 共享卷对象上的CsvFs对于其他组件表现为本地文件系统。例如,应用程序150 可将CsvFs170视为本地文件系统。表现为本地文件系统促进与操作系统O/S 备份和恢复的无缝集成。表现为本地文件系统还允许使用与本地文件系统一起 工作的工具,诸如,例如碎片整理(defrag)、格式化、磁盘检查、磁盘管理 等。表现为本地文件系统还给予应用程序使用远程文件系统接口(例如,SMB, 或者网络文件系统(NFS))访问CsvFs的能力。
卷虚拟化还提供了在所有节点上(甚至是在没有到磁盘的直接连接的节点 上)的对称化名空间。在群集共享卷对象上安装CsvFs可实现端对端的名空间 控制。因此,CsvFs170可控制名空间,无需依赖于磁盘121的状态。
因此,在群集共享卷架构100中,可与可用的连接类型无关地向存储设备 卷提供容错访问。例如,CsvFs170可从应用程序150接收文件请求以用于在节 点199和磁盘121的卷处的文件之间传送文件数据(可能是在基于机会锁的高 速缓存160中的数据)。群集共享卷对象180可检测:对磁盘121的直接I/O 是可用的。因此,可使用直接I/O在节点199和磁盘121的卷之间传送文件数 据。
在传送文件数据之后,从节点199到磁盘121的直接I/O可能丢失(或由 于用户操作而有意丢失,或通过错误而丢失)。随后,CsvFs170可从应用程序 150接收第二文件请求以用于在节点199和磁盘121的卷处的文件之间传送文 件数据(可能是在基于机会锁的高速缓存160中的数据)。群集共享卷对象180 可检测:对磁盘121的直接I/O不是可用的。因此,可使用重定向I/O在节点 199和磁盘121的卷之间传送文件数据。
尽管由于直接I/O的不可用而使用不同的I/O机制,但是CsvFs170继续对 应用程序150表现为起作用的本地文件系统。
例如,文件系统118可被卸除,以用于在节点101处重安装文件系统118。 或者,文件系统118可能由于故障而被卸除。群集共享卷对象180允许CsvFs170 经受文件系统118的卸除。因此,当文件系统118被卸除时,CsvFs170和群集 共享卷对象180的组合对于其他组件仍继续表现为本地文件系统。当文件系统 118被重安装(在节点101或节点111处),其可再次被使用。
在某些实施例中,当升级的机会锁可能可用时,机会锁更新机制向CsvFs 发出提示。当文件系统(例如,118)检测到CsvFs(例如,104)在文件(例 如,由于另一个组件(如组件114)的结果,关闭文件)上有其余的打开(remaining opens)时,可为文件发送提示。一旦收到提示,CsvFs(例如,104)可发送对 该文件的机会锁请求到文件系统(例如,118)。一旦收到机会锁请求,文件 系统(例如,118)为CsvFs(例如,104)重新评估机会锁级别。当文件关闭 发生时,这从根本上促进机会锁的重新评估。
图1E示出了来自群集共享卷架构100的组件的附加视图。如图1E中所示, 节点101和节点191与文件系统118相通信以传送文件数据到磁盘121或从磁 盘121传送文件数据。节点101具有用于文件155的机会锁级别192。机会锁 级别192可表示节点101对于文件155没有机会锁,具有R机会锁,或者具有 RW机会锁。
图4示出用于提供升级的机会锁级别给计算机系统的示例性方法400的流 程图。方法400将参考图1E中描绘的群集共享卷架构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可确定是否要将更新提示发送 给CsvFs104。如果CsvFs104当前具有文件155上的机会锁级别,该级别对读 和写数据均不允许直接I/O,则存在为文件系统代理104而升级文件155上的 机会锁的可能性。例如,如果CsvFs104没有文件155上的机会锁,则存在升 级到文件155上的R机会锁或RW机会锁的可能性。如果CsvFs104具有文件 155上的R机会锁,则存在升级R机会锁到RW机会锁的可能性。当存在更新 机会锁的可能性时,文件系统188可发送升级提示到CsvFs104。
另一方面,如果CsvFs105具有对于读和写数据均允许直接I/O的机会锁级 别,则本质上没有升级的可能性。当没有升级的可能性时,文件系统过滤器117 不发送提示到CsvFs104。
方法400包括动作:发送提示给该其余计算机系统,以请求重新评估在该 其余计算机系统上的机会锁级别(动作404)。例如,文件系统过滤器117可 向节点101发送提示167。提示167可向节点101指示重新请求用于文件155 的机会锁。节点101可接收提示167。
方法400包括动作:在发送提示之后,从其余计算机系统接收机会锁请求 (动作405)。例如,CsvFs104可发送机会锁请求168到文件系统118。文件 系统118可从CsvFs104接收机会锁请求168。机会锁请求168可请求文件155 上的机会锁,该机会锁若被授予,将增加机会锁级别192。
方法400包括动作:响应于机会锁请求,为其余计算机系统重新评估机会 锁级别,以确定其余计算机系统的升级机会锁级别(动作406)。例如,响应 于机会锁请求168,文件系统118可重新评估机会锁级别192以确定节点101 的升级机会锁级别。升级机会锁级别可将机会锁级别192增加至用于文件155 的R机会锁或RW机会锁。
方法400包括动作:授予指示其余计算机系统的升级机会锁级别的机会锁 (动作407)。例如,文件系统118可发送机会锁169到CsvFs104。响应于接 收机会锁169,CsvFs104可将机会锁级别192转换(升级)到机会锁级别193。 因此,如果机会锁级别192指示没有用于文件155的机会锁,则机会锁级别193 可指示用于文件155的R机会锁和/或RW机会锁。如果机会锁级别192指示 了用于文件155的R机会锁,则机会锁级别193可指示用于文件155的RW机 会锁。因此,响应于另一节点关闭文件,用于在一节点处的该文件的机会锁级 别被升级。
任选地,可用另一个不同的机制来检测何时升级到读机会锁级别是安全 的。每当另一系统执行和R机会锁冲突的I/O时(例如,字节范围锁、写或等 同于写的另一I/O(零范围,写卸荷等)、文件大小改变等),读机会锁级别 可被断开。在冲突I/O完成后,CsvFs可再次请求R机会锁级别。R机会锁级 别可被授予,然后在下一次冲突I/O上被断开。可引入延迟以调节:在前次R 机会锁级别被断开后,何时CsvFs可再次请求R机会锁级别。该延迟可减轻重 复地断开和重新请求R机会锁级别所产生的负荷(可能会很重)。可由文件系 统过滤器(例如,118)来监控该延迟。
本发明的实施例包括群集共享卷文件系统(CsvFs),其在客户机看来是 本地文件系统。CsvFs向其中安装磁盘的节点通信以协调对文件的访问。CsvFs 使用机会性锁(机会锁)来决定何时访问卷以直接读或写(不发送数据到卷所 安装在的节点)是安全的。以机会锁升级机制来扩展CsvFs,在机会锁丢失的 情况下,机会锁升级机制允许协调节点告诉CsvFs,何时尝试升级机会锁是安 全的。CsvFs还使用机会锁的传递性特性,从而得以:基于CsvFs从协调节点 所获得了什么机会锁来授予(委派)机会锁给在CsvFs顶部的客户机。
本发明可被具体化为其他具体形式而不背离其精神或本质特征。所描述的 实施例在所有方面都应被认为仅是说明性而非限制性的。因此,本发明的范围 由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范 围内的所有改变被权利要求书的范围所涵盖。
机译: 群集共享卷中的卷和文件系统
机译: 群集共享卷中的卷和文件系统
机译: 群集文件系统卷中块分配的主机亲和力区域