基于令牌的文件操作的制作方法

文档序号:6496201阅读:174来源:国知局
基于令牌的文件操作的制作方法
【专利摘要】描述了允许基于令牌的文件操作的各实施例。客户机可以请求根据文件访问协议格式化的特定卸载文件操作。文件操作可以是卸载读出操作或卸载写入操作。在卸载读出操作中,客户机请求将数据从所存储的文件或其部分中逻辑地读出。作为响应,文件服务器提供响应,该响应包括表示逻辑地读出的数据的令牌。在某些实施例中,如果出于某种原因,文件服务器无法提供表示所请求的全部数据的令牌,则它可以返回具有表示少于该全部的数据的令牌的响应。该令牌随后可被客户机在后续的卸载写入操作中使用。在各实施例中,令牌表示可以跨各服务器和客户机可靠和安全地使用的不可变数据。
【专利说明】基于令牌的文件操作
[0001]背景
[0002]在复制大量数据的传统方式中,将数据从源文件读出到本地RAM中,并随后将这些相同的字节从RAM写回到目的地文件。这个过程需要数据行进包括本地RAM在内的路线,即使该复制的完成没有固有地要求该数据曾经处于本地RAM中。当在最终的源和最终的目的地之间存在该数据可采用的可信的较快速路线时,通过本地RAM的弯路不是必须的。这个问题在可信的较快速路线与经由本地RAM的路线之间的速度差异较大时更为严重。当前,某些文件服务器(诸如,服务器消息块(SMB)文件服务器)允许客户机将源文件的各范围复制到目的地文件的各范围中。然而,存在大量限制,诸如关于在文件服务器上打开的各文件之间复制数据的限制。同样,SMB文件服务器仅允许客户机发出指定源范围和目的地范围两者的单个命令。通常,客户机代码结构将被设置为单独地使用读出和写入来实现复制,这与SMB文件服务器提供的用于复制数据范围的当前方式不一致。
[0003]各实施例正是对于这些和其它考虑事项而作出的。而且,尽管讨论了相对具体的问题,但是应当理解,各实施例不应被限于解决本【背景技术】中所标识的具体问题。
[0004]概述
[0005]提供本概述来以简化形式介绍将在以下详细描述部分中进一步描述的一些概念。本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
[0006]描述了允许基于令牌的文件操作的各实施例。这些实施例供客户机与文件服务器建立会话。该会话可以使用任何文件访问协议来建立,一个示例包括服务器消息块(SMB)协议。在建立了会话之后,客户机可以请求根据该文件访问协议来格式化的专用卸载文件操作。该文件操作可以是读出操作或写入操作。在卸载读出操作中,客户机请求将从文件中读出的文件数据存储在该文件服务器可访问的文件存储系统中。回过来,文件服务器将提供包括表示该文件数据的令牌的响应。在某些实施例中,在出于某些原因文件服务器无法提供表示全部文件数据的令牌的情况下,它可以返回具有表示少于全部文件数据的令牌的响应。令牌随后可被客户机用在后续的卸载写入操作或(例如,随后获取该令牌所表示的数据应变得必要的)其他相关操作中。在各实施例中,这些令牌表示可以跨各服务器和客户机可靠并安全地使用的不可变数据。
[0007]各实施例可被实现为计算机进程、计算系统、或者诸如计算机程序产品或计算机可读介质等制品。计算机程序产品可以是计算机系统可读并编码了用于执行计算机进程的指令的计算机程序的计算机存储介质。计算机程序产品还可以是计算系统可读并编码了用于执行计算机过程的指令的计算机程序的载体上的传播信号。
[0008]附图简述
[0009]参考以下附图描述非限制性和非穷尽的实施例。
[0010]图1示出了可用于实现各实施例的系统。
[0011]图2示出了根据某些实施例的使用文件访问协议来参与基于令牌的文件操作的各客户机和服务器的框图。[0012]图3示出了根据某些实施例的用于处理卸载文件操作的操作流程。
[0013]图4示出了根据某些实施例的用于处理卸载读出请求的操作流程。
[0014]图5示出了根据某些实施例的用于处理卸载写入请求的操作流程。
[0015]图6示出了根据某些实施例的用于请求卸载文件操作的操作流程。
[0016]图7示出了适于实现各实施例的计算环境的框图。
[0017]详细描述
[0018]以下将参考形成本发明一部分并示出各具体示例性实施例的附图更详尽地描述各个实施例。然而,各实施例可以以许多不同的形式来实现,并且不应将其解释为限制此处所阐述的各实施例;相反地,提供这些实施例以使得本公开变得透彻和完整,并且将这些实施例的范围完全传达给本领域普通技术人员。各实施例可按照方法、系统或设备来实施。因此,这些实施例可采用硬件实现形式、全软件实现形式或者结合软件和硬件方面的实现形式。因此,以下详细描述并非是限制性的。
[0019]图1示出了可用于实现某些实施例的系统100。系统100包括客户机102和104以及服务器106。客户机102和104通过网络108与服务器106通信。服务器106存储通过客户机102和104上的应用来访问的信息。客户机102和104建立与服务器106的会话以访问该服务器106上的信息。尽管在图1中,仅有客户机102和104被示为与服务器106通信,但是在其他实施例中,可以存在两个以上客户机访问来自服务器106的信息。
[0020]在各实施例中,客户机102和104上的各应用请求来自文件系统的对该应用透明的文件信息。这些文件信息是从服务器106上的文件系统中获取的。在一实施例中,服务器106上的这样的文件系统是远程文件系统。在另一实施例中,服务器106上的文件系统是分布式文件系统。根据此处所公开的各实施例可以使用多种类型的文件系统,而不背离本公开的精神和范围。此外,虽然未被示出,但在某些实施例中,取代单个服务器106,该服务器可以是例如多个服务器中作为服务器群集的一部分的一个服务器。在其他实施例中,该服务器可以是多个服务器中不作为服务器群集的一部分的一个服务器。多个文件服务器在这样的实施例中为客户机102和104提供信息(例如文件信息)的冗余性和高可靠性。
[0021]在一个实施例中,客户机102和104可以发送要存储在服务器106上的远程文件系统中的各文件执行的多个文件操作。客户机102和104使用文件访问协议来格式化对要对这些文件执行的文件操作的请求。文件访问协议可以是任何合适的协议,诸如网络文件系统(NFS)或服务器消息块(SMB)协议的一个版本。根据某些实施例,客户机除了发送常规的读出文件操作和写入文件操作之外,还可以请求卸载读出操作和卸载写入操作,这些操作是基于令牌的操作。如以下更详细描述的,卸载文件操作允许大量数据被客户机102和104移动,而无需通过网络将实际的数据转移到客户机102或104任一上的本地RAM中。
[0022]为了示出一个实施例,客户机102可以发送建立与服务器106的会话的请求。例如,客户机102可以使用服务器消息块(SMB)协议的一个版本建立与服务器106的会话以访问存储在服务器106上的文件系统。会话的建立可以涉及对在客户机102和服务器106之间传输的多个协商请求和响应的交换。在SMB协议的各版本中,存在专门定义的协商分组,该专门定义的协商分组被用来协商会话期间将要使用的协议的确切版本以及就客户机(例如,102)和服务器(例如,106) 二者的能力对彼此作广告。在一个实施例中,协商分组可以包括服务器106可以处理基于令牌的文件操作(B卩,卸载读出和卸载写入命令)的指示。这允许客户机知道它可以在需要的情况下请求来自服务器的卸载文件操作。继续以上的示例,在建立了会话之后,客户机102可以将根据SMB协议格式化的消息发送给服务器106,以便在服务器106上的文件系统中打开文件。该服务器可以用针对该文件打开的句柄来作出响应。客户机102可以随后请求根据SMB协议格式化的卸载读出操作,以请求来自该文件的文件数据。在一实施例中,客户机以卸载读出操作来请求来自该文件的一部分的数据。该卸载读出操作请求是基于令牌的读出操作。
[0023]响应于来自客户机102的请求,服务器106发送根据SMB协议来格式化的、具有表示客户机102所请求的文件数据的令牌的响应。在某些实施例中,服务器106可以负责生成该令牌,并确保该令牌跨来自其他客户机(诸如,可能请求同一文件数据的客户机104 )的任何请求一致地表示该文件数据。在其他实施例中,文件服务器可以将来自客户机的任何请求传递到底层的文件存储系统。在这些实施例中,底层的文件存储系统负责生成表示客户机102所请求的文件数据的令牌。在任一实施例中,服务器106将向客户机102发送具有令牌的响应。在生成令牌时,各实施例假设例如即使在用于生成令牌的源文件的范围不连续的情况下,也可以创建令牌。在这样的实施例中,来自这样的源范围的数据在逻辑上被连接成该令牌所表示的数据的单个逻辑范围。在某些实施例中,各实现可以在本质上使令牌与各特定源范围关联,其中这样的源范围可以不彼此连续。
[0024]该令牌表示不可变数据,即客户机102所表示的文件数据。因此,客户机102可以使用服务器106所返回的令牌来执行其他文件操作。例如,在稍后的时间点,客户机102可以使用该令牌来将数据写入到另一文件中。在这个示例中,客户机102可以请求根据SMB协议来格式化的卸载写入操作,其中卸载写入操作也是基于令牌的文件操作。卸载写入操作可以包括之前向客户机102提供的令牌。卸载写入操作可以请求将该令牌所表示的文件数据写入到服务器106上的另一文件中。在一实施例中,响应于接收到该请求,服务器106将随后通过将该令牌所表示的文件数据写入到服务器106上的其他文件中来处理该请求。在另一实施例中,响应于接收到该请求,服务器106将首先使接收到的令牌生效,并且如果令牌有效,服务器106将随后将该令牌所表示的文件数据写入到服务器106上的其他文件中。如上所述,在这些令牌由底层的文件存储系统或较低层生成的那些实施例中,服务器106将仅将卸载文件请求传递到底层的文件存储系统,该底层的文件存储系统随后将处理该请求并将文件数据写入到其他文件中。服务器106将随后向客户机102发送指示卸载写入是否成功的响应。尽管提及了“文件”数据,但其他实施例规定令牌表示任何类型的数据。例如,各实施例规定令牌已从任何存储容器(诸如,文件、卷、盘、卷快照、盘快照、团块存储等)中被获取。术语“文件数据”在此出于说明的目的被使用,而非旨在进行限制。此外,尽管前面讨论的实施例规定卸载写入操作请求将该令牌所表示的文件数据写入到服务器106上的另一文件中,但另一实施例规定卸载写入操作请求将该令牌所表示的文件数据的一部分写入到服务器106上的另一文件中。
[0025]此外,尽管前面讨论的各实施例规定卸载写入操作包括之前向客户机102提供的令牌,其他实施例规定客户机102将公知的令牌用作具有卸载写入操作的令牌。例如,诸如零令牌之类的公知令牌可用于在没有任何在前的相应卸载读出的情况下写入数据(诸如,零)。
[0026]在某些实施例中,文件服务器106可能能够为客户机所请求的所有文件数据创建令牌。这可以例如在另一客户机(诸如,客户机104)在客户机102所请求的文件数据范围的某一部分上具有锁的情况下发生。在这些实施例中,服务器106可以发送经截短的响应。即,包括表示客户机102所请求的文件数据的仅一部分的令牌的响应。在各实施例中,该响应因此指示该令牌表示少于卸载读出请求中所请求的所有第一数据。在某些实施例中,该令牌可表示不连续的数据范围。然而,在其他实施例中,令牌可以表示连续的数据范围,但该令牌可能少于客户机102在卸载读出请求中所请求的文件数据。在这些实施例中,服务器响应将包括使该令牌所表示的文件数据的部分在经截短的响应中发送的指示。
[0027]尽管某些实施例规定了经截短的卸载读出响应,但本公开的各实施例还规定了经截短的卸载写入。如上所述,卸载写入操作可以请求将相关联的令牌所表示的数据写入到服务器(例如,服务器106)上的另一文件中。响应于接收到该请求,服务器106将随后通过将该令牌所表示的文件数据写入到服务器106上的其他文件中来处理该请求。在各实施例中,服务器106无法将该令牌所表示的所有数据写入到该其他文件中。结果,在各实施例中,卸载写入可以被截短,其中例如“LengthWritten (所写入的长度)”小于请求写入的长度。例如,尺寸限制可以限制将令牌所表示的所有数据写入到其他文件中的能力。在另一实施例中,在要被写入的文件的一部分上的锁可以防止文件的该部分被写入。处理错误或其他类型的错误也可以导致令牌所表示的数据的各部分没有被写入到其他文件中。此外,该令牌可能被部分破坏或者是部分无效的,在该令牌中,服务器106无法将该数据的被破坏的/无效的部分成功地写入到其他文件中。根据此处所公开的各实施例,其他理由可以防止将令牌所表示的所有数据写入到其他文件中,而不背离本公开的精神和范围。在涉及经截短的卸载写入的各实施例中,可以将指示数据的一部分未被写入到其他文件中的经截短的卸载写入响应从服务器106发送到客户机102。在各实施例中,这样的指示可以通过对例如标志或其他指示符的使用而出现。此外,在各实施例中,经截短的卸载写入响应指示实际上写入了多少数据。
[0028]前述描述仅仅是图1所示的实施例可以如何操作的一个示例。如以下将更详细地描述的,各实施例可以包括不同的步骤或操作。这些实施例可以使用任何合适的软件或硬件组件来实现。
[0029]现在转到图2,图2示出了软件环境200的框图,软件环境200具有客户机202、客户机204、服务器206和服务器208。还示出了存储文件信息的文件存储210。
[0030]如图2中所示,客户机202和客户机204各自包括可以请求文件信息的应用。该应用可以是例如文字处理应用、电子表格应用、浏览器应用或者请求对文件的访问的任何其他应用。在图2中所示的实施例中,这些文件位于存储在文件存储210中的文件系统中。尽管根据此处所公开的一个实施例,图2示出文件存储210为服务器206和208提供共享的存储能力,其他实施例具有其他存储装置。例如,根据各实施例,服务器206和208可各自具有它们自己的存储装置(分离的或者是附连的)。在又一些实施例中,服务器206和服务器208可各自具有它们自己的存储装置,并且通过对文件存储210的使用而具有共享存储能力。根据此处所公开的各实施例可以使用多种类型的存储,而不背离本公开的精神和范围。客户机202和客户机204各自还包括把对文件的请求从这些应用重定向到文件服务器的重定向器,该文件服务器提供对远程文件系统的访问。重定向器使用文件访问协议与文件服务器通信。在一些实施例中,文件访问协议可以是NFS或SMB协议的一个版本。出于说明的目的,将在假设客户机202和客户机204中的重定向器使用SMB协议的一个版本(诸如,SMB2.0)与各文件服务器通信的情况下描述图2。然而,各实施例并不限于使用SMB协议。
[0031]服务器206和208在图2中被示为各自包括文件服务器。如上所述,文件服务器可以使用SMB协议的一个版本来与客户机202和客户机204上的重定向器通信。服务器206和208中的每一个还包括生成表示文件数据的各令牌的令牌生成器模块。此外,文件存储210也包括用于生成表示文件数据的各令牌的令牌生成器模块。
[0032]使用SMB协议在客户机和服务器之间建立会话开始于重定向器(诸如客户机202上的重定向器)向文件服务器(诸如服务器206)发送协商请求。重定向器和文件服务器交换协商分组以协商将用于该会话的SMB的版本。此外,在协商期间,还可以交换能力。在一个实施例中,服务器206可以在从文件服务器发送到客户即的协商响应分组中包括能力标志,以向客户机指示该文件服务器支持对卸载文件操作的使用。在其他实施例中,客户机202和服务器206可以简单地协商SMB协议的版本,应理解,该版本包括对卸载文件操作的使用的支持。在又一些实施例中,该协议的版本支持各卸载文件操作的判定在一卸载文件操作被尝试时发生。例如,客户机202可请求卸载读出(或卸载写入)操作。如果服务器206支持卸载文件操作,则服务器206将继续处理该请求。如果服务器206不支持卸载文件操作,则服务器206将向客户机202发送指示所请求的卸载文件操作无法被执行的响应。例如,在一实施例中,如果服务器206不支持卸载文件操作,则服务器206用错误消息和/或指示此错误消息的标志来响应于客户机202。 [0033]一旦完成该协商,客户机202上的重定向器和文件服务器206就建立会话。客户机重定向器随后可以向文件服务器发送文件访问请求。在一个实施例中,客户机202上的重定向器请求对文件的打开。服务器206向响应提供针对该打开的句柄。客户机202随后可以使用该句柄来请求卸载读出操作。在各实施例中,卸载读出操作是根据SMB协议来格式化的。在某些实施例中,通过将卸载读出操作和卸载写入操作以与其他文件系统控制命令(FSCTL)相同的方式封装在SMB2输入/输出控制(IOCTL)请求中来使用SMB协议连接发送这些命令。以下是在某些实施例中可用于请求卸载读出操作的结构的示例。
[0034]
typedef struct FSCTL OFFLOAD READ INPUT {
ULONG Size;
ULONG Flags;
ULONG TokenTimeToLive; //在几.:?秒内
ULONG Reserved;
ULONGLONG FileOffset;
ULONGLONG CopyLength;
}FSCTLOFFLOADREADINPUT,
*P1 SC rL_OFFLOAD_READ_INPlJT;[0035]如以上所指示的,客户机用来请求卸载读出操作的结构可包括多个字段。在各实施例中,它可包括服务器的存活时间建议。换言之,该字段可以指示该服务器将发送的令牌的建议寿命。它还包括客户机所请求的文件数据的文件偏移和复制长度。
[0036]响应于该请求,服务器206将发送回一响应。以下是可用于对卸载读出操作作出
响应的结构的示例。
[0037]
【权利要求】
1.一种提供基于令牌的文件操作的计算机实现的方法,所述方法包括: 在文件服务器处接收连接到所述文件服务器以访问文件系统中的信息的第一请求; 从所述文件服务器处发送第一响应,该响应建立与客户机的会话,以允许对所述文件系统中的信息的访问; 在所述文件服务器处接收打开所述文件系统中的文件以访问来自所述文件的文件信息的第二请求; 响应于接收所述第二请求,所述文件服务器向所述客户机发送授予对所述文件的访问权的第二响应; 在所述文件服务器处接收对第一数据从所述文件的一部分中的卸载读出的第三请求,所述第三请求是根据文件访问协议来格式化的;以及 响应于接收到所述第三请求,所述文件服务器发送具有表示所述第一数据的令牌的第三响应,其中所述第一数据是从所述文件的所述部分中逻辑地读出的,并且其中所述第三响应是根据所述文件访问协议来格式化的。
2.如权利要求1所述的方法,其特征在于,所述第三请求指示要从所述文件中读出的第一数据以及要从所述文件中读出的第二数据,并且所述第三响应包括表示所述第一数据的令牌和表示所述第二数据的第二令牌。
3.如权利要求1所述 的方法,其特征在于,所述第三请求指示第一文件的第一部分以及第二文件的第二部分,且所述第三响应包括表示从所述第一文件的所述第一部分逻辑地读出的第一数据的令牌以及表示从所述第二文件的所述第二部分逻辑地读出的第二数据的第二令牌。
4.如权利要求1所述的方法,其特征在于,还包括: 在所述文件服务器处接收对所述第一数据的所请求部分到第二文件的卸载写入的第四请求,所述第四请求包括所述令牌并且是根据所述文件访问协议来格式化的;以及响应于接收所述第四请求,所述文件服务器: 将所述第一数据的所请求部分写入到所述第二文件;以及 发送指示所述第一数据的所请求部分被写入到所述第二文件的第四响应,所述第四响应是根据所述文件访问协议来格式化的。
5.如权利要求1所述的方法,其特征在于,还包括: 在所述文件服务器处接收对所述第一数据的所请求部分到第二文件的卸载写入的第四请求,所述第四请求包括所述令牌并且是根据所述文件访问协议来格式化的;以及响应于接收所述第四请求,所述文件服务器: 将所述第一数据的所请求部分的第一部分写入到所述第二文件,其中所请求部分的第一部分小于所述第一数据的所请求部分的全部;以及 发送指示所述第一数据的所请求部分的第一部分被写入到所述第二文件的第四响应,所述第四响应是根据所述文件访问协议来格式化的。
6.一种包括计算机可执行指令的计算机可读存储介质,所述指令在由处理器执行时执行一种请求基于令牌的文件操作的方法,所述方法包括: 由客户机发送连接到文件服务器以访问文件系统中的信息的第一请求; 接收第一响应,该响应建立与所述客户机的会话以允许对所述文件信息的访问;发送打开所述文件系统中的文件的第二请求; 接收授予对所述文件的访问权的第二响应; 发送对令牌所表示的数据的第一部分到文件的卸载写入的第三请求,所述第三请求是根据服务器消息块(SMB)协议的一个版本来格式化的,并包括表示所述数据的令牌;以及接收响应。
7.如权利要求6所述的计算机可读存储介质,其特征在于,所述响应指示所述数据的第二部分被成功地写入到所述文件,并且其中所述第二部分表示少于所述第一部分中的数据的全部。
8.如权利要求6所述的计算机可读存储介质,其特征在于,还包括: 发送对第二数据从第二文件的一部分中的卸载读出的第四请求,所述第四请求是根据SMB协议的所述版本来格式化的;以及 接收具有表示所述第二数据的令牌的第四响应,所述第四响应是根据SMB协议的所述版本来格式化的。
9.一种用于允许基于令牌的文件操作的系统,所述系统包括: 至少一个服务器,所述至少一个服务器包括: 被配置为执行计算机可执行指令的至少一个处理器; 存储所述计算机可执行指令的至少一个计算机可读存储介质,所述计算机可执行指令在被所述至少一个处理器执行`时提供: 文件服务器,所述文件服务器被配置为: 接收对将数据从文件的一部分中卸载读出的请求,所述请求是根据服务器消息块(SMB)协议的一个版本来格式化的;以及 响应于接收所述请求,所述文件服务器发送具有表示所述数据的令牌的响应,所述响应是根据SMB协议的所述版本来格式化的。
10.如权利要求9所述的系统,其特征在于,所述系统还包括: 至少一个客户机,所述至少一个客户机包括: 被配置为执行计算机可执行指令的至少一个处理器; 存储所述计算机可执行指令的至少一个计算机可读存储介质,所述计算机可执行指令在被所述至少一个处理器执行时: 发送对将数据从所述文件的所述部分中卸载读出的请求;以及 接收具有表示所述数据的所述令牌的所述响应。
【文档编号】G06F15/16GK103733187SQ201280039140
【公开日】2014年4月16日 申请日期:2012年7月19日 优先权日:2011年8月10日
【发明者】N·R·克里斯滕森, D·L·格林, J·T·平克顿, R·纳加, B·S·马修, J·K·艾塔尔 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1