通过存根化优化内容存储的制作方法

文档序号:18667551发布日期:2019-09-13 20:23阅读:268来源:国知局
通过存根化优化内容存储的制作方法

本公开涉及在计算设备上存储数据的技术领域。



背景技术:

存根(stub)文件可以是在第一存储位置中存储的向用户或应用显现的计算机文件或其他数据对象,但是文件的内容实际上可以整体地或部分地存储在不同的存储位置。因此,当用户或应用试图通过访问存根文件来访问文件的内容时,可以拦截访问请求并且可以从实际存储位置检索文件的内容。作为一个示例,传统文件存根化已被用于表示用于特定文件内容的第一存储位置和第二存储位置之间的一对一关系。



技术实现要素:

一些实施包括在客户端设备上创建存根文件并将存根文件的内容经过网络存储在存储器中。客户端设备上的存根文件的元数据可以通过本文描述的技术保持最新。作为示例,客户端设备可以经过网络向服务计算设备发送针对信息的请求,该信息与关联于客户端设备的文件系统的改变有关。作为响应,客户端设备可以从服务计算设备接收对文件系统的一个或多个改变的列表。客户端设备可以至少部分地基于所接收的一个或多个改变的列表,添加和/或更新在客户端设备上的存根文件的元数据。在一些情况下,存根文件可以包括在客户端设备上的本地存储器中存储的存根数据结构。此外,与存根文件相对应的文件的文件内容可以经过网络存储在存储器中。

附图说明

参考附图阐述详细描述。在附图中,附图标记最左边的一个或多个数字标识首次显现该附图标记的图。在不同附图中使用相同的附图标记指示相似或相同的项目或特征。

图1示出了根据一些实施的被配置为提供具有存根化的内容存储的系统的示例逻辑体系结构。

图2示出了根据一些实施的示例存根数据结构。

图3示出了根据一些实施的令牌数据结构的示例。

图4是示出根据一些实施的用于更新客户端设备数据的示例过程的流程图。

图5是示出根据一些实施的示例过程的流程图,在该示例过程中,客户端向事务引擎查询对文件系统的改变。

图6是示出根据一些实施的用于创建和/或更新用于存根文件的元数据的示例过程的流程图。

图7是示出根据一些实施的用于创建存根文件的示例过程的流程图。

图8是示出根据一些实施的用于基于远程更新来更新存根文件信息的示例过程的流程图。

图9是示出根据一些实施的用于为远程创建的文件创建存根文件的示例过程的流程图。

图10是示出根据一些实施的远程删除存根文件的示例过程的流程图。

图11是示出根据一些实施的用于对数据进行镜像的示例过程的流程图。

图12示出了根据一些实施的一个或多个服务计算设备和存储的示例配置。

图13示出了根据一些实施的客户端设备的示例配置。

具体实施方式

本文的一些实施针对用于管理文件和数据存储的技术和布置。作为一个示例,客户端设备可以与服务计算设备通信,并且一些客户端设备可以仅存储一些用户文件的存根文件元数据,而这些文件的文件元数据和文件内容可以存储在客户端设备中的一些其他的客户端设备上和服务计算设备上。当用户或应用试图访问存根文件的文件内容时,可以立即从服务计算设备下载文件内容。此外,可以跨多个客户端设备同步文件,使得存根文件元数据反映每个文件的最新版本和条件。因此,可以通过在单个客户端设备上存储仅一些文件的文件内容来管理各个客户端设备上的存储容量,同时将所有文件的文件内容存储在服务计算设备上。

在一些情况下,通知服务可以是在服务计算设备上可执行的程序,该程序能够向监听(listening)客户端提供用于对存储位置的特定改变的改变通知事件。此外,事务查询引擎可以是在服务计算设备上可执行的程序,该程序能够向请求客户端提供在特定时间段内存储位置发生的文件改变事务的按时间顺序的列表。事务查询引擎可以通过提供用于更新存根文件的元数据的文件系统改变信息,执行使得存根文件数据的本地虚拟表示保持最新的过程。另外,数据同步服务可以是一种程序,其在客户端计算设备上可执行,用于注册来自通知服务的改变通知并基于改变通知从事务查询引擎请求更新。

一些示例允许在低存储空间环境中运行的客户端在客户端设备上呈现存储的信息的完整虚拟视图,即使大部分内容数据可以存储在网络存储位置。例如,这里的系统允许客户端设备根据需要容易地调用卸载的文件内容以用于本地访问。此外,这里具有通知服务、事务查询引擎和数据同步服务处理的系统可以允许参与共享文件系统的所有客户端设备保存文件系统的最新视图,而不管来自一个或多个其他客户端设备的修改。

在一些情况下,通知服务可以使用充当指示器(cursor)的令牌来跟踪用于在服务计算设备和一个或多个客户端设备之间定义的特定存储集(例如,文件系统)的改变。该文件系统可以是特定客户端设备专用的或者在多个客户端设备之间共享。每个客户端设备可以使用其令牌来跟踪文件系统事件。对由服务计算设备接收的文件系统的改变可以使服务计算设备改变由服务计算设备用于文件系统的令牌。使用令牌交换时,如果其中客户端设备具有注册兴趣的文件系统已经有任何改变,则可以通知客户端设备。通知服务可以将已经在服务计算设备处接收到的与客户端设备相关联的文件系统的改变,报告给一个或多个注册的客户端设备,但是通知服务可能不报告对于特定的文件系统的实际改变。

在客户端设备上运行的数据同步服务可以注册通知服务,以接收影响已注册的文件系统的文件系统改变事件的通知。当通知服务报告在与客户端设备相关联的文件系统中存在未处理的改变时,客户端设备上的数据同步服务可以向事务查询引擎发送请求以检索特定改变的列表。事务查询引擎确定并向请求客户端设备发送特定改变的列表。事务查询引擎可以使用令牌来跟踪用于对应文件系统的事件。客户端设备可以发送其最近接收的令牌,以及事务查询引擎返回自从客户端设备的令牌被最后更新以来在一个或多个指定文件系统中发生的改变的请求。这允许客户端设备仅处理客户端设备先前不知道的文件系统事件。客户端设备上的数据同步服务可以基于客户端设备上的本地配置来处理由事务查询引擎报告的改变列表。该处理可以包括下载用于镜像配置的文件内容,创建或更新用于存根配置的存根元数据,或者在从服务计算设备移除特定文件的情况下完全移除文件数据和/或存根元数据的本地表示。

例如在多对一的客户端设备到服务计算设备关系的情况下,本文的实施使得驻留在客户端设备上的存根文件元数据能够被更新,并与由服务计算设备保存的文件的网络存储版本同步。例如,一些示例包括这样的环境,即其中驻留在服务计算设备处的数据能够在多个客户端设备上同等地基于共享文件系统共享。因此,可以允许任何客户端设备改变数据,并且所得到的改变可以导致共享数据的所有客户端设备接收相应通知以更新其本地存根文件状态,使得它们各自的存根文件的本地虚拟表示响应于该改变而保持为最新。

在本文的文件存根化技术的一些示例中,文件数据可以从一个服务计算设备或网络存储位置重新定位到另一个,同时在客户端设备上维持原始文件的本地、紧凑表示,使得文件内容如果被请求,则可以从服务计算设备容易地并且无缝地回调到客户端设备。这里的示例使得多个客户端能够自由地表示由本地策略定义的本地数据。例如,第一客户端设备可以被配置为使用镜像策略,使得对服务计算设备上的文件的内容的改变立即被回调到第一客户端设备,而第二客户端设备可以被配置为使用用于文件的存根化策略,使得对服务计算设备上的文件的内容的改变造成仅在第二客户端设备上更新存根文件元数据而不将实际文件数据发送到第二客户端设备。此外,任何单个客户端设备都可以对其数据视图进行分区,以便客户端设备能够在相同的客户端设备上交错镜像和存根数据。例如,为了性能原因,存储管理员可以选择标记某个数据集以保持驻留(即,固定)到特定客户端,同时允许将较不经常访问的数据保存为存根文件。此外,客户端设备可以被配置为以非同步模式或同步模式操作。

在一些情况下,客户端设备和服务计算设备之间的通信可以经由基于rest(表述性状态转移)的api(应用接口)或其他数据api来执行。服务计算设备可以经由数据api检测客户端设备的操作模式,其可以包括客户端操作模式。在一些示例中,服务计算设备可以以双节点配置来设置,因此可以始终在线。服务计算设备可以进一步采用后端存储来存储客户端设备数据,例如通过存储区域网络、云存储或其他基于网络的存储。

为了讨论的目的,在一个或多个服务计算设备与一个或多个网络存储位置和多个客户端设备进行通信以便管理文件和其他数据的存储的环境中,描述了一些示例实施。然而,这里的实施不限于所提供的特定示例,并且可以扩展到其他类型的计算系统架构、其他类型的存储环境、其他类型的客户端配置、其他类型的数据对象等等,正如对于本领域技术人员来说,根据本文的公开内容将清楚的。

图1示出了根据一些实施的被配置用于存储数据对象和关联元数据的系统100的示例逻辑配置。系统100包括一个或多个服务计算设备102,其能够例如通过一个或多个网络105与存储器104通信或以其他方式耦合到存储器104。此外,服务计算设备102可以能够经过一个或多个网络106与一个或多个客户端计算设备108通信,例如客户端计算设备108(1)、108(2)、108(3)......(在下文中,“客户端设备”),其可以与一个或多个用户110相关联。在该示例中,假设第一客户端设备108(1)和第二客户端设备108(2)与第一用户110(1)相关联,并且第三客户端设备108(3)与第二用户110(2)相关联。此外,虽然在该示例中示出了三个客户端设备108和两个用户110,但是在其他示例中,可以存在任何数量的客户端设备108和关联用户110。

一个或多个网络105和106可以包括任何合适的网络,包括广域网,例如因特网;局域网(lan),例如内联网;无线网络,例如蜂窝网络、本地无线网络,例如wi-fi和/或短程无线通信,例如有线网络,包括光纤通道、光纤、以太网或任何其他此类网络、直接有线连接或前述的任何组合。因此,一个或多个网络105和106可以包括有线和/或无线通信技术,并且在一些示例中,网络105和106可以包括相同的一个或多个网络。用于这种通信的组件可以至少部分地取决于网络的类型、所选择的环境或两者。用于通过这种网络进行通信的协议是众所周知的,这里不再详细讨论。因此,服务计算设备102和客户端设备108能够使用有线或无线连接及其组合经过一个或多个网络106进行通信。此外,在一些情况下,负载平衡计算设备(图1中未示出)可以位于服务计算设备102和客户端计算设备108之间。另外,在一些示例中,一个或多个网络105可以是lan和/或存储区域网络,并且服务计算设备102和存储器104可以彼此本地定位。

每个服务计算设备102可以包括事务查询引擎112、通知服务114、文件系统数据库116和服务器程序118。例如,服务器程序118可以与相应客户端设备108上的相应客户端应用120交互,例如用于从存储器104提供文件和/或从客户端设备108接收文件以用于在存储器104中的存储。

客户端设备108可以各自包括客户端应用120、数据同步服务122、一个或多个文件系统124、本地存储器126和令牌128。每个客户端设备108可以包括可以在相应的客户端设备108上执行的客户端应用120的相应实例,例如用于与服务器程序118通信以发送用户数据,以用于在存储器104上存储以及用于从存储器104检索数据。

如本文其他地方另外所讨论的,与每个客户端设备108相关联的相应令牌128可以分别专门应用于该客户端设备108的当前配置。因此,与第一客户端设备相关联的令牌128(1)可以不同于与第二客户端设备108(2)相关联的令牌128(2),并且与第三客户端设备108相关联的令牌128(3)可以与令牌128(1)和128(2)不同。每个令牌128可以充当指示器以跟踪用于在服务计算设备102和每个客户端设备108之间定义的例如文件系统的特定存储集的改变(例如,基于与客户端设备108相关联的用户账户)。

一个或多个文件系统124可以包括专用文件系统,其可以是特定客户端设备108专用的和/或可以在多个客户端设备108之间共享的共享文件系统。每个用户可以具有可以在与相应用户相关联的多个客户端设备上使用的专用文件系统。专用文件系统通常只能由相应的用户访问。此外,一些用户可以是一个或多个共享文件系统的成员,并且可以与那些也是相同的一个或多个共享文件系统的成员的其他用户共享那些文件系统中的文件。例如,用户所属的共享文件系统可以安装在用户专用文件系统下的安装点。

每个客户端设备108可以使用其相应的令牌112来接收用于文件系统事件的更新,例如对一个或多个文件系统124中的文件的更新或其他改变。服务计算设备102可以通过文件系统数据库116跟踪客户端设备108的文件系统124,该文件系统数据库116可以是用于保存关于文件系统124和关联的客户端设备108的信息的任何类型的数据结构。例如,文件系统数据库116可以将特定用户账户和特定用户110的相关登录凭证与特定的相应文件系统124相关联。由服务计算设备102接收的对一个或多个文件系统124的改变可以使服务器程序118和/或事务查询引擎112利用对于特定文件系统的改变,更新由事务查询引擎112使用的事务日志130,从而跟踪客户端设备108处的一个或多个相应文件系统124的更新。

在图1的示例中,假设存在包括第一文件元数据136和第一文件内容138的第一文件134,以及包括第二文件元数据142和第二文件内容144的第二文件140。另外,虽然用于文件134、140的元数据136、142被示为分别与文件内容138、144一起存储,但是为了便于讨论,在该示例中,实际上,元数据136、142中的至少一些可以是存储在文件所在的一个或多个文件系统124的数据结构中,因此可以存储在与文件内容单独的存储位置。作为另一替代方案,至少一些元数据可以存储在单独的元数据数据库中(图1中未示出)。

在该示例中,第一文件134可以是被包括在由第一用户110(1)和第二用户110(2)共享的共享文件系统中的共享文件,并且第二文件可以是被包括在第二用户110(2)的不与第一用户110(1)共享的专用文件系统中的专用文件。此外,每个客户端设备108可以具有存储管理策略(图1中未示出),其指定将某些文件保存为存根文件,使得仅存根文件的元数据存储在本地存储器126中,而文件的文件内容存储在网络存储器104中,并且某些其他文件与文件元数据和文件的文件内容一起存储在本地存储器126中。例如,用户可能经常访问的文件可以存储在本地存储器126上,而用户可能不经常访问的文件可以被存根化,使得仅本地存储文件的元数据。

在一些情况下,除了用于每个存根文件的其他元数据之外,存根数据结构可以存储在本地存储器126中。如下面关于图2另外讨论的那样,存根数据结构可以包括例如最新文件内容的散列的与特定文件有关的附加元数据、用于该文件的内容是否存在于本地存储器中的指示,以及软件版本信息。在该示例中,第一文件134在第一客户端设备108(1)和第三客户端设备108(3)上被保存为存根文件,并且第一文件在第二客户端设备108(2)上完全保存文件内容。因此,包括用于第一文件134的一些元数据的存根数据结构146存储在第一客户端设备108(1)和第三客户端设备108(3)的本地存储器126中,而第一文件134的内容138存储在第二客户端设备108(2)的本地存储器126中。

类似地,第二文件140被保存为第三客户端设备108(3)上的存根文件。因此,包括第二文件140的一些元数据的存根数据结构147存储在第三客户端设备108(3)的本地存储器126中,而第二文件140的内容144存储在由服务计算设备102管理的网络存储器104中。

用于确定哪些文件作为存根文件保存以及哪些文件在本地存储文件内容的存储管理策略可以基于如下来确定:基于文件存储在文件系统中的特定文件夹或目录中,基于由管理员选择或默认选择文件或文件夹或目录,基于文件最近被访问过,基于由用户选择文件,以及/或者各种其他技术。在一些情况下,对于一些客户端设备108,例如具有有限存储容量的客户端设备108(例如,便携式设备),存储管理策略可以具有默认设置,使得除了指定的文件组、文件类型、最近访问过的文件等之外,所有用户文件被存储为存根文件。另外,在一些情况下,对于其他类型的客户端设备108,例如具有大存储容量的工作站或桌上型计算机,仅某些文件可以存储为存根文件,例如那些超过指定文件大小并且不经常访问的文件。例如,在超过指定文件大小的文件未被访问达指定时间段之后,文件的内容可以从本地存储器126中删除并且可以仅在网络存储器104处保存,而可以将文件的元数据保存在客户端设备108的本地存储器126中,并且可以使用本文的技术将其保持最新。

在一些情况下,客户端应用120可以被配置为呈现用户界面以使用户能够指定特定文件、特定文件夹、特定目录等,这些特定文件、特定文件夹、特定目录等被存根化、不被存根化、在通过指定的一段时间等之后被存根化,等等。例如,默认存储管理策略可以是这样,即大多数或所有文件是存根文件,并且用户或系统管理员可以指定不是存根文件的特定文件、文件夹等。

可以在每个客户端设备108上执行数据同步服务122,从而向通知服务114注册,以便接收影响在客户端设备108上配置的文件系统的事件的通知。如果对特定客户端设备108已经注册的文件系统124进行了改变,则通知服务114可以通知客户端设备108。在一些示例中,http(超文本传输协议)服务器推送技术或http长轮询技术可用于向客户端设备108通知对相应文件系统124的改变。

例如,在http长轮询的情况下,客户端设备108可以周期性地向服务计算设备102发送http/s(安全http)请求,且期望服务计算设备102可能不立即响应。特别地,如果服务计算设备102在接收到请求时没有用于客户端设备108的新信息,则服务计算设备102可以保持打开请求并等待作为请求主题的对于一个或多个文件系统124中的任何一个的改变,而不是发送空响应。在服务计算设备102接收到对应文件系统的改变的指示之后,通知服务114可以立即向为该文件系统注册的一个或多个客户端设备108发送http/s响应,完成打开的http/s请求。在从通知服务114接收到http/s响应时,客户端设备108可以被配置为向服务计算设备102发出另一http/s请求,以便接收任何附加文件系统改变的任何后续推送通知。另外,客户端设备108可以向事务查询引擎112发出请求,如下面另外讨论的,以接收更新的细节。

另外或可替代地,从客户端设备108到通知服务114的请求可以包括令牌,该令牌充当指示器以跟踪针对该客户端注册的特定文件系统的改变。令牌可以标识文件系统和客户端从事务查询引擎112接收到更新信息所针对的最近的文件系统事务。在一些示例中,令牌可以与先前由事务查询引擎112提供给客户端设备108的令牌128相同,而在其他示例中,令牌可以仅包括文件系统标识符和客户端设备接收的最后事务号。因此,每个客户端设备108可以基于它们各自的令牌来跟踪客户端设备108已经看到和同化了哪些文件系统事务。当通知服务114从客户端设备108接收到令牌128时,通知服务114可以检查与所识别的文件系统相对应的事务日志130,以确定在事务日志130中是否存在比在令牌128中列出的事务更近的事务。如果在事务日志中存在比在令牌128中更近的事务,则通知服务114可以向客户端设备108发送指示已经对文件系统的改变的响应。另外,在由通知服务114使用的令牌与由事务查询引擎112使用的令牌128不同的情况下,通知服务可以基于对文件系统的改变来更新令牌,并且可以将更新的令牌发送到客户端设备108,以用于下次客户端设备向通知服务114进行查询时使用。在任一情况下,使用令牌交换,可以在客户端设备感兴趣的文件系统有任何改变时通知客户端设备108。

因此,使用上面讨论的技术或其他技术时,当创建、改变或删除特定文件系统中的文件时,通知服务114可以向一个或多个注册的客户端设备108发送文件系统改变通知148,其指示已经在服务计算设备102处接收到对特定文件系统的改变。如上所述,在一些示例中,文件系统改变通知148可以包括更新的通知令牌。例如,通知服务114可以参考文件系统数据库116以确定哪些客户端108正在等待针对哪些文件系统的改变通知,并且可以将文件系统改变通知148仅指向已经接收到文件系统的改变所针对的那些客户端设备108。此外,在一些示例中,通知服务114可以在改变通知148中指示特定文件系统已经改变,但是可能不报告导致通知的实际改变是什么。

当通知服务114发送指示客户端设备的文件系统中存在未处理的改变的文件系统改变通知148时,作为响应,目标客户端设备108的数据同步服务122可以被配置为向事务查询引擎112发送请求以请求特定改变的列表。事务查询引擎112可以确定来自事务日志130和/或直接来自存储器104的信息,并且可以采用更新的令牌128向请求客户端设备108发送特定改变的列表。例如,事务查询引擎112可以使用令牌128来基于令牌128中包括的事务标识符来跟踪用于对应的文件系统的事件,如下面另外讨论的。

在从通知服务114接收到文件系统改变通知时,客户端设备108上的数据同步服务122可以将客户端设备的当前令牌128以及请求150发送到服务计算设备102。事务查询引擎112可以接收令牌以及用于对文件系统的改变的请求150,并且基于所接收的令牌中包含的信息,可以返回自从客户端设备的令牌被最后更新以来在一个或多个指定的文件系统中发生的改变。这允许客户端设备108仅处理客户端设备先前不知道的事件。数据同步服务122基于客户端设备108上的本地配置来处理由事务查询引擎112报告的改变列表。该处理可以包括下载用于镜像文件配置的文件内容,创建或更新用于存根文件配置的存根元数据,或者在从存储器104移除特定文件的情况下完全移除数据的本地表示。

当用户或应用试图访问作为存根文件的文件的内容时,例如第一客户端设备108(1)上的第一文件134,客户端应用120可以包括拦截访问请求的操作系统级别的组件,确定所请求文件的内容138不在本地保存,并向服务计算设备102发送用于内容138的请求。作为一个示例,在客户端设备108正在使用操作系统的情况下,客户端应用120可以包括或可以采用文件系统过滤器驱动器,该驱动器被配置为拦截针对存根化的文件的文件访问请求。文件系统过滤器驱动器可以是能够过滤用于一个或多个文件系统或文件系统卷的文件操作的内核模式组件。可以在采用不同操作系统的客户端设备108上使用类似的操作系统级别的文件操作拦截技术。

当拦截访问存根文件内容的请求时,客户端应用组件可以将请求重定向到服务计算设备102。服务计算设备102上的服务器程序118可以从存储器104检索文件内容,并将文件内容发送到请求客户端108。在一些情况下,客户端应用120可以采用数据api154来与服务计算设备102通信,并且服务计算设备可以根据数据api154进行响应。如上所述,在一些示例中,数据api154可以是restapi。当已经从服务计算设备102接收到文件内容时,文件系统过滤器驱动器可以以类似于文件内容已经被保存在本地存储器中的方式,响应请求应用和/或客户端设备108上的用户。

在图1的示例中,假设第二客户端110(2)使用客户端应用112、在客户端设备108(3)上的操作系统(图1中未示出),或在第三客户端设备108(3)上的应用(未示出),访问第一文件134。如上所述,客户端应用112可以从服务计算设备102获得用于第一文件的文件内容138。此外,假设第二用户110(2)对第一文件进行了改变并将改变保存到本地存储器126上的本地第一文件,并关闭第一文件134。可以通过第三客户端设备108(3)上的数据同步服务122将对第一文件134的改变同步到服务计算设备102。例如,可以将更新的文件内容和元数据发送到服务器程序118,该服务器程序118可以将更新的文件内容和元数据存储在存储器104中。此外,服务器程序118可以更新事务日志130以指示对由第一用户110(1)和第二用户110(2)共享的共享文件系统的改变,例如通过增加用于在事务日志130中的共享文件系统的事务标识符,以及将对文件的改变的细节包括在共享文件系统中。

响应于接收到文件系统改变信息,服务计算设备102上的通知服务114可以从文件系统数据库116确定第一客户端设备108(1)和第二客户端设备108(2)是已注册以接收用于共享文件系统的改变通知。因此,通知服务114可以向第一客户端设备108(1)和第二客户端设备108(2)中的每一个发送文件系统改变通知148。作为响应,第一客户端设备108(1)和第二客户端设备108(2)可以各自分别发送其当前令牌128(1)和128(2),以及用于对共享文件系统的改变的相应请求150。

作为响应,事务查询引擎112可以将所接收的令牌128(1)和128(2)中的事务标识符与事务日志130中的最新事务标识符进行比较,并且可以确定在相应的第一客户端设备108(1)和第二客户端设备108(2)中的每一个处要更新哪些事务。在该示例中,假设对第一文件134仅存在一个改变。因此,事务查询引擎112可以将经修改的令牌与改变列表152一起发送到第一客户端设备108(1)和第二客户端设备108(2)中的每个。

因此,第一客户端设备108(1)上的数据同步服务122可以仅执行元数据同步156,因为在第一客户端设备108(1)的本地存储器126上仅保存第一文件134的存根文件。此外,第二客户端设备108(2)上的数据同步服务122可以执行元数据同步156和内容数据同步158,因为文件内容138存储在第二客户端设备108(2)上的本地存储器126中。

因此,在本文的实施中,基于与特定客户端设备108相关联的用户账户和登录凭证,向客户端设备108分配对特定文件系统的访问。例如,每个用户账户可以与至少一个专用文件系统相关联(例如,仅允许与特定用户账户相关联的设备来读/写文件系统)或共享(例如,允许与多个用户账户相关联的多个设备读/写文件系统)。可以在文件系统数据库116中保存和跟踪该信息。

在一些情况下,服务计算设备102可以为向服务计算设备102注册的每个相应文件系统,存储相应的事务日志130。文件系统的每个文件系统改变事件(创建、删除、修改)可以在事务日志130中具有针对该文件系统的对应条目,并且可以具有与其相关联的对应事务标识符。例如,当事务日志130被更新时,事务标识符可以由服务器程序118和/或事务查询引擎112生成。

另外,如上所述,每个客户端设备108可以具有相关联的存储管理策略(图1中未示出),其指示哪些文件是存根文件,哪些文件是从服务计算设备102镜像的,等等。基于存储管理策略,可以配置客户端设备,使得数据同步服务122将本地文件存根化,以便最小化本地存储器126上的存储要求以节省存储空间。例如,这里的存根数据管理技术可以在具有有限存储容量的客户端设备108上使用,以使用户能够访问大量数据,而不允许所有数据始终保持驻留在本地存储器中。当数据同步服务122基于存储管理策略确定将文件或其他数据存根化时,数据同步服务122可以首先确保服务计算设备102已经接收到要从本地存储器126删除的文件内容的最新完整副本。然后,数据同步服务122可以创建包括本地文件系统中的存根文件数据结构的存根文件,以表示所移除的内容数据。

此外,客户端设备108可以在其文件系统中为每个文件保存一组元数据值(例如,文件内容的文件大小、文件内容的最后修改时间、文件内容的文件路径等,如本文其他地方所列举的),并且其可以对应一些示例中的第一文件134的元数据136。该元数据可以用于向客户端设备108上的操作系统和/或向用户表示文件数据,即使存根数据结构本身仅是小占位符并且客户端上不存在文件的实际内容。在一些示例中,元数据的存储位置可以是依赖于实施的。例如,元数据值可以存储在文件系统本身内,或者在其他示例中,可以保存在单独的元数据数据库中。

在本文的示例中,客户端设备108(1)和108(3)可以将存根数据结构146与其对应的元数据集136相关联,以呈现第一文件134的虚拟表示。客户端设备108可以至少部分地基于本地事件或远程事件(例如,在服务计算设备102或另一客户端设备上)来将文件的数据进行存根化。例如,基于与客户端设备108相关联的存储管理策略,客户端设备108上的数据同步服务122可以决定将本地存储的文件转换为存根文件以释放本地磁盘空间。另外,作为另一示例,当参与共享文件夹时,客户端设备108上的数据同步服务122可以决定将最初在其他客户端设备处执行的文件创建表示为存根文件,以便不产生传输文件内容的带宽成本和保持文件内容的本地磁盘空间,除非文件内容由客户端设备108上运行的用户或过程明确请求。

此外,在第一用户和第二用户同时更新同一文件的情况下,首先保存改变的用户可以在其他用户之前使得相应客户端设备108将改变推送到服务计算设备102。服务计算设备102可以将版本号分配给更新的文件。随后,如果另一用户保存了改变,则服务计算设备102可以基于关联的文件版本号检测到文件已经从先前版本更新。在这种情况下,可以通知另一个用户该文件已被修改,并且已经使用与更新的原始文件分开的不同文件保存了另一用户所做的改变。然后,其他用户可以通过确定是否将改变合并或以其他方式合并到已经更新的版本等来解决冲突。

图2示出了根据一些实施的示例存根数据结构200。例如,存根数据结构200可以对应于上面讨论的第一文件134的存根数据结构146或这里讨论的其他存根数据结构。在一些情况下,存根数据结构200是代替文件内容在客户端设备的本地存储器中的文件系统中存储的存根文件元数据的实际数据对象,而用于每个存根文件的其他元数据可以由存储文件的文件系统保存,或者该存根数据结构200是在单独的元数据数据库中存储的存根文件元数据的实际数据对象。例如,可以由文件系统保存用于文件元数据的元数据值,例如文件大小、文件修改时间、文件路径、文件版本等,如同用于任何其他非存根文件一样。

在该示例中,存根数据结构200包括软件版本指示符202、内容数据状态指示符204和文件内容散列206。软件版本指示符202可以指示用于生成存根数据结构200的软件的版本(例如,客户端应用和/或数据同步服务的版本),该信息可以保存存根数据结构200与未来的软件版本的兼容性。此外,内容数据状态指示符204可以指示与存根相对应的文件的文件内容当前是位于本地存储器中,还是当前远程地存储在网络存储器104中。例如,内容数据状态可以由一个或多个旗标(flag)、脏位(dirtybit)等指示。另外,文件内容散列206可以是存根文件的文件内容的最近更新版本的散列。例如,文件内容散列206可以用于在检索文件内容时验证存根数据结构与正确的文件内容相关联,以及/或者可以用于定位错误命名的存根等的对应内容。可以使用任何合适的散列函数,例如sha-1、sha-3、md-5等,以从文件内容生成文件内容散列206。

图3示出了根据一些实施的令牌数据结构300的示例。令牌数据结构300可以对应于上面讨论的令牌128,该令牌128可以与根据一些实施的对客户端设备处的一个或多个文件系统的更新的列表一起由事务查询引擎112发出。在该示例中,令牌数据结构可以包括一个或多个文件系统标识符302,例如第一文件系统标识符302(1)、第二文件系统标识符302(2)等。对于包括在令牌数据结构300中的每个文件系统标识符302,令牌数据结构300可以包括关联的安装点信息304和关联的事务标识符306。例如,第一文件系统标识符302(1)与第一安装点信息304(1)和第一事务标识符306(1)相关联,并且第二文件系统标识符302(2)与第二安装点信息304(2)和第二事务标识符306(2)相关联。

例如,文件系统标识符302可以指示由对应的客户端设备保存的文件系统。安装点信息304可用于指示存储在文件系统中的哪些信息(例如,文件夹、文件等)是与其他客户端设备共享的信息,以及哪些信息是用于客户端设备的专用信息。此外,事务标识符306可以包括事务标识符信息,其可以包括唯一地标识或以其他方式单个区分文件系统内的每个事务的信息。作为一个示例,事务标识符可以是被顺序分配的数字,当这些数字被输入到上面讨论的事务日志中时被分配给事务。此外,如上所述,事务查询引擎112可以响应于从客户端设备接收先前发出的令牌而将新生成的令牌发送到客户端设备。

图4至图11是示出根据一些实施的示例过程的流程图。这些过程被示为逻辑流程图中的框集合,其表示操作序列,其中的一些或全部可以用硬件、软件或其组合来实施。在软件的上下文中,框可以表示存储在一个或多个计算机可读介质上的计算机可执行指令,当由一个或多个处理器执行时,所述计算机可执行指令对处理器进行编程以执行所述操作。通常,计算机可执行指令包括执行特定功能或实施特定数据类型的例程、程序、对象、组件、数据结构等。描述框的顺序不应被解释为限制。可以以任何顺序和/或并行地组合任何数量的所描述的框以实施该过程或替代过程,并且不需要执行所有框。为了讨论的目的,参考本文的示例中描述的环境、框架和系统来描述过程,虽然过程可以在各种其他环境、框架和系统中实施。

图4是示出根据一些实施的用于更新客户端数据的示例过程400的流程图。在一些情况下,过程400可以部分地由客户端设备执行,并且部分地由服务计算设备或其他合适的计算设备执行。

在402处,客户端设备可以在服务计算设备上向通知服务注册至少一个文件系统。例如,客户端设备可以例如通过用户登录凭证等来注册与客户端设备相关联的用户账户相关联的关联专用文件系统。另外,在一些示例中,一个或多个共享文件系统还可以与用户的用户账户和专用文件系统相关联。

在404处,客户端设备可以周期性地向服务计算设备上的通知服务发送对文件系统的更新的请求。在一些示例中,客户端设备可以在发送更新请求时使用http长轮询或其他合适的技术。另外,在一些情况下,客户端设备可以使用于更新请求包括令牌,并且令牌可以至少包括客户端数据已被更新的最新文件系统事务的文件系统标识符和事务标识符。

在406处,服务计算设备上的通知服务可以从客户端设备接收请求,并且可以检查对所标识的文件系统的改变。例如,通知服务可以参考用于所识别的文件系统的事务日志,以确定令牌中的事务标识符是否与事务日志中的最新事务标识符相同。

在408处,如果事务标识符相同那么没有未决的改变,则通知服务可以发送指示不存在更新的响应,并且该过程可以返回到框404。另外,在一些情况下,响应可以包括令牌,其可以与从客户端设备接收的令牌相同。另一方面,如果事务标识符不相同,则存在未决的改变,通知服务可以发送指示存在文件系统改变的响应,并且该过程可以进行到框410。在一些示例中,响应可以包括更新的通知令牌,其具有从事务日志获得的更新的事务标识符。

在410处,响应于接收到文件系统有改变的指示,客户端设备可以向事务查询引擎发送对文件系统改变的请求。该请求可以包括文件系统数据最后一次被更新时从事务查询引擎接收的令牌。例如,令牌可以包括文件系统标识符、安装点信息和事务标识符,如上面参考图3所讨论的。此外,关于图5讨论客户端设备查询事务查询引擎的过程的细节。

在412处,客户端设备可以从事务查询引擎接收响应并确定是否存在更多要处理的改变。例如,客户端设备可以确定是否存在尚未处理的从事务查询引擎接收的响应中列出的改变。如果没有更多的处理改变,则过程进行到框404。另一方面,如果有更多的改变要处理,则过程进行到框414。

在414处,客户端设备可以确定对文件系统的改变是创建还是更新事件。如果改变不是创建或更新事件,则表示该改变是删除事件,并且该过程前进到框416。另一方面,如果改变是创建或更新事件,则过程进行到框418。

在416处,基于确定改变是删除事件,该过程可以删除数据的本地表示。例如,在文件的情况下,客户端设备可以从本地文件系统中删除对应的文件。然后,该过程可以返回到框412,以确定在由事务查询引擎提供的改变列表中是否存在更多要处理的改变。

在418处,在改变是创建或更新事件的情况下,客户端设备可以确定存根化策略是否应用于数据。例如,客户端设备可以确定文件是在客户端设备处被保存为存根文件还是被保存为包括本地存储的文件内容的完整文件。客户端设备在确定存根化是否应用于特定数据时可以参考为客户端设备建立的存储管理策略。如果存根化被应用到数据,则处理进行到框422。另一方面,如果存根不应用到数据,则处理进行到框420。

在420处,如果数据未在客户端设备处存根化,则客户端设备可以向服务计算设备发送请求以下载文件的更新文件内容。例如,客户端设备可以向服务计算设备上的服务器程序发送请求以请求对应文件的更新文件内容。还可以由客户端设备在本地下载和/或创建/更新文件的元数据。

在422处,如果要在客户端设备处将数据保存为存根文件,则客户端设备可以基于由事务查询引擎提供的信息来添加和/或更新存根文件的元数据。因此,如果客户端设备上尚不存在存根文件,则客户端设备可以添加用于存根文件的存根数据结构,并将用于存根文件的存根文件元数据添加到文件系统或其他元数据存储位置(例如,单独的元数据库)。可替代地,如果存根文件已经存在,则客户端设备可以更新存根文件元数据。在任一情况下,由事务查询引擎提供的改变信息可以包括用于文件的内容的最新散列,以及用于文件大小、文件路径、执行的事件类型、修改时间、文件版本、对象类型等的元数据值。如上所述,客户端设备可以在客户端设备上的文件系统数据结构中或在单独的元数据数据库中存储例如文件大小、文件路径、事件类型、修改时间和文件版本的元数据值,同时文件内容的散列可以存储在客户端设备上的本地存储器中存储的存根数据结构中或与之相关联地进行存储。

图5是示出根据一些实施的客户端向事务查询引擎查询对文件系统的改变的示例过程500的流程图。在一些情况下,过程500可以部分地由客户端设备执行,并且部分地由服务计算设备或其他合适的计算设备执行。

在502处,客户端设备可以从服务计算设备上的通知服务接收存在对与该客户端设备相关联的文件系统的改变的指示。例如,可以基于上面讨论的任何技术从通知服务接收文件系统改变的通知,例如响应于客户端设备发送到服务计算设备的请求。可替代地,在其他示例中,可以消除通知服务,并且客户端设备可以周期性地向事务查询引擎发送更新请求,并且使该请求包括最近接收到令牌。

在504处,客户端设备可以向服务计算设备发送对文件系统的改变的请求。由客户端设备发送的请求可以包括令牌,该令牌具有最近更新了客户端设备数据所针对的事务的事务标识符和文件系统标识符。另外,在本文的一些示例中,令牌可以包括安装点信息,其指示例如客户端的数据中的哪个是专用数据以及哪个是共享数据。

在506处,响应于从客户端设备接收到请求,服务计算设备上的事务查询引擎确定在从客户端设备接收到的令牌中所包括的事务标识符指定的事务之后,发生的对指定的文件系统的更新的列表。

在508处,服务计算设备上的事务查询引擎可以向客户端设备发送对文件系统的改变列表和/或具有对应的事务id的更新令牌。例如,如果对文件系统的所有改变都已经发送到客户端设备,则事务查询引擎可以仅返回包括最新事务标识符而没有其他改变列表的令牌。

在510处,客户端设备可以基于改变列表来同步客户端设备上的数据。以上关于图4讨论了同步的细节。

在512处,客户端设备可以跟踪事务id以确定是否发送另一个请求。例如,如果从事务查询引擎接收的最新令牌中的事务标识符与先前接收的令牌的事务标识符匹配,并且改变的列表或者相同,或者没有包括的改变的列表,则客户端设备是最新的。

在514处,客户端设备可以基于将当前令牌中的事务id与紧接在前接收的令牌中的事务id进行比较,确定是否向事务查询引擎发送另一请求。如果事务id相同,则过程可以进行到框516。另一方面,如果事务id不同,则过程可以进行到框504以向事务查询引擎发送另一个请求。

在516处,客户端设备数据是最新的,并且该过程可以返回到图4的框404,以等待文件系统的其他改变。如上所述,可以重复如下过程直到不再有更新:利用新令牌从事务查询引擎发送批量改变,由客户端设备将新令牌返回到事务查询引擎,利用下一个新的令牌和增加的事务标识符从事务查询引擎接收下一批新改变。在这一点,事务查询引擎可以发送具有最新事务的事务id的令牌,并且客户端设备可以保留该令牌,直到从通知服务接收到下一个文件系统改变通知。关于事务查询引擎、令牌和更新客户端设备的附加信息被包括在2013年12月17日提交的国际申请pct/us2013/075855和其在2016年2月29日提交的美国国家阶段申请美国申请14/915,423中,其全部内容通过引用并入本文。

图6是示出根据一些实施的用于创建和/或更新存根文件或其他存根化数据对象的元数据的示例过程600的流程图。在一些情况下,过程600可以由客户端设备或其他合适的计算设备执行。

在602处,如上面关于图4的框418和422所讨论的那样,客户端设备可以确定的是,用于客户端设备的数据存储策略指示数据对象将被保存为存根文件,并且将基于对文件系统的改变来创建或更新用于存根文件的元数据信息。作为一个示例,数据对象可以是已在另一客户端设备上更新的文件。

在604处,客户端设备可以确定针对该数据是否已经存在本地存根文件。如果是,则过程进行到框608;如果不是,则该过程进行到框606。

在606处,客户端设备可以创建用于该数据的存根数据结构,并且创建用于该数据的存根元数据。例如,在数据对象是被新添加到文件系统,例如是新创建的文件的情况下,客户端设备可以创建用于新的存根文件的新的存根数据结构,并且可以根据由事务查询引擎提供的信息确定用于新存根文件的新存根文件元数据。因此,从事务查询引擎接收的信息可以包括文件内容的散列和用于新创建的存根文件的其他元数据值,例如文件创建时间、文件大小和/或其他文件属性。文件内容的散列可以存储在存根数据结构中,而其他文件元数据可以存储在客户端设备上的文件系统中,或者存储在客户端设备上的本地存储器中保存的单独的元数据数据库中。

另一方面,在608处,如果数据对象已经存在于文件系统中,则客户端设备可以确定是否存在尚未与服务计算设备同步的数据对象的任何本地存储的数据。例如,如果客户端设备的用户已对数据对象进行了一些改变,则在数据对象被改变为存根表示之前,如果改变未与服务计算设备同步,则这些改变可能会丢失。作为一个示例,客户端设备上的数据同步服务可以参考由客户端设备保存的文件同步信息,以确定是否已经对尚未同步的文件内容或其他数据内容进行了任何数据改变。例如,数据同步服务可以保存文件同步信息的数据库或其他数据结构,其指示哪些数据已经从客户端设备同步到服务计算设备。如果没有本地数据,或者如果任何本地数据已经同步到服务计算设备,则该过程进行到框610。另一方面,如果存在本地数据并且尚未将其同步到服务计算设备,则过程前进到框612。

在610处,如果没有本地数据,或者任何本地数据已经被同步到服务计算设备,则客户端设备可以更新文件系统中的存根文件元数据和在用于存根文件的存根数据结构中的存根文件元数据。在将数据对象从完全保存的文件转换为存根文件的情况下,可以创建存根数据结构。如上所述,客户端设备可以根据从事务查询引擎接收的信息确定内容的散列和其他更新的元数据,或者在客户端设备上存在最新内容的情况下,客户端设备可以在删除内容之前根据该内容计算散列。

在612处,如果存在尚未同步到服务计算设备的本地数据,则客户端设备可以停止存根处理,并将本地改变发送到服务计算设备以用于同步。作为一个示例,客户端设备可以在下一次更新文件系统的期间恢复用于数据对象的存根处理,如上面参考图4和图5所讨论的。

图7是示出根据一些实施的用于为文件创建存根文件的示例过程700的流程图。在该示例中,可以例如在客户端设备上的专用文件系统中创建文件并将其同步到服务计算设备。如上所述,专用文件系统可以基于用户账户或用户标识符和用户登录凭证,与客户端设备相关联。作为一个示例,客户端设备可以基于客户端设备的存储管理策略,确定将本地文件转换为存根文件。

在702处,客户端设备可以在客户端设备处创建第一文件。例如,用户可以使用应用或其他过程来在客户端设备处创建文件。

在704处,客户端设备可以检查存储管理策略以确定应该将第一文件保存为存根文件还是完全保存的文件。例如,存储管理策略可以基于文件类型、对存储利用的限制、文件存储位置,默认策略或上面讨论的任何各种其他考虑因素,指示哪些文件可以是存根文件。

在706处,客户端设备可以基于存储管理策略的一个或多个标准,将第一文件选择为存根文件候选。

在708处,客户端设备可以将第一文件的文件内容同步到服务计算设备。例如,客户端设备上的数据同步服务可以保存文件同步信息,以跟踪哪些文件已经完全同步到服务计算设备以及哪些文件没有。因此,基于文件同步信息,数据同步服务可以确保在将文件转换为存根文件之前已将最新的文件内容同步到服务计算设备,使得对文件内容的任何改变在从文件系统中删除文件内容时不会丢失。

在710处,客户端设备可以记录用于第一文件的元数据,标记第一文件内容以用于删除,以及创建存根数据结构。例如,在创建存根数据结构时,客户端设备可以在删除第一文件内容之前计算第一文件内容的散列值,并且还可以确定其他存根文件元数据值,例如文件大小、修改时间、路径、版本数字,等等。

在712处,客户端设备可以使用存根文件元数据来呈现第一文件的本地操作系统视图,以反映第一文件的实际文件内容的最新表示。例如,如果用户打开操作系统窗口以查看文件系统结构,则第一文件可以以如同与在客户端设备上完全保存第一文件相同的方式在文件系统结构中表示。

在714处,客户端设备可以接收用于访问第一文件的文件内容的用户请求或应用请求。例如,可以通过操作系统或通过在客户端设备上执行的应用来接收请求。

在716处,客户端设备上的客户端应用可以拦截该请求并且可以从服务计算设备获得文件内容。作为一个示例,文件系统过滤器驱动器或与客户端应用相关联的其他操作系统级别的组件可以被配置为拦截针对作为存根文件的文件的文件访问请求。当拦截访问存根文件的内容的请求时,客户端应用组件可以将请求重定向到服务计算设备。服务计算设备上的服务器程序可以从网络存储检索文件内容,并将文件内容发送到请求客户端设备。在一些情况下,客户端应用可以采用例如restapi的数据api来与服务计算设备通信。

在718处,客户端设备可以响应于请求来提供文件内容。例如,当已经从服务计算设备接收到文件内容时,文件系统过滤器驱动器可以响应请求应用和/或客户端设备上的用户,其方式类似于如同文件内容已经存储在客户端设备上的本地存储器中。

图8是示出根据一些实现的用于基于远程更新来更新存根文件信息的示例过程800的流程图。在一些情况下,过程800可以在多个客户端设备能够访问相同文件的环境中执行,例如在共享文件系统或跨多个客户端设备实施的专用文件系统的情况下。

在802处,第一客户端设备可以在第一客户端设备处创建用于第一文件的存根文件,并且随后可以由第二客户端设备访问第一文件的第一文件内容。例如,如上所述,第一客户端设备可以通过生成存根数据结构并获得或生成用于第一文件的其他存根元数据,并从第一文件中删除第一文件的文件内容,来创建用于第一文件的存根文件。

在804处,第二客户端设备可以修改第一文件。例如,第二客户端设备可以与当在第一客户端设备上创建或最后更新第一文件的存根文件时文件内容的状态相比地改变第一文件的文件内容。

在806处,第二客户端设备可以将第一文件的修改从第二客户端设备发送到服务计算设备。例如,第二客户端设备可以将修改同步到服务计算设备用于在网络存储处的存储。

在808处,服务计算设备上的通知服务可以确定向哪些客户端设备通知对于存储第一文件的文件系统的文件系统改变。例如,通知服务可以访问在服务计算设备处保存的文件系统数据库,该文件系统数据库列出各种不同客户端设备和各种不同文件系统之间的关联。

在810,第一客户端设备可以从通知服务接收文件系统改变通知,该文件系统改变通知指示存在包括第一文件的文件系统的改变。可替代地,在其他示例中,可以消除通知服务,并且客户端设备可以周期性地向事务查询引擎发送用于改变的请求。

在812处,响应于接收到通知,第一客户端设备可以向事务查询引擎发送关于文件系统改变的信息的请求和令牌。上面讨论了该过程的例如关于图4和图5的其他细节。

在814处,第一客户端设备可以从事务查询引擎接收改变信息和新令牌。例如,改变信息可以包括第一文件的路径、操作类型、文件大小、文件修改时间等。新令牌可以包括用于文件系统的较新近的事务标识符。

在816处,第一客户端设备可以处理文件系统改变信息,检查本地第一文件的状态,以及基于改变信息更新存根文件元数据。例如,当更新存根文件元数据时,第一客户端可以根据由事务查询引擎提供的信息确定更新的文件内容的散列,并且可以将接收的散列存储在存根数据结构中。因此,第一客户端能够更新用于存根文件的元数据,包括路径、事件类型、修改时间、文件的新大小、实际更新文件内容的散列、文件的版本号等等,而无需下载更新的文件内容。

在818处,第一客户端设备可以接收与第一文件有关的用户请求。例如,用户可以打开窗口以查看包括第一文件的文件系统。

在820处,第一客户端设备上的本地操作系统可以基于第一文件的更新的存根元数据,呈现具有最新表示的第一文件的视图。

图9是示出根据一些实施的用于对远程创建的文件进行存根化的示例过程900的流程图。在一些情况下,过程900可以在多个客户端设备能够访问相同文件的环境中执行,例如在共享文件系统或在多个客户端设备上实施的专用文件系统的情况下。因此,在一些示例中,过程900可以由第一客户端设备和第二客户端设备执行。

在902处,第二客户端设备可以在第二客户端设备处生成第一文件。在该示例中,第一客户端设备当前没有第一文件的本地表示。

在904处,第二客户端设备可以将第一文件元数据和第一文件内容发送到服务计算设备以用于同步。

在906处,第一客户端设备可以从服务计算设备上的通知服务接收文件系统改变通知。

在908处,第一客户端设备可以向事务查询引擎发送关于文件系统改变的信息的请求和令牌。

在910处,第一客户端设备可以接收来自事务查询引擎文件系统的改变信息的列表和新令牌。

在912处,第一客户端设备可以处理文件系统改变信息,检查本地第一文件的状态,并确定不存在第一文件的本地表示。

在914处,第一客户端设备可以基于第一客户端设备的存储管理策略,确定将第一文件保存为存根文件。

在916处,第一客户端设备可以确定用于第一文件的存根文件元数据,其包括存根数据结构和用于创建存根文件的其他文件系统元数据。例如,第一客户端设备可以从接收自事务查询引擎的文件系统改变信息列表中获取存根文件元数据信息,其可以包括文件内容的散列、文件大小、文件路径、文件修改时间,等等。

在918处,第一客户端设备可以接收与第一文件有关的用户请求。例如,第一客户端设备的用户可以打开窗口以查看包括第一文件的文件系统。

在920处,第一客户端设备上的本地操作系统可以基于第一文件的更新的存根文件元数据,呈现具有最新表示(例如,最新的文件元数据值,诸如文件大小、最近的修改时间、当前路径等)的第一文件的视图。

图10是示出根据一些实施的远程地删除存根文件的示例过程1000的流程图。在一些情况下,过程1000可以在多个客户端设备能够访问相同文件的环境中执行,例如在共享文件系统或在多个客户端设备上实施的共享文件系统的情况下。因此,在一些示例中,过程1000可以由第一客户端设备和第二客户端设备执行。

在1002处,第一客户端设备可以在第一客户端设备处的文件系统中创建第一文件的存根。

在1004处,第二客户端设备可以接收从文件系统删除第一文件的用户指令。

在1006处,第二客户端设备可以从文件系统中删除第一文件并将文件信息的删除发送到服务计算设备,该服务计算设备对第一文件进行标记用于从网络存储器中的删除。

在1008处,第一客户端设备可以从服务计算设备上的通知服务接收文件系统改变通知。

在1010处,第一客户端设备可以从事务查询引擎请求关于文件系统的改变的信息,并且可以使该请求包括令牌。

在1012处,第一客户端设备可以接收来自事务查询引擎的改变信息和新令牌。在该示例中,改变信息可以指示该事件是文件的删除。

在1014处,第一客户端设备可以处理改变信息并从文件系统中移除第一文件的本地表示。例如,第一客户端设备可以从第一客户端设备上的文件系统中删除存根数据结构和其他存根文件元数据。

在1016处,当第一客户端设备的用户访问文件系统时,文件系统的本地操作系统视图可以反映文件系统的最新表示,其中第一文件从其中删除。另外,在本文的一些示例中,对存根文件的名称改变可以被视为文件删除操作和文件创建操作的组合,如上所述。

图11是示出根据一些实施的用于镜像数据的示例过程1100的流程图。过程1100示出了例如对于任何可能的路径,客户端设备能够同时执行镜像过程和存根化过程。在一些情况下,过程1100可以在多个客户端设备能够访问相同文件的环境中执行,例如在共享文件系统或在多个客户端设备上实施的专用文件系统的情况下。因此,在一些示例中,过程1100可以由第一客户端设备和第二客户端设备执行。

在1102处,第二客户端设备可以在第二客户端设备处生成第一文件。在该示例中,第一客户端设备当前没有第一文件的本地表示。

在1104处,第二客户端设备可以将第一文件元数据和第一文件内容发送到服务计算设备以用于同步。

在1106处,第一客户端设备可以从服务计算设备上的通知服务接收文件系统改变通知。

在1108处,第一客户端设备可以向事务查询引擎发送关于文件系统改变的信息和令牌的请求。

在1110处,第一客户端设备可以接收来自事务查询引擎的改变信息的列表和新令牌。

在1112处,第一客户端设备可以处理文件系统改变信息,检查本地第一文件的状态,并确定不存在第一文件的本地表示。

在1114处,第一客户端设备可以根据存储管理策略确定第一文件将在第一客户端设备上以镜像配置被保存,使得对第一文件内容的更新存储在第一客户端设备上。

在1116处,第一客户端设备可以下载第一文件的文件内容,并将附加元数据应用于从事务查询引擎接收到的改变信息中包括的元数据。例如,附加元数据可以与在第一客户端设备上保存的第一文件内容的镜像关系等相关。

在1118处,当第一客户端设备的用户访问文件系统时,文件系统的本地操作系统视图可以反映文件系统的最新表示,其中第一文件内容被指示具有文件系统中的最新镜像状态。

本文描述的示例过程仅是为讨论目的而提供的过程的示例。鉴于本文的公开内容,许多其他改变对于本领域技术人员而言是显而易见的。此外,虽然本文的公开内容阐述了用于执行过程的合适框架、架构和环境的若干示例,但是本文的实施不限于所示出和讨论的特定示例。此外,本公开提供了各种示例实施,如所描述的并且如附图中所示。然而,本公开不限于本文描述和示出的实施,而是可以扩展到其他实施,如本领域技术人员将会知晓或本领域技术人员将会变得知晓。

图12示出了根据一些实施的服务计算设备102和存储器104的选择组件的示例配置。在一些示例中,服务计算设备102可以包括可以以任何数量的方式体现的一个或多个服务器或其他类型的计算设备。例如,在服务器的情况下,虽然可以另外或可替代地使用其他计算机体系结构,但是模块、其他功能组件和至少一部分数据存储可以在至少一个服务器上实施,例如实施在服务器群集、服务器群(farm)或数据中心、云主机的计算服务中等等。在所示示例中,每个服务计算设备102包括一个或多个处理器1202、一个或多个计算机可读介质1204,以及一个或多个通信接口1206,或者可以与这些相关联。每个处理器1202可以是单个处理单元或许多处理单元,并且可以包括单个或多个计算单元,或多个处理核。可以将一个或多个处理器1202实施为一个或多个中央处理单元、微处理器、微计算机、微控制器、数字信号处理器、状态机、逻辑电路和/或基于操作指令来操纵信号的任何设备。例如,一个或多个处理器1202可以是专门编程或配置为执行本文描述的算法和过程的任何合适类型的一个或多个硬件处理器和/或逻辑电路。一个或多个处理器1202可以被配置为获取并执行在计算机可读介质1204中存储的计算机可读指令,该计算机可读介质1204可以对一个或多个处理器1202进行编程以执行本文描述的功能。

计算机可读介质1204可以包括以用于诸如计算机可读指令、数据结构、程序模块或其他数据之类的数字信息的存储的任何类型的技术来实施的易失性和非易失性存储器和/或可移动和不可移动介质。例如,计算机可读介质1204可以包括但不限于ram、rom、eeprom、闪速存储器或其他存储器技术、光存储器、固态存储器、磁盘存储器、raid存储系统、存储阵列、网络附加存储器、存储区域网络、云存储或可用于存储所需信息并且可由计算设备访问的任何其他介质。取决于服务计算设备102的配置,计算机可读介质1204可以是有形的非瞬态介质,在某种程度上,当提到时,非瞬态计算机可读介质排除诸如能量、载波信号、电磁波和/或信号本身之类的介质。在一些情况下,计算机可读介质1204可以与服务计算设备102处于相同的位置,而在其他示例中,计算机可读介质1204可以部分地远离服务计算设备102。例如,在一些情况下,计算机可读介质1204可以包括存储器104中的存储的一部分。

计算机可读介质1204可以用于存储可由一个或多个处理器1202执行的任何数量的功能组件。在许多实施中,这些功能组件包括可由一个或多个处理器1202执行的指令或程序,并且当被执行时,具体地对一个或多个处理器1202编程以执行本文归属于服务计算设备102的动作。存储在计算机可读介质1204中的功能组件可以包括事务查询引擎112、通知服务114和服务器程序118,这些中的每个可以包括一个或多个计算机程序、应用、可执行代码或其部分。例如,服务器程序118可以提供与客户端计算设备108和存储系统104的通信功能。存储在计算机可读介质1204中的附加功能组件可以包括用于控制和管理服务计算设备102的各种功能的操作系统1208。在一些情况下,功能组件可以存储在计算机可读介质1204的存储部分中,加载到计算机可读介质1204的本地存储器部分中,并且由一个或多个处理器1202执行。

此外,计算机可读介质1204可以存储用于执行本文描述的功能和服务的数据和数据结构。例如,计算机可读介质1204可以存储事务日志130、文件系统数据库116和数据api154。服务计算设备102还可以包括或保存其他功能组件和数据,例如其他模块和数据1210,其可以包括程序、驱动器等,以及由功能组件使用或生成的数据。此外,服务计算设备102可以包括许多其他逻辑的、编程的和物理组件,其中上述那些仅仅是与本文的讨论相关的示例。

一个或多个通信接口1206可以包括一个或多个接口和硬件组件,以用于能够例如经过一个或多个网络105和106,与各种其他设备的通信。因此,通信接口1206可以包括或可以耦合到提供到一个或多个网络105的连接以用于与存储系统104通信的一个或多个端口,以及提供到一个或多个网络106的连接106以用于与客户端计算设备108或其他计算设备通信的一个或多个端口。例如,一个或多个通信接口1206可以使得能够通过如本文其他地方另外列举的lan、因特网、电缆网络、蜂窝网络、无线网络(例如,wi-fi)和有线网络(例如,光纤通道、光纤、以太网)、直接连接,以及诸如等的近距离通信中的一个或多个进行通信。

图12的示例示出了根据一些实施的一个或多个服务计算设备102的一个可能的示例配置。在该示例中,第一服务计算设备102(1)可以耦合到第二服务计算设备102(2)。例如,第一服务计算设备102(1)和第二服务计算设备102(2)可以一起形成用于向多个客户端计算设备108(图12中未示出)提供存储和数据管理服务的计算设备。在一些示例中,第一服务计算设备102(1)可以充当主计算设备或主要计算设备,而第二服务计算设备102(2)可以充当从属或辅助计算设备,至少关于保存事务日志130和文件系统数据库116。例如,在第一服务计算设备102(1)上的服务器程序118、通知服务114和/或事务查询引擎112可以在第一服务计算设备102(1)上更新和保存事务日志130和文件系统数据库116。如1211所指示,服务器程序118或第一服务计算设备102(1)上的其他程序可以将事务日志130和文件系统数据库122复制到第二服务计算设备102(2)。因此,如果第一服务计算设备102(1)遭受故障,则第二服务计算设备102(2)可以承担主要计算设备的角色,而第一服务计算设备102(1)被替换为不同的服务计算设备(图2中未示出)和/或被修复。在此期间,第二服务计算设备102(2)可以执行上面讨论的用于文件存根化的数据管理服务。

在所示示例中,存储器104被维持在存储系统1212中,但是本文的实施不限于这里示出和/或描述的存储示例。存储系统1212可以包括一个或多个存储计算设备1214,其可以包括一个或多个服务器或任何其他合适的计算设备,诸如以上关于服务计算设备102所讨论的任何示例。一个或多个存储计算设备140可以各自包括一个或多个处理器1216、一个或多个计算机可读介质(crm)1218,以及一个或多个通信接口(i/f)1220。例如,处理器1216可以对应于以上关于处理器1202所讨论的任何示例,计算机可读介质1218可以对应于上面关于计算机可读介质1204所讨论的任何示例,以及通信接口1220可以对应于以上关于通信接口1206所讨论的任何示例。

另外,计算机可读介质1218可以包括存储程序1222,作为由一个或多个处理器1202执行的功能组件,以用于管理存储系统1212中包括的存储器104上的数据的存储。存储器104可以包括与存储器104相关联的一个或多个控制器1224,以用于在存储设备1228的一个或多个阵列1226上存储数据。例如,控制器1224可以控制阵列1226,例如用于在raid配置中配置阵列1226,等等,和/或用于基于存储设备1228向存储程序1222呈现逻辑单元,并且用于管理存储在底层物理存储设备1228上的数据,例如数据对象1230。数据对象1230可以对应于文件内容、文件元数据和本文讨论的其他数据。存储设备1228可以是任何类型的存储设备,例如硬盘驱动器、固态驱动器、光盘驱动器、磁带、它们的组合等。在一些示例中,一个或多个阵列1226可以包括精简配置阵列,其被配置为提供按需存储容量。此外,图12的示例仅是一个或多个服务计算设备102和存储器104的可能配置的一个示例。对于受益于本文公开内容的本领域技术人员而言,许多其他配置将是显而易见的。

图13示出了根据一些实施的示例客户端设备108的选择示例组件。每个客户端计算设备108可以是任何合适类型的计算设备,诸如工作站、台式机、膝上型计算机、平板计算设备、移动设备、智能电话、可穿戴计算设备或能够经过网络发送和接收数据的任何其他类型的计算设备。此外,客户端计算设备108可以能够通过一个或多个网络106,通过单独的网络,或通过任何其他合适类型的通信连接与一个或多个服务计算设备102通信。对于受益于本文公开内容的本领域技术人员而言,许多其他改变是显而易见的。

在基本配置中,客户端设备108包括诸如至少一个处理器1302、一个或多个计算机可读介质1304、一个或多个通信接口1306以及一个或多个输入/输出(i/o)组件1308的组件。每个处理器1302本身可以包括一个或多个处理器或处理核。例如,可以将每个处理器1302实施为一个或多个微处理器、微计算机、微控制器、数字信号处理器、中央处理单元、状态机、逻辑电路和/或基于操作指令来操纵信号的任何设备。在一些情况下,处理器1302可以包括一个或多个硬件处理器和/或任何合适类型的逻辑电路,其被专门编程或配置为执行本文所述的过程和其他算法。处理器1302可以被配置为获取并执行存储在计算机可读介质1304中的计算机可读处理器可执行指令。

取决于客户端设备108的配置,计算机可读介质1304可以是有形非瞬态计算机可读介质的示例,并且可以包括易失性和非易失性存储器和/或可移动和不可移动介质,其以用于诸如计算机可读处理器可执行指令、数据结构、程序模块或其他数据之类的信息存储的任何类型技术来实施。计算机可读介质1304可以包括但不限于ram、rom、eeprom、闪速存储器、固态存储、光存储、磁盘存储、磁带和/或其他类型的存储技术。此外,在一些情况下,客户端设备108可以例如直接地、通过另一计算设备或通过网络来访问外部存储。因此,计算机可读介质1304可以是能够存储可由处理器1302执行的指令、程序或软件代码的计算机存储介质。

计算机可读介质1304可用于存储和保存可由处理器1302执行的任何数量的功能组件。在一些实施中,这些功能组件包括可由处理器1302执行的指令或程序,并且当这些指令或程序被执行时,实施用于执行上面归因于客户端设备108的动作和服务的操作逻辑。存储在计算机可读介质1304中的客户端设备108的功能组件可以包括客户端应用120和数据同步服务122,如上所述。附加功能组件可以包括操作系统1310,以用于控制和管理客户端设备108的各种功能并且用于使得能够与客户端设备108进行基本用户交互。在一些示例中,客户端应用120可以包括或可以访问文件系统过滤器驱动器1312,或者能够与操作系统交互以用于拦截针对存根文件的文件访问请求的类似组件,如上所述。计算机可读介质1304可以进一步包括可以在客户端设备108上执行的以用于执行各种功能和任务的一个或多个应用1314。

此外,计算机可读介质1304还可以存储由功能组件使用的数据、数据结构等。例如,由计算机可读介质1304存储的数据和数据结构可以包括一个或多个令牌128、一个或多个文件系统124、存储管理策略1316、文件同步信息1318、数据api154、存根数据结构200,以及用户的简档信息402。取决于客户端设备108的类型,计算机可读介质1304还可以可选地包括其他功能组件和数据,例如其他模块和数据1322,其可以包括程序、驱动器等,以及由功能组件使用或生成的数据。此外,客户端设备108可以包括许多其他逻辑的、编程的和物理组件,其中所描述的那些仅仅是与本文的讨论相关的示例。

客户端设备108可以进一步包括一个或多个通信接口1306。一个或多个通信接口1306可以包括一个或多个接口和硬件组件,以用于使得能够诸如通过网络105和106之类与各种其他设备通信。因此,通信接口1306可以包括或可以耦合到提供到一个或多个网络105的连接以用于与存储系统104通信的一个或多个端口,以及提供到一个或多个网络106的连接以用于与服务计算设备102或其他计算设备通信的一个或多个端口。例如,一个或多个通信接口1306可以使得能够通过如本文其他地方另外列举的lan(局域网)、wan(广域网)、因特网、线缆网络、蜂窝网络、无线网络(例如,wi-fi)和有线网络(例如,光纤通道、光纤、以太网)、直接连接,以及诸如等的近距离通信中的一个或多个进行通信。

客户端设备108可以进一步包括i/o组件1308,例如扬声器、麦克风、相机和各种用户控件(例如,按钮、操纵杆、键盘、小键盘、触摸屏等)、触觉输出设备等。例如,客户端设备108的操作系统1310可以包括合适的驱动器,其被配置为接受来自小键盘、键盘或包括i/o组件1308的其他用户控件和设备的输入。另外,客户端设备108可以包括显示器1324,其可以是被动的、发光的或任何其他形式的显示器。另外,客户端设备108可以包括未示出的各种其他组件,其示例包括各种类型的传感器、全球定位系统设备、电源,诸如电池和电源控制单元等。

本文描述的各种指令、过程和技术可以在诸如存储在计算机可读介质上并且由本文的处理器执行的程序模块之类的计算机可执行指令的一般上下文中被考虑。通常,程序模块包括用于执行特定任务或实施特定抽象数据类型的例程、程序、对象、组件、数据结构、可执行代码等。这些程序模块等可以作为本机代码执行,或者可以下载和执行,例如在虚拟机或其他即时编译执行环境中。通常,程序模块的功能可以根据需要在各种实施中组合或分布。这些模框和技术的实施可以存储在计算机存储介质上或通过某种形式的通信介质传送。

尽管以结构特征和/或方法动作特定的语言描述了本主题,但应理解,所附权利要求书中定义的主题不必限于所描述的具体特征或动作。而是,公开了具体特征和动作作为实施权利要求的示例形式。

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