CN104937904B - 用于卸载的方法、系统和计算机存储介质 - Google Patents

用于卸载的方法、系统和计算机存储介质 Download PDF

Info

Publication number
CN104937904B
CN104937904B CN201380065329.XA CN201380065329A CN104937904B CN 104937904 B CN104937904 B CN 104937904B CN 201380065329 A CN201380065329 A CN 201380065329A CN 104937904 B CN104937904 B CN 104937904B
Authority
CN
China
Prior art keywords
provider
unloading
destination
source
token
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.)
Active
Application number
CN201380065329.XA
Other languages
English (en)
Other versions
CN104937904A (zh
Inventor
D.L.格林
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN104937904A publication Critical patent/CN104937904A/zh
Application granted granted Critical
Publication of CN104937904B publication Critical patent/CN104937904B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • 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/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本文所描述的主题涉及卸载技术。源卸载提供器(520)可以向目的地卸载提供器(521)传输大块数据,即使所述卸载提供器彼此不同且独立,并且之前不知道彼此。所述数据传输是基于表示所述大块数据的令牌的交换。在为传输大块数据做准备时,该传输的启动器(505)与相应卸载提供器(520,521)之间的信任可以扩展到所述卸载提供器,即,所述卸载提供器(520,521)因为它们各自信任所述启动器(505)而信任彼此。在认证之后,所述卸载提供器可以通过安全信道(530)传输所述大块数据的全部或部分,而数据不会横穿该传输的启动器(505)。

Description

用于卸载的方法、系统和计算机存储介质
背景技术
一种用于传输数据的机制是将数据从源位置的文件读取到主存储器中,并将数据从主存储器写入到目的地位置。而在一些环境中,这对于相对少的数据可以可接受地工作,随着数据增加,读取数据和将数据传输到另一位置所花费的时间也增加。另外,如果通过网络访问数据,则网络可以在将数据从源位置传输到目的地位置方面强加额外的延迟。此外,安全问题加上存储布置的复杂性可以使数据传输复杂化。
本文所要求保护的主题不限于仅在诸如上面所描述的那些的环境中解决任何不足或操作的实施例。相反,提供此背景仅用于说明本文所描述的一些实施例可以在其中实践的一个示例性技术领域。
发明内容
简要来说,本文所描述的主题的方面涉及卸载技术。在各方面中,源卸载提供器可以向目的地卸载提供器传输大块数据,即使所述卸载提供器彼此不同且独立,并且之前不知道彼此。在为传输大块数据做准备时,信任可以扩展到所述卸载提供器。在认证之后,所述卸载提供器可以通过安全信道传输所述大块数据的全部或部分,而数据不会横穿该传输的启动器。
提供本摘要以用于简要标识下面在详细说明中进一步描述的主题的一些方面。本摘要不旨在标识所要求保护的主题的关键或基本特征,也不旨在用于限制所要求保护的主题的范围。
除非上下文以其它方式明确指出,否则短语“本文所描述的主题”指在详细说明中描述的主题。术语“方面”应当被看作“至少一方面”。标识在详细说明中描述的主题的方面不旨在标识所要求保护的主题的关键或基本特征。
本文所描述的主题的上述方面和其它方面借助于示例来说明,并且不限于附图,其中类似标号指示类似元件,并且在图中。
附图说明
图1是表示本文所描述的主题的方面可以并入其中的示例性通用计算环境的框图;
图2-4是表示本文所描述的主题的方面可以在其中操作的系统的组件的示例性布置的框图;
图5是图示了根据本文所描述的主题的方面的全异卸载提供器的框图;
图6是一般地表示根据本文所描述的主题的方面的启动器处可能发生的示例性动作的流程图;
图7是一般地表示根据本文所描述的主题的方面的目的地上可能发生的示例性动作的流程图;以及
图8是一般地表示根据本文所描述的主题的方面的源上可能发生的示例性动作的流程图。
具体实施方式
定义
除非上下文以其它方式明确指出,否则短语“本文所描述的主题”是指在详细说明中描述的主题。术语“方面”应当被看作“至少一方面”。标识在详细说明中描述的主题的方面不旨在标识所要求保护的主题的关键或基本特征。
当在本文中使用时,术语“包括”及其变型应当被看作意味着“包括但不限于”的开放性术语。除非上下文以其它方式明确指出,否则术语“或”应当被看作“和/或”。术语“基于”应当被看作“至少部分基于”。术语“一个实施例”和“实施例”应当被看作“至少一个实施例”。术语“另一实施例”应当被看作“至少一个其它实施例”。
当在本文中使用时,诸如“一”、“一个”和“那个”的术语包括一个或多个所指示的项目或动作。例如,在权利要求中,对项目的引用一般地意味着至少一个这样的项目存在,并且对动作的引用意味着该动作的至少一个实例被执行。
有时在本文中可以使用术语“第一”、“第二”、“第三”等。在没有附加上下文的情况下,在权利要求中使用这些术语不旨在暗示排序,而是为了标识目的。例如,短语“第一版本”和“第二版本”不必意味着第一版本正是第一个版本或在第二版本之前创建,或者甚至第一版本在第二版本之前被请求或操作。相反,这些短语用于标识不同版本。
标题仅是为了方便;关于给定主题的信息可以在指示该主题的标题所属的小节之外找到。
在下文可以包括其它明确和暗示的定义。
示例性操作环境
图1图示了本文所描述的主题的方面可以在其上实现的合适计算系统环境100的示例。计算系统环境100仅是合适计算环境的一个示例,并且不旨在对本文所描述的主题的方面的使用或功能性的范围建议任何限制。也不应当将计算环境100理解为具有关于示例性操作环境100中所图示的组件的任一个或组合的任何依赖或要求。
本文所描述的主题的方面可使用众多其它通用或专用计算系统环境或配置来操作。可以适合与本文所描述的主题的方面一起使用的众所周知的计算系统、环境或配置的示例包括个人计算机、服务器计算机——不论在裸金属上还是作为虚拟机——、手持或膝上设备、多处理器系统、基于微控制器的系统、机顶盒、可编程和非可编程消费电子产品、网络PC、微型计算机、大型计算机、个人数字助理(PDA)、游戏设备、打印机、包括机顶、媒体中心或其它器具的器具、机动车嵌入式或附着式计算设备、其它移动设备、包括蜂窝电话、无线电话和有线电话的电话设备、包括任何上述系统或设备的分布式计算环境等。
本文所描述的主题的方面可以在由计算机执行的诸如程序模块的计算机可执行指令的一般上下文中描述。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。本文所描述的主题的方面还可以在分布式计算环境中实践,其中任务由通过通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可以位于本地和远程计算机存储介质中,包括存储器存储设备中。
可替换地或附加地,本文所描述的功能性可以至少部分由一个或多个硬件逻辑组件执行。例如并且不作为限制,可以使用的说明性类型的硬件逻辑组件包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统的系统(SOC)、复杂可编程逻辑设备(CPLD)等。
参考图1,用于实现本文所描述的主题的方面的示例性系统包括以计算机110形式的通用计算设备。计算机可以包括能够执行指令的任何电子设备。计算机110的组件可以包括处理单元120、系统存储器130、以及将包括系统存储器的各种系统组件耦接到处理单元120的系统总线121。系统总线121可以是任何若干类型的总线结构,包括存储器总线或存储器控制器、外设总线以及使用任何各种总线架构的本地总线。作为示例并且不作为限制,这样的架构包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)本地总线、也称为夹层总线的外设组件互连(PCI)总线、外设组件互连扩展(PCI-X)总线、高级图形端口(AGP)和PCI快线(PCIe)。
处理单元120可以连接到硬件安全设备122。安全设备122可以存储并且能够生成可用于保护计算机110的各个方面的加密密钥。在一个实施例中,安全设备122可以包括受信平台模块(TPM)芯片、TPM安全设备等。
计算机110通常包括各种计算机可读介质。计算机可读介质可以是可由计算机110访问的任何可用介质,并且包括易失性和非易失性介质、以及可移除和非可移除介质。作为示例并且不作为限制,计算机可读介质可以包括计算机存储介质和通信介质。
计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据的信息的任何方法或技术实现的易失性和非易失性、可移除和非可移除介质。计算机存储介质包括:RAM、ROM、EEPROM、固态存储、闪存器或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、盒式磁带、磁带、磁盘存储或其它磁存储设备、或者可用于存储期望的信息并可由计算机110访问的任何其它介质。计算机存储介质不包括通信介质。
通信介质通常将计算机可读指令、数据结构、程序模块或其它数据体现在诸如载波或其它输运机制的调制数据信号中,并且包括任何信息递送介质。术语“调制数据信号”是指这样的信号,其特性中的一个或多个以使得将信息编码在信号中的这样的方式来设置或改变。作为示例并且不作为限制,通信介质包括诸如有线网络或直接有线连接的有线介质,以及诸如声音、RF、红外和其它无线介质的无线介质。以上的任何组合也应当包括在计算机可读介质的范围内。
系统存储器130包括诸如只读存储器(ROM)131和随机存取存储器(RAM)132的易失性和/或非易失性存储器形式的计算机存储介质。包含诸如在启动期间帮助在计算机110内的元件之间传输信息的基础例程的基础输入/输出系统133(BIOS)通常存储在ROM 131中。RAM 132通常包含对处理单元120可立即访问和/或当前正被其操作的数据和/或程序模块。作为示例并且不作为限制,图1图示了操作系统134、应用程序135、其它程序模块136和程序数据137。
计算机110还可以包括其它可移除/非可移除、易失性/非易失性计算机存储介质。仅作为示例,图1图示了从非可移除、非易失性磁介质读取或向其写入的硬盘驱动器141,从可移除、非易失性磁盘152读取或向其写入的磁盘驱动器151,以及从诸如CD ROM、DVD或其它光学介质的可移除、非易失性光盘156读取或向其写入的光盘驱动器155。可在示例性操作环境中使用的其它可移除/非可移除、易失性/非易失性计算机存储介质包括盒式磁带、闪存器卡和其它固态存储设备、数字多功能盘、其它光盘、数字视频带、固态RAM、固态ROM等。硬盘驱动器141可以通过接口140连接到系统总线121,并且磁盘驱动器151和光盘驱动器155可以通过诸如接口150的用于可移除非易失性存储器的接口连接到系统总线121。
在上文讨论的并且在图1中图示的驱动器及其相关联的计算机存储介质为计算机110提供计算机可读指令、数据结构、程序模块和其它数据的存储。在图1中,例如,硬盘驱动器141被图示为存储操作系统144、应用程序145、其它程序模块146和程序数据147。应当指出,这些组件可以与操作系统134、应用程序135、其它程序模块136和程序数据137相同或不同。操作系统144、应用程序145、其它程序模块146和程序数据147在本文中被赋予不同数字以示出至少它们是不同副本。
用户可以通过输入设备将命令和信息录入到计算机110中,所述输入设备例如是键盘162和定点设备161,其常被称为鼠标、轨迹球或触摸板。其它输入设备(未示出)可以包括麦克风(例如用于输入语音或其它音频)、控制手柄、游戏板、卫星天线、扫描仪、触敏屏、书写板、相机(例如用于输入手势或其它视觉输入)等。这些和其它输入设备通常通过耦接到系统总线的用户输入接口160连接到处理单元120,但是可以通过例如并行端口、游戏端口或通用串行总线(USB)的其它接口和总线结构来连接。
通过使用上面标识的输入设备中的一个或多个,可以建立自然用户接口(NUI)。NUI可以依赖于语言识别、触摸和触笔识别、屏幕上和屏幕附近的手势识别、空中手势、头部和眼睛跟踪、语音和语言、视觉、触摸、手势、机器智能等。可用于与用户交互的一些示例性NUI技术包括触敏显示器,语音和语言识别,意图和目标理解,使用深度相机(例如立体相机系统、红外相机系统、RGB相机系统及其组合)的运动手势检测,使用加速度计/陀螺仪的运动手势检测,脸部识别,3D显示器,头部、眼睛和凝视跟踪,沉浸式增强现实和虚拟现实系统,以及用于使用电场感测电极感测脑部活动的技术(EEG和相关方法)。
监视器191或其它类型的显示设备也经由诸如视频接口190的接口连接到系统总线121。除监视器之外,计算机还可以包括诸如扬声器197和打印机196的其它外设输出设备,其可以通过输出外设接口195来连接。
计算机110可以使用到诸如远程计算机180的一个或多个远程计算机的逻辑连接在联网环境中操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常用网络节点,并且通常包括上文关于计算机110所描述的元件中的许多或全部,尽管仅存储器存储设备181已在图1中示出。图1中所描绘的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但是还可以包括电话网络、近场网络和其它网络。这样的联网环境在办公室、企业范围计算机网络、内联网和因特网中是常见的。
当在LAN联网环境中使用时,计算机110通过网络接口或适配器170连接到LAN171。当在WAN联网环境中使用时,计算机110可以包括调制解调器172或用于建立通过诸如因特网的WAN 173的通信的其它构件。可为内部的或外部的调制解调器172可以经由用户输入接口160或其它合适的机制连接到系统总线121。在联网环境中,关于计算机110或其部分所描绘的程序模块可以存储在远程存储器存储设备中。作为示例并且不作为限制,图1将远程应用程序185图示为驻留在存储器设备181上。将认识到,所示网络连接是示例性的,并且可以使用在计算机之间建立通信链路的其它构件。
卸载读取和写入
如之前所提到的,在当今的存储环境中,一些传统数据传输操作可能不是高效的或者甚至可能不工作。
图2-5是表示本文所描述的主题的方面可以在其中操作的系统的组件的示例性布置的框图。图2-5中所示的组件是示例性的,并且不旨在穷举可能需要或包括的所有组件。在其它实施例中,在不脱离本文所描述的主题的方面的精神和范围的情况下,结合图2-5所描述的组件和/或功能可以包括在其它组件(示出或未示出)中或者放在子组件中。在一些实施例中,结合图2-5所描述的组件和/或功能可以跨多个设备分布。
转向图2,系统205可以包括启动器210、数据访问组件215、(多个)令牌提供器225、仓库220和其它组件(未示出)。系统205可以经由一个或多个计算设备实现。这样的设备例如可以包括个人计算机,服务器计算机,手持或膝上设备,多处理器系统,基于微控制器的系统,机顶盒,可编程消费电子产品,网络PC,微型计算机,大型计算机,蜂窝电话,个人数字助理(PDA),游戏设备,打印机,包括机顶、媒体中心或其它器具的器具,机动车嵌入式或附着式计算设备,其它移动设备,包括任何上述系统或设备的分布式计算环境等。
在系统205包括单个设备的情况下,可以被配置为充当系统205的示例性设备包括图1的计算机110。在系统205包括多个设备的情况下,多个设备中的一个或多个可以包括图1的计算机110,其中多个设备可以类似地或不同地配置。
数据访问组件215可以用于向和从仓库220传送数据。数据访问组件215例如可以包括以下中的一个或多个:I/O管理器、过滤器、驱动器、文件服务器组件、存储域网络(SAN)或其它存储设备上的组件、以及其它组件(未示出)。当在本文中使用时,SAN例如可以实现为暴露逻辑存储目标的设备、包括这样的设备的通信网络等。
在一个实施例中,数据访问组件可以包括有机会检查启动器210与仓库220之间的I/O,并且能够改变、完成该I/O或使该I/O失败或者基于其执行其它动作或不执行动作的任何组件。例如,在系统205驻留于单个设备上的情况下,数据访问组件215可以包括启动器210与仓库220之间的I/O栈中的任何对象。在系统205通过多个设备实现的情况下,数据访问组件215可以包括托管启动器210的设备上的组件、提供对仓库220的访问的设备上的组件和/或其它设备上的组件等。在另一实施例中,数据访问组件215可以包括由I/O所经过的组件使用的任何组件(例如像服务、数据库等),即使数据不流过所使用的组件。
当在本文中使用时,术语组件应当被解读为包括诸如设备的全部或部分的硬件,一个或多个软件模块或其部分的集合,一个或多个软件模块或其部分与一个或多个设备或其部分的某种组合等。组件可以包括代码或由代码表示。
当在本文中使用时,术语计算机代码应当被解读为包括指示计算机将采取的动作的指令。这些指令可以包括在易失性或非易失性的任何计算机可读介质中。
在一个实施例中,仓库220是能够存储数据的任何存储介质。仓库220可以包括易失性存储器(例如高速缓存区)和非易失性存储器(例如持久存储)。术语数据应当被宽泛地解读为包括可以由一个或多个计算机存储元件表示的任何东西。逻辑上,数据可以被表示为易失性或非易失性存储器中的一系列1和0。在具有非二进制存储介质的计算机中,数据可以根据该存储介质的性能来表示。数据可以被组织为不同类型的数据结构,包括:诸如数字、字母等的简单数据类型,层次、链状或其它相关数据类型,包括多个其它数据结构或简单数据类型的数据结构等。数据的一些示例包括信息、程序代码、程序状态、程序数据、命令、其它数据等。
仓库220可以包括硬盘存储、固态或其它非易失性存储、诸如RAM的易失性存储器、其它存储、以上的某种组合等,并且可以跨多个设备(例如多个SAN、多个文件服务器、异类设备的组合等)分布。用于实现仓库220的设备可以物理放置在一起(例如在单个设备上、在数据中心处等)或在地理上分布。仓库220可以布置在分层存储布置或非分层存储布置中。仓库220可以是外部的、内部的,或者包括在实现系统205的一个或多个设备的外部和内部的组件。仓库220可以是格式化的(例如利用文件系统)或非格式化的(例如原始的)。
在另一实施例中,仓库220可以实现为存储容器而非直接物理存储。存储容器例如可以包括文件、卷、盘、虚拟盘、逻辑单元、逻辑盘、可写克隆、卷快照、逻辑盘快照、物理盘、固态存储(SSD)、硬盘、数据流、交替数据流、元数据流等。例如,仓库220可以由具有多个物理存储设备的服务器实现。在该示例中,服务器可以呈现接口,其允许数据访问组件访问使用服务器的一个或多个物理存储设备或其部分实现的仓库的数据。
抽象级可以被重复至任何任意深度。例如,为数据访问组件215提供存储容器的服务器还可以依赖于存储容器来访问数据。
在另一实施例中,仓库220可以包括提供可持久化在非易失性存储中或不持久化在非易失性存储中的数据的视图的组件。
数据访问组件215中的一个或多个可以驻留在托管启动器210的装置上,而数据访问组件215中的其它一个或多个可以驻留在托管仓库220或提供对仓库220的访问的装置上。例如,如果启动器210是在个人计算机上执行的应用,则数据访问组件215中的一个或多个可以驻留于托管在该个人计算机上的操作系统中。这样的一个示例在图3中图示。
作为另一示例,如果仓库220由存储域网络(SAN)实现,则数据访问组件215中的一个或多个可以实现管理和/或提供对仓库220的访问的存储操作系统。当在单个装置中托管启动器210和仓库220时,数据访问组件215中的全部或许多也可以驻留在该装置上。
卸载读取允许启动器获取表示仓库的数据的令牌。通过使用该令牌,启动器或另一启动器可以请求卸载写入。卸载写入允许启动器使卸载提供器写入由令牌表示的数据中的一些或全部。
在一个实施例中,令牌是经由成功卸载读取获取的不可预测的数字。令牌表示只要该令牌有效则不可变的数据。令牌表示的数据有时称为大块数据。
卸载提供器是提供对与令牌相关联的数据的间接访问的实体(可能包括跨多个设备散布的多个组件)。逻辑上,卸载提供器能够执行卸载读取和/或卸载写入。物理上,卸载提供器可以由令牌提供器和数据访问组件215中的一个或多个来实现。
在为卸载读取或卸载写入服务时,卸载提供器可以在逻辑上对仓库的数据和/或与令牌提供器相关联的令牌执行操作。例如,对于卸载读取,卸载提供器可以将数据从由仓库的数据支持的逻辑存储容器逻辑复制到令牌(其也可以由仓库的数据支持)中,而对于卸载写入,卸载提供器可以将数据从令牌逻辑复制到由仓库的数据支持的逻辑存储容器。
卸载提供器可以从源仓库传输数据,将数据写入到目的地仓库,以及维持要在接收到与数据相关联的令牌时提供的数据。在一些实现中,卸载提供器可以在数据已经被逻辑写入到目的地仓库之后指示卸载写入命令完成。另外,卸载提供器可以指示卸载写入命令完成,但是推迟与卸载写入相关联的数据的物理写入直到方便时为止。
在一些实现中,卸载提供器可以在第一逻辑存储容器和第二逻辑存储容器之间共享数据,并且可以在令牌和存储容器之间共享数据。卸载提供器可以作为执行到仓库的物理存储位置的写入的部分而停止共享数据,执行到仓库的物理存储位置的写入将以其它方式导致多于一个存储容器被修改,或将以其它方式导致由令牌表示的数据改变。
在一些实现中,卸载提供器可以通过启动令牌与存储容器之间的数据共享而执行从存储容器到令牌的逻辑复制或从令牌到存储容器的逻辑复制。例如,卸载提供器可以通过经由启动源存储容器与令牌之间的数据共享而将数据从源存储容器逻辑复制到令牌来执行卸载读取。在另一示例中,卸载提供器可以通过经由启动令牌与目的地存储容器之间的数据共享而将数据从令牌逻辑复制到目的地存储容器来执行卸载写入。
在一些实现中,卸载提供器可以使令牌无效,例如以避免共享数据和/或避免物理复制数据。例如,卸载提供器可以通过经由将目的地存储容器的数据结构更新为引用由令牌所引用的仓库的物理存储位置而将数据从令牌逻辑复制到目的地存储容器来执行卸载写入,并且与此结合在逻辑上使令牌的至少部分无效。应当指出,这仍可以导致源和目的地存储容器共享数据。
在一些实现中,卸载提供器可以启动已在共享数据的全部令牌和存储容器以及另外的另一存储容器或令牌之中的存储位置数据共享。例如,为了为卸载读取服务,卸载提供器可以启动源存储容器和令牌之间的共享。因此,为了使用令牌为卸载写入服务,卸载提供器可以启动源存储容器、令牌和目的地存储容器之中的共享。如果稍后使令牌无效,则与该令牌的共享停止,但是源和目的地存储容器之间的共享可以继续(例如直到接收到针对该数据的写入为止)。
当在本文中使用时,在一个实现中,令牌提供器是卸载提供器的部分。在该实现中,在令牌提供器被描述为执行动作的情况下,应当理解,包括令牌提供器的卸载提供器在执行那些动作。在另一实现中,令牌提供器可以与卸载提供器分离。
为了启动仓库220的数据的卸载读取,启动器210可以使用预定义的命令发送获取表示该数据的令牌的请求(例如经由API)。作为响应,数据访问组件215中的一个或多个可以通过提供表示该数据或其子集的一个或多个令牌来对启动器210做出响应。令牌可以由用于表示不可变数据的字节序列表示。不可变数据的大小可以大于、小于或等于令牌的大小。
利用令牌,启动器210可以请求逻辑写入由该令牌表示的数据的全部或部分。在本文中有时将该操作称为卸载写入。启动器210可以通过向数据访问组件215发送令牌连同一个或多个偏移和长度一起来完成此。
数据访问组件215可以实现为存储栈,其中该栈的每层可以执行不同功能。例如,数据访问组件可以对数据进行分区、拆分卸载读取或写入请求、对数据进行高速缓存、对数据进行验证、对数据进行快照等。
栈的一个或多个层可以与令牌提供器相关联。令牌提供器可以包括一个或多个组件,其可以生成或获取表示仓库220的数据的部分的令牌,并且将这些令牌提供给启动器。
对于卸载写入的部分,针对所涉及的令牌,可以指示令牌相关的偏移以及目的地相关的偏移。任一个或两个偏移可以是暗含的或明确的。令牌相关的偏移例如可以表示从令牌所表示的数据的开头起的数个字节(或其它单位)。目的地相关的偏移可以表示从目的地上的数据的开头起的数个字节(或其它单位)。长度可以指示在偏移处开始的数个字节(或其它单位)。
如果数据访问组件215使卸载读取或写入失败,则可以返回错误代码,其允许另一数据访问组件或启动器尝试另一机制以用于读取或写入数据。
图3是一般地表示系统的组件的示例性布置的框图,其中令牌提供器由托管仓库的设备托管。如所图示的,系统305包括图2的启动器210和仓库220。图3的数据访问组件215被分割在驻留于托管启动器210的设备330上的数据访问组件310和驻留于托管仓库220的设备335上的数据访问组件315之间。在另一实施例中,在仓库220处于设备335外部的情况下,可以存在提供对仓库220的访问的附加数据访问组件。
设备335可以被看作卸载提供器的一个示例,由于该设备包括用于执行卸载读取和写入并且管理令牌的组件。
令牌提供器320可以生成令牌、使令牌生效和无效。例如,当启动器210请求针对仓库220上的数据的令牌时,令牌提供器320可以生成表示该数据的令牌。该令牌然后可以经由数据访问组件310和315被发送回到启动器210。
与生成令牌相结合,令牌提供器320可以在令牌仓库325中创建条目。该条目可以将令牌与指示由该令牌表示的数据可以在仓库220上的何处找到的数据相关联。条目还可以包括在管理令牌时使用的其它数据,例如何时使令牌无效、令牌的存活时间、其它数据等。
当启动器210或任何其它实体将令牌提供给令牌提供器320时,令牌提供器320可以在令牌仓库325中执行查找以确定令牌是否存在。如果令牌存在且有效,则令牌提供器320可以将位置信息提供给数据访问组件315,使得这些组件可以对所请求的数据进行逻辑读取或写入或者在逻辑上执行其它操作。
在类似于图3的另一示例性布置中,令牌提供器320和令牌仓库325可以包括在设备330中,并且数据访问组件310连接到令牌提供器320。例如,设备330的操作系统(OS)可以包括令牌提供器320和令牌仓库325。在该示例中,对于由启动器210执行的全部复制,启动器210可以假设令牌提供器和令牌仓库的存在。通过该假设,启动器210可以被实现为省略退回到正常读取和写入的代码。
在以上示例中,OS可以通过以下过程实现卸载读取:从数据访问组件315读取所请求的数据,并将该数据存储在设备330的存储(易失性或非易失性)中,创建新令牌值,以及将新创建的令牌值与所读取的数据相关联。OS可以通过将与令牌相关联的数据复制(例如写入)到由启动器210指定的目的地来实现负载写入。在该示例中,启动器210在某些场景中可能需要在卸载读取步骤处重新尝试复制,但是该重新尝试相比退回到正常读取和写入而言对于启动器是负担较轻的。
图4是一般地表示本文所描述的主题的方面可以在其中实现的另一示例性环境的框图。如所图示的,环境包括源启动器405、目的地启动器406、源存储容器410、目的地存储容器411、源物理仓库415、目的地物理仓库416、卸载提供器420,并且可以包括其它组件(未示出)。
源启动器405和目的地启动器可以与图2的启动器210类似地实现。源启动器405和目的地启动器406可以是两个分离的实体或单个实体。
如果源存储容器410和目的地存储容器411由单个系统实现,则卸载提供器420可以被实现为实现存储容器的系统的一个或多个组件。如果源存储容器410和目的地存储容器411由不同系统实现,则卸载提供器420可以被实现为跨实现存储容器的系统分布的一个或多个组件。
此外,可以存在存储容器和物理仓库的多于两个实例。例如,对于从源获取的给定令牌,可以存在多于一个指定的目的地。例如,可以发出引用单个令牌的多个卸载写入,并且每个卸载写入可以成功地瞄准对卸载提供器420已知的任何目的地。
源物理仓库415和目的地物理仓库416可以是同一仓库或不同仓库。这些物理仓库存储支持源和目的地存储容器的物理数据,并且还可以支持由令牌表示的数据。
尽管被图示为仅具有启动器与物理仓库之间的一个存储容器,但是如之前所提到的,在其它实施例中,启动器与物理仓库之间可以存在多层存储容器。
源启动器405可以通过发出卸载读取来获取令牌。作为响应,卸载提供器420可以生成令牌并将其提供给源启动器405。
如果源启动器405和目的地启动器406是分离的实体,则源启动器405可以将令牌提供给目的地启动器406。目的地启动器406然后可以使用令牌来向目的地存储容器411发出卸载写入。
在接收到卸载写入请求时,卸载提供器420可以使令牌生效,并且如由卸载写入请求所指示的那样,向目的地存储容器411逻辑写入数据。
全异卸载提供器
图5是图示了根据本文所描述的主题的方面的全异卸载提供器的框图。在一些情况下,可能合期望的是使用针对一个卸载提供器的卸载读取来获取令牌,并且然后使用该令牌在不同的卸载提供器上执行卸载写入。在卸载写入请求之前,两个卸载提供器可以知道或者可以不知道彼此。
根据本文所描述的主题的方面,源卸载提供器520(在下文中有时称为“源520”)和目的地卸载提供器521(在下文中有时称为“目的地521”)可以是具有兼容的卸载提供器协议和它们之间的通信路径(例如经由因特网的有效网络路线)的任何两个卸载提供器。不要求源520与目的地521之间预存在的信任关系。卸载读取的启动器(例如卸载读取启动器505)和卸载写入的启动器(例如卸载写入启动器506)可以是或者可以不是同一实体。
卸载读取启动器505(在下文中有时称为“启动器”)出于作为所请求的数据的源的目的而信任源卸载提供器520。卸载写入启动器506出于将令牌所表示的大块数据写入到所请求的目的地存储容器的目的而信任目的地。卸载读取启动器505出于能访问大块数据并且不把大块数据泄露给任何不适宜方的目的而信任卸载写入启动器506。卸载写入启动器506出于读取数据的目的而信任卸载读取启动器505。
这些信任关系可以用于/扩展到源520和目的地521。启动器可以向源520证明目的地521是用于特定传输的正确目的地(在潜在地多于一个正确目的地之中)。在一个实现中,信任关系可以通过发送信任数据来扩展。信任数据可以包括密码(secret)或者可能地非密码数据。在其它实现中,信任关系可以经由其它加密手段来扩展,所述其它加密手段例如是公共/私人密钥加密或其它加密手段。
源520与目的地521之间的通信可以使用由启动器提供的密钥来加密。该密钥可以是对于特定传输唯一的。源520查验来自目的地521的通信是来自有效的(例如启动器所信任的)目的地卸载提供器。目的地521查验通信真的来自源520。
源520的网络地址可以以多种方式传达给目的地521,所述多种方式例如包括嵌入令牌中、作为与令牌一起或与令牌结合传达的辅助数据等。网络地址可以是与任何数字通信技术相关的任何类型地址,例如IPV4因特网地址和端口、IPV6地址、以太网地址等。网络地址在第一次使用时可能需要翻译或转换。例如,地址可以是经由分布式散列表映射到当前IP地址的标识符。取决于地址类型和地址的可达性,地址可以在任何尺寸地理范围处(从小到全世界)相关和可用。在一个实现中,目的地521的网络地址可以被传送给源520,源520可以启动源520与目的地521之间的通信信道的建立。
下面描述用于扩展/使用之前所提到的信任的一个示例性机制。然而,不旨在将主题的方面仅限于下面描述的示例。实际上,基于本文的教导,在不脱离本文所描述的主题的方面的精神或范围的情况下,本领域技术人员可以识别出可使用的其它机制。
当在下文使用时,词语“传输”用于指整个卸载读取+卸载写入序列,其中一些大块数据从源传输到目的地而该大块数据不需要经过卸载读取和卸载写入的(多个)启动器。
在一个实现中,令牌不被用作仅有的共享密码。复制卸载可以具有知道令牌值的潜在多个目的地。在该实现中,仅知道令牌值可能不允许所声称的源卸载提供器向目的地卸载提供器证明所声称的源卸载提供器真的是源卸载提供器,而不是不同的非协作目的地卸载提供器。
下面是从源520向目的地521传输数据的一些示例性步骤:
1.在一个示例中,卸载读取启动器505将传输专用密钥(“Ksecret”)连同卸载读取请求一起发送给源520。在另一示例中,源520生成并提供与卸载读取响应中的令牌值分离的密钥。
这建立源520与卸载读取启动器505之间的共享密码(“Ksecret”),其中该共享密码如大块数据将会的那样安全(例如,如果取代卸载而使用正常读取/写入,则经由与大块数据将会的那样相同的通信信道来传达)。在一些实现中,对于多于一个传输,潜在地跨多于一个令牌的使用,Ksecret值可以相同。
2.卸载读取启动器505可以将令牌转发给卸载写入启动器506(或者它们可以是同一启动器)。如果卸载读取启动器505和卸载写入启动器506是分离的启动器,则卸载写入启动器506可以被看作目的地存储栈的部分。考虑到这一点,在下文,卸载读取启动器和卸载写入启动器被描述为这两者都由卸载读取启动器505(在下文中有时简单地称为“启动器”)启动。
在一个实现中,往返通信可以被最小化以移除任何不必要的通信。不论形式如何,卸载写入就是卸载写入。例如,将令牌转发给继而发出卸载写入的不同机器确实只是卸载读取启动器启动卸载写入的不同方式。
3.当执行卸载写入时,启动器505发送令牌(如通常那样),并且附加地还可以发送<要素(salt),Ksecret(要素)>。应当指出,Ksecret(要素)是使用仅对于源520和启动器已知的密码密钥(Ksecret)加密的数值(要素)。目的地521不知道Ksecret本身,但是目的地521确实知道Ksecret仅由启动器和源520知道。目的地521暗含地信任启动器以关于该传输正确地运转,因为启动器可能也正好写入启动器想要写入的任何东西。
目的地521将Ksecret(要素)发送给源520(但是不将要素值发送给源),并且源520然后可以对Ksecret(要素)进行解密以获取要素值,并且使用要素值对目的地521做出响应(例如经由通过源与目的地之间所共享的密钥加密的数据)。目的地521然后知道源520知道Ksecret,并且因此该源真的是源(启动器预先已经关于所请求的写入暗含地被信任——但是现在启动器已经说服目的地521关于所请求的写入信任源520),而目的地521不曾知道Ksecret。
在另一实现中,源520可以发送Kchannel(时间戳)或Kchannel(<由目的地521提供的要素>)以证明源520曾能够对Ksecret(<Kchannel,“有效”>)进行解密,从而向目的地521证明源520知道Ksecret并且因此已知将是实际的源520。
4.用于源520与目的地521之间的通信的信道530是新信道。就安全方面而言,在一个实现中,信道530至少如启动器与源520之间以及启动器与目的地521之间的信道那样安全。随着计算能力和加密性能的演进,“至少如……那样安全”部分可以改变。在一个实现中,信道可以使用适于高度敏感数据的相当长的密钥进行加密。对于当今的技术,256位AES密钥可能是足够的。该密钥的长度和类型可以随技术而改变。如果密钥长度不够长,则源520、目的地516和启动器中的每个可以拒绝参与传输(例如,如由其相应配置所指定的那样)。
用于对源与目的地之间的信道进行加密的密钥可以由源520、启动器或目的地521生成。用于保护信道的密钥在本文中有时称为“Kchannel”以将其与“Ksecret”区分。在一个实现中,在源520处生成Kchannel,并且源520在卸载读取响应中将Kchannel发送给启动器。
在另一实现中,在启动器处生成Kchannel。在该实现中,不需要从源520向启动器发送密钥。另外,启动器可以生成每源、目的地对(以及每传输)的密钥。
5.启动器将<Kchannel,Ksecret(<Kchannel,“有效”>)>发送给目的地521。
6.目的地521从令牌或从连同令牌一起传达的信息(例如从源520到启动器到目的地521)提取源520的网络地址。
7.目的地521将Ksecret(<Kchannel,“有效”>)发送给源520。
8.源520使用Ksecret进行解密以得到<Kchannel,“有效”>。与源520处的期望值匹配的“有效”部分向源520证明发送消息的目的地521真的是有效目的地。
9.源520可以发送Kchannel(时间戳)或Kchannel(<由目的地521提供的要素>)以证明源520曾能够对Ksecret(<Kchannel,“有效”>)进行解密,从而向目的地521证明源520知道Ksecret并且因此已知将是实际的源。
10.从此时以后,源520和目的地521可以使用经加密的消息进行通信,所述经加密的消息使用Kchannel加密。每个消息可以包括将仅在该消息尚未被篡改的情况下与期望值匹配的有效性校验值和顺序号。除了不论如何本已取代卸载操作而使用正常读取/写入能访问大块数据的那些实体之外,没有其它实体可以知道Kchannel。
为了增加安全性,需要通过向两个或多个目的地发送两个或多个卸载写入来处理卸载写入的目的地存储栈的任何层可以避免对两个不同目的地使用同一Kchannel密钥,特别是存在两个或多个目的地可能不在精确地相同信任边界内的任何可能性时。例如,可以完成此以防止一个目的地在源520与不同目的地之间的信道上进行窥探来确定该不同目的地从同一令牌接收一些数据。作为代替,这样的层可以通过将其对卸载写入的处置限于每Kchannel密钥的单个目的地而避免此。
应当指出,目的地栈中的信任关系使得目的地栈的所有“较高”层可以具有在较低层中使用的Kchannel密钥。较低层的两个分离的分叉也可以具有彼此相同的密钥或者可以具有不同的密钥以用于增加安全性。
在卸载操作期间出现截断的情况下,截断可以仅传播回到卸载读取的启动器,其然后可以生成新的Kchannel密钥并使用同一令牌发出新的卸载写入。
如果部分处理太麻烦,则启动器可以在初始卸载写入中提供多于一个Kchannel密钥(连同针对每一个的Ksecret(Kchannel,“有效”)一起),并且在较低层的两个分叉之下,栈层可以避免使用同一Kchannel密钥。
如果启动器支持每传输的多于一个令牌,则每目的地的分离的Kchannel密钥可能就足够(代替每令牌的分离的Kchannel)。
在一个实现中,源520与目的地521之间的信道可以用于针对多于一个令牌移动大块数据,只要全部令牌用于同一传输和同一源即可。
11.目的地521将使用Kchannel加密的(多个)令牌连同(多个)令牌的大块数据的哪些部分正被请求的指示一起发送给源520。目的地521可以克制不要告诉源520数据将被写入哪里。将以该方式加密的令牌发送给源不会向尚未知道它的任何实体泄露Kchannel,并且,除非消息的接受方具有Kchannel,否则不会将令牌泄露给消息的接受方。
12.源520将使用Kchannel加密的所请求的大块数据发送给目的地。
13.目的地521将大块数据的至少一些写入到卸载写入命令中所请求的目的地521的偏移。
14.目的地521完成卸载写入命令,其向启动器告知传输完成。
启动器、源520和目的地521之间所涉及的消息可以组合,使得从启动器到源520需要仅一个卸载读取请求/响应,启动器与目的地521之间需要仅一个卸载写入,并且从目的地521到源520以及返回需要仅一个交换。例如,可以完成此以减少总等待时间(例如,从启动器到源520的一个往返,从启动器到目的地516的一个往返,以及从目的地521到源520的一个往返)。
通过经加密的信道传送的数据可以被压缩。
多个传输可以并发出现,特别是需要复制大量大块数据时。并发传输可以以使得保持从源520到目的地521的网络链路忙于传输大块数据的这样的方式来完成。
图6-8是一般地表示根据本文所描述的主题的方面可能发生的示例性动作的流程图。为了简化说明,结合图6-8描述的方法被描绘和描述为一系列动作。应当理解和认识到,本文所描述的主题的方面不受所示动作和/或动作的顺序的限制。在一个实施例中,动作按如下文所描述的顺序出现。然而,在其它实施例中,动作可以并行地、按另一顺序、和/或带有本文未呈现和描述的其它动作而出现。此外,并非全部所示动作对实现根据本文所描述的主题的方面的方法都可以是必需的。另外,本领域技术人员应当理解和认识到,方法可以可替换地经由状态图表示为一系列相互关联的状态或事件。
图6是一般地表示根据本文所描述的主题的方面的启动器处可能发生的示例性动作的流程图。在605处,动作开始。
在610处,发送针对卸载读取令牌的请求。例如,参考图5,启动器505向源存储栈515发送卸载读取请求。源存储栈515将卸载读取请求递送给源520。
在615处,响应于请求,从源卸载提供器接收令牌。例如,参考图5,源520将令牌发送给启动器505。可以与其它数据在同一消息中或分离地传达令牌,所述其它数据例如是扩展信任的密码和如之前所提到的信道密码。
在620处,生成/获取密码。如果在启动器处生成,则可以在由610指示的动作之前生成密码,并且在针对令牌的请求中发送。在可替换方案中,密码还可以在发送针对令牌的请求之后生成,并且在发送请求之后发送。
作为另一可替换方案,取代由启动器生成密码,可以从源卸载提供器获取密码。在该可替换方案中,可以从传达令牌的卸载读取响应或在分离的消息中获取密码。
625和630的动作可以组合或是分离的。在一个实现中,可以在单个卸载写入命令中连同令牌一起提供密码。在另一实现中,可以在与其中发送令牌的卸载写入命令分离的消息中提供密码。
在625处,将密码提供给目的地卸载提供器。例如,参考图4,卸载读取启动器505将密码提供给卸载写入启动器506,该卸载写入启动器506经由目的地存储栈516将密码提供给目的地卸载提供器521。密码允许信任的扩展,如之前所指示的那样。特别地,密码允许源卸载提供器因为源卸载提供器信任启动器而信任目的地卸载提供器,并且允许目的地卸载提供器因为目的地卸载提供器信任启动器而信任源卸载提供器。
在一个实现中,可以在单个卸载写入命令中连同令牌一起提供密码。在另一实现中,可以在与其中发送令牌的卸载写入命令分离的消息中提供密码。
在630处,在卸载写入命令中将令牌提供给目的地卸载提供器。例如,参考图4,卸载读取启动器505可以将令牌提供给卸载写入启动器506(如果它们是分离的实体),该卸载写入启动器506经由目的地存储栈516将令牌提供给目的地卸载提供器521。卸载写入命令指示将不可变数据的至少一部分从源卸载提供器复制到目的地卸载提供器的指令。
源卸载提供器和目的地卸载提供器可以是同一卸载提供器,或者它们可以彼此独立。独立意味着它们是不同的卸载提供器,并且不是同一卸载提供器。在一个实现中,独立的卸载提供器可以由相同存储设备中的一个或多个支持,和/或可以共享一个或多个组件。在另一实现中,独立的卸载提供器不由任何公共存储支持,并且不共享任何组件。
其中源和目的地卸载提供器是同一卸载提供器(并且因此不独立)的示例在图4中利用卸载提供器420图示。
在框635处,可以执行其它动作,如果有的话。其它动作例如可以包括提供Kchannel密钥,利用该Kchannel密钥保护源卸载提供器与目的地卸载提供器之间的通信信道。可以由启动器、源或目的地生成该Kchannel密钥。对于令牌所表示的数据将被复制到的每个附加的目的地卸载提供器,可以存在附加的Kchannel密钥。
还可以包括其它动作,例如,通过将网络地址嵌入令牌中而向目的地卸载提供器提供源卸载提供器的网络地址。
还可以包括其它动作,例如,通过在令牌中嵌入可用于找到网络地址的查找键而向目的地卸载提供器提供源卸载提供器的网络地址。
还可以包括其它动作,例如,在本文中被指示为涉及启动器的任何其它动作。
图7是一般地表示根据本文所描述的主题的方面的目的地上可能发生的示例性动作的流程图。在705处,动作开始。
在710处,从启动器接收令牌。例如,参考图5,目的地521从卸载读取启动器505接收令牌。令牌由确保只要该令牌有效则数据不可变的源卸载提供器生成。
在715处,从启动器接收密码。例如,参考图5,目的地521从卸载读取启动器505接收密码。密码允许信任的扩展,如之前所提到的那样。
可以在单个消息中或多个消息中从启动器接收令牌和密码。
在720处,在目的地处接收其它数据。该其它数据例如可以包括:利用其保护目的地卸载提供器与源卸载提供器之间的通信信道的Kchannel密钥,网络地址,或者本文已经提到的其它数据。
在725处,认证发生。例如,参考图5,通过使用密码和/或其它数据,目的地521可以对源520进行认证,并且反之亦然。
在730处,建立与源的安全信道。例如,参考图5,目的地521使用Kchannel密钥建立与源520的安全通信信道。
在735处,将令牌提供给源。例如,参考图5,目的地521可以结合将令牌所表示的大块数据复制到目的地521的指令将令牌提供给源520。
在740处,接收大块数据。例如,参考图5,目的地521经由安全信道530从源520接收大块数据。
在745处,可以执行其它动作,如果有的话。其它动作例如可以包括在本文中被描述为涉及目的地的任何其它动作。
图8是一般地表示根据本文所描述的主题的方面的源上可能发生的示例性动作的流程图。在805处,动作开始。
在810处,可以从启动器接收卸载读取请求。例如,参考图5,源520可以从启动器505接收卸载读取请求。在一个实现中,卸载读取请求可以包括可用于如之前所指示的那样对信任进行扩展的密码,或与所述密码结合传达。
在另一实现中,在815处,源生成密码。例如,参考图5,源520可以生成密码以发送回到启动器505。
在820处,取决于实现,潜在地随密码一起发送令牌。例如,参考图5,源520将令牌随密码一起发送给启动器505。
在825处,从目的地接收密码。例如,参考图5,源520从目的地521接收密码。接收密码可以包括接收从密码导出的某种东西,其提供发送者知道密码的证据。
在830处,建立与目的地的安全信道。例如,参考图5,源520建立与目的地521的安全连接。
在835处,从目的地接收令牌。例如,参考图5,源520从目的地521接收令牌。令牌可以随发送与令牌相关联的大块数据的全部或部分的指令一起传达。
在框840处,提供大块数据。例如,参考图5,源520将由令牌表示的至少一些大块数据提供给目的地521。
在框845处,可以执行其它动作,如果有的话。其它动作例如可以包括接收目的地的网络地址,以及通过源启动与目的地的通信信道的建立。其它动作例如还可以包括在本文中被描述为涉及源的任何其它动作。
如从前面详细说明可见的,已经关于卸载技术描述了方面。尽管本文所描述的主题的方面易受各种修改和可替换构造,但其某些示例性实施例在附图中示出并已经在上文详细描述。然而应当理解,不旨在将所要求保护的主题的方面限于所公开的特定形式,而是相反,旨在覆盖落入本文所描述的主题的各个方面的精神和范围内的所有修改、可替换构造和等价方案。

Claims (11)

1.一种用于卸载的方法,所述方法至少部分由计算机实现并且包括:
由启动器发送针对令牌的请求,所述令牌表示只要该令牌有效则不可变的数据;
响应于所述请求,从源卸载提供器接收所述令牌;
随将所述不可变数据的至少一部分从所述源卸载提供器复制到目的地卸载提供器的指令一起,将所述令牌提供给目的地卸载提供器,所述源卸载提供器和目的地卸载提供器彼此独立;以及
将对所述启动器的信任扩展到所述源卸载提供器和目的地卸载提供器,使得所述源卸载提供器因为所述源卸载提供器信任所述启动器而信任所述目的地卸载提供器,并且使得所述目的地卸载提供器因为所述目的地卸载提供器信任所述启动器而信任所述源卸载提供器。
2.如权利要求1所述的方法,进一步包括响应于针对令牌的请求,从所述源卸载提供器接收密码,所述密码用于将对所述启动器的信任扩展到所述源卸载提供器和目的地卸载提供器。
3.如权利要求1所述的方法,进一步包括结合发送针对令牌的请求,由所述启动器向所述源卸载提供器发送密码,所述密码用于将对所述启动器的信任扩展到所述源卸载提供器和目的地卸载提供器。
4.如权利要求1所述的方法,进一步包括提供Kchannel密钥,利用该Kchannel密钥保护所述源卸载提供器与目的地卸载提供器之间的通信信道。
5.如权利要求4所述的方法,进一步包括针对所述令牌所表示的数据将被复制到的每个附加的目的地卸载提供器,生成附加的Kchannel密钥。
6.如权利要求1所述的方法,进一步包括通过将网络地址嵌入所述令牌中,将所述源卸载提供器的网络地址提供给所述目的地卸载提供器。
7.如权利要求1所述的方法,进一步包括通过在所述令牌中嵌入可用于找到网络地址的查找键,将所述源卸载提供器的网络地址提供给所述目的地卸载提供器。
8.一种在计算环境中用于卸载的系统,包括:
包括一个或多个处理器和一个或多个存储设备的目的地卸载提供器,所述目的地卸载提供器被配置为执行由计算机代码指示的动作,所述动作包括:
从启动器接收令牌,所述令牌表示只要该令牌有效则不可变的数据,所述令牌由确保只要该令牌有效则所述数据不可变的源卸载提供器生成,所述目的地卸载提供器和源卸载提供器彼此独立;以及
从所述启动器接收信任数据,所述信任数据用于将对所述启动器的信任扩展到所述源卸载提供器和目的地卸载提供器,使得所述源卸载提供器因为所述源卸载提供器信任所述启动器而信任所述目的地卸载提供器,并且使得所述目的地卸载提供器因为所述目的地卸载提供器信任所述启动器而信任所述源卸载提供器。
9.一种用于卸载的方法,包括:
从启动器接收针对令牌的请求,所述令牌表示只要该令牌有效则不可变的数据;以及
响应于所述请求,从源卸载提供器发送将随指令和信任数据一起提供给目的地卸载提供器的令牌,所述指令用于将所述不可变数据的至少一部分从所述源卸载提供器复制到所述目的地卸载提供器,所述源卸载提供器和目的地卸载提供器彼此独立,所述信任数据用于将对所述启动器的信任扩展到所述源卸载提供器和目的地卸载提供器,使得所述源卸载提供器因为所述源卸载提供器信任所述启动器而信任所述目的地卸载提供器,并且使得所述目的地卸载提供器因为所述目的地卸载提供器信任所述启动器而信任所述源卸载提供器。
10.如权利要求9所述的方法,进一步包括接收所述目的地卸载提供器的网络地址,以及由所述源卸载提供器启动与所述目的地卸载提供器的通信信道的建立。
11.一种具有计算机可执行指令的计算机存储介质,所述计算机可执行指令在被执行时执行权利要求1-7和9-10中任一项的方法。
CN201380065329.XA 2012-12-12 2013-12-12 用于卸载的方法、系统和计算机存储介质 Active CN104937904B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/711637 2012-12-12
US13/711,637 US9071585B2 (en) 2012-12-12 2012-12-12 Copy offload for disparate offload providers
PCT/US2013/074509 WO2014093561A1 (en) 2012-12-12 2013-12-12 Copy offload for disparate offload providers

Publications (2)

Publication Number Publication Date
CN104937904A CN104937904A (zh) 2015-09-23
CN104937904B true CN104937904B (zh) 2018-08-14

Family

ID=49920618

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380065329.XA Active CN104937904B (zh) 2012-12-12 2013-12-12 用于卸载的方法、系统和计算机存储介质

Country Status (5)

Country Link
US (1) US9071585B2 (zh)
EP (1) EP2932690B1 (zh)
CN (1) CN104937904B (zh)
ES (1) ES2811979T3 (zh)
WO (1) WO2014093561A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9092149B2 (en) 2010-11-03 2015-07-28 Microsoft Technology Licensing, Llc Virtualization and offload reads and writes
US9146765B2 (en) 2011-03-11 2015-09-29 Microsoft Technology Licensing, Llc Virtual disk storage techniques
US9817582B2 (en) 2012-01-09 2017-11-14 Microsoft Technology Licensing, Llc Offload read and write offload provider
US9251201B2 (en) 2012-12-14 2016-02-02 Microsoft Technology Licensing, Llc Compatibly extending offload token size
US9380114B1 (en) * 2013-06-27 2016-06-28 Emc Corporation Techniques for peer messaging across multiple storage processors of a data storage array
US9582206B2 (en) * 2014-06-16 2017-02-28 Netapp, Inc. Methods and systems for a copy-offload operation
US9514210B2 (en) * 2014-06-16 2016-12-06 Netapp, Inc. Methods and systems for a copy-offload operation
US9715351B2 (en) 2015-02-13 2017-07-25 Red Hat, Inc. Copy-offload on a device stack
US10616076B2 (en) 2017-05-30 2020-04-07 International Business Machines Corporation Network asset management
US11100090B2 (en) 2018-11-06 2021-08-24 International Business Machines Corporation Offloaded chaincode execution for a database

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101611588A (zh) * 2006-11-22 2009-12-23 威瑞森全球商务有限责任公司 对于受限资源的安全访问
EP2262164A1 (en) * 2008-02-18 2010-12-15 Microelectronica Española, S.A.U. Secure data transfer
CN102520877A (zh) * 2010-09-23 2012-06-27 微软公司 卸载读和写

Family Cites Families (93)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5043866A (en) 1988-04-08 1991-08-27 International Business Machines Corporation Soft checkpointing system using log sequence numbers derived from stored data pages and log records for database recovery
KR940004434A (ko) 1992-08-25 1994-03-15 윌리엄 이. 힐러 스마트 다이나믹 랜덤 억세스 메모리 및 그 처리방법
US5668958A (en) 1995-09-12 1997-09-16 International Business Machines Corporation Heterogeneous filing system with common API and reconciled file management rules
US6275867B1 (en) 1995-09-12 2001-08-14 International Business Machines Corporation Operation-partitioned off-loading of operations in a distributed environment
US6161145A (en) 1997-05-08 2000-12-12 International Business Machines Corporation Updating server-related data at a client
US6434620B1 (en) 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
US6141705A (en) 1998-06-12 2000-10-31 Microsoft Corporation System for querying a peripheral device to determine its processing capabilities and then offloading specific processing tasks from a host to the peripheral device when needed
US8631066B2 (en) 1998-09-10 2014-01-14 Vmware, Inc. Mechanism for providing virtual machines for use by multiple users
US6304983B1 (en) 1998-09-30 2001-10-16 International Business Machines Corporation Checkpoint logging without checkpoint display device availability
US6385701B1 (en) 1999-11-19 2002-05-07 International Business Machines Corporation Method, system and program products for sharing data between varied clients using token management
US7412462B2 (en) 2000-02-18 2008-08-12 Burnside Acquisition, Llc Data repository and method for promoting network storage of data
US6785743B1 (en) 2000-03-22 2004-08-31 University Of Washington Template data transfer coprocessor
US6804755B2 (en) 2000-06-19 2004-10-12 Storage Technology Corporation Apparatus and method for performing an instant copy of data based on a dynamically changeable virtual mapping scheme
EP1179793A1 (de) 2000-08-09 2002-02-13 Indatex GmbH Portal für Finanzdienstleister
US7475199B1 (en) 2000-10-19 2009-01-06 Emc Corporation Scalable network file system
US7895445B1 (en) 2001-04-26 2011-02-22 Nokia Corporation Token-based remote data access
US6961055B2 (en) 2001-05-09 2005-11-01 Free Radical Design Limited Methods and apparatus for constructing virtual environments
US6697881B2 (en) 2001-05-29 2004-02-24 Hewlett-Packard Development Company, L.P. Method and system for efficient format, read, write, and initial copy processing involving sparse logical units
US20040139125A1 (en) 2001-06-05 2004-07-15 Roger Strassburg Snapshot copy of data volume during data access
US6938002B2 (en) 2001-06-20 2005-08-30 International Business Machines Corporation System and method for product evaluation
US7016982B2 (en) 2002-05-09 2006-03-21 International Business Machines Corporation Virtual controller with SCSI extended copy command
US7107385B2 (en) 2002-08-09 2006-09-12 Network Appliance, Inc. Storage virtualization by layering virtual disk objects on a file system
US20040049603A1 (en) 2002-09-05 2004-03-11 International Business Machines Corporation iSCSI driver to adapter interface protocol
US7121456B2 (en) 2002-09-13 2006-10-17 Visa U.S.A. Inc. Method and system for managing token image replacement
US7340486B1 (en) 2002-10-10 2008-03-04 Network Appliance, Inc. System and method for file system snapshot of a virtual logical disk
US7194462B2 (en) 2003-02-27 2007-03-20 Bea Systems, Inc. Systems and methods for implementing an XML query language
JP4271967B2 (ja) 2003-03-10 2009-06-03 株式会社日立製作所 分散ファイルシステム及び分散ファイルシステムの運用方法
US7406501B2 (en) 2003-03-24 2008-07-29 Yahoo! Inc. System and method for instant messaging using an e-mail protocol
US7461080B1 (en) 2003-05-09 2008-12-02 Sun Microsystems, Inc. System logging within operating system partitions using log device nodes that are access points to a log driver
US20040267672A1 (en) 2003-06-26 2004-12-30 Gray William J. System and method for conducting secure electronic transactions
US7373548B2 (en) 2003-08-29 2008-05-13 Intel Corporation Hardware recovery in a multi-threaded architecture
DE60309706T2 (de) 2003-09-19 2007-03-29 Harman Becker Automotive Systems Gmbh Datenübertragungsschnittstelle
US7633955B1 (en) 2004-02-13 2009-12-15 Habanero Holdings, Inc. SCSI transport for fabric-backplane enterprise servers
JP4646526B2 (ja) 2004-02-18 2011-03-09 株式会社日立製作所 記憶制御システム及び同システムの制御方法
US8042163B1 (en) 2004-05-20 2011-10-18 Symatec Operating Corporation Secure storage access using third party capability tokens
US7383405B2 (en) 2004-06-30 2008-06-03 Microsoft Corporation Systems and methods for voluntary migration of a virtual machine between hosts with common storage connectivity
EP1650923B1 (en) 2004-10-22 2011-05-18 Software AG Authentication method and devices
US7464124B2 (en) 2004-11-19 2008-12-09 International Business Machines Corporation Method for autonomic data caching and copying on a storage area network aware file system using copy services
US20080104039A1 (en) * 2004-11-24 2008-05-01 Linda Lowson System and method for resource management
US7565526B1 (en) 2005-02-03 2009-07-21 Sun Microsystems, Inc. Three component secure tunnel
US8370819B2 (en) 2005-03-25 2013-02-05 Microsoft Corporation Mechanism to store information describing a virtual machine in a virtual disk image
US7475167B2 (en) 2005-04-15 2009-01-06 Intel Corporation Offloading data path functions
US8713180B2 (en) 2005-06-22 2014-04-29 Cisco Technology, Inc. Zero-copy network and file offload for web and application servers
US7480908B1 (en) 2005-06-24 2009-01-20 Azul Systems, Inc. Segmented virtual machine transport mechanism
JP4776307B2 (ja) 2005-08-31 2011-09-21 株式会社日立製作所 ストレージシステム、データ転送方法及びプログラム
US7617216B2 (en) 2005-09-07 2009-11-10 Emc Corporation Metadata offload for a file server cluster
US7725620B2 (en) 2005-10-07 2010-05-25 International Business Machines Corporation Handling DMA requests in a virtual memory environment
US7877485B2 (en) 2005-12-02 2011-01-25 International Business Machines Corporation Maintaining session states within virtual machine environments
US7676607B2 (en) 2005-12-08 2010-03-09 Electronics And Telecommunications Research Institute Hardware acceleration apparatus for iSCSI target system using TOE and method for performing read/write command using the apparatus
US8095931B1 (en) 2006-04-27 2012-01-10 Vmware, Inc. Controlling memory conditions in a virtual machine
US7653794B2 (en) 2006-05-08 2010-01-26 Microsoft Corporation Converting physical machines to virtual machines
US8332370B2 (en) 2006-05-09 2012-12-11 Hewlett-Packard Development Company, L.P. Maintaining commonly named client-specific file content in hard disk drive emulation
US20080065835A1 (en) 2006-09-11 2008-03-13 Sun Microsystems, Inc. Offloading operations for maintaining data coherence across a plurality of nodes
US8082231B1 (en) 2006-09-22 2011-12-20 Emc Corporation Techniques using identifiers and signatures with data operations
US8239674B2 (en) 2006-11-21 2012-08-07 Kabushiki Kaisha Toshiba System and method of protecting files from unauthorized modification or deletion
US7765361B2 (en) 2006-11-21 2010-07-27 Microsoft Corporation Enforced transaction system recoverability on media without write-through
JP2010512584A (ja) 2006-12-06 2010-04-22 フュージョン マルチシステムズ,インク.(ディービイエイ フュージョン−アイオー) 空データトークン指令を有する要求デバイスからのデータを管理する装置、システムおよび方法
CN101657802A (zh) 2006-12-06 2010-02-24 弗森多系统公司(dba弗森-艾奥) 用于远程直接存储器存取固态存储设备的装置、系统及方法
US9189265B2 (en) 2006-12-21 2015-11-17 Vmware, Inc. Storage architecture for virtual machines
US7941812B2 (en) 2007-01-30 2011-05-10 Hewlett-Packard Development Company, L.P. Input/output virtualization through offload techniques
US8397038B2 (en) 2007-03-22 2013-03-12 Vmware, Inc. Initializing file data blocks
US7831720B1 (en) 2007-05-17 2010-11-09 Chelsio Communications, Inc. Full offload of stateful connections, with partial connection offload
US7886115B2 (en) 2007-07-13 2011-02-08 Hitachi Global Storage Technologies Netherlands, B.V. Techniques for implementing virtual storage devices
US7730034B1 (en) 2007-07-19 2010-06-01 Amazon Technologies, Inc. Providing entity-related data storage on heterogeneous data repositories
US7801852B2 (en) 2007-07-31 2010-09-21 Oracle International Corporation Checkpoint-free in log mining for distributed information sharing
US7694105B2 (en) 2007-08-22 2010-04-06 Hitachi Global Storage Technologies Netherlands, B.V. Data storage systems that implement sector sets
EP2238535A4 (en) 2007-12-20 2011-03-09 Virtual Computer Inc SYSTEMS AND METHODS FOR VIRTUAL COMPUTER MANAGEMENT
US8051111B2 (en) 2008-01-31 2011-11-01 Prowess Consulting, Llc Method and system for modularizing windows imaging format
US20090248835A1 (en) 2008-03-31 2009-10-01 Subhankar Panda Offloading data transfers between a local and remote network
US8074014B2 (en) 2008-03-31 2011-12-06 Microsoft Corporation Storage systems using write off-loading
US8745336B2 (en) 2008-05-29 2014-06-03 Vmware, Inc. Offloading storage operations to storage hardware
US20090327621A1 (en) 2008-06-27 2009-12-31 Microsoft Corporation Virtual memory compaction and compression using collaboration between a virtual memory manager and a memory manager
US9323681B2 (en) 2008-09-18 2016-04-26 Avere Systems, Inc. File storage system, cache appliance, and method
JP5146174B2 (ja) 2008-07-28 2013-02-20 富士通株式会社 仮想マシンモニタ装置およびプログラム,ならびに仮想マシン間メモリ共有管理方法
US8307177B2 (en) 2008-09-05 2012-11-06 Commvault Systems, Inc. Systems and methods for management of virtualization data
US7904914B2 (en) 2008-09-30 2011-03-08 Microsoft Corporation On-the-fly replacement of physical hardware with emulation
US8250267B2 (en) 2008-10-31 2012-08-21 Netapp, Inc. Control I/O offload in a split-path storage virtualization system
TWI405211B (zh) 2008-11-04 2013-08-11 Phison Electronics Corp 快閃記憶體儲存系統、控制器與資料保護方法
US8566821B2 (en) 2008-11-11 2013-10-22 Netapp Inc. Cloning virtual machines
US8443166B2 (en) 2009-03-06 2013-05-14 Vmware, Inc. Method for tracking changes in virtual disks
US8370835B2 (en) 2009-03-12 2013-02-05 Arend Erich Dittmer Method for dynamically generating a configuration for a virtual machine with a virtual hard disk in an external storage device
US8397046B2 (en) 2009-03-26 2013-03-12 Hitachi, Ltd. Method and apparatus for deploying virtual hard disk to storage system
US8583893B2 (en) 2009-05-28 2013-11-12 Marvell World Trade Ltd. Metadata management for virtual volumes
WO2011023134A1 (en) 2009-08-28 2011-03-03 Beijing Innovation Works Technology Company Limited Method and system for managing distributed storage system through virtual file system
WO2011038359A2 (en) 2009-09-26 2011-03-31 Cisco Technology, Inc. Providing services at a communication network edge
US8627000B2 (en) 2010-02-08 2014-01-07 Microsoft Corporation Virtual disk manipulation operations
US20120079229A1 (en) 2010-09-28 2012-03-29 Craig Jensen Data storage optimization for a virtual platform
US9092149B2 (en) 2010-11-03 2015-07-28 Microsoft Technology Licensing, Llc Virtualization and offload reads and writes
US9146765B2 (en) 2011-03-11 2015-09-29 Microsoft Technology Licensing, Llc Virtual disk storage techniques
US20120324560A1 (en) 2011-06-17 2012-12-20 Microsoft Corporation Token data operations
US20130041985A1 (en) 2011-08-10 2013-02-14 Microsoft Corporation Token based file operations
US20130179959A1 (en) 2012-01-05 2013-07-11 Microsoft Corporation Zero Token
US9817582B2 (en) 2012-01-09 2017-11-14 Microsoft Technology Licensing, Llc Offload read and write offload provider

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101611588A (zh) * 2006-11-22 2009-12-23 威瑞森全球商务有限责任公司 对于受限资源的安全访问
EP2262164A1 (en) * 2008-02-18 2010-12-15 Microelectronica Española, S.A.U. Secure data transfer
CN102520877A (zh) * 2010-09-23 2012-06-27 微软公司 卸载读和写

Also Published As

Publication number Publication date
US20140164571A1 (en) 2014-06-12
EP2932690A1 (en) 2015-10-21
EP2932690B1 (en) 2020-08-05
WO2014093561A1 (en) 2014-06-19
US9071585B2 (en) 2015-06-30
CN104937904A (zh) 2015-09-23
ES2811979T3 (es) 2021-03-15

Similar Documents

Publication Publication Date Title
CN104937904B (zh) 用于卸载的方法、系统和计算机存储介质
US11218325B2 (en) Asset management method and apparatus, and electronic device
US11902450B2 (en) Blockchain generation method and system, and related device
US11270306B2 (en) Asset management method and apparatus, and electronic device
AU2019222743B2 (en) Asset management method and apparatus, and electronic device
US9251201B2 (en) Compatibly extending offload token size
US8656454B2 (en) Data store including a file location attribute
CN106127043B (zh) 从远程服务器对数据存储设备进行安全扫描的方法和装置
CA3084071A1 (en) Asset management system, method, apparatus, and electronic device
WO2020238248A1 (zh) 一种数据存储方法、装置及设备
CN104252375A (zh) 用于位于不同主机的多个虚拟机共享USB Key的方法和系统
US9888035B2 (en) Systems and methods for detecting man-in-the-middle attacks
US20140137265A1 (en) System and Method For Securing Critical Data In A Remotely Accessible Database
CN110008758A (zh) 一种id获取方法、装置、电子设备及存储介质
US20130297718A1 (en) Server device, client device, data sharing system and method for sharing data between client device and server device thereof
CN113821841B (zh) 资源管理方法、计算装置、计算设备和可读存储介质
CN109891425A (zh) 序列验证
US11968220B2 (en) Systems and methods for performing failover during a cyberattack
US20240345741A1 (en) System and method for managing data storage to identify undesired data modification
US20220103358A1 (en) Cloud key access mechanism
US20230283465A1 (en) Keystore service for encryption in a secure service enclave
JP2007243344A (ja) 通信方法、接続管理サーバ及び携帯電話機

Legal Events

Date Code Title Description
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant