CN103765406A - 用于远程更新执行进程的方法和设备 - Google Patents
用于远程更新执行进程的方法和设备 Download PDFInfo
- Publication number
- CN103765406A CN103765406A CN201280040713.XA CN201280040713A CN103765406A CN 103765406 A CN103765406 A CN 103765406A CN 201280040713 A CN201280040713 A CN 201280040713A CN 103765406 A CN103765406 A CN 103765406A
- Authority
- CN
- China
- Prior art keywords
- gateway
- data
- storage
- client
- write
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0632—Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了用于远程更新执行进程的方法、设备以及计算机可访问存储介质,所述执行进程在I/O端口上接收I/O请求,将写数据存储到本地存储的写日志,并将数据从所述写日志上传到远程存储。检测到并下载用于所述进程的更新,并且从所述更新对更新后的进程进行实例化。在更新窗口期间,当前进程被指示来执行关闭以进行更新。作为响应,所述当前进程保存其当前配置、将所述写日志的存储器中的部分转储清除到本地存储,并释放其I/O端口。更新后的进程加载所保存的配置,检测到所述端口已被释放,并在所述端口上开始接受I/O请求。在转储清除期间,当前进程转储清除存储器中的当前数据,同时继续追加新的写数据,停止接受新的写请求并且然后转储清除所述新的写数据。
Description
背景技术
许多公司和其它组织操作互连众多计算***的计算机网络以支持其运营,例如其中所述计算***位于同一位置(例如,作为本地网络的一部分)或者位于多个不同的地理位置中(例如,经由一个或多个私有或公共中间网络连接)。例如,包括显著数量的互连的计算***的数据中心已变得司空见惯,如由单一组织操作并用于所述组织的私有数据中心和由实体进行商业运营来向客户提供计算资源的公共数据中心。一些公共数据中心运营商为由各种客户所拥有的硬件提供网络接入、电源以及安全安装设施,而其它公共数据中心运营商提供还包括可供其客户使用的硬件资源的“全方位服务”设施。然而,随着典型的数据中心的规模和范围不断增加,供应、操纵以及管理物理计算资源的任务已变得日益复杂。
用于商用硬件的虚拟化技术的出现已为管理用于具有多样化需求的众多客户的大规模计算资源提供了益处,从而允许各种计算资源高效且安全地由多个客户共享。例如,虚拟化技术可以通过为每个用户提供由单一物理计算机作主机的一个或多个虚拟机而允许所述单一物理计算机在多个用户之间共享,其中每个这样的虚拟机充当不同逻辑计算***的软件模拟,所述软件模拟为用户提供了以为自己是给定硬件计算资源的唯一操作者和管理员的错觉,同时还提供了各种虚拟机之间的应用程序隔离和安全性。此外,一些虚拟化技术能够提供跨越两个或更多个物理资源的虚拟资源,如具有跨越多个不同物理计算***的多个虚拟处理器的单一虚拟机。
作为另一实例,虚拟化技术可以通过为每个用户提供可以横跨多个数据存储装置分布的虚拟化的数据存储器而允许数据存储硬件在多个用户之间共享,其中每个这样的虚拟化的数据存储器充当不同的逻辑数据存储器,所述逻辑数据存储器为用户提供了以为自己是数据存储资源的唯一操作者和管理员的错觉。
Web服务
常规Web模型允许客户端经由HTTP客户端程序(如Web浏览器)访问Web资源(例如,应用程序、服务以及数据)。已开发了被称为Web服务的技术以提供对Web资源的编程式访问。Web服务可以用来提供经由Web服务接口对Web资源进行编程式访问,所述Web资源包括托管在Web连接的计算机(如Web服务器***)上的技术平台(例如,应用程序和服务)和数据(例如,产品目录和其它数据库)。一般来说,Web服务接口可以被配置来提供标准、跨平台的API(应用程序编程接口)用于请求执行一些服务的客户端与服务提供商之间的通信。在一些实施方式中,Web服务接口可以被配置来支持文件或信息的交换,所述文件或信息包括描述服务请求和对此请求的响应的信息。这类文件或消息可以使用标准化的Web协议(例如像超文本传输协议(HTTP))进行交换并且可以以与平台无关的数据格式(例如像可扩展标记语言(XML))进行格式化。
附图说明
图1是根据至少一些实施方案的示例性网络环境的概要框图,所述网络环境包括示例***提供商和示例***客户。
图2示出根据至少一些实施方案的用于存储网关的示例性体系结构和所述存储网关的组件。
图3是其中可以实施存储网关的实施方案的示例性网络环境的概要框图。
图4是根据至少一些实施方案的示例性网络环境的框图,所述网络环境包括在服务客户网络现场的存储网关,所述存储网关用作所述服务客户网络与服务提供商网络上的存储服务之间的接口。
图5是根据至少一些实施方案的示例***提供商的框图,所述服务提供商向其客户提供存储服务和硬件虚拟化服务。
图6是宽泛地示出示例性网络环境的体系结构和所述网络环境中的数据流的概要框图,在所述网络环境中存储网关的实施方案被配置为高速缓存网关。
图7是宽泛地示出示例性网络环境的体系结构和所述网络环境中的数据流的概要框图,在所述网络环境中存储网关的一个实施方案被配置为投影(shadowing)网关。
图8是根据至少一些实施方案的宽泛地示出在示例性网络环境中自举投影网关的概要框图。
图9是根据至少一些实施方案的用于投影网关的自举过程的流程图。
图10是根据至少一些实施方案投影网关进入直通模式并从其中恢复的流程图。
图11是根据至少一些实施方案的用于从网关上传、更新并跟踪块到远程数据存储器的方法的流程图。
图12是根据至少一些实施方案的用于投影网关的优化的自举过程的流程图。
图13示出根据至少一些实施方案的存储网关安全模型的方面。
图14是根据至少一些实施方案的示出网关安全模型在存储网关的激活、配置以及操作过程中的至少一些方面的流程图。
图15是根据至少一些实施方案的示例性网络环境的概要框图,其示出参与网关激活过程的服务客户和服务提供商组件或实体。
图16A和图16B是根据至少一些实施方案的过程流程图,其示出在网关激活过程中图15中所示的组件之间的交互。
图17A和图17B是根据至少一些实施方案的从存储网关的角度来看的激活过程的流程图。
图18是示出可以在至少一些实施方案中采用的示例性网关控制体系结构的概要框图。
图19是根据至少一些实施方案的用于使用网关发起的连接和长轮询技术的远程网关管理的方法的流程图。
图20是根据一些实施方案的用于网关控制服务器向其对等服务器广播网关请求的方法的流程图。
图21是根据一些实施方案的用于将网关请求发送到适当的网关控制服务器的替代性方法的流程图。
图22是根据至少一些实施方案的用于建立、监视以及维护网关发起连接的方法的流程图。
图23A是根据至少一些实施方案的宽泛地示出用于包括网关代理平面的服务提供商网络的体系结构的框图。
图23B示出根据至少一些实施方案网关控制服务器通过网关代理平面向网关发送消息。
图23C示出根据至少一些实施方案网关通过网关代理平面对网关控制服务器请求作出响应。
图23D示出根据至少一些实施方案的用于网关代理平面的ping消息交换。
图24示出根据至少一些实施方案的用于高速缓存网关的通用体系结构和所述高速缓存网关的数据I/O操作。
图25示出根据至少一些实施方案的用于投影网关的通用体系结构和所述加密网关的数据I/O操作。
图26是根据至少一些实施方案的用于向块数据存储器上的写日志进行写入的方法的流程图。
图27是根据高速缓存网关的至少一些实施方案的用于满足读请求的方法的流程图。
图28A至图28D图示出根据至少一些实施方案的用于更新执行网关控制进程的技术的组件和操作。
图29是根据至少一些实施方案的用于更新执行存储网关进程的方法的流程图。
图30是示出可以在一些实施方案中使用的示例性计算机***的框图。
虽然在本文中通过列举若干实施方案和示意性附图的实例的方式描述了实施方案,本领域的技术人员应认识到,实施方案并不限于所描述的实施方案或附图。应理解,附图和对其的详细描述并非意图将实施方案限于所公开的特定形式,而是相反,其意图在于涵盖落入由所附权利要求书所界定的精神和范围内的所有修改、等同物以及替代方案。本文中所使用的任何标题都是仅用于组织目的并且并不意图限制说明书或权利要求书的范围。如贯穿本申请所用,词语“可以”是以允许意义(即,意味着有可能)而不是强制意义(即,意味着必须)使用。类似地,词语“包括(include/including/includes)”意味着包括但不限于。
具体实施方式
本公开描述了用于为远程存储提供本地网关的方法、设备以及计算机可存取存储介质的各种实施方案。本文在服务提供商的上下文中描述了存储网关的实施方案,所述服务提供商通过中间网络(如因特网)向其一个或多个客户提供存储服务。所述存储网关可以被实施为内置安装在客户的数据中心处并充当所述客户的数据中心与所述存储服务之间的网关的虚拟或物理设备。存储网关可以被配置为到经由存储服务远程提供的主存储的接口并用于所述主存储的本地高速缓存,和/或配置为将实施在客户的网络上的主存储投影到由存储服务提供的远程存储的接口。存储网关可以在所述设备的前端处向客户的应用程序呈现标准的数据存取接口,在所述设备的后端处将数据存取转换成存储服务请求,并根据存储服务接口将数据通过网络传输到存储服务。在至少一些实施方案中,所述存储服务接口可以被实施为Web服务接口。
存储网关的实施方案可以提供到经由存储服务所提供的几乎无限的、灵活的、可扩展的远程存储的内置接口。存储网关可以提供常规的内置存储解决方案的具有成本效益、灵活且更易扩展的替代方案。虽然存储装置的成本可能减少,但常规的内置存储解决方案的管理成本和其它的硬件与软件成本仍保持相对恒定或者在一些情况下增加。在将至少一些管理成本和其它成本转嫁给服务提供商的情况下,存储网关的实施方案可以允许所述服务提供商的客户降低总体存储拥有成本。
在至少一些实施方案中,存储服务可以根据块存储技术将客户的数据存储在远程数据存储器中。在至少一些实施方案中,存储网关可以在前端处向客户的应用程序公开块存储协议(例如,iSCSI、GNBD(全局网络块装置)等)、文件存储协议(例如,NFS(网络文件存储)、CIFS(通用互联网文件***)等)和/或对象存储协议(例如,REST(代表性状态传输))。块存储协议(如iSCSI)使得能够直接存取远程数据存储器的底层数据块。
由应用程序经由文件存储协议(如由存储网关呈现的NFS或CIFS)写入的文件可以根据块存储技术存储到远程数据存储器。通过所公开的文件存储协议(如NFS和CIFS),在根据块存储技术存储在远程数据存储器中的客户的数据被通过网络从网关发送到客户的应用程序之前,存储网关将客户的数据以文件呈现给客户的应用程序。所述所公开的块存储协议(例如,iSCSI)将块传输到客户的应用程序,因而要求所述应用程序来处理将数据块解释成所述应用程序所期望的任何格式的解释操作。
块存储协议(如iSCSI)是底层块存储协议,并且因此可以使得用例范围能够比文件存储协议(如NFS和CIFS)更为广泛。块存储协议可以使得能够支持通常写入到块存储器的应用程序(如和数据库),并且还可以被配置来为CIFS或NFS文件服务器提供底层存储。因此,在存储网关的至少一些实施方案中,可以采用块存储协议(如iSCSI)作为到客户应用程序的公开的接口。
图1是根据至少一些实施方案的示例性网络环境的概要框图,所述网络环境包括示例***提供商和示例***客户。存储网关84可以被安装、激活并配置为服务客户本地网络或数据中心(例如,客户端网络80)中的虚拟或物理设备,以便向客户端网络80上的客户进程88提供若干远程数据存储功能中的一个或多个。客户进程88可以是存在于客户端网络80上并可以经由网关84的数据端口的数据协议(例如,iSCSI协议)连接到存储网关84并与其通信的任何硬件、软件和/或其组合。存储网关84可以(例如)用作内置存储装置和/或用作客户端网络80上的客户进程88与由服务提供商60提供的存储服务64之间的接口。应注意,除了存储服务64之外,服务提供商60还可以向服务提供商60的客户提供其它服务,包括但不限于硬件虚拟化服务。
服务提供商60的客户在本文中可以被称为服务客户或简单地称为客户,并且可以是实施耦接到中间网络50(如互联网)的计算机网络或网络来向本地网络或网络上的一个或多个用户提供网络化计算服务(包括由服务提供商60远程提供的一种或多种服务)的任何实体。服务客户可以是商业企业、教育实体、政府实体或实施向用户提供网络化计算服务的计算机网络或网络的总体上任何实体。虽然图1示出单一客户端网络80,但可能存在多个客户端网络80。每个客户端网络80可以对应于不同服务客户,或者两个或更多个客户端网络80可以对应于同一服务客户的不同数据中心或位置,例如商业企业的不同地区办事处或学校***的不同校区。在至少一些实施方案中,服务提供商60的每个客户可以拥有服务提供商60的账户,并且可以被提供有安全凭证(例如,账户名称和/或标识符、密码等),经由所述安全凭证一个或多个客户代表(例如,客户端网络管理员)可以登录至到服务提供商60的接口(例如,Web页面)中来管理由一种或多种服务提供的客户的资源,所述客户的资源包括但不限于由服务提供商60提供的存储服务。
存储网关84的实施方案可以在硬件、软件或其组合中实施。在至少一些实施方案中,存储网关84可以实施为可以(例如)在被在主机***上实例化的虚拟机内执行的虚拟设备。在至少一些实施方案中,存储网关84可以实施为可以在耦接到服务客户的数据中心处的本地网络基础设施(例如,客户端网络80)的一个或多个计算装置(如服务器***)上下载或以其它方式安装、激活并配置的虚拟设备。或者,存储网关84可以实施为可以耦接到服务客户的数据中心处的本地网络基础设施(例如,客户端网络80)的专用装置或设备;所述专用装置或设备可以包括实施存储网关84的功能的软件和/或硬件。图26示出其上可以实施存储网关84的实施方案的示例性计算机***。在至少一些实施方案中,存储网关84经由中间网络50(例如,因特网)通过防火墙82技术与服务提供商60网络进行通信。应注意,服务提供商60网络还可以包括前端62技术(例如,防火墙技术、边界路由器技术、负载均衡器技术等),来自和流向中间网络50的网络流量通过所述前端技术。
存储网关84的至少一些实施方案可以根据安全模型进行实施,所述安全模型为客户提供了数据保护并且提供了对网关84的保护防止网关被客户或第三方滥用和未经授权而使用(例如,盗版)。可以保护并加密存储网关84与存储服务64之间的通信。稍后在本文件中描述了激活过程,在所述激活过程中,新安装的存储网关84发起与服务提供商60网络的连接并被其标识以获取安全凭证。在至少一些实施方案中,在所述激活过程中,客户登录到由服务提供商60提供的客户的账户中并向服务提供商60提供在注册网关84中所使用的信息。然而,客户并没有登录到存储网关84中,并且因此客户的安全凭证和其它账户信息没有暴露在网关84上。这可以最小化客户的安全风险。
在至少一些实施方案中,所述安全模型的方面是存储网关84只接受到从外部向公开给客户端网络80上的客户进程88的一个或多个数据端口(例如,iSCSI端口)发起的连接。存储网关向外部进程发起所有其它连接;外部进程无法向网关发起任何其它连接。例如,在至少一些实施方案中,存储网关84向服务提供商60发起网关管理和其它连接;服务提供商60不向网关84发起连接。作为另一个例子,客户端网络80的网络管理员进程90无法直接连接到存储网关84来配置和管理网关84。而是,网络管理员进程90对存储网关84的配置和管理可以通过服务提供商60(例如)经由服务提供商60网络上的控制台进程68来执行。因此,在至少一些实施方案中,客户端网络80上的用户、网络管理者或进程(例如,网络管理员进程90或客户进程88)无法直接“登录”到存储网关84中,服务提供商60网络上或某个其它外部网络上的用户、管理者或进程(例如,控制台进程68和存储服务64)或者某个其它外部网络上的用户、管理者或进程也无法向存储网关84发起连接。这有助于保护存储网关84上的安全凭证和其它操作信息不受到客户端网络80上的个人或进程或受到外部个人或进程有意或无意地危害。
存储网关84的实施方案可以被安装、激活并配置用于存储服务64来提供若干数据存储器66功能中一种或多种。例如,存储网关84可以被安装、激活、配置并用于存储服务64以用作:
·文件***网关。在此配置中,存储网关用作到存储服务64的(例如,使用CIFS或NFS协议的)NAS存储接口。网关84可以将远程数据存储器66作为对象存储器(例如,REST)呈现给客户,而数据存储器66是根据块存储技术来实施。在这种配置中,远程数据存储器66可以作为虚拟化的文件***呈现给客户,客户可以向所述虚拟化的文件***写入文件并且客户可以从所述虚拟化的文件***读取文件。
·云卷网关。在此配置中,存储网关84用作经由存储服务64到在远程数据存储器66上实施的卷的接口。远程数据存储器66可以使用块存储技术来实施。网关84提供本地网络接入点,其中远程数据存储器66上的卷(其也可以被称为云卷)用作提供灵活且基本上无限的主存储容量的后端存储。在这种配置中,远程数据存储器66可以作为云卷***呈现给客户,客户可以从所述云卷***在本地挂载卷用于读取和写入数据。
·投影网关。在此配置中,存储网关84用作客户的应用程序(例如,客户进程88)与客户的本地数据存储器86之间的“线缆中的块”,以便提供经由存储服务84将客户的写数据(例如,iSCSI写入)投影到远程数据存储器66。远程数据存储器66可以使用块存储技术来实施。在这种配置中,存储网关84可以用作将客户的本地数据存储器投影到远程数据存储器66上的快照的投影设备。这种投影可以从本地网络上的用户的角度来看透明地来执行。当必要或需要时,客户可以请求或访问远程数据存储器66上的客户的数据的快照,(例如)以便将客户的数据的部分或全部从所述快照还原、恢复或复制到本地存储器86。
应注意,文件***网关和云卷网关是相似的,因为两者都用作到远程数据存储器的网关,并且两者都可以在本地将数据(例如,频繁和/或最近使用的数据)高速缓存。在文件***网关和云卷网关两者中,如果可能的话,那么来自客户进程的数据读取可以从本地高速缓存提供服务,或者如果不可能的话,可以从远程数据存储器提供服务。相反,在投影网关中,数据读取被通过网关传递到客户的本地数据存储器。为了本文件的目的,可以将文件***网关和云卷网关统称为高速缓存网关以将这些实施方式与加密网关进行区分。
示例性存储网关设备体系结构
图2示出根据至少一些实施方案的用于存储网关的示例性体系结构和所述存储网关的组件。应注意,在与高速缓存网关实施方式相比较时,在投影网关实施方式中可以不使用图2中所示的组件中的一些,或者可以不同地使用或实施。
块驱动器10将客户进程88与存储网关84介接(interface)。一般来说,块驱动器10允许客户进程88(例如,经由读/写请求)与存储网关84进行交互。由于存储网关84是与客户进程88同地的,因此从进程88的角度来看,数据似乎是被存储在本地。然而,存储网关84与存储服务64介接来将数据存储到由存储服务64提供的远程数据存储器66。对于高速缓存网关来说,主数据存储器是远程数据存储器66,而频繁存取的数据可以由网关84在本地进行高速缓存。读取可以从本地高速缓存或者从虚拟数据存储66得到满足;写入被处理以便适当地更新本地高速缓存中和/或虚拟数据存储66中的数据块。对于投影网关来说,主数据存储器是本地数据存储器86;读取被传递到本地数据存储器86,并且写入被投影到虚拟数据存储66,同时还被发送到本地数据存储器86。
块驱动器10拦截来自客户进程88的读/写请求并将所述请求传递给存储控制器12。在至少一些实施方案中,块驱动器10可以提供块存储协议(例如,iSCSI或GMBD)作为到客户进程88的接口。在一些实施方案中,代替块存储协议接口或作为其可替代物,块驱动器10可以提供文件存储协议接口(例如,NFS或CIFS),并且可以使用文件***语义作为到存储控制器12的接口。应注意,虽然图2示出一个块驱动器10,但可能存在一个以上块驱动器。
存储控制器12经由高速缓存管理器14充当块驱动器10与存储之间的中介物。存储控制器12的职责可以包括将来自块驱动器10的读取和写入请求转发给存储并且当存储用数据响应时回叫块驱动器10。块驱动器10还可以维护统计数据,如正在进行中的请求数目。
在至少一些实施方案中,一个存储网关84上的存储控制器12可以与另一存储网关84上的高速缓存管理器14进行通信。在至少一些实施方案中,每个存储网关84可以发送心跳消息用于发现和检测故障。可以使用一致性哈希函数来标识负责给定对象的存储网关84,并且可以将获取数据的请求转发给目标存储网关84上的高速缓存管理器14。高速缓存管理器14可以通过调用由存储控制器12提供的回叫信号来响应。
在高速缓存网关实施方案中,高速缓存管理器14可以管理(例如)提供用于频繁存取的数据的存储的本地高速缓存28。本地高速缓存28可以在存储网关84的内部易失性和/或非易失性存储器上来实施,或者可替代地,可以至少部分地在由客户提供的外部本地数据存储器86上来实施。在至少一些实施方案中,本地高速缓存28代表存储在虚拟化的数据存储66中的数据;来自客户进程88的写入可能不直接影响本地高速缓存28。
在采用多个网关84的至少一些实施方案中,可以使用分布式本地高速缓存,并且可以使用关于密钥的一致性哈希函数来标识负责持有给定密钥的高速缓存。在至少一些实施方案中,可以使用位置感知请求分布来减少网关84之间的可能要求额外负载平衡的通信。
对远程数据存储器66中的给定卷的所有写请求可以去往特定的网关84节点。由于对卷的所有写请求都被转发给特定的网关84节点,因此网络分区可能不是问题。
暂存
在至少一些实施方案中,高速缓存管理器14可以包括暂存16组件或可以与其介接。暂存16可以包括或可以访问写日志18。在至少一些实施方案中,可以在写日志18上建立数据结构并将其用作元数据存储器26。元数据存储器26可以允许快速访问对特定块的所有写入。元数据存储器26可以(例如)用来将变化应用到块内的不同片段。当从客户进程88接收到写数据时,所述数据被追加到写日志18。用于与块有关的写数据的元数据(例如,偏移和长度)可以存储到元数据存储器26。在至少一些实施方案中,写日志18可以被实施为实现为线性队列抑或循环队列的一维数据缓冲器。在至少一些实施方案中,元数据存储器26可以是例如实施为Berkeley数据库的键/值存储器。在一些实施方案中可以使用写日志18和元数据存储器26两者的其它实施方式。
在高速缓存网关实施方式中,当执行读取时,初始块可以从本地高速缓存28或者从远程数据存储器66获取,并且由写日志18指示的任何挂起的变化都可以在将数据返回给相应的客户进程88之前被应用。
在一些实施方案中,如果网关84发生故障(例如,当机),那么内存中的写数据可能丢失,除非所述数据已被写入到本地数据存储器86。在一些实施方案中,如果在客户站点处存在多个网关84,那么另一网关84可以承担由当机的网关84所有的密钥的职责、从本地数据存储器86上的快照(如果存在的话)还原写入,并开始接受定向到相应卷的请求。在一些实施方案中,可以将写日志18和/或元数据存储器26复制在两个或更多个网关84上以提供冗余和更好的耐久性。在网关84发生故障的情况下,其它网关84中的一个可以接管发生故障的网关的写日志18和元数据存储器26。然而,在至少一些实施方案中,元数据存储器26只可能在所有者网关84上进行维护。在这些实施方案中,在网关84发生故障的情况下,其它网关84中的一个可以接管并解析主要写日志18来重建元数据存储器26。
在高速缓存网关实施方式中,取块器22经由存储服务64从远程数据存储器66取出所需块片段。在至少一些实施方案中,取块器22可以采用延迟取出技术来取出完整块用于高速缓存。对于高速缓存网关和投影网关两者来说,块存储器24经由存储服务64将数据从暂存16推送到远程数据存储器66。在至少一些实施方案中,块存储器24可以采用延迟推送技术来推送块。
在至少一些实施方案中,在用于高速缓存网关的读操作期间,块驱动器10将包括卷ID、起始偏移以及长度的读请求发送给存储控制器12。在至少一些实施方案中,存储控制器12可以将所述卷ID和偏移翻译成目标密钥。存储控制器12可以将所述读请求信息传递给高速缓存控制器14,所述高速缓存控制器可以尝试从适当的本地高速缓存28来满足读请求。如果数据不存在于本地高速缓存28中,那么请求被转发给取块器22,所述取块器经由存储服务64从远程数据存储器66上的适当卷取出数据。一旦获得数据,本地高速缓存28就被更新、来自写日志18的变化被应用并且读响应被返回给客户进程88。在至少一些实施方案中,如果多个块被请求,那么可以返回多个读响应,每个读响应指示用于相应块的相对偏移。在至少一些实施方案中,如果检测到顺序读取,那么可以预取出顺序块。
在至少一些实施方案中,在写操作期间,块驱动器10将包括卷ID和写数据的写请求发送给负责所述卷的存储控制器12。写数据被写入到写日志18,并且元数据存储器26被更新以包括对缓冲池20中的变化的数据的引用。
缓+池
在至少一些实施方案中,缓冲池20驻留在存储控制器12与本地数据存储器86之间。缓冲池20可以执行(但不限于)以下任务中的一种或多种。应注意,一些任务可能只适用于高速缓存网关:
·为写日志18和本地高速缓存28高速缓存用于从其在本地数据存储器装置上的物理位置的逻辑偏移的数据。
·在读和写操作期间维护缓冲器上的锁。
·在用于本地高速缓存28的物理存储上应用逐出技术(例如,基于最近最少使用(LRU)的逐出技术)。应注意,这对于投影网关来说不需要。
·对于高速缓存网关中的读取,如果在本地高速缓存28中没有找到所请求的数据,那么缓冲池20可以与取块器22通信,以便从远程数据存储器66取出块。或者,在一些实施方案中,取块器22可以直接与存储服务64通信来取出块。
在至少一些实施方案中,缓冲池20可以采用数据库(例如Berkeley数据库(BDB))作为其元数据存储器26。下面所示的表1示出根据至少一些实施方案可以存储在元数据存储器26中的信息。应注意,表1中的条目不旨在根据内容或布置进行限制。
表1-示例性元数据存储信息
在至少一些实施方案中,物理磁盘偏移位于设定的边界处,例如位于4MB边界处。在至少一些实施方案中,这包括用于卷中和写日志18中的数据的边界。在至少一些实施方案中,对于特定卷的写入可以是顺序写入,并且因此可以不必考虑磁盘上的碎片。应注意,“组块”可以对应于一个块或者对应于一个或多个块。
应注意,元数据存储器26可以包括S(快照)和C(组块)条目两者,并且这些条目都需要与存储控制器12尝试经由其访问块的方案保持最新。例如,第一次可以使用快照ID来引用块,但之后每次使用组块ID。这可以被保留在元数据存储器26中。当快照完成之后,存储控制器12可以使用快照ID来引用来自所述快照的块;因此,元数据存储器26中的C(组块)条目可以被转换成对应的S(快照)条目。
高速缓存网关操作
在至少一些实施方案中,当接收到读请求时,在元数据存储器26中查找用于块的一条或多条写日志18条目。如果所述读请求可以使用所述一条或多条写日志18条目来满足,那么在元数据存储器26中查找所有所要求的条目、将其读入缓冲区、拉平并且返回所要求的块。如果读请求无法仅使用一条或多条写日志18条目来满足,那么从读请求中的偏移来计算用于高速缓存数据块(例如,4MB的块)的偏移。块的位置是在元数据存储器26中查找。如果块是在本地高速缓存28中,那么从本地高速缓存28中读取块,并且如果不是,那么从远程数据存储器66取出块。所要求的写日志18条目被如上所述的那样取出、用块进行拉平并返回所要求的件。如果块是从远程数据存储器66取出的话,那么所述块被高速缓存到本地高速缓存28并记录在元数据存储器26中。本地高速缓存28中块的最后访问时间也被更新。
在至少一些实施方案中,当接收到写请求时,变化被记录在下一个写日志18偏移处并且元数据(即,偏移和长度)被记录在元数据存储器26中。
在至少一些实施方案中,当块上传完成时,所述块的最新版本(具有所应用的变化)被添加到本地高速缓存28并记录在元数据存储器26中。如果在本地高速缓存28中存在块的以前版本,那么此块在元数据存储器26中被标记为空闲。
在至少一些实施方案中,当快照完成时,元数据存储器26可能需要如上述那样被重组。也就是说,属于所述快照的块条目可以被转换成远程数据存储器66上的对应快照条目。
投影网关操作
在至少一些实施方案中,读请求被传递到本地数据存储器86。
在至少一些实施方案中,当接收到写请求时,写数据被记录在下一个写日志18偏移处并且用于所述写入的适当元数据被记录在元数据存储器26中。所述写请求还被传递到本地数据存储器86。
在至少一些实施方案中,为了将块上传到远程数据存储器66,上传进程调用缓冲池20来读取写日志18。缓冲池20使用元数据存储器26来执行从逻辑写日志18偏移到物理偏移的翻译,并且然后数据被读入到存储器缓冲区。然后所述缓冲区被呈现给上传进程。所述上传进程将块上传到远程数据存储器66并将块释放到缓冲池20。
写日志清除
在至少一些实施方案中,如果写日志18需要被清除,那么缓冲池20获取用于可以清除其写日志18的卷的写日志偏移。在至少一些实施方案中,所述写日志偏移可以(例如)通过在检查每个条目的偏移量的数据库上执行行走来从元数据存储器26进行确定。为了清除写日志18,可以将现有写日志的对应于所述日志的可清除部分的条目标记为空闲条目。
示例性实施方式
图3是其中可以实施存储网关的实施方案的示例性网络环境的概要框图。中间网络100(例如,因特网)上的服务提供商110可以提供一个或多个服务客户网络(例如,客户端网络150),所述服务客户网络也耦接到中间网络100、经由存储服务112访问远程数据存储器116。每个客户端网络150可以对应于不同服务客户,或者两个或更多个客户端网络150可以对应于同一服务客户的不同数据中心或位置,例如商业企业的不同地区办事处或学校***的不同校区。服务客户可以是商业企业、教育实体、政府实体、私有实体或实施耦接到中间网络100(如因特网)的计算机网络或网络来向一个或多个用户提供网络化计算服务的总体任何实体。在一些实施方案中,存储服务112可以提供接口(例如Web服务接口),经由所述接口每个服务客户的客户端网络150可以访问由存储服务112提供的功能。
客户进程154A和154B表示连接到服务客户的客户端网络150的物理的和/或虚拟的机器或***。作为由存储服务112提供的功能的一个例子,经由存储服务112,用户可以经由客户进程154在远程数据存储器116中创建并安装数据卷。从客户端网络150上的用户的角度来看,由存储服务112提供的数据卷可能看起来似乎其为本地存储一样;因此,这样的数据卷可以被称为虚拟数据卷158。虚拟数据卷158实际上映射到在其上远程数据存储器116被实例化的一个或多个物理存储装置或存储***;然而,这种映射是由存储服务112来处理,并且因此从客户端网络150上的用户的角度来看是透明的。客户进程154的用户可能仅看到安装在桌面上或在装置列表中的卷。客户进程154的用户可以创建数据、修改数据、删除数据并且一般来说在虚拟数据卷158上执行任何数据相关的功能,就好像卷158是实施在本地附连的存储装置上一样。
图4是根据至少一些实施方案的示例性网络环境的框图,所述示例性网络环境包括在服务客户的客户端网络250现场处、用作客户端网络250与存储服务212之间的接口的存储网关252。在至少一些实施方案中,存储网关252可以是就地安装在服务客户的数据中心处的文件和/或块存储设备。
存储网关252可以(例如)被安装、激活并配置来用作文件***网关、用作云卷网关(统称为高速缓存网关)或用作投影网关。文件***网关用作到存储服务212的(例如,使用CIFS或NFS协议的)NAS存储接口。远程数据存储器216可以作为对象存储器(例如,REST)呈现给客户,而实际上实施为块存储。云卷网关用作到由存储服务212提供的虚拟化的卷存储的接口。所述卷存储可以实施为块存储。网关252提供本地网络接入点,其中远程数据存储器216(其也可以被称为云卷)用作提供灵活且基本上无限的主存储容量的后端存储。加密网关充当客户的应用程序与客户的本地数据存储器之间的“线缆中的块”,以便提供将客户的写数据(例如,iSCSI写入)投影到由存储服务212提供的远程存储。远程数据存储器216可以实施为块存储。
在高速缓存网关实施方式中,存储网关252可以存储本地数据存储器254上频繁存取的数据的本地高速缓存,同时安全地加密和加速数据移动回到服务提供商210。类似地,投影网关实施方式可以安全地加密和加速写数据到服务提供商210的移动。与标准因特网连接相比,这种加速的数据移动可以(例如)使用数据重复数据删除、压缩、并行化以及TCP窗口缩放技术中的一种或多种来实现。存储网关252可以显著减少通常与将就地存储阵列作为主存储或备份存储进行管理相关的成本、利用、维护以及供应问题。存储网关252可以通过用具有成本效益的设备替代客户可能以其它方式内部存储在昂贵硬件(例如,NAS或SAN硬件)上的数百(100s)TB(terabyte)乃至数百PB(petabyte)数据来实现这一点。借助于存储网关252,客户可以从就地存储(在高速缓存网关实现方式中由网关252维护的本地高速缓存提供)的低访问延迟中获益,同时利用了由服务提供商210提供的耐用、可用且可扩展的分布式存储基础设施。
存储网关252的实施方案可以与客户的就地应用程序无缝地工作。在至少一些实施方案中,客户可以配置存储网关252以支持SAN(iSCSI)、NAS(NFS,CIFS)或对象(REST)存储。在至少一些实施方案中,由存储网关252提供的iSCSI接口可以使得能够与就地块存储应用程序(如和数据库)进行集成。在至少一些实施方案中,客户可以利用由存储网关252提供的NFS和CIFS接口来整合多种环境(包括但不限于,Windows、Linux以及UNIX环境)下的文件存储。在至少一些实施方案中,存储网关252还可以被配置来支持基于REST的请求。
在至少一些实施方案中,存储网关252可以实施为虚拟装置或设备,所述虚拟装置或设备可以在耦接到客户数据中心处的客户端网络250基础设施的一个或多个计算装置(如服务器***)上下载或以其它方式进行安装、激活并配置。或者,存储网关252可以实施为可以耦接到客户端网络250基础设施的专用装置或设备;所述专用装置或设备可以包括在其上可以实施网关的功能的软件和/或硬件。
在至少一些实施方案中,存储网关252经由中间网络200(例如,因特网)与服务提供商210网络进行通信。由于可能通过存储服务212与存储网关252之间的中间网络200传输大量的数据,所以存储网关252到中间网络200的耦接一般可以经由由服务客户的客户端网络250提供的高带宽连接。例如,在高峰时间,所述连接可能需要支持100兆比特/秒(100Mbit/s)或更高速率的数据传输。然而,在至少一些实施方案中,可以采用诸如数据重复数据删除技术的技术来减少当从存储网关252上传数据到存储服务212时的带宽使用,并且因此连接的更多带宽可以是对于其它应用程序可用的。在通过引用以其整体并入本文中的题为“RECEIVER-SIDE DATA DEDUPLICATION INDATA SYSTEMS”的美国专利申请12/981,393和在通过引用以其整体并入本文中的题为“REDUCED BANDWIDTH DATAUPLOADING IN DATA SYSTEMS”的美国专利申请12/981,397中描述了可以在至少一些实施方案中采用的示例性数据重复数据删除技术。
在至少一些实施方案中,客户端网络250与服务提供商210之间通过中间网络200的连接的带宽可以(例如)经由客户端网络250处的网络管理员进程260分配给存储网关252和分配给其它客户应用程序。(例如)根据数据重复数据删除技术,存储网关252可以将变化的(新的或改变的)数据连续或接近连续地上传到存储服务212。然而,客户端网络250处的数据的变化速率可能随时间而改变;例如,在白天期间,客户进程写吞吐量可能较高,而在晚上写吞吐量可能较低。因此,如果分配给存储网关252的带宽不够高到足以跟上变化的话,那么在变化速率较高的繁忙时间,存储网关252可能在上传变化的数据上落后;然后存储网关252可以在变化速率不是那么高的不太繁忙的时间赶上来。在至少一些实施方案中,如果存储网关252落后超过指定阈值,那么存储网关252可以请求分配额外的带宽。在至少一些实施方案中,如果必要的话,存储网关252可以发出警报来要求更多带宽。
虽然图4示出存储网关252与存储服务212之间的直接连接,应注意,存储网关252与存储服务212之间的连接可以通过本地网络256。
在存储网关252的至少一些实施方案中,可以将较大数据块或数据组块甚至整个数据卷本地高速缓存到本地数据存储器254而不是在需要时从远程数据存储器216检索数据。存储网关252可以包括或可以访问其上可以维护数据的本地高速缓存(例如频繁存取的数据或关键数据)的物理数据存储和/或存储器(本地数据存储器254)。本地数据存储器254可以是易失性或非易失性存储或存储器或其组合。维护频繁存取数据的本地高速缓存通常可以改进客户进程258的数据存取时间,因为许多或大部分数据存取可以从所述本地高速缓存得到服务,而不是从远程数据存储器216检索数据。然而,远程数据存储器216可以用作用于服务客户的客户端网络250的主数据存储器;因此,存储网关252可以经由中间网络200与存储服务212进行通信以便将新的或修改过的数据周期性地、非周期性地或连续地从本地高速缓存上传到远程数据存储器216,并且在必要时,从远程数据存储器216下载所请求的数据。
在图4中,远程数据存储器216的存储(218A、218B、218C...)说明远程数据存储器216可以在连接到服务提供商210的本地网络214的若干存储装置或***上或者横跨所述若干存储装置或***来实施。因此,服务客户的数据可以分散横跨“后端”上的两个或更多个物理存储装置或***。后端存储装置可以是(但不必定是)与其它客户共享的多租户装置。然而,如参照图3所注意到的,从客户端网络250上的用户和进程的角度来看,客户端的数据可以呈现为虚拟卷或虚拟文件。
在至少一些实施方案中,如参照图3和图4所描述的服务提供商还可以向客户提供硬件虚拟化技术和可能的其它虚拟化技术。服务提供商200可以向客户提供一系列虚拟化的计算技术和虚拟化的存储技术,包括提供块存储能力(即,基于块的存储***)的块存储技术。根据由服务提供商200提供的硬件虚拟化技术实施的虚拟计算环境或***可以由所述块存储技术来支持。块存储技术可以提供虚拟化的存储***,所述虚拟化的存储***(例如)能够通过标准化的存储调用与虚拟计算***进行交互,这使得所述块级别的存储与其所支持的卷的结构和功能细节,并且与在所述块级别的存储向其提供存储可用性的虚拟计算***(或其它***)上执行的操作***在功能上无关。
存储网关252的实施方案可以与由服务提供商200提供的就地客户应用程序和虚拟化的计算及存储技术进行整合,从而为客户提供对弹性的“基于云的”计算和存储资源的访问。例如,使用用于SAN存储的存储网关252的用户可以创建其数据的一致的、基于块的时间点快照。然后,这些快照可以通过要求基于块的存储***所提供的高I/O和低延迟数据存取的硬件虚拟化技术应用程序或实例(参见(例如)图5中的虚拟计算***264)进行处理。作为另一个例子,客户可以经由NFS或CIFS文件协议来配置用于NAS存储的存储网关252,并且可以创建其文件数据的可从硬件虚拟化技术实例访问的时间点快照。
在一些实施方案中,使用由存储网关252提供的基于REST的接口编写的对象可以经由HTTP或其它协议从由服务供应商提供的虚拟化的存储技术直接访问,或者可以使用由服务提供商提供的整合内容传送技术进行分配。在一些实施方案中,客户还可以利用由虚拟化的存储技术提供的高度可扩展的分布式基础设施用于这些对象在硬件虚拟化技术实例上的并行处理。
图5是根据至少一些实施方案的示例***提供商的框图,所述服务提供商向其客户提供存储服务和硬件虚拟化服务。例如如参照图4所描述的,服务客户的客户端网络250可以包括一个或多个存储网关252,所述存储网关用作客户端网络250与服务提供商210的存储服务212之间的接口。服务客户端可以表示可以访问由服务提供商210提供的服务之一的任何管理员、用户或进程。
硬件虚拟化技术可以使得多个操作***能够同时运行在主计算机292上,即作为主机292上的虚拟机(VM)296。VM296可以(例如)被租用或租赁给服务提供商210的客户。主机292上的管理程序或虚拟机监视程序(VMM)294为主机292上的VM296呈现了虚拟平台并监视VM296的执行。每个VM296可以被提供有一个或多个IP地址;主机292上的VMM294可以知道VM296在所述主机上的IP地址。服务提供商210的本地网络可以被配置来将数据包从VM296发送到因特网目的地(例如,发送到客户端网络250上的服务客户端262),以及从因特网资源(例如,服务客户端262)发送到VM296。
服务提供商210可以为经由本地网络256耦接到中间网络200的服务客户的客户端网络250提供经由硬件虚拟化服务290实施耦接到中间网络200并耦接到服务提供商210的本地网络的虚拟计算***264的能力。在一些实施方案中,硬件虚拟化服务290可以提供接口,例如Web服务接口,经由所述接口服务客户端262可以访问由硬件虚拟化服务290提供的功能。在服务提供商210处,每个虚拟计算***264可以表示主机292***上的租赁、出租或以其它方式提供给服务客户的虚拟机(VM)296。
用户可以如先前所描述的那样从虚拟计算***264的实例访问存储服务212的功能。因此,如图5中所示的虚拟化的***的实施方案可以允许客户端创建虚拟计算机***264的在由服务提供商210提供的虚拟机296上实施的本地实例,并从虚拟计算***264的所述本地实例从由服务提供商210实施的远程数据存储器216存取数据并将数据存储到所述远程数据存储器上。
如前所述,一个或多个存储网关252可以在客户端网络250处进行实例化。网关252中的至少一个可以是在本地高速缓存至少一些数据(例如频繁存取的或关键的数据)的高速缓存网关实施方式。存储网关252可以经由一个或多个高带宽通信信道与存储服务212进行通信以便(例如)从本地高速缓存上传新的或修改的数据,使得在高速缓存网关实施方式中数据的主存储器(远程数据存储器216)得到维护,或者在投影网关实施方式中将新的或修改的数据(写数据)上传到本地主数据存储器在远程数据存储器216上的快照。
高速缓存网关实施方式
图6是宽泛地示出示例性网络环境的体系结构和所述网络环境中的数据流的概要框图,在所述网络环境中存储网关的实施方案被配置为可以被统称为高速缓存网关的文件***网关或云卷网关。在至少一些实施方案中,存储网关252可以是就地安装在服务客户的数据中心处的文件和/或块存储设备。在图6中,存储网关252可以(例如)被安装、激活并配置来用作文件***网关或用作云卷网关。文件***网关用作到存储服务212的(例如,使用CIFS或NFS协议的)NAS存储接口。远程数据存储器216可以作为对象存储器(例如,REST)呈现给客户而实施为块存储。云卷网关用作到由存储服务212提供的虚拟化的卷存储的接口。所述虚拟化的卷存储可以实施为块存储。网关252提供本地网络接入点,其中远程数据存储器216(其也可以被称为云卷)用作提供灵活且基本上无限的主存储容量的后端存储。
一旦存储网关252被安装、激活并配置,客户端网络250的网络管理员进程260就可以(例如)经由存储服务212创建新数据卷270或者将现有数据卷270挂载在远程数据存储器216上。可以经由服务供应商前端280向服务212作出创建卷请求和其它服务请求。前端280还可以管理到和来自存储网关252的连接和通信。前端280可以包括但不限于防火墙、边界路由器、负载均衡器、网关服务器、网关代理、控制台进程以及可能是将存储服务212公开给客户端网络250并使存储服务212与存储网关252介接的必要的总体任何网络装置和/或进程中的一个或多个。
在至少一些实施方案中,存储网关252经由服务提供商前端280向服务提供商210发起所有连接;服务提供商210不向网关252发起连接。此外,网络管理员进程260不直接向网关252发起连接;网络管理员进程260对网关252的访问(例如为了配置和管理网关252)是经由服务提供商前端280通过服务提供商210来进行。
存储网关252将一个或多个数据端口(例如,iSCSI端口)公开给客户端网络250上的客户进程258。客户进程258可以是存在于客户端网络250上并可以经由网关252的数据端口的数据协议(例如,iSCSI协议)连接到存储网关252并与其通信的任何硬件、软件和/或其组合。客户进程258可以是(例如)存储应用程序(如和数据库)、服务器(例如,SQL服务器、服务器等)、数据库应用程序(例如,SQL数据库应用程序和数据库应用程序)、应用程序或在客户端网络250上的一个或多个装置上执行、可操作来与存储网关252数据端口进行通信的任何其它应用程序或进程。应注意,如本文所使用的,客户进程包括可以在客户端网络250中的一个或多个装置上执行的任何软件进程;然而,所述进程在其上执行的底层硬件可以代表所述进程涉及或执行到存储网关252数据端口的连接和通信。
挂载的卷270可以由存储网关252呈现给客户进程258。然后客户进程258可以经由由存储网关252(例如根据iSCSI协议)公开的数据端口执行从卷270的读取和到卷270的写入。存储网关252处理对卷270的所有读取和写入请求。虽然远程数据存储器216上的卷270用作主数据存储器,但存储网关252也可以存储本地数据存储器254上频繁存取的数据的本地高速缓存。本地数据存储器254可以在存储网关252内部的存储硬件上、在存储网关252外部的由服务客户提供的存储硬件上或其组合上来实施。
对于读取,存储网关252可以首先检查本地高速缓存来查看给定读取是否可以从所述高速缓存得到满足。如果读取无法从本地高速缓存得到满足,那么存储网关252可以从存储服务212请求数据,所述存储服务从远程数据存储器216获取所请求的数据(或包括所请求的数据的数据块或组块)并将所请求的数据返回给存储网关252。存储网关252可以将从存储服务212接收到的所述数据块或组块存储到本地高速缓存。
对于写入,存储网关252可以将新的或更新的数据写入到本地高速缓存。在至少一些实施方案中,写数据可以被追加到在本地高速缓存中实施的基于块的写日志。存储网关252可以包括发送端数据上传进程(未示出),所述发送端上传进程与服务提供商210处的接收端数据上传进程(未示出)进行通信,以便将本地高速缓存中的新的或修改的数据周期性地、非周期性地或连续地上传到主数据存储器216。写数据从写日志的上传可以与对从发起进程到本地数据存储器254的读操作和写操作的处理异步地执行。在至少一些实施方案中,此上传进程可以采用数据重复数据删除、压缩、并行化以及TCP窗口缩放技术中的一种或多种。在先前已通过引用以其整体并入本文中的美国专利申请12/981,393和12/981,397中描述了可以在如图6中所示的至少一些实施方案中采用的示例性数据重复数据删除技术。
本地高速缓存可能在大小上有限,而远程数据存储器216则可以提供基本上无限的存储空间。因此,存储网关252可以用较新和/或活跃的数据块移除、替换或重写本地高速缓存中的较旧和/或相对不活跃的数据块。
投影网关实施方式
图7是宽泛地示出示例性网络环境的体系结构和所述网络环境中的数据流的概要框图,在所述网络环境中存储网关的实施方案被配置为投影网关。在图7中,存储网关252可以被安装、激活并配置来用作投影网关,所述投影网关充当客户的应用程序与客户的本地数据存储器之间的“线缆中的块”,以便提供将客户的写数据(例如,iSCSI写入)投影到由存储服务212提供的远程存储。远程数据存储器216可以实施为块存储。
与图6中的其中远程数据存储器216用作主数据存储器的高速缓存网关实施方式形成对比,在图7中所示的实施方案中,本地数据存储器254用作用于客户端网络250上的客户进程258的主数据存储器。一旦存储网关252被安装、激活并配置为投影网关,存储网关252就将一个或多个数据端口(例如,iSCSI端口)公开给客户端网络250上的客户进程258。然后客户端网络250上的客户进程258可以经由所述存储网关252数据端口从本地数据存储器254进行读取或写入到其中。客户进程258可以是存在于客户端网络250上并可以经由网关252的数据端口的数据协议(例如,iSCSI协议)连接到存储网关252并与其通信的任何硬件、软件和/或其组合。客户进程258可以是(例如)存储应用程序(如和数据库)、服务器(例如,SQL服务器、服务器等)、数据库应用程序(例如,SQL数据库应用程序和数据库应用程序)、应用程序或在客户端网络250上的一个或多个装置上执行、可操作来与存储网关252数据端口进行通信的任何其它应用程序或进程。应注意,如本文所使用的,客户进程包括可以在客户端网络250中的一个或多个装置上执行的任何软件进程;然而,所述客户进程在其上执行的底层硬件可以代表所述进程涉及或执行到存储网关252数据端口的连接和通信。
读取和写入请求可以由网关252数据端口进行接收。对于读取,请求可以直接传递到本地数据存储器254而不由网关252进行进一步干预或处理,并且所请求的数据可以直接从本地数据存储器254传递给客户进程258。定向到本地数据存储器254的写请求同样由存储网关252传递到本地数据存储器254。然而,除了将写请求传递到本地数据存储器254之外,存储网关252还可以经由存储服务212将由写请求指示的新的或更新的数据投影到远程数据存储器216。
在至少一些实施方案中,为了将新的或更新的数据投影到远程数据存储器216,存储网关252可以将有待上传到远程数据存储器216的写数据本地存储或缓冲(例如)在先入先出(FIFO)写日志中。在至少一些实施方案中,所述写日志可以以块存储格式来实施,其中所述写日志包括一个或多个块(例如,4MB的块)。写请求中所接收到的写数据可以被追加到写日志。来自两个或更多个写请求的写数据可以写入到写日志中的同一块。用于与块相关的写数据的元数据(例如写日志块中的偏移和长度以及目标数据存储器中的偏移)可以存储到元数据存储器。
存储网关252可以包括发送端数据上传进程(未示出),所述发送端上传进程与服务提供商210处的接收端数据上传进程(未示出)进行通信,以便将存储在本地的写数据从写日志周期性地、非周期性地或连续地上传到远程数据存储器216处的投影的数据卷。写数据从写日志的上传可以与对从发起进程到本地数据存储器254的读操作和写操作的处理异步地执行。上传进程可以以块的形式从写日志上传写数据。一旦写日志块已被成功上传,在写日志中相应的块就可以被标记为空闲。
在至少一些实施方案中,上传进程可以采用数据重复数据删除、压缩、并行化以及TCP窗口缩放技术中的一种或多种。在先前已通过引用以其整体并入本文中的美国专利申请12/981,393和12/981,397中描述了可以在如图7中所示的至少一些实施方案中采用的示例性数据重复数据删除技术。
应注意,服务提供商前端280可以管理到存储网关252的连接。在至少一些实施方案中,存储网关252经由前端280向服务提供商210发起连接;服务提供商210不向网关252发起连接。前端280可以包括但不限于防火墙、边界路由器、负载均衡器、网关服务器、网关代理、控制台进程以及可能是将存储服务212公开给客户端网络250并使存储服务212与存储网关252介接的必要的总体任何网络装置和/或进程中的一个或多个。
在至少一些实施方案中,存储网关252经由服务提供商前端280向服务提供商210发起所有连接;服务提供商210不向网关252发起连接。此外,网络管理员进程260不直接向网关252发起连接;网络管理员进程260对网关252的访问(例如为了配置和管理网关252)是经由服务提供商前端280通过服务提供商210来进行。
作为投影网关,由存储网关252提供的投影操作从客户端网络250上的用户的角度来看可以是实际上透明的。客户进程258执行对由客户端网络250上的存储网关252公开的数据端口(例如,iSCSI端口)的读取和写入。从客户进程258的角度来看,存储网关252可能显得与任何其它数据对象(例如,iSCSI对象)一样。在所述数据端口上所接收到的来自客户进程258的读请求被传递到用作主数据存储器的本地数据存储器254。在所述数据端口上所接收到的来自客户进程258的写请求被传递到本地数据存储器254并被投影到远程数据存储器216。网关252的投影操作可以在后台执行而不显著影响主数据存储器的或客户端网络250的性能。
图7中所示的“线缆中的块”投影网关配置的示例性用例是用于灾难恢复。存储网关252将数据更新从客户端网络250发送到存储服务212,所述存储服务将数据存储在一个或多个投影卷(也被称为快照270)中。数据可以以块存储格式存储在快照270中。数据还被存储到本地数据存储器254。如果发生导致本地存储卷的一部分或全部损坏或丢失的情况,那么损坏或丢失的数据可以从所述卷的存储在数据存储器216中的快照270得到恢复。存储提供商210可以提供接口,经由所述接口客户网络管理员(例如,经由网络管理员进程260)可以请求从远程数据存储器216上的投影卷恢复本地存储卷的一部分或全部的快照270。在至少一些实施方案中,由存储网关252维护的所述写日志的至少一部分可以在恢复所述数据的快照270之前上传到远程数据存储器216,以确保有待从其中恢复数据的所述加密的卷是尽可能地最新。应注意,在一些情况下,至少一些数据可以从由存储网关252维护的写日志直接恢复。
客户进程-网关的通信
如前所述,经由网络管理员进程260,客户管理员可以经由服务提供商280前端与存储网关252(例如,投影网关)进行通信(例如)以便配置网关252。在至少一些实施方案中,一个或多个客户进程258还可以被配置来经由服务提供商280前端与存储网关252进行通信来对网关252作出请求。例如,客户进程258可以是被配置来经由服务提供商280前端与存储网关252进行通信的SQL服务器。
投影网关自举技术
如图7中所示,一旦存储网关252被安装、激活并配置为投影网关,存储网关252就将一个或多个数据端口(例如,iSCSI端口)公开给客户端网络250上的客户进程258。然后客户端网络250上的客户进程258可以经由所述存储网关252数据端口从本地数据存储器254进行读取或写入到其中。读取和写入请求被传递到本地数据存储器254,并且由写请求指示的写数据被投影到远程数据存储器216,使得所述本地数据存储器的快照272可以得到更新。
然而,当投影网关(无论是在最初安装、激活并配置时抑或由于某种原因脱机后)在客户的网络中联机时,在本地数据存储器254中都有可能存在不在远程数据存储器216上的快照272中的数据。因此,至少一些实施方案可以提供用于投影网关的自举过程,在所述自举过程期间,来自本地数据存储器254的至少一些数据可以被上传到远程数据存储器216,使得快照可以得到填充和/或更新以准确地反映当前在本地数据存储器254上的数据。
图8是根据至少一些实施方案的宽泛地示出在示例性网络环境中自举投影网关的概要框图。当存储网关252作为投影网关在客户端网络250上联机时,网关252可以确定在本地数据存储器254中是否存在需要上传到远程数据存储器216以便使得快照272与本地数据存储器254一致的数据。然后网关252的上传进程可以开始将数据块从本地数据存储器254上传到服务提供商210处的远程数据存储器216。存储网关252还可以将其数据端口公开给客户进程258、开始接受和处理定向到本地数据存储器254的读请求和写请求、开始将由所述写请求指示的新的写数据高速缓存到写日志,并开始将所述写数据从写日志上传到远程数据存储器216。因此,当存储网关252正在客户端网络250上执行其投影功能时,数据从本地数据存储器254的上传可以在后台执行。当数据从本地数据存储器254的上传完成时,存储网关252继续执行其投影功能。
图9是根据至少一些实施方案的用于投影网关的自举过程的流程图。如在300处所示,投影网关在客户的网络上联机。例如,存储网关的新实例可以被安装、激活并配置为所述网络上的投影网关。作为另一个例子,投影网关的现有实例可能由于某种原因在脱机后重新联机;当所述网关处于脱机时,客户进程可能已直接与本地数据存储器通信而读取和写入了数据。作为另一个例子,投影网关可能由于某种原因(例如,由于写日志变满)已进入其间投影操作被暂时挂起的直通模式,并且可能正在退出所述直通模式并恢复投影操作。
如在302处所示,如果必要的话,所述投影网关可以开始将预先存在的数据从本地数据存储器上传到远程数据存储器。例如,如果这是新投影网关并且本地数据存储器已被填充,那么需要将本地数据存储器中的现有数据上传到远程数据存储器使得可以生成一致的快照。作为另一个例子,如果现有投影网关在退出直通模式后重新联机或恢复投影操作,那么新的数据可能已被写入到本地数据存储器,并且因此需要使得远程数据存储器上的快照与当前在本地数据存储器上的数据一致。
如在304处所示,投影网关可以经由公开在客户的网络上的网关数据端口开始从客户进程接受读取和写入。如在306处所示,投影网关可以开始将来自写入的写数据高速缓存到写日志,并如在308处所示,开始将写数据从写日志上传到远程数据存储器。
当投影网关在客户的网络上接受读取和写入请求并执行其投影功能时,在302处开始的数据从本地数据存储器的上传可以在后台执行。当数据从本地数据存储器的上传完成时,投影网关继续执行其投影功能。
应注意,图9中的元素的顺序可以不同。例如,元素302可以在元素304至元素308中的任何一个之后执行。换句话说,投影网关可以在开始从本地数据存储器上传预先存在的数据之前开始接受读取和写入并执行其投影功能。
图10是根据至少一些实施方案的投影网关进入直通模式并从其中恢复的流程图。如在320处所示,投影网关可以通过挂起其投影功能(即,停止高速缓存并停止上传写数据)而进入直通模式,同时继续接受并服务来自客户的网络上的客户进程的定向到本地数据存储器的读取和写入。网关可以在检测到可能引起投影功能失败的某种状况时进入直通模式。作为一个例子,投影网关可以在检测到写日志已写满并且无法成功上传时进入直通模式。网关可以警告本地网络管理员所检测到的状况;然后所述管理员可以解决由警告指示的问题。例如,管理员可以分配更多的内存给写日志,和/或分配更多的带宽给网关上传进程。然后,管理员可以通知网关问题已得到解决。
当投影网关(例如)通过接收表明引起直通模式的所检测到的问题已被解决的指示而确定可以退出直通模式时,网关可以重新启动投影(即,启动高速缓存并上传写数据),如在322处所示。
在退出直通模式后,在本地数据存储器中可能存在还没有上传到远程数据存储器的数据。由于在直通模式期间网关继续接收并处理写请求,所以新的数据可能已被写入到本地数据存储器。因此,投影网关可以执行如图8和图9中所示的自举来将至少一些数据从本地数据存储器上传到远程数据存储器以便从直通模式恢复,如在324处所示。
在至少一些实施方案中,可以采用用于投影网关的优化的自举过程来减少从本地数据存储器上传到远程数据存储器的数据的量。所述优化的自举过程可以检测已被上传到远程数据存储器的数据块,并且从而避免上传已被上传的块。优化的自举过程可以利用在数据从网关上传到远程数据存储器的总体上传期间所生成并维护的用于存储网关进程的跟踪数据。
图11是根据至少一些实施方案的用于从网关上传、更新并跟踪块到远程数据存储器的方法的流程图。在正常网关操作期间,网关将写数据上传到服务提供商处的专用于存储服务的远程数据存储器,如在360处所示。如在342处所示,存储服务接收写数据并从远程数据存储器获取相应的块(例如,4MB的块)。然后存储服务根据写数据修改相应的块并将修改后的块以新版本名称上传回到远程数据存储器,如在344处所示。对于每个修改的块,指示所述修改的块的标记被发送回到存储网关,如在346所示。存储网关跟踪这些标记;每当块被修改时,正在被修改的引用块需要被发送给存储服务。
如在348处所示,存储网关可以周期性地或非周期性地更新服务提供商处的标记清单并清除本地跟踪的标记中的至少一部分。存储网关可能不得不跟踪大量的标记。在至少一些实施方案中,可以在远程数据存储器上提供清单,这可以减轻存储网关必须在本地跟踪大量标记的负担。存储网关可以周期性地或非周期性地呼叫存储服务以便用网关已接收到的标记来更新所述清单,并可以清除在本地存储的相应标记。
在至少一些实施方案中,优化的自举过程可以利用清单通过以下方法来确定哪些块已被和还没有被上传:作出呼叫来检查清单中的每个块的哈希值,以便确定哪些由清单指示的块匹配本地数据存储器上的块以及哪些由清单指示的块不匹配本地数据存储器上的块并且因此不必上传。换句话说,清单被用来检测本地数据存储器上的哪些块是脏块以及哪些不是。因此,优化的自举过程将尝试经由清单来确哪些块已被上传,使得已上传的块不被再次上传并且只有脏块被上传。在至少一些实施方案中,对于优化的自举过程确定确实需要上传的块(脏块),当上传这些块时可以应用数据重复数据删除技术以减少从脏块实际上传的数据量。
图12是根据至少一些实施方案的用于投影网关的优化的自举过程的流程图。自举过程可以(例如)在投影网关退出直通模式时被启动用于所述网关。如在360处所示,从本地数据存储器获取块。如在362处所示,可以检查可存储在远程数据存储器上的清单来确定当前块是否是需要被上传的脏块。在364处,如果根据清单当前块是脏的,那么可以根据数据重复数据删除技术将所述块的至少一部分上传到远程数据存储器,如在366处所示。然后方法继续至368。在364处,如果根据清单当前块是不脏的,那么方法直接转至368。在368处,如果更多的块有待被处理,那么方法返回到元素360来处理下一个块。否则,自举过程完成。
存储网关安全模型
存储网关的至少一些实施方案可以根据安全模型进行实施,所述安全模型为客户提供了数据保护以及对网关的保护防止其被客户或第三方滥用和未经授权而使用(例如,盗版)。图13示出根据至少一些实施方案的存储网关安全模型的方面。
在至少一些实施方案中,所述安全模型的方面是存储网关84被递送并最初安装在客户端网络80上而不具有用于网关84在与服务提供商60的通信中所使用的安全凭证或其它识别信息。可以采用经由其客户网络上的存储网关84可以注册到服务提供商60的激活过程。在所述激活过程的至少一些实施方案中,存储网关84可以向服务提供商60发起连接(例如,SSL(安全套接层)/TCP连接)并向其将自身标识为用于相应客户账户的正确网关以获得必要的安全凭证。在激活过程期间,服务客户为网关84指定名称。在至少一些实施方案中,服务客户登录到由服务提供商60提供的客户的账户中并提供信息给服务提供商60,所述信息包括但不限于在注册网关84中所使用的网关名称。然而,服务客户并没有登录到存储网关84中,并且因此服务客户的安全凭证和其它账户信息并没有暴露在网关84上。这可以最小化服务客户的安全风险。此网关名称连同与网关84和与服务客户有关的其它元数据可以由服务提供商60进行存储并用于跟踪和识别相应网关84。应注意,服务客户可以拥有在客户端网络80上安装并激活的一个或多个网关84,其中每个网关都具有唯一的标识名称和其它元数据。在下文题为存储网关激活过程的章节中进一步描述的图15至图17B示出可以在至少一些实施方案中采用的激活过程。在所述激活过程中,网关84可以向服务提供商60发起连接并将关于网关84平台的元数据连同公开密钥提供给服务提供商60。然后服务提供商60可以向网关84提供在激活过程中所使用的临时、唯一的激活密钥。此外,可以要求服务客户经由服务提供商控制台进程登录到客户的账户中来激活网关84;从而网关84可以与尝试激活网关84的服务客户的账户匹配。然后,由存储网关84经由激活过程获得的安全凭证和其它元数据(例如,客户提供的网关名称)可以由存储网关84在与服务提供商60网络的各种进程的通信中使用来向服务提供商84进程标识网关84。
在至少一些实施方案中,如图13中所示,安全模型的另一方面是存储网关84只接受从外部向公开给客户端网络80上的客户进程88的一个或多个数据端口(例如,iSCSI端口)发起的连接。存储网关不接受其它外部发起的连接,并且向外部进程发起所有必要的连接。例如,在至少一些实施方案中,存储网关84向服务提供商60发起至少一个安全连接92(例如,SSL(安全套接层)/TCP连接);然而,服务提供商60无法向网关84发起连接。图18至图20中示出可以在至少一些实施方案中使用的用于使用网关发起的连接和长轮询技术的远程网关管理的示例性方法。
此外,如图13中所示,在至少一些实施方案中,服务客户(例如,网络管理员进程90)不直接连接到存储网关84来配置和管理网关84;而是,对存储网关84的配置和操作请求是通过服务提供商60作出,所述服务提供商经由由网关84发起的安全通信信道92将所述请求传递给网关84。例如,如图18至图21中所示,对网关84的配置和操作请求可以由或经由网络管理员进程90通过服务提供商60网络上的控制台进程来执行。在至少一些实施方案中,所述控制台进程将接收到的定向到客户的网关84的配置请求或操作请求转发给维护网关发起的连接92的网关控制平面。所述网关控制平面将当前连接(例如在特定网关控制服务器上维护的连接)定位到请求的目标--网关84,并且将请求经由所述连接转发给网关84。
因此,在至少一些实施方案中,用户、网络管理员或客户进程无法直接向存储网关84发起连接或“登录”到其中,外部个人或进程(如服务提供商60网络上的操作员或进程)也无法向存储网关84发起连接。这一点连同网关安全模型的其它方面可以帮助保护存储网关84上的安全凭证和其它操作信息免受外部个人或进程有意或无意地危害。
在安全模型的另一方面中,在网关的激活和操作期间,存储网关与存储服务之间的所有通信可以被保护和加密。如上文所提到的,安全模型的一个方面是存储网关与存储服务之间的通信是通过网关发起的安全连接(例如,SSL/TCP连接)执行。可以在通过网关发起的安全连接的通信中使用加密技术,例如公钥/私钥加密。
图14是根据至少一些实施方案的示出在存储网关的激活、配置以及操作期间网关安全模型的至少一些方面的流程图。如在400处所示,存储网关可以在客户网络上被实例化。例如,为了实例化所述存储网关,可以将存储网关作为虚拟或物理设备安装在服务客户的本地网络或数据中心上,通常位于防火墙后方。例如,在至少一些实施方案中,存储网关可以实施为可被下载到一个或多个计算装置(如服务客户的本地网络上的服务器***)或以其它方式安装在其上的虚拟设备。或者,存储网关可以实施为可耦接到服务客户的本地网络的专用装置或设备;所述专用装置或设备可以包括实施存储网关的功能的软件和/或硬件。如在402处所示,实例化的存储网关向服务提供商和客户启动激活过程来标识网关并获取网关安全凭证。在至少一些实施方案中,所述安全凭证包括用网关提供的公开密钥签名的证书。下文参照图15至图17B描述了示例性激活过程。应注意,激活过程可以在网关初始安装在客户网络上时由网关启动,并且也可以在其它时间启动,例如在网关装置为了升级、维护或由于某种其它原因而已断电后通电时。如在图14的404处所示,存储网关建立了到服务提供商的安全连接。图18至图21示出可以在至少一些实施方案中使用的用于网关发起的连接的使用长轮询技术的示例性方法。如在图14的406处所示,客户通过服务提供商控制台进程配置并操作存储网关。图18至图21中示出可以在至少一些实施方案中使用的用于使用网关发起的连接和长轮询技术的远程网关管理的示例性方法。如在图14的408处所示,存储网关使用网关安全凭证并可能使用在激活过程期间获得的其它元数据来与服务提供商进行通信(例如与存储服务进程通信)以便向服务提供商标识网关。
存储网关激活过程
存储网关的实施方案可以(例如)用作内置存储装置并用作服务客户的网络与由服务提供商提供的存储服务之间的接口。在至少一些实施方案中,存储网关可以实施为可以在耦接到客户数据中心处的本地网络基础设施的一个或多个计算装置(如服务器***)上下载或者以其它方式安装、激活并配置的虚拟装置或设备。或者,存储网关可以实施为可耦接到客户的本地网络基础设施的专用装置或设备。所述专用装置或设备可以包括实施网关的功能的软件和/或硬件。
在至少一些实施方案中,为了在安装网关后使用存储网关,必须向服务提供商激活网关。本节描述了经由其可以在存储网关的自举或激活期间执行存储网关的标识、认证以及授权的方法。在所述网关激活方法中,存储网关被标识并与客户的服务提供商账户相关联。然而,在激活过程期间,客户的凭证不被公开给存储网关。在至少一些实施方案中,客户登录到由服务提供商提供的客户的账户中并提供信息给服务提供商,所述信息包括但不限于在注册网关84中所使用的网关名称。然而,客户并没有登录到存储网关中,并且因此客户的安全凭证和其它账户信息没有暴露在网关上。这可以最小化客户的安全风险。在至少一些实施方案中,在激活过程中由客户使用的服务提供商账户可以是客户所用来管理由服务提供商提供给客户的其它资源的同一账户,所述其它资源包括但不限于由存储服务提供的其它存储资源和由硬件虚拟化服务提供的虚拟化的硬件资源,如图5中所示。
图15是根据至少一些实施方案的示例性网络环境的概要框图,其示出参与网关激活过程的服务客户和服务提供商组件或实体。这些参与者可以包括但不限于,存储网关84、网络管理员进程90、控制台进程68以及网关控制70。存储网关84可以作为虚拟或物理设备安装在服务客户本地网络或数据中心(例如,客户端网络80)上,通常位于防火墙后方。例如,存储网关84可以是(例如)在虚拟机内执行,并且可以在客户端网络80上的服务器装置上下载并实例化的虚拟设备。服务提供商60网络上的控制台进程68可以是可由或者经由网络管理员进程90(例如)从客户端网络80上的装置或者从客户端网络80外部的装置访问的,以便登录到客户的账户。例如,控制台进程68可以提供Web接口或某种其它接口,经由所述接口网络管理员经由网络管理员进程90可以登录到相应的服务客户的账户来查看和管理由服务提供商60提供的账户和资源。服务提供商60网络的网关控制70进程或平面可以执行用于安装在服务提供商60的一个或多个客户处的一个或多个存储网关84的跟踪和管理功能。网关控制70和控制台进程68可以(例如)在服务提供商60网络上的一个或多个服务器计算机装置上实施。在至少一些实施方案中,网关控制70可以实施为包括两个或更多个网关控制服务器的控制平面以提供负载均衡和高可用性。
图16A和图16B是根据至少一些实施方案的过程流程图,其示出在网关激活过程期间图15中所示的组件之间的交互。从客户的角度来看,激活过程涉及两个互动点。第一,客户与网关84进行交互,如图16A中所示。第二,客户与服务提供商(SP)控制台68进行交互,如图16B中所示。
图16A示出在激活过程中客户(在图15中由网络管理员进程90表示)、网关84以及服务提供商(SP)网关控制70之间的交互。在网关84安装和/或通电之后,网关84生成公开密钥(例如,RSA密钥对)并收集关于网关84已安装在其上的装置的硬件和/或软件的元数据。例如,所述元数据可以包括所述装置的IP地址、MAC地址或其它硬件和软件特性。然后网关84(例如)经由HTTP POST将所述公开密钥和所述元数据公布给网关控制70。作为响应,网关控制70可以生成激活密钥并将所述激活密钥返回给网关84。激活密钥可以是全局唯一标识符(GUID),例如随机生成的N位数字。网关控制70可以存储激活密钥以及从网关84获得的公开密钥和元数据。
在从网关控制70接收到激活密钥之后,网关84在网关84VM或装置上的固定端口(IP地址:端口)处将激活密钥公告在客户端网络80内。然后客户经由网络管理员进程90可以访问网关84的所述固定端口来获取激活密钥;所述访问被重定向到具有查询字符串中的激活密钥的服务提供商(SP)控制台68进程。
在至少一些实施方案中,激活密钥持续固定时间或使用期限(例如,30分钟)有效,之后激活密钥过期。在至少一些实施方案中,由于激活密钥只持续特定使用期限有效,因此可以在服务提供商60处提供移除过期的激活密钥的后台垃圾回收进程。在至少一些实施方案中,激活密钥在服务提供商60端的使用期限可以比在网关84上更长(例如,在服务提供商60端是45分钟,在网关84处30分钟)以便应付临界个案。
图16B示出在激活过程期间客户(在图15中由网络管理员进程90表示)、服务提供商(SP)控制台68以及服务提供商(SP)网关控制70之间的交互。一旦网络管理员进程90已从网关84获得激活密钥,那么就可以使用激活密钥来将网关95添加到客户的服务提供商60账户。在被重定向到SP控制台68之后,客户(例如,经由网络管理员进程90)登录到所述账户中,并且来自查询字符串的激活密钥被用来取出网关84公布给网关控制70的元数据。此元数据的至少一些被(例如,经由网络管理员进程90)显示给客户。从网关控制70返回给SP控制台68并显示给客户90的元数据是先前由网关84提供给网关控制70的元数据,并且可以用来告知客户90关于有待激活的网关84的信息。所显示的元数据可以向客户90确认由元数据指示的相应网关84是已安装在客户的网络处的网关84。例如,可以显示网关84的IP地址,客户90可以确认所述IP地址是网关84的IP地址。另外,从有待登录到账户中的客户90获取的凭证(例如,客户账户号码和/或其它客户识别信息)可以用于验证客户90为拥有相应网关84的客户并将客户90与相应网关84相关联。
还可以通过SP控制台68提示客户90来输入其它信息,例如用于网关84的名称。在查看并验证所显示的元数据后,客户90可以经由SP控制台68(例如)通过选择“确认”或“激活”或“注册”用户接口元素来授权网关84注册到网关控制70。在客户90经由SP控制台68授权了对网关84的注册后,SP控制台68可以将从客户90获得的激活密钥传递给网关控制70。客户信息(如客户提供的用于网关84的名称、客户账户ID等)也可以传递给网关控制70。客户提供的激活密钥被与先前由网关84提供给网关控制70的激活密钥进行匹配。网关控制70将所述客户信息(例如,网关84的名称)连同(例如)先前由网关84提供的元数据一起存储。
在至少一些实施方案中,可以将SP控制台68与SP网关控制70之间以及网关84与SP网关控制70之间所交换的所有数据进行加密。在至少一些实施方案中,在激活过程中不传递敏感数据,如客户的凭证、访问密钥或秘密密钥。
再次参照图16A,在至少一些实施方案中,SP网关控制70负责维护关于网关84的注册和激活的所有信息。同时网关84不断轮询SP网关控制70请求信息用来生成证书签名请求(CSR)。一旦SP网关控制70已经经由SP控制台68从客户90接收到授权(如图16B中所示)并且将客户提供的激活密钥与由网关84提供的所述激活密钥进行匹配,SP网关控制70就可以通过提供元数据来对网关84GET请求作出响应(如图16B中所示),所述元数据包括但不限于从客户90接收到的客户信息中的至少一些。然后网关84生成CSR并发送给SP网关控制70。响应于所述CSR,SP网关控制70生成证书并用网关84的先前提供的公开密钥在所述证书上签名。在至少一些实施方案中,证书可以包含客户和/或网关信息,例如客户账户ID和客户提供的网关84名称。然后SP网关控制70通过将用先前由网关84提供的公开密钥加密的自签名证书发送给网关84来响应。然后证书可以在从网关84到服务提供商60的未来通信中用于验证。
在至少一些实施方案中,为了帮助防止用户使用同一激活密钥激活多个网关84,由网关84公布给SP网关控制70的激活密钥中还可以包含***/硬件特有信息。
图17A和图17B是根据至少一些实施方案的从存储网关的角度来看的激活过程的流程图。如在图17A中的500处所示,在网关安装和/或通电后,网关检查持久存储以确定网关是否已被激活。例如,由于升级、维护或由于一些其它原因,网关可能已被断电。如果网关已被激活,那么激活过程转到图17B的元素530处,在530处网关可以从SP网关控制获得配置信息。
在图17A的500处,如果网关先前还没有被激活,那么激活过程转到图17A的元素502处,在其处网关检查其是否拥有用于生成证书签名请求(CSR)的任何存留的客户信息。如果网关拥有存留的客户信息,那么过程转到图17B的元素520处。如果网关不拥有存留的客户信息,那么过程转到图17A的元素504处。在504处,网关生成公开密钥(例如,RSA密钥对)。网关还可以收集关于网关已安装在其上的装置的硬件和/或软件的元数据。例如,所述元数据可以包括所述装置的IP地址、MAC地址或其它硬件和软件特性。然后网关将公开密钥和元数据公布给SP网关控制,如在506处所示。在508处,网关从SP网关控制接收激活密钥。在510处,网关将所述激活密钥公告在服务客户的网络上的固定端口(IP地址:端口)上。
如在图17A的512至516处所示,然后网关可以轮询SP网关控制以获得生成CSR所需的客户信息。所述客户信息可以包括但不限于客户的账户ID和客户为网关指定的名称。在512处,网关可以暂停(例如)持续一分钟或持续某个其它时间段,并且然后查看其是否已从SP网关控制接收到所述信息。在514处,如果没有接收到所述信息,那么网关查看激活密钥是否已过期,如在516处所示。在至少一些实施方案中,激活密钥持续固定时间或使用期限(例如,30分钟)有效,之后激活密钥过期。在516处,如果激活密钥没有过期,那么激活过程返回到图17A的元素512处来继续轮询SP网关控制。在516处,如果激活密钥已过期,那么激活过程返回到图17A的元素504处来从SP控制平面获取新的激活密钥。
在图17A的514处,如果已经从SP网关控制接收到客户信息,那么激活过程转到图17A的元素518处,在其处网关将客户信息存储到持久存储器中。在至少一些实施方案中,所接收到的客户信息可能是加密的,并且因此网关可以在存储所述信息之前进行解密。然后过程转到图17B的元素520处。
参照图17B,在520处,网关可以查看其是否已拥有证书。在520处,如果网关已拥有证书,那么过程转到图17B的元素530处,在其处网关可以从SP网关控制获取配置信息。在520处,如果网关不拥有证书,那么过程转到元素522处。在522处,网关生成CSR并将所述CSR发送给SP控制平面。在524处,响应于接收到CSR,网关从SP控制平面接收安全证书;所述证书可以用作用于网关的安全凭证。在526处,网关可以禁用激活密钥的公告(参见图17A的步骤510)。在528处,网关可以将其当前状态保存到已在激活过程中获得的持久信息(证书、客户指定的网关名称等)中。
此时,激活过程完成。在530处,网关可以从SP网关控制获取配置信息。在至少一些实施方案中,一旦客户已被通知网关已经成功激活,客户就可以经由SP控制台配置所安装并激活的网关。SP控制台可以提供用户接口(例如web接口),客户可以经由所述接口登录到客户的账户、选择网关(其可以通过客户指定的名称来识别)并为网关指定配置。在至少一些实施方案中,SP控制台将此配置传递给SP网关控制,然后SP网关控制经由由网关本身发起的连接(例如,SSL/TCP连接)配置指定的网关。
激活密钥安全性
如在图17A的510处所示,激活密钥被使得在服务客户的网络上的公共IP地址处可获得,并且可以在查询字符串中从客户非加密地传递给SP控制台。虽然激活密钥的使用期限有限并且所述IP地址仅由客户所知,但仍存在其中激活密钥在IP:端口处于暴露的短暂时间窗口。虽然没有同样由网关公开给SP网关控制的元数据对激活密钥本身没有益处,但在此短暂时间窗口期间网关可能在一定程度上易受攻击。在至少一些实施方案中,客户可以使用安全组或其它安全措施以帮助防止恶意用户或进程获得激活密钥并激活其他人的网关。另外,由于需要客户登录到SP控制台进程中来激活网关,因此可以将网关与试图将其激活的客户账户进行匹配。
使用网关发起的连接的远程网关管理
存储网关的实施方案可以(例如)用作内置存储装置并用作服务客户的网络与由服务提供商提供的存储服务之间的接口。在至少一些实施方案中,可以经由在服务提供商处实施的网关控制技术来远程激活、跟踪、配置并管理已安装的存储网关。图18是示出可以在至少一些实施方案中采用的示例性网关控制体系结构的概要框图。在至少一些实施方案中,如图18中所示,网关控制70可以包括两个或更多个网关控制服务器74(例如,网关控制服务器74A、74B、74C...)的组。多个网关控制服务器74可以提供负载均衡和高可用性。在操作过程中,在给定时间,服务客户的网络80上的特定的安装并激活的存储网关84连接到网关控制服务器74中的特定一个。然而,应注意,存储网关84可以在其它时间连接到不同的网关控制服务器74。
当前连接到存储网关84的网关控制服务器74可以通过经由中间网络50向存储网关84发送请求或命令来管理存储网关84。从网关控制服务器74发起的用来管理存储网关84的请求可以包括但不限于配置变更请求和操作请求。然而,由于存储网关84可以部署在客户端网络80防火墙的后方,除非为网关84创建了例外规则,否则网关控制服务器74可能不能够从所述防火墙外到达网关84。另外,在至少一些实施方案中,用于存储网关84的所述安全模型可以规定外部进程(包括但不限于服务提供商进程)不允许向存储网关84发起连接。
在至少一些实施方案中,为了使得当强制执行不允许服务提供商建立到网关84的连接的安全模型时网关控制服务器74能够向存储网关84发送请求或命令,提供了用于使用网关发起的连接的远程网关管理的方法和设备。在所述远程网关管理方法中,网关通过发送连接请求来向服务提供商发起连接。在至少一些实施方案中,经由负载均衡器72建立了到特定网关控制服务器74的连接。然而,网关84不经由网关发起的连接向服务提供商发送请求消息。而是,服务提供商(例如,网关控制服务器74)持有将有待发送给网关84的请求挂起的连接,而网关84等待响应。当(例如)从网络管理员进程90或在网关84在其上被实例化的客户端网络80上的一些其它进程接收到对网关84的请求时,服务提供商(例如,网关控制服务器74)经由服务提供商(例如,网关控制服务器74)一直持有的网关发起的连接将所述请求发送给网关84。网关84还可以经由网关发起的连接向服务提供商80发送对请求的响应。
在至少一些实施方案中,从网关84到其建立连接的网关控制服务器74(例如,网关控制服务器74A)可以将所述连接注册到服务76。如果网关控制服务器74接收到对其不持有连接的网关74的请求,那么网关控制服务器74可以查询注册服务76来找出哪个网关控制服务器74持有所述连接,并将所述请求转发给持有到网关84的所述连接的网关控制服务器74。在一些实施方案中,作为替代,接收到对其不持有连接的网关74的请求的网关控制服务器74可以简单地向两个或更多个其它网关控制服务器84广播所述请求。
在至少一些实施方案中,服务提供商80可以采用ping进程来监视网关发起的连接。在所述ping进程中,维护到网关74的连接的网关控制服务器84可以周期性或非周期性地向网关84发送ping消息。网关84响应所述ping消息。当检测到网关84持续某个指定的超时期限一直没有响应所述ping消息,网关控制服务器74可以断开连接并可以注销其与注册服务76的连接。
在至少一些实施方案中,可以以周期性的时间间隔向网关74发送ping消息。至少一些实施方案可以根据到特定网关84的连接的可靠性来调整ping时间间隔,使得以较短的时间间隔向连接已经不可靠的网关84并以较长的时间间隔向连接一直通常可靠的网关发送ping消息。对于给定网关84,当连接保持可靠时,所述ping时间间隔可以随时间增加,并且对于连接已经不可靠的网关84,ping时间间隔可以减少。
在至少一些实施方案中,网关84可以检测其网关发起的连接是否已经被终止或断开。当检测到所述连接已经终止时,网关84可以向服务提供商80发送另一连接请求来重新建立连接。应注意,所述连接可以被重新建立到除以前持有所述连接的那一个之外的不同网关控制服务器74。在至少一些实施方案中,网关84可以通过监测ping消息并确定已经持续指定超时期限没有通过所述连接接收到ping消息来确定其网关发起的连接已被断开。
因此,在所述远程网关管理方法中,网关84建立到服务提供商的连接、预期并等待来自服务提供商的请求。服务提供商持有将对网关84的请求挂起的连接。当接收到对网关84的请求时,服务提供商通过网关发起的连接将所述请求转发给相应网关。服务提供商和网关都监测并管理所述连接,使得如果所述连接由于某种原因断开的话,可以检测到所述断开并且网关84重新建立所述连接。
图19是根据至少一些实施方案的用于使用网关发起的连接的远程网关管理的方法的流程图。如在600处所示,网关经由连接请求建立了到网关控制服务器的连接。例如,如图18中所示,网关可以经由连接请求通过负载均衡器与网关控制服务器建立出站SSL/TCP连接。如在图19的602处所示,一旦连接到网关的连接建立,网关控制服务器就保持所述连接并保持所述连接不断开。如在图19的604处所示,网关控制服务器接收对网关的请求。例如,如图18中所示,网关控制服务器74可以经由控制台进程68从相应网络管理员进程90接收对网关84的配置请求或操作请求。在网关控制服务器接收到对网关的请求之后,网关控制服务器将所述请求经由网关发起的连接转发给网关,如在图19的606处所示。
再次参考图18,服务客户可以访问服务提供商控制台60来发起对指定存储网关84的配置变更请求或操作要求。例如,经由网络管理员进程90,网络管理员可以经由控制台进程68向网关84发送请求。然后控制台进程68可以将所述请求发送给负载均衡器72后方的网关控制服务器74。然而,控制台进程68向其发送请求的网关控制服务器72可以不是持有到相应网关84的连接的网关控制服务器72。例如,网关控制服务器72B可以持有到网关84的连接,而对网关84的请求可以发送给网关控制服务器72A。因此,接收来自控制台进程68的请求的网关控制服务器72(例如,网关控制服务器72A)可能需要将请求转发给持有到网关84的网关控制服务器(例如,网关控制服务器72B)以便将请求递送到适当网关84。因此,至少一些实施方案可以提供用于网关控制服务器72(例如,服务器72A)使从控制台进程68接收到的对特定网关84的请求到达当前持有到由请求指示的特定网关84的网关控制服务器72(例如,服务器72B)的一种或多种方法。
在一些实施方案中,为了实现这一点,接收到对服务器72不持有到其的连接的网关84的请求的网关控制服务器72(例如,服务器72A)可以向其所有同等网关控制服务器72广播所述请求。图20是根据一些实施方案的一种用于网关控制服务器向其对等服务器广播网关请求的方法的流程图。如在620处所示,当每一个网关控制服务器72被实例化时,服务器72可以注册到注册服务76。当网关控制服务器72退出时,服务器72被从注册服务76注销。注册服务76可以(例如)由数据库服务或分布式存储服务提供支持。如在622处所示,网关控制服务器72(例如,服务器72A)可能接收到对服务器72不持有到其的连接的网关84的请求。为了向其对等网关控制服务器72广播所述请求,网关控制服务器72(例如,服务器72A)可以轮询注册服务76以发现其对等网关控制服务器72(例如,服务器72B和72C),如在624处所示。然后网关控制服务器72(例如,服务器72A)经由注册服务76将所述网关请求转发给服务器72中的全部,如在626处所示。然后当前持有到由请求指示的网关84的连接的网关控制服务器72(例如,服务器72B)将请求发送给相应网关84。
图21是根据至少一些实施方案的用于将网关请求发送到适当的网关控制服务器的替代性方法的流程图。如在640处所示,当网关控制服务器72(例如,服务器72B)从网关84接收到连接请求时,服务器72将与网关84的配对注册在注册服务76中。如在642处所示,网关控制服务器72(例如,服务器72A)可能接收到对服务器72不持有到其的连接的网关84的请求。如在644处所示,接收到对服务器72不持有到其的连接的网关84的请求的网关控制服务器72(例如,服务器72A)然后可以查询注册服务72来找出哪个网关控制服务器72(例如,服务器72B)当前持有与84网关的连接,并且然后可以将所述请求转发给由注册服务76指示的网关控制服务器72(例如,服务器72B),如在646处所示。然后当前持有到由请求指示的网关84的连接的网关控制服务器72(例如,服务器72B)经由网关发起的连接将请求发送给相应网关84。
在至少一些实施方案中,当请求被递送到网关84并由其处理时,从网关84返回状态给当前持有到网关84的连接的网关控制服务器72(例如,服务器72B),随后网关控制服务器72(例如,服务器72B)将所述状态返回给网关84先前从其接收到所述转发的请求的网关控制服务器72(例如,服务器72A),然后网关控制服务器72(例如,服务器72A)将所述状态返回给控制台进程68。然后,控制台进程68可以将对请求结果的指示提供给发起请求的客户进程(例如,网络管理员进程90)。如果由于某种原因(例如,如果由请求指示的网关84不可用或无法找到)请求未到达目标网关84,那么控制台进程68可以是将请求失败的指示提供给发起请求的客户进程(例如,网络管理员进程90)。如果有必要或需要的话,客户进程可以重试请求。
图22是根据至少一些实施方案的用于建立、监视以及维护网关发起的连接的方法的流程图。如在660处所示,网关可以在客户端网络上被实例化。如在662处所示,在实例化后,网关向服务提供商发送连接请求以建立到服务提供商的安全连接(例如,SSL(安全套接层)/TCP连接)。在至少一些实施方案中,服务提供商处的网关控制进程可以持有所述连接,并且可以将所述连接注册到注册服务,如在664处所示。随后可以将由服务提供商接收到的对网关的请求通过网关发起的连接转发给网关。
如在666处所示,网关控制进程可以断开连接。例如,在至少一些实施方案中,网关控制进程可以通过连接周期性地或非周期性地ping网关,并且可以在检测到网关不对ping作出响应时断开连接。如果已注册到注册服务的话,那么网关控制进程可以注销连接。
如在668处所示,网关可以检测到连接已被断开。例如,在至少一些实施方案中,网关控制进程可以周期性地或非周期性地通过连接ping网关。网关可以通过确定来自服务提供商的ping没有通过连接被接收到来检测到连接已被断开。
应注意,在一些实施方案中可以采用用于从服务提供商方或客户端网络/网关方检测断开的连接的其它方法。
网关代理
如上所述,图18示出包括实施为包括多个控制网关服务器74的网关控制平面的网关控制70的服务提供商网络。在至少一些实施方案中,服务提供商网络可以包括网关代理平面,所述网关代理平面包括多个网关代理节点并且可以由网关控制平面使用来与存储网关进行通信。所述网关代理可以用来持有和管理用于网关控制服务器74的网关发起的连接。网关84向网关代理发起连接;网关代理可以维护到网关84的通信信道,并可以帮助确保信息服务提供商(例如,网关控制服务器74)与网关之间的消息的安全交换,并且帮助防止滥用,例如同一网关84的多个副本。
网关代理交互
图23A是根据至少一些实施方案的宽泛地示出用于包括网关代理平面的服务提供商网络的体系结构的框图。所述网关代理平面可以包括两个或更多个代理节点700、代理储存器702、公开给外部网络的客户端端接口进程(CIP)720以及代理节点700与网关控制服务器74之间的未公开给外部网络的服务器端接口进程(SIP)710。在一些实施方案中,网关代理700可以在与网关控制服务器74相同的物理装置上实施。在其它实施方案中,网关代理700可以在与网关控制服务器74分开的物理装置上实施。
已安装并激活的存储网关84经由CIP720向网关代理节点700发起安全连接请求(例如,SSL/TCP连接请求)。接收到所述连接请求的代理节点700(在此例子中是代理节点700B)检查网关的与连接请求相关的证书,以便找出发起此连接的网关84的网关标识符和客户账户标识符。可以使用来自所述证书的网关标识符和客户账户标识符来认证客户和网关84。在认证客户和网关84之后,代理节点700然后向代理存储702公布其是与所连接的网关84通信的授权代理700。代理(例如,代理700A和700B)可以查询代理储存器702以发现当前持有到特定网关的连接的其它代理。
在至少一些实施方案中,代理储存器702可以实施为数据库。所述数据库可以是分布式或集中式数据库。在至少一些实施方案中,代理储存器702可以存储以下关联:
(网关ID、帐号ID、代理端点)。
当消息被发送到网关84时,代理700可以查询代理储存器702以找到哪个代理702具有到网关84的连接。在至少一些实施方案中,代理储存器702中每一个网关84只存在一个条目。
网关控制服务器-代理交互
图23B示出根据至少一些实施方案网关控制服务器通过网关代理平面向网关发送消息。如图23B中所示,在至少一些实施方案中,网关控制服务器74可以具有需要被发送给特定网关84的消息。网关控制服务器74经由SIP710将所述消息发送给网关代理节点700。如果接收消息的代理节点700持有到网关84的连接,那么代理节点700将消息经由所述连接转发给网关84。然而,如果接收消息的代理节点700不持有到网关84的连接,那么代理节点700查询代理储存器702来确定哪个代理节点700持有到网关84的连接,并将消息转发给授权代理节点700(在此例子中是代理700B)。然后授权代理节点700将消息经由连接转发给网关84。
图23C示出根据至少一些实施方案网关通过网关代理平面对网关控制服务器请求作出响应。在至少一些实施方案中,从网关84到网关控制服务器74的响应可以沿着如图23B中所示的从网关控制服务器74到网关84的请求所沿的起始于接收来自网关84的响应的CIP720的反向路径。CIP720将所述响应从其接收到请求处发送到代理节点(代理700B)。应注意,代理700B并不知道响应是针对哪个网关控制服务器74。代理700B通过将响应发送给从其接收到请求的代理节点(代理700A)而完成请求。然后代理700A将响应发送给发起请求的网关控制服务器74。
连接监视和管理
在至少一些实施方案中,在管理网关发起的连接中可以实施由代理所使用的ping进程。在至少一些实施方案中,如先前所述,网关84经由CIP720向网关代理700发起安全连接(例如,SSL/TCP连接)。网关代理700可以周期性地或非周期性地向网关84发送ping消息。每一个ping消息可以包括超时;如果网关84在时间间隔内没有接收到ping,那么网关关闭当前连接并经由CIP720重新发起连接。在至少一些实施方案中,在任何时间点代理储存器702中只存在一个代理网关映射。如果网关代理700发送了ping并且没有从网关84得到响应,那么所述网关代理关闭其到网关84的连接。
在至少一些实施方案中,在每次ping时,网关代理700通过查询代理储存器702以确定是否另一代理700已经公布了到网关84的连接来查看其是否是用于给定网关84的授权代理。如果其不是授权代理,那么代理700关闭到网关84的连接。这可以处理其中同一网关84向代理节点700发起了多个连接(例如,如果网关84的证书已被复制到另一网关并且这两个网关尝试发起连接)的情况。
图23D示出根据至少一些实施方案的用于网关代理平面的ping消息交换。在至少一些实施方案中,涉及网关代理的ping是端对端ping。ping的一个原因是TCP“保活”功能具有2小时的最小时间间隔,而实施方案可能需要以更短的时间间隔来检测连接超时或终止。
在至少一些实施方案中,ping沿着如图23D中所示的路径。网关代理节点(在此例子中是代理700B)经由SIP710发送ping消息。所述消息到达网关代理节点700中的一个,在此例子中是代理700A。代理700A通过查询代理储存器702找到用于网关84的授权代理700(在此例子中是代理700B)并将ping消息转发给代理700B。代理700B将消息转发给网关84并且来自网关84的回应沿着同一路径。在至少一些实施方案中,一旦代理700B从网关84得到对ping的回应,所述代理就增加其向网关84的ping时间间隔。如果网关84连接断开,ping间隔可能被重置为最小值。因此,欠佳的代理服务器连接倾向于被ping得更为频繁。
如上所述的其中代理700通过首先向SIP710发送ping消息来发起ping消息的端对端ping方法可以帮助确保网关代理节点700可从控制平面到达。如果ping失败,那么代理700可以假定其不可从控制平面到达(例如,由于网络分区)并关闭到网关84的连接。
使用长轮询连接的远程网关管理
在一些实施方案中,长轮询技术可以用于网关发起的连接。返回参照图18,长轮询是模拟从服务器(例如,网关控制服务器74)到客户端(例如,存储网关84)的信息推送的轮询技术。在长轮询技术中,客户端(例如,存储网关84)发起到服务器(例如,网关控制服务器74)的长轮询连接并如标准的客户端/服务器轮询那样从所述服务器请求信息。然而,如果服务器没有任何客户端可用的信息,服务器保留客户端的请求并等待用于客户端的信息变得可用,而不是发送空的响应。一旦所述信息变得可用,服务器(例如,网关控制服务器74)就可以对客户端的长轮询请求作出响应,所述响应包括有待发送给客户端(例如,存储网关84)的信息。
在使用长轮询的网关发起的连接方法中,网关84经由长轮询请求建立到网关控制服务器74的连接。例如,如图18中所示,网关84可以经由长轮询请求通过负载均衡器72与网关控制服务器74建立出站SSL/TCP连接。网关控制服务器74保留所述请求并保持所述连接不断开。网关控制服务器74接收对网关84的请求。例如,如图18中所示,网关控制服务器74可以经由控制台进程68从相应网络管理员进程90接收对网关84的配置请求或操作请求。在网关控制服务器74接收到对网关84的所述请求之后,网关控制服务器74向网关的长轮询请求发送响应;所述响应包括对网关84的所述请求(例如,配置请求或操作请求)。在一些实施方案中,作为替代,网关控制服务器74可以在网关控制服务器维护的已建立的到网关的连接上将所接收到的请求发送给网关84而不对长轮询请求作出响应。
存储网关上的块存储I/O操作
如前所述,存储网关的实施方案可以实施为高速缓存网关或投影网关。在示例性实施方案中,高速缓存网关可以被认为是利用内置(本地)存储用于最频繁存取数据并利用由存储服务提供的远程存储用于基本上无限的总容量的内置的基于块的设备。图6是宽泛地示出示例性网络环境的体系结构和所述网络环境中的数据流的概要框图,在所述网络环境中实施了高速缓存网关的实施方案。高速缓存网关可以用作服务客户的本地网络与服务提供商的网络处的存储服务之间的接口。在至少一些实施方案中,高速缓存网关可以向客户端网络上的进程公开iSCSI接口,尽管在一些实施方案中可以公开其它数据接口。因此,高速缓存网关可以表现为在客户端网络内操作的数据接口对象(例如,iSCSI对象),例如,高速缓存网关可以表现为客户端网络上的存储阵列。高速缓存网关可以(例如)将(例如)基于块的存储装置(如硬盘)的逻辑单元号(LUN)公开给在客户端网络内的装置上执行的进程。所述进程反过来可以发起与LUN的数据会话(例如,SCSI会话)并向高速缓存网关发送数据命令(例如,SCSI命令)。
图24示出根据至少一些实施方案的用于高速缓存网关的通用体系结构和所述高速缓存网关的数据I/O操作。一般来说,在高速缓存网关800中,当从客户进程830接收到写数据时,所述数据被追加到写日志814;稍后所述数据被上传进程从写日志814上传到远程数据储存器820。与块有关的写数据的元数据(例如,块位置、块类型、偏移以及长度)可以添加到元数据储存器806。在至少一些实施方案中,元数据储存器806可以实施为数据库(例如Berkeley数据库(BDB))。高速缓存网关800也可以将至少一些数据(如频繁和/或最近使用的数据)本地高速缓存到本地高速缓存812,这可以改善对客户读请求的响应,因为一些读取可以从从本地高速缓存812而不是从远程数据储存器820得到满足。本地高速缓冲812也可以被称为读高速缓存。元数据储存器806还可以包含用于本地高速缓存812中的本地高速缓存的读数据的位置和的其它信息。虽然图24示出其中元数据储存器806包括读高速缓存条目和写高速缓存条目两者的实施方案,但在一些实施方案中,读高速缓存条目和写高速缓存条目可以保持在单独的元数据储存器806中。在至少一些实施方案中,如果可能的话,那么可以从写日志814或本地高速缓存812来服务来自客户进程830的数据读取请求;如果不可能的话,那么可以从远程数据储存器830获取所请求的数据。如果写日志814中存在用于数据的更新的话,那么在将数据返回给客户进程830来满足读请求之前可以用来自写日志814的数据将来自本地高速缓存812或远程数据储存器库830的被取出并缓冲(例如,到块缓冲器804)的数据进行更新。
在至少一些实施方案中,写日志814和数据高速缓存812两者可以在共同的本地的基于块的数据储存器810中实施。块数据储存器810可以在易失性存储器、非易失性存储器或其组合中实施。块数据储存器810可以在高速缓存网关800在其上实施的物理装置内的物理存储器上、在高速缓存网关800在其上实施的物理装置外部的存储器上(例如,在由客户分配给网关800的一个或多个存储装置上)或在其组合上进行实施。
写日志数据和高速缓存的读数据可以都被(例如)作为4MB(四兆字节)的块存储到块存储格式的块数据储存器810。块数据储存器810中的高速缓存读取块可以看作是读高速缓存,并且所述块数据储存器中的写日志块可以看作是写缓冲器。元数据储存器806可以包含用于定位块数据储存器810中的读高速缓存812块和写日志814块两者的条目。可以从读高速缓存812(或者从写日志814)读取块来满足读请求,并且可以经由上传进程将块从写日志814上传到远程数据储存器820。在至少一些实施方案中,当从写日志814上传写入块时,所上传的数据可以作为新的读取块添加到读高速缓存812。在块数据储存器810中,可以将所上传的写日志814块标记为“空闲”,并且适当地更新元数据储存器806以反映对块数据储存器810的更改。
在至少一些实施方案中,写请求可以修改或改变块的仅一相对较小的部分。因此,在至少一些实施方案中,当从写日志814上传块时,(例如)如前文所提到的使用数据重复数据删除技术,只有改变的部分可以上传到远程数据储存器820。另外,写日志814可以包括存储在不同写日志814块中的两个或更多个重叠写入(即,写入同一逻辑块)。当从写日志814上传写数据时,两个或更多个重叠写入可以被结合用于上传。这种结合可以在数据储存器外部(例如,在块缓冲器804中的块中)执行;写日志814中的所述块本身不发生变化。
如上文所提到的,在至少一些实施方案中,当从写日志814上传写入块时,所上传的数据可以作为新的读取块添加到读高速缓存812。对于至少一些情况,例如当写入块包括许多变化和/或当所述写入块中的大部分已发生变化,那么所述写入块就被复制到读高速缓存812作为新的读数据块,并且元数据储存器806被更新。然而,如上文所提到的,写请求可能修改或改变写日志814块的仅一相对较小部分。因此,在至少一些情况下,可以首先从远程数据储存器820取出相应块,并在将所述块添加到读高速缓存812之前用写日志814的变化更新所取出的块,以便确保读高速缓存812中的整个块是最新的。如所提到的,写日志814可以包括存储在不同写日志814块中的两个或更多个重叠写入(即,向同一逻辑块的写入),并且因此可以根据一个或多个写日志814块来更新所取出的块。在至少一些实施方案中,可以将所述所取出的块存储到块缓冲器804,以用于在被添加到读高速缓存812之前从写日志804块进行更新。
通常,新的写入被存储到块数据储存器810中的先前释放的写日志814块中;然而,如果块数据储存器810被检测为写满或接近写满,那么可以清除一个或多个高速缓存读取块来为所述写数据腾出空间。应注意,可能由于其它原因而从块数据储存器810清除读取块,例如,为了为新的读取数据腾出空间。在各种实施方案中,可以使用不同的技术或策略来从块数据储存器810清除读取块。例如,在一些实施方案中,可以应用最近最少使用(LRU)策略来从块数据储存器810清除陈旧的读取块。
在至少一些实施方案中,高速缓存网关800可以提供到远程数据储存器820上的两个或更多个卷822的接口。在至少一些实施方案中,高速缓存网关800可以为每一个卷822维护单独的写日志814和读高速缓存812。在至少一些实施方案中,用于两个或更多个卷822的所述单独的写日志814和读高速缓存812可以在同一块数据储存器810中实施。然而,在至少一些实施方案中,在块数据存储区810上用于不同卷822的写日志814和读高速缓存812可以在逻辑上或物理上分开。另外,在至少一些实施方案中,可以为单独的卷822维护单独的元数据储存器806。
虽然图24将读高速缓存812和写日志814示出为在块数据储存器810中逻辑上分开,但在至少一些实施方案中,在块数据储存器810中,用于给定卷822的读取块和写日志块可以是在物理上混杂的。例如,第一物理块可以是读取块,第一至第五物理块可以是写入块,接下来的两个物理块可以是读取块等。
如所提到的,图24示出根据至少一些实施方案的用于高速缓存网关的通用体系结构和所述高速缓存网关的数据I/O操作。然而,存储网关还可以被配置为投影网关,例如如图7中所示。图25示出根据至少一些实施方案的用于投影网关的通用体系结构和所述投影网关的数据I/O操作。投影网关801可以包括与如为图24中的高速缓存网关800所图示并描述的类似的体系结构、组件以及数据I/O操作,除了投影网关801不包括读高速缓存812或元数据储存器806中的用于读高速缓存812的条目,并且没有执行上述用于高速缓存网关的读取相关的操作。用于投影网关的写操作可以类似于用于高速缓存网关的那些,除了写入不被添加到读高速缓存。另外,来自客户进程830的读请求和写请求被转发给本地数据储存器840。然而,来自写请求的写数据被投影到远程数据储存器820。在至少一些实施方案中,写数据被附加到块数据储存器810中的写日志814,并且写日志814中的写数据被周期性地或非周期性地上传到远程数据储存器820,所述远程数据储存器维护本地数据储存器840上的主数据储存器的快照824。
在至少一些实施方案中,可以为了写性能而优化用于高速缓存网关(例如,如图24中所示)和用于投影网关(例如,如图25中所示)的写日志814和写操作。在至少一些实施方案中,网关800的至少一些I/O操作可以将块数据储存器810作为顺序数据储存器来使用。具体来说,写日志814可被视为顺序数据结构并且对写日志814的写操作可以实施为顺序写入操作。在至少一些实施方案中,写日志814可以被视为实施为线性队列抑或循环队列的一维数据缓冲器。对于高速缓存网关,从远程数据储存器820下载的数据可以存储在读高速缓存812中,与从客户进程830发送到网关800的被存储在写日志814中的写数据分开。对于高速缓存网关和投影网关两者,写请求可能从用户进程830以任何顺序(即,写入请求可以是无序或非序列性的)接收到,并且由从客户进程830接收到的所述无序写请求所指示的写数据可以是任意大小的并且可以被定向到目标数据储存器中的任意位置或偏移处。然而,从客户进程830所接收到的无序写请求中的所述任意写数据被顺序写入并附加到写日志814。在至少一些实施方案中,所述附加可以在子块级别上完成;也就是说,写数据的两个或更多个实例可以附加在写日志814中的同一块内。用于对写日志814的更新(例如,写日志814块中的写数据的偏移和长度以及目标数据储存器中的偏移)的元数据被存储到元数据储存器806。
图26是根据至少一些实施方案的用于向块数据储存器上的写日志进行写入的方法的流程图。将写日志814实施为顺序数据结构(例如,作为一维队列)可以使得I/O处理器802能够执行将从客户进程830接收到的任意写数据顺序写入到块数据储存器810。如在850处所示,可以从客户进程830接收一个或多个写请求。可以以任何顺序接收写请求(即,写请求可以是无序的),并且由从客户进程830接收到的写请求指示的写数据可以是任意大小的,并且可被定向到目标数据储存器中的任意位置或偏移处。如在852处所示,可以执行顺序写入来将所述任意写数据写入到块数据储存器810上的写日志814。如在854处所示,对块数据储存器810的顺序写入中的数据可以写入到块数据储存器810中的连续位置,例如在实施块数据储存器810的磁盘存储装置上的连续位置(例如,扇区)中。应注意,连续位置可以是(但不必定是)同一写日志块。使用对存储装置的顺序写入可以减少或消除在底层存储装置上执行随机扇区查找的需要。执行随机扇区查找对I/O操作产生负面影响。例如,与要求随机扇区查找的非顺序、非连续的写入相比,通过使用连续写入可以将磁盘I/O吞吐量从10x增加到100x。如在856处所示,可以适当地更新元数据储存器806以反映对写日志814的写入。在至少一些实施方案中,用于写入的元数据可以被顺序地添加到元数据储存器806,这可以允许需要读取写日志814中的数据的进程比在元数据被较为随机地添加到元数据储存器806的情况下更高效地读取元数据储存器806。
在至少一些实施方案中,可能并不总是可以将所有写日志814写入到块数据储存器810中的连续位置。例如,在两个写日志814块之间可能存在读高速缓存812块。因此,在854处,实施方案可以尝试将写日志814数据尽可能多地写入到连续位置,但如果位置被标记为正在使用的话,那么可能必须跳过一些位置(例如,块)。元数据储存器806被适当地更新,使得可以定位写日志814数据,即使所述数据未被存储在连续块中。
如上所述,在逻辑上,任意写数据被附加到写日志的末端。为了实现这一点,在至少一些实施方案中,块中的块缓冲器804的大小被保留成与在写日志814中所使用的大小(例如,4MB的块)相同。已分配的缓冲器块被追加到写满为止。可以分配另一缓冲块用于追加新的写数据;已满缓冲块可以被异步且顺序地写入到块数据储存器上的写日志814。写日志814中的已满块可以通过上传接口异步且顺序地上传到远程数据储存器820;来自写日志814的已上传块可被标记为“空闲”。
在如图24中所示的高速缓存网关实施方式中,为了保持数据一致性,可以需要在网关800将所请求的数据返回给客户进程830之前将读数据与写数据合并。图27是根据高速缓存网关的至少一些实施方案的用于满足读请求的方法的流程图。如在860处所示,从客户进程830接收读请求。在至少一些实施方案中,当从客户进程830接收到读请求时,网关800将在元数据储存器806中查找所述读取的数据范围以确定写日志814中是否存在与所述读取范围重叠的数据。在图27的862处,如果在写日志814中找到了完全覆盖读取范围的重叠数据,那么就可以使用来自写日志814的所述数据来直接满足读请求,如在864处所示。否则,在图27的866处,如果在写日志814中找到了部分覆盖读取范围的重叠数据,那么可以检查读高速缓存812来查看是否存在用于数据范围的数据,如在868处所示。如果数据是在读高速缓存812中,那么可以从读高速缓存812取出一个或多个数据块,如在870处所示。否则,可以从远程数据储存器820取出一个或多个块,如在872处所示。应注意,在一些实施方案中,可以从读高速缓存和远程数据储存器820取出块来满足一些读请求。在图27的874处,然后可以用来自写日志814的变化的数据来更新所取出的数据块。在图27的876处,可以将变化的数据返回给发出请求的进程830来满足读请求。在一些实施方案中,可以将更新后的块添加到读高速缓存812,如在图27的878处所示。
在一些实施方案中,从远程数据储存器820读取来满足读请求的块可以在将所述块发送给请求进程830之前被添加到读高速缓存812并从写日志814进行更新。可替代地,所述块可被缓冲(例如)到块缓冲器804并在所述缓冲器中进行更新。然后可以将更新后的块从缓冲器804发送给请求进程830并从缓冲器804添加到读高速缓存814。
在一些实施方案中,可以用来自写日志814的数据适当更新读高速缓存812中用来满足读请求的块,并且然后将其从读高速缓存812发送给请求进程830来满足读请求。可替代地,可以从读高速缓存812读取所述块并将其缓冲(例如)到块缓冲器804并在所述缓冲器中进行更新。然后可以将更新后的块从缓冲器804发送给请求进程830并从缓冲器804添加到读高速缓存814。读高速缓存812中的被读入到缓冲器中的块的先前版本可以被标记为空闲和/或被最近更新的块重写。
在图27中的866处,如果在写日志814中没有找到重叠数据,那么可以检查读高速缓存812来查看读请求是否可以从读高速缓存812得到满足,如在图27的880处所示。在图27的880处,如果读请求可以从读高速缓存812得到满足,那么可以将来自读高速缓存812的数据返回给客户进程830来满足读请求,如在图27的882处所示。在图27的880处,如果读请求无法从读高速缓存812得到满足,那么可以从远程数据储存器820取出一个或多个数据块,如在图27的884处所示。可以将来自所取出的块的数据返回给客户进程830来满足读请求,如在图27的886处所示。在一些实施方案中,可以将从远程数据储存器820取出用来满足读请求的块添加到读高速缓存812,如在图27的888所示。
在至少一些实施方案中,网关800可以允许客户(例如)通过由服务提供商提供的控制台进程来请求写日志814的有待拍摄并上传到远程数据储存器820的快照。此外或者作为替代,网关800可以周期性地或非周期性地自动拍摄写日志814的快照并将其上传到远程数据储存器820。上传写日志814的快照可以(例如)为数据提供保护以防硬件和软件故障。在至少一些实施方案中,所述快照是时间点快照;在所述快照中,只有在请求所述快照时在写日志中的变化的数据才被上传。在至少一些实施方案中,对于高速缓存网关实施方式来说,当上传变化的数据时,也可以用正在上传的数据中的至少一些来更新本地存储的读高速缓存812,使得不必从远程数据储存器820下载所述数据用于未来的读取。在变化的数据被上传到远程数据储存器820之后,写日志814中的数据和元数据储存器806中的对应数据可以被丢弃(例如,标记为“空闲”),并且空间可以被再次使用。
聚结写数据用于上传到远程数据储存器
如前所述,可以周期性或非周期性地将写日志块上传到远程数据储存器。在至少一些实施方案中,在上传所述写日志块中可以使用数据重复数据删除技术。然而,在上传过程中,所描述的数据重复数据删除技术操作在被暂存有待上传的块中的任何数据上。由于来自客户进程的任意写入被顺序地追加到写日志,并且客户进程可以向目标数据储存器的同一位置写入一次以上,因此一个或多个写日志块可以包括定向到目标数据储存器的同一位置(例如,偏移和/或范围)的一次以上的写入。
因此,至少一些实施方案可以实施预上传聚结技术用于写日志块中的写数据。在这种技术中,可以检查用于被计划用于上传的一个写日志块(或多个块)的元数据来确定写日志块中是否存在定向到目标数据储存器的同一位置的一个以上写入。如果存在向给定位置的一个以上写入,那么在构建有待上传的缓冲块时可以抑制前期写入。因此,传递给上传进程用于(例如)根据数据重复数据删除技术上传的块可以包括向给定位置的仅一个写入(最近写入),而不是在如果不应用预上传聚结技术的情况下可能存在的对同一位置的可能的两个或更多个写入。
更新存储网关进程
存储网关的实施方案可以实施为可从服务提供商站点下载并安装在客户的数据中心中的装置上的存储网关进程。在至少一些实施方案中,所述存储网关进程可以是在所述客户的装置上的虚拟机(VM)环境内执行的虚拟设备。服务提供商可以生成用于存储网关进程的更新。按照常规,更新软件(如存储网关设备)涉及客户动作和停机时间以下载新软件、关闭旧版本、安装新版本、重新启动等。例如,对于存储网关进程,常规更新可能涉及客户动作以下载新的VM映像、卸载卷、将挂起的写数据转储清除到持久存储、关闭当前VM、部署新的VM、重新挂载卷等。在此期间,客户端进程可能经历不希望的停机时间,并且潜在地,一些数据可能丢失。
因此,本文描述了使得存储网关的软件更新过程自动化的更新技术的实施方案。所述更新技术的实施方案可以允许在客户最少或没有干预并且对客户端进程影响很小或没有影响的情况下在装置上检测、下载并实例化存储网关软件的新版本。在更新技术中,当前存储网关进程在客户端进程的I/O操作很少或不中断网关并且很少或没有数据丢失风险的情况下自动且干净地关闭并且网关操作被传递给新的存储网关进程。
在更新技术的至少一些实施方案中,运行在网关进程正在其上执行的装置上的更新代理监视用于网关进程的软件更新的可用性并且如果公布了网关的较新版本的话就下载更新。更新代理指示网关的当前运行实例来静默其当前状态并关闭。在实施方案中,由当前网关进程执行的静默过程可以包括保存网关的当前配置,以及适当地处理当前网关数据(如有待上传的排队写数据(写日志)、元数据(例如,元数据储存器)以及可能的其它数据,使得网关操作可以被干净地移交给网关进程的新版本。当前配置可以包括但不限于,目标(例如,iSCSI目标)、端口、卷、到服务提供商的连接以及存储网关的实例用来执行各种存储网关操作所需的任何其它信息中的一种或多种。在静默过程中,当前网关进程将写日志的位于存储器中的部分转储清除到写日志存储在其上的本地数据储存器。在当前网关进程完成静默过程之后,当前网关进程停止监听公开给客户端进程的I/O端口(例如,iSCSI端口)、释放所述端口并关闭。在旧版本释放I/O端口之后,网关进程的较新版本加载由网关进程的先前实例存储的配置、打开到网关的数据和元数据的句柄、还原卷、打开并监听I/O端口(例如,iSCSI端口)并恢复I/O操作。在静默过程期间,客户端进程(例如,iSCSI启动器)可能经历对网关I/O端口(例如,iSCSI端口)的I/O操作的网络故障并且可以重试I/O操作。一旦较新版本打开I/O端口,所述重试的I/O操作可以被网关进程的较新版本接受并处理。结果,没有致命I/O错误返回给客户端进程,并且没有丢失数据。至多,客户端进程可能经历轻微的网络减速。
尽管在本文中是关于更新存储网关软件来描述更新技术的实施方案,但应注意,所述更新技术也可以应用于更新其它软件。
图28A至图28D图示出根据至少一些实施方案的更新技术的组件和操作。如图28A中所示,当前存储网关进程1254A可以在服务客户1250网络上的装置1252上执行。如图28A中所示,在至少一些实施方案中,存储网关进程1254A可以在装置1252上的虚拟机(VM1270A)内执行。存储网关进程1254A可以被配置为投影网关,所述投影网关将写请求投影到本地数据储存器1260上的一个或多个卷以便在远程数据储存器1216中创建快照,或者可替代地,存储网关进程1254A可以被配置为高速缓存网关,所述高速缓存网关为对实施为远程数据储存器1216上的一个或多个卷的远程数据存储的读取和写入请求提供服务,并且将频繁或最近使用的数据本地高速缓存到本地数据储存器1260上的读高速缓存。在任一配置中,存储网关进程1254A都可以在本地数据储存器1260上维护写日志和元数据储存器,并且可以将追加到所述写日志的写数据上传到远程数据储存器1216。
存储网关进程1254A将写数据追加到在本地数据储存器1260上实施的写日志。然而,可以在存储网关进程1254A在其上实施的装置1252上的存储器中(例如参见图27中的块缓冲器804)维护写日志的部分。存储网关进程1254A将新的写数据追加写日志的所述存储器中的部分中的缓冲器,并将完成的缓冲器(例如,块)存储到本地数据储存器1260上的写日志。
服务提供商1210可以生成并存储用于存储网关的更新1214。例如,更新1214可以被存储为服务提供商控制平面1212内的服务器装置上的包。
还可以在装置1252(在其上实例化当前网关进程1254A)上实例化更新代理1256。更新代理1256可以周期性地或非周期性地与服务提供商1210进行核对来确定是否存在可用于本地装置1252上的存储网关的更新。在至少一些实施方案中,与服务提供商1210进行核对来确定是否存在可用于存储网关的更新可能涉及对当前存储网关进程1254的版本和在存储提供商1210处通告的一个或多个更新1214进行核对。当检测到更新1214可用时,更新代理1256可以将更新1214包从服务提供商1210下载到装置1252。在至少一些实施方案中,更新代理1256可以请求特定的更新1214包,而另一进程可以实现实际下载。
在至少一些实施方案中,在将更新1214包从服务提供商1210下载到装置1252之后,可以根据更新1214包来将存储网关进程1254B实例化。如图28A中所示,在至少一些实施方案中,存储网关进程1254B可以在装置1252上的虚拟机(VM1270B)内进行实例化。在一些实施方案中,可以在存储网关进程1254A关闭之前实例化存储网关进程1254B。在其它实施方案中,存储网关进程1254B可以直到存储网关进程1254A关闭后才被实例化。可以根据更新序列来关闭存储网关进程1254A,如下所述。在各种实施方式中,如下所述,存储网关进程1254B可以在所述更新序列期间的不同点进行实例化,例如在存储网关进程1254A保存其当前配置之后或者在存储网关进程1254A完成将写日志的存储器中的部分转储清除到本地数据储存器1260之后。
在至少一些实施方案中,在检测到更新1214可用之时或之后,更新代理1256可以向存储网关进程1254A发送命令来指示进程1254A关闭。在至少一些实施方案中,此命令可以是指示关闭正被请求以便可以安装更新的网关进程的特定“关闭以更新”或“开始更新序列”命令。这通知存储网关进程1254A关闭是用于更新,使得进程1254A可以执行在典型的关闭过程期间一般不被执行的内务处理和移交工作。更新代理1256可以在存储网关进程1254B被实例化之前或替代地,存储网关进程1254B被实例化之后将命令发送给存储网关进程1254A。在一些实施方案中,新的存储网关进程1254B可以在新的网关进程1254B被实例化后将所述命令发送给当前进程1254A,而不是更新代理1256向当前存储网关进程1254A发送关闭以更新命令。
虽然图28A示出更新代理1256直接与当前存储网关进程1254A进行通信来发送关闭以更新命令,但在至少一些实施方案中,更新代理1256可以将所述命令发送给服务提供商1210,然后所述服务提供商通过网关进程1254A与服务提供商1210之间的安全通信信道将所述命令路由到适当的存储网关进程1254A。在至少一些实施方案中,所述安全通信信道是由存储网关进程1254A(例如)经由图19中所示的方法发起的配置和管理信道。
在至少一些实施方案中,可以指定其中可对存储网关执行更新的时间窗口。例如,客户可以指定非高峰时间期间的时间窗口,或者其中从客户端进程1258到存储网关的I/O通常比在其它时间时更低的时间窗口作为更新窗口。在这些实施方案中,可以直到接近所述指定时间窗口的开始或者之时或者之后才向存储网关进程1254A发送关闭以更新命令。指定时间窗口的长度可以根据特定的客户环境而变化,并且可以被指定为秒(例如,03:00:00am至03:00:30am)、分钟(例如,12:00am至12:20am)、小时(例如,1am至4am)或天(例如,周日的12am至11:59pm的任意时间)或特定某些天的特定时间段(例如,周日的2am至4am)。或者,可以在更新窗口之外的时间将关闭以更新命令发送给存储网关进程1254A,但存储网关进程1254A可以等到更新窗口之时或接近更新窗口的时间才开始其关闭以更新。
在至少一些实施方案中,作为保留更新进程直到先前指定的更新窗口的代替或作为可替代方案,可以通知客户更新1214何时可用,或者客户可能发现更新1214可用,并且当必要或者需要时,可以允许客户(例如)通过选择经由服务提供商1210的控制台进程呈现给客户的“开始更新”或类似用户接口元素来启动更新过程。在至少一些实施方案中,可以允许客户从网关进程的一个或多个版本之间进行选择并指示所选择的版本将被下载并安装。
如图28A中所示,响应于接收到关闭以更新命令,当前存储网关进程1254A可以将其当前配置1262保存至本地数据储存器1260。虽然图28A将当前配置1262示出为存储在装置1252外部的数据储存器1260上,但在至少一些实施方案中,当前配置1262可以保存到装置1252内部的数据储存器1260。当前配置1262可以包括但不限于以下各项中的一个或多个:目标(例如,iSCSI目标)、当前I/O端口、当前卷、到服务提供商1210的当前数据与配置/管理连接,以及需要被传递给新网关进程1254B的特定于网关进程1254A的当前状态的总体任何配置信息。
在关闭之前,存储网关进程1254A需要将所有写数据从写日志的存储器中的部分转储清除到本地数据储存器1260。如图28B中所示,当前存储网关进程1254A可以执行写日志的当前在存储器中的部分中的写数据到本地数据储存器1260的主动转储清除。在至少一些实施方案中,在此从写日志的存储器中的部分到本地数据储存器1260的主动转储清除期间,当前存储网关进程1254A可以继续接收并处理来自客户端进程1258的I/O请求。对写日志的当前在存储器中的部分中的写数据的转储清除可以被称为是主动的,因为将当前写数据从写日志的存储器中的部分移动到本地数据储存器可以以高于正常网关处理操作期间的优先级来执行,并且可以以高于对本地数据储存器1260的其它I/O操作的优先级来执行。将写日志数据从写日志的存储器中的部分移动到本地数据储存器1260通常可以以较低优先级或者在后台执行,以免与正常磁盘I/O操作竞争并导致其延迟。因此,从客户端进程1258的角度来看,写日志的存储器中的部分的主动转储清除可能对磁盘I/O性能有所影响,虽然在大多数情况下这种影响可能不会严重到足以造成问题。
在至少一些实施方案中,在执行写日志的存储器中的部分中的当前写数据到本地数据储存器1060的主动转储清除时,当前存储网关进程1254A可以继续接收并处理来自客户端进程1258的I/O请求。在这些实施方案中,新的写请求可以通过将相应的写数据追加到写日志的存储器中的部分而继续得到服务。然而,在至少一些实施方案中,不在转储清除过程的这一第一阶段期间对新追加的数据进行转储清除。
如图28C中所示,在完成写日志的存储器中的部分中的当前写数据的主动转储清除之后,当前存储网关进程1254A可以停止从客户端进程1258接受I/O请求。换句话说,存储网关进程1254A可以停止其在公开给客户端进程1258的I/O端口的监听。然而,存储网关进程1254A可以继续持有I/O端口。此时,存储网关进程1254A可以开始写日志转储清除过程的第二阶段,在所述第二阶段中,从转储清除过程的第一阶段开始追加到写日志的存储器中的部分的所有写数据(如果有的话)(如图28B中所示)被转储清除到本地数据储存器1260。应注意,转储清除的第二阶段一般可以在较短时间段中执行,通常(但不一定)少于一秒。在此期间,尝试访问I/O端口用于I/O操作(读取和写入)的客户端进程1258可以重试I/O操作。在至少一些实施方案中,存储网关进程1254A停止接受I/O请求,并且根据客户端进程1258所用来与I/O端口通信的I/O协议(例如,iSCSI协议)来检测到没有正在接收I/O请求,使得客户端进程1258可以重试I/O请求。或者,在一些实施方案中,I/O端口可以将指示存储网关进程1254A繁忙并且进程1258可以周期性或非周期性地重试I/O操作的错误消息返回给发起进程。
在至少一些实施方案中,存储网关进程1254A可以在关闭之前的更新序列期间将其它的存储器中的网关数据(例如元数据储存器的存储器中的部分)转储清除到本地数据储存器1260。
在至少一些实施方案中,在当前存储网关进程1254A将写日志的存储器中的部分转储清除到本地数据储存器1260期间(如图28B和图28C中所示),新的存储网关进程1254B至少可以开始访问或加载保存在网关配置1262中的信息并相应地自我配置为新网关进程。在至少一些实施方案中,例如,新的存储网关进程1254B可以在从当前存储网关进程1254A完全接管操作之前开始监听如网关配置1262中所指示的公开给客户端进程1258的I/O端口。应注意,新的存储网关进程1254B可以监听I/O端口,但可以并不实际上处理来自客户端进程1258的I/O请求直到所述端口被当前存储网关进程1254A释放并从当前存储网关进程1254A转移了控制。
图28D示出了更新过程的结果。在存储网关进程1254A完成将写日志的存储器中的部分转储清除到本地数据储存器1260之后,存储网关进程1254A可以将操作移交给新的存储网关进程1254B。存储网关进程1254A可以将公开给客户端进程1258的I/O端口释放给新的存储网关进程1254B。在一些实施方案中,存储网关进程1254A可以向新的存储网关进程1254B发送信号来通知其更新序列已完成并且已释放I/O端口,此时新的存储网关进程1254B可以打开所述I/O端口。在其它实施方案中,在存储网关进程1254A释放I/O端口之后,新的存储网关进程1254B可以尝试I/O端口直到成功获取所述端口。在一些实施方案中,可以使用其它技术来检测到I/O端口已被释放。然后,客户端进程1258所一直重试的任何I/O操作可以由新的存储网关进程1254B接收并服务,并且新的I/O请求也可以由新的存储网关进程1254B接收并服务。在至少一些实施方案中,为了打开I/O端口,新的存储网关进程1254B根据正在使用的I/O协议(例如,iSCSI协议)将地址绑定到套接字。然而,在一些实施方案中,可使用其它用于打开I/O端口的方法,这取决于所使用的I/O协议。
在至少一些实施方案中,在从存储网关进程1254A接管操作时,新的存储网关进程1254B可能有各种内务处理或其它任务有待执行。例如,如果新的存储网关进程1254B还没有完成读取网关配置1262并相应地进行配置的话,那么新的存储网关进程1254B可能需要完成一些配置操作。例如,新的存储网关进程1254B可以设置对本地数据储存器1260上的网关数据1264的访问,重新挂载由新的存储网关进程1254A在关闭时卸载的一个或多个卷,并且通常执行用来接管网关操作需要执行的任何任务。作为另一个例子,对于高速缓存网关配置,当新的存储网关进程1254B开始网关操作时,读高速缓存可能是陈旧的,并且因此所述读高速缓存可能需要在新的存储网关进程1254B接管之后进行刷新。作为另一个例子,对存储网关的一些更新可能破坏配置信息和/或网关数据(例如,写日志、读高速缓存和/或元数据储存器)的向后兼容性。在这种情况下,新的存储网关进程1254B可能必须转换或者重新格式化配置信息和/或网关数据。转换所述网关数据可以在存储网关进程1254B开始接收并处理I/O端口上的I/O请求之前或之后执行,例如,如在下文题为处理向后兼容性的章节中所描述。
图29是根据至少一些实施方案的用于更新执行存储网关进程的方法的流程图。如在1300处所示,可以检测到并下载用于当前实例化的网关进程的更新。在至少一些实施方案中,在网关进程在其上被实例化的装置上执行的更新代理可以检测到远程网络上用于存储网关的更新包的可用性。所述远程网络可以(但不一定)是存储提供商网络。例如,所述更新包可以被公布在存储提供商网络上的服务器上。在至少一些实施方案中,所述更新代理可以将本地网关进程的版本与由更新包所提供的存储网关的版本进行比较,以确定是否要下载更新包。
如在1302处所示,可以指示当前网关进程来执行更新关闭过程(也可以被称为更新序列)。在至少一些实施方案中,更新代理可以(例如)通过经由服务提供商向存储网关进程发送消息来指示当前网关进程执行关闭;服务提供商经由网关发起的到服务提供商的连接将所述消息转发给当前网关进程。或者,所述更新网关过程可以指示当前网关进程关闭以用于更新。
如在1304处所示,响应于被指示来执行更新关闭,当前网关进程保存其当前配置。所述当前配置可以包括但不限于以下各项中的一个或多个:目标(例如,iSCSI目标)、端口、卷、到服务提供商的连接以及存储网关的实例用来执行各种存储网关操作所需的任何其它信息。
如在1306处所示,在下载更新包后,可以根据更新包在装置上将存储网关进程的更新后的版本进行实例化。在一些实施方案中,更新代理可以指示更新包来实例化更新后的存储网关进程。此时,存储网关进程的两个版本都在装置上被实例化;然而,当前存储网关进程可能仍在执行网关操作(例如,接收并处理包括写请求的I/O请求、追加写数据到写日志、从写日志上传写数据、执行更新序列的元素(如将写日志的存储器中的部分转储清除到本地数据储存器上的持久存储等)。然而,应注意,在一些实施方案中,更新后的网关进程可以直到稍后才被实例化,例如在当前存储网关进程已完成将写日志的存储器中的部分转储清除到本地数据储存器之后。
应注意,在当前网关进程保存其当前配置之后,更新后的网关进程可以开始加载所保存的当前配置并相应地配置自身以准备好从当前网关进程接管存储网关操作。
当前网关进程将写数据追加到在本地数据储存器上实施的写日志。然而,写日志的一部分被保持在网关进程在其上实施的装置上的存储器中。网关进程将新的写数据追加写日志的所述存储器中的部分中的缓冲器,并将完成的缓冲器(例如,块)存储到本地数据储存器上的写日志。在关闭之前,当前网关进程需要将所有写数据从写日志的存储器中的部分转储清除到本地数据储存器。如在1308处所示,当前网关进程执行写日志的存储器中的部分中的当前写日志内容到本地数据储存器的主动转储清除,同时仍在客户端I/O端口上接收新的I/O请求并将新的写数据追加到写日志的存储器中的部分。对写日志的存储器中的部分中的当前写数据的这一转储清除可以被称为是主动的,因为将写日志的当前存储器中的部分中的写数据移动到本地数据储存器可以以高于正常网关处理操作期间的优先级来执行,并且可以以高于对本地数据储存器的其它I/O操作的优先级来执行。将写日志数据从写日志的存储器中的部分移动到本地数据储存器通常可以以较低优先级或者在后台执行,以免与正常磁盘I/O操作竞争并导致其延迟。
如在1310所示,在完成将写日志的存储器中的部分中的当前写数据转储清除到本地数据储存器之后,当前网关进程在客户端I/O端口上停止处理I/O请求。在至少一些实施方案中,存储网关进程停止接受I/O请求,并且根据客户端进程所用来与I/O端口通信的I/O协议(例如,iSCSI协议)来检测到没有正在接收I/O请求,使得客户端进程可以重试I/O请求。或者,在一些实施方案中,当前网关进程可以用(例如)指示当前网关进程正繁忙并且I/O请求应该稍后重试的错误消息来对到达客户端I/O端口的I/O请求作出响应。
客户端进程可以继续提交I/O请求给存储网关I/O端口,并且在(例如,通过I/O协议检测到未接收到I/O请求,或者通过从存储网关进程接收错误消息)而检测到I/O请求还没有被存储网关进程处理之后,可以等待一段时间并且然后重试I/O请求。然而,当前网关进程可以继续持有I/O端口。
如在1312处所示,在当前网关进程完成将写日志的存储器中的部分中的当前写数据主动转储清除到本地数据储存器并停止处理来自客户端进程的I/O请求之后,当前网关进程将写日志的存储器中的部分中的新的写数据转储清除到本地数据储存器。应注意,写日志转储清除的这一阶段一般可以在较短时间段中执行,通常(但不一定)少于一秒。在此时间段期间,客户端进程可以继续向I/O端口提交新的I/O请求并且重试I/O请求。
如在1314处所示,在所述新的写数据已从写日志的存储器中的部分转储清除到本地数据储存器之后,当前网关进程可以释放客户端I/O端口。在至少一些实施方案中,当前网关进程可以向更新后的网关进程发送信号来通知其I/O端口已被释放。在完成了将写日志的存储器中的部分转储清除到本地数据储存器并释放客户端I/O端口之后的某个时间,当前网关进程可以终止。
如在1316处所示,更新后的网关进程检测到I/O端口已被释放、打开所述I/O端口并开始接受和处理来自客户端进程的I/O请求。为了检测到I/O端口已被释放,在一些实施方案中,更新后的网关进程可以从当前网关进程接收指示所述端口已被释放的信号。或者,更新后的网关进程可以尝试I/O端口直到成功获取所述端口。在一些实施方案中可以使用其它技术来检测到I/O端口已被释放。在更新后的网关进程打开I/O端口之后,客户端进程所一直重试的任何I/O请求可以由更新后的网关进程接收并处理,并且新的I/O请求也可以由更新后的网关进程来接收并处理。在至少一些实施方案中,为了打开I/O端口,更新后的存储网关进程根据正在使用的I/O协议(例如,iSCSI协议)将地址绑定到套接字。然而,在一些实施方案中,可以使用其它用于打开I/O端口的方法,这取决于所使用的I/O协议。
在至少一些实施方案中,在从当前网关进程接管操作时,更新后的网关进程可能有各种内务处理或其它任务有待执行。例如,更新后的网关进程可以设置对本地数据储存器上的网关数据(例如,写日志)的访问,重新挂载一个或多个卷,并且通常执行用来接管网关操作需要执行的任何任务。对于高速缓存网关配置,当更新后的网关进程开始网关操作时,读高速缓存可能是陈旧的,并且因此可能需要刷新所述读高速缓存。
应注意,图29中的元素中的至少一些可以以不同顺序执行,和/或所述元素的至少一些中的两个或更多个可以至少部分同时地执行。作为例子,在一些实施方案中,更新后的网关进程可以在当前网关进程被指示来开始更新序列之前被实例化;在其它实施方案中,更新后的网关进程可以在当前网关进程保存其当前配置之后被实例化。在一些实施方案中,更新后的网关进程可以在当前网关进程正在将写日志的存储器中的部分转储清除到本地数据储存器时加载所保存的配置信息、进行自我配置并开始尝试获取I/O端口。在一些实施方案中,更新后的网关进程可以直到当前网关进程完成将写日志的存储器中的部分转储清除到本地数据储存器之后才被实例化。
在至少一些实施方案中,图29的元素1302至元素1316中的至少一些可以在指定更新窗口内执行,如图中所示。所述更新窗口可以(例如)是开始于一天的特定时间的相对较短的时间段(例如,20秒或两分钟或二十分钟),并且可以是在一周中的特定某天。在至少一些实施方案中,实施客户端网络上的存储网关的客户端或客户可以指定更新窗口的时间和持续时间。
处理向后兼容性
对存储网关的一些更新可能破坏配置信息和/或网关数据(例如,写日志、读高速缓存和/或元数据储存器)的向后兼容性。因此,对于一些更新,更新后的网关进程可以包括可以至少读取所述配置信息和/或网关数据的先前版本并可能将所述配置信息和/或网关数据适当地转换为新版本的一个或多个组件。在至少一些实施方案中,配置信息和/或网关数据可以被版本化,使得网关进程可以适当地识别配置信息和/或网关数据。
在至少一些实施方案中,如果网关数据需要由更新后的网关进程进行转换,那么更新后的网关进程可以直到当前网关进程完成写日志的存储器中的部分到本地数据储存器并释放I/O端口的转储清除之后才被实例化,使得更新后的网关进程可以干净地访问所有网关数据和配置信息。在一些实施方案中,更新后的网关进程可以在转换本地数据储存器上的网关数据之前制作网关数据的副本,使得如果在更新中发生问题的话能够回滚到网关进程的较早版本。在创建所述副本后,就可以转换本地数据储存器上的网关数据。这可以在更新后的网关进程打开I/O端口之前完成。相反,在一些实施方案中,更新后的网关进程可以根据需要来打开I/O端口并转换本地数据储存器上的网关数据。
更新安全性
在至少一些实施方案中,为了在更新存储网关时提供更高的安全性,可以对配置信息和/或网关数据进行校验,并且校验码(即,SHA256校验码)可以由存储提供商网络上的服务器(例如网关控制服务器)(例如)使用加密密钥技术进行签名。更新后网关设备可以在客户端I/O端口上恢复I/O操作之前加载所述校验码并向所述存储提供商服务器验证所述校验码。
说明性***
在至少一些实施方案中,实施本文中所述的存储网关技术中的一种或多种的部分或全部的计算机***可以包括通用计算机***,如图30中所示计算机***3000。所述通用计算机***包括一种或多种计算机可访问介质或被配置来访问一种或多种计算机可访问介质。在示出的实施方案中,计算机***3000包括经由输入/输出(I/O)接口3030耦接至***储存器3020的一个或多个处理器3010。计算机***3000进一步包括耦接到I/O接口3030的网络接口3040。
在各种实施方案中,计算机***3000可为包括一个处理器3010的单一处理器***,或包括若干处理器3010(例如两个、四个、八个或另一个合适数量)的多处理器***。处理器3010可为能够执行指令的任何处理器。例如,在各种实施方案中,处理器3010可为实施各种指令集架构(ISAs)中任何一种架构的通用或嵌入式处理器,所述架构例如x86、PowerPC、SPARC、或MIPS ISAs或任何其它合适ISA。在多处理器***中,每一个处理器3010可通常但不一定实施相同的ISA。
***储存器3020可以被配置来存储可由处理器3010访问的指令和数据。在各种实施方案中,***储存器3020可使用任何合适储存器技术来实施,所述储存器技术例如静态随机存取储存器(SRAM)、同步动态RAM(SDRAM)、非易失性/快闪型储存器或任何其它类型的储存器。在示出的实施方案中,实施一个或多个所需功能的程序指令和数据(如上述用于存储网关技术数据的那些方法、技术以及数据)被示出作为代码3025和数据3026存储在***储存器3020内。
在一个实施方案中,I/O接口3030可被配置来协调处理器3010、***储存器3020和装置中的任何***装置之间的I/O流量,所述***装置包括网络接口3040或其它***接口。在一些实施方案中,I/O接口3030可执行任何必需协议、时序或其它数据转换以便将来自一个组件(例如***储存器3020)的数据信号转化成适合于由另一个组件(例如处理器3010)使用的格式。在一些实施方案中,I/O接口3030可包括对于通过各种类型的***总线附接的装置的支持,所述***总线例如***组件互连(PCI)总线标准或通用串行总线(USB)标准的变化形式。在一些实施方案中,I/O接口3030的功能可分成两个或更多个单独的组件中,例如北桥和南桥。另外,在一些实施方案中,I/O接口3030的一些或所有功能,例如至***储存器3020的接口,可直接并入处理器3010中。
网络接口3040可以被配置来允许数据在计算机***3000与附接到一个或多个网络3050的其它装置3060(例如像本文所述的如在其它图中所示的其它计算机***或装置)之间进行交换。在各个实施方案中,网络接口3040可以支持经由任何合适的有线或无线通用数据网络(例如像以太网网络类型)进行通信。另外,网络接口3040可以支持经由电信/电话网络(如模拟语音网络或数字光纤通信网络)、经由存储区域网络(如光纤信道SAN)或经由任何其它合适类型的网络和/或协议进行通信。
在一些实施方案中,***储存器3020可以是如上文参照其它图所描述的被配置来存储程序指令和数据的计算机可访问介质的一个实施方案,以用于实施存储网关技术的实施方案。然而,在其它实施方案中,可以在不同类型的计算机可访问介质上接收、发送或存储程序指令和/或数据。一般来说,计算机可访问的介质可包括非临时性的储存介质或储存器介质,例如磁性介质或光学介质,例如经由I/O接口3030耦接至计算机***3000的磁盘或DVD/CD。非临时性计算机可访问存储介质还可以包括可作为***储存器3020或另一类型的储存器被包括在计算机***3000的一些实施方案中的任何易失性或非易失性介质,如RAM(例如,SDRAM、DDR SDRAM、RDRAM、SRAM等)、ROM等。另外,计算机可访问介质可以包括传输介质或信号,诸如经由通信介质(网络和/或无线链路)传送的电信号、电磁信号或数字信号,例如可以经由网络接口3040来实施。
结论
各个实施方案可以进一步包括根据前面的描述实施的在计算机可访问介质上接收、发送或存储指令和/或数据。一般来说,计算机可访问介质可以包括存储介质或储存器介质(如磁性介质或光学介质,例如磁盘或DVD/CD-ROM)、易失性或非易失性介质(如RAM(例如,SDRAM、DDR、RDRAM、SRAM等)、ROM等)以及传输介质或信号(如经由通信介质(如网络和/或无线链路)传送的信号(如电信号、电磁信号或数字信号))。
如在图中所示和本文所描述的各种方法表示方法的示例性实施方案。所述方法可以在软件、硬件或其组合中实施。方法的顺序可以改变,并且各个元素可以被添加、重新排序、组合、省略、修改等。
受益于本公开的本领域技术人员将清楚可进行各种修改和变化。旨在包含所有这些修改和变化,并且相应地,以上描述应视为具有说明性而非限制性意义。
可鉴于以下条款对本公开的各种实施方案进行描述:
1.一种方法,其包括:
由在本地网络上的计算装置上执行的更新代理检测到用于在所述计算装置上执行的当前进程的更新包在远程网络上可用,其中所述当前进程经由一个或多个I/O端口从一个或多个客户端进程接收包括写请求的I/O请求,将由所述写请求指示的写数据追加到本地数据储存器上的写日志的存储器中的部分,并将写数据从所述写日志上传到远程数据储存器;
响应于所述检测,将所述更新包下载到所述计算装置;
指示所述当前进程开始更新序列;
由所述当前进程将当前配置存储到外部储存器,其中所述当前配置至少包括对所述一个或多个I/O端口的指示;
根据所下载的所述更新包在所述计算装置上实例化更新后的进程;
由所述更新后的进程从所述外部储存器加载所述当前配置;
由所述当前进程将写数据从所述写日志的所述存储器中的部分转储清除到所述本地数据储存器;
由所述当前进程释放所述一个或多个I/O端口;以及
由所述更新后的进程经由所述一个或多个I/O端口从所述一个或多个客户端进程接收包括写请求的I/O请求。
2.如条款1所述的方法,其中所述远程数据储存器是由所述远程网络上的存储服务进行维护,其中所述当前进程是用作所述本地网络上的所述一个或多个客户端进程与所述远程网络上的所述存储服务之间的接口的存储网关的当前版本,且其中所述更新后的进程是所述存储网关的较新版本。
3.如条款1所述的方法,其中所述由所述当前进程将写数据从所述写日志的所述存储器中的部分转储清除到所述本地数据储存器包括:
将所述写日志的所述存储器中的部分中的当前写数据转储清除到所述本地数据储存器,同时在所述一个或多个I/O端口上接受新的写请求,并且将由所述新的写请求指示的新的写数据追加到所述写日志的所述存储器中的部分;以及
在完成所述将所述写日志的所述存储器中的部分中的所述当前写数据转储清除到所述本地数据储存器之后,在所述一个或多个I/O端口上停止接受写请求并将所述写日志的所述存储器中的部分中的所述新的写数据转储清除到所述本地数据储存器。
4.如条款1所述的方法,其进一步包括在指定更新窗口期间执行所述指示、所述存储、所述实例化、所述加载、所述转储清除以及所述释放。
5.如条款1所述的方法,其中所述指示所述当前进程开始更新序列是由所述更新代理或所述更新进程执行。
6.如条款1所述的方法,其进一步包括所述更新后的进程:
响应于确定所述一个或多个I/O端口已被所述当前进程释放,打开所述一个或多个I/O端口来接收来自所述一个或多个客户端进程的I/O请求;以及
将由所接收到的写请求指示的写数据追加到所述写日志并将所述写数据从所述写日志上传到所述数据储存器。
7.如条款1所述的方法,其中所述更新后的进程直到所述转储清除完成之后才在所述计算装置上进行实例化。
8.如条款1所述的方法,其中所述更新后的进程是在所述指示所述当前进程开始所述上传序列之前被在所述计算装置上实例化。
9.一种装置,其包括:
至少一个处理器;以及
包括程序指令的存储器,其中所述程序指令可由所述至少一个处理器执行以实施存储网关进程,所述存储网关进程经由一个或多个I/O端口从本地网络上的一个或多个客户端进程接收包括写请求的I/O请求,将由所述写请求指示的写数据追加到本地数据储存器上的写日志的存储器中的部分,并将写数据从所述写日志上传到远程数据储存器;
其中所述程序指令进一步可由所述至少一个处理器执行以从远程网络下载更新包,指示所述存储网关进程关闭,并根据所下载的所述更新包在所述存储器中实例化更新后的存储网关进程;
其中,响应于接收到关闭的指示,所述存储网关进程保存包括对所述一个或多个I/O端口的指示的存储网关配置,将写数据从所述写日志的所述存储器中的部分转储清除到所述本地数据储存器,并释放所述一个或多个I/O端口;并且
其中所述更新后的存储网关进程加载所保存的所述存储网关配置,并且在所述存储网关进程释放所述一个或多个I/O端口之后从所述存储网关进程接管存储网关操作。
10.如条款9所述的装置,其中,为了从所述存储网关进程接管存储网关操作,所述更新后的存储网关进程检测到所述一个或多个I/O端口已被所述存储网关进程释放,打开所述一个或多个I/O端口,并开始经由所述一个或多个I/O端口从所述一个或多个客户端进程接收并处理包括写请求的I/O请求。
11.如条款10所述的装置,其中由所述更新后的存储网关进程从所述一个或多个客户端进程接收到的所述写请求包括在写数据从所述写日志的所述存储器中的部分的所述转储清除期间未被所述存储网关进程接受的至少一次写请求重试。
12.如条款10所述的装置,其中为了处理经由所述一个或多个I/O端口从所述一个或多个客户端进程所接收到的所述写请求,所述更新后的存储网关进程将由所述写请求指示的写数据追加到所述写日志并将所述写数据从所述写日志上传到所述远程数据储存器。
13.如条款9所述的装置,其中,为了将写数据从所述写日志的所述存储器中的部分转储清除到所述本地数据储存器,所述存储网关进程:
将所述写日志的所述存储器中的部分中的当前写数据转储清除到所述本地数据储存器,同时在所述一个或多个I/O端口上接受包括写请求的新的I/O请求,并且将由所述新的写请求指示的新的写数据追加到所述写日志的所述存储器中的部分;以及
在将所述写日志的所述存储器中的部分中的所述当前写数据转储清除到所述本地数据储存器之后,在所述一个或多个I/O端口上停止接受后续写请求,并将所述写日志的所述存储器中的部分中的所述新的写数据转储清除到所述本地数据储存器。
14.如条款13所述的装置,其中所述存储网关进程对所述后续写请求中每一个作出回复来通知相应客户端进程重试写请求。
15.如条款9所述的装置,其中所述存储网关进程在所述指定更新窗口期间保存所述存储网关配置,将所述写数据从所述写日志的所述存储器中的部分转储清除到所述本地数据储存器,并释放所述一个或多个I/O端口。
16.如条款15所述的装置,其中所述更新后的存储网关进程在所述指定更新窗口期间加载所述所保存的存储网关配置并从所述存储网关进程接管存储网关操作。
17.如条款9所述的装置,其中所述存储网关进程在所述释放所述一个或多个I/O端口之后终止。
18.一种非临时性计算机可访问存储介质,其存储计算机可执行程序指令来在计算装置上实施存储网关进程,所述存储网关进程可操作以:
执行存储网关操作,所述存储网关操作包括经由一个或多个I/O端口从本地网络上的一个或多个客户端进程接收包括写请求的I/O请求,将由所述写请求指示的写数据追加到本地数据储存器上的写日志的存储器中的部分,并将写数据从所述写日志上传到远程数据储存器;
接收到指示所述存储网关进程将关闭使得更新后的存储网关进程可以接管存储网关操作的指示;以及
响应于接收到所述指示,保存包括对所述一个或多个I/O端口的指示的存储网关配置,将写数据从所述写日志的所述存储器中的部分转储清除到所述本地数据储存器,并释放所述一个或多个I/O端口使得所述更新后的存储网关进程可以接管存储网关操作。
19.如条款18所述的非临时性计算机可访问存储介质,其中,为了从所述存储网关进程接管存储网关操作,所述更新后的存储网关进程可操作来检测到所述一个或多个I/O端口已被所述存储网关进程释放,打开所述一个或多个I/O端口,并经由所述一个或多个I/O端口从所述一个或多个客户端进程接收并处理包括写请求的I/O请求。
20.如条款18所述的非临时性计算机可访问存储介质,其中,为了将写数据从所述写日志的所述存储器中的部分转储清除到所述本地数据储存器,所述存储网关进程进一步可操作以:
将所述写日志的所述存储器中的部分中的当前写数据转储清除到所述本地数据储存器,同时在所述一个或多个I/O端口上接受包括新的写请求的I/O请求,并且将由所述新的写请求指示的新的写数据追加到所述写日志的所述存储器中的部分;以及
在将所述写日志的所述存储器中的部分中的所述当前写数据转储清除到所述本地数据储存器之后,将所述写日志的所述存储器中的部分中的所述新的写数据转储清除到所述本地数据储存器,同时在所述一个或多个I/O端口上拒绝后续写请求。
21.如条款20所述的非临时性计算机可访问存储介质,其中所述存储网关进程进一步可操作来对所述后续写请求中的每一个作出回复来通知相应客户端进程重试所述写请求。
22.如条款18所述的非临时性计算机可访问存储介质,其中所述存储网关进程进一步可操作来在指定更新窗口期间保存所述存储网关配置,将所述写数据从所述写日志的所述存储器中的部分转储清除到所述本地数据储存器,并释放所述一个或多个I/O端口。
23.如条款18所述的非临时性计算机可访问存储介质,其中所述存储网关进程进一步可操作来在所述释放所述一个或多个I/O端口之后终止。
Claims (15)
1.一种装置,其包括:
至少一个处理器;以及
包括程序指令的存储器,其中所述程序指令可由所述至少一个处理器执行来实施存储网关进程,所述存储网关进程经由一个或多个I/O端口从本地网络上的一个或多个客户端进程接收包括写请求的I/O请求,将由所述写请求指示的写数据追加到本地数据储存器上的写日志的存储器中的部分,并将写数据从所述写日志上传到远程数据储存器;
其中所述程序指令进一步可由所述至少一个处理器执行以从远程网络下载更新包,指示所述存储网关进程关闭,并根据所下载的更新包在所述存储器中实例化更新后的存储网关进程;
其中,响应于接收到所述关闭指示,所述存储网关进程保存包括对所述一个或多个I/O端口的指示的存储网关配置,将写数据从所述写日志的所述存储器中的部分转储清除到所述本地数据储存器,并释放所述一个或多个I/O端口;并且
其中所述更新后的存储网关进程加载所保存的存储网关配置,并且在所述存储网关进程释放所述一个或多个I/O端口之后从所述存储网关进程接管存储网关操作。
2.如权利要求1所述的装置,其中,为了从所述存储网关进程接管存储网关操作,所述更新后的存储网关进程检测到所述一个或多个I/O端口已被所述存储网关进程释放,打开所述一个或多个I/O端口,并开始经由所述一个或多个I/O端口从所述一个或多个客户端进程接收并处理包括写请求的I/O请求。
3.如权利要求2所述的装置,其中由所述更新后的存储网关进程从所述一个或多个客户端进程接收到的所述写请求包括在所述将写数据从所述写日志的所述存储器中的部分转储清除期间未被所述存储网关进程接受的至少一次写请求重试。
4.如权利要求2所述的装置,其中,为了处理经由所述一个或多个I/O端口从所述一个或多个客户端进程所接收到的所述写请求,所述更新后的存储网关进程将由所述写请求指示的写数据追加到所述写日志并将所述写数据从所述写日志上传到所述远程数据储存器。
5.如权利要求1所述的装置,其中,为了将写数据从所述写日志的所述存储器中的部分转储清除到所述本地数据储存器,所述存储网关进程:
将所述写日志的所述存储器中的部分中的当前写数据转储清除到所述本地数据储存器,同时在所述一个或多个I/O端口上接受包括写请求的新的I/O请求,并且将由所述新的写请求指示的新的写数据追加到所述写日志的所述存储器中的部分;以及
在将所述写日志的所述存储器中的部分中的所述当前写数据转储清除到所述本地数据储存器之后,在所述一个或多个I/O端口上停止接受后续写请求并将所述写日志的所述存储器中的部分中的所述新的写数据转储清除到所述本地数据储存器。
6.如权利要求5所述的装置,其中所述存储网关进程对所述后续写请求中的每一个作出回复来通知相应客户端进程重试所述写请求。
7.如权利要求1所述的装置,其中所述存储网关进程在指定更新窗口期间保存所述存储网关配置,将所述写数据从所述写日志的所述存储器中的部分转储清除到所述本地数据储存器,并释放所述一个或多个I/O端口。
8.如权利要求7所述的装置,其中所述更新后的存储网关进程在所述指定更新窗口期间加载所保存的存储网关配置并从所述存储网关进程接管存储网关操作。
9.如权利要求1所述的装置,其中所述存储网关进程在所述释放所述一个或多个I/O端口之后终止。
10.一种方法,其包括:
由存储网关执行存储网关操作,所述存储网关操作包括经由一个或多个I/O端口从本地网络上的一个或多个客户端进程接收包括写请求的I/O请求,将由所述写请求指示的写数据追加到本地数据储存器上的写日志的存储器中的部分,并将写数据从所述写日志上传到远程数据储存器;
接收到关闭使得更新后的存储网关可以接管所述存储网关操作的指示;以及
响应于接收到所述指示,保存包括对所述一个或多个I/O端口的指示的存储网关配置,将写数据从所述写日志的所述存储器中的部分转储清除到所述本地数据储存器,并释放所述一个或多个I/O端口使得所述更新后的存储网关进程可以接管所述存储网关操作。
11.如权利要求10所述的方法,其中,为了接管存储网关操作,所述更新后的存储网关进程检测到所述一个或多个I/O端口已被所述存储网关进程释放,打开所述一个或多个I/O端口,并经由所述一个或多个I/O端口从所述一个或多个客户端进程接收并处理包括写请求的I/O请求。
12.如权利要求10所述的方法,其中,为了将写数据从所述写日志的所述存储器中的部分转储清除到所述本地数据储存器,所述方法进一步包括:
将所述写日志的所述存储器中的部分中的当前写数据转储清除到所述本地数据储存器,同时在所述一个或多个I/O端口上接受包括新的写请求的I/O请求,并且将由所述新的写请求指示的新的写数据追加到所述写日志的所述存储器中的部分;以及
在将所述写日志的所述存储器中的部分中的所述当前写数据转储清除到所述本地数据储存器之后,将所述写日志的所述存储器中的部分中的所述新的写数据转储清除到所述本地数据储存器,同时在所述一个或多个I/O端口上拒绝后续写请求。
13.如权利要求12所述的方法,其进一步包括:对所述后续写请求中的每一个作出回复来通知相应客户端进程重试所述写请求。
14.如权利要求10所述的方法,其进一步包括:在指定更新窗口期间保存所述存储网关配置,将所述写日志的所述存储器中的部分中的写数据转储清除到所述本地数据储存器,并释放所述一个或多个I/O端口。
15.如权利要求10所述的方法,其进一步包括在所述释放所述一个或多个I/O端口之后关闭。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/174,172 US8706834B2 (en) | 2011-06-30 | 2011-06-30 | Methods and apparatus for remotely updating executing processes |
US13/174,172 | 2011-06-30 | ||
PCT/US2012/044841 WO2013003684A1 (en) | 2011-06-30 | 2012-06-29 | Methods and apparatus for remotely updating executing processes |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103765406A true CN103765406A (zh) | 2014-04-30 |
CN103765406B CN103765406B (zh) | 2016-08-17 |
Family
ID=47391758
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280040713.XA Active CN103765406B (zh) | 2011-06-30 | 2012-06-29 | 用于远程更新执行进程的方法和装置 |
Country Status (6)
Country | Link |
---|---|
US (2) | US8706834B2 (zh) |
EP (1) | EP2727002B1 (zh) |
JP (1) | JP5716134B2 (zh) |
CN (1) | CN103765406B (zh) |
CA (1) | CA2840573C (zh) |
WO (1) | WO2013003684A1 (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104463014A (zh) * | 2014-12-10 | 2015-03-25 | 上海爱数软件有限公司 | 一种基于快照的oracle数据库保护方法 |
CN104516687A (zh) * | 2014-12-22 | 2015-04-15 | 中国科学院信息工程研究所 | 一种Linux块设备的Windows远程映射方法 |
CN104809025A (zh) * | 2015-04-29 | 2015-07-29 | 北京奇艺世纪科技有限公司 | 一种项目上线方法及装置 |
CN105376269A (zh) * | 2014-08-11 | 2016-03-02 | 中国电信股份有限公司 | 虚拟机存储***及其实现方法和装置 |
CN105791005A (zh) * | 2016-02-25 | 2016-07-20 | 深圳市共进电子股份有限公司 | 基于tcp连接实现远程运维管理的方法和装置 |
CN105988866A (zh) * | 2015-03-17 | 2016-10-05 | 佳能株式会社 | 信息处理装置及其控制方法 |
CN107402800A (zh) * | 2016-03-18 | 2017-11-28 | 阿里巴巴集团控股有限公司 | 一种更新容器守护进程的方法和设备 |
CN107851127A (zh) * | 2015-07-28 | 2018-03-27 | 华为技术有限公司 | 利用不同数据存储器类型来存储主用和复制数据库目录的装置和方法 |
CN109005179A (zh) * | 2018-08-10 | 2018-12-14 | 常州中价之星软件技术有限公司 | 基于端口控制的网络安全隧道建立方法 |
CN109478151A (zh) * | 2016-06-29 | 2019-03-15 | 亚马逊技术有限公司 | 网络可访问数据卷修改 |
CN109491698A (zh) * | 2018-12-29 | 2019-03-19 | 武汉思普崚技术有限公司 | 基于热补丁的***更新方法及装置 |
CN111464622A (zh) * | 2020-03-30 | 2020-07-28 | 星辰天合(北京)数据科技有限公司 | 分布式存储***中的卷映射处理方法及装置 |
CN111522566A (zh) * | 2020-04-23 | 2020-08-11 | Oppo(重庆)智能科技有限公司 | 一种***升级方法、终端及存储介质 |
CN112380034A (zh) * | 2020-11-18 | 2021-02-19 | 浙江工业大学 | 一种嵌入式设备远程实验方法 |
CN113347250A (zh) * | 2021-05-31 | 2021-09-03 | 中国工商银行股份有限公司 | 数据访问方法、数据访问装置、电子设备及可读存储介质 |
Families Citing this family (80)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2546304A1 (en) | 2003-11-13 | 2005-05-26 | Commvault Systems, Inc. | System and method for performing an image level snapshot and for restoring partial volume data |
US8793343B1 (en) * | 2011-08-18 | 2014-07-29 | Amazon Technologies, Inc. | Redundant storage gateways |
US8789208B1 (en) | 2011-10-04 | 2014-07-22 | Amazon Technologies, Inc. | Methods and apparatus for controlling snapshot exports |
US9148381B2 (en) | 2011-10-21 | 2015-09-29 | Qualcomm Incorporated | Cloud computing enhanced gateway for communication networks |
US9116893B2 (en) | 2011-10-21 | 2015-08-25 | Qualcomm Incorporated | Network connected media gateway for communication networks |
US8990163B2 (en) * | 2011-12-15 | 2015-03-24 | Sap Se | Snapshot of distributed enterprise business data stored in various cloud services |
WO2013106454A1 (en) * | 2012-01-09 | 2013-07-18 | Qualcomm Incorporated | Cloud computing controlled gateway for communication networks |
US9298715B2 (en) * | 2012-03-07 | 2016-03-29 | Commvault Systems, Inc. | Data storage system utilizing proxy device for storage operations |
US9471578B2 (en) | 2012-03-07 | 2016-10-18 | Commvault Systems, Inc. | Data storage system utilizing proxy device for storage operations |
US9342537B2 (en) | 2012-04-23 | 2016-05-17 | Commvault Systems, Inc. | Integrated snapshot interface for a data storage system |
US9176725B2 (en) * | 2012-05-15 | 2015-11-03 | Oracle International Corporation | Automated upgrade for an operating system using a gateway server |
US9462037B2 (en) * | 2013-01-07 | 2016-10-04 | Google Inc. | Dynamically sizing chunks in a partially loaded spreadsheet model |
US9886346B2 (en) | 2013-01-11 | 2018-02-06 | Commvault Systems, Inc. | Single snapshot for multiple agents |
US9311622B2 (en) | 2013-01-15 | 2016-04-12 | Google Inc. | Resolving mutations in a partially-loaded spreadsheet model |
WO2014133522A2 (en) * | 2013-02-28 | 2014-09-04 | Empire Technology Development, Llc | Local message queue processing for co-located workers |
US9634886B2 (en) * | 2013-03-14 | 2017-04-25 | Alcatel Lucent | Method and apparatus for providing tenant redundancy |
CN103312605B (zh) | 2013-05-29 | 2017-06-20 | 华为技术有限公司 | 一种网关设备身份设置的方法及管理网关设备 |
US9588654B2 (en) * | 2013-06-26 | 2017-03-07 | Sap Se | Integrated learning using multiple devices |
US9813499B2 (en) * | 2013-07-23 | 2017-11-07 | Virtual Strongbox, Inc. | Virtual storage system and method of sharing access to the virtual storage system for adding electronic documents |
US9529679B2 (en) * | 2013-11-13 | 2016-12-27 | Verizon Patent And Licensing Inc. | Volume snapshot in a shared environment |
US9632874B2 (en) | 2014-01-24 | 2017-04-25 | Commvault Systems, Inc. | Database application backup in single snapshot for multiple applications |
US9639426B2 (en) | 2014-01-24 | 2017-05-02 | Commvault Systems, Inc. | Single snapshot for multiple applications |
US9753812B2 (en) | 2014-01-24 | 2017-09-05 | Commvault Systems, Inc. | Generating mapping information for single snapshot for multiple applications |
US9495251B2 (en) | 2014-01-24 | 2016-11-15 | Commvault Systems, Inc. | Snapshot readiness checking and reporting |
US9798631B2 (en) | 2014-02-04 | 2017-10-24 | Microsoft Technology Licensing, Llc | Block storage by decoupling ordering from durability |
US10133741B2 (en) | 2014-02-13 | 2018-11-20 | Amazon Technologies, Inc. | Log data service in a virtual environment |
WO2015161173A1 (en) | 2014-04-18 | 2015-10-22 | William Marsh Rice University | Competitive compositions of nucleic acid molecules for enrichment of rare-allele-bearing species |
US10122753B2 (en) | 2014-04-28 | 2018-11-06 | Sophos Limited | Using reputation to avoid false malware detections |
US9917851B2 (en) | 2014-04-28 | 2018-03-13 | Sophos Limited | Intrusion detection using a heartbeat |
CN104615618B (zh) * | 2014-05-21 | 2018-07-31 | 北方信息控制集团有限公司 | 一种嵌入式内存数据库的实现方法 |
US9864530B2 (en) * | 2014-07-02 | 2018-01-09 | Hedvig, Inc. | Method for writing data to virtual disk using a controller virtual machine and different storage and communication protocols on a single storage platform |
US9558085B2 (en) | 2014-07-02 | 2017-01-31 | Hedvig, Inc. | Creating and reverting to a snapshot of a virtual disk |
US9875063B2 (en) * | 2014-07-02 | 2018-01-23 | Hedvig, Inc. | Method for writing data to a virtual disk using a controller virtual machine and different storage and communication protocols |
US10067722B2 (en) | 2014-07-02 | 2018-09-04 | Hedvig, Inc | Storage system for provisioning and storing data to a virtual disk |
US9483205B2 (en) | 2014-07-02 | 2016-11-01 | Hedvig, Inc. | Writing to a storage platform including a plurality of storage clusters |
US9424151B2 (en) | 2014-07-02 | 2016-08-23 | Hedvig, Inc. | Disk failure recovery for virtual disk with policies |
US9798489B2 (en) | 2014-07-02 | 2017-10-24 | Hedvig, Inc. | Cloning a virtual disk in a storage platform |
US10042716B2 (en) | 2014-09-03 | 2018-08-07 | Commvault Systems, Inc. | Consolidated processing of storage-array commands using a forwarder media agent in conjunction with a snapshot-control media agent |
US9774672B2 (en) | 2014-09-03 | 2017-09-26 | Commvault Systems, Inc. | Consolidated processing of storage-array commands by a snapshot-control media agent |
US9648105B2 (en) | 2014-11-14 | 2017-05-09 | Commvault Systems, Inc. | Unified snapshot storage management, using an enhanced storage manager and enhanced media agents |
US9448731B2 (en) | 2014-11-14 | 2016-09-20 | Commvault Systems, Inc. | Unified snapshot storage management |
US9720779B2 (en) * | 2014-11-27 | 2017-08-01 | Institute For Information Industry | Backup system and backup method thereof |
GB201915196D0 (en) | 2014-12-18 | 2019-12-04 | Sophos Ltd | A method and system for network access control based on traffic monitoring and vulnerability detection using process related information |
CN104484136B (zh) * | 2014-12-25 | 2017-09-29 | 深圳联友科技有限公司 | 一种可支撑高并发内存数据的方法 |
CN104539725B (zh) * | 2015-01-15 | 2018-05-25 | 北京金和软件股份有限公司 | 一种对生成的app应用进行集群打包的方法 |
US10664535B1 (en) | 2015-02-02 | 2020-05-26 | Amazon Technologies, Inc. | Retrieving log data from metric data |
US10031741B2 (en) | 2015-09-30 | 2018-07-24 | International Business Machines Corporation | Upgrade of port firmware and driver software for a target device |
US10013386B2 (en) | 2015-09-30 | 2018-07-03 | International Business Machines Corporation | Preservation of port control block information related to logins and states of remote ports during a code load in an embedded port |
US10031742B2 (en) | 2015-09-30 | 2018-07-24 | International Business Machines Corporation | Upgrade of firmware in an interface hardware of a device in association with the upgrade of driver software for the device |
CN106612307B (zh) * | 2015-10-22 | 2019-11-15 | 中移(杭州)信息技术有限公司 | 一种永远在线业务的实现方法及装置 |
CN105573819A (zh) * | 2015-12-11 | 2016-05-11 | 国云科技股份有限公司 | 一种直接通过宿主机获取虚拟机磁盘容量信息的方法 |
US10503753B2 (en) | 2016-03-10 | 2019-12-10 | Commvault Systems, Inc. | Snapshot replication operations based on incremental block change tracking |
CN106021020B (zh) * | 2016-05-12 | 2019-03-12 | 中国工商银行股份有限公司 | 一种双活数据站点应用数据挂载方法及装置 |
US10248174B2 (en) | 2016-05-24 | 2019-04-02 | Hedvig, Inc. | Persistent reservations for virtual disk using multiple targets |
CN106201772A (zh) * | 2016-06-23 | 2016-12-07 | 浪潮(北京)电子信息产业有限公司 | 一种基于数据中心的操作***备份、恢复方法及装置 |
US10776210B2 (en) * | 2016-09-30 | 2020-09-15 | Hewlett Packard Enterprise Development Lp | Restoration of content of a volume |
US10210048B2 (en) | 2016-10-25 | 2019-02-19 | Commvault Systems, Inc. | Selective snapshot and backup copy operations for individual virtual machines in a shared storage |
CN108076090B (zh) * | 2016-11-11 | 2021-05-18 | 华为技术有限公司 | 数据处理方法和存储管理*** |
CN108475254A (zh) * | 2016-12-16 | 2018-08-31 | 华为技术有限公司 | 对象复制方法、装置及对象存储设备 |
US10691514B2 (en) | 2017-05-08 | 2020-06-23 | Datapipe, Inc. | System and method for integration, testing, deployment, orchestration, and management of applications |
US10778541B2 (en) * | 2017-07-19 | 2020-09-15 | Level 3 Communications, Llc | Systems and methods for automated verification and reconfiguration of disconnected network devices |
CN111433773B (zh) * | 2017-11-30 | 2023-04-11 | Abb瑞士股份有限公司 | 对变电站中的网关的更新 |
US10732885B2 (en) | 2018-02-14 | 2020-08-04 | Commvault Systems, Inc. | Block-level live browsing and private writable snapshots using an ISCSI server |
KR102641521B1 (ko) * | 2018-02-22 | 2024-02-28 | 삼성전자주식회사 | 키-밸류 스토리지 장치 및 이의 동작 방법 |
US10848468B1 (en) | 2018-03-05 | 2020-11-24 | Commvault Systems, Inc. | In-flight data encryption/decryption for a distributed storage platform |
JP6984496B2 (ja) * | 2018-03-09 | 2021-12-22 | 富士通株式会社 | ストレージ管理装置、ストレージシステム、及びストレージ管理プログラム |
CN108810143A (zh) * | 2018-06-13 | 2018-11-13 | 郑州云海信息技术有限公司 | 一种客户端负载均衡挂载虚拟ip的方法、***及装置 |
US10725941B2 (en) | 2018-06-30 | 2020-07-28 | Western Digital Technologies, Inc. | Multi-device storage system with hosted services on peer storage devices |
US11190614B2 (en) | 2018-07-27 | 2021-11-30 | Vmware, Inc. | Bidirectional command protocol via a unidirectional communication connection for reliable distribution of tasks |
US11012500B2 (en) | 2018-07-27 | 2021-05-18 | Vmware, Inc. | Secure multi-directional data pipeline for data distribution systems |
US11481296B2 (en) * | 2018-09-10 | 2022-10-25 | International Business Machines Corporation | Detecting configuration errors in multiport I/O cards with simultaneous multi-processing |
US10877810B2 (en) * | 2018-09-29 | 2020-12-29 | Western Digital Technologies, Inc. | Object storage system with metadata operation priority processing |
US20200193026A1 (en) * | 2018-12-18 | 2020-06-18 | Vmware, Inc. | Application updates detection in data centers |
US11347572B2 (en) | 2019-09-26 | 2022-05-31 | Vmware, Inc. | Methods and apparatus for data pipelines between cloud computing platforms |
US11422789B2 (en) * | 2020-03-13 | 2022-08-23 | Jpmorgan Chase Bank, N.A. | System and method for implementing software release version update automation tool |
FR3115130B1 (fr) * | 2020-10-09 | 2023-04-14 | Safran Electronics & Defense | Procédé et système de gestion de compatibilité entre deux équipements |
US20220300208A1 (en) * | 2021-03-18 | 2022-09-22 | Micron Technology, Inc. | Memory read performance techniques |
US11853100B2 (en) * | 2021-04-12 | 2023-12-26 | EMC IP Holding Company LLC | Automated delivery of cloud native application updates using one or more user-connection gateways |
US20230109231A1 (en) * | 2021-10-04 | 2023-04-06 | Oracle International Corporation | Customizable network virtualization devices using multiple personalities |
CN114244398B (zh) * | 2021-10-29 | 2023-02-24 | 歌尔科技有限公司 | 设备升级方法、***、装置及计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001090843A2 (en) * | 2000-05-20 | 2001-11-29 | Equipe Communications Corporation | A network device for supporting multiple upper layer network protocols over a single network connection |
US20020169827A1 (en) * | 2001-01-29 | 2002-11-14 | Ulrich Thomas R. | Hot adding file system processors |
CN1722107A (zh) * | 2004-07-15 | 2006-01-18 | 株式会社日立制作所 | 计算机***以及存储装置***的迁移方法 |
WO2011058821A1 (ja) * | 2009-11-11 | 2011-05-19 | 日本電気株式会社 | ストレージシステム、ストレージプログラム更新方法、及びプログラム |
Family Cites Families (55)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3838228A (en) | 1973-10-01 | 1974-09-24 | Gte Automatic Electric Lab Inc | Junctor disconnect detection circuit |
US5157663A (en) | 1990-09-24 | 1992-10-20 | Novell, Inc. | Fault tolerant computer system |
US5636355A (en) | 1993-06-30 | 1997-06-03 | Digital Equipment Corporation | Disk cache management techniques using non-volatile storage |
DE69719934T2 (de) | 1996-12-20 | 2003-11-27 | International Business Machines Corp., Armonk | Verfahren und Vorrichtung zur schnellen und sicheren Datensammlung |
US6148368A (en) | 1997-07-31 | 2000-11-14 | Lsi Logic Corporation | Method for accelerating disk array write operations using segmented cache memory and data logging |
GB9717718D0 (en) | 1997-08-22 | 1997-10-29 | Philips Electronics Nv | Memory management with compaction of data blocks |
US6792540B1 (en) | 1998-05-28 | 2004-09-14 | Oracle International Corporation | Data replication security |
JP3763992B2 (ja) | 1999-03-30 | 2006-04-05 | 富士通株式会社 | データ処理装置及び記録媒体 |
US6216199B1 (en) | 1999-08-04 | 2001-04-10 | Lsi Logic Corporation | Hardware mechanism for managing cache structures in a data storage system |
US6477624B1 (en) | 1999-11-08 | 2002-11-05 | Ondotek, Inc. | Data image management via emulation of non-volatile storage device |
US6880086B2 (en) * | 2000-05-20 | 2005-04-12 | Ciena Corporation | Signatures for facilitating hot upgrades of modular software components |
US7280529B1 (en) | 2000-05-20 | 2007-10-09 | Ciena Corporation | Providing network management access through user profiles |
WO2001095113A2 (en) | 2000-06-06 | 2001-12-13 | Bhavsar Shyamkant R | Fabric cache |
GB0026981D0 (en) | 2000-11-04 | 2000-12-20 | Koninkl Philips Electronics Nv | Bridging system for interoperation of remote groups of devices |
US6920615B1 (en) | 2000-11-29 | 2005-07-19 | Verizon Corporate Services Group Inc. | Method and system for service-enablement gateway and its service portal |
DE20020657U1 (de) | 2000-12-06 | 2002-01-17 | Fa. Hermann Heye i.Ins., 31683 Obernkirchen | Vorrichtung zum Schließen und Öffnen von Formhälften einer Glasformmaschine |
US6516380B2 (en) | 2001-02-05 | 2003-02-04 | International Business Machines Corporation | System and method for a log-based non-volatile write cache in a storage controller |
US6948089B2 (en) | 2002-01-10 | 2005-09-20 | Hitachi, Ltd. | Apparatus and method for multiple generation remote backup and fast restore |
US6934826B2 (en) | 2002-03-26 | 2005-08-23 | Hewlett-Packard Development Company, L.P. | System and method for dynamically allocating memory and managing memory allocated to logging in a storage area network |
US7448077B2 (en) | 2002-05-23 | 2008-11-04 | International Business Machines Corporation | File level security for a metadata controller in a storage area network |
US7191304B1 (en) | 2002-09-06 | 2007-03-13 | 3Pardata, Inc. | Efficient and reliable virtual volume mapping |
US7752329B1 (en) | 2002-10-31 | 2010-07-06 | Aol Inc. | Migrating configuration information based on user identity information |
US7010645B2 (en) | 2002-12-27 | 2006-03-07 | International Business Machines Corporation | System and method for sequentially staging received data to a write cache in advance of storing the received data |
US20040243699A1 (en) | 2003-05-29 | 2004-12-02 | Mike Koclanes | Policy based management of storage resources |
US7460672B2 (en) | 2003-07-18 | 2008-12-02 | Sanrad, Ltd. | Method for securing data storage in a storage area network |
US7340639B1 (en) | 2004-01-08 | 2008-03-04 | Network Appliance, Inc. | System and method for proxying data access commands in a clustered storage system |
US7788662B2 (en) | 2004-07-28 | 2010-08-31 | Microsoft Corporation | Automatic upgrade of pluggable components |
US7523286B2 (en) | 2004-11-19 | 2009-04-21 | Network Appliance, Inc. | System and method for real-time balancing of user workload across multiple storage systems with shared back end storage |
DE102005014477A1 (de) | 2005-03-30 | 2006-10-12 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Vorrichtung und Verfahren zum Erzeugen eines Datenstroms und zum Erzeugen einer Multikanal-Darstellung |
US20060271656A1 (en) | 2005-05-24 | 2006-11-30 | Yuichi Yagawa | System and method for auditing storage systems remotely |
US8037026B1 (en) | 2005-07-01 | 2011-10-11 | Hewlett-Packard Development Company, L.P. | Protected user-controllable volume snapshots |
US7801912B2 (en) | 2005-12-29 | 2010-09-21 | Amazon Technologies, Inc. | Method and apparatus for a searchable data service |
US7873601B1 (en) | 2006-06-29 | 2011-01-18 | Emc Corporation | Backup of incremental metadata in block based backup systems |
US7676702B2 (en) | 2006-08-14 | 2010-03-09 | International Business Machines Corporation | Preemptive data protection for copy services in storage systems and applications |
WO2008085203A2 (en) | 2006-12-29 | 2008-07-17 | Prodea Systems, Inc. | Presence status notification from digital endpoint devices through a multi-services gateway device at the user premises |
US20080178278A1 (en) | 2007-01-22 | 2008-07-24 | Doron Grinstein | Providing A Generic Gateway For Accessing Protected Resources |
US7865663B1 (en) | 2007-02-16 | 2011-01-04 | Vmware, Inc. | SCSI protocol emulation for virtual storage device stored on NAS device |
US7801993B2 (en) | 2007-07-19 | 2010-09-21 | Hitachi, Ltd. | Method and apparatus for storage-service-provider-aware storage system |
US8190763B2 (en) | 2007-09-14 | 2012-05-29 | At&T Intellectual Property I, Lp | System and method for trouble detection, isolation, and management |
US8145844B2 (en) | 2007-12-13 | 2012-03-27 | Arm Limited | Memory controller with write data cache and read data cache |
CN101971570B (zh) | 2008-03-14 | 2016-04-27 | 艾利森电话股份有限公司 | 用于远程接入本地网络的方法和装置 |
JP2009254513A (ja) * | 2008-04-15 | 2009-11-05 | Fujinon Corp | 電子内視鏡ファームウェアの更新方法 |
US8126847B1 (en) | 2008-04-30 | 2012-02-28 | Network Appliance, Inc. | Single file restore from image backup by using an independent block list for each file |
US8200638B1 (en) | 2008-04-30 | 2012-06-12 | Netapp, Inc. | Individual file restore from block-level incremental backups by using client-server backup protocol |
US20100057984A1 (en) | 2008-08-26 | 2010-03-04 | Seagate Technology Llc | Memory hierarchy containing only non-volatile cache |
US8307177B2 (en) | 2008-09-05 | 2012-11-06 | Commvault Systems, Inc. | Systems and methods for management of virtualization data |
US8422395B2 (en) | 2008-09-30 | 2013-04-16 | Microsoft Corporation | Resilient 1:N first-hop gateway selection mechanism |
US20100162032A1 (en) | 2008-12-23 | 2010-06-24 | David Dodgson | Storage availability using cryptographic splitting |
WO2010090745A1 (en) | 2009-02-06 | 2010-08-12 | Osr Open Systems Resources, Inc. | Methods and systems for data storage |
US8305893B2 (en) | 2009-03-16 | 2012-11-06 | Samsung Electronics Co., Ltd. | Quality of service management for home-to-home connections |
US8880656B2 (en) | 2009-05-12 | 2014-11-04 | Cisco Technology, Inc. | Customer edge device auto-configuration |
US8285967B1 (en) | 2009-06-30 | 2012-10-09 | Emc Corporation | Method for on-demand block map generation for direct mapped LUN |
US8407190B2 (en) | 2009-06-30 | 2013-03-26 | Commvault Systems, Inc. | Performing data storage operations with a cloud environment, including containerized deduplication, data pruning, and data transfer |
US8370297B2 (en) | 2010-03-08 | 2013-02-05 | International Business Machines Corporation | Approach for optimizing restores of deduplicated data |
US9619417B2 (en) | 2011-06-17 | 2017-04-11 | Alcatel Lucent | Method and apparatus for remote delivery of managed USB services via a mobile computing device |
-
2011
- 2011-06-30 US US13/174,172 patent/US8706834B2/en active Active
-
2012
- 2012-06-29 CN CN201280040713.XA patent/CN103765406B/zh active Active
- 2012-06-29 CA CA2840573A patent/CA2840573C/en active Active
- 2012-06-29 JP JP2014519128A patent/JP5716134B2/ja active Active
- 2012-06-29 EP EP12803858.5A patent/EP2727002B1/en active Active
- 2012-06-29 WO PCT/US2012/044841 patent/WO2013003684A1/en active Application Filing
-
2014
- 2014-04-21 US US14/257,696 patent/US9886257B1/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001090843A2 (en) * | 2000-05-20 | 2001-11-29 | Equipe Communications Corporation | A network device for supporting multiple upper layer network protocols over a single network connection |
US20020169827A1 (en) * | 2001-01-29 | 2002-11-14 | Ulrich Thomas R. | Hot adding file system processors |
CN1722107A (zh) * | 2004-07-15 | 2006-01-18 | 株式会社日立制作所 | 计算机***以及存储装置***的迁移方法 |
WO2011058821A1 (ja) * | 2009-11-11 | 2011-05-19 | 日本電気株式会社 | ストレージシステム、ストレージプログラム更新方法、及びプログラム |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105376269A (zh) * | 2014-08-11 | 2016-03-02 | 中国电信股份有限公司 | 虚拟机存储***及其实现方法和装置 |
CN105376269B (zh) * | 2014-08-11 | 2019-11-26 | 中国电信股份有限公司 | 虚拟机存储***及其实现方法和装置 |
CN104463014B (zh) * | 2014-12-10 | 2017-06-09 | 上海爱数信息技术股份有限公司 | 一种基于快照的oracle数据库保护方法 |
CN104463014A (zh) * | 2014-12-10 | 2015-03-25 | 上海爱数软件有限公司 | 一种基于快照的oracle数据库保护方法 |
CN104516687A (zh) * | 2014-12-22 | 2015-04-15 | 中国科学院信息工程研究所 | 一种Linux块设备的Windows远程映射方法 |
CN105988866A (zh) * | 2015-03-17 | 2016-10-05 | 佳能株式会社 | 信息处理装置及其控制方法 |
CN104809025B (zh) * | 2015-04-29 | 2018-06-22 | 北京奇艺世纪科技有限公司 | 一种项目上线方法及装置 |
CN104809025A (zh) * | 2015-04-29 | 2015-07-29 | 北京奇艺世纪科技有限公司 | 一种项目上线方法及装置 |
CN107851127A (zh) * | 2015-07-28 | 2018-03-27 | 华为技术有限公司 | 利用不同数据存储器类型来存储主用和复制数据库目录的装置和方法 |
CN107851127B (zh) * | 2015-07-28 | 2021-09-21 | 华为技术有限公司 | 利用不同数据存储器类型来存储主用和复制数据库目录的装置和方法 |
CN105791005A (zh) * | 2016-02-25 | 2016-07-20 | 深圳市共进电子股份有限公司 | 基于tcp连接实现远程运维管理的方法和装置 |
CN107402800B (zh) * | 2016-03-18 | 2020-11-13 | 阿里巴巴集团控股有限公司 | 一种更新容器守护进程的方法和设备 |
CN107402800A (zh) * | 2016-03-18 | 2017-11-28 | 阿里巴巴集团控股有限公司 | 一种更新容器守护进程的方法和设备 |
CN109478151A (zh) * | 2016-06-29 | 2019-03-15 | 亚马逊技术有限公司 | 网络可访问数据卷修改 |
CN109478151B (zh) * | 2016-06-29 | 2022-03-29 | 亚马逊技术有限公司 | 网络可访问数据卷修改 |
CN109005179A (zh) * | 2018-08-10 | 2018-12-14 | 常州中价之星软件技术有限公司 | 基于端口控制的网络安全隧道建立方法 |
CN109005179B (zh) * | 2018-08-10 | 2020-11-06 | 常州中价之星软件技术有限公司 | 基于端口控制的网络安全隧道建立方法 |
CN109491698A (zh) * | 2018-12-29 | 2019-03-19 | 武汉思普崚技术有限公司 | 基于热补丁的***更新方法及装置 |
CN111464622A (zh) * | 2020-03-30 | 2020-07-28 | 星辰天合(北京)数据科技有限公司 | 分布式存储***中的卷映射处理方法及装置 |
CN111522566A (zh) * | 2020-04-23 | 2020-08-11 | Oppo(重庆)智能科技有限公司 | 一种***升级方法、终端及存储介质 |
CN111522566B (zh) * | 2020-04-23 | 2023-08-01 | Oppo(重庆)智能科技有限公司 | 一种***升级方法、终端及存储介质 |
CN112380034A (zh) * | 2020-11-18 | 2021-02-19 | 浙江工业大学 | 一种嵌入式设备远程实验方法 |
CN112380034B (zh) * | 2020-11-18 | 2024-04-09 | 浙江工业大学 | 一种嵌入式设备远程实验方法 |
CN113347250A (zh) * | 2021-05-31 | 2021-09-03 | 中国工商银行股份有限公司 | 数据访问方法、数据访问装置、电子设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103765406B (zh) | 2016-08-17 |
CA2840573A1 (en) | 2013-01-03 |
CA2840573C (en) | 2017-12-05 |
EP2727002A1 (en) | 2014-05-07 |
JP5716134B2 (ja) | 2015-05-13 |
US8706834B2 (en) | 2014-04-22 |
US20130007183A1 (en) | 2013-01-03 |
WO2013003684A1 (en) | 2013-01-03 |
JP2014518426A (ja) | 2014-07-28 |
US9886257B1 (en) | 2018-02-06 |
EP2727002B1 (en) | 2018-04-18 |
EP2727002A4 (en) | 2015-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103765406B (zh) | 用于远程更新执行进程的方法和装置 | |
CN103930879B (zh) | 投影存储网关 | |
US11816003B2 (en) | Methods for securely facilitating data protection workflows and devices thereof | |
CN103748548B (zh) | 用于激活远程服务提供商的网关的设备和方法 | |
US10992521B2 (en) | Remote storage gateway shadow or cache configuration | |
US8090917B2 (en) | Managing storage and migration of backup data | |
JP5315460B1 (ja) | ファイル管理システム及びファイル管理方法 | |
CN105339903B (zh) | 恢复文件***对象的方法和*** | |
US8639921B1 (en) | Storage gateway security model | |
US10754813B1 (en) | Methods and apparatus for block storage I/O operations in a storage gateway | |
JP2020017821A (ja) | 外部情報受配信装置、データ送信方法、及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |