使用共享文件访问‑REST接口的文件服务的制作方法

文档序号:11142268阅读:830来源:国知局
使用共享文件访问‑REST接口的文件服务的制造方法与工艺

数据访问由若干不同类型的数据访问协议来促成。数据访问协议提供用于计算机内或计算机之间的数据通信的规则。不同类型的数据访问协议提供访问数据时的某些优点。具体而言,共享文件访问(“SFA”)协议,诸如服务器消息块(“SMB”),可被用来访问文件系统资源,且表述性状态转移(“REST”)协议也可被用于受所定义的体系结构约束限制的客户机服务器交互。每一协议是用于传递消息以访问数据的良好定义的格式。因而,在各协议被实现为应用编程接口(API)以链接到数据访问服务时,一个协议的API库不可避免地排除其他协议API来运作。就此,常规数据访问协议和API在促进整合文件共享和基于约束的客户机服务器交互方面不是高效的,因为常规数据访问协议和API不能提供对整合SMB和REST功能性的全面支持。

发明概述

提供本概述以便以简化的形式介绍将在以下具体实施方式中进一步描述的一些概念。本概述不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在独立地用于帮助确定所要求保护的主题的范围。

在各实施例中,提供了用于提供对文件系统的访问的方法和系统。接收具有针对件系统中的文件的操作修饰符的基于SFA的操作。基于SFA的操作是基于文件表述性状态转移(REST)接口来定义的。SFA-REST接口包括SFA协议和REST协议的整合功能性。接收针对分布式文件系统中的文件的基于REST的操作。基于REST的操作是基于SFA-REST接口来定义的。使用操作修饰符执行基于SFA的操作。操作修饰符被参考以执行基于REST的操作。基于SFA-REST接口执行基于REST的操作。文件模式可被实现以用于访问文件系统。该模式包括用于存储文件的各个表,这些表包括与SFA-REST接口的各元素相对应的字段。进一步设想了快照组件可被实现以对文件系统中的文件共享进行备份。

附图简要说明

下面参考附图详细描述本发明,其中:

图1是适用于实现本发明的各实施例的示例性计算环境的框图;

图2A-D是其中可采用本发明的各实施例的示例性云计算基础设施和平台的框图;

图3是示出根据本发明的各实施例的用于访问分布式文件系统中的文件的方法的流程图;

图4是示出根据本发明的各实施例的用于对文件共享进行快照的方法的流程图;

图5是示出根据本发明的各实施例的用于访问分布式文件系统中的文件的方法的流程图;以及

图6是示出根据本发明的各实施例的用于访问分布式文件系统中的文件的方法的流程图。

发明详细描述

此处用细节来描述本发明的各实施例的主题以满足法定要求。然而,该描述本身并非旨在限制本专利的范围。相反,发明人已设想所要求保护的主题还可结合其它当前或未来技术以其它方式来实施,以包括不同的步骤或类似于本文中所描述的步骤的步骤组合。此外,尽管术语“步骤”和/或“框”可在此处用于指示所采用的方法的不同元素,但除非而且仅当明确描述了各个步骤的顺序时,该术语不应被解释为意味着此处公开的各个步骤之中或之间的任何特定顺序。

出于本公开的目的,单词“包括”具有与单词“包含”一样广义的含义。另外,诸如“一”和“一个”包括复数以及单数,除非另外相反地指明。这样,例如,“一个特征”的要求在存在一个或多个特征的情况下被满足。同样,术语“或”包括合取、析取及这两者(a或b由此包括a或b任一,以及a和b)。

出于下文的详细讨论的目的,参考基于SFA的操作经由HTTP使用交互以支持云计算平台上的文件服务的基于SFA和REST的操作描述了本发明的各实施例;然而,用于云计算平台上的文件服务的经由SFA-REST接口的内容共享仅是示例性的且设想了所描述的技术可被扩展到基于SFA的操作和基于REST的操作在其中交互的其他实现上下文。

共享文件访问协议被用于提供对文件、打印机、串行端口以及网络上的节点之间的通信的共享访问。具体而言,共享文件访问协议允许客户机如同文件在本地计算机上那样来操纵文件。诸如读、写、创建、删除等操作都被支持,仅有的区别是文件不在计算设备本地而是实际上在远程服务器上。

共享文件访问协议实现通过客户机-服务器办法来工作,其中客户机作出特定请求而服务器相应地作出响应。具体而言,SMB协议提供文件系统服务,使得客户机可对文件服务器作出请求。作为背景,文件系统被用来控制数据是如何存储和检索的,使得文件系统存储中的信息段可彼此区分开。用来管理数据和它们的名称的结构和逻辑规则被称为文件系统。SMB服务器使它们的文件系统以及其他资源对网络上的客户机可用。如此,SMB协议是优选的文件共享协议。

表述性状态转移(“REST”)指的是包括应用于分布式超媒体系统的组件、连接器、以及数据元素的体系结构约束的协作集的软件体系结构样式。就此,REST协议可被描述为体系结构约束协议。正式REST体系结构约束包括客户机-服务器、无状态、可高速缓存、自描述消息,以及通过表示来操纵资源,以及其他。具体而言,无状态性可以指如下概念:客户机-服务器通信受在各请求之间没有客户机上下文被存储在服务器上的约束或者在各请求之间在客户机中根本没有维护状态。来自任何客户机的每一请求包含服务该请求所必需的所有信息,并且会话状态被保持在客户机中。REST也可被配置成在超文本传输协议(“HTTP”)上运行。例如,包含可扩展标记语言(“XML”)文件的指定网页可被读取,其中XML描述并具有所需内容。被实现为API的REST协议可以用在移动应用、社交联网网站、以及自动化业务过程中。REST样式强调客户机和服务之间的交互通过具有有限数目的操作来增强。资源可被指派它们自己的唯一的统一资源标识符(“URI”)。

计算平台一般可以指具有被设计成在该平台内运行、服从约束并且利用平台设施的软件片段的现有环境。该平台包括硬件体系结构和软件框架,其中该组合可允许客户机和服务器使用数据访问协议来通信。典型平台包括硬件体系结构、操作系统以及运行时库。硬件体系结构指的是物理组件的标识和相互关系,而软件框架指的是其中软件提供通用功能的抽象。具体而言,软件框架(例如,REST API)可以允许访问团块存储中的团块。就此,例如,客户可以在专用平台基础设施上访问针对各应用的数据(例如,团块数据)团块存储。该平台可被实现为分布式云计算基础设施中的计算平台。

通常,云计算平台用于以分布式的方式来存储数据或运行服务应用。计算平台可以跨越包括国家和洲的广泛地理位置。云计算平台可视提供不同类型服务的公共云,不同类型的服务包括计算服务(例如,虚拟机、网站、云服务和移动服务)、数据服务(例如,存储、SQL数据库、SQL报告、表、备份、以及恢复)、网络服务(例如,虚拟网络、话务管理器、数据传递)以及应用服务(例如,媒体服务、服务总线、通知中枢、和多因子认证)。例如,云计算平台提供以供在可接入因特网的数据中心内的机器上运行服务应用和存储数据。

云计算平台组件(例如,结构控制器)进一步负责围绕以下的各种职责:监视、维护和管理计算机资源、网络设备、串行设备和支持结构的底层功能性的功率单元的健康。各种不同类型的云配置可与本发明的各实施例一起实现,因而本领域普通技术人员应当理解并明白,云计算平台的合适结构可被使用且本发明的各实施例不限于本文公开的那些。

平台可支持各服务,这些服务支持对数据的服务。数据访问由若干不同类型的数据访问协议来促进。数据访问协议提供用于计算机内或计算机之间的数据通信的规则。不同类型的数据访问协议提供访问数据时的某些优点。具体而言,SMB协议是优选文件共享协议,且REST协议被频繁用于基于约束的客户机服务器交互。每一协议是用于传递消息以访问数据的良好定义的格式。因而,在各协议被实现为应用编程接口(API)以链接到数据访问服务时,一个协议的API库不可避免地排除其他协议API来运作。就此,常规数据访问协议和API在促进整合文件共享和基于约束的客户机服务器交互方面不是高效的,因为常规数据访问协议和API不能提供对整合SMB和REST功能性的全面支持。另外,传统文件系统访问基于通常复杂且对于安装、配置以及操作而言昂贵的直接附连存储(“DAS”)和存储区域网络(“SAN”)解决方案。在基础层面,没有基于云的平台可用于支持提供基于共享文件访问协议和REST协议的SFA-REST API(“SFA-REST接口”)来访问文件系统的文件服务。。云计算平台上的文件服务可以提供对来自客户机的针对文件系统的并行访问的全面支持,同时利用云计算基础设施的可用性和可伸缩性来支持该平台。

因此,本发明的各实施例提供简单且高效的云计算平台文件服务以及用于基于文件服务来访问文件的方法,其中文件服务包括SFA-REST接口。具体而言,在本文被宽泛定义的SFA-REST接口组件指的是SFA协议和REST协议的功能性的整合实现。就此,SFA-REST接口支持用于访问文件共享的基于SFA的操作,SFA-REST接口部分地基于实现SFA协议的各元素。SFA-REST接口进一步支持用于访问文件共享的基于REST的操作,SFA-REST接口至少部分地基于实现REST协议的各元素。SFA-REST接口可进一步实现在向提供对共享文件的访问的文件服务提供虚拟机、存储、负载平衡、以及联网的云计算基础设施中的平台上。云计算基础设施可独立地支持文件服务,然而在各实施例中,团块服务可以与文件服务并行运行。文件服务和团块服务两者可利用云计算基础设施中可用的特征。

支持整合功能性的SFA-REST接口的示例性实现可被阐示为具有SFA-REST接口的高速缓存组件。将在下文进一步更详细地讨论高速缓存组件。高速缓存组件可以促进确定文件服务资源的多少内容(例如,文件或目录)可被高速缓存在客户机上。文件的基于SFA的高速缓存可被称为SMB租赁,它不同于REST租赁。在下文也更详细地讨论了REST租赁的特征。继续参考SMB租赁,作为示例,在SFA客户机打开文件时,SFA客户机可请求最大高速缓存量(例如,读、写、句柄)。SFA客户机可以传递请求高速缓存的具有操作修饰符的基于SFA的操作。基于打开到该文件的其他句柄的类型和数目,文件服务可以用对以下内容的确定来对客户机作出响应:可对指定文件执行读、写还是甚至用于关闭句柄或打开更多句柄的调用。在文件由第一客户机独占地访问时,该系统可以授予完全高速缓存(读、写以及句柄)。如果第二客户机尝试打开到该文件的句柄,则该系统可能需要中断SMB租赁以确保第一客户机作出的变更对第二客户机是可见的。中断SMB租赁包括与具有SMB租赁的第一客户机通信以在SMB租赁被中断之前将变更转储清除到服务器。高速缓存组件还可在针对SMB租赁下的文件请求基于REST的操作(例如,读或写)时支持中断SMB租赁。

SFA-REST接口的高速缓存组件可被配置成支持现在由于经由SFA客户机和REST客户机对文件系统的并行访问而成为可能的错误路径。作为示例,拥有租赁的客户机在SMB租赁需要被中断时可能无响应。SFA-REST接口可支持相关于对文件的SMB租赁来管理基于SFA的操作和基于REST的操作的整合功能性。例如,用于读或写的基于REST的操作可以在文件在现有SMB租赁下被打开并被高速缓存时请求访问文件。文件可基于具有请求高速缓存的操作修饰符的基于SFA的操作来打开。在这种情况下,基于REST的操作读或写可在SMB租赁被中断时被阻塞。设想了中断SMB租赁可能花一些时间。如此,SFA-REST接口可以在中断SMB租赁花费过长时间的情况下提供超时错误。特定错误代码可被定义并返回给客户机以允许客户机稍后重试基于REST的操作(例如,读或写)。本发明中设想了基于REST的操作通过功能性与经由SFA-REST接口组件支持的基于SFA的操作的任何其他变型和组合。

本发明的各实施例进一步包括基于SFA-REST接口组件开发的模式。该模式支持提供对文件共享的并行的基于SFA和基于REST的访问的文件服务。例如,SFA客户机和REST客户机两者可同时具有对文件共享的访问权。该模式包括多个表,其中这些表包括基于具有SFA协议和REST协议的各元素的SFA-REST接口的字段。该模式进一步允许对文件系统作出快照。快照对文件系统进行备份。快照可以基于写时复制型模式,使得在每次快照时旧版本可在稍后时间被访问。

相应地,在本发明的第一方面,提供了一种用于访问分布式文件系统中的文件的方法。该方法包括接收具有针对分布式文件系统中的文件的操作修饰符的基于SFA的操作。基于SFA的操作是基于文件表述性状态转移(REST)接口来定义的。SFA-REST接口包括SFA协议和REST协议的整合功能性。该方法进一步包括接收针对分布式文件系统中的文件的基于REST的操作,基于REST的操作是基于SFA-REST接口来定义的。该方法还包括使用操作修饰符来执行基于SFA的操作。该方法包括参考操作修饰符来执行基于REST的操作。该方法还包括基于SFA-REST接口来执行基于REST的操作。

在本发明的第二方面,提供了一种具有用于访问数据文件系统的文件服务模式的系统。文件服务模式包括多个表。该多个表存储文件系统中的文件的状态。该多个表包括与SFA-REST接口的各元素相对应的字段。SFA-REST接口包括SFA协议和REST协议的用于访问文件系统中的文件的整合功能性。

在本发明的第三方面,提供了一种用于对文件共享作出快照的计算机实现的方法该方法包括更新包括文件共享的共享表。更新共享表包括向共享表添加一行,该行与文件共享的新版本相关联。该方法还包括向与文件共享相关联的节点传递通知,该通知指示该节点开始对文件共享的新版本进行写入。该方法进一步包括确定该节点正对文件共享的新版本进行写入。该方法还包括更新共享表以指示快照成功完成。

在简要描述了本发明各实施方式的概览之后,以下描述其中可实现本发明的各实施方式的示例性操作环境,以便为本发明各方面提供通用上下文。首先具体参考图1,示出了用于实现本发明的各实施方式的示例性操作环境,并将其概括地指定为计算设备100。计算设备100只是合适的计算环境的一个示例,并且不旨在对本发明的使用范围或功能提出任何限制。也不应该将计算设备100解释为对所示出的任一组件或其组合有任何依赖性或要求。

本发明可以在由计算机或诸如个人数据助理或其他手持式设备之类的其他机器执行的计算机代码或机器可使用指令(包括诸如程序模块之类的计算机可执行指令)的一般上下文中描述。一般而言,包括例程、程序、对象、组件、数据结构等的程序模块指的是执行特定任务或实现特定抽象数据类型的代码。本发明可以在各种系统配置中实施,这些系统配置包括手持式设备、消费电子产品、通用计算机、专用计算设备等等。本发明也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实施。

参考图1,计算设备100包括直接或间接耦合以下设备的总线110:存储器112、一个或多个处理器114、一个或多个呈现组件116、输入/输出(I/O)端口118、输入/输出(I/O)组件120、和说明性电源122。总线110表示可以是一条或多条总线(诸如地址总线、数据总线、或其组合)。虽然为了清楚起见利用线条示出了图1的各框,但是实际上,各组件的轮廓并不是那样清楚,并且比喻性地来说,线条更精确地将是灰色的和模糊的。例如,可以将诸如显示设备等呈现组件认为是I/O组件。而且,处理器也具有存储器。可以认识到,这是本领域的特性,并且重申,图1的图示只是例示可结合本发明的一个或多个实施方式来使用的示例性计算设备。诸如“工作站”、“服务器”、“膝上型计算机”、“手持式设备”等分类之间没有区别,它们全部都被认为是在图1的范围之内的并且被称为“计算设备”。

计算设备100通常包括各种计算机可读介质。计算机可读介质可以是可由计算设备100访问的任何可用介质,而且包含易失性和非易失性介质、可移动和不可移动介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。

计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据的信息的任何方法或技术实现的易失性与非易失性、可移动与不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光学存储、磁带盒、磁带、磁盘存储或其他磁存储设备、或能用于存储所需信息且可以由计算设备100访问的任何其他介质。计算机存储介质将信号本身排除在外。

通信介质通常以诸如载波或其他传输机制之类的已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并且包括任何信息传送介质。术语“已调制数据信号”是指使得以在信号中编码信息的方式来设定或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。上述的任意组合也应包含在计算机可读介质的范围内。

存储器112包括易失性和/或非易失性存储器形式的计算机存储介质。存储器可以是可移动的,不可移动的,或两者的组合。示例性硬件设备包括固态存储器、硬盘驱动器、光盘驱动器等。计算设备100包括从诸如存储器112或I/O组件120等各种实体读取数据的一个或多个处理器。呈现组件116向用户或其他设备呈现数据指示。示例性呈现组件包括显示设备、扬声器、打印组件、振动组件等等。

I/O端口118允许计算设备100逻辑上耦合至包括I/O组件120的其他设备,其中某些设备可以是内置的。说明性组件包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪、打印机、无线设备等等。

参考图2A,描述了描绘适于在本发明的各实施例中使用的示例性云计算分布式基础结构200的框图。一般而言,云计算分布式基础结构200解说了用于经由云计算平台提供服务的环境。云计算基础结构200提供可伸缩、高度可用、以及耐久的服务。例如,存储服务提供按不同类型的存储类型来存储数据的能力。每一存储类型具有优点且多个存储类型可被用在同一应用中。云计算基础结构可以提供服务API以支持团块、队列、表、和文件系统存储类型。具体而言,本发明的各实施例提供支持基于SFA的操作和基于REST的操作以用于对平台上的文件系统的并行服务的文件服务。文件服务使用包括SFA协议和REST协议的整合功能性的SFA-REST接口。SFA-REST接口展示基于SFA协议的文件系统,使得SFA-REST接口允许打开或创建返回到文件系统中的文件的句柄的文件。在句柄被返回时,客户机可以使用该句柄来对文件进行读和写。SFA-REST接口还包括REST协议的允许包括对文件的PUT和GET动作的直接基于REST的操作的各元素。协议组件被整合以共同提供对文件系统的并行访问。具体而言,SFA-REST接口定义SFA协议的基于SFA的操作与REST协议的基于REST的操作之间的交互的规则。SFA-REST接口包括促进基于与每一单独的操作相对应的参数和返回值来执行各种不同操作的基于SFA的API和基于REST的API。作为示例,参考基于SFA的API,创建API可包括文件名作为参数以及状态、文件句柄、文件时间戳、文件大小作为返回值。创建API可允许客户机打开或创建具有文件名的文件。附加参数可控制该文件的不同方面并处置返回值。基于SFA的API进一步支持可被从服务到客户机设置的机会锁命令。在文件被打开或创建时,可以使用基于SFA的创建操作来创建机会锁,并且在某些情况下,服务器可能需要断开机会锁。与支持机会锁、SMB租赁、以及与基于REST的API的交互的基于SFA的API有关的附加细节在下文更详细地讨论。

重要的是要注意,SMB租赁和机会锁可在本文互换地使用,但它们的实现是不同的。具体而言,SMB租赁和机会锁在客户机-访问权交互期间被不同地管理。机会锁可由在同一客户机上运行可断开机会锁的两个进程的单个客户机偶然地断开,而SMB租赁被保护免于SMB租赁中的这样的偶然断开。参考本发明的各实施例,该差异可被按需注意。

参考基于REST的API,基于REST的API支持无状态操作。作为背景,无状态性可以指客户机-服务器通信受如下约束的概念:在各请求之间没有客户机上下文被存储在服务器上。来自任何客户机的每一请求包含对该请求进行服务所需的全部信息,并且会话状态被保持在客户机中或者在各请求之间可根本没有状态被维持在客户机中。就此,各请求之间没有依存关系。此外,针对每一请求,可基于使用客户的存储账户密钥签署请求的规范化版本以及与该请求一起传递所得的签名来认证基于REST的操作,来用相同方式处置针对基于REST的操作的认证,。示例性基于REST的API可以是允许客户机创建文件的创建文件API。创建文件API可具有名称参数和状态返回值。附加示例性API在本文中被包括作为附录。

继续参考图2A,云计算分布式基础结构200一般包括SFA客户机202,REST客户机204,云计算平台206,服务API 208,具有团块212、队列214、表216以及文件系统218的存储210以及网络220,以及其他未示出的组件。网络220可以包括,但不仅限于,一个或多个局域网(LAN)和/或广域网(WAN)。此类联网环境在办公室、企业范围的计算机网络、内联网和因特网中是常见的。因此,此处不对网络226进行进一步的描述。

SFA客户机202和REST客户机204是具有访问由云计算平台206提供的服务的软件或硬件的计算设备。客户机可以包括任何类型的计算设备,诸如例如参考图1所描述的计算设备100。客户机可经由网络220访问云计算平台206。SFA客户机202和REST客户机204可尤其指分别依赖于SFA协议和REST协议来访问云计算平台206上的服务的计算机程序。客户机可以使用服务API 208来具有对不同存储类型的访问权。存储类型包括被设计成存储具有相关联的元数据的大型二进制对象(如文档、图片、视频以及音乐文件)的团块212。队列214是可靠异步消息递送存储类型。表216存储类型提供结构化存储能力以存储占据数万亿字节数据的轻量数据对象。文件共享218提供存储可被共享并从SFA客户机202和REST客户机204并行访问的文件的能力。

转向图2B,具体而言,SFA客户机204和REST客户机204可访问文件服务。SFA-REST接口230包括用于支持文件服务资源240的SFA协议和REST协议的整合功能性。文件服务资源240包括存储账户242、共享244、目录246、以及文件248。具体而言,共享244提供一种组织各文件集合并且还可被安装成主存在云计算平台中的SMB文件共享的方式。文件服务可以基于文件服务API(“SFA-REST接口”)230提供对文件服务资源240的访问,因为SFA客户机202和REST客户机204可同时访问文件服务资源240。SFA-REST接口可包括支持经由HTTP操作来访问文件资源的API。操作可以与资源类型和REST动词相关联。例如,创建共享操作可具有共享资源类型和REST动词PUT,在该操作执行之际在存储账户中创建新共享。本发明的各实施例设想了附加操作。

在各实施例中,操作可以指定要使用的SFA-REST API的版本。例如,x-ms版本可以是被用来指定操作的版本的HTTP报头。如此,用户可以通过设置x-ms版本请求报头来指定他们想要使用操作的哪一版本。当在HTTP报头中标识了版本时,如果存在API的新版本可用,则它将不中断现有代码的功能性。用户可以修改该代码以通过指定x-ms版本HTTP报头调用API的较新版本。

参考图2C,SFA-REST接口230可包括支持SFA协议和REST协议的不同整合功能性的若干不同的接口组件(例如,API)。SFA-REST接口包括数据访问组件250、租赁组件252、高速缓存组件254、时间戳组件256、元数据组件258、属性组件260、字节范围锁组件262、命名和参考组件264以及锁定组件266,以及其他。

参考图2D,本发明的各实施例进一步包括文件服务模式资源270。文件服务模式资源270促进对文件系统的访问。文件服务模式资源270包括具有访问表272、共享表274以及快照组件276的模式。具有访问表272和共享表274的模式提供对具有文件共享、目录以及文件的文件系统的访问。

应当理解,此处所描述的这一和其他安排仅作为示例来阐明。附加于或替代于所示的安排和功能性,可使用其他安排和功能性(例如机器、接口、功能、次序、以及功能聚集),并且可完全省略某些元素。此外,本文所描述的许多功能性是可以实现为分立或分布式组件或结合其他组件的、以及以任何合适的组合和在任何合适的位置的功能实体。此处被描述为由一个或多个实体执行的各种功能可由硬件、固件和/或软件来执行。例如,各种功能可由执行存储在存储器中的指令的处理器来执行。

数据访问组件可以促进对文件系统的访问。数据访问组件包括支持对文件系统的访问的基于SFA的API和基于REST的API。具体而言,基于SFA的API实现句柄,其中数据访问(例如,打开或创建文件)返回该文件的句柄并允许使用该句柄对该文件进行读和写。基于REST的API不支持在SFA协议中的等效句柄功能性。基于REST的API支持对文件进行读和写而无需句柄功能性,但包括基于SFA协议的对应元素。

租赁组件可以促进执行针对共享访问的文件租赁。SFA-REST接口包括促进REST租赁的基于REST的API。REST租赁允许对文件的独占性写共享读访问达某一历时。该历时可以是所定义的时段,例如1分钟,或不确定的时段。SFA-REST接口还包括支持基于文件句柄的共享访问的基于SFA的API。作为示例,在用户使用基于SFA的操作创建或打开文件时,基于SFA的操作可包括操作修饰符。操作修饰符定义修改基于SFA的操作的约束(例如,访问、共享)。约束可以是访问约束,诸如读、写、以及删除,并且约束可以是共享约束,诸如读共享、写共享以及删除共享。文件服务可以基于来自当前打开到该文件的所有其他句柄的操作修饰符是否兼容基于SFA的操作上的当前操作修饰符,确定基于SFA的操作是否应当被执行以提供对文件的访问。

租赁组件实现用于REST租赁的基于REST的API以与打开到文件的文件句柄相类似地运作来访问文件以用于读、写以及删除并从而允许来自其他句柄的共享读。租赁组件执行确认以证实在基于REST的操作获取或续借REST租赁时没有现有租赁,并且可以返回指示由于存在打开的文件的不兼容基于REST的操作的其他句柄或租赁而不允许租赁的差错。如此,基于参考与先前基于REST的操作相关联的租赁或与先前基于SFA的操作相关联的操作修饰符,用于打开文件的基于REST的操作或基于SFA的操作可能失败。

高速缓存组件管理基于REST的操作和具有机会锁的基于SFA的操作如何交互。SMB Oplock(机会锁)是SFA客户机请求以改进性能并减少网络传输的高速缓存机制。这意味着特定文件或目录的最新状态可被高速缓存在SFA客户端上。存在多个Oplock类型,称为SMB租赁类型:读(R):在被获取时,客户机可以从本地高速缓存读取。写(W):在被获取时,客户机可以在本地写而无需将数据转储清除回到SMB服务。句柄(H):在被获取时,客户机在句柄关闭发生时不必通知SMB服务。机会锁在应用使用相同的访问和共享模式持续打开和关闭文件的情况下是有用的。SFA客户机不必立即通知SMB服务每一关闭。以上SMB租赁类型独立于在打开句柄期间指定的访问和共享模式。通常,每当它对文件打开新句柄时,SFA客户机都尝试获取所有租赁类型,而不管访问和共享模式如何。

取决于基于REST的操作,REST请求中断现有SFA客户机机会锁可能是必要的。在写机会锁的情况下,这将需要SFA客户机将经高速缓存的变更转储清除到文件服务。下文是每一类型的机会锁需要中断的一些原因:每当发出写REST操作(例如,PutRange)时,读(R)机会锁需要中断。每当发出读REST操作(例如,GetBlob)时,写(W)机会锁需要中断。每当客户机因为文件服务不需要句柄打开就能使Delete(删除)请求成功而发出删除REST操作时,句柄(H)机会锁需要中断。

中断机会锁包括潜在地将SMB高速缓存客户机变更转储清除,并且这可以造成REST服务操作响应时间的额外延迟,或者可以造成REST操作失败且具有状态码408(请求超时)和错误码标识符(例如,ClientCacheFlushDelay)。一种示例性场景包括其中需要机会锁中断和转储清除且REST客户机体验到延迟。在这一场景中,SFA客户机打开文件,获取RWH机会锁并将数据写在本地。REST客户机发送GetFile(获取文件)请求。文件服务中断写(W)机会锁并将RH机会锁留给客户机。SFA客户机将其高速缓存的数据转储清除到文件服务并对机会锁中断进行确收。文件服务处理GetFile请求,并用所请求的数据作出响应。在以上示例中,REST客户机将体验到由机会锁中断造成的延迟以及SFA客户机将其数据转储清除到文件服务所花的时间。任何后续GetFile请求将不体验到任何附加延迟,因为写(W)机会锁已经中断。

另一示例性场景包括其中需要机会锁中断但REST客户机没有体验到延迟。在这一场景中,SFA客户机已经具有RH机会锁(续上一示例)。REST客户机发出PutRange请求。文件服务向SFA客户机发送机会锁中断请求但它不等待响应。文件服务处理PutRange请求。在以上示例中,虽然需要机会锁中断,但REST操作没有体验到任何附加延迟,因为在中断读机会锁时不需要响应。

基于已具有在同一文件上打开的句柄的SFA客户机的机会锁状态,文件服务可具有与每一基于REST的操作相对应的不同行为。阻塞机会锁中断指的是以下事实:文件服务可能必须等待中断成功的确收,而在非阻塞的情况下,文件服务不必等待。在需要阻塞机会锁中断的情况下,并且如果中断在指定请求超时内且达30秒没有成功,则REST操作可能失败且具有状态码408(请求超时)和错误码标识符(例如,ClientCacheFlushDelay)。

此外,作为示例,DeleteFile(删除文件)请求还将需要中断机会锁句柄(H)租赁,这被执行以确保在从REST客户机发出DeleteFile时,没有从SMB侧打开的文件句柄。如果存在共享违反,则该请求将失败且具有状态码409(冲突)和错误码标识符(例如,SharingViolation)。

时间戳组件可用于标识事件何时发生。具体而言,时间戳组件可以是多时间戳实现,使得SFA协议和REST协议的整合功能性可通过SFA-REST接口是可用的。基于REST的API提供对乐观并发性模型的支持。乐观并发性模型基于准确的时间戳。在乐观并发性模型中,在文件服务接收到基于REST的操作来访问文件时,文件服务生成并返回作为精确时间戳的实体标签(“ETAG”),该精确时间戳被保证基于对文件的每一次写来递增。ETAG可作为条件报头被传递回后续基于REST的操作,诸如读或写,该条件报头将使得基于REST的操作在各调用之间文件已改变的情况下失败或者在ETAG没有改变的情况下失败。基于SFA的API没有实现乐观并发性模型。相反,时间戳的更新是在文件句柄被关闭时执行的。另外,传统文件系统通常允许SFA客户机将文件上的时间戳显式地设置成任意时间。

时间戳组件支持每一文件上的5个不同时间戳。这些时间戳中的四个可基于基于SFA的API。这些时间戳包括创建时间、最后修改时间、最后写时间、以及最后访问时间。这四个时间戳可以使用与SMB协议相同的语义来实现。第五时间戳是可被用于乐观并发的ETAG。第五时间戳没有通过基于SFA的API来展示。所有五个时间戳是通过基于REST的API可用的。就此,时间戳可以基于5个不同时间戳来支持基于SFA的操作和基于REST的操作之间的整合功能性。具体而言,因为基于REST的操作依赖于乐观并发性模型,所以在文件上执行基于SFA的操作时,ETAG时间戳需要被更新。如此,在执行基于SFA的操作时,SFA-REST接口支持更新ETAG连同其他时间戳。在具有条件基于REST操作的示例性场景中,如果已使用基于SFA的操作更新了文件,则后续条件基于REST的操作需要确定经更新的ETAG存在以确认条件基于REST的操作是否可被执行。

元数据组件可被配置成支持与数据内容有关的描述性信息。基于REST的API允许任意名称和值对的小集合与文件相关联。基于SFA的API具有可与文件相关联的扩展属性。名称约束基于比典型REST协议更加受限(长度和有效字符)的SMB协议。为使SFA协议和REST协议兼容,基于REST的API已经使用元数据可用的有限名称来实现。

命名和参考组件可以支持访问文件服务资源。可基于名称或参考句法来访问文件服务资源。存储账户可包含零个或更多个共享。共享包含属性、元数据以及零个或更多个文件或目录。目录可包含属性以及零个或更多个文件或目录。文件可以是包括二进制数据、属性以及元数据的任何单个实体。

参考共享名称,文件服务共享名称规则可以在SFA-REST接口的API中比SFA协议更加受限地实现。如此,用于团块服务的API和REST接口的API可以共享相似命名约定以用于团块容器和文件共享。

参考目录名和文件名,SFA-REST接口进一步支持对大小写不敏感且保留大小写的API。所允许的文件和目录名长度是针对基于REST的API中的每一单独的分量(斜杠之间的部分)来限定的,并且基于REST的API的路径名的总长允许比REST协议中指示的更长和更深的名称。名称和参考组件包括不再支持REST协议中通常合法的字符(因为这些字符现在不合法)的基于REST的API,并且在REST中通常不合法的SFA协议字符现在在基于REST的API中是合法的。在一个实施例中,REST协议中不支持但现在在名称和参考组件的基于REST的API中得到支持的字符可在基于REST的API中被换码(escape)。将字符换码包括使用十六进制码对所选字符进行编码。本发明的各实施例设想了对不合法REST协议字符进行编码以使它们在基于REST的API中合法的其他变型和组合。

路径名包括由正斜杠字符“/”分开的一个或多个路径名分量(目录或文件名)。最后路径名分量之外的所有路径名分量可以表示目录。最后路径名分量表示文件的目录。路径名的长度可以不超过预定数目(例如,1024)个字符。路径名可包括由正斜杠字符“/”分开的一个或多个路径名分量。子目录深度可被配置成不超过预定义深度(例如,250)。文件不能与目录共享相同路径且反之亦然,即同一名称不能被用于共享同一父目录的文件或目录。示例:具有名称“数据”的文件和目录不能存在于同一父路径之下。

用于共享或文件资源的元数据可被存储为与资源相关联的名-值对。目录可被实现而没有元数据。元数据名称可以基于用于C#标识符的命名规则。元数据名称可以保留用来创建它们的大小写,但在被设置或读取时是大小写不敏感的。如果具有相同名称的两个或更多个元数据报头被提交用于一资源,则文件服务返回状态码400(Bad Request(坏请求))。

SFA-REST接口可以支持用于共享、目录或文件的统一资源标识符(“URI”)参考。每一文件服务资源可具有参考资源自身的对应的基本URI。对于存储账户,基本URI可只包括该账户的名称。对于共享,基本URI可包括账户的名称以及共享的名称。对于目录,基本URI可包括账户的名称、共享的名称、以及该目录的路径。对于文件,基本URI包括账户的名称、共享的名称、以及该文件的路径。URI可唯一性地实现URI。因为每一账户名称是唯一性的,所以两个账户可具有带相同名称的共享。然而,在给定存储账户内,每一共享可以用唯一性名称来实现。给定共享或目录内的文件也可具有该共享或目录内的唯一性名称。尝试创建具有违反命名规则的名称的共享、目录或文件,该请求可以失败且具有状态码400(Bad Request)。

字节范围锁组件可以支持用于SFA-REST接口的字节范围锁。基于SFA的API可允许SFA客户机请求对文件的范围的独占性访问以及对文件的范围的读访问。这确保在该范围内没有其他写,但允许诸读取者。字节范围锁组件可被配置成当存在与SFA字节范围锁的逻辑的冲突时,拒绝通过基于REST的API进行读或写。基于SFA的API允许字节范围锁管理对文件的诸区域的读和写访问,基于REST的API可不将这一能力用于特定实现。如此,相反,基于REST的API可能需要对整个文件的写访问。这还意味着如果SFA客户机具有该文件内的任何范围上的锁,则基于REST的操作可能失败。然而,基于REST的操作可以用支持字节范围锁的基于REST的API来实现。

访问组件负责支持基于两个不同协议端点的对文件服务的访问。访问组件提供用于SFA协议的端点点和用于REST协议的分开的端点。就此,用于SFA客户机的请求和响应是经由SFA协议端点来传递的,且用于REST客户机的请求和协议是从REST协议端点传递的。

锁定组件负责管理文件锁。锁定组件被配置成处理基于SFA的操作并使用操作修饰符执行该操作并且基于参考操作修饰符来处理基于REST的操作。操作修饰符可以是指示访问模式和共享模式的锁修饰符。作为示例,SFA客户机可以装载共享作为文件共享。使用SFA-REST接口,SFA客户机可以将文件系统锁机制用于锁定组件管理对共享文件的访问。用于访问文件的基于SFA的操作可包括操作修饰符。通过锁定组件,操作修饰符可以是请求整个文件访问共享来用于读、写以及删除或字节范围锁以管理对单个文件内的诸区域的读和写访问的锁修饰符。在SFA客户机打开文件时,用于打开文件的基于SFA的操作包括具有文件访问和共享模式的锁修饰符。以下文件访问锁修饰符通常由SFA客户机使用:读:打开文件以只用于读。写:打开文件以只用于写访问。读/写:以读/写许可来打开文件。删除:打开文件以只用于删除访问。

以下文件共享锁修饰符通常由SFA客户机使用:无:拒绝当前文件的共享。打开该文件的任何请求将失败,直至该文件被关闭。共享读:允许该文件的后续打开以用于读。如果这一标志未被指定,则打开该文件以用于读的任何请求将失败,直至该文件被关闭。共享写:允许该文件的后续打开以用于写。如果这一标志未被指定,则打开该文件以用于写的任何请求将失败,直至该文件被关闭。共享读/写:允许该文件的后续打开以用于读或写。如果这一标志未被指定,则打开该文件以用于读或写的任何请求将失败,直至该文件被关闭。共享删除:允许文件的后续删除。如果这一标志未被指定,则删除该文件的任何请求将失败,直至该文件被关闭。

SFA客户机共享可通过以下示例被进一步解说:例如,没有共享违反的文件打开:客户机A使用FileAccess.Read和FileShare.Write打开文件(在打开时拒绝后续读/删除)。客户机B使用FileShare.Write使用FileAccess.Read打开文件(在打开时拒绝后续写/删除)。结果:这是允许的,因为文件访问和文件共享模式之间没有冲突。

由于文件访问的共享违反:客户机A使用FileShare.Write和FileAccess.Read打开文件(在打开时拒绝后续写/删除)。客户机B使用FileShare.Write使用FileAccess.Write打开文件(在打开时拒绝后续读/删除)。结果:客户机B遇到共享违反,因为它指定被客户机A先前指定的共享模式所拒绝的文件访问。

由于共享模式的共享违反:客户机A使用FileAccess.Write和FileShare.Write打开文件(在打开时拒绝后续读/删除)。客户机B使用FileShare.Write使用FileAccess.Read打开文件(在打开时拒绝后续写/删除)。结果:客户机B遇到共享违反,因为它指定拒绝对仍然打开以用于写访问的文件的写访问的共享模式。

具有REST的操作可不使用操作修饰符来打开文件。然而,基于REST的操作尊重为SFA客户机上打开的任何文件指定的共享模式。与SMB共享模式交互的基于REST的操作可通过以下示例来进一步解说。REST获取文件共享违反:SFA客户机使用FileAccess.Read和FileShare.Write打开文件(在打开时拒绝后续读/删除)。REST客户机随后对文件执行Get File((REST API,获取文件)操作(从而使用在上表中指定的FileAccess.Read)。结果:REST客户机的请求失败且具有状态码409(冲突)和错误码SharingViolation(共享违反),因为SFA客户机在拒绝读/删除访问时仍然使文件打开。

REST安置范围共享违反:SFA客户机使用FileShare.Write和FileAccess.Read打开文件(在打开时拒绝后续写/删除)。REST客户机随后对文件执行Put Range((REST API,安置范围)操作(从而使用在上表中指定的FileAccess.Write)。结果:REST客户机的请求失败且具有状态码409(冲突)和错误码SharingViolation(共享违反),因为SFA客户机在拒绝写/删除访问时仍然使文件打开。

设想了SFA客户机共享模式可具有与基于REST的操作有关的实现。取决于在SFA客户机打开文件时指定的共享模式,文件服务返回具有错误码Sharing Violation的冲突(例如,状态码409)是可能的。文件由于文件在SFA客户机上被打开而返回共享违反。作为示例,SFA客户机文件共享模式可以是共享读,它拒绝写和删除。如此,创建文件、设置文件属性、设置文件元数据、删除文件、以及安置范围基于REST的操作失败且具有共享违反指示。文件服务可由于文件在SFA客户机上打开而返回共享违反。

删除组件负责管理删除。删除组件被配置成处理基于SFA的删除操作并使用操作修饰符执行该操作并且基于参考操作修饰符来处理基于REST的删除操作。在SFA客户机打开文件以用于删除时,它将该文件标记为待删除,直至该文件上的所有其他SFA客户机打开句柄被关闭。在文件被标记为待删除时,文件上的任何基于REST的操作将返回状态码冲突与错误码标识符(例如,SMBDeletePending)。状态码404未被返回,因为SFA客户机在关闭文件之前移除待决删除标志是可能的。换言之,在文件已被移除时,状态码404(未找到)是预期的。此外,在文件处于SMB待删除状态时,它可不被包括在List Files(列出文件)结果中。设想了基于REST的删除文件和删除目录操作被原子地提交并且不导致待删除状态。

属性组件被配置用于管理与基于REST的操作的文件属性暗示。使用基于SFA的操作的SFA客户机可以读和设置包括存档、只读、隐藏、以及系统的文件属性。如果文件或目录设置了只读属性(即使它在SMB中以读共享来打开),则尝试对文件进行写的任何基于REST的操作可能失败且具有状态码412(前提失败)和错误码标识符(例如,ReadOnlyAttribute(只读属性))。这些基于REST的操作可包括:创建文件、设置文件属性、设置文件元数据、以及安置范围。此外,设想了文件属性可不从REST客户机设置或读取。一旦使得文件是只读的,REST客户机就将不能对文件进行写,直至SFA客户机移除只读属性。

继续参考图2D,文件服务支持文件服务模式资源270。相应地,SFA-REST接口促进基于该模式来访问文件。SFA客户机或REST客户机可各自分别生成基于SFA的操作或基于REST的操作,这些操作使用基于SFA-REST接口实现的模式来访问文件系统。就此,各模式字段包括SFA-REST接口的支持对文件系统的并行的基于SFA和基于REST的访问的诸元素。

该模式可以是逻辑模式。设想了该模式的物理表示可以不同以考虑底层数据库的细微差别。该模式的物理表示也可被更改以向后兼容。该模式可以基于多个表。在一个实现中,该模式包括8个文件访问表和共享表。主表可以是命名空间表,其中文件和目录是基于它们的名称来存储的。命名空间表可包括共享的名称。命名空间表可以是分层的,原因在于文件和目录是作为它们的父目录的子目录来存储的。文件或目录的完整路径是基于命名空间表中的多个查找来确定的。文件可包括表中的ID,它被用来在另一访问表中查找与文件有关的信息。

该模式可进一步包括信息表。信息表可被用来存储与文件的内容有关的信息。该信息表不存储文件本身的内容。这一表的键是文件ID。

该模式还可支持页范围表。页范围表可被用来存储所存储的文件的实际数据。该页范围表的键包括文件ID和作为所存储的页范围的大小的偏移。

该模式可进一步支持句柄表。句柄表可被用来表示在文件上打开的句柄。句柄表支持打开或创建返回到文件系统中的文件的句柄的文件。在句柄被返回时,客户机可以使用该句柄来对文件进行读和写。

该模式还支持租赁表。租赁表可被用于支持基于操作修饰符来提供文件高速缓存的SMB租赁。具体而言,租赁表可被用来基于与对应的文件相关联的基于SFA的操作的操作修饰符来存储租赁状态。

两个附加访问表可被配置在该模式中以用于存储针对目录的变更通知设置和事件。这两个表可以是变更通知表和变更通知事件表。具体而言,变更通知表可以在操作指示检测目录内的变更时被更新。每次对文件执行写操作,执行对应操作以检查变更通知表来确定数据是否需要被录入事件表。

字节锁表可被用来存储文件的字节范围锁。字节范围锁可通过文件服务来获取。字节范围锁指的是其中SFA客户机请求对文件的某一范围的独占性访问以及对文件的某一范围的读访问的场景。这确保在该范围内没有其他写,但允许诸读取者。

继续参考图2D,多个负载平衡器(未示出)可针对跨云计算基础结构的各分区来实现。原子地执行的事务是在单个分区内执行的。作为背景,原子事务指的是全部发生或全不发生的数据库操作序列。原子性的保证防止对数据库的更新只部分地发生,部分地发生与彻底拒绝整个序列相比会造成更大的问题。原子性指的是不可分割性和不可缩减性。在一个实施例中,该模式在共享级被分割。就此,共享上的事务可以在单个分区内实现。该模式可进一步允许增加作为分区键的一部分的键的数目,使得模式可被存储在多个分区中。这可允许单个共享由多个后端节点来服务,这造成更好的性能。

文件服务支持实现快照以快速且容易地备份文件存储的快照组件。该模式促进快照。该模式中的共享表支持快照操作。具体而言,新变更可按写时复制型模式来被写入,使得旧版本在每次快照时可在稍后时间被访问。在拍摄快照之前的正常状态中,共享表可具有用于每一共享的条目。共享表模式包括该共享的访问许可、一行是有效还是无效的指示、最后修改时间、以及期满事件、以及促进执行快照操作的快照版本。

共享快照可以基于3个操作。更新操作更新共享表以指示快照将被创建。创建更新操作包括添加具有快照版本标识符的新行并使用快照版本标识符更新该行以包括该快照的时间戳。此时,如果存在对该共享进行写入的任何客户机,则该写入以快照版本0继续。如果快照失败,则该操作在它1天后期满时清理快照版本0。写通知操作包括通知支持共享开始对该共享的新快照版本进行写入的节点。同样,如果发生失败,则这将导致对旧快照版本的写入,并且清理可稍后发生。第三操作是更新共享表以指示快照成功完成的完成更新操作。文件服务可以向客户机发送快照成功完成的通知。如果变更不能在表上提交,则客户机将向版本1(它也是有效的)写入。

快照组件进一步支持垃圾收集。可以在快照操作失败之际对共享表执行垃圾收集。例如,具有失败的快照版本的行可在预定义时段之后自动清理自己。同样,快照组件创建另一快照,该表可被更新,并且对共享进行写入的节点可以对快照版本2进行写入。

快照组件可进一步支持原子快照、非原子快照、以及跨共享原子快照。快照组件可以与各节点通信以创建原子快照。每一节点能够修改文件模式的分区。具体而言,每一节点能够原子地修改一分区。快照组件可以将通知发送给各节点。原子快照过程包括两个通知。阻塞通知指导一个或多个节点阻塞对所选分区的写入。阻塞通知可包括阻塞对所选分区的写入的固定时间量。写入通知指导一个或多个节点开始对新快照版本进行写入。如果写入操作因为全部一个或多个节点不能在固定时间量内开始对新版本进行写入而不能完成,则快照组件可使该快照失败。快照组件可以在失败之际尝试另一快照操作。新快照操作可以创建新快照作为新版本。

快照组件还可促进创建非原子快照。非原子快照可以使用单个写通知来创建。快照组件可以传递指导一个或多个节点开始对新快照版本进行写入的通知。快照组件随后在一个或多个节点全部使用快照的新版本时可更新共享表。

快照组件还可促进创建跨共享原子快照。跨共享原子快照可以指可跨多个共享扩展的快照。快照组件执行用于执行跨共享原子快照的操作序列。快照组件可以向共享的表添加作为快照的一部分的新行。共享组件随后传递指导与快照的各共享相对应的一个或多个节点来开始对新快照版本进行写入的写入通知。快照组件随后可更新共享表。SFA客户机或REST客户机可以基于与快照版本相关联的时间戳来引用快照版本。相同时间戳可被指派给来自多个共享的诸快照版本。就此,具有相同时间戳的快照版本的诸共享可被建设性地链接。

现在转向图3,提供了示出用于访问分布式文件系统中的文件的方法300的流程图。最初,在框300,接收具有针对分布式文件系统中的文件的操作修饰符的基于SFA的操作。基于SFA的操作是基于文件表述性状态转移(REST)接口来定义的。SFA-REST接口包括SFA协议和REST协议的整合功能性。在框310,针对分布式文件系统中的文件的基于REST的操作,基于REST的操作是基于SFA-REST接口来定义的。在框330,使用操作修饰符执行基于SFA的操作。在框340,参考操作修饰符以执行基于REST的操作。基于SFA-REST接口执行基于REST的操作。

现转至图4,提供了解说用于对文件共享进行快照的方法400的流程图。最初,在框410,更新包括文件共享的共享表。更新共享表包括向共享表添加一行,该行与文件共享的新版本相关联。在框420,将指导节点开始对文件共享的新版本进行写入的通知传递给与该文件共享相关联的节点。在框430,确定该节点正对文件共享的新版本进行写入。在框440,更新共享表以指示快照成功完成。

转向图3,提供了示出用于访问分布式文件系统中的文件的方法500的流程图。最初,在框510,从SFA客户机接收针对分布式文件系统中的文件的基于SFA的操作。该基于SFA的操作具有指示该基于SFA的操作的机会锁的操作修饰符。该基于SFA的操作是基于SFA-REST接口来定义的。在框520,基于参考基于SFA的操作的操作修饰符来对文件执行基于REST的操作。在框530,从REST客户机接收针对分布式文件系统中的文件的基于REST的操作。基于REST的操作是基于SFA-REST接口来定义的。在框540,基于参考基于SFA的操作的操作修饰符来对文件执行基于REST的操作。

图中的流程图可通过示例来被进一步描述。如上所述,SMB机会锁(Oplock)是SFA客户机可请求以改进性能并减少网络传输的高速缓存机制。如此,特定文件或目录的最新状态可被高速缓存在SMB客户端上。存在多个机会锁类型,称为SMB租赁类型:读(R):在被获取时,客户机可以从本地高速缓存读取;写(W):在被获取时,客户机可以在本地写而无需将数据转储清除回到SMB服务;句柄(H)在被获取时,客户机在句柄关闭发生时不必立即通知SMB服务。这在应用使用相同的访问和共享模式持续打开和关闭文件的情况下是有用的。重要的是注意到,以上SMB租赁类型独立于所指定的访问和共享模式。通常,每当它对文件打开新句柄时,SMB客户机都尝试获取所有租赁类型,而不管访问和共享模式如何。

取决于所调用的REST操作,请求中断现有机会锁可能是必要的。在写机会锁的情况下,SMB客户机必须将所高速缓存的变更转储清除到文件服务。在此是每一类型的机会锁需要中断的一些情况:每当发起写操作(例如,Put Range(安置范围))时,读(R)机会锁需要中断;每当发起读操作(例如,Get File(获取文件))时,写(W)机会锁需要中断;每当客户机发出删除操作时,句柄(H)机会锁需要中断,因为文件服务需要如果删除操作要成功则没有句柄能打开。在REST操作面对与现有SMB句柄(参见上表)的共享违反以验证句柄仍然实际上被客户机上的应用打开时,句柄机会锁也被中断。

中断机会锁可需要转储清除所高速缓存的SMB客户机变更,这可造成操作响应时间的延迟或可使操作失败且具有状态码408(请求超时)和错误码ClientCacheFlushDelay(客户机高速缓存转储清除延迟)。下文是其中机会锁被中断的一些场景:

在第一示例中,需要机会锁中断和SMB客户机转储清除并且REST客户机体验到延迟:(1)SMB客户机打开文件,获取RWH机会锁并将数据写在本地。(2)REST客户机发送Get File请求。(2)(i)文件服务中断写(W)机会锁,从而使客户机留有RH机会锁。(2)(ii)SMB客户机将其高速缓存的数据转储清除到文件服务并对机会锁中断进行确收。(2)(iii)文件服务处理Get File请求,并用所请求的数据作出回应。在以上示例中,REST客户机可体验到由机会锁中断造成的延迟以及SMB客户机将其数据转储清除到文件服务所花的时间。注意,对Get File的后续调用将不体验到任何附加延迟,因为写(W)机会锁已经被中断。

在第二示例中,需要机会锁中断但REST客户机没有体验到延迟。(1)SMB客户机获取了RH机会锁。(2)REST客户机发送Put Range请求。(2)(i)文件服务向SMB客户机发送机会锁中断请求但不等待响应。(2)(ii)文件服务处理Put Range请求。在以上示例中,虽然需要机会锁中断,但Put Range请求将不会体验到任何附加延迟,因为在中断读机会锁时不需要响应。

存在若干操作,其中文件服务针对每一REST的操作的行为是基于已获取同一文件上的句柄的SMB客户机的机会锁状态的,并且假定SMB句柄访问和共享不与REST操作相冲突。如果存在冲突,则句柄机会锁也被中断以确保句柄真正仍然在客户机上打开。在阻塞机会锁中断的情况下,文件服务可等待中断成功的确收。在非阻塞机会锁中断的情况下,它不必等待。

在需要阻塞机会锁中断的情况下,如果中断在指定请求超时内或在30秒内(以先到者为准)没有成功,则REST存在将失败且具有状态码408(请求超时)和错误码ClientCacheFlushDelay。设想了Delete File(删除文件)请求也需要指定机会锁句柄(H)租赁。这确保在REST客户机调用Delete File时,任何文件句柄仍然实际上被SMB客户机上的应用打开。如果存在共享违反,则该请求失败且具有状态码409(冲突)和错误码SharingViolation(共享违反)。

转向图6,提供了示出用于访问分布式文件系统中的文件的方法500的流程图。最初,在框610,从SFA客户机接收针对分布式文件系统中的文件的基于SFA的操作。该基于SFA的操作具有指示该基于SFA的操作的访问共享模式的操作修饰符。该基于SFA的操作是基于SFA-REST接口来定义的。在框620,基于参考基于SFA的操作的操作修饰符来对文件执行基于REST的操作。在框630,从REST客户机接收针对分布式文件系统中的文件的基于REST的操作。基于REST的操作是基于SFA-REST接口来定义的。在框640,基于参考基于SFA的操作的操作修饰符来对文件执行基于REST的操作。

图中的流程图可通过示例来被进一步描述。在SMB客户机使用FileShare.Write(而非FileShare.Read,它将意味着其他客户机同时被允许读该文件)打开文件时,可发生REST获取文件共享违反。REST客户机随后对文件执行Get File((REST API)操作(从而使用在上表中指定的FileAccess.Read)。这导致REST客户机的请求以状态码409(冲突)和错误码SharingViolation(共享违反)失败,因为SMB客户机在拒绝读/删除访问时仍然使文件打开。

参考表1,在接收到基于REST的操作时,可确定若干不同SMB访问模式,以使得基于访问模式来执行基于REST的操作。

表1

表2

如上表1所示,列出文件(List Files,REST API)、获取文件属性(Get File Properties,REST API)以及获取文件元数据(Get File Metadata,REST API)没有操作SMB文件内容且不需要对文件的读访问(即,即使SMB客户机使文件打开用于独占性读访问,这些操作也仍将成功)。

进一步设想了取决于在SMB客户机打开文件时指定的共享模式,REST访问返回状态码409(冲突)与错误码SharingViolation是可能的,如表2中描述的。

参考各具体实施例描述了本发明的各实施例,各具体实施例在所有方面都旨在是说明性的而非限制性的。不偏离本发明范围的情况下,各替换实施例对于本发明所属领域的技术人员将变得显而易见。

从前面的描述可以看出,本发明很好地适用于实现上文所阐述的所有目的和目标,并且具有对于该结构是显而易见且固有的其他优点。

可以理解,某些特征和子组合是有用的,并且可以在不参考其他特征或子组合的情况下使用。这由权利要求所构想的,并在权利要求的范围内。

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