具体实施方式
如本领域技术人员知道的,本发明的各方面可以体现为系统、方法或计算机程序产品。因此,本发明的各方面可采用完全硬件实施例、完全软件实施例(包含固件、驻留软件、微代码等)或软件和硬件方面的结合的形式,它们通常可都被称为“电路”、“模块”或“系统”。另外,本发明的各方面可采用计算机程序产品的形式,其具体化在其上具有计算机可读程序代码的一个或多个计算机可读介质中。
可以利用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外或半导体系统、装置或设备、或者前面所述的任何适当组合。计算机可读存储介质的更具体的例子(非穷举列表)可包括如下介质:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存储存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑型只读存储器(CD-ROM)、光存储装置、磁存储装置、或前面所述的任何适当组合。在本文的上下文中,计算机可读存储介质可以是任何有形介质,它可包含或存储由指令执行系统、装置或设备使用或与其一起使用的程序。
计算机可读信号介质可包括例如以基带或作为载波的一部分的传播数据信号,在其中包含计算机可读程序代码。这种传播信号可采用多种形式,包括但不限于电磁、光或其任意组合。计算机可读信号介质可以是任何不是计算机可读存储介质但可通信、传播或传输由指令执行系统、装置或设备使用或与其一起使用的程序的计算机可读介质。
具体化在计算机可读介质上的程序代码可以使用任何适当的介质传输,包括但不限于无线、有线、光纤电缆、RF等或者前述的任何适当组合。
用于实现本发明的各方面的操作的计算机程序代码可以用一个或多个编程语言的任意组合编写,包括诸如Java、Smalltalk、C++或类似语言的面向对象的编程语言、诸如“C”编程语言或类似编程语言的传统过程编程语言。程序代码可以作为独立软件包完全在用户的计算机上执行、或者部分地在用户计算机上执行、或者部分在用户计算机上部分在远程计算机上执行或者完全在远程计算机或服务器上执行。在后者的情形下,远程计算机可以通过包括局域网(LAN)或广域网(WAN)的任何类型的网络连接到用户的计算机,或者可以进行去往外部计算机的连接(例如,使用因特网服务供应商通过因特网)。
下面参照根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图表示和/或框图描述本发明的各方面。应当知道,流程图表示和/或框图的每个方框以及流程图表示和/或框图中方框的组合可由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器以产生一种机器,以使得通过计算机或其它可编程数据处理装置的处理器执行的指令创建用于实现在流程图和/或框图的方框中指定的功能/动作。
这些计算机程序指令还可以存储在计算机可读介质中,它可以引导计算机、其它可编程数据处理装置、或其它设备以特定方式工作,以使得在计算机可读介质上存储的指令产生包括用于实现在流程图和/或框图的方框中指定的功能/动作的指令的制造品。
计算机程序指令还可以被加载到计算机、其它可编程数据处理装置或其它设备上,以使得一系列操作步骤在计算机、其它可编程装置或其它设备上执行以产生计算机实现的过程,以使得在计算机或其它可编程装置上执行的指令提供用于实现在流程图和/或框图的方框中指定的功能/动作的过程。
首先应当理解,尽管本公开包括关于云计算的详细描述,但其中记载的技术方案的实现却不限于云计算环境,而是可以结合现在已知或以后开发的任何其它类型的计算环境而实现,包括例如在网络中的节点群的分布式环境,其中一个节点代表一个独立的操作系统。
云计算是一种服务交付模式,用于对共享的可配置计算资源池进行方便、按需的网络访问。可配置计算资源是能够以最小的管理成本或与服务提供者进行最少的交互就能快速部署和释放的资源,例如可以是网络、网络带宽、服务器、处理、内存、存储、应用、虚拟机和服务。这种云模式可以包括至少五个特征、至少三个服务模型和至少四个部署模型。
特征包括:
按需自助式服务:云的消费者在无需与服务提供者进行人为交互的情况下能够单方面自动地按需部署诸如服务器时间和网络存储等的计算能力。
广泛的网络接入:计算能力可以通过标准机制在网络上获取,这种标准机制促进了通过不同种类的瘦客户机平台或厚客户机平台(例如移动电话、膝上型电脑、个人数字助理PDA)对云的使用。
资源池:提供者的计算资源被归入资源池并通过多租户(multi-tenant)模式服务于多重消费者,其中按需将不同的实体资源和虚拟资源动态地分配和再分配。一般情况下,消费者不能控制或甚至并不知晓所提供的资源的确切位置,但可以在较高抽象程度上指定位置(例如国家、州或数据中心),因此具有位置无关性。
迅速弹性:能够迅速、有弹性地(有时是自动地)部署计算能力,以实现快速扩展,并且能迅速释放来快速缩小。在消费者看来,用于部署的可用计算能力往往显得是无限的,并能在任意时候都能获取任意数量的计算能力。
可测量的服务:云系统通过利用适于服务类型(例如存储、处理、带宽和活跃用户帐号)的某种抽象程度的计量能力,自动地控制和优化资源效用。可以监测、控制和报告资源使用情况,为服务提供者和消费者双方提供透明度。
服务模型如下:
软件即服务(SaaS):向消费者提供的能力是使用提供者在云基础架构上运行的应用。可以通过诸如网络浏览器的瘦客户机接口(例如基于网络的电子邮件)从各种客户机设备访问应用。除了有限的特定于用户的应用配置设置外,消费者既不管理也不控制包括网络、服务器、操作系统、存储、乃至单个应用能力等的底层云基础架构。
平台即服务(PaaS):向消费者提供的能力是在云基础架构上部署消费者创建或获得的应用,这些应用利用提供者支持的程序设计语言和工具创建。消费者既不管理也不控制包括网络、服务器、操作系统或存储的底层云基础架构,但对其部署的应用具有控制权,对应用托管环境配置可能也具有控制权。
基础架构即服务(IaaS):向消费者提供的能力是消费者能够在其中部署并运行包括操作系统和应用的任意软件的处理、存储、网络和其他基础计算资源。消费者既不管理也不控制底层的云基础架构,但是对操作系统、存储和其部署的应用具有控制权,对选择的网络组件(例如主机防火墙)可能具有有限的控制权。
部署模型如下:
私有云:云基础架构单独为某个组织运行。云基础架构可以由该组织或第三方管理并且可以存在于该组织内部或外部。
共同体云:云基础架构被若干组织共享并支持有共同利害关系(例如任务使命、安全要求、政策和合规考虑)的特定共同体。共同体云可以由共同体内的多个组织或第三方管理并且可以存在于该共同体内部或外部。
公共云:云基础架构向公众或大型产业群提供并由出售云服务的组织拥有。
混合云:云基础架构由两个或更多部署模型的云(私有云、共同体云或公共云)组成,这些云依然是独特的实体,但是通过使数据和应用能够移植的标准化技术或私有技术(例如用于云之间的负载平衡的云突发流量分担技术)绑定在一起。
云计算环境是面向服务的,特点集中在无状态性、低耦合性、模块性和语意的互操作性。云计算的核心是包含互连节点网络的基础架构。
现在参考图1,其中显示了云计算节点的一个例子。图1显示的云计算节点10仅仅是适合的云计算节点的一个示例,不应对本发明实施例的功能和使用范围带来任何限制。总之,云计算节点10能够被用来实现和/或执行以上所述的任何功能。
云计算节点10具有计算机系统/服务器12,其可与众多其它通用或专用计算系统环境或配置一起操作。众所周知,适于与计算机系统/服务器12一起操作的计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任意系统的分布式云计算技术环境,等等。
计算机系统/服务器12可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括执行特定的任务或者实现特定的抽象数据类型的例程、程序、目标程序、组件、逻辑、数据结构等。计算机系统/服务器12可以在通过通信网络链接的远程处理设备执行任务的分布式云计算环境中实施。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
如图1所示,云计算节点10中的计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是能够被计算机系统/服务器12访问的任意可获得的介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失磁性及/或固态介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。尽管没有示出,可以提供可移除的或者不可移除的固态存储系统,这些固态存储系统可以采用例如闪存或其它半导体存储。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。程序模块42可以存储在操作系统的内核中。
计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,其它硬件和/或软件模块可以与计算机系统/服务器12一起操作,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
现在参考图2,其中显示了示例性的云计算环境50。如图所示,云计算环境50包括云计算消费者使用的本地计算设备可以与其相通信的一个或者多个云计算节点10,本地计算设备例如可以是个人数字助理(PDA)或移动电话54A,台式电脑54B、笔记本电脑54C和/或汽车计算机系统54N。云计算节点10之间可以相互通信。可以在包括但不限于如上所述的私有云、共同体云、公共云或混合云或者它们的组合的一个或者多个网络中将云计算节点10进行物理或虚拟分组(图中未显示)。这样,云的消费者无需在本地计算设备上维护资源就能请求云计算环境50提供的基础架构即服务(IaaS)、平台即服务(PaaS)和/或软件即服务(SaaS)。应当理解,图2显示的各类计算设备54A-N仅仅是示意性的,云计算节点10以及云计算环境50可以与任意类型网络上和/或网络可寻址连接的任意类型的计算设备(例如使用网络浏览器)通信。在图2及其它地方,“A-N”可以表示不确定的范围,其中“A”表示第一项,并且“N”表示第二、第三或者后续的项。
现在参考图3,其中显示了云计算环境50(图2)提供的一组功能抽象层。首先应当理解,图3所示的组件、层以及功能都仅仅是示意性的,本发明的实施例不限于此。如图3所示,提供下列层和对应功能:
硬件和软件层60包括硬件和软件组件。硬件组件的例子包括:主机,例如系统;基于RISC(精简指令集计算机)体系结构的服务器,例如IBM系统;IBM系统;IBM系统;存储设备;网络和网络组件。软件组件的例子包括:网络应用服务器软件,例如IBM应用服务器软件;数据库软件,例如IBM数据库软件。(IBM,zSeries,pSeries,xSeries,BladeCenter,WebSphere以及DB2是国际商业机器公司在全世界各地的注册商标)。
虚拟层62提供一个抽象层,该层可以提供下列虚拟实体的例子:虚拟服务器、虚拟存储、虚拟网络(包括虚拟私有网络)、虚拟应用和操作系统,以及虚拟客户端。
在一个示例中,管理层64可以提供下述功能:资源供应功能:提供用于在云计算环境中执行任务的计算资源和其它资源的动态获取;计量和定价功能:在云计算环境内对资源的使用进行成本跟踪,并为此提供帐单和发票。在一个例子中,该资源可以包括应用软件许可。安全功能:为云的消费者和任务提供身份认证,如登陆访问,为数据和其它资源提供保护。用户门户功能:为消费者和系统管理员提供对云计算环境的访问。服务水平管理功能:提供云计算资源的分配和管理,以满足必需的服务水平。服务水平协议(SLA)计划和履行功能:为根据SLA预测的对云计算资源未来需求提供预先安排和供应。
工作负载层66提供云计算环境可能实现的功能的示例。在该层中,可提供的工作负载或功能的示例包括:地图绘制与导航;软件开发及生命周期管理;虚拟教室的教学提供;数据分析处理;交易处理;以及移动桌面。
如上所述,在此公开了一种用于安全访问共享存储(诸如由云计算环境50提供的存储)的系统、方法和计算机程序产品。
在云环境50中,多个用户可共享资源。例如,提供基于云的服务的服务供应商可向多个用户——即,它的客户——提供通过公共底层基础设施实现的硬件和/或软件资源。服务供应商的客户可以是无关的人、企业、政府、组织和其它实体。由服务供应商处理和/或存储的客户数据可以是私有或专用的。保护这些数据的安全和私密性是提供云服务的重要方面。因此,云服务供应商寻求将它的客户彼此相隔离,尽管它们使用相同的底层处理、存储器和存储资源。该隔离应当足够强大以保护不受到无意和有意的入侵。
参照图4,用于访问所存储的信息70或系统70的计算机存储系统可包括一个或多个存储系统72、一个或多个虚拟存储实例80、一个或多个第一网络90和一个或多个第二网络92。系统70可以进一步包括一个或多个虚拟机实例100。系统70可以是云计算环境50的一个例子,并可以是硬件和软件层60和/或虚拟层62的一个例子。系统70可以包括其它可选的或附加的单元,并可以忽略一个或多个单元。
存储系统72可包括一个或多个存储装置74,其是提供实际的硬件级数据存储的子系统。存储系统72还可以包括其它硬件和/或软件单元,例如控制、管理和/或支持装置74的子系统。例如,存储系统72可包括用于在装置74间平衡计算和/或网络负载的子系统、管理功率消耗或环境因素的子系统等等。系统70可例如通过第一网络90与系统70的某些其它单元进行通信。系统72可以是存储设备(被示为包括在图3的硬件和软件层60中)和/或虚拟存储(被示为包括在图3的虚拟层62中)的例子。系统72可以提供用于提供远程存储服务(例如基于云的存储服务)的装置。系统72的全部或一部分可驻留在被选择以提供物理的(锁和钥匙)安全的设施中,例如数据中心。
存储装置74可以是任何提供数据的永久存储的装置。装置74可包括一个或多个数据存储驱动器,其是提供实际的比特级、块级和文件级存储的较低层组件。数据存储驱动器的例子包括但不限于硬盘驱动器、固态驱动器、磁带存储装置和/或光学存储装置。例如,存储装置74可以是或者包括一个或多个文件服务器、直接附加存储(DAS)装置、存储区域网(SAN)装置、和/或附加存储(NAS)装置,其每一个都包含一个或多个数据存储驱动器。存储装置74的例子包括的扩展网络附加存储(SONAS)装置、IBM XIV存储系统装置、和IBMV7000装置。存储装置74可包括或实现诸如逻辑盘、卷、分区、文件系统、目录的逻辑或组织特征、数据文件和/或数据块。存储装置74可以是或者可包括一个或多个数据存储驱动器和/或一个或多个驱动器阵列。驱动器阵列的例子是独立冗余磁盘阵列(RAID),其将多个逻辑或物理驱动器组合成单个逻辑驱动器以例如降低访问时间和/或增加可靠性。
存储系统72可以利用物理存储装置实现逻辑存储装置。具有四个分区的物理存储装置例如可以用作四个逻辑存储装置,每一个对应一个分区。在本公开中,短语“存储装置”包括物理和逻辑存储装置两者。因此,存储装置74可以是物理装置或逻辑装置,例如分区或逻辑驱动器。
存储信息76可以是存储在一个或多个存储装置74上的任何数据。例如,存储信息76可包括在计算机存储系统72上存储的单个文件或块;或者文件或块的集合;或者文件系统的一部分,例如一个或多个目录;或者逻辑磁盘或磁盘阵列;或者分区、片或卷,例如与系统70的特定所有者(租户)、工作组(子租户)和/或用户(来宾)相关联的分区。因此,存储信息76可以不仅包括这样的数据,还可以包括它的结构、存储单元和元数据。例如,存储信息76可包括与特定租户相关联的一个或多个文件系统、文件系统中的数据文件、以及诸如文件和目录结构、所有权和访问控制(权限)的有关分层结构。简而言之,存储信息76可以是在存储系统72中存储的并通过某些准则选择的任何数量的组织数据的镜像,例如,所有属于系统70的特定租户、子租户或来宾的数据。存储信息76的实例可以跨越多个物理存储装置74。例如,存储系统70可以在超过一个的存储装置74上向特定租户、子租户或来宾分配诸如逻辑磁盘的存储空间。该分配可以是动态的,并可随时间变化。因此,存储信息76可以是当前存储在一个或多个装置74上的数据的一部分或区块,其在逻辑上与特定租户、子租户或来宾相关联并被组织在诸如文件系统的结构中。例如当用户(来宾)改变文件或目录时,数据的内容的变化最终被保存为对应的存储信息76的变化。
存储信息76可包括单元、子域(subdivision)、或诸如数据文件78和/或数据文件结构77的结构。数据文件78是用于在存储装置74的文件系统中存储数据并用于使数据可由程序和系统使用的资源。数据文件78可具有标识文件名、相关用户名(例如,来宾标识符)、相关组名(例如,租户标识符)和其它属性。本公开中的“文件”通常是指可被存储的数据并包括块级存储、文件级存储和流数据。
数据文件结构77可以是一个或多个数据文件78的关联。例如,存储信息76可包括在提供文件夹或目录的分层系统的文件系统中关联的数据文件78。目录可包含一个或多个数据文件78和/或子目录,其本身可包含数据文件和/或子目录。该分层结构是数据文件结构77的一个例子。更一般来,数据文件结构77可以是任何结构的、逻辑的或组织的系统,诸如在存储信息76中包括或实现的一个或多个分区、卷、片、文件系统或者目录。
存储信息76的实例可以作为一个或多个存储文件95存储在存储系统72上。每个存储文件95可代表存储信息76的完整实例或者存储信息76的实例的逻辑分块。例如,存储系统76可包括独立冗余磁盘阵列(RAID)。RAID可用作逻辑存储装置,并可以若干配置(级别)中的一个将数据分布在磁盘阵列上,以提高速度(例如,通过到多个磁盘的并行I/O)、可靠性(例如,通过冗余和/或奇偶校验)或两者。将数据分割在多个磁盘上以用于并行访问可被称为“分条(striping)”。分条将数据分割成逻辑条,例如,阵列中每个磁盘一个条。存储信息76的实例可被分割成条,例如以加快创建RAID以存储存储信息。每个条可以是存储文件95的例子。条状存储文件95可映射存储系统72中实际的逻辑或物理RAID,或者可另外选择。
存储系统72和/或其任何存储装置74可以是共享资源。例如,通过存储系统72提供基于云的存储的服务供应商可具有多个用户。每个用户可具有该服务供应商的账户,并可通过该账户来存储、获取、保存和另外操作系统72上的数据。托管多个用户的服务供应商可以将系统72的一部分分配给每个用户。由不同用户存储的数据可以驻留在同一个系统72上,并可驻留在同一个存储装置74上。每个用户可将他或她的数据看作是私有和机密的。因此,服务供应商可寻求提供用户之间的隔离。该隔离可通过对每个用户授权独占地访问该用户所拥有的私有数据以及通过拒绝任何用户访问不同用户所拥有的私有数据来保护相互的隐私和安全。系统72可以被配置为允许每个用户只访问授权数据并防止对未授权数据的无意或有意入侵。在传统的多用户系统中保护隐私的机制包括分区、文件系统、权限系统,并在物理上将一个用户的存储与所有其它用户的存储分离。例如,将第一存储装置74专用于第一用户并将第二存储装置74专用于第二用户在物理上将第一用户的存储与第二用户的存储相隔离。传统的共享存储并不提供每个用户与底层存储装置之间的物理分离,造成一个用户可在共享存储系统72内入侵另一个用户的风险。
系统70的服务供应商或其它运营商可以定义用户间的关联。个体用户有时可被称为来宾(guest),而用户组或联合可被称为租户(tenant)。来宾可以是被授权访问系统70的人或实体;或者来宾可以是被授权访问系统70的服务、进程、应用或其它自动功能。来宾可以有相关的账户、标识符、名称、密码、权限和其它属性。租户可以是任何自然、逻辑、或任意组的来宾,并可具有相关的账户、标识符、名称、子域(子租户)和其它属性。例如,租户可以是为管理方便而由运营商定义的命名组。对于另一个例子,租户可对应于自然单元,诸如从系统70获取存储服务的个人、机构、企业、组织或政府。例如,服务供应商可以具有多个来宾,每个企业具有多个雇员。每个企业可具有相关联的租户账户,并且它的每个雇员可以具有与该租户账户相关联的来宾账户。每个租户可例如通过允许或拒绝所选择的来宾访问所选择的数据文件78和/或数据文件结构77来控制或管理它的相关联的来宾账户。例如,企业(租户)可以授权它的所有雇员(来宾)有权读取并写入由该企业拥有的所有数据;或者企业可以限制某些雇员对某些数据的访问。个体用户可被授权访问超过一个的来宾账户,而来宾账户可以具有超过一个的授权用户。词语“所有者”有时可以是指租户或者来宾,例如,在应用于其中一方或双方的上下文中。
系统70的特定资源可以与特定租户和/或来宾相关联。从系统的角度,特定租户可被看作是与该租户相关联的资源的集合。例如,系统70可静态或动态地向特定租户分配虚拟存储(在此有时简写为“VS”)实例80、虚拟机(在此有时简写为“VM”)实例100、和/或特定存储装置74的部分。
虚拟化是允许第一计算机系统模拟第二计算机系统的技术。第一计算机系统(被称为虚拟主机)是提供诸如处理功率、存储器和对存储的访问的资源的实际或物理的机器。第二计算机系统被主机模拟并在主机上执行,被称为虚拟机或VM。VM可运行操作系统和软件应用,如同它是实际的机器一样。当VM请求硬件资源时,主机拦截并满足该请求。主机可并发运行多个VM,每个VM可以在能力和配置方面不同。例如,一个VM可以模仿计算机的第一操作系统,而第二VM可以模仿计算机的第二(相同或不同的)操作系统。VM可以模拟几乎任何类型的计算机系统或设备,包括通用计算机和诸如存储系统或装置的专用计算机系统。
虚拟主机可以运行称为管理程序的软件层以支持一个或多个VM。管理程序拦截来自每个VM的对于处理器、存储器、存储和其它资源的请求,并通过本地主机资源满足这些请求。管理程序可以在操作系统上运行或者直接在底层主机硬件上运行。向较高级软件提供硬件资源的较低级软件有时可被称为内核(kernel)。向VM提供资源而不依赖于明确的中间操作系统的管理程序可以被称为基于内核的管理程序。运行至少基于内核的管理程序和一个或多个VM的主机可被称为基于内核的虚拟机环境。
在虚拟主机上运行的VM并不直接访问主机资源。相反,VM仅可通过管理程序访问主机资源,因此,这可将每个VM与其它托管VM隔离和/或将在系统70中选择的组件彼此隔离(例如,将网络90与网络92隔离)。实际上,管理程序可以对每个托管VM创建私有的受保护的操作空间,并将每个VM与同一主机上的其它VM隔离。该受保护的空间有时可被称为“沙箱(sandbox)”。沙箱对沙箱内部的资源创建安全和隐私。例如,如果VM正在运行应用程序,那么分配给该应用的处理器和存储器享有免被其它VM入侵的保护。例如,如果VM和它的应用依赖于传统的共享物理存储,则存储在位于VM沙箱外部的用于执行该应用的物理存储装置上发生。在这个传统的例子中,即使正在执行的应用受到保护,底层物理数据存储也不受到保护。
VS实例80可以是存储装置74的虚拟实现,并可包括诸如网络接口的支持功能。VS实例80可包括一个或多个虚拟存储磁盘或磁盘阵列(例如,在后面描述的逻辑存储系统或LSS实例96)。虚拟磁盘阵列可以用作虚拟RAID设备。用作存储装置的VS实例80可以访问虚拟磁盘或磁盘阵列,以例如打开、读取和写数据文件,就像虚拟存储是实际的物理存储一样。实际上,管理程序85可通过将这些访问请求传送到存储系统72上的实际存储来满足这些访问请求。VS实例80的指向(寻址到)虚拟磁盘或磁盘阵列的数据读取和写入可以通过管理程序85基本上实时地传送到存储系统72,通过管理程序的间接引用。在主机上的管理程序85上的VM实例80可以与管理程序85进行通信,但不能直接与存储系统72进行通信。管理程序85可以有效地将存储系统72与第二网络92相隔离。
虚拟存储可以反映对应的实际存储的特征和属性。例如,存储信息76的实例可包括数据文件结构77、数据文件78、租户和/或来宾关联和其它属性。数据文件实例(也称为数据文件结构实例)87(虚拟存储)可对应于数据文件结构77(实际存储),数据文件实例(也称为数据文件结构实例)88(虚拟存储)可对应于数据文件78(实际存储)。当向VS实例80导出存储信息76的实例时,每个数据文件结构77可因此产生对应的数据文件结构实例87,每个数据文件78可产生对应的数据文件实例88。因此,导出到VS实例80的存储信息76的实例可以保存它的数据、结构、元数据和租户-来宾所有权。实际上而非虚拟地,数据文件结构实例87和数据文件实例88可以被看作是经过管理程序85传递到存储系统72中的对应存储项目的引用。
在实施例中,特定VS实例80可以关联于和/或专用于特定来宾。在实施例中,特定VS实例80可以关联于和/或专用于特定租户,并以文件系统被合作者共享的方式由该租户的一个或多个来宾共享。例如,VS实例80可以是与特定租户相关联的并可例如通过在VS实例80中实现的NFS或CIFS文件系统能够被该租户的所有来宾或所选择的来宾访问的所有数据或者所选择的数据的虚拟。
实现VS实例80的VM可以用作沙箱,其占用它自己的受保护的操作空间。管理程序85有效地授权每个VS实例80独占地访问它自己的资源,拒绝每个VS实例访问与其它VS实例相关联的资源,并保护每个VS实例不受其它VS实例的入侵。因此,向VS实例80导出存储信息76的实例在VS主机82上保护该数据不受与在同一个VS主机82上运行的其它VS实例相关联的其它来宾的入侵。例如,与第一来宾相关联的第一VS实例不能访问与第二来宾相关联的第二VS实例,因为两个VS实例都是由管理程序85提供沙箱的。
向VS实例80导出存储信息76的实例还将VS实例80和它的相关联的来宾与存储系统72隔离。管理程序85可将VS实例80与第一网络90和/或存储系统72隔离。每个VS实例80通过管理程序85获取存储服务,而不是经由直接访问后端存储系统72。如果系统70包括源自对应的存储信息76的实例的多个VS实例80,并且每个具有相关联的所有者,则每个VS实例80与底层存储系统72相隔离。每一个都与系统72隔离的多个所有者彼此相互隔离。多个所有者在数据存储方面享有安全性和隐私。
VS实例80可以是存储装置74的模拟,可包括一个或多个虚拟数据存储磁盘或磁盘阵列。通过向VS实例80输出存储文件95而获取的虚拟磁盘可以被称为存储文件实例96。作为功能性虚拟存储的包括一个或多个VS文件实例96的逻辑结构可被称为LSS实例98。LSS实例98可以被认为是由管理程序85抽象成存储信息76的实例的逻辑窗口,通过它,VS实例80例如代表一个或多个连接的VM实例100获取实际的存储。
LSS实例98可以用诸如NFS或CIFS的文件系统来格式化。LSS实例98的文件系统可以不同于存储系统72的本地文件系统。例如,LSS实例文件系统可由租户选择,以例如通过VS实例80和它的LSS实例98在租户的来宾之间加快文件共享。
包括至少两个VS文件实例96的LSS实例98可以被配置为RAID。例如,存储信息76的实例中的数据可以被分成条,而每一条可以被分配给存储文件95。分别向VS实例80导出每个存储文件95可生成对应的VS文件实例96的集合。包括VS文件实例96的集合的LSS实例98可以根据底层分条而被配置为RAID,并可用文件系统进行格式化。LSS实例96可对应于存储系统72中的实际RAID,或者可独立于实际存储的结构来创建。
虚拟存储主机82可以是支持系统70中的一个或多个VS实例80的虚拟化主机。在图4的例子中,主机82可运行管理程序85,其支持被表示为80A-N的多个VS实例。尽管图4示出两个VS实例,但应当理解,主机82可支持无限数量的VS实例。VS主机82可包括与管理程序85和VS实例80有关或无关的其它硬件和/或软件。例如,主机82可运行软件以允许管理或协调系统70内的VS主机82。VS主机82可以是云计算节点10或计算机系统/服务器12的例子。
虚拟存储系统84可包括一个或多个VS主机82。系统70可利用多个VS主机82,以例如支持分发给多个主机82的多个VS实例80。VS系统84可被看作是系统70的支持和/或协调一个或多个主机82的子系统。图4示出只有一个主机82的VS系统84;然而应当理解,VS系统84可包括无限数量的主机82。VS系统84可以包括其它硬件和/或软件。例如,系统84可运行子系统以例如通过在可用主机82之间平衡计算和/或网络负载来协调VS系统84的主机82。
第一网络90可以是计算机网络,其提供从存储系统72到一个或多个VS系统84并由此到VS主机82并由此到一个或多个VS实例80的通信链路。网络90可以包含未在图4中示出的硬件和/或软件组件以支持在存储系统72与一个或多个VS系统84及其主机82之间数据在任一方向上的传输。网络90可以利用各种介质、导体、设备和协议。例如,网络90可以利用一个或多个光纤导体和网络文件系统(NFS)协议。网络90可以是私有网络,例如,由系统70的运营商维护并通过租户和其它方与直接连接隔离的网络。
第一网络90通过连接存储系统72和VS系统84来提供将每个存储信息76的实例传送给对应的VS实例80的方式。在实施例中,该通信可以利用文件系统导出——即,允许网络设备与其它网络设备共享文件或文件系统的机制——发生。例如,第一网络可以利用NFS协议,其提供文件系统导出特征。存储信息76可以被存储为一个或多个存储文件95,到存储文件95的映射可以从诸如逻辑磁盘或磁盘阵列的系统72的逻辑结构中导出。因此,系统72可以经由NFS出口而向VS实例80导出存储实例76的每个存储文件95。所导出的存储文件可以穿过管理程序85到达对应的VS实例80,并可作为LSS实例98的对应VS文件实例96出现。包含两个或多个VS文件实例的LSS实例98可能被配置为虚拟RAID。
例如,参照图4,存储系统72可以通过NFS出口86A将存储信息76的实例导出到VS实例80A,作为单个存储文件95。在经过管理程序85传递到VS实例80A后,存储文件95可出现在VS实例80A中,作为LSS实例98A内的VS文件实例96A。LSS实例98A可以将存储信息的数据文件结构77保存为数据文件结构实例87,并将数据文件78保存为数据文件实例88。对于另一个例子,存储系统72可以将存储信息76的实例导出到VS实例80N,作为存储文件的集合。例如,存储信息76可采用逻辑或物理磁盘阵列的形式驻留在存储系统72上。因此,存储系统72可通过一组NFS出口86N并通过对应的存储文件的集合将阵列中的一组磁盘导出到VS实例80N。在传递经过管理程序后,该存储文件的集合可以作为LSS实例98N内的存储器文件实例96N的集合出现。例如,通过在准备存储文件95时对数据分条,阵列可被格式化为RAID设备。为了简化,图4省略了LSS实例98N内的数据文件实例和数据文件结构实例,但应当理解,这些特征可以出现在LSS实例98N内。
LSS实例98N的结构和格式可以不同于对应的存储信息96。例如,在存储系统72中表示为在给定文件系统中格式化的单个逻辑磁盘的存储信息可以在VS实例80中被表示为在不同的文件系统中格式化的虚拟RAID设备。
VS实例80可以将LSS实例当作存储装置,以例如读取或写入文件。存储资源请求以与处理器资源请求从VM传递到主机CPU的相同方式从VS实例80(VM)经过管理程序85传递到存储系统72。LSS实例98可提供基本上实时的从VS实例80到存储系统72的对应的存储信息76的传递。VS实例80可通过引用由LSS实例98表示的存储信息76的镜像或代理来间接地从存储系统72的对应的实际存储信息76中读取数据或向其写入数据。给定VS实例80的访问的范围限于所导出的存储信息72的范围。如果给定VS实例80和对应的存储信息和特定租户相关联,则该租户可“看见”它自己的数据,但不能“看见”共享同一个存储系统72的其它租户的数据。导出过程结合VS实例80的虚拟化将每个租户隔离到存储系统72的特定区域,保护租户彼此的隐私和安全。
在另一个实施例中,存储系统72与VS实例之间的通信可以利用逻辑单元号或LUN,其是用于识别例如SAN存储装置中通过诸如SCSI和光纤信道的协议寻址的存储装置的编号。例如,由存储系统72通过网络90传递到VS主机82的单个LUN可作为块设备经过管理程序85传递到VS实例80,该块设备可作为LSS实例98的VS文件实例96出现在VS实例80内。然后,LSS实例98可以用方便相关联的租户的文件系统格式化。对于另一个例子,一组LUN可以从存储系统72传递到VS实例80,并作为包括对应的VS文件实例96的集合的LSS实例98出现。LSS实例98可以适合于相关联的租户的方式来配置和格式化。除了用于创建LSS实例98的方法外,通过LUN与存储系统72通信的VS实例80类似于通过NFS出口进行通信的VS实例80。
虚拟机实例80可以是支持由系统70的来宾用户实行的会话的VM。例如,租户可以对授权用户建立来宾账户。每个账户可以具有诸如用户名和密码的证书,允许来宾通过在网站上的表中输入证书来建立与系统70的授权连接。当来宾登录时,系统70可以分配或创建VM实例100(来宾会话),来宾可通过它从系统70获取服务。例如,对于图像存储服务,来宾的VM实例100可以提供允许来宾向存储系统72上传或从存储系统72下载图像的特征。通过VM实例100实现的来宾会话可以是分配给该来宾的永久进程或者是在登录时创建并在退出时注销的临时(ad hoc)进程。
来宾可利用广泛的有形装置的任何一种建立到系统70的连接,诸如个人计算机、蜂窝电话、智能电话、平板设备、个人数字助理等。由个体来宾直接操作的有形装置(未示出)可以用作厚客户机或瘦客户机。作为厚客户机,该装置可以作为基本完全自立的计算机来操作。因此,该装置可以运行操作系统和/或应用,并主要依赖系统70进行数据存储。在该上下文中,VM实例100可以用作相对简单的网关以用于访问远程的基于云的服务。
作为瘦客户机,有形装置可以作为例如支持数据输入和/或数据显示并从网络服务器获取软件服务而无需运行重要的本地应用的终端来操作。在该上下文中,VM实例100可以用作网络服务器或远程执行引擎,其可例如运行操作系统、应用等,并可另外依赖系统70进行数据存储。这些体系结构例子仅仅是说明。VM实例100是虚拟机,并因此可以代表相关的来宾模拟广泛的计算设备。VM实例100可以是云计算节点10、计算机系统/服务器12或图2的设备54A-N中的任何一个的虚拟例子。
由于VM实例100是虚拟机,因此,它可以实现在VS实例80的上下文中讨论的沙箱技术。因此,VM实例100可以将它的相关的来宾会话同与其它来宾会话相关联的其它VM实例相隔离,从而保护每个来宾彼此的安全性和隐私。用于VM实例100的沙箱的范围是维持相关联的来宾会话的计算活动。相反,用于VS实例80的沙箱的范围是通过存储系统72满足的存储有关的请求。系统70用一个VM(VM实例100)保护每个来宾的应用级安全和隐私,用第二VM(VS实例80)保护存储级的隐私和安全。因此,系统70保护整个来宾会话的隐私。
与特定来宾相关联的VM实例100可以同与同一授权来宾相关联的VS实例80进行通信。该通信允许VM实例100代表来宾获取存储资源(最终从存储系统72)。在图像存储系统中,例如,来宾可通过VM实例100会话发布上载图像文件的命令,该VM实例100接收所上载的文件并将该文件传输到相关的VS实例80,VS实例80将该文件传输给存储系统72,由存储系统72存储该来宾和/或租户的文件。该通信发生在安全的环境中,通过VM实例100与来宾隔离,并通过VS实例80与存储系统72隔离,维护了会话的隐私和安全。
VM主机102可以是适于支持一个或多个VM实例100的虚拟主机的例子。VM主机102可以运行VM管理程序105,其可支持被表示为100A-N的多个VM实例。用于VM管理程序105和管理程序85的预期软件包括K虚拟机(KVM)、VMWare和IBM Power管理程序。VM主机102可包括与VM管理程序105和VM实例100有关或无关的其它硬件和/或软件。例如,主机102可运行软件以例如通过平衡可用主机102之间的计算和/或通信负载来方便在系统70内管理主机102。主机102可以是云计算节点10或计算机系统/服务器12的例子。
图4示出了两个VM主机,其被标记为102A和102N。应当理解,系统70可包括无限数量的VM主机102。图4示出示例性的实施例,其将VM主机82和管理程序85与VM主机102和VM管理程序105隔离。在另一个实施例中,主机82和102可驻留在同一个物理机器上,并可由同一个管理程序支持。图4是系统70的通用功能或概念表示,其通过其它体系结构实现相同的功能特征。
VM主机系统104可包括一个或多个VM主机102,以例如支持分布到多个VM主机102的多个VM实例100。VM系统104可以被看作是系统70的协调一个或多个主机102的子系统。图4示出系统104具有两个VM主机102A和102N。应当理解,系统104可以包括无限数量的VM主机102。系统104可包括其它硬件和/或软件。例如,系统104可运行例如通过在可用主机104之间平衡计算和/或网络负载来协调系统104的VM主机102的子系统。
第二网络92可以是物理或虚拟计算机网络,其提供从VM主机系统104到VS系统84的通信链路。网络92允许VM实例100向它的相关联的VS实例80传输数据以及从那里接收数据。网络92可包括硬件和/或软件组件(未在图4中示出)以支持数据在任一方向上的传输。网络92可利用各种介质、导体、设备和协议。例如,在一个实施例中,物理网络92可包括一个或多个光纤导体和NFS协议。在另一个实施例中,网络92可包括因特网,并可利用TCP/IP协议以例如实现虚拟专用网以将远程VM主机102连接到VS主机82。租户可例如维持内部部署(on-premises)VM主机102,并通过网络92将数据导出到外部部署(off-premises)VS主机82。
在一个实施例中,第二网络92可以是实现为VM的虚拟网络,类似于所实现的VS实例80或VM实例100。因此,虚拟网络92的一个或多个实例可在运行在主机上的管理程序上运行。在一个实施例中,虚拟网络主机可不同于VS主机82和/或VM主机102。在一个实施例中,一个主机可以支持不同类型的VM,包括VM实例84、VM实例100和虚拟网络实例92的任意组合。
在一个实施例中,第二网络92可以是虚拟局域网(VLAN)。在传统的局域网(LAN)中,网络设备位于单个广播域中,例如,以相对近的物理近距离在同一个网络交换机上。VLAN是可包括在不同广播域中(例如,在不同的交换机上)的设备的物理LAN的逻辑模拟。VLAN是逻辑定义的,而非物理定义的,因此,它所连接的设备可以是物理上远距离的。简而言之,VLAN是非本地LAN,其可例如连接驻留在物理上远距离位置的工作组的成员。实现为VLAN的网络92可以允许与特定租户相关联的VM实例从更大的距离范围或网络拓扑连接到同一个VS实例80。
第二网络92可包括超过一个的底层网络,例如,如图4所示,支持VM实例100A-C的第一VM主机102A可以通过第一个第二网络92A与第一VS实例80A进行通信;而支持VM实例100D-N的第二VM主机102N可以通过第二个第二网络92N与第二VS实例80N进行通信。底层网络92A和92N可在类型和/或协议上不同。向网络92A和92N分配VM实例可以依赖于与每个VM实例相关联的租户和/或来宾。例如,第一租户的所有通信业务可以通过指定的第二网络92A路由,而第二租户的所有业务可以通过不同的第二网络92N路由。这种租户独占的资源分配提供了租户之间的隔离。例如,将指定租户的VS实例80置于与同一租户的VM实例100相同的专用虚拟网络92上——并将其它租户排除在这些专用资源之外——提供了该租户与其它租户之间的隔离。
第二网络92通过将一个或多个VM实例100连接到VS实例80提供了将导出到VS实例80的存储信息76通过第二网络92传输到连接到VS实例80的每个VM实例100的方式。在一个实施例中,该通信可以利用文件系统导出发生。例如,第二网络92可以利用NFS协议。VS装置80可以通过NFS将它的LSS实例98导出到每个所连接的VM实例100。所导出的LSS实例98可以穿过VM管理程序105,并作为虚拟装置出现在VM实例100内。VM实例100可以作为存储装置访问虚拟装置。寻址到该驱动器的存储访问经过它传递到VS实例80并最终到达存储系统72。例如,如果指定VM实例的用户打开特定的数据文件,则文件访问请求从VM实例传送到VS实例,并最终到达存储系统72。排除网络延迟,该串联的访问可基本实时地发生。对于终端用户,所导出的文件系统可看起来对VM实例100是本地的。总之,将数据从存储系统72导出到VS实例80的过程类似于将数据从VS实例80导出到VM实例100的过程。
将一个或多个存储文件95通过NFS从存储系统72导出到VS实例100并再通过NFS从VS实例导出到VM实例的实施例有时可被称为“NFS再导出器”。在拓扑结构上,该实施例将VS实例100插入存储系统72与VM实例100之间,这两者都在NFS网络上。在该例子中,VS实例80可以用作类似防火墙的装置,其允许VM实例100上的来宾会话在私有安全的会话中访问存储系统72。
基于管理程序的VM实例100是沙箱会话。虽然多个来宾可通过公共VS实例80共享公共文件系统,但同一个VM主机102上的多个来宾彼此隔离。
虚拟存储空间实例94或VSS实例94可以是VS实例80的虚拟存储的镜像,其可通过第二网络92被VM实例100访问。例如,如果VS实例80向VM实例100导出它的虚拟存储(即,它的LSS实例98),则VSS实例94可以作为逻辑驱动器或类似结构出现。该驱动器可被VM实例100引用以访问VS实例100的虚拟存储,VM实例100可将该请求通过LSS实例98和管理程序95传送到存储系统72。VSS实例94例如可用为方便VM实例100的来宾而选择的文件系统来格式化。VSS实例94可在功能上类似于LSS实例98。也就是说,LSS实例98可以被认为是从VS实例80到存储系统72上的实际存储(存储信息的实例)或从该实际存储到VS实例80的逻辑窗口,而VSS实例94可以被认为是从VM实例100到VS实例80或从VS实例80到VM实例100的逻辑窗口。VSS实例94和LSS实例98两者都可以提供被管理程序抽象的对诸如驻留在另一个设备(逻辑的或虚拟的)上的文件系统的数据的访问。
VS实例80可以对每个所连接的VM实例100创建VSS实例94。例如,在图4中,VS实例80N具有多个所连接的VM实例100D-N和对应的一组VSS实例94N,每个VM特定的访问机制在VS实例中。VS主机或VM主机可以担任用于VSS实例的虚拟服务器。
现在再参照图5,系统70可以支持一个或多个租户120;每个租户120可包括与该租户120相关联并隶属于该租户120的一个或多个来宾122;系统70可以向租户和/或来宾分配诸如VS实例80和VM实例100的资源。在图5的示例性例子中,第一租户120A和它的相关资源用实线表示;第二租户120B和它的资源由长虚线表示,第三租户120N和它的资源用短虚线表示。在VM主机系统104中,第一VM主机102A支持用于租户120A的第一来宾的第一VM实例100A1、用于租户120B的第一来宾的第二VM实例100B1和用于租户120N的第一来宾的第三VM实例100N1。第二VM主机102B同样地支持用于租户120A的第二来宾的第一VM实例100An、用于租户120B的第二来宾的第二VM实例100B2和用于租户120N的第二来宾的第三VM实例100N2。第三VM主机102N2同样地支持用于租户120B和120N的其它来宾的其它VM实例100B3、100Bn和100Nn。
资源分配——即,特定租户和来宾到特定VM主机的映射——可以是静态或动态的。对于静态分配,预先确定的资源可专用于预先确定的租户和/或来宾。对于动态分配,资源可以基本实时地根据需要分配。例如,系统70可以在特定来宾登录时在所选择的VM主机上对该来宾创建VM实例,并可在该来宾注销时消除该VM实例。针对下一个新的VM实例选择VM主机可自动发生,例如通过选择具有最低计算和/或通信负载的VM主机。指定VM主机可以同时支持与不同租户相关联的VM实例,而指定租户可以具有在不同VM主机上运行的VM实例。租户与VM主机之间的对应关系可以随时间变化;各个VM实例可以是短暂的,仅在相关的来宾会话期间存在。图5示出了在特定时间点的典型分配的快照,以例如突出租户、来宾和资源之间的典型关系。
系统70还可代表租户120A-N分配虚拟存储资源。如图5所示,示例性的VS系统84可包括两个VS主机82A和82N,它们每一个支持一个或多个VS实例80A-N。在该例子中,租户120A对应于VS实例80A;租户120B对应于VS实例80B;租户120N对应于VS实例80N。在该例子中,VS实例80A和80B在第一VS主机82A上运行,实例80N在第二VS主机82N上运行。该VS主机分配类似于VM主机102的分配,可以是静态的或动态的。例如,系统70可以在需要时创建VS实例,例如每当租户具有至少一个活动的来宾会话时,并在不需要时消除它,以例如释放资源。
系统70可以维持各种VM实例100A1-100Nn之间经由第二网络92的网络通信。在一个实施例中,网络92可包括一个或多个VLAN,其每一个是LAN的模拟实例。系统70可以维持用于每个租户的不同的独立VLAN。例如,与VM实例100A1和100An相关联的第一租户120A具有相关联的第一VLAN,其根据每个来宾被标记为92A1和92An;第二租户120B同样具有被标记为92B1-92Bn的第二VLAN;第三租户120N具有被标记为92N1-92Nn的第三VLAN。每个租户的多个VM实例(来宾会话)被连接到该租户的公共VS实例。因此,相关联的租户的所有来宾可以访问相同的底层虚拟存储。例如,对于第一租户120A,VM实例100A1(第一来宾)和VM实例100An(第二来宾)都连接到同一个VS实例80A。因此,第一和第二来宾都可访问(服从权限)同一个虚拟存储,即VS实例80A。
尽管图5示出了用于每个租户的第二网络92(VLAN),但在一个实施例中,租户可以具有超过一个的相关联的网络92。例如,一个VLAN可以处理预先确定的VM实例集合的通信,另一个VLAN可以处理第二预先确定的VM实例集合的通信。该实施例对于指定租户将网络92分成多个单独的信道,以例如平衡负载或隔离诸如工作组的子租户。租户同样可具有超过一个的相关联的VS实例。例如,租户120A可以具有多个相关联的VS实例,它们每个与存储系统72中的租户120A的物理存储的一部分相关联。
租户与资源之间的关联持续到物理存储系统72。继续该例子,第一租户120A具有通过第一网络90(被单独标记为90A)与VS实例80A通信的相关联的存储信息76A;第二租户具有通过网络90B与VS实例80B通信的存储信息76B,第三租户120N具有通过网络90N与VS实例80N通信的存储信息76N。作为这种虚拟存储与物理存储之间的每个租户关联的结果,来自特定VM实例的存储资源请求传送到存储系统72中的对应存储信息。例如,通过租户120A的VM实例100A1保存的数据文件传递到租户120A的存储信息76A。
VM主机系统104中的租户、VS系统84和存储系统72之间的分离维护了每个租户的隐私和安全。例如,独占地分配给租户120A的资源不会与独占地分配给租户120B-N的资源进行通信。因此,与租户120A相关联的资源对于租户120B-N是不可见的,反之亦然。
现在参照图6,系统70的安全体系结构130可包括两个区域。第一区域132用双点划线表示,包括物理存储系统72、VS主机82、VM主机102和连接它们的通信路径。因此,第一区域132包括不能被租户和来宾访问的系统70的基础设施。第二区域134用虚线表示,包括VS实例80和VM实例100的租户和来宾可见的部分。因此,第二区域134包括系统70的公共的云可访问侧,用户可在此看见、存储和交换数据。
区域132和134之间的桥接出现在主机82和102中,并在管理程序85和VM管理程序105的支配下。在管理程序之上运行的VS实例和VM实例处于第二区域134中,并被管理程序进行沙箱管理。VS实例和VM实例仅通过在主机上运行的管理程序与第一区域132进行通信。因此,VS实例和VM实例执行对包括存储系统72的第一区域132的间接的受保护的访问。使用进行沙箱管理的中间VS和VM实例消除了需要从公共的第二区域132直接托管共享物理存储系统72-因此,消除了随着这种直接托管产生的隐私和安全问题。
现在再参照图7,用于提供对所共享的存储资源的安全访问的方法200可包括在第一网络上将第一(或随后的)存储信息存储202在存储系统的存储装置中;将第一(或随后的)存储信息转换204成第一(或随后的)虚拟存储实例;在没有与第一网络和存储装置通信的第二网络上提供对第一(或随后的)虚拟存储实例的访问206;通过第二网络启用208第一(或随后的)虚拟存储实例的修改以创建第一(或随后的)修改后虚拟存储实例;根据第一(或随后的)修改后存储实例,将第一(或随后的)修改后存储实例转换210成第一(或随后的)修改后存储信息;以及在存储装置上存储212第一(或随后的)修改后存储信息。
在第一网络90上将存储信息76存储202在计算机存储系统70的存储装置中可包括在存储系统72上存储一个或多个数据文件78。存储信息76可与系统70的租户和/或来宾相关联。存储202还可包括创建或利用逻辑结构,诸如逻辑磁盘、分区、卷和/或文件系统,以在存储信息76内提供组织框架以接收数据文件78。例如,系统70的运营商可以在存储系统70上向新的租户分配存储设备,并定义与该租户相关联的逻辑磁盘和文件系统,以接收与该租户相关联的数据文件。
将存储信息76转换204成VS实例80可包括在连接到第一网络90的VS主机82上创建VS实例80。转换204还可包括经由网络90建立VS实例80与存储信息76之间的通信,并使得VS实例80能够访问存储信息76,例如利用LUN或NFS导出。所导出的存储信息76可以在VS实例80内被表示为LSS实例98,VS实例80引用LSS实例98进行的存储访问可以通过管理程序85和网络90传递或分解到存储信息76。转换204可包括由管理程序85维持虚拟存储和实际存储之间的引用。转换204可包括将LSS实例98例如配置成RAID和/或例如用文件系统来格式化LSS实例98。转换204可包括在VS实例80中保存存储信息76的组织框架(例如目录分层体系)、存储单元(例如数据文件)和元数据(例如,租户所有权)。因此,所导出的存储信息76可通常镜像底层存储信息76的结构和内容。该镜像可以是逻辑映射或转换,而不是实际的复制。例如,VS实例80的租户可见文件系统可不同于存储系统72的本地文件系统。因此,转换204可包括将由存储系统72支持的特征转换成由VS实例80支持的对应或等同特征。转换204可包括数据的算术转换,例如解压缩由存储系统72以压缩格式存储的数据。
在一个实施例中,转换204可包括使用管理程序转换存储信息。例如,VS主机82可以运行管理程序85以支持VS实例的一个或多个虚拟主机,例如VS实例80的实例。因此,转换204使用管理程序以支持虚拟存储装置(VS实例80)。实际上,管理程序85可以将实际的逻辑或物理存储转换或映射到虚拟存储,反之亦然。
在一个实施例中,转换204可包括将在存储信息76的实例中包括的一个或多个数据文件78转换成相关联的VS实例80的对应数据文件实例88。转换数据文件78可包括将它的内容、属性和/或性质(例如,它的相关的文件名、所有权和权限)从存储系统72本身的格式翻译或转换成由VS实例80实现的格式。实际上,管理程序85可以维持数据文件实例88,作为对应的数据文件78的引用。
在一个实施例中,转换204可以包括将在存储信息76中包括的一个或多个数据文件结构77转换成相关联的VS实例80的对应的数据文件结构实例87。例如,存储系统72的本地文件系统可以实现分层目录结构,其例如包括目录名称、路径名称、分层关系、所有权和权限。转换204可包括将该目录结构转换成VS实例80的文件系统的目录结构,以使得数据文件结构实例87镜像数据文件结构77。实际上,管理程序85可以维持数据文件结构实例87,作为对对应的数据文件结构77的引用。
在没有与第一网络90和存储装置74通信的第二网络92上提供对VS实例80的访问206可包括在第二网络92与支持VS实例80的VS主机82之间建立连接。建立连接的过程可依赖于所使用的网络92的类型。例如,VS主机82可具有诸如网络接口卡(NIC)的硬件接口,NIC可具有相关的地址以允许其它网络设备向/从NIC发送/接收数据,并从而向/从VS主机82发送/接收数据。因此,提供访问206可包括例如用标识VS主机82和/或VS实例80的数据配置第二网络92;例如用标识网络92和/或VS实例80的数据配置VS主机82;和/或例如用允许VS实例80通过支持VS主机82访问网络92的数据配置VS实例80(其是VS主机82的VM)。在一个实施例中,第二网络92可以是虚拟网络。例如,第二网络92可以是虚拟专用网(VPN)、虚拟局域网(VLAN)或在VM中运行并由管理程序支持的虚拟网络实现。
提供访问206还可包括维持第一网络90与第二网络92之间没有直接通信。在拓扑结构上位于第一网络90与第二网络92之间的管理程序85可有效地阻断两个网络之间的直接通信。第一网络90在逻辑上位于VS主机82的管理程序85的主机侧,而第二网络92在逻辑上位于管理程序85的VM侧(即,在VS实例侧)。由管理程序85提供的沙箱可有效地向同一VS主机82上的其它VS实例隐藏每个VS实例。该沙箱可同样有效地向每个VS实例80隐藏由VS主机82使用的实际或物理资源。每个VS实例80通过管理程序85获取诸如存储的资源,管理程序85作为存储系统72的代理满足存储访问请求。因此,管理程序85消除了VS实例80对第一网络和存储系统72的直接访问。因此,第一网络90和存储器系统72都可以向VS实例80和连接到VS实例的第二网络92隐藏。由于第二网络92不能通过VS实例80访问第一网络90并且由于两个网络没有另外连接,因此第二网络92没有与第一网络90进行通信。
通过第二网络92启用208VS实例80的修改以创建修改后VS实例可包括允许任何经由网络92对导出到VS实例80的存储信息76的实际或潜在变化。例如,在其中第二网络92将VS实例80连接到VM实例100的实施例中,启用208可包括授权VM实例100访问VS实例80,例如,以使得VM实例100的用户可以通过VS实例80从存储信息实际或可能获取诸如数据文件的数据,编辑该数据,并通过VS实例80保存该变化(最终是存储信息的变化)。启用208可包括任何适合于允许通过网络92访问VS实例80以及它的虚拟存储的操作和配置。
在一个实施例中,启用208VS实例80的修改可包括由第一VM实例100和第二VM实例100启用VS实例80的修改,其中第一和第二VM实例没有与第一网络90和存储装置通信。VS实例80可代表由租户拥有并由该租户的多个来宾共享的文件系统(即,存储信息)。因此,VS实例80可以支持经由网络92到多个VM实例100的连接,其中每个VM实例是与该租户的特定来宾相关联的会话。因此,启用208可包括建立、授权或配置从多个VM实例到单个共享VS实例80的网络访问。
在一个实施例中,将修改后存储实例转换210成修改后存储信息可包括准备、格式化或转换用于实际存储的修改后存储实例,例如通过对修改后存储实例应用由转换204执行的一个或多个操作的逆操作。例如,在使VM实例100连接到VS实例80的实施例中,VM实例100的用户可以访问数据文件77,系统70可以将数据文件传递经过VS实例到达VM实例。转换204可在数据文件正从存储系统72上的存储信息经过管理程序85向VS实例80传送时发生。在VM实例100的会话中,用户可以编辑数据文件。在保存了所编辑的数据文件后,VM实例100引用VS实例80以用于访问存储。修改后的数据文件(即,修改后存储信息)经过VS实例80传送回并最终到达存储系统72的实际存储。转换210可在修改后的数据文件正在经过VS实例80传送到存储系统72时发生。转换210可以使在转换204中包括的任何操作反转。例如,转换210可包括通过管理程序85向存储系统72写入修改后存储信息,管理程序85可以将修改后存储信息映射回到存储系统72的本地文件系统。
在存储装置74上存储212修改后存储信息76可包括在存储系统72上保存转换210的修改后存储器信息,例如通过在存储系统72的逻辑或物理存储装置74上的存储。存储212将修改后存储信息保存在存储系统72的永久存储信息76中。例如,在VM实例100内修改的数据文件实例可以复写实际存储中对应的数据文件。
在一个实施例中,方法200还可包括根据预先选择的文件系统,在第二网络92上创建VSS实例94,VSS实例94包括VS实例80。VSS实例94可以是VS实例80的虚拟存储的镜像,其可通过第二网络92被VM实例100访问。创建VS存储空间实例可包括将VS实例80的虚拟文件系统导出到VM实例100。在传送经过VM主机102的VM管理程序104后,VSS实例94可作为例如VM实例100内的虚拟驱动器出现,VM实例100可通过该虚拟驱动器访问VS实例100的虚拟存储。该虚拟驱动器可以例如用所选择的文件系统格式化。
在一个实施例中,方法200还可包括在基于内核的VM环境中创建VSS实例。VSS实例94可以提供经由网络92从VM实例100对VS实例80的虚拟存储的访问。VSS实例94存在于VM环境中,例如在运行管理程序85的VS主机上。VSS实例的主机可以运行基于内核的管理程序,即,不在单独的独立操作系统上运行的管理程序。主机、基于内核的管理程序和所支持的VM的组合被称为基于内核的VM环境。
在一个实施例中,方法200还可包括:(a)将存储信息76的实例存储为第一和第二(或随后的)存储文件95;(b)将这些存储文件95转换成对应的存储文件实例96;(c)使用独立磁盘冗余阵列(RAID)协议从存储文件实例96中创建LSS实例98;(d)例如用文件系统格式化存储文件实例。项(a)可包括例如通过对用于RAID设备的数据分条并将这些条存储为包括两个或多个存储文件的集合来在逻辑上分割存储信息中的数据。项(b)可包括对每个存储文件95应用转换204。项(c)可包括创建包括存储文件实例96的逻辑结构,该结构模拟磁盘阵列子系统。项(d)可包括用预先选择的文件系统格式化LSS实例98,其可不同于存储系统72的格式化。
在一个实施例中,方法200还可包括:(e)通过网络文件系统(NFS)协议将第一和第二(或随后的)VS文件实例96发送到存储系统的托管虚拟存储空间实例94的虚拟服务器;(f)由管理程序防止第一网络与第二网络之间的通信。虚拟服务器可以是VS主机82、VM主机102和/或第二网络92上的中间服务器,并可以通过VSS实例94被VS实例80和一个或多个相关联的VM实例100访问。项(e)可包括在存储系统72上配置NFS导出以与VSS实例的主机或服务器共享一个或多个VS文件实例96。项(f)可包括由管理程序85和/或VS管理程序105提供的沙箱,其提供对存储的抽象访问。
在一个实施例中,方法200还可包括:(g)将第一和第二(或随后的)VS文件实例96作为逻辑单元号(LUN)和/或存储逻辑单元向计算机存储系统的托管虚拟存储空间实例的虚拟服务器发送;(h)由管理程序防止第一网络与第二网络之间的通信。项(g)和(h)在功能上可等同于项(e)和(f),除了通信由LUN和/或存储逻辑单元创建而不是NFS导出以外。
在一个实施例中,方法200还可包括使用NFS协议将VSS实例94发送到VM实例100。
在一个实施例中,方法200还可以包括由管理程序维持第一网络90与第二网络92之间的隔离。该隔离可以是由管理程序85和/或VM管理程序105提供的沙箱的结果,其提供对诸如存储的资源的抽象访问。
在一个实施例中,方法200可以将VS实例80、VM实例100和其它引用单元应用于存储信息76的第二或随后的实例。使用“第一”或“第二”描述单元通常并不意在将方法200限于仅有一个或两个这种类型的单元。
在一个实施例中,方法200可包括根据基于第一存储信息的标准文件结构在第二网络92上创建第一虚拟存储空间,以及在第二网络92上创建不能与第一虚拟存储空间共同访问的第二虚拟存储空间,其中第一虚拟存储空间包括第一虚拟存储实例,第二虚拟存储空间具有基于第二存储信息的标准文件结构并包括第二虚拟存储实例。
在一个实施例中,方法200还可包括在第一虚拟局域网上托管第一虚拟存储空间,以及在没有与第一虚拟局域网通信的第二虚拟局域网上托管第二虚拟存储空间。
现在参照图8,用于提供对共享存储资源的安全访问的方法可包括:在第一网络90上将一个或多个存储信息的实例72存储302在存储装置74中;将一个或多个存储信息的实例转换304成一个或多个VS实例80,每个VS实例以虚拟形式表示对应的存储信息76;通过没有与第一网络90和存储装置74通信的第二网络92,提供306对一个或多个VS实例80的访问。存储302可等同或类似于存储202。转换304可等同或类似于转换204,其中以虚拟形式表示是指由管理程序85提供给VS实例80的存储信息的抽象镜像。提供306可以等同或类似于提供206。方法300可包括其它、可选的或附加的单元;可以省略一个或多个单元;和/或可遵从与所列出的不同的单元顺序。
在一个实施例中,通过第二网络92提供对第一VS实例80的访问306可包括提供对通过第一虚拟局域网(VLAN)共享第一VS实例80的第一VM实例100和第二VM实例100的访问;通过第二网络92提供对第二VS实例80的访问包括对通过没有与第一VLAN通信的第二VLAN共享第二VS实例80的第三VS实例80和第四VS实例80的访问。例如,第一VS实例80A可以提供对与第一租户120A相关联的所存储的数据的访问,第二或随后的VS实例80B可以提供对与第二租户120B相关联的所存储的数据的访问。第一租户120A的一个或多个来宾(其每一个具有相关的VM实例)可以通过VLAN 92A共享对第一VS实例80A的访问,第二租户120B的一个或多个来宾(其每一个具有相关的VM实例100)可以通过不同的VLAN 92B共享对第二VS实例80B的访问。VS实例80A和80B彼此并不通信,VLAN 92A和92B彼此并不通信,多个VM实例100也彼此不通信。连接到VLAN 92A的与租户120A相关联的VM实例可以通过VS实例80A共享数据,然而,连接到VLAN 92B的与租户120B相关联的VM实例同样可以通过VS实例80B共享数据。
如应当知道的,前面的实施例仅用于说明的目的。在实施例中,步骤可以被添加或移除,并且许多步骤可以至少部分地并行执行。数字文件的不同部分或者不同的相关数字文件可以同时进行处理或者优先处理,以为了速度或传递的目的。诸如在阵列中搜索多个模式的过程可以有效地或实际上同时地执行。例如,某些或全部进程可以使用单个处理器或多个处理器进行线程化。
在此所使用的术语仅用于描述特定实施例的目的,并不意味着限定本公开。如在此所使用的,单数形式“一”、“一个”和“该”意在也包括复数形式,除非上下文作了明确的说明。还应当理解,术语“包括”和/或“包含”在本文中使用时是指出现所述的特征、整体、步骤、操作、单元和/或组件,但并不排除存在或添加一个或多个其它特征、整体、步骤、操作、单元、组件和/或它们的组合。
在后附权利要求中的所有装置或步骤加功能元件的对应结构、材料、动作和等同意在包括用于执行与具体要求保护的其它要求保护的要素结合的功能的任何结构、材料或动作。已经呈现了本发明的描述以用于说明和描述的目的,但并不意在是穷尽的或者将本发明限于所公开的形式。在不偏离本发明的范围和精神的情况下,许多修改和变形对于本领域技术人员是显而易见的。所选择和描述的实施例是为了最好地解释本发明的原理和实际的应用,以及使得本领域技术人员能够理解本发明的具有各种修改的各种实施例适合于所构想的特定用途。
本公开可以采用完全硬件实施方式、完全软件实施方式或者包含硬件和软件单元的实施方式。在一个实施例中,本公开可以实现为软件,其包括但不限于固件、驻留软件、微代码等。另外,本公开可以采用计算机程序产品的形式,其可由计算机可用或计算机可读介质访问,提供由计算机或任何指令执行系统使用或与其一起使用的程序代码。为了说明的目的,计算机可用或计算机可读介质可以是任何有形的装置,其可包含、存储、传送、传播或传输由指令执行系统、装置或设备使用或与其一起使用的程序。
介质可以是电的、磁的、光的、电磁的、红外的或半导体系统(或装置或设备)或传播介质。计算机可读介质的例子包括半导体或固态存储器、磁带、可移动计算机软盘、随机存取存储器(RAM)、只读存储器(ROM)、刚性磁盘和光盘。当前光盘的例子包括紧凑型只读存储器(CD-ROM)、紧凑型读/写盘(CD-R/D)和DVD。
适合于存储和/或执行程序代码的数据处理系统可包括至少一个处理器,其通过系统总线直接或间接地连接到存储器单元。存储器单元可以包括在程序代码的实际执行期间利用的本地存储器、大容量存储器和为了减少在执行期间必须从大容量存储器中获取代码的次数而提供至少某些程序代码的临时存储的高速缓存器。
输入/输出或I/O设备(包括但不限于键盘、显示器和定点设备)可直接地或通过中间I/O控制器连接到系统。网络适配器也可以连接到系统以使得数据处理系统能够通过中间专用或公共网络连接到其它数据处理系统或远程打印机或存储设备。调制解调器、电缆解调器和以太网卡只是几种目前可用类型的网络适配器。