CN115336237A - 远程存储的文件的预测性供应 - Google Patents

远程存储的文件的预测性供应 Download PDF

Info

Publication number
CN115336237A
CN115336237A CN202180022267.9A CN202180022267A CN115336237A CN 115336237 A CN115336237 A CN 115336237A CN 202180022267 A CN202180022267 A CN 202180022267A CN 115336237 A CN115336237 A CN 115336237A
Authority
CN
China
Prior art keywords
file
read request
cloud
remote file
local
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202180022267.9A
Other languages
English (en)
Inventor
M·瑟尔
A·P·科切姆尼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN115336237A publication Critical patent/CN115336237A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/561Adding application-functional data or data for application control, e.g. adding metadata
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • H04L67/5681Pre-fetching or pre-delivering data based on network characteristics

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Measuring Pulse, Heart Rate, Blood Pressure Or Blood Flow (AREA)
  • Electrotherapy Devices (AREA)

Abstract

一种可访问在远程***上存储的远程文件的计算机***,其可预测远程文件的一部分可能是必需的。计算机***可以将远程文件的该部分下载到本地文件,并且更新本地文件的元数据以反映所下载的部分。

Description

远程存储的文件的预测性供应
技术领域
本发明涉及文件存储,更具体地,涉及预测性地将远程存储的文件下载到本地文件***。
背景技术
云存储在商业和个人设置中都变得越来越普遍。利用云同步存储应用,当用户在新的计算机上安装云同步存储应用时,用户的云存储的文件和/或数据可以被自动下载到本地存储中。
然而,自动下载被存储在用户的云中的每个文件可能不必要地消耗了带宽和本地存储空间。例如,如果用户的云包括多个重要文档以及若干太字节(TB)的视频文件,则自动下载所有文件可取决于用户的新本地机器的配置和因特网连接而花费数小时到数天(或甚至更长),并且可能在下载重要文档之前完全填满用户的新机器的本地存储。因此,许多云同步的存储应用实施各种方法来防止不必要地下载大量数据,诸如提供文件列表和仅在接收到读取指令时(诸如当用户尝试打开当前仅在云中的文件时,即当前不存在本地副本时)才下载文件。
这还使得云***能够充当“远程存储”—用户可以将文件上传到云并且删除文件的本地副本,从而释放在用户的本地***上的存储空间。如果用户期望再次利用文件,则云同步存储应用发起将文件“下载回”本地存储,从而使得能够使用。
然而,许多类型的读取指令不需要访问整个文件。例如,许多文件资源管理器***仅通过使用视频的预定帧(例如,第五帧)来自动生成视频文件的缩略图图像。该单个帧可以从视频文件中读取(经由读取请求发起的过程),可能被压缩和/或调整大小,然后被显示为缩略图,此时可以不需要关于文件的进一步信息。因此,寻求访问大的视频文件(例如,若干GB文件)的读取请求实际上可能仅需要读取几千字节(kB)。
由于常规***可通过启动整个文件的下载来响应以文件为目标的读取请求,因此,它们可能浪费大量的计算资源。继续上述的示例,即使当时仅需要视频的单个帧,常规***也可下载整个视频文件。
发明内容
根据本发明的一个方面,提供了一种方法,包括:识别在远程计算***上存储的远程文件;预测远程文件的预测部分可能要受到未来的读取请求;将远程文件的预测部分下载到本地文件;以及更新本地文件的元数据以将本地文件的本地部分映射到远程文件的预测部分。该方法通过预测性地下载远程存储的文件的部分,有利地提高了远程文件存储计算***的效率,从而潜在地减少当请求远程存储的文件时所下载的数据量。
该方法还可以包括:接收第一读取请求,其中:识别至少基于第一读取请求的目标;并且预测至少基于第一读取请求。这通过响应于读取远程存储的文件的请求而下载该文件的被预测为必要的部分(而不是整个文件)而有利地提高了远程文件存储计算***的效率。
该方法还可以进一步包括:至少基于应用简档(profile)数据库,确定发起第一读取请求的请求应用,其中,预测进一步至少基于请求应用。这通过使要下载的部分的预测基于请求文件的应用而有利地提供了附加的预测的准确性。
该方法还可以包括:接收以远程文件的目标部分为目标的第二读取请求;以及至少基于预测部分和目标部分,更新应用简档数据库。这有利地使得能够增强确定应用的标识与预测部分之间的相关性的准确性。
本发明的另一个方面采用计算机程序产品的形式来提供,该计算机程序产品包括具有随其实现的程序指令的计算机可读存储介质,该程序指令可由计算机执行以使计算机执行上述方法中的任一个方法。这通过预测性地下载远程存储的文件的部分,有利地提高了远程文件存储计算***的效率,从而减少当请求远程存储的文件时所下载的数据量。
本发明的另一个方面采用包括存储器和中央处理单元(CPU)的***的形式来提供。CPU可以被配置为执行上述方法中的任何一个方法。这通过预测性地下载远程存储的文件的部分,有利地提高了远程文件存储计算***的效率,从而减少当请求远程存储的文件时所下载的数据量。
上述发明内容并非旨在描述本公开的每个所示实施例或每种实施方式。
附图说明
在本申请中包括的附图被并入说明书中并形成说明书的一部分。它们示出了本公开的实施例,并且与说明书一起用于解释本公开的原理。附图仅说明某些实施例,而不限制本公开。随着以下具体实施方式进行,在参考附图时,所要求保护的主题的各种实施例的特征和优点将变得显而易见,在附图中,相同的标号指示相同的部分,并且其中:
图1示出根据本公开的若干实施例的响应于以云存储的文件之一为目标的读取请求而预测性地供应云存储的文件的方法;
图2示出根据本公开的若干实施例的示例性云存储的文件和在下载云存储的文件的所识别部分之后的示例性本地存储的文件的框图;
图3示出根据本公开的若干实施例的识别负责发起读取请求的应用的方法;
图4示出根据本公开的若干实施例的预测性地供应云同步文件的方法;
图5描绘根据本公开的实施例的云计算环境;
图6描绘根据本公开的实施例的抽象模型层;以及
图7示出可以用于实现本公开的实施例的示例计算机***的高级框图。
虽然本发明可修改成各种修改和替换形式,但是,其细节已经在附图中通过示例的方式示出并且将被详细描述。然而,应当理解,其目的不是将本发明限制于所描述的特定实施例。相反,本发明覆盖落入本发明的精神和范围内的所有修改、等同和替换。
具体实施方式
本公开的方面涉及预测性地供应一个或多个云存储的文件的***和方法。更具体的方面涉及一种***,其检测读取请求,对读取请求的类型进行分类,预测云存储的文件的满足读取请求所需的一部分,以及下载云存储的文件的预测部分。
在本公开中,提到了“云同步存储应用”。如本文所使用的,“云同步存储应用”是指在客户端计算***(“客户端设备”)上执行的应用,以使得客户端设备能够将一个或多个文件上传到基于云的计算***(“云”)中并且经由例如因特网从云中下载文件。一旦文件被上传,则客户端设备可以删除上传文件的本地副本,但是可以稍后将云存储的文件下载回本地存储。这使得客户端设备能够释放本地存储空间,同时在需要时仍然可以访问文件。如本领域普通技术人员将理解的,本文描述的***和方法不一定限于与基于云的***一起使用;根据本公开,可以类似地改进通用远程文件存储。
云同步存储应用程序通常提供在云中存储的文件的列表,其中的任何文件也可被本地存储。该列表通常被实现为一系列“占位符”文件(通常,文件仅包含关于实际文件的最少元数据,诸如文件名、文件大小、最后修改日期等)。从客户端设备的用户的角度来看,文件可以被呈现为如同它们都被本地存储一样,或者它们可以被呈现有标记以区别在云中和本地都存储的文件和当前“仅限云(cloud-only)”文件。如本文所使用的,短语“仅限云”是指在云***上存储的但在本地存储设备上没有存储的文件(即,仅限云文件的本地副本不存在)。仅限云文件通常可经由云同步存储应用按需下载到本地存储,在此之后,该文件将不再被称为“仅限云”。注意“仅限云”与“占位符”不是同义词;作为澄清的示例,当考虑在云上存储的但在客户端设备上未存储的3GB视频文件时,“仅限云”文件是指在云上存储的3GB视频文件本身,而相关联的~1kB“占位符”文件被本地存储在客户端设备上以表示视频文件(列出的元数据,例如,它的文件名、文件类型等)。因此,如果客户端设备的用户希望打开“仅限云”文件,则用户可以双击“占位符”文件。
值得注意的是,虽然本公开广泛地涉及云存储的文件,但是一些实体可以利用位于终端用户的场所上的在地理上分布的服务器。这些和其它类似的用例可以被认为是“私有云”实现。如本领域普通技术人员将理解的,本公开可以有利地改善这种***的性能。
在本公开中,提到“读取请求”。如在本文所使用的,“读取请求”是指数字请求的类别,所有这些数字请求正寻求访问文件。读取请求可以由用户动作发起,诸如通过用户双击表示文件的图标(这可以被称为“打开”请求,这是一种类型的读取请求)。读取请求也可以由在客户端设备上执行的应用自动发起,而无需直接的用户输入,诸如尝试自动生成视频文件的缩略图的文件资源管理器程序。
读取请求通常是操作***(OS)或文件资源管理器在访问文件的过程中的第一步。值得注意的是,文件资源管理器***不必公开文件的什么部分将被需要作为初始读取请求的一部分。相反,在典型的计算机***中,识别相关联的文件的读取请求被发送到存储控制器。存储控制器可以通过定位所识别的文件并用确认进行响应以指示所请求的文件准备好被读取来对读取请求做出反应。然后,文件资源管理器可以继续进行更具体的请求(即,“返回文件的300-700位”)。
进一步地,许多读取请求不需要访问整个文件。例如,继续上面的“缩略图”示例,许多文件资源管理器***仅通过使用视频的预定帧(例如,第五帧)来自动生成视频文件的缩略图图像。该单个帧可以从视频文件中读取(经由读取请求发起的过程),可能被压缩和/或调整大小,然后被显示为缩略图,此时可以不需要关于文件的进一步信息。因此,寻求访问大视频文件(例如,若干GB文件)的读取请求可能实际上仅需要读取几千字节(kB)。
云同步存储应用可以监视寻求访问仅限云文件的读取请求。当常规的云同步存储应用检测到针对仅限云文件的读取请求时,它可以通过发起该文件的下载来响应,随后用指示文件准备好被读取的确认来响应该请求。
然而,与本公开一致的***和方法使得能够确定、预测、估计或以其他方式近似受到读取请求的文件的哪些部分可能实际上是必需的,并且下载那些部分。通过基于该预测仅下载文件的特定部分,根据本公开的***和方法可以有利地节省大量的资源(例如,带宽、本地存储空间、处理资源、能量、时间等)。例如,如果所讨论的文件是大的视频文件,并且读取请求被确定为仅需要单个帧,则仅下载该帧而不是整个视频文件可以节省若干GB的带宽。
为了确定应当下载受到读取请求的文件的哪些部分,根据本公开的云同步存储应用的方面可以基于上下文信息对读取请求进行分类。上下文信息可以包括描述例如发起读取请求的应用(诸如文件资源管理器、图像编辑器等)和/或客户端***(诸如运行时间、诸如下载、安装等的最近操作)的信息。
在检测到读取仅限云文件的请求(诸如读取对应的仅限云文件的占位符文件的请求)时,云同步存储应用可利用上下文信息来确定和/或分类读取请求的性质,以便确定应下载仅限云文件的哪些部分。上下文信息可以包括描述例如发起读取请求的应用(诸如文件资源管理器、图像编辑器等)和/或客户端***(诸如运行时间、诸如下载、安装等的最近操作)的信息。可由云同步存储应用使用的上下文信息的示例包括应用标识、***配置信息、历史请求数据、预设/硬编码模式等。
例如,第一应用可频繁地发起仅读取文件的一小特定部分的读取请求,而第二应用可频繁地发起需要文件的大部分或甚至整个文件的读取请求。这些简档可以经由应用剖析器(profiler)而随着时间的推移被开发和监视,如以下进一步详细描述的。至少部分地基于从应用剖析器收集的信息,读取请求可被分类成若干类别之一。由第一应用发起的读取请求更可能仅需要访问文件的一小特定部分。在这种情况下,根据本公开的云同步存储应用可预期整个文件对于满足请求不是必需的,并因此可发起下载文件的一小特定部分。另一方面,由第二应用发起的读取请求更可能需要整个文件。因此,取决于读取请求源自的应用,云同步存储应用可以识别并下载文件的特定部分(或者,如果认为必要,则是整个文件)。
应当理解,上述优点以及本文所述的其它优点是示例性优点,并且不应当被解释为限制。本公开的实施例可以包含全部或一些优点,或者不包含任何优点,而保持在本公开的精神和范围内。
图1示出了根据本公开的若干实施例的预测性云存储的文件供应方法100。在一些实施例中,方法100可由硬件、固件、在处理器上执行的软件、或其任何组合来执行。例如,方法100可以由根据本公开的云同步存储应用执行。方法100包括:在操作102处,检测寻求(或针对)云存储的文件的读取请求。操作102可以包括例如云同步存储应用监视由在客户端设备上执行的应用发起的请求。云同步存储应用可经由对应占位符文件的本地存储来维持云存储的文件(尤其是“仅限云”文件)的列表。进一步地,云同步存储应用可被配置有特权级别,使得它能够监视由相对低级别的应用(诸如文件资源管理器或操作***本身)发起的指令或请求。如果在客户端设备上执行的应用(例如,文件资源管理器)发起具有与仅限云文件对应的占位符文件的文件标识符的读取请求,则在操作102处,云同步存储应用检测该请求。在一些实施例中,云同步存储应用可以是被包括在操作***中的应用、服务、或功能集合。
方法100还包括:在操作104处,对读取请求进行分类。通常,操作104包括:确定读取请求的“真实”起源,以及确定读取请求的目的,以便近似所讨论的文件的哪个(哪些)部分实际上需要被下载以便满足该请求。例如,读取请求可以被分类为“OPEN(打开)”请求或“AUX”请求。OPEN请求可以与打开所讨论的文件相关联(需要下载整个文件),而AUX请求可以与任何其他类型的读取请求相关联。AUX请求的例子可以包括寻求生成缩略图的请求(“缩略图请求”)或者寻求文件元数据的请求(寻求诸如大小、日期、作者等信息的“元数据请求”)。其它分类也是可以的,以及更具体的分类(例如,第一类型的元数据请求可需要作者和文件大小,而第二类型的元数据请求可需要作者、文件名、以及创建日期)。
在操作104,可以基于上下文信息对读取请求进行分类。如本文所使用的,“上下文信息”可以包括从除了读取请求本身之外的源收集的读取请求的上下文。例如,上下文信息可以包括文件的元数据、发起读取请求的应用(“请求应用”)的标识、请求源自的客户端***的硬件配置、请求的时间/日期、先前的操作、历史趋势等。可以基于例如一个或多个剖析器的输出来确定上下文信息,如以下进一步详细描述的。
可以基于加权分析而从可能分类的列表中选择分类。例如,各种上下文信息可以与不同的权重相关联,产生可能分类的列表,每个可能分类具有预测的可能性。作为示例,如果所请求的仅限云文件是视频文件,并且请求应用是文件资源管理器,则该上下文信息可以对操作104的确定加权和/或使操作104的确定偏向于缩略图请求。然而,如果请求应用是媒体播放器,则缩略图请求可被认为是不太可能的。
在一些实施例中,选择具有最高预测可能性的分类。在一些实施例中,如果没有“明确的获胜者”(例如,如果没有潜在分类具有大于阈值的可能性或者没有潜在分类具有与其他分类相比足够大的“胜利裕度(margin)”),则执行方法100的***可以认为分类不成功,并发起整个文件的下载(在该点处,方法100将结束)。在一些实施例中,当分类尝试没有产生明确的获胜者时,可以随机选择分类。在一些实施例中,如果分类尝试没有产生明确的获胜者,则执行方法100的***可以调整各种类型的上下文信息的权重并且重新评估。
方法100还包括:在操作106处,识别和/或预测必需的文件片段。操作106可以包括例如确定请求应用可能需要的仅限云文件的位范围。例如,在一些实施例中,执行方法100的***可确定前300kB最可能被请求。
在一些实施例中,在操作106处进行的确定可以基于在操作104处确定的所检测到的读取请求的分类。在一些实施例中,执行方法100的***可以考虑诸如上述的上下文信息,作为操作106的一部分。例如,如果读取请求被分类为缩略图请求,则操作106可以包括分析文件的元数据以确定特定关键帧的位置。另一方面,在一些实施例中,在操作106处的预测仅基于请求的分类。例如,执行方法100的***可以被“硬编码”以针对所有缩略图请求将文件的必需部分识别为3,000至12,000位。
因为某些请求可能寻找文件的多个不连续部分,所以,在操作106处可以识别多个范围。例如,元数据请求可以寻找文件的作者姓名和文件名。文件可以按特定顺序存储元数据;例如,文件的作者可以被存储在13,384至13,415位,文件的创建日期可以被存储在13,416至13,423位,并且文件的文件名可以被存储在13,424至13,511位。因此,为了满足示例元数据请求,操作106可以包括识别13,384至13,415位以及13,424至13,511位。
一旦识别了文件的预测部分,方法100还包括:在操作108处,下载预测部分。这可以包括例如向云***发送针对在操作106中识别的数据的下载请求,并且下载所识别的数据。下载的数据可以被保存到本地存储中,如以下将参考图2进一步详细描述的。在一些实施例中,可以基于下载的数据替换和/或修改目录中的“占位符”文件。在一些实施例中,下载的数据可被保存在单独的高速缓存中,并且现有的占位符文件可不被修改。
在一些实施例中,可以向所识别的部分添加附加的裕度。换言之,操作108可包括下载在操作106处被预测为必需的位范围之外的附加数据。虽然这可能消耗额外的资源,但是对容错的有利改进可能超过成本(例如,如果预测不正确,则实际需要的数据可仍然被下载)。参考其中根据需要识别了13,384至13,415位和13,424至13,511位的先前示例,操作108可以例如将8位裕度添加到位范围的一个或多个结尾。因此,***可以下载例如13,376至13,415位和13,424至13,511位(下载位于预测范围“之前”的8个附加位)。***还可以下载13,384至13,519位(下载两个范围之间的8位以及在“结尾”处的8位,总共16个额外的位)。
在一些实施例中,可以预先确定裕度。例如,在一些实施例中,执行方法100的***可以总是对在每个范围的每个结尾上(在可能的情况下)的下载添加5kB裕度。在一些实施例中,可以基于各种参数(诸如读取请求分类和/或上下文信息)选择裕度。例如,***可以在满足缩略图请求所需的所识别范围“之后”下载3kB,但是可以在被预测为满足元数据请求所必需的范围“之前”和“之后”分别下载1kB和15kB。如本领域普通技术人员将理解的,用于裕度选择的其他基础也是可能的。
操作108还可以包括跟踪、映射或以其他方式记录哪些位已被下载。作为澄清的示例,如果已下载了235,016至235,023位和235,032至235,039位,则这些位可以在本地存储中被保存为1-16位,但是,操作108可另外包括:记录本地位1对应于“实际”位235,016,本地位12对应于实际位235,035等。这可以有利地使执行方法100的***能够返回正确的所请求的位,因为读取请求和后续更具体的位请求可以“假设”正在访问整个文件。
在一些实施例中,操作108还可以包括:基于当前网络配置和使用来扼制或以其他方式修改下载速率。在一些实施例中,操作108可以包括检查预测数据是否已经被下载并被本地存储;如果是,则执行方法100的***可以不执行下载。
在数据被下载(或定位)的情况下,方法100还包括:在操作110处继续,如同完整的文件可用一样。操作110可以包括例如向文件资源管理器应用和/或操作***发送确认信号。确认可以被配置为“模仿”典型的所请求的文件已经被定位并且准备好读取的确认(诸如由例如存储控制器发送的确认)。
因此,发送了读取请求的应用可以继续,如同完整的文件可用一样,并且可以用包含更具体的读取指令(诸如“寻找5,000位,然后返回接下来的2,500位”)的第二读取请求来响应确认。本质上,在操作106处进行的预测是预测性地预取将由这些更特定的读取指令访问的数据的尝试。如果预测是准确的(或具有足够的裕度),则执行方法100的***能够返回所请求的位而不执行任何附加的下载。注意,继续“寻找5,000位,然后返回接下来的2,500位”的例子,如果作为操作108的一部分跟踪位的“本地相对实际”位置,则执行方法100的***将不需要实际执行“寻找5,000位”指令。相反,***可以确认已经下载了5,001-7,500位,并且如果是的话,则继续返回它们。因此,***可以满足读取请求而无需下载整个仅限云文件。
如果***确定所请求的位还没有被下载(例如,如果操作106的预测不正确),则可以采取若干不同动作中的一个动作。例如,在一些实施例中,***可以仅下载整个文件。在一些实施例中,***可以下载具体请求的位。下面(参照图4)进一步详细描述对不正确的预测的这些和其它响应。
图2示出根据本公开的若干实施例的示例云存储的文件200和在下载云存储的文件200的所识别的部分202和208之后的示例本地存储的文件220的框图。云文件200包括多个位(即,“0”或“1”)。在给定的时间点,云文件200可以是仅限云文件,因为文件200的完整本地副本不存在。在分割线210下方描绘的框(即,框222、228和230)表示本地存储的文件220的位。箭头212和218表示下载操作,诸如由云同步存储应用所发起的下载操作。虽然示出了两个单独的箭头212和218,但是应当理解,它们不一定表示两个顺序下载。例如,由那些箭头212和218所引用的下载的数据可以在单个下载操作中被下载,或者可以在多个同时下载操作中被下载。
本地文件220的各种位范围可以包含与云文件200的对应位范围相比相同的数据。例如,作为下载212的结果的第一本地位范围222可以与第一云位范围202相同,而作为下载218的结果的第二本地位范围228可以与第二云位范围218相同。如本文所使用的,“相同”是指位本身的逻辑状态;例如,范围202和222可以都包含相同的位(例如,两个范围都可以是1000101011010010等等)。
不是本地文件220的所有位都必须从云文件200复制;例如,本地文件220还可包括元数据,诸如将本地文件220的哪些位对应于云文件200的哪些位映射的信息。在图2中,这种元数据被描绘为范围230。元数据230(包括本地-云位的映射)可以在执行诸如212或218的下载时(例如由云同步存储应用)生成。元数据230可以基于进一步的下载、删除等来更新。
本地文件220可以被存储在本地存储设备上,例如硬盘驱动器(HDD)、固态驱动器(SSD)、易失性存储器等。进一步地,在一些实施例中,本地文件220可以包括附加的标签和/或元数据,这取决于云文件200和下载的片段222、228的性质。
例如,在至少一个实施例中,在其上存储了本地文件222的本地***利用“缩略图数据库”。如在本文所使用的,“缩略图数据库”是指目录中的典型隐藏文件,其包含目录中的文件的缩略图图像以使得能够快速生成缩略图。如果在示例本地***上的目录中不存在缩略图数据库,则***可以生成一个缩略图数据库(例如,通过从目录中的视频文件中拉取帧、生成目录中的图像文件的小副本等),并且将新的缩略图数据库保存在目录中以供将来使用。在该示例实施例中,云文件200可以是视频文件,并且本地位222可以包括缩略图图像。本地文件220可包括将本地文件220识别为典型缩略图数据库的元数据。因此,如果在***上执行的文件资源管理器应用尝试访问目录,则该应用将检测本地文件220,并且将使用本地位222作为表示云文件200的占位符文件的缩略图。由于本地文件220可在读取请求之外生成,因此,这使得云同步存储应用在文件资源管理器应用访问目录之前生成缩略图数据库。
在一些实施例中,本地文件220可包括标签和/或元数据(诸如在范围230中)以使本地文件220对于用户和/或文件***看起来如同它是完整的云文件200。因此,如果应用请求位范围202和/或208(“相信”它正尝试从云文件200的完整本地副本中读取这些位),则云同步存储应用可能能够满足读取请求而无需下载整个云文件200。
取决于云文件200的性质,不同的位范围可以存储不同的数据;例如,文件200的片段202(13,000至13,511位)可以存储文件200的作者的姓名,文件200的片段204(13,512至13,767位)可以存储文件200的创建日期,片段206(13,768至14,023位)可以存储文件200最后被修改的日期,片段208(14,024至14,535位)可以存储文件200的文件名等。为了清楚起见,在图2中描绘的特定位范围仅用于示例的目的;不同文件(图2中未示出)的13,000至13,511位可用于与存储该不同文件的作者的姓名完全不同的目的,或者实际上甚至可以不存在(即,该不同文件可包含少于13,000位)。
在一些实施方式中,云同步存储应用可确定云文件200的一个或多个部分(即,一个或多个位)可能需要被下载到本地存储设备。这可以响应于检测到针对云文件200的读取请求(诸如经由方法100的操作102,如关于图1所描述的)来完成。在一些实施例中,云同步存储应用可确定即使在不存在读取请求的情况下,云文件200的某些部分也应当被下载,例如当云同步存储应用在新***上被首次安装和启动时,如将在下面进一步详细描述的。
本地文件220可与一个或多个占位符文件一起被存储在云同步目录中。如上所述,占位符文件可以是表示仅限云文件的本地存储的文件。占位符文件可包含最少元数据,以便使文件***能够跟踪哪些文件被存储在云上(例如,如果仅限云文件被永久删除或移动到不同的目录,则对应的占位符文件也可被相应地删除或移动以向文件***指示文件在该目录中不再存在)。
在一些实施例中,本地文件220可以是(或替换)占位符文件。例如,在一些实施例中,云同步存储应用程序可经由下载212和/或下载218从云中下载数据,并修改先前存在的占位符文件以将与范围202和/或208对应的数据分别添加到占位符文件。在这种实施例中,本地文件220是占位符文件本身。
在一些实施例中,本地文件220可被存储在不同的目录中(例如,与包括占位符文件的云同步目录分开的目录,诸如在压缩档案或数据库中),但是可在检测到针对云文件200的读取请求时被访问(例如,被云同步存储应用)。例如,云同步存储应用可以具有使得它能够监视由执行云同步存储应用的***执行的操作的安全特权。进一步地,云同步存储应用可以能够拦截某些指令。
例如,在一些实施例中,在监视由***执行的操作时,云同步存储应用可以检测从文件资源管理器提交到存储控制器的针对云文件200的读取请求。响应于检测到该读取请求,云同步存储应用可拦截该请求,访问本地文件220(即使本地文件220被存储在本地驱动器上的完全不同的位置),并对读取请求进行响应,如同它是确认拥有云文件200的存储控制器。响应于拦截并响应该请求,云同步存储应用可以接收后续请求,寻找在位202和/或208中存储的数据的更具体的请求,此时云同步存储应用可以分别从本地文件220返回本地位222和/或228。因此,文件资源管理器应用可以表现为如同它刚刚访问了文件200的完整副本并且使它的请求正常地完成。
后续的读取请求可以包括指令,以便指导接收方如何访问期望位。例如,如果文件资源管理器期望14,024至14,535位(范围208),则后续的读取请求可以指示接收方“寻找14,024位并返回跟着的512位”。基于被存储在本地位230中的映射,云同步存储应用可确定期望范围208对应于本地范围228,并因此可改为寻找512位并返回跟着的512位。因此,可以满足请求,并且返回所请求的位,而无需下载云文件200的整个本地副本。
如果后续的读取请求包括指示期望数据没有被存储在本地文件220中的指令(例如,如果后续的读取请求指示“寻找3,000位并返回跟着的4,000位”,但是所请求的数据的本地副本不存在),则这可以指示可能被请求的数据的早期预测是不正确的。存在对这种情况的若干不同的响应。例如,在一些实施例中,云同步存储应用可以通过仅发起从云文件200中下载具体请求的位(在该示例中,是3,001至7,000位)并在下载完成时返回它们(可能地,还将新下载的位保存在本地文件220中并在特定数据被再次请求的情况下更新元数据230)来进行响应。
然而,存在多个后续请求期望附加数据的可能性。虽然云同步存储应用程序可针对每个请求仅检查所请求的数据并在需要时下载它,但发起从云下载数据具有非零资源占用。发起数十个较小下载的计算成本可能比仅下载整个文件一次更快地消耗更多的时间和资源。另外,如果早期预测不能导致下载现在期望的数据,则这可以指示预测不正确和/或被误报,从而增加附加的后续请求将调用在本地文件220中不存在的数据的可能性。因此,在一些实施例中,如果后续请求调用在本地文件220中未包含的数据,则云同步存储应用可通过发起整个云文件200的下载来响应。在一些实施例中,云同步存储应用还可以更新一个或多个定义或参数以表示先前的预测是不正确的。
图3示出了根据本公开的若干实施例的识别负责发起读取请求的应用的方法300。方法300可以例如由在客户端***上执行的云同步存储应用执行。一般地,方法300描述了随时间跟踪各种***操作和调用的模式,基于这些操作来维护各种应用的简档,以及利用该信息来尝试标识发起读取请求的应用(使得能够进行期望数据的更准确的请求分类/预测)。
方法300包括:在操作302处,监视***操作和请求。操作302可以包括例如跟踪调用(包括相关联的数据(诸如签名散列)以及响应于该调用而返回的内容)。方法300还包括:在操作304处,维护和更新应用简档。这可以包括例如保持包含已知应用和库的简档的数据库。给定简档可以由应用/库名称、已知的文件路径、已知的文件签名散列(消息摘要(MD)5、安全散列算法(SHA)1、SHA256等)、(用于库的)导出函数、函数签名和名称、以及调用序列构成。另外,对于每个应用和/或库,操作304可以进一步包括将来自应用和/或库的给定请求与文件的位置或部分相连接。例如,操作304可以包括记录应用的文件路径、它的大小、应用最频繁提交的一个或多个调用/请求、以及给定文件的哪些部分正被请求(例如,“总是前512字节”)。
方法300还包括:在操作306处,确定是否已经检测到读取请求。操作306可以包括例如分析所监视的操作以确定该操作是否包括读取请求。如果还没有检测到读取请求(306“否”),则方法300可以继续监视和更新它的应用简档(经由返回到操作302和304)。如果检测到读取请求(306“是”),则方法300还包括:在操作308处,识别哪个应用负责该请求。注意,尽管请求可以包括标记负责该请求的应用的信息,但情况可能并不总是这样。进一步地,即使请求确实包括该信息,它也可能是误导的。例如,如果***的用户正在使用图像编辑应用并期望打开图像文件,则图像编辑应用程序可以启动文件资源管理器应用的嵌入式实例以使得用户能够浏览文件。如果嵌入式文件资源管理器应用尝试访问文件以便在特定目录中生成文件的缩略图,则这可以被检测为是对所讨论的文件的读取请求(306“是”),但是请求本身可以包括指示它源自图像编辑应用的签名。操作308可以包括利用在操作304处维护的简档来确定“实际的”请求应用是文件资源管理器应用(其更可能尝试生成缩略图,而图像编辑应用更可能要求打开整个文件)。
操作308可以在考虑相对较低置信度的标识符(诸如文件路径、大小或行为)之前考虑高置信度标识符(诸如校验和、或签名散列),以确定哪个简档是最佳匹配(并因此确定哪个应用发起了请求)。在一些实施例中,如果发现高置信度匹配(例如,请求中的签名与在简档中包含的签名匹配),则操作308可以结束它的分析。
在一些实施例中,如果没有简档与请求匹配或者如果没有简档在特定相似性阈值内,则操作308可以断定没有找到匹配。在一些实施例中,如果没有找到匹配,则可以下载整个目标文件。然而,在一些实施例中,如果没有简档与请求匹配,则操作308可以选择“最接近匹配”简档。
方法300还包括:在操作312处,预测并下载文件的部分。操作312可以包括例如(基于所识别的简档)识别可能需要的文件的片段以便满足读取请求,以及下载该片段(如果本地副本尚不存在)。操作312还可包括对请求进行响应以指示完整的文件可用并且准备好被读取,即使仅已获取了文件的相对小的部分(即,预测部分)。
注意,操作312可包括下载超出被预测为必需的部分的一个或多个附加裕度或额外的数据。例如,即使所识别的简档强烈地指示请求的真实目标是指定的位范围,操作312也可以包括下载该范围,而且下载在指定范围之前和/或之后的附加的1,024位。进一步地,操作312可包括下载预定范围而不管预测如何;例如,在一些实施例中,操作312可以包括下载任何文件的前和/或最后4,096位,即使这些位不是具体被预期为必需的。尽管这可能消耗额外的资源,但是,通常请求文件的某些部分而不管应用/请求,因此,在一些实施例中,这可以被认为是值得的折衷。
方法300还包括:在操作314处,确定预测是否正确。操作314可以包括例如:分析后续的读取请求以确定实际需要所讨论的文件的哪个(哪些)部分,并且将所需的(哪个或哪些)部分与所下载的(哪个或哪些)部分进行比较。如果预测是正确的(314“是”)并且文件的所需部分已被下载,则方法300还包括:在操作318处,返回所请求的数据。
如果预测不正确(诸如如果所需部分未被下载,314“否”),则方法300还包括:在操作316处,下载满足请求所必需的文件的(一个或多个)部分。在一些实施例中,操作316可以包括下载整个文件。在一些实施例中,操作316可以包括仅下载文件的丢失部分。
在一些实施例中,操作316可以包括:将现在已知的必需部分与应用简档进行比较,以基于该附加信息来确定不同简档是否更紧密地匹配,并且如果是,则下载新简档指示的任何附加数据也可以是必要的。例如,如果在操作308处,第一简档被选择为最佳匹配,但是在操作314处,发现该预测是不正确的,则操作316可以包括再次搜索简档,以鉴于附加信息确定第二简档是否是更好的匹配。如果找到第二匹配,则操作316还可包括基于第二简档下载可能是必要的任何剩余的丢失部分。在一些实施例中,操作316可以仅仅包括下载整个文件。
在下载了文件的所需部分之后(在操作312,或者如果预测不正确,则在操作316),方法300还包括:在操作318处,返回所请求的数据。操作318可以包括返回本地文件的与仅限云文件的所请求的部分相对应的部分,从而有利地使得执行方法300的***能够在不从云中下载整个文件的情况下满足请求。
在返回所请求的数据后,方法300可返回到操作304以基于操作314(以及操作316,如果需要)的结果来更新简档数据库。例如,如果初始下载成功地捕获了必需数据,但是仅仅因为它被包括在裕度中(意味着预测本身仍然不准确),则该信息可以被用于更新相关联的简档。在一些实施例中,操作304可以包括基于围绕请求的上下文信息来更新简档的各种权重。如果预测不正确(314“否”),则操作304可包括基于该错误来更新所选择的简档(以及可能的第二“实际正确的”简档)。在一些实施例中,操作304可以包括基于文件的(一个或多个)必需部分创建新的简档。
图4示出了根据本公开的若干实施例的预测性地供应云同步文件的方法400。方法400包括:在操作402处,识别可能被请求的云文件的部分。操作402可以包括例如:分析在云***上存储的文件以及***配置信息,例如在计算***上安装和/或执行的各种应用的标识、运行时间、计算***的用户的身份、或者控制计算***的组织或实体(诸如企业和/或工作场所)。在一些实施例中,可以将***配置信息与所存储的简档进行比较。操作402可以包括利用该信息来预测一个或多个文件的可能要受到读取请求的部分。例如,如果在云***上存储的文件之一是视频文件,则操作402可以断定视频的特定帧可能被请求以便生成缩略图。
操作402可以包括分析云文件的部分以确定在文件中包含的一些或所有数据的可能性等级。在一些实施例中,操作402可以包括识别文件的具有相对最大可能性等级的最可能部分。在一些实施例中,如果可能性等级高于特定阈值,则操作402可以仅识别“可能”被请求的部分。在一些实施例中,操作402可以包括识别“前3个”最可能部分等。在一些实施例中,操作402除了考虑文件的一些或所有部分的可能性等级之外,还可以考虑它们的大小,以确定该部分是否值得下载。
值得注意的是,可以在已拦截或检测到读取请求的情况下或者无需拦截或检测到读取请求的情况下执行操作402。***可以例如在被安装在新机器和/或设备上时、在检测到新链接的云***或新文件被添加到现有云时、在被(诸如用户)提示时、在后台执行时(可能等待相对停机时间)、在检测到新应用的安装时、在启动时等,执行操作402。
方法400还包括:在操作404处,下载尚未在本地存储的文件的所识别的部分。操作404可以包括例如:检查一个或多个目录和/或文件以确定被预测为需要的部分是否已经在本地存储中存在,以及下载在本地存储中没有找到的一些或所有部分。
在一些实施例中,操作404可以包括:鉴于***设置来排除下载所识别的部分中的一个或多个部分。例如,如果云视频文件具有5GB的大小,但是操作402识别视频的特定1GB片段可能被请求,即使下载1GB片段也仍然可能消耗相当大的带宽和存储。因此,考虑可以限制、扼制或封顶这种下载的各种设置,除非所讨论的文件(或其片段)被明确地请求。
这些部分可以被保存到一个或多个文件中。在一些实施例中,所有所识别的部分可以被捆绑成单个“批量(bulk)”下载,并被保存为单个文件,其中元数据将批量文件的位(或其范围)映射到云文件的对应位(或其范围)。因此,当请求数据时,执行操作400的***可以搜索批量文件以确定所请求的数据是否已被下载(而不是检查多个不同的文件)。
方法400还包括:在操作406处,拦截和确认读取请求。操作406可以包括例如监视***操作并确定读取请求已被发送。执行方法400的***可以具有使得***能够观察和拦截应用与低级文件***之间的交互的许可。在检测到读取请求时,操作406可包括用确认进行响应(诸如向请求的发送方传送所请求的文件可用于读取),而不管所请求的文件是否在本地被存储。
方法400还包括:在操作408处,确定所请求的数据是否在本地被存储。操作408可以包括例如:接收对经确认的读取请求的后续,其指定被请求的特定数据。操作408可以包括将目标文件的指定数据与一个或多个本地存储的文件(例如在操作404中被定位或下载的文件)的内容进行比较。
如果操作408导致在本地存储中定位所请求的数据(408“是”),则方法400还包括:在操作410处,返回所请求的数据,从而有利地用正确的数据满足读取请求,尽管还未从云中下载目标文件的本地副本。如果没有找到所请求的数据(408“否”),则方法400还包括:在操作412处,从云中下载数据。在一些实施例中,操作412可包括将整个目标文件下载到本地存储。在一些实施例中,操作412可包括仅下载目标文件的一个或多个部分(诸如包含所请求的数据的那部分)。一旦在操作412处获取了所请求的数据,则方法400前进到操作410,响应于请求,返回所请求的数据。
应当理解,尽管本公开包括关于云计算的详细描述,但是本文所记载的教导的实现不限于云计算环境。相反,本发明的实施例能够结合现在已知或以后开发的任何其它类型的计算环境来实现。
云计算是一种服务交付模式,用于实现对共享的可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、存储、应用、VM和服务)池池的方便、按需的网络访问,可配置计算资源可以以最小的管理成本或与服务提供商进行最少的交互来快速供应和释放。这种云模式可以包括至少五个特性、至少三个服务模型和至少四个部署模型。
特征如下:
按需自助式服务:云的消费者可以单方面自动地按需提供计算能力(诸如服务器时间和网络存储),而无需与服务提供者进行人工交互。
广泛的网络接入:能力在网络上可用并通过促进异构的瘦或厚客户端平台(例如,移动电话、膝上型计算机和PDA)的使用的标准机制来接入。
资源池:提供商的计算资源被归入资源池以使用多租户模型来服务多个消费者,其中不同的物理和虚拟资源根据需求被动态地分配和再分配。一般情况下,消费者不能控制或不知道所提供的资源的确切位置,但是可以在较高抽象程度上指定位置(例如国家、州或数据中心),因此具有位置无关性。
迅速弹性:可以迅速且有弹性地(在一些情况下自动地)提供能力以快速向外扩展并被迅速释放以快速缩小。对于消费者,可用于提供的能力通常看起来是无限的,并可以在任何时间以任何数量购买。
可测量的服务:云***通过利用在适于服务类型(例如,存储、处理、带宽和活动用户账户)的某一抽象程度的计量能力,自动地控制和优化资源使用。可以监视、控制和报告资源使用情况,为所利用的服务的提供者和消费者双方提供透明度。
服务模型如下:
软件即服务(SaaS):向消费者提供的能力是使用提供者在云基础架构上运行的应用。可通过诸如网络浏览器的瘦客户机接口(例如,基于网络的电子邮件)来从各种客户机设备访问应用。除了有限的特定于用户的应用配置设置以外,消费者既不管理也不控制包括网络、服务器、操作***、存储、或甚至单个应用能力等的底层云基础架构。
平台即服务(PaaS):向消费者提供的能力是在云基础架构上部署消费者创建或获得的应用,这些应用是使用由提供商支持的编程语言和工具创建的。消费者既不管理也不控制包括网络、服务器、操作***或存储的底层云基础架构,但对其部署的应用具有控制权,对应用托管环境配置可能也具有控制权。
基础架构即服务(IaaS):向消费者提供的能力是提供消费者能够在其中部署并运行包括操作***和应用的任意软件的处理、存储、网络和其它基础计算资源。消费者既不管理也不控制底层云基础架构,但对操作***、存储、所部署的应用具有控制权,对所选择的网络组件(例如,主机防火墙)可能具有有限的控制权。
部署模型如下:
私有云:云基础架构单独为某个组织运行。它可以由该组织或第三方管理,并且可以存在于该组织内部或外部。
共同体云:云基础架构被若干组织共享,并支持具有共同利害关系(例如,任务、安全要求、政策和合规考虑)的特定共同体。它可以由该组织或第三方管理,并且可以存在于该组织内部或外部。
公共云:云基础架构可用于一般公众或大型产业群,并由销售云服务的组织拥有。
混合云:云基础架构由两个或更多云(私有云、共同体云或公共云)组成,这些云依然是独特实体,但是通过使数据和应用能够移植的标准化技术或私有技术(例如,用于云之间的负载平衡的云突发)绑定在一起。
云计算环境是面向服务的,特点集中在无状态性、低耦合性、模块性和语义的互操作性。计算的核心是包括互连节点网络的基础架构。
现在参考图5,描绘了说明性的云计算环境500。如图所示,云计算环境500包括云消费者使用的本地计算设备可以与其通信的一个或多个云计算节点510,本地计算设备例如是个人数字助理(PDA)或蜂窝电话540A、台式计算机540B、膝上型计算机540C和/或汽车计算机***540N。节点510可以彼此通信。它们可以被物理地或虚拟地分组(未示出)在一个或多个网络(诸如如上文所描述的私有云、共同体云、公共云或混合云或其组合)中。这允许云计算环境500提供基础架构即服务、平台即服务和/或软件即服务,而云消费者不需要为其在本地计算设备上维护资源。应当理解,图5中所示的各类计算设备540A-N仅仅是示意性的,计算节点510和云计算环境500可以在任何类型的网络和/或网络可寻址连接上(例如,使用网络浏览器)与任何类型的计算设备通信。
现在参考图6,示出了由云计算环境500(图5)提供的一组功能抽象层。首先应当理解,图6所示的组件、层和功能仅仅是示意性的,本发明的实施例不限于此。如图所示,提供了以下层和相应的功能:
硬件和软件层660包括硬件和软件组件。硬件组件的示例包括:大型机661;基于RISC(精简指令集计算机)架构的服务器662;服务器663;刀片服务器664;存储设备665;以及网络和网络组件666。在一些实施例中,软件组件包括网络应用服务器软件667和数据库软件668。
虚拟化层670提供抽象层,从该抽象层可以提供虚拟实体的以下示例:虚拟服务器671;虚拟存储器672;虚拟网络673,包括虚拟专用网络;虚拟应用程序和操作***674;以及虚拟客户端675。
在一个示例中,管理层680可以提供以下描述的功能。资源供应功能681提供用于在云计算环境中执行任务的计算资源和其它资源的动态获取。计量和定价功能682提供对在云计算环境内使用资源的成本跟踪,并为这些资源的消耗提供账单或***。在一个示例中,这些资源可以包括应用软件许可。安全功能为云消费者和任务提供身份认证,并为数据和其他资源提供保护。用户门户功能683为消费者和***管理员提供对云计算环境的访问。服务水平管理功能684提供云计算资源的分配和管理,以满足所需的服务水平。服务水平协议(SLA)计划和履行功能685提供对根据SLA针对其预测未来需求的云计算资源的预安排和采购。
工作负载层690提供可以利用云计算环境的功能的示例。在该层中,可提供的工作负载和功能的示例包括:地图绘制与导航691;软件开发及生命周期管理692;虚拟教室的教学提供693;数据分析处理694;交易处理695;以及云存储的文件的预测性供应696。
现在参考图7,示出了可以被配置为执行本公开的各个方面(例如分别包括方法100、300和400)的示例计算机***700的高级框图。根据本公开的实施例,示例计算机***700可以用于实现本文所描述的方法或模块中的一个或多个以及任何相关的功能或操作(例如,使用计算机的一个或多个处理器电路或计算机处理器)。在一些实施例中,计算机***700的主要组件可以包括一个或多个CPU 702、存储器子***708、终端接口716、存储接口718、I/O(输入/输出)设备接口720和网络接口722,所有这些组件可以经由存储器总线706、I/O总线714和I/O总线接口单元712直接或间接地通信耦合,以用于组件间通信。
计算机***700可以包含一个或多个通用可编程中央处理单元(CPU)702,其中的一些或全部可以包括一个或多个核704A、704B、704C和704D,这里一般称为CPU 702。在一些实施例中,计算机***700可以包含相对大的***的典型的多个处理器;然而,在其它实施例中,计算机***700可以替代地是单CPU***。每个CPU 702可以在CPU核704上执行在存储器子***708中存储的指令,并且可以包括一级或多级板上高速缓存。
在一些实施例中,存储器子***708可以包括随机存取半导体存储器、存储设备、或用于存储数据和程序的存储介质(易失性或非易失性的)。在一些实施例中,存储器子***708可以表示计算机***700的整个虚拟存储器,并且还可以包括耦合到计算机***700或经由网络连接的其他计算机***的虚拟存储器。存储器子***708在概念上可以是单个单片实体,但是在一些实施例中,存储器子***708可以是更复杂的布置,诸如高速缓存和其它存储器设备的层次结构。例如,存储器可在多级高速缓存中存在,并且这些高速缓存可进一步按功能划分,以使得一个高速缓存保存指令,而另一个高速缓存保存由一个或多个处理器使用的非指令数据。存储器还可以是分布式的,并且与不同的CPU或CPU组相关联,如在各种所谓非均匀存储器存取(NUMA)计算机体系结构中的任何一种中已知的。在一些实施例中,主存储器或存储器子***804可以包含用于控制和流动由CPU 702使用的存储器的元件。这可以包括存储器控制器710。
尽管存储器总线706在图7中被示为提供CPU 702、存储器子***708和I/O总线接口712之间的直接通信路径的单个总线结构,但是在一些实施例中,存储器总线706可以包括多个不同的总线或通信路径,其可以采用各种形式中的任何形式来布置,诸如在分层、星形或网状配置中的点对点链路、多层总线、并行和冗余路径、或任何其他适当类型的配置。此外,虽然I/O总线接口712和I/O总线714被示为单个相应的单元,但是在一些实施例中,计算机***700可以包含多个I/O总线接口单元712、多个I/O总线714、或两者。进一步地,虽然示出了将I/O总线714与通向各种I/O设备的各种通信路径分开的多个I/O接口单元,但是在其他实施例中,一些或所有I/O设备可以直接连接到一个或多个***I/O总线。
在一些实施例中,计算机***700可以是多用户大型计算机***、单用户***、或服务器计算机或者具有很少或没有直接用户接口但从其它计算机***(客户端)接收请求的类似设备。进一步地,在一些实施例中,计算机***700可以被实现为台式计算机、便携式计算机、膝上型或笔记本计算机、平板计算机、袖珍计算机、电话、智能电话、移动设备、或任何其他适当类型的电子设备。
注意,图7旨在描绘示例性计算机***700的代表性主要组件。然而,在一些实施例中,各个部件可以具有比图7中所示的更大或更小的复杂性,可以存在不同于图7中所示的部件或除了图7中所示的那些部件之外的部件,并且这些部件的数量、类型和配置可以改变。
本发明可以是任何可能的技术细节集成水平的***、方法和/或计算机程序产品。计算机程序产品可以包括在其上具有计算机可读程序指令的(一个或多个)计算机可读存储介质,计算机可读程序指令用于使处理器执行本发明的各方面。
计算机可读存储介质可以是可保持并存储由指令执行设备使用的指令的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备、或前述存储设备的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、诸如在上面记录有指令的打孔卡或凹槽中的凸起结构的机械编码设备、以及上述设备的任何适当的组合。如本文所使用的计算机可读存储介质不应被解释为是暂时性信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤线缆的光脉冲)、或通过导线传输的电信号。
本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络(例如互联网、局域网、广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路的配置数据、或者以一种或多种编程语言(包括面向对象的编程语言,例如Smalltalk、C++等)和过程编程语言(例如“C”编程语言或类似的编程语言)的任意组合编写的源代码或目标代码。计算机可读程序指令可以完全在用户的计算机上执行、部分在用户的计算机上执行、作为独立的软件包执行、部分在用户的计算机上并且部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种场景下,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者可以连接到外部计算机(例如,使用互联网服务提供商通过互联网)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路个性化,以便执行本发明的各方面。
在此参考根据本发明实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述本发明的各方面。将理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机可读程序指令来实现。
这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,以使得经由计算机或其他可编程数据处理装置的处理器而执行的指令创建用于实现流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,其可以引导计算机、可编程数据处理装置和/或其他设备以特定方式工作,以使得在其中存储有指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图的一个或多个框中指定的功能/动作的各方面的指令。
计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置或其他设备上,以使一系列操作步骤将在计算机、其他可编程装置或其他设备上执行,以产生计算机实现的过程,以使得在计算机、其他可编程装置或其他设备上执行的指令实现流程图和/或框图的一个或多个框中指定的功能/动作。
附图中的流程图和框图示出了根据本发明的各种实施例的***、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方案中,框中所注明的功能可不按图中所注明的次序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图图示的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或动作或执行专用硬件和计算机指令的组合的专用的基于硬件的***来实现。
已经出于说明的目的给出了本发明的各种实施例的描述,但是其并不旨在是穷尽的或限于所公开的实施例。在不背离所描述的实施例的范围的情况下,许多修改和变化对于本领域的普通技术人员将是显而易见的。选择本文所使用的术语以最好地解释实施例的原理、实际应用或对市场上发现的技术的技术改进,或者使本领域的普通技术人员能够理解本文所公开的实施例。

Claims (25)

1.一种方法,包括:
识别在远程计算***上存储的远程文件;
预测所述远程文件的预测部分可能要受到未来的读取请求;
将所述远程文件的所述预测部分下载到本地文件;以及
更新所述本地文件的元数据以将所述本地文件的本地部分映射到所述远程文件的所述预测部分。
2.根据权利要求1所述的方法,还包括:接收第一读取请求,其中:
所述识别至少基于所述第一读取请求的目标;以及
所述预测至少基于所述第一读取请求。
3.根据权利要求2所述的方法,还包括:至少基于应用简档数据库,确定发起所述第一读取请求的请求应用,其中,所述预测还至少基于所述请求应用。
4.根据权利要求3所述的方法,还包括:
接收以所述远程文件的目标部分为目标的第二读取请求;以及
至少基于所述预测部分和所述目标部分,更新所述应用简档数据库。
5.根据权利要求1所述的方法,还包括:
接收以所述远程文件的目标部分为目标的第二读取请求;
确定所述远程文件的所述预测部分包括所述目标部分;以及
响应于确定所述预测部分包括所述目标部分,基于所述元数据返回被映射到所述预测部分的所述本地部分的至少一部分。
6.根据权利要求1所述的方法,还包括:
接收以所述远程文件的目标部分为目标的第二读取请求;
确定所述远程文件的所述预测部分不包括所述目标部分;以及
响应于确定所述预测部分不包括所述目标部分,下载所述远程文件的包括所述目标部分的至少第二部分。
7.根据前述权利要求中任一项所述的方法,还包括:监视计算***的读取操作,其中,所述预测至少基于所述监视。
8.根据前述权利要求中任一项所述的方法,其中,所述预测至少基于***配置信息。
9.根据前述权利要求中任一项所述的方法,其中:
所述远程计算***是云计算***;以及
所述远程文件是云文件。
10.一种***,包括:
存储器;以及
中央处理单元CPU,所述CPU包括一个或多个CPU核,所述CPU被配置为:
识别在远程计算***上存储的远程文件;
预测所述远程文件的预测部分可能要受到未来的读取请求;
将所述远程文件的所述预测部分下载到本地文件;以及
更新所述本地文件的元数据以将所述本地文件的本地部分映射到所述远程文件的所述预测部分。
11.根据权利要求10所述的***,其中,所述CPU还被配置为接收第一读取请求,其中:
所述识别至少基于所述第一读取请求的目标;以及
所述预测至少基于所述第一读取请求。
12.根据权利要求11所述的***,其中,所述CPU还被配置为至少基于应用简档数据库,确定发起所述第一读取请求的请求应用,其中,所述预测还至少基于所述请求应用。
13.根据权利要求12所述的***,其中,所述CPU还被配置为:
接收以所述远程文件的目标部分为目标的第二读取请求;以及
至少基于所述预测部分和所述目标部分,更新所述应用简档数据库。
14.根据权利要求10所述的***,其中,所述CPU还被配置为:
接收以所述远程文件的目标部分为目标的第二读取请求;
确定所述远程文件的所述预测部分包括所述目标部分;以及
响应于确定所述预测部分包括所述目标部分,基于所述元数据,返回被映射到所述预测部分的所述本地部分的至少一部分。
15.根据权利要求10所述的***,其中,所述CPU还被配置为:
接收以所述远程文件的目标部分为目标的第二读取请求;
确定所述远程文件的所述预测部分不包括所述目标部分;以及
响应于确定所述预测部分不包括所述目标部分,下载所述远程文件的包括所述目标部分的至少第二部分。
16.根据前述权利要求中任一项所述的***,其中,所述CPU还被配置为监视所述***的读取操作,其中,所述预测至少基于所述监视。
17.根据前述权利要求中任一项所述的***,其中:
所述远程计算***是云计算***;以及
所述远程文件是云文件。
18.一种计算机程序产品,所述计算机程序产品包括计算机可读存储介质,所述计算机可读存储介质具有随其体现的程序指令,所述程序指令可由计算机执行以使所述计算机:
识别在远程计算***上存储的远程文件;
预测所述远程文件的预测部分可能要受到未来的读取请求;
将所述远程文件的所述预测部分下载到本地文件;以及
更新所述本地文件的元数据以将所述本地文件的本地部分映射到所述远程文件的所述预测部分。
19.根据权利要求18所述的计算机程序产品,其中,所述指令进一步使所述计算机接收第一读取请求,其中:
所述识别至少基于所述第一读取请求的目标;以及
所述预测至少基于所述第一读取请求。
20.根据权利要求19所述的计算机程序产品,其中,所述指令进一步使所述计算机至少基于应用简档数据库来确定发起所述第一读取请求的请求应用,其中,所述预测进一步至少基于所述请求应用。
21.根据权利要求20所述的计算机程序产品,其中,所述指令进一步使所述计算机:
接收以所述远程文件的目标部分为目标的第二读取请求;
确定所述远程文件的所述预测部分包括所述目标部分;以及
响应于确定所述预测部分包括所述目标部分,基于所述元数据返回被映射到所述预测部分的所述本地部分的至少一部分。
22.根据权利要求18所述的计算机程序产品,其中,所述指令进一步使所述计算机:
接收以所述远程文件的目标部分为目标的第二读取请求;
确定所述远程文件的所述预测部分不包括所述目标部分;以及
响应于确定所述预测部分不包括所述目标部分,下载所述远程文件的包括所述目标部分的至少第二部分。
23.根据权利要求22所述的计算机程序产品,其中,所述远程文件的所述第二部分包括所述远程文件的全部。
24.根据前述权利要求中任一项所述的计算机程序产品,其中,所述指令进一步使所述计算机监视所述计算机的读取操作,其中,所述预测至少基于所述监视。
25.根据前述权利要求中任一项所述的计算机程序产品,其中:
所述远程计算***是云计算***;以及
所述远程文件是云文件。
CN202180022267.9A 2020-03-20 2021-03-11 远程存储的文件的预测性供应 Pending CN115336237A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/824,860 US11533384B2 (en) 2020-03-20 2020-03-20 Predictive provisioning of cloud-stored files
US16/824,860 2020-03-20
PCT/IB2021/052018 WO2021186300A1 (en) 2020-03-20 2021-03-11 Predictive provisioning of remotely-stored files

Publications (1)

Publication Number Publication Date
CN115336237A true CN115336237A (zh) 2022-11-11

Family

ID=77747015

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180022267.9A Pending CN115336237A (zh) 2020-03-20 2021-03-11 远程存储的文件的预测性供应

Country Status (10)

Country Link
US (1) US11533384B2 (zh)
JP (1) JP2023517564A (zh)
KR (1) KR20220132639A (zh)
CN (1) CN115336237A (zh)
AU (1) AU2021238984B2 (zh)
CA (1) CA3167864A1 (zh)
DE (1) DE112021000408T5 (zh)
GB (1) GB2608767A (zh)
IL (1) IL295240A (zh)
WO (1) WO2021186300A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11430091B2 (en) * 2020-03-27 2022-08-30 Snap Inc. Location mapping for large scale augmented-reality
US20220329664A1 (en) * 2021-04-09 2022-10-13 Apple Inc. Secure data caching for edge networks

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103064637A (zh) * 2012-12-24 2013-04-24 珠海金山办公软件有限公司 一种网盘的缓存同步方法及***
CN103116618A (zh) * 2013-01-28 2013-05-22 南开大学 基于客户端持久缓存的远程文件***镜像方法及***
CN103931156A (zh) * 2011-05-14 2014-07-16 比特卡萨公司 具有用户不可知加密文件的服务器侧去重的云文件***
CN105431838A (zh) * 2013-05-01 2016-03-23 微软技术许可有限责任公司 串流内容和占位符
US9792298B1 (en) * 2010-05-03 2017-10-17 Panzura, Inc. Managing metadata and data storage for a cloud controller in a distributed filesystem
CN116450939A (zh) * 2023-04-12 2023-07-18 中博信息技术研究院有限公司 一种基于云计算管理平台的数据库内的调取***及方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101902346A (zh) 2009-05-31 2010-12-01 国际商业机器公司 P2p内容缓存***和方法
US8799413B2 (en) * 2010-05-03 2014-08-05 Panzura, Inc. Distributing data for a distributed filesystem across multiple cloud storage systems
US9805054B2 (en) * 2011-11-14 2017-10-31 Panzura, Inc. Managing a global namespace for a distributed filesystem
US8886752B2 (en) * 2011-11-21 2014-11-11 Sony Computer Entertainment America System and method for optimizing transfers of downloadable content
CN103067479A (zh) 2012-12-24 2013-04-24 珠海金山办公软件有限公司 一种基于文件冷热的网盘同步方法及***
US9166866B2 (en) 2013-04-30 2015-10-20 Microsoft Technology Licensing, Llc Hydration and dehydration with placeholders
CN105227598B (zh) 2014-06-11 2020-11-27 腾讯科技(深圳)有限公司 一种基于云存储的资源分享方法、装置和***
US9852147B2 (en) 2015-04-01 2017-12-26 Dropbox, Inc. Selective synchronization and distributed content item block caching for multi-premises hosting of digital content items
US10887371B2 (en) * 2015-09-14 2021-01-05 Google Llc Systems and methods for content storage and retrieval
US11368528B2 (en) 2016-09-20 2022-06-21 Microsoft Technology Licensing, Llc Dynamic storage management in cloud storage synchronization
US10616327B2 (en) 2016-09-20 2020-04-07 Microsoft Technology Licensing, Llc Policy based hydration behavior in cloud storage synchronization
US11470131B2 (en) * 2017-07-07 2022-10-11 Box, Inc. User device processing of information from a network-accessible collaboration system
CN108280196A (zh) 2018-01-28 2018-07-13 丁超 文件同步方法、装置及计算机存储介质
US10983677B2 (en) * 2018-11-16 2021-04-20 Dropbox, Inc. Prefetching digital thumbnails from remote servers to client devices based on a dynamic determination of file display criteria

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9792298B1 (en) * 2010-05-03 2017-10-17 Panzura, Inc. Managing metadata and data storage for a cloud controller in a distributed filesystem
CN103931156A (zh) * 2011-05-14 2014-07-16 比特卡萨公司 具有用户不可知加密文件的服务器侧去重的云文件***
CN103064637A (zh) * 2012-12-24 2013-04-24 珠海金山办公软件有限公司 一种网盘的缓存同步方法及***
CN103116618A (zh) * 2013-01-28 2013-05-22 南开大学 基于客户端持久缓存的远程文件***镜像方法及***
CN105431838A (zh) * 2013-05-01 2016-03-23 微软技术许可有限责任公司 串流内容和占位符
CN116450939A (zh) * 2023-04-12 2023-07-18 中博信息技术研究院有限公司 一种基于云计算管理平台的数据库内的调取***及方法

Also Published As

Publication number Publication date
AU2021238984A1 (en) 2022-09-08
WO2021186300A1 (en) 2021-09-23
DE112021000408T5 (de) 2023-02-16
IL295240A (en) 2022-10-01
GB2608767A (en) 2023-01-11
US11533384B2 (en) 2022-12-20
JP2023517564A (ja) 2023-04-26
KR20220132639A (ko) 2022-09-30
AU2021238984B2 (en) 2024-01-11
CA3167864A1 (en) 2021-09-23
US20210297502A1 (en) 2021-09-23
GB202215195D0 (en) 2022-11-30

Similar Documents

Publication Publication Date Title
US10922118B2 (en) Distributed container image repository service
US10725976B2 (en) Fast recovery using self-describing replica files in a distributed storage system
US9607004B2 (en) Storage device data migration
US11042646B2 (en) Selecting data storage based on data and storage classifications
US10747458B2 (en) Methods and systems for improving efficiency in cloud-as-backup tier
US11288601B2 (en) Self-learning selection of information-analysis runtimes
AU2021238984B2 (en) Predictive provisioning of remotely-stored files
US11768740B2 (en) Restoring operation of data storage systems at disaster recovery sites
US20230055511A1 (en) Optimizing clustered filesystem lock ordering in multi-gateway supported hybrid cloud environment
US20200387306A1 (en) Performing proactive copy-on-write for containers
US10223444B2 (en) Protocol based user data management
CN111684779B (zh) 分层存储管理***中的数据迁移
US11416468B2 (en) Active-active system index management
US11188249B2 (en) Storage alteration monitoring
US10698862B2 (en) Enhanced snapshot performance, storage efficiency improvement, dynamic snapshot policy in erasure code supported object storage environment
US20190392079A1 (en) Holistic mapping and relocation of social media assets
US11704278B2 (en) Intelligent management of stub files in hierarchical storage
US11762603B2 (en) Storing modified or unmodified portions of a file based on tape loading
US11556351B1 (en) Facilitation of application containerization
US20230393860A1 (en) Automatic application configuration synchronization based on data analytics

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination