分布式文件系统复制环境中的乐观锁定的制作方法

文档序号:6424167阅读:91来源:国知局
专利名称:分布式文件系统复制环境中的乐观锁定的制作方法
技术领域
本发明涉及分布式文件系统复制系统,更具体地,涉及分布式文件系统复制环境中的乐观锁定。
背景技术
在分布式文件系统复制环境中,不同用户可在多个服务器上修改数据。正因为此, 用户可能改写彼此的改动,这会引起冲突问题。为了避免这类改写/冲突问题,曾尝试使用中介机制和分布式锁定方案。然而,中介机制需要具有完全路由的网络并且不使用多主控(multi-master)复制。分布式锁定机制是非常复杂的,并因此具有许多缺陷。因此,目前的分布式文件系统复制系统使用较简单的方案,即“最后作者胜出”的冲突算法,在这一算法中,保存(关闭)公共编辑的文件的最后一个用户将保持其改动。失败的文件副本被保持在“ConflictAndDeleted(冲突并删除)”文件夹中。这在许多情形下不是一种想要的方案。

发明内容
提供本发明内容以便以简化形式介绍将在以下的详细描述中进一步描述的一些代表性概念。本发明内容不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在以限制所要求保护的主题的范围的任何方式来使用。简单来说,此处所描述的主题的各方面涉及一种技术,通过该技术多个联网的复制机中的一个复制机能够乐观地锁定文件以防止许多改写冲突。复制机确定将为编辑/写入被打开的文件是否由另一复制机乐观地锁定。如果没有,则该文件被打开供读-写访问, 并且向其它复制机发送分布式锁定更新以在每个其它复制机上乐观地锁定该文件。内核模式锁定过滤驱动程序可检测打开请求,而用户模式服务可分布该锁定。不需要从每个其它复制机接收确认来允许编辑。锁定可以通过在编辑期间发送其它锁定更新来周期性地或以其它方式被保持。如果文件由另一复制机锁定,则该文件可以被打开供只读访问。如果已锁定的文件在通常大于保持时间的时间内没有被解锁或保持,则该已锁定的文件可被强制解锁。乐观锁定中也可能出现冲突,包括在文件正被打开供写入时接收到来自另一机器的对于该文件的另一锁定更新而检测到的冲突。如果是这样,可以执行至少一种早期冲突解决动作,例如,在文件被关闭之前通知用户。如果在文件被关闭之后检测到冲突,则可以采用另一冲突解决动作,诸如常规的“最后作者胜出”动作。当编辑完成时,文件被关闭并发送解锁更新。解锁更新可被延迟一定时间,以确保文件不会很快被重新打开,这可能在对于根据保存操作而不是实际的用户所企图的文件关闭操作来关闭文件并自动重新打开该文件的某些程序而发生。结合附图阅读以下具体实施方式
,本发明的其他优点会变得显而易见。


作为示例而非限制,在附图中示出了本发明,附图中相同的附图标记指示相同或相似的元素,附图中图1是表示实现乐观锁定的示例分布式文件系统复制环境的框图。图2是表示与对于打开文件供编辑的乐观锁定有关的示例概念的流程图。图3是表示与处理乐观锁定的接收/强制已乐观锁定的文件的解锁有关的示例概念的流程图。图4示出可以将本发明的各方面并入其中的计算环境的说明性示例。
具体实施例方式此处所描述的技术的各方面普遍涉及乐观锁定方案,其中文件打开(或首次写入)操作产生尝试排他地锁定该文件的分布式锁定更新(通知)。如果在任何其他用户打开文件之前在其它复制机上接收到锁定更新,则该锁定防止其他人打开文件以写入(只读地打开可以被允许)。虽然这通常在相对大部分时间会成功,但锁定更新仅仅是乐观的,因为具有锁定并不保证不存在当前或未来的冲突;不要求接收确认(尽管这一实现是可行的)。例如, 如果锁定更新没有被另一机器及时地接收以防止在该另一机器上的再一次打开,则存在冲突。然而,冲突可以在文件仍然打开时而不是在文件关闭之后被检测。这允许采取早期冲突检测解决动作,诸如通知用户以及向用户提供以不同的文件名保存文件副本的机会。作为另一示例,如果根本未接收到锁定更新,例如由于网络被断开(不是所有节点当前都能与彼此通信),则可使用诸如最后作者胜出之类的冲突解决算法。以此方式,对于相对大部分的文件打开,锁定可防止冲突;而相对小部分的冲突可根据检测来处理,检测包括早期检测或通过当前使用的最后作者胜出方案。应当理解,此处的任何示例都是非限制性的。事实上,此处所描述的用过滤驱动程序来检测文件打开和关闭仅仅是用于实现乐观锁定的一种机制,并且此处所描述的元数据也仅是适当的文件系统的一个示例。如此,本发明不限于此处所描述的任何特定实施例、方面、概念、结构、功能或示例。相反,这里所描述的任何一个实施例、方面、概念、结构、功能或示例都是非限制性的,可以以一般而言在计算和文件复制时提供好处和优点的各种方式来使用本发明。图1示出了用于在诸如文件服务器之类的多个复制机102^10 中间实现的乐观锁定的一般示例网络。虽然在图1中作为示例示出了五个这样的机器10&-1025,可以理解的是网络可具有任何实用的数量。为了方便起见,图1仅示出了其中一个机器(即机器10 )的某些内部组件,然而可以理解的是其它机器1022-1(^5包含相同的组件。如机器10 中所示的,当文件诸如由任何适当的应用程序104所打开供写入时,锁定过滤驱动程序106检测针对文件系统108的写入式打开请求。值得注意的是,可替换地,检测可以在第一次写入时进行。根据检测,创建锁定请求,诸如文件的IDRecorcKlD记录)中的一个字段。锁定更新随后被诸如通过用户模式锁定服务110传播到其它机器。在其它参与的复制机上,文件通常经由适当设置的属性变为只读,并且锁定复制机的标识符(例如,锁定复制机的数据库的GUID)被与文件相关联地保持,例如保持在文件的可替换数据流DB_ GUID $DATA中。每个看到锁定更新的复制文件夹通过例如将文件添加到只读过滤驱动程序 (每个其它机器的对于机器102i的过滤驱动程序112的对应物)来防止读-写打开,藉此在该机器上文件只能被只读地打开。其它机制也是可行的,例如,以文件为单位的而不是以文件夹为单位的过滤驱动程序可锁定文件供只读打开,文件访问可被完全拒绝而不是允许只读访问,等等。需要注意的是,考虑可能发生的冲突,例如当一台机器接收到在该机器上已锁定的文件的分布式锁定更新时,这可以是由缓慢的网络条件以及同时或接近同时在两个或更多复制机上打开造成的。在这种情况下,可采取早期冲突解决动作,诸如向用户通知冲突并让用户将他们的文件副本以不同名称保存或放弃他们的改动。作为冲突的另一示例,考虑两个子网,其中子网之间的连接变得断开,使得一个文件可在两个子网中都被打开。在这种情况下,为每个子网中的个体锁定请求者锁定文件。 当连接被恢复时,诸如常规的“最后作者胜出”冲突解决算法之类的冲突解决算法解决该冲突。由此可见,该技术由此提供了“最大努力”的锁定,这显著地减少了用于可能的冲突的定时窗口,而且处理了确实发生的其余冲突。在已打开的文件关闭之后,以类似的方式解锁该文件,即通过解锁更新。然而,解锁更新可能不被发送或接收,例如,在锁定机器或与锁定机器的通信失败时。为此,持有锁定的机器通过锁定更新在文件仍然打开时保持该锁定。如果没有及时收到解锁更新,并且锁定该文件的机器没有及时保持该锁定,则强制解锁机制将该文件解锁。以此方式,在经过可由管理员配置的超时值之后,如果在超时窗口内没有接收到更新,则基于各文件的所经过的超时来释放各文件。当服务重新启动时,超时被重置,但是可根据需要按照每个文件来保持超时。图2以示例步骤的流程图形式示出了示例概念。需要注意的是,图2并不意图显示实际的逻辑,而是显示各个方面;例如,可使用单独的事件定时器等而不是循环中的步骤。 步骤开始于接收到意图进行读和写(R/W)的文件打开请求。步骤202评估文件是否已被锁定。如果是,执行步骤204,其基于例如管理员配置来拒绝访问或允许只读访问。如果没有被锁定,步骤206以读-写访问(或者简单来说,“打开供写入”)打开文件,并且如下所述的,开启保持锁定定时器。—旦打开供读-写,如步骤210所表示的,允许进行编辑。在编辑期间,可进行许多动作。例如,如步骤212所表示的,可能接收到来自另一机器的锁定更新。例如,由于传输延迟,两台机器可能没有在各自允许文件的相应副本被打开供读/写之前及时接收到彼此的锁定更新。如果是这样,如步骤212所表示的,进行早期冲突检测,藉此步骤214允许采取某些动作,例如,可提醒用户该冲突,该冲突可通过以不同文件名保存或者通过外部手段(例如,如果知道的话,联系另一方)来避免。如此处所描述的,文件解锁可能需要强制进行,以避免文件由于例如机器或网络故障等被保持在锁定状态。然而,在一般情况下,间或(诸如周期性地)保持锁定,直到通过关闭文件来解锁。这一保持时间可以是可配置的,使得网络不会充满了锁定更新,不过一般来说,保持时间小于强制解锁时间。例如,管理员可规定锁定每隔三十秒被保持,而如果
5在两次保持周期之后(例如,刚好超过一分钟)没有接收到锁定更新,则进行强制更新。另一管理员可规定以几分钟或者甚至几小时的数量级来进行保持/强制执行,这本质上平衡了通过网络发送更新的次数相对于文件写入可用性。步骤216表示检验是否达到了保持定时器(保持定时器在步骤208被开启)。如果是,步骤216分支返回到步骤208发送另一锁定更新,并且重启保持定时器。步骤218表示检测到关闭操作,例如由锁定过滤驱动程序通过适当的事件所通知的关闭操作。如果没有被关闭,则继续编辑(步骤210)。如果被关闭,则可能需要发送文件解锁(步骤226)。然而,在这样做之前,允许花费一些时间(通过步骤220和224),因为在步骤218检测到的“关闭”可能不是实际的、用户所企图的关闭。具体来说,一些程序在文件被保存时对一个文件句柄执行关闭操作,但是通过另一句柄打开具有相同名称的文件的副本,实质上对一个文件使用了两个文件句柄。对于这样的保存操作的关闭/重打开操作相对是较快的,并且对于用户来说是透明的。因此, 准许花费一些时间(诸如几秒的数量级)来看看是否文件被相对快速地关闭和重打开(步骤222),而不是使网络充斥着解锁更新以及不久后紧接着的另一次锁定更新。值得注意的是,如果用户确实碰巧在这一准许的时间段中关闭并重新打开文件,则该用户自然获得了使该文件保持锁定的好处,而这也是用户可能希望发生的。图3示出了和处理锁定更新的接收(步骤302)有关的一些示例概念。图3(与图 2 一样)是示例步骤的流程图形式,但并不意图显示实际的逻辑。值得注意的是,图3的一些部分可以由锁定服务110来执行,当也可取而代之地,由网络上的对那些在准许的保持时间内没有被保持锁定的文件进行解锁的一个或多个代理来执行。步骤304评估文件是否已在另一机器上被打开供读_写,其中可如上所述地应用事件早期冲突检测和解决方案(步骤306)。如果没有,步骤308锁定该文件,并且步骤310 开启解锁定时器,如果在文件没有以其它方式被解锁时、在锁定被(如上所述的)保持之前达到了该解锁定时器(步骤312),该解锁定时器会强制执行解锁。如果由锁定该文件的复制机适当地解锁了,步骤312分支到步骤314以在该复制机处解锁该文件(例如,调整属性/通知只读过滤驱动程序)。如果需要并且可行,用户可被通知该解锁(步骤316),例如,使该文件以只读形式打开的用户可被通知该用户现在可打开该文件供读-写。步骤318评估解锁定时器。如果尚未到达解锁定时器,步骤320评估该文件锁定是否被保持;如果是,步骤320分支返回到步骤310以重启解锁定时器。如果到达了定时器,步骤318分支到步骤322,在步骤322,在评估锁定与解锁定时的机器上执行强制解锁; 该强制解锁可分布到其它复制机。以此方式,显著减少了冲突的机会。同时,在许多情况下,该技术提供了针对冲突情况的早期冲突检测。只要是存在后期检测的冲突,就可应用“最后作者胜出”或其它冲突解决方案,这绝不会比当前技术所提供的效果差。示例性操作环境图4示出了其上可实现图1-3的示例的合适的计算和联网环境400的示例。计算系统环境400只是合适计算环境的一个示例,而非意在暗示对本发明使用范围或功能有任何限制。也不应该将计算环境400解释为对示例性操作环境400中示出的任一组件或其组合有任何依赖性或要求。本发明可用各种其他通用或专用计算系统环境或配置来操作。适用于本发明的公知计算系统、环境、和/或配置的示例包括但不限于个人计算机、服务器计算机、手持式或膝上型设备、平板设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、微型计算机、大型计算机、包括任何以上系统或设备的分布式计算环境等等。本发明可在诸如程序模块等由计算机执行的计算机可执行指令的通用上下文中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、 组件、数据结构等等。本发明也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实现。在分布式计算环境中,程序模块可以位于包括存储器存储设备在内的本地和/或远程计算机存储介质中。参考图4,用于实现本发明的各方面的示例性系统可包括计算机410形式的通用计算设备。计算机410的组件可以包括但不限于处理单元420、系统存储器430和将包括系统存储器在内的各种系统组件耦合至处理单元420的系统总线421。系统总线421可以是若干类型的总线结构中的任何一种,包括使用各种总线体系结构中的任何一种的存储器总线或存储器控制器、外围总线,以及局部总线。作为示例而非限制,这样的体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线、以及也称为夹层(Mezzanine)总线的外围组件互连(PCI) 总线。计算机410通常包括各种计算机可读介质。计算机可读介质可以是能由计算机 410访问的任何可用介质,并包含易失性和非易失性介质以及可移动、不可移动介质。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以存储诸如计算机可读的指令、数据结构、程序模块或其他数据之类的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不仅限于,RAM、ROM、EEPR0M、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储或其他磁存储设备,或可以用来存储所需信息并可以被计算机 410访问的任何其他介质。通信介质通常以诸如载波或其他传输机制的已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并包括任意信息传送介质。术语“已调制数据信号”指的是一个或多个特征以在信号中编码信息的方式被设定或更改的信号。 作为示例而非限制,通信介质包括有线介质,如有线网络或直接线连接,以及如声学、RF、红外及其他无线介质之类的无线介质。上面各项中的任何项的组合也包括在计算机可读介质的范围内。系统存储器430包括易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM) 431和随机存取存储器(RAM) 432。基本输入/输出系统433 ¢10 包括如在启动时帮助在计算机410内的元件之间传输信息的基本例程,它通常储存在R0M431中。 RAM 432通常包含处理单元420可以立即访问和/或目前正在操作的数据和/或程序模块。 作为示例而非限制,图4示出了操作系统434、应用程序435、其他程序模块436和程序数据 437。计算机410还可以包括其他可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图4示出了从不可移动、非易失性磁介质中读取或向其写入的硬盘驱动器441,从可移动、非易失性磁盘452中读取或向其写入的磁盘驱动器451,以及从诸如⑶ROM 或其他光学介质等可移动、非易失性光盘456中读取或向其写入的光盘驱动器455。可以在示例性操作环境中使用的其他可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器441通常由不可移动存储器接口,诸如接口 440连接至系统总线421,磁盘驱动器451和光盘驱动器455通常由可移动存储器接口,诸如接口 450连接至系统总线421。以上描述并在图4中示出的驱动器及其相关联的计算机存储介质为计算机410提供了对计算机可读指令、数据结构、程序模块和其他数据的存储。例如,在图4中,硬盘驱动器441被示为存储操作系统444、应用程序445、其他程序模块446和程序数据447。注意, 这些组件可以与操作系统434、应用程序435、其他程序模块436和程序数据437相同,也可以与它们不同。操作系统444、应用程序445、其他程序模块446和程序数据447在这里被标注了不同的附图标记是为了说明至少它们是不同的副本。用户可通过诸如平板或电子数字化仪464、话筒463、键盘462和定点设备461 (通常指的是鼠标、跟踪球或触摸垫)等输入设备向计算机410输入命令和信息。图4中未示出的其他输入设备可以包括操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等。这些和其他输入设备通常通过耦合至系统总线的用户输入接口 460连接至处理单元420,但也可以由其他接口和总线结构,诸如并行端口、游戏端口或通用串行总线(USB)来连接。监视器491或其他类型的显示设备也通过接口,诸如视频接口 490,连接至系统总线421。监视器491也可以与触摸屏面板等集成。注意,监视器和/或触摸屏面板可以在物理上耦合至其中包括计算设备410的外壳,诸如在平板型个人计算机中。此外,诸如计算设备410等计算机还可以包括其他外围输出设备,诸如扬声器 495和打印机496,它们可以通过输出外围接口 494等连接。计算机410可以使用到诸如远程计算机480之类的一个或多个远程计算机的逻辑连接在联网环境中操作。远程计算机480可以是个人计算机、服务器、路由器、网络PC、对等设备或其他常见网络节点,并且通常包括许多或所有以上关于计算机410所描述的元件, 尽管在图4中仅示出了存储器存储设备481。图4中所示的逻辑连接包括一个或多个局域网(LAN)471和一个或多个广域网(WAN)473,但也可以包括其他网络。这样的联网环境在办公室、企业范围计算机网络、内联网和因特网中是常见的。当在LAN联网环境中使用时,计算机410通过网络接口或适配器470连接至 LAN471。当在WAN联网环境中使用时,计算机410通常包括调制解调器472或用于通过诸如因特网等WAN473建立通信的其他装置。可为内置或可为外置的调制解调器472可以经由用户输入接口 460或其他合适的机制连接至系统总线421。诸如包括接口和天线的无线联网组件可通过诸如接入点或对等计算机等合适的设备耦合到WAN或LAN。在联网环境中, 相对于计算机410所描述的程序模块或其部分可被存储在远程存储器存储设备中。作为示例而非限制,图4示出远程应用程序485驻留在存储器设备481上。可以理解,所示的网络连接是示例性的,也可以使用在计算机之间建立通信链路的其他手段。辅助子系统499(例如,用于内容的辅助显示)可经由用户接口 460连接,从而即使计算机系统的主要部分处于低功率状态中,也允许诸如程序内容、系统状态和事件通知等数据被提供给用户。辅助子系统499可连接至调制解调器472和/或网络接口 470,从而在主处理单元420处于低功率状态中时,也允许在这些系统之间进行通信。
结论尽管本发明易于作出各种修改和替换构造,但其某些说明性实施例在附图中示出并在上面被详细地描述。然而应当了解,这不旨在将本发明限于所公开的具体形式,而是相反地,旨在覆盖落入本发明的精神和范围之内的所有修改、替换构造和等效方案。
权利要求
1.在计算环境中,一种在至少一个处理器上执行的方法,该方法包括,在多个联网的复制机中的一个复制机中,确定(20 被请求读-写式打开的文件是否被另一复制机乐观地锁定,如果没有,则打开文件供读-写006),并将分布式锁定更新发送(208)到一个或多个其它复制机以在每个其它复制机上乐观地锁定该文件。
2.如权利要求1所述的方法,其特征在于,打开文件供写入包括不等待来自任何其它复制机的指示文件被乐观锁定的任何确认。
3.如权利要求1所述的方法,其特征在于,还包括通过在保持时间发送至少一个其他锁定更新来保持乐观锁定。
4.如权利要求1所述的方法,其特征在于,还包括当文件被打开供写入时接收来自另一机器的对该文件的另一锁定更新,以及执行至少一个早期冲突解决动作,或在文件被关闭后检测冲突,并执行冲突解决动作。
5.如权利要求1所述的方法,其特征在于,还包括关闭文件并发送解锁更新。
6.如权利要求1所述的方法,其特征在于,还包括确定文件被另一复制机乐观地锁定, 以只读方式打开文件,确定在强制解锁时间内被乐观锁定的文件是否未被保持,如果未被保持,则解锁该文件。
7.在计算环境中,一种系统包括,多个复制机(102^102》,每个复制机具有机制(106, 110),所述机制在文件尚未被乐观地锁定时根据文件打开或首次文件写入请求乐观地锁定该文件,机制包括通过通信以向任何其它通信的复制机发送乐观锁定,每个复制机在文件已由另一复制机乐观锁定时防止文件的读写式打开。
8.如权利要求7所述的系统,其特征在于,所述机制包括内核模式锁定过滤驱动程序, 其检测文件打开请求,其中锁定过滤驱动程序与发送所述乐观锁定的用户模式服务进行通信,并且其中每个复制机防止在文件已经通过在内核模式只读过滤驱动程序处阻止打开供写入访问而被乐观地锁定时、读写式打开该文件。
9.一个或多个具有计算机可执行指令的计算机可读介质,所述计算机可执行指令在被执行时执行以下步骤,包括在多个联网的复制机中的一个复制机(102)处接收对文件的读写式打开请求;确定(202)文件是否已由另一复制机乐观地锁定,并且如果是(i)防止(204)打开文件或允许文件被打开供只读访问,并且如果没有被乐观地锁定( )打开(206)该文件供读-写访问,向一个或多个其它复制机发送(208)分布式锁定更新以在每个其它复制机上乐观地锁定该文件,通过发送至少一个其他锁定更新而在保持时间到达时保持(216,208)乐观锁定,并且基于关闭文件发送(226)解锁更新。
10.如权利要求9所述的一个或多个计算机可读介质,其特征在于,还具有计算机可执行指令,包括确定文件是否已由另一复制机乐观地锁定,并且当文件在强制解锁时间内没有被解锁或保持时解锁该文件。
全文摘要
需要一种分布式文件系统复制环境中的乐观锁定,其中当文件被开启供写入访问时,复制机(例如,复制的文件服务器)向其它复制机发送乐观锁定。其它接收到乐观锁定的复制机防止读-写式打开该文件,直到文件被解锁,由此避免了许多冲突。锁定复制机并不要求确认。在被减少的许多冲突中,那些冲突中的许多是在文件被关闭之前被检测并进而被处理的,而在关闭之后被检测到的冲突可通过传统的冲突解决技术(例如最后作者胜出)来处理。
文档编号G06F17/30GK102236700SQ201110125220
公开日2011年11月9日 申请日期2011年5月3日 优先权日2010年5月4日
发明者D·E·法萨拉 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1