配置用于输入/输出操作的对象存储系统的制作方法
【专利摘要】本发明的各实施例总体上涉及配置用于输入/输出操作的对象存储系统。具体地,存储系统导出被调配为存储对象的逻辑存储卷。连接的计算机系统通过在存储系统中配置的用于协议流量的逻辑端点、使用标准协议、比如SCSI和NFS按照需求访问这些存储对象。当在存储系统接收输入?输出命令(IO)时,从IO接收标识符并且将标识符转译成逻辑存储卷标识符,并且对与逻辑存储卷标识符对应的逻辑存储卷引用的存储位置执行IO。
【专利说明】
配置用于输入/输出操作的对象存储系统
[00011 分案申请说明
[0002] 本申请是申请日为2012年8月22日、申请号为201280041490.9、发明名称为"配置 用于输入/输出操作的对象存储系统"的中国发明专利申请的分案申请。
技术领域
[0003] 本公开内容总体上涉及计算机领域,具体地涉及配置用于输入/输出操作的对象 存储系统。
【背景技术】
[0004] 随着计算机系统伸缩至企业级,特别是在支持大规模数据中心的背景中,下层数 据存储系统经常运用存储区域网络(SAN)或者网络附接存储(NAS)。如在常规上适当理解的 那样,SAN或者NAS提供诸多技术能力和操作益处,这些技术能力和操作益处基本上包括数 据存储设备的虚拟化、具有透明的容错故障恢复和故障保护控制的物理设备的冗余性、在 地理上分布和复制的存储以及从以客户端为中心的计算机系统管理解耦合的集中式监督 和存储配置管理。
[0005] 在架构上,在SAN存储系统中的存储设备(例如,盘阵列等)通常连接到网络交换机 (例如,光纤信道交换机等),这些网络交换机然后连接到服务器或者"主机",这些服务器或 者"主机"需要访问存储设备中的数据。在SAN中的服务器、交换机和存储设备通常使用小型 计算机系统接口(SCSI)协议来通信,该SCSI协议在盘数据块级跨越网络传送数据。对照而 言,NAS设备通常是如下设备,该设备内部包含一个或者多个存储设备并且通过网络协议、 比如以太网连接到主机(或者居间交换机)。除了包含存储设备之外,NAS设备也已经根据基 于网络的文件系统、比如网络文件系统(NFS)或者公共因特网文件系统(CIFS)预先格式化 它的存储设备。这样,如与向主机暴露盘(称为LUN并且以下进一步具体描述)一一这些盘然 后需要根据主机利用的文件系统来格式化、然后装配一一的SAN比对,NAS设备的基于网络 的文件系统(该系统需要由主机的操作系统支持)使NAS设备向主机的操作系统表现为文件 服务器,该文件服务器然后装配或者映射NAS设备例如为操作系统可访问的网络驱动。应当 认识,随着存储系统销售商不断创新和发布新产品,在SAN与NAS存储系统之间的清晰差别 继续减弱而实际存储系统实现方式经常表现二者的特性、在相同系统中赋予文件级协议 (NAS)和块级协议(SAN)二者。例如,在备选NAS架构中,NAS "首领"或者"网关"设备联网到主 机而不是传统NAS设备。这样的NAS网关设备并非本身包含存储驱动、但是使外部存储设备 能够连接到NAS网关设备(例如,经由光纤信道接口等)。被主机以相似方式感知为传统NAS 设备的这样的NAS网关设备提供一种用于显著增加基于NAS的存储架构的容量(例如,在更 传统上由SAN支持的存储容量级)而又保持文件级存储访问的简单性的能力。
[0006] SCSI和其它基于块协议的存储设备、比如图1A中所示存储系统30利用代表一个或 者多个编程的存储处理器的存储系统管理器31以聚合存储设备中的存储单元或者驱动并 且将它们呈现为各自具有唯一可标识编号的一个或者多个LUN(逻辑单元编号)34儿· 34 通过网络20(例如,光纤信道等)由一个或者多个计算机系统10通过物理主机总线适配器 (HBA) 11来访问。在计算机系统10内和在HBA 11以上,通过从低级设备驱动器层12开始并且 在操作系统专属文件系统层15中结束的一系列软件层有特点地实施存储访问抽象化。实现 对LUN 34的基本访问的设备驱动器层12通常专属于存储系统使用的通信协议(例如,SCSI 等)。在设备驱动器层12以上实施数据访问层13以支持通过HBA 11以及其它数据访问控制 和管理功能可见的LUN 34的多径合并。通常在数据访问层13与常规操作系统文件系统层15 之间实施的逻辑卷管理器14支持通过HBA 11可访问的LUN 34的面向卷的虚拟化和管理。可 以在逻辑卷管理器14的控制之下将多个LUN 34-起聚集和管理为卷,用于向文件系统层15 呈现并且由文件系统层15用作逻辑设备。
[0007] 存储系统管理器31实施在存储系统30中驻留的、在图1A中称为纺锤体(spindle) 32的通常基于盘驱动的物理存储单元的可视化。从逻辑观点来看,这些纺锤体32中的每个 纺锤体可以视为固定大小的盘区( extent)33的依次阵列。存储系统管理器31通过向连接的 计算机系统、比如计算机系统10暴露连续逻辑存储空间一一该逻辑存储空间被划分成被称 为LUN 34的虚拟SCSI设备的集合一一来抽象化掉使读取和写入操作以盘驱动的实际纺锤 体和盘区的地址为目标的复杂性。每个LUN借助存在这样的LUN并且向计算机系统10呈现这 样的LUN来代表被指派用于由计算机系统10使用的某个容量。存储系统管理器31维护元数 据,该元数据包括用于每个这样的LUN到盘区有序列表的映射,其中每个这样的盘区可以被 标识为纺锤体-盘区对〈纺锤体#,盘区#>并且因此可以位于各种纺锤体32中的任何纺锤体 中。
[0008] 图1B是通过网络21(例如,因特网)经由网络接口卡(NIC)ll'连接到一个或者多个 计算机系统10的基于NAS或者文件级的常规存储系统40的框图。存储系统40包括代表一个 或者多个编程的存储处理器的存储系统管理器41。存储系统管理器41在存储系统40中驻留 的、在图1B中称为纺锤体42的通常基于盘驱动的物理存储单元上面实施文件系统45。从逻 辑观点来看,这些纺锤体中的每个纺锤体可以视为固定大小的盘区43的依次阵列。文件系 统45通过向连接的计算机系统、比如计算机系统10暴露包括目录和文件一一这些目录和文 件可以被组织成文件系统级卷44(下文称为"FS卷"),这些FS卷通过它们的相应装配点来访 问一一的命名空间来抽象化掉使读取和写入操作以盘驱动的实际纺锤体和盘区的地址为 目标的复杂性。
[0009] 即使有以上描述的存储系统进步,仍然已经广泛地认识它们未充分可伸缩以满足 虚拟化的计算机系统的特定需要。例如,服务器机器群集可以服务于多达1〇,〇〇〇个虚拟机 (VM),每个VM使用数目为多个的"虚拟盘"和数目为多个的"快照",每个虚拟盘和快照可以 例如被存储为特定LUN或者FS卷上的文件。即使按比例缩减的估计为每VM有2个虚拟盘和2 个快照,如果VM直接连接到物理盘(即,每物理盘有1个虚拟盘或者快照),这仍然总计为存 储系统支持60,000个不同盘。此外,在这一规模的存储设备和拓扑管理已知有困难。因此, 开发比如在通过这里引用而结合的、标题为"Providing Multiple Concurrent Access to a File System"的美国专利7,849,098中描述的数据存储库这一概念,在这些数据存储库 中,将VM复用到物理存储实体(例如,基于LUN的VMFS群集文件系统或者FS卷)的更小集合 上。
[0010]在运用LUN或者FS卷的常规存储系统中,来自多个VM的工作量通常由单个LUN或者 单个FS卷服务。因此,来自一个VM工作量的资源需求将影响在相同LUN或者FS卷上向另一 VM 工作量提供的服务水平。用于存储的效率测量、比如延时和每秒输入/输出操作(10)或者 Ι0Ρ姻此根据在给定的LUN或者FS卷中的工作量数目变化并且不能被保障。因而,不能在每 VM基础上执行用于运用LUN或者FS卷的存储系统的存储策略,并且不能在每VM基础上给定 服务水平协定(SLA)保障。此外,以LUN或者FS卷的粒度而不是以VM的虚拟盘的粒度提供由 存储系统销售商提供的数据服务、比如快照、复制、加密和解重复。因此,可以使用存储系统 销售商提供的数据服务来为整个LUN或者整个FS卷创建快照,但是不能从其中存储虚拟盘 的LUN或者文件系统分离地创建用于VM的单个虚拟盘的快照。
【发明内容】
[0011] -个或者多个实施例涉及一种存储系统,该存储系统被配置用于隔离在其中运行 的工作量、从而可以每工作量提供SLA保障并且可以每工作量提供存储系统的数据服务而 无需存储系统的激进重新设计。在存储用于多个虚拟机的虚拟盘的存储系统中,可以在每 虚拟盘基础上提供SLA保障,并且可以在每虚拟盘基础上提供存储系统的数据服务。
[0012] 根据本发明的一个实施例,存储系统从这里称为"存储容器"的逻辑存储容量指派 之中导出在每工作量基础上被调配为存储对象的、这里称为"虚拟卷"的逻辑存储卷。对于 VM,可以对于VM的虚拟盘和快照中的每个虚拟盘和快照创建虚拟卷。在一个实施例中,连接 的计算机系统通过在存储系统中配置的称为"协议端点"的用于协议流量的逻辑端点、使用 标准协议、比如SCSI和NFS按照需求访问虚拟卷。
[0013] 根据本发明的一个实施例的一种用于在存储系统中处理输入-输出命令(10)的方 法包括以下步骤:在存储系统接收1〇,1〇包括第一标识符和第二标识符,其中第一标识符用 来将10引向存储系统;从10获取第二标识符并且将第二标识符转译成逻辑存储卷标识符; 并且对与逻辑存储卷标识符对应的逻辑存储卷引用的存储位置执行10。
[0014] 根据本发明的一个实施例的一种用于预备存储系统以执行10的方法包括以下步 骤:接收对于预备逻辑存储卷的请求;选择在存储系统中配置的协议端点,用于逻辑存储卷 的10将通过协议端点来接收;并且生成将在用于逻辑存储卷的10中包括的标识符并且向发 出请求的计算机系统返回标识符。
[0015] 根据本发明的一个实施例的一种用于预备存储系统以执行在主机计算机上运行 的虚拟机发出的10的方法包括以下步骤:接收对于预备用于虚拟机的元数据逻辑存储卷的 请求;选择在存储系统中配置的协议端点,用于元数据逻辑存储卷的10将通过协议端点来 接收;通过协议端点接收读取10并且返回读取的数据,读取的数据包括用于数据逻辑存储 卷的标识符;接收对于预备用于虚拟机的数据逻辑存储卷的请求;并且对于每个数据逻辑 存储卷,选择在存储系统中配置的协议端点,用于逻辑存储卷的10将通过协议端点来接收。
[0016] 本发明的各实施例还包括一种存储指令的非瞬态计算机可读存储介质,这些指令 在由计算机系统执行时使计算机系统执行以上阐述的方法之一。
【附图说明】
[0017] 图1A是通过网络连接到一个或者多个计算机系统的基于块协议的常规存储设备 的框图。
[0018] 图1B是通过网络连接到一个或者多个计算机系统的常规NAS设备的框图。
[0019] 图2A是根据本发明的一个实施例的实施虚拟卷的基于块协议的存储系统群集的 框图。
[0020] 图2B是根据本发明的一个实施例的实施虚拟卷的基于NAS的存储系统群集的框 图。
[0021] 图3是根据本发明的一个实施例的图2A或者图2B的存储系统群集的用于管理虚拟 卷的部件框图。
[0022] 图4是用于创建存储容器的方法步骤的流程图。
[0023] 图5A是在基于SAN的存储系统上主控的被配置用于实施虚拟卷的计算机系统的一 个实施例的框图。
[0024]图5B是在基于NAS的存储系统上主控的被配置用于虚拟卷的图5A的计算机系统的 框图。
[0025]图5C是在基于SAN的存储系统上主控的被配置用于实施虚拟卷的计算机系统的另 一实施例的框图。
[0026]图5D是在基于NAS的存储系统上主控的被配置用于虚拟卷的图5C的计算机系统的 框图。
[0027]图6是图示根据本发明的一个实施例的用来管理虚拟卷的部件和通信路径的计算 机环境的简化框图。
[0028]图7是用于向图2A或者图2B的存储系统群集认证计算机系统的方法步骤的流程 图。
[0029]图8是根据一个实施例的用于创建虚拟卷的方法步骤的流程图。
[0030]图9A是用于发现可用于计算机系统的协议端点的方法步骤的流程图。
[0031] 图9B是用于存储系统发现计算机系统经由带内路径连接到的协议端点的方法步 骤的流程图。
[0032] 图10是根据一个实施例的用于发出和执行虚拟卷绑定请求的方法步骤的流程图。 [0033]图11A和图11B是根据一个实施例的用于向虚拟卷发出10的方法步骤的流程图。
[0034] 图12是根据一个实施例的用于在存储系统执行10的方法步骤的流程图。
[0035] 图13是根据一个实施例的用于发出和执行虚拟卷重新绑定请求的方法步骤的流 程图。
[0036] 图14是虚拟卷的生命周期的概念图。
[0037]图15是根据一个实施例的使用图2A的存储系统的来调配VM的方法步骤的流程图。 [0038]图16A是用于使VM通电的方法步骤的流程图。
[0039]图16B是用于使VM断电的方法步骤的流程图。
[0040] 图17是用于扩展VM的vvol的大小的方法步骤的流程图。
[0041] 图18是用于在存储容器之间移动VM的vvol的方法步骤的流程图。
[0042]图19是用于从模板VM克隆VM的方法步骤的流程图。
[0043]图20是根据另一实施例的用于调配VM的方法步骤的流程图。
[0044]图21图示采样存储能力简档和用于创建存储容器的方法,该方法包括简档选择步 骤。
[0045] 图22是图示用于创建vvol并且定义用于vvol的存储能力简档的方法步骤的流程 图。
[0046] 图23是图示用于创建快照的方法步骤的流程图。
【具体实施方式】
[0047] 图2A和图2B是根据本发明的实施例的实施"虚拟卷"的存储系统群集的框图。存储 系统群集包括一个或者多个存储系统、例如存储系统1301和1302,这些存储系统可以是盘 阵列,每个存储系统具有多个数据存储单元(DSU),在图中标注这些DSU之一为141,并且存 储系统群集包括存储系统管理器131和132,这些存储系统管理器控制存储系统130的各种 操作以实现这里描述的本发明的实施例。在一个实施例中,两个或者更多存储系统130可以 实施分布式存储系统管理器135,该分布式存储系统管理器135控制存储系统群集的操作如 同它们是单个逻辑存储系统一样。分布式存储系统管理器135的操作域可以跨越在相同数 据中心中或者跨越多个数据中心安装的存储系统。例如,在一个这样的实施例中,分布式存 储系统管理器135可以包括存储系统管理器131,存储系统管理器131在与用作"从属"管理 器的存储系统管理器132通信时用作"主控"管理器,但是应当认识,可以实施用于实施分布 式存储系统管理器的多种备选方法。DSU代表物理存储单元、比如基于盘或者闪存的存储单 元、比如旋转盘或者固态盘。根据实施例,存储系统群集创建并且向连接的计算机系统、比 如计算机系统1001和1002暴露如这里进一步具体描述的"虚拟卷"(vvol)。在计算机系统 100中运行的应用(例如,VM等,这些VM访问它们的虚拟盘)使用标准协议、比如在图2A的实 施例中为SCSI和在图2B的实施例中为NFS、通过在存储系统130中配置的、称为"协议端点" (PE)的用于SCSI或者NFS协议流量的逻辑端点按需访问vvol。从计算机系统100到存储系统 130的用于与应用有关的数据操作的通信路径这里被称为"带内"路径。在计算机系统100的 主机总线适配器(HBA)与在存储系统130中配置的PE之间以及在计算机系统100的网络接口 卡(NIC)与在存储系统130中配置的PE之间的通信路径是带内路径的示例。从计算机系统 100到存储系统130的不是在带内并且通常用来执行管理操作的通信路径这里被称为"带 外"路径。在图6中从带内路径分离地图示带外路径的示例、比如在计算机系统100与存储系 统130之间的以太网网络连接。为了简化,示出计算机系统100直接连接到存储系统130。然 而,应当理解,它们可以通过多个路径和一个或者多个交换机连接到存储系统130。
[0048]分布式存储系统管理器135或者单个存储系统管理器131或者132可以从代表物理 DSU的逻辑聚合的逻辑"存储容器"创建vvol(例如,在计算机系统100请求时等)。一般而言, 存储容器可以跨越多于一个存储系统,并且许多存储容器可以由单个存储系统管理器或者 分布式存储系统管理器创建。相似地,单个存储系统可以包含许多存储容器。在图2A和图2B 中,示出分布式存储系统管理器135创建的存储容器142A为跨越存储系统1301和存储系统 1302,而示出存储容器142B和存储容器142C为包含于单个存储系统内(即,分别为存储系统 1301和存储系统1302)。应当认识,由于存储容器可以跨越多个一个存储系统,所以存储系 统管理员可以向其客户调配超过任一存储系统的存储容量的存储容量。还应当认识,由于 可以在单个存储系统内创建多个存储容器,所以存储系统管理员可以使用单个存储系统来 向多个客户调配存储装置。
[0049]在图2A的实施例中,从基于块的存储系统调配每个vvol。在图2B的实施例中,基于 NAS的存储系统在DSU 141上面实施文件系统145,并且每个vvol向计算机系统100暴露为在 这一文件系统内的文件对象。此外,如以下将进一步具体描述的那样,在计算机系统100上 运行的应用通过PE访问用于10的vvo 1。例如,如图2A和图2B中的虚线所示,vvo 1 151和vvo 1 152 经由 PE161 可访问;vvol 153 和 vvol 155 经由 PE 162 可访问;vvol 154 经由 PE 163 和 PE 164可访问;并且vvol 156经由PE 165可访问。应当认识,来自多个存储容器的vvol、比如在 存储容器142A中的vvol 153和在存储容器142C中的vvol 155可以在任何给定的时间经由 单个PE、比如PE 162可访问。还应当认识,PE、比如PE 166可以在不存在经由它们可访问的任 何vvol时存在。
[0050] 在图2A的实施例中,存储系统130使用已知的用于设立LUN的方法来实施PE为特殊 类型的LUN。与LUN-样,存储系统130向每个UE提供称为WWN(世界范围名称)的唯一标识符。 在一个实施例中,在创建PE时,存储系统130未指定用于特殊LUN的大小,因为这里描述的PE 不是实际数据容器。在一个这样的实施例中,存储系统130可以指派零值或者很小的值为与 PE有关的LUN的大小,从而如以下进一步讨论的那样,管理员可以在请求存储系统提供LUN (例如,传统数据LUN和与PE有关的LUN)列表时快速标识PE。相似地,存储系统130可以向PE 指派大于255的LUN编号为用于LUN的标识编号以用人性化方式指示它们不是数据LUN。作为 用于在PE与LUN之间区分的另一方式,可以向扩展查询数据VH)页面(页面86h)添加 PE位。在 LUN是PE时将PE位设置成1,并且在它是普通数据LUN时设置成0。计算机系统100可以通过发 出SCSI命令REP0RT_LUNS(报告_LUN)来经由带内路径发现PE并且通过检查指示的PE位来确 定它们是否为根据这里描述的实施例的PE或者常规数据LUN。计算机系统100可以可选地检 查LUN大小和LUN编号属性以进一步确认LUN是否为PE或者常规LUN。应当认识,以上描述的 技术中的任何技术可以用来区分与PE有关的LUN与普通数据LUN。在一个实施例中,PE位技 术是用来区分与PE有关的LUN与普通数据LUN的仅有技术。
[0051] 在图2B的实施例中,使用已知的用于设立指向FS卷的装配点的方法在存储系统 130中创建PE。在图2B的实施例中创建的每个PE由也常规地一起称为"装配点"的IP地址和 文件系统路径唯一标识。然而,不同于常规装配点,PE未与FS卷相关联。另外,不同于图2A的 PE,图2B的PE除非虚拟卷绑定到给定的PE则不可经由带内路径被计算机系统100发现。因 此,图2B的PE经由带外路径由存储系统报告。
[0052]图3是根据一个实施例的图2A或者图2B的存储系统群集的用于管理虚拟卷的部件 的框图。部件包括在一个实施例中在存储系统130中执行的存储系统管理器131和132的软 件模块或者在另一实施例中的分布式存储系统管理器135的软件模块、即输入/输出(1/0) 管理器304、卷管理器306、容器管理器308和数据访问层310。在这里的实施例的描述中,应 当理解,分布式存储系统管理器135采取的任何动作可以根据实施例由存储系统管理器131 或者存储系统管理器132采取。
[0053] 在图3的示例中,分布式存储系统管理器135已经从DSU 141创建三个存储容器 SC1、SC2和SC3,示出这些存储容器中的每个存储容器具有标注为P1至Pn的纺锤体盘区 (spindle extent)。一般而言,每个存储容器具有固定物理大小并且与DSU的具体盘区相关 联。在图3中所示示例中,分布式存储系统管理器135具有对容器数据库316的访问,该容器 数据库316为每个存储容器存储其容器ID、物理布局信息和一些元数据。容器数据库316由 容器管理器308管理和更新,该容器管理器308在一个实施例中是分布式存储系统管理器 135的部件。容器ID是在创建存储容器时向存储容器给定通用唯一标识符。物理布局信息由 与给定的存储容器相关联并且存储为〈系统ID,DSU ID,盘区编号〉有序列表的DSU 141的纺 锤体盘区构成。元数据分节可以包含一些公共和一些存储系统销售商专属元数据。例如,元 数据分节可以包含被允许访问存储容器的计算机系统或者应用或者用户的ID。作为另一示 例,元数据分节包含分配位图,该分配位图用于表示已经向现有vvol分配存储容器的哪些〈 系统ID,DSU ID,盘区编号〉盘区并且哪些盘区自由。在一个实施例中,存储系统管理员可以 创建用于不同业务单元的分离存储容器,从而不从相同存储容器调配不同业务单元的 vvol。可以应用其它用于隔离vvol的策略。例如,存储系统管理员可以采用将从不同存储容 器调配云服务的不同客户的vvol这样的策略。vvol也可以根据它们的所需服务水平来分组 并且从存储容器来调配。此外,存储系统管理员可以创建、删除和另外管理存储容器、比如 定义可以创建的存储容器数目并且设置可以每存储容器设置的最大物理大小。
[0054]同样在图3的示例中,分布式存储系统管理器135已经调配(代表请求计算机系统 100)各来自不同存储容器的多个vvol。一般而言,vvol可以具有固定物理大小或者可以被 瘦(thinly)调配,并且每个vvol具有vvol ID,该vvol ID是在创建vvol时向vvol给定的通 用唯一标识符。对于每个vvol,vvol数据库314为每个vvol存储其vvol ID、其中创建vvol的 存储容器的容器ID和在该存储容器内的包括vvol的地址空间的〈偏移,长度〉值有序列表。 vvol数据库314由卷管理器306管理和更新,该卷管理器在一个实施例中是分布式存储系统 管理器135的部件。在一个实施例中,vvol数据库314也存储关于vvol的少量元数据。这一元 数据在vvol数据库314中被存储为关键字-值对的集合并且可以在vvol的存在期间的任何 时间经由带外路径由计算机系统100更新和查询。存储的关键字-值对落入三个类别。第一 类别是:熟知的值一一某些值的定义(并且因此它们的值的解释)公开地可用。一个示例是 与虚拟卷类型(例如,在虚拟机实施例中,vvol是否包含VM的元数据或者VM的数据)对应的 关键字。另一示例是App ID,该App ID是在vvol中存储数据的应用的ID。第二类别是:计算 机系统专属关键字一一计算机系统或者其管理模块存储某些关键字和值为虚拟卷的元数 据。第三类别是:存储系统销售商专属关键字一一这些允许存储系统销售商存储与虚拟卷 的元数据相关联的某些关键字。存储系统销售商将这一关键字-值存储用于它的元数据的 一个原因是所有这些关键字经由用于vvol的带外信道容易可用于存储系统销售商插件和 其它扩展。用于关键字-值对的存储操作是虚拟卷创建和其它过程的一部分,因此存储操作 应当合理地快。存储系统也被配置用于基于与在具体关键字上提供的值的确切匹配来实现 虚拟卷的搜索。
[0055] 10管理器304是维护连接数据库312的软件模块(在某些实施例中也为分布式存储 系统管理器135的部件),该连接数据库312存储在PE与vvol之间的当前有效10连接路径。在 图3中所示示例中,示出七个当前有效10会话。每个有效会话具有相关联的PE ID、次级标识 符(SLLID)、vvol ID和参考计数(RefCnt),该参考计数指示通过这一 10会话执行10的不同 应用的数目。分布式存储系统管理器135(例如,在计算机系统100请求时)在PE与vvol之间 建立有效10会话的过程这里称为"绑定"过程。对于每个绑定,分布式存储系统管理器135 (例如,经由10管理器304)向连接数据库312添加条目。分布式存储系统管理器135随后拆除 10会话的过程这里称为"解绑"过程。对于每个解绑,分布式存储系统管理器135(例如,经由 10管理器304)将10会话的参考计数递减一。在10会话的参考计数为零时,分布式存储系统 管理器135(例如,经由10管理器304)可以从连接数据库312删除用于该10连接路径的条目。 如先前讨论的那样,在一个实施例中,计算机系统100生成并且经由带外路径向分布式存储 系统管理器135发送绑定和解绑请求。备选地,计算机系统100可以通过使现有错误路径超 负荷来生成并且经由带内路径发送解绑请求。在一个实施例中,在参考计数从0改变成1或 者相反时将生成数改变成单调增加的数或者随机生成的数。在另一实施例中,生成数是随 机生成的数,并且从连接数据库312消除RefCnt列,并且对于每个绑定,即使在绑定请求是 对已经绑定的vvol时,分布式存储系统管理器135仍然(例如,经由10管理器304)向连接数 据库312添加条目。
[0056]在图2A的存储系统群集中,10管理器304使用连接数据库312来处理通过PE接收的 来自计算机系统1〇〇的10请求(1〇)。当在PE之一接收10时,10管理器304解析10以标识在10 中包含的PE ID和SLLID以便确定10被期望用于的vvo 1。通过访问连接数据库314,10管理器 304继而能够获取与解析的PE ID和SLLID相关联的vvol ID。在图3和后续附图中,为了简化 而示出PE ID为PE_A、PE_B等。在一个实施例中,实际PE ID是PE的WWN。此外,SLLID被示为 S000US0002等。实际SLLID由分布式存储系统管理器135生成为在与连接数据库312中的给 定的PE ID相关联的SLLID之中的任何唯一数。在具有vvol ID的虚拟卷的逻辑地址空间与 DSU 141的物理位置之间的映射由卷管理器306使用vvol数据库314并且由容器管理器308 使用容器数据库316来执行。一旦已经获得DSU 141的物理位置,数据访问层310(在一个实 施例中,也为分布式存储系统管理器135的部件)在这些物理位置上执行10。
[0057]在图2B的存储系统群集中,10通过PE接收,并且每个这样的10包括10已经被发到 的NFS句柄(或者相似文件系统句柄)。在一个实施例中,用于这样的系统的连接数据库312 包含存储系统的NFS接口的IP地址为PE ID并且文件系统路径为SLLID。基于vvol在文件系 统145中的位置生成SLLID。在vvol的逻辑地址空间与DSU 141的物理位置之间的映射由卷 管理器306使用vvol数据库314并且由容器管理器308使用容器数据库316来执行。一旦已经 获得DSU 141的物理位置,数据访问层在这些物理位置上执行10。应当认识,对于图2B的存 储系统,容器数据库312可以在用于给定的vvol的容器位置条目中包含文件:〈偏移.长度〉 条目有序列表(即,vvol可以包括在文件系统145中存储的多个文件段)。
[0058]在一个实施例中,在易失性存储器中维护连接数据库312,而在持久存储装置、比 如DSU 141中维护vvol数据库314和容器数据库316。在其它实施例中,可以在持久存储装置 中维护所有数据库312、314、316。
[0059]图4是用于创建存储容器的方法步骤410的流程图。在一个实施例中,这些步骤在 存储管理员的控制之下由存储系统管理器131、存储系统管理器132或者分布式存储系统管 理器135执行。如以上指出的那样,存储容器代表物理DSU的逻辑聚合并且可以跨越来自多 于一个存储系统的物理DSU。在步骤411,存储管理员(经由分布式存储系统管理器135等)设 置存储容器的物理容量。在云或者数据中心内,这一物理容量可以例如代表客户租赁的物 理存储容量。这里公开的存储容器提供的灵活性是不同客户的存储容器可以由存储管理员 从相同存储系统调配,并且用于单个客户的存储容器可以例如在任何一个存储设备的物理 容量不足以满足客户请求的大小的情况下或者在比如vvol的物理存储覆盖区将自然地跨 越多个存储系统这样的复制的情况下从多个存储系统调配。在步骤412,存储管理员设置用 于访问存储容器的权限级别。例如,在多租户数据中心中,客户仅可以访问已经向他或者她 租赁的存储容器。在步骤413,分布式存储系统管理器135生成用于存储容器的唯一标识符。 然后,在步骤414,分布式存储系统管理器135(例如,在一个实施例中经由容器管理器308) 以充分数量向存储容器分配DSU 141的自由纺锤体盘区以满足在步骤411设置的物理容量。 如以上指出的那样,在任何一个存储系统的自由空间不足以满足物理容量的情况下,分布 式存储系统管理器135可以从多个存储系统分配DSU 141的纺锤体区段。在已经分配分区之 后,分布式存储系统管理器135(例如,经由容器管理器308)用唯一容器ID、〈系统编号、DSU ID、盘区编号〉有序列表和被允许访问存储容器的计算机系统的上下文ID更新容器数据库 316〇
[0060] 根据这里描述的实施例,存储容量简档、例如SLA或者服务质量(QoS)可以在每 vvol基础上由分布式存储系统管理器135(例如,代表请求计算机系统100)配置。因此,有可 能让具有不同存储能力简档的 vv〇l是相同存储容器的一部分。在一个实施例中,系统管理 员定义默认存储能力简档(或者多个可能存储能力简档),所述存储能力简档在创建存储容 器时用于新创建的vvol并且存储于容器数据库316的元数据分节中。如果未对于在存储容 器以内创建的新vvol显式地指定存储能力简档,则新vvol将继承与存储容器相关联的默认 存储能力简档。
[0061] 图5A是在图2A的存储系统群集上主控的被配置用来实施虚拟卷的计算机系统的 一个实施例的框图。可以在包括一个或者多个中央处理单元(CPU)501、存储器502、一个或 者多个网络接口卡(NIC)503和一个或者多个主机总线适配器(HBA)504的通常为服务器类 的常规硬件平台500上构造计算机系统101。冊六504使计算机系统101能够通过在存储设备 130中配置的PE向虚拟卷发出10。如图5A中进一步所示,在硬件平台500上面安装操作系统 508,并且在操作系统508上面执行多个应用5121-512N。操作系统508的示例包括熟知的商 用操作系统、比如Microsoft Windows、Linux等中的任何操作系统。
[0062] 根据这里描述的实施例,每个应用512具有与之相关联的一个或者多个vvol并且 向操作系统508按照应用512向操作系统508中的"创建设备"调用创建的vvol的块设备实例 发出10。在块设备数据库53 3中维护在块设备名称与vvo 1 ID之间的关联。来自应用5121 -512N的10由文件系统驱动器510接收,并将其转换成块10并且向虚拟卷设备驱动器532提供 块10。在另一方面,来自应用5121的10被示出用于绕过文件系统驱动器510并且被直接提供 给虚拟卷设备驱动器532,这表示应用5121以在通过这里引用将全部内容结合、标题为 "Providing Access to a Raw Data Storage Unit in a Computer System" 的美国专利 7,155,558中描述的方式直接访问其块设备作为原始存储设备、例如作为数据库盘、日志 盘、备份存档和内容贮存库。在虚拟卷设备驱动器532接收块10时,它访问块设备数据库533 以引用在10中指定的块设备名称与PE ID(PE LUN的WWN)和SLLID之间的映射,该PE ID和 SLLID定义通向与块设备名称相关联的vvol的10连接路径。在这里所示示例中,块设备名称 archive对应于为应用5121创建的块设备实例vvol 12,并且块设备名称f 〇〇、dbase和log分 别对应于为应用5122-512N中的一个或者多个应用创建的块设备实例vvol 1、vvol 16和 VV〇117。在块设备数据库533中存储的其它信息包括用于每个块设备的活跃位值,该活跃位 值指示块设备是否活跃,并且包括CIF(在飞行中的命令)值。活跃位"Γ表示可以向块设备 发出10。活跃位"0"表示块设备不活跃并且不能向块设备发出I0XIF值提供多少10在飞行 中、即,被发出、但是尚未完成的指示。在这里所示示例中,块设备f〇〇活跃并且具有一些在 飞行中的命令。块设备archive不活跃并且不会接受较新的命令。然而,它等待2个在飞行中 的命令完成。块设备dbase不活跃而无未完成的命令。最后,块设备log活跃,但是应用当前 没有向设备的未决10。虚拟卷设备驱动器532可以选择在任何时间从它的数据库533去除这 样的设备。
[0063]除了执行以上描述的映射之外,虚拟卷设备驱动器532还向数据访问层540发出原 始块级10。数据访问层540包括设备访问层534和用于HBA 504的设备驱动器536,该设备访 问层534将命令排队和调度策略应用于原始块级10,并且该设备驱动器536在符合协议的格 式中格式化原始块级10并且向HBA 504发送它们用于经由带内路径向PE转发。在其中使用 SCSI协议的实施例中,在如在SAM-5(SCSI架构模型-5)中指定的SCSI LUN数据字段中编码 vvol信息,该数据字段是8字节结构。在前2个字节中编码常规地用于LUN ID的PE ID,并且 利用剩余6个字节(的一部分)在SCSI第二级LUN ID中编码vvol信息、具体为SLLID。
[0064]如图5A中进一步所示,数据访问层540也包括用于处置通过带内路径从存储系统 接收的10错误的错误处置单元542。在一个实施例中,I/O管理器304通过PE传播错误处置单 元542接收的10错误。10错误类的示例包括在计算机系统101与PE之间的路径错误、PE错误 和vvol错误。错误处置单元542将所有检测到的错误分类为前述类。在遇到通向PE的路径错 误并且通向PE的另一路径存在时,数据访问层540沿着通向PE的不同路径发送10。在10错误 是PE错误时,错误处置单元542更新块设备数据库533以指示用于通过PE发出10的每个块设 备的错误状况。在10错误是vvol错误时,错误处置单元542更新块设备数据库533以指示用 于与vvol关联的每个块设备的错误状况。错误处置单元542也可以发出报警或者系统事件, 从而将拒绝向具有错误状况的块设备的进一步10。
[0065]图5B是图5A的计算机系统的框图,该计算机系统已经被配置用于与图2B的存储系 统群集而不是图2A的存储系统群集对接。在这一实施例中,数据访问层540包括NFS客户端 545和用于NIC 503的设备驱动器546 JFS客户端545将块设备名称映射到PE ID(NAS存储系 统的IP地址)和SLLID,该SLLID是与块设备对应的NFS文件句柄。如图5B中所示在块设备数 据库533中存储这一映射。应当注意,活跃和CIF列仍然存在、但是在图5B中所示块设备数据 库533中未被图示。如以下将描述的那样,NFS文件句柄在NAS存储系统内唯一标识文件对象 并且可以在绑定过程期间被生成。备选地,响应于对于绑定vvol的请求,NAS存储系统返回 PE ID和SLLID,并且使用普通带内机制(例如,查找或者readdirplus)的vvol的开放将给定 NFS文件句柄。NFS客户端545也将从虚拟卷设备驱动器532接收的原始块级10转译成基于 NFS文件的10。用于NIC 503的设备驱动器546然后以符合协议的格式格式化基于NFS文件的 10并且将它们与NFS句柄一起发送到NIC 503用于经由带内路径向PE之一转发。
[0066]图5C是被配置用于实施虚拟卷的计算机系统的另一实施例的框图。在这一实施例 中,向计算机系统102配置这里表示为管理程序560的虚拟化软件。在硬件平台550上面安装 管理程序560,该硬件平台包括CPU 551、存储器552、NIC 553和HBA 554并且支持虚拟机执 行空间570,可以在该虚拟机执行空间570内并行实例化和执行多个虚拟机(VM)5711-571N。 在一个或者多个实施例中,使用加利福尼亚州帕罗奥图市的VMware公司分发的VMware vSphere?产品来实施管理程序560和虚拟机571。每个虚拟机571实施虚拟硬件平台573, 该虚拟硬件平台573支持安装能够执行应用579的客户操作系统(0S)572。客户0S 572的示 例包括熟知的商用操作系统、比如Microsoft Windows、Linux等中的任何操作系统。在每个 实例中,客户OS 572包括本机文件系统层(在图5C中未示出)、例如NTFS或者ext3FS类型的 文件系统层。这些文件系统层与虚拟硬件平台573对接以从客户0S 572的观点来看访问数 据存储装置HBA,该数据存储装置HBA在现实中是虚拟硬件平台573实施的虚拟HBA 574,该 虚拟HBA提供盘存储支持的表现(在现实中为虚拟盘或者虚拟盘575A-575X)以实现执行客 户0S 572。在某些实施例中,虚拟盘575A-575X可以表现为从客户0S 572的观点来看支持用 于连接到虚拟机的SCSI标准或者本领域普通技术人员已知的包括IDE、ATA和ATAPI的任何 其它适当硬件连接接口标准。虽然,从客户0S 572的观点来看,这样的客户0S 572发起的用 于实施与文件系统有关的数据传送和控制操作的文件系统调用表现为向虚拟盘575A-575X 寻路由用于最终执行,但是在现实中,通过虚拟HBA 574处理和传递这样的调用至附属的虚 拟机监视器(VMM)5611-561N,这些虚拟机监视器(VMM)实施为了与管理程序560协调操作而 需要的虚拟系统支持。具体而言,HBA仿真器562在功能上使数据传送和控制操作能够由管 理程序560正确处置,该管理程序560通过其各种层向连接到存储系统130的HBA 554最终传 递这样的操作。
[0067]根据这里描述的实施例,每个VM 571具有与之关联的一个或者多个vvol并且向管 理程序560按照VM 571向管理程序560中的"创建设备"调用来创建的vvol的块设备实例发 出10。在块设备数据库580中维护在块设备名称与vvol ID之间的关联。来自VM 5712-571N 的10由SCSI虚拟化层563接收,该SCSI虚拟化层563将它们转换成虚拟机文件系统(VMFS)驱 动器564理解的文件10 JMFS驱动器564然后将文件10转换成块10,并且向虚拟卷设备驱动 器565提供块10。在另一方面,来自VM 5711的10被示出用于绕过VMFS驱动器564并且被直接 提供给虚拟卷设备驱动器565,这表示VM 5711以在美国专利7,155,558中描述的方式直接 访问其块设备作为原始存储设备、例如作为数据库盘、日志盘、备份存档和内容贮存库。 [0068]在虚拟卷设备驱动器565接收块10时,它访问块设备数据库580以引用在10中指定 的块设备名称与PE ID和SLLID之间的映射,该PE ID和SLLID定义通向与块设备名称关联的 vvol的10会话。在这里所示示例中,块设备名称dbase和log分别对应于为VM 5711创建的块 设备实例vvoll和vv〇14,并且块设备名称vmdk2、vmdkn和snapn分别对应于为VM 5712-571N 中的一个或者多个VM创建的块设备实例VV〇112、VV〇116和vvoll7。在块设备数据库580中存 储的其它信息包括用于每个块设备的活跃位值,该活跃位值指示块设备是否活跃,并且包 括CIF(在飞行中的命令)值。活跃位"Γ表示可以向块设备发出10。活跃位"0"表示块设备不 活跃并且不能向块设备发出I0XIF值提供多少10在飞行中、即,被发出、但是尚未完成的指 示。在这里所示示例中,块设备f 〇〇活跃并且具有一些在飞行中的命令。
[0069]除了执行以上描述的映射之外,虚拟卷设备驱动器565还向数据访问层566发出原 始块级10。数据访问层566包括设备访问层567和用于HBA 554的设备驱动器568,该设备访 问层将命令排队和调度策略应用于原始块级10,并且该设备驱动器在符合协议的格式中格 式化原始块级10并且向HBA 554发送它们用于经由带内路径向PE转发。在其中使用SCSI协 议的实施例中,在如在SAM-5(SCSI架构模型-5)中指定的SCSI LUN数据字段中编码vvol信 息,该数据字段是8字节结构。在前2个字节中编码常规地用于LUN ID的PE ID,并且利用剩 余6个字节(的一部分)在SCSI第二级LUN ID中编码vvol信息、具体为SLLID。如图5C中进一 步所示,数据访问层566也包括以与错误处置单元542相同的方式工作的错误处置单元569。 [0070]图5D是图5C的计算机系统的框图,该计算机系统已经被配置用于与图2B的存储系 统群集而不是图2A的存储系统群集对接。在这一实施例中,数据访问层566包括NFS客户端 585和用于NIC 553的设备驱动器586AFS客户端585将块设备名称映射到PE ID(IP地址)和 与块设备对应的SLLID(NFS文件句柄)。如图?中所示在块设备数据库580中存储这一映射。 应当注意,活跃和CIF列仍然存在、但是在图f5D中所示块设备数据库580中未被图示。如以下 将描述的那样,NFS文件句柄在NAS内唯一标识文件对象并且在一个实施例中在绑定过程期 间被生成。NFS客户端585也将从虚拟卷设备驱动器565接收的原始块级10转译成基于NFS文 件的10。用于NIC 553的设备驱动器586然后在符合协议的格式中格式化基于NFS文件的10 并且将它们与NFS句柄一起发送到NIC 553用于经由带内路径向PE之一转发。
[0071] 应当认识,可以不同地引用用来描述图5A至图5D中的部件的各种术语、层和分类 而未脱离它们的功能或者本发明的精神实质和范围。例如VMM 561可以视为在VM 571与管 理程序560之间的分离虚拟化部件(在这样的概念中可以本身视为虚拟化"内核"部件),因 为存在有用于每个实例化的VM的分离VMM。备选地,每个VMM 561可以视为它的对应虚拟机 的部件,因为这样的VMM包括用于虚拟机的硬件仿真部件。在这样的备选概念中,例如描述 为虚拟硬件平台573的概念层可以与VMM 561合并和合并到VMM 561中,从而从图5C和图5D 去除虚拟主机总线适配器574(即,因为它的功能由主机总线适配器仿真器562实现)。
[0072] 图6是图示根据本发明的一个实施例的用来管理vvol的部件和通信路径的计算机 环境的简化框图。如先前描述的那样,用于10协议流量的通信路径称为带内路径并且在图6 中表示为虚线601,该虚线连接计算机系统的数据访问层540(通过在计算机系统中提供的 HBA或者NIC)与在存储系统130中配置的一个或者多个PE。用来管理vvol的通信路径是带外 路径(如先前定义的那样,不是"在带内"的路径)并且在图6中表示为实线602。根据这里描 述的实施例,可以通过在管理服务器610中提供的插件612和/或在计算机系统103中的每个 计算机系统中提供的插件622管理vvol,在图6中仅示出这些插件之一。在存储设备侧上,管 理接口 625由存储系统管理器131配置,并且管理接口 626由存储系统管理器132配置。此外, 管理接口 624由分布式存储系统管理器135配置。每个管理接口与插件612、622通信。为了有 助于发出和处置管理命令,已经开发特殊应用编程接口(API)。应当认识,在一个实施例中, 定制两个插件612、622以与来自特定存储系统销售商的存储硬件通信。因此,管理服务器 610和计算机系统103将在与用于不同存储系统销售商的存储硬件通信时运用不同插件。在 另一实施例中,可以有与任何销售商的管理接口交互的单个插件。这将需要将存储系统管 理器编程为熟知接口(例如,借助由计算机系统和/或管理服务器发布)。
[0073]还向管理服务器610配置用于关联计算机系统的系统管理器611。在一个实施例 中,计算机系统执行虚拟机,并且系统管理器611管理在计算机系统中运行的虚拟机。管理 虚拟机的系统管理器611的一个示例是VMware公司分发的vSphere?产品。如图所示,系 统管理器611与在计算机系统103中运行的主机后台程序(daemon) (hostd)621通信(通过在 管理服务器610和计算机系统103二者的适当软件界面)以从计算机系统103接收资源使用 报告并且对在计算机系统103中运行的应用发起各种管理操作。
[0074]图7是用于使用认证相关API向图2A或者图2B的存储系统群集认证计算机系统的 方法步骤的流程图。在计算机系统通过向存储系统发送它的安全套接字层(SSL)证书来请 求认证时发起这些方法步骤。在步骤710,存储系统向请求认证的计算机系统发出用于认证 证书的提示(例如,用户名和口令)。在步骤712接收认证证书时,存储系统在步骤714比较它 们与存储的证书。如果提供正确证书,则存储系统在关键字存储库(步骤716)中存储认证的 计算机系统的SSL证书。如果提供不正确证书,则存储系统忽略SSL证书并且返回适当错误 消息(步骤718)。在被认证之后,计算机系统可以调动API以通过SSL链路向存储系统发出管 理命令,并且在SSL证书中包括的唯一上下文ID由存储系统用来实行某些策略、比如定义哪 些计算机系统可以访问哪些存储容器。在一些实施例中,在管理计算机系统批准的权限时 使用它们的上下文ID。例如,主机计算机可以被允许创建vvol、但是不可以被允许删除vvol 或者vvol的快照,或者主机计算机可以被允许创建vvol的快照、但是不可以被允许克隆 vvol。此外,权限可以根据登录到认证的计算机系统的用户的用户级特权变化。
[0075]图8是用于使用创建虚拟卷API命令来创建虚拟卷的方法步骤的流程图。在一个实 施例中,计算机系统103在计算机系统103在步骤802从它的应用之一接收对于创建具有某 个大小和存储能力简档、比如最小I0PS和平均延时的vvol的请求时经由带外路径602向存 储系统发出创建虚拟卷API命令。作为响应,计算机系统103在步骤804(在计算机系统103和 请求应用被允许访问的并且具有充分自由容量以适应请求的存储容器之中)选择存储容器 并且经由插件622向存储系统发出创建虚拟卷API命令。API命令包括vvol的存储容器ID、 vvo 1大小和存储能力简档。在另一实施例中,API命令包括应用要求存储系统与新创建的 vvol存储的关键字-值对集合。在另一实施例中,管理服务器610经由带外路径602向存储系 统发出创建虚拟卷API命令(经由插件612)。
[0076]在步骤806,存储系统管理器经由管理接口(管理接口624、625或者626)接收对于 生成vvol的请求并且访问选择的存储容器的在容器数据库316中的元数据分节以验证包括 计算机系统103和应用的请求上下文具有充分权限以在选择的存储容器中创建vvol。在一 个实施例中,如果权限级别不充分,则向计算机系统103返回错误消息。如果权限级别充分, 则在步骤810生成唯一vvol ID。然后在步骤812,存储系统管理器扫描容器数据库316的元 数据分节中的分配位图以确定选择的存储容器的自由分区。存储系统管理器分配选择的存 储容器的足以适应请求的vvol大小的自由分区并且更新存储容器的在容器数据库316的元 数据分节中的分配位图。存储系统管理器也用新vvol条目更新vvol数据库314。新vvol条目 包括在步骤810生成的vvol条目、新分配的存储容器盘区有序列表和新vvol的表达为关键 字-值对的元数据。然后,在步骤814,存储系统管理器向计算机系统103发送vvol ID。在步 骤816计算机系统103关联vvol ID与请求创建vvol的应用。在一个实施例中,为每个应用维 护一个或者多个vvol描述符文件,并且向为请求创建vvol的应用维护的vvol描述符文件中 写入vvol ID〇
[0077] 如图2A和图2B中所示,并非所有vvol连接到PE。未连接到PE的vvol未知对应应用 发出的10,因为未向vvol建立10会话。在可以向发出10之前,vvol经历绑定过程,作为该绑 定过程的结果,vvol将被绑定到特定PE。一旦vvol绑定到PE,可以向vvol发出10直至从PE解 绑vvol〇
[0078] 在一个实施例中,计算机系统130使用绑定虚拟卷API经由带外路径602向存储系 统发出绑定请求。绑定请求标识待绑定的vvol(使用vvol ID),并且作为响应,存储系统将 vvo 1绑定到计算机系统103经由带内路径连接到的PE。图9A是用于计算机系统经由带内路 径发现它连接到的PE的方法步骤的流程图。使用标准SCSI命令REP0RT_LUNS经由带内路径 发现在基于SCSI协议的存储设备中配置的PE。使用API经由带外路径发现在基于NFS协议的 存储设备中配置的PE。计算机系统为每个连接的存储系统执行图9A的方法步骤。
[0079]在步骤910,计算机系统确定连接的存储系统是否基于SCSI协议或者基于NFS协 议。如果存储系统基于SCSI协议,则计算机系统向存储系统带内发出SCSI命令REP0RT_LUNS (步骤912)。然后在步骤913,计算机系统检查来自存储系统的响应、具体为与返回的PE ID 中的每个PE ID关联的PE位以在与PE有关的LUN与常规数据LUN之间区分。如果存储系统基 于NFS协议,则计算机系统从插件622向管理接口(例如,管理接口 624、625或者626)带外发 出API调用以获得可用PE的ID(步骤914)。在跟随步骤913和914的步骤916,计算机系统存储 由存储系统返回的与PE有关的LUN的PE ID或者管理接口返回的PE ID用于在绑定过程期间 使用。应当认识,基于SCSI协议的存储设备返回的PE ID各自包括WWN,并且基于NFS协议的 存储设备返回的PE ID各自包括IP地址和装配点。
[0080] 图9B是用于存储系统管理器131或者存储系统管理器132或者分布式存储系统管 理器135(下文称为"存储系统管理器")发现给定的计算机系统103经由带内路径连接到的 PE的方法步骤的流程图。存储系统管理器发现这样的PE使存储系统能够响应于来自请求计 算机系统的绑定请求向计算机系统返回计算机系统可以被实际连接到其上的有效PE ID。 在步骤950,存储系统管理器经由管理接口和插件622向计算机系统103发出带外 "Discovery_Topology (发现_拓扑)"API调用。计算机系统103返回它的系统ID和它经由图 9A的流程图发现的所有PE ID的列表。在一个实施例中,存储系统管理器通过经由管理接口 和插件612向管理服务器610发出"Discovery_Topology"API调用来执行步骤950。在这样的 实施例中,存储系统将接收响应,该响应包含多个计算机系统ID和关联PE ID,一个计算机 系统ID和关联PE ID用于关联服务器610管理的每个相应计算机系统103。然后,在步骤952, 存储系统管理器处理来自步骤950的结果。例如存储系统管理器清除未在它的当前控制之 下的所有PE ID的列表。例如,存储系统管理器135在发出DiSC〇Very_T〇p〇l 〇gy调用时接收 的某些PE ID可以对应于连接到相同计算机系统的另一存储系统。相似地,某些接收的PE ID可以对应于自从被存储系统管理员删除起的更老的PE,等等。在步骤954,存储系统管理 器高速缓存处理的结果用于在后续绑定过程期间使用。在一个实施例中,存储系统管理器 周期性地运行图9B的步骤以用进行中的计算机系统和网络拓扑改变更新它的高速缓存的 结果。在另一实施例中,存储系统管理器每当它接收新vvol创建请求时运行图9B的步骤。在 更多另一实施例中,存储系统管理器在运行图7的认证步骤之后运行图9B的步骤。
[0081] 图10是用于使用绑定虚拟卷API来发出和执行虚拟卷绑定请求的方法步骤的流程 图。在一个实施例中,计算机系统103在它的应用之一请求10访问与尚未绑定到PE的vvol关 联的块设备时经由带外路径602向存储系统发出绑定请求。在另一实施例中,管理服务器 610结合某些VM管理操作发出绑定请求,这些VM管理操作包括VM通电和从一个存储容器向 另一存储容器的vvol迀移。
[0082]继续以上描述的示例,在该示例中,应用请求10访问与尚未绑定到PE的vvol关联 的块设备,计算机系统103在步骤1002从块设备数据库533(或者580)确定vvol的vvol ID。 然后在步骤1004,计算机系统1003通过带外路径602向计算机系统发出对于绑定vvol的请 求。
[0083]存储系统管理器接收在步骤1006经由管理接口(例如,管理接口624、625或者626) 接收对于绑定vvol的请求、然后执行步骤1008,该步骤包括选择vvol将被绑定到的PE、生成 用于选择的PE的SLLID和生成数并且更新连接数据库312(例如,经由10管理器304)。根据连 通进行选择vvol将被绑定到的ΡΕ、即仅具有与计算机系统103的现有带内连接的ΡΕ可用于 选择。在一个实施例中,存储系统根据图9B的方法从计算机系统103向它发送的处理和高速 缓存的PE列表选择。SLLID生成在运用图2A的存储系统群集的实施例与运用图2B的存储系 统群集的实施例之间的不同。在前一情况下,生成对于选择的PE唯一的SLLID。在后一情况 下,生成通向与vvol对应的文件对象的文件路径作为SLLID。在已经对于选择的TO生成 SLLID和生成数之后,更新连接数据库312以包括与vvol的新生成的10会话。然后,在步骤 1010,向计算机系统103返回选择的PE的ID、生成的SLLID和生成数。可选地,在运用图2B的 存储系统群集的实施例中,可以对于与vvol对应的文件对象生成并且与选择的PE的ID、生 成的SLLID和生成数一起向计算机系统103返回唯一 NFS文件句柄。在步骤1012,计算机系统 103更新块设备数据库533(或者580)以包括从存储系统返回的PE ID、SLLID(以及可选地返 回的NFS句柄)和生成数。具体而言,可以向块设备数据库533(或者580)添加从存储系统返 回的PE ID、SLLID(以及可选地返回的NFS句柄)和生成数的每个集合作为新条目。应当认 识,生成数用来防范重放共计。因此,在其中未考虑重放共计的实施例中,未使用生成数。
[0084]在希望向相同vvol发出10的不同应用发起的向相同vvol的后续绑定请求时,存储 系统管理器可以将vvol绑定到相同或者不同PE。如果将vvol绑定到相同PE,则存储系统管 理器返回相同PE的ID和先前生成的SLLID并且递增在连接数据库312中存储的这一 10连接 路径的参考计数。在另一方面,如果将vvol绑定到不同PE,则存储系统管理器生成新SLLID 并且返回不同PE的ID和新生成的SLLID并且向连接数据库312添加与vvol的这一新10连接 路径作为新条目。
[0085] 可以使用解绑虚拟卷API来发出虚拟卷解绑请求。解绑请求包括如下10连接路径 的PE ID和SLLID,先前已经通过该10连接路径绑定vvol。然而建议处理解绑请求。存储系统 管理器自由立即或者在延迟之后从PE解绑vvol。通过更新连接数据库312以递减包含PE ID 和SLLID的条目的参考计数来处理解绑请求。如果将参考计数递减至零,则可以删除条目。 在这一情况下应当注意,vvol继续存在、但是不再可用于使用给定的PE ID和SLLID的10。 [0086]在实施VM的虚拟盘的vvol的情况下,用于这一vvol的参考计数将至少为一。在使 VM断电并且与之结合发出解绑请求时,参考计数将被递减一。如果参考计数为零,则可以从 连接数据库312去除vvol条目。一般而言,从连接数据库312去除条目是有益的,因为1/0管 理器304管理更少数据并且也可以回收SLLID。这样的益处在存储系统存储的vvol总数大 (例如vvol数以百万计级)、但是应用活跃地访问的vvol总数小(例如VM数以万计)时变得显 著。此外,在vvol未被绑定到任何PE时,存储系统在选择在DSU 141中何处存储vvol时具有 更大灵活性。例如可以用不对称、分级DSU 141实施存储系统,其中一些DSU 141提供更快数 据访问并且其它DSU 141提供更慢数据访问(例如以节省存储成本)。在一个实现方式中,在 vvol未被绑定到任何PE(这可以通过检查vvol的在连接数据库312中的条目参考计数来确 定)时,存储系统可以向更慢和/或更廉价类型的物理存储装置迀移vvol。然后,一旦将vvol 绑定到PE,存储系统可以向更快类型的物理存储装置迀移vvol。应当认识,可以通过改变 vvol数据库314中的组成给定的vvol的容器位置有序列表的一个或者多个元素并且更新容 器数据库316的元数据分节中的对应盘区分配位图来实现这样的迀移。
[0087]向PE绑定和解绑vvol使存储系统管理器能够确定vvol活性。存储系统管理器可以 利用这一信息以对非10服务(消极)和10服务(活跃)VV〇l执行存储系统销售商专属优化。例 如存储系统管理器可以被配置用于如果vvol在消极状态中保持超出特定阈值时间则将它 从低延时(高成本)SSD重新定位到中延时(低成本)硬驱动。
[0088]图11A和图11B是根据一个实施例的用于向虚拟卷发出IP的方法步骤的流程图。图 11A是用于从应用向原始块设备直接发出IP的方法步骤1100的流程图,并且图11B是用于从 应用通过文件系统驱动器发出IP的方法步骤1120的流程图。
[0089] 方法1100在步骤1102开始,其中应用、比如图5A至图5B中所示应用512或者图5C至 图中所示VM 571向原始块设备发出10。在步骤1104,虚拟卷设备驱动器532或者565根据 应用发出的10生成原始块级10。在步骤1106,原始块设备的名称由虚拟卷设备驱动器532或 者565转译成PE ID和SLLID(并且在运用图2B的存储设备的实施例中也由NFS客户端545或 者585转译成NFS句柄)。在步骤1108,数据访问层540或者566执行将PE ID和SLLID(并且在 运用图2B的存储设备的实施例中也将NFS句柄)编码成原始块级10。然后,在步骤1110,HBA/ NIC发出原始块级10。
[0090] 对于非VM应用、比如图5A至图5B中所示应用512,方法1120在步骤1121开始。在步 骤1121,应用向在基于vvol的块设备上存储的文件发出10。然后在步骤1122,文件系统驱动 器、例如文件系统驱动器510根据文件10生成块级10。在步骤1122,执行与步骤1106、1108和 1110相同的步骤1126、1128和1130。
[0091] 对于VM应用、比如图5C至图5D中所示VM 571,方法1120在步骤1123开始。在步骤 1123,VM向它的虚拟盘发出10。然后,在步骤1124,这一 10例如由SCSI虚拟化层563转译成文 件10。文件系统驱动器、例如VMFS驱动器564然后在步骤1125根据文件10生成块级10。在步 骤1125之后,执行与步骤1106、1108和1110相同的步骤1126、1128和1130。
[0092] 图12是根据一个实施例的用于在存储系统执行10的方法步骤的流程图。在步骤 1210,通过在存储系统中配置的PE之一接收计算机系统发出的10。10管理器304在步骤1212 解析10。在步骤1212之后,如果存储系统群集是图2A中所示类型,则10管理器304执行步骤 1214a,并且如果存储系统群集是图2B中所示类型,则10管理器304执行步骤1214b。在步骤 1214a,10管理器304从解析的10提取SLLID并且访问连接数据库312以确定与PE ID和提取 的SLLID对应的vvol ID。在步骤1214b,10管理器304从解析的10提取NFS并且使用PE ID和 NFS句柄作为SLLID来标识vvol。在步骤1214a和1214b之后执行步骤1216。在步骤1216,卷管 理器306和容器管理器308分别访问vvol数据库314和容器数据库316以获得将对其执行10 的物理存储位置。然后在步骤1218,数据访问层310对在步骤1216获得的物理存储位置执行 10。
[0093] 在一些情形中,应用(应用512或者VM 571)、管理服务器610和/或存储系统管理器 可以确定vvol到特定PE的绑定比如在PE由于太多绑定而变成超负荷时经历问题。作为一种 解决这样的问题的方式,即使在10命令被引向vvol之时,存储系统管理器仍然可以将绑定 的vvol重新绑定到不同PE。图13是根据一个实施例的用于使用重新绑定API来发出和执行 vvo 1重新绑定请求的方法步骤1300的流程图。
[0094]如图所示,方法1300在步骤1302开始,其中存储系统管理器确定应当将vvol绑定 到与vvol当前被绑定到的第一 PE不同的第二PE。在步骤1304,存储系统管理器经由带外请 求向计算机系统(例如计算机系统103)发出对于重新绑定vvo 1的请求,该计算机系统运行 向vvol发出10的应用。在步骤1306,计算机系统103从存储系统管理器接收重新绑定请求并 且作为响应发出对于将νν〇1绑定到新ΡΕ的请求。在步骤1308,存储系统管理器接收重新绑 定请求并且作为响应将vvol绑定到新ΡΕ。在步骤1310,存储系统管理器如以上结合图10描 述的那样向计算机系统发送vvol现在也被绑定到的新PE的ID和用于访问vvol的SLLID。 [0095]在步骤1312,计算机系统从存储系统管理器接收新PE ID和SLLID。在块设备数据 库533或者580中,初始地将新PE连接的活跃位设置成1,这意味着已经建立经由新PE的用于 vvol的新10会话。计算机系统也将第一 PE连接的活跃位设置成0,这表示不能通过这一 PE连 接向vvol发出更多10。应当认识,不应在去激活时立即解绑这一 PE连接,因为可能有通过这 一PE连接的向vvol的10,这些10可能在非限制、即被发出、但是未完成。因此,在步骤1314, 计算机系统访问块设备数据库533或者580以查看是否已经完成通过第一 PE连接向vvol发 出的所有"在飞行中的命令"(CIF)、即是否CIF = 0。计算机系统在执行步骤1318之前等待 CIF变成零。同时,通过新PE发出向vvol的附加10,因为已经将新PE连接的活跃位设置成1。 在CIF达到零时,执行步骤1318,其中向存储系统管理器发出对于解绑第一PE连接的请求。 然后在步骤1320,存储系统管理器从第一 PE解绑vvol。计算机系统也在步骤1324通过新PE 向vvol发出所有附加10。
[0096]图14是根据一个实施例的虚拟卷的生命周期的概念图。图14中所示所有命令、即 创建、快照、克隆、绑定、解绑、扩展和删除形成vvol命令集并且通过以上结合图6描述的插 件612、622可访问。如图所示,在作为以下命令--创建vvol、快照vvol或者克隆vvol-- 中的任何命令的结果生成vvo 1时,生成的vvo 1在"消极"状态中保持,其中vvo 1未被绑定到 特定PE、因此不能接收10。此外,在vvo 1在消极状态中时执行以下命令---决照vvo 1、克隆 vvo 1或者扩展vvo 1--中的任何命令时,原有vvo 1和新创建的vvo 1 (如果有)在消极状态中 保持。也如图所示,当在消极状态中的vvol被绑定到PE时,vvol进入"活跃"状态。反言之,在 从PE解绑活跃vvol时,vvol进入消极状态,这假设vvol未被绑定到任何附加 PE。当vvol在活 跃状态中时执行以下命令---决照v v〇 1、克隆vvo 1、扩展v v〇 1或者重新绑定v v〇 1--中的 任何命令时,原有vvol在活跃状态中保持,并且新创建的vvol(如果有)在消极状态中保持。 [0097] 如以上描述的那样,VM可以具有多个虚拟盘,并且为每个虚拟盘创建分离vvol JM 也具有描述VM的配置的元数据文件。元数据文件包括VM配置文件、VM日志文件、盘描述符文 件、VM交换文件等,每个盘描述符文件用于VM的虚拟盘中的每个相应虚拟盘。用于虚拟盘的 盘描述符文件包含涉及虚拟盘的信息、比如它的vvol ID、它的大小、是否瘦调配虚拟盘和 为虚拟盘创建的一个或者多个快照的标识等。VM交换文件提供存储系统上的VM的交换空 间。在一个实施例中,在vvol中存储这些VM配置文件,并且这一vvol这里称为元数据vvol。 [0098]图15是根据一个实施例的用于调配VM的方法步骤的流程图。在这一实施例中,使 用管理服务器610、主控VM的计算机系统、例如图5C中所示计算机102(下文称为"主机计算 机")和图2A的存储系统群集、具体为存储系统管理器131、132或者135。如图所示,存储系统 管理器在步骤1502接收对于调配VM的请求。这可以是在使用与管理服务器610的适当用户 接口的VM管理员向管理服务器610发出用于调配具有某个大小和存储能力简档的VM的命令 时生成的请求。响应于该命令,在步骤1504,管理服务器610发起用于用以上结合图8描述的 方式创建用于包含VM的元数据的vvol (下文称为"元数据vvol")的方法,存储系统管理器在 步骤1508按照该方法创建元数据vvol并且向管理服务器610返回元数据vvol的vvol ID。在 步骤1514,管理服务器610向主控VM的计算机系统注册回元数据vvol的vvol ID。在步骤 1516,主机计算机发起用于用以上结合图10描述的方式将元数据vvol绑定到PE的方法,存 储系统管理器在步骤1518按照该方法将元数据vvol绑定到PE并且向主机计算机返回PE ID 和SLLID。
[0099] 在步骤1522,主机计算机使用向主机计算机的操作系统中的"创建设备"调用来创 建元数据vvol的块设备实例。然后在步骤1524,主机计算机在块设备上创建文件系统(例如 VMFS),响应于这一点返回文件系统ID(FSID)。主机计算机在步骤1526装配具有返回的FSID 的文件系统并且向与这一文件系统关联的命名空间中存储VM的元数据。元数据的示例包括 VM日志文件、盘描述符文件和VM交换文件,每个盘描述符文件用于VM的虚拟盘中的每个相 应虚拟盘。
[0100] 在步骤1528,主机计算机发起用于用以上结合图8描述的方式为VM的虚拟盘中的 每个虚拟盘创建vvol (每个这样的vvol这里称为"数据vvol")的方法,存储系统管理器在步 骤1530按照该方法创建数据vvol并且向主机计算机返回数据vvol的vvol ID。在步骤1532, 主机计算机在用于虚拟盘的盘描述符文件中存储数据vvol的ID。该方法以在已经为VM的所 有虚拟盘创建数据vvol之后解绑元数据vvol (未示出)作为结束。
[0101]图16A是用于在已经以结合图15描述的方式调配Vm之后使VM通电的方法步骤的流 程图。图16B是在已经使VM通电之后使VM断电的方法步骤的流程图。这两种方法由用于VM的 主机计算机执行。
[0102] 在步骤1608接收VM通电命令时,在步骤1610获取与VM对应的元数据vvol。然后在 步骤1612,元数据vvol经历如以上结合图10描述的绑定过程。在步骤1614在元数据vvol上 装配文件系统,从而可以在步骤1616读取用于数据vvol的元数据文件、具体为盘描述符文 件并且获得数据vvol ID。数据vvol然后在步骤1618逐个经历如以上结合图10描述的绑定 过程。
[0103] 在步骤1620接收VM断电命令时,在块设备数据库(例如,图5C的块设备数据库580) 标记VM的数据vvol为不活跃,并且主机计算机等待与数据vvol中的每个vvol关联的CIF达 到零(步骤1622)。在与每个数据vvol关联的CIF达到零时,主机计算机在步骤1624请求存储 系统解绑该数据vvol。在与所有数据vvol关联的CIF达到零之后,在步骤1626在块设备数据 库中标记元数据为不活跃。然后在步骤1628,在与元数据vvol关联的CIF达到零时,主机计 算机在步骤1630请求解绑元数据vvol。
[0104]图17和图18是用于重新调配VM的方法步骤的流程图。在这里所不不例中,图17是 用于扩展VM的vvol、具体为用于VM的虚拟盘的数据vvol的大小的在主机计算机上执行的方 法步骤的流程图,并且图18是用于在存储容器之间移动VM的vvol的在存储系统中执行的方 法步骤的流程图。
[0105]用于扩展用于VM的虚拟盘的数据vvol的大小的方法在步骤1708开始,其中主机计 算机确定是否使VM通电。如果主机计算机在步骤1708确定未使VM通电,则主机计算机在步 骤1710获取与VM对应的元数据vvol的ID。然后,主机计算机在步骤1712发起用于元数据 vvol的绑定过程。在绑定之后,在步骤1714,主机计算机在元数据vvol上装配文件系统并且 从用于虚拟盘的盘描述符文件获取与虚拟盘对应的数据vvol的ID,该盘描述符文件是在元 数据vvo 1上装配的文件系统中的文件。然后在步骤1716,主机计算机在步骤1716向存储系 统发送扩展vvo 1 API调用,其中扩展vvo 1 API调用可以包括数据V vo 1的ID和数据vvo 1的新 大小。
[0106] 如果使VM通电,则主机计算机在步骤1715接收VM的待扩展的虚拟盘的数据vvol的 ID。应当从图16A的方法认识,可以从与VM的虚拟盘关联的盘描述符文件获得这一 ID。然后, 在步骤1716,主机计算机在步骤1716向存储系统发送扩展vvol API调用,其中扩展vvol API调用包括数据vvol的ID和数据vvol的新大小。
[0107] 扩展vvol API调用造成在存储系统中更新vvol数据库和容器数据库(例如,图3的 vvol数据库314和容器数据库316)以反映 vvol的增加的地址空间。在接收扩展vvol API调 用已经完成的确认时,主机计算机在步骤1718用新大小更新用于VM的虚拟盘的盘描述符文 件。然后在步骤1720,主机计算机确定是否使VM通电。如果不是,则主机计算机在步骤1722 拆卸文件系统并且向存储系统发送对于解绑元数据vvol的请求。在另一方面,如果使VM通 电,则该方法终止。
[0108] 用于将VM的当前绑定到PE的vvol从源存储容器移向目的地存储容器--其中源 存储容器和目的地存储容器二者在相同存储系统管理器的范围内--的方法在步骤1810 开始,其中接收源和目的地存储容器的容器ID(分别为SCI和SC2)以及待移动的vvol的vvol ID。然后,在步骤1812,更新vvo 1数据库(例如图3的vvo 1数据库314)和容器数据库(例如,图 3的容器数据库316)的盘区分配位图如下。首先,存储系统管理器从SCI的在容器数据库316 中的条目去除SCI中的vvol盘区、然后通过修改SC2的在容器数据库316中的条目来向SC2指 派这些盘区。在一个实施例中,存储系统可以通过向SCI指派新纺锤体盘区来补偿SCI中的 存储容量损失(由于去除vvol存储盘区)并且通过从SC2去除一些未使用的纺锤体盘区来弥 补SC2中的存储容量增加(由于添加 vvol存储盘区)。在步骤1814,存储系统管理器确定当前 绑定的PE是否能够最优地服务于向vvo 1的新位置的10。其中当前PE不能服务于向vvo 1的新 位置的10的示例实例是如果存储管理员已经静态配置存储系统管理器以向来自不同客户 并且因此来自不同存储容器的vvol指派不同PE。如果当前TO不能服务于向vvol的10,则 vvol在步骤1815经历以上结合图13描述的重新绑定过程(和对连接数据库、例如图3的连接 数据库312的关联改变)。在步骤1815之后,执行步骤1816,其中向主机计算机返回成功移动 完成的确认。如果存储系统管理器在步骤1814确定当前PE能够服务于向vvol的新位置的 10,则绕过步骤1815并且接着执行步骤1816。
[0109] 当在不兼容存储容器之间、例如在不同制造商的存储设备中创建的存储容器之间 移动vvol时,除了对容器数据库316、vvol数据库314和连接数据库312的改变之外还在存储 容器之间执行数据移动。在一个实施例中,运用在通过这里引用将全部内容结合于此、提交 于2008年5月29 日并且标题为 "Offloading Storage Operations to Storage Hardware" 的第12/129,323号美国专利申请中描述的数据移动技术。
[0110] 图19是用于从模板VM克隆VM的在主机计算机和存储系统中执行的方法步骤的流 程图。这一方法在步骤1908开始,其中主机计算机向存储系统发送对于为新VM创建元数据 vvol的请求。在1910,存储系统根据以上结合图8描述的方法为新VM创建元数据并且向主机 计算机返回新元数据vvol ID。然后在步骤1914,对于属于模板的所有数据vvol ID从主机 计算机经由带外路径601向存储系统发出克隆vvol API调用。在步骤1918,存储系统检查以 查看模板VM和新VM的数据vvol是否兼容。应当认识,如果克隆在不同制造商的存储系统中 创建的存储容器之间出现,则数据vvol不可能兼容。如果有兼容性,则执行步骤1919。在步 骤1919,存储系统管理器通过生成新数据vvol ID、更新容器数据库316中的分配位图并且 向vvol数据库314添加新vvol条目来创建新数据vvol并且向新VM的数据vvol复制在模板VM 的数据vvol中存储的内容。在步骤1920,存储系统管理器向主机计算机返回新数据vvol ID。接收新数据vvol ID向主机计算机提供数据vvol克隆完成而无错误的确认。然后在步骤 1925,主机计算机向新VM的元数据vvo 1发出10以用新生成的数据vvo 1 ID更新元数据文件、 具体为盘描述符文件。存储系统在步骤1926执行主机计算机向存储系统发出的10,作为这 一点的结果,用新生成的数据vvol ID更新新VM的盘描述符文件。
[0111]如果存储系统管理器在步骤1918确定模板VM和新VM的数据vvol不兼容,则向主机 计算机返回错误消息。在接收这一错误消息时,主机计算机在步骤19 21向存储系统发出创 建vvol API调用以创建新数据vvol。在步骤1922,存储系统管理器通过生成新数据vvol ID、更新容器数据库316中的分配位图并且向vvol数据库314添加新vvol条目来创建新数据 vvol并且向主机计算机返回新数据vvol ID。在步骤1923,主机计算机根据在通过这里引用 将全部内容结合于、提交于2009年1月21日并且标题为"Data Mover for Computer System"的第12/356,694号美国专利申请中描述的技术执行数据移动(步骤1923)。在步骤 1923之后,如以上描述的那样执行步骤1925和1926。
[0112]图20是根据另一实施例的用于调配VM的方法步骤的流程图。在这一实施例中,使 用管理服务器610、主控VM的计算机系统、例如图5D中所示计算机系统102(下文称为"主机 计算机")和图2B的存储系统群集、具体为存储系统管理器131或者存储系统管理器132或者 存储系统管理器135。如图所示,在步骤2002接收对于调配VM的请求。这可以是在使用与管 理服务器610的适当用户接口的VM管理员向管理服务器610发出用于调配具有某个大小和 存储能力简档的VM的命令时生成的请求。响应于该命令,在步骤2004,管理服务器610发起 用于用以上结合图8描述的方式创建用于包含VM的元数据的vvol、具体为元数据vvol的方 法,存储系统管理器在步骤2008按照该方法创建元数据vvol,该元数据vvol是在NAS设备中 的文件,并且向管理服务器610返回元数据vvol ID。在步骤2020,管理服务器610向主机计 算机系统注册回元数据vvol的vvol ID。在步骤2022,主机计算机向存储系统发出对于元数 据vvol ID的请求,响应于该请求,存储系统在步骤2023分别返回IP地址和目录路径作为PE ID和SLLID。在步骤2024,主机计算机在指定的IP地址和目录路径装配目录并且在装配的目 录中存储元数据文件。在使用NFS的实施例中,NFS客户端545或者585可以将给定的IP地址 和目录路径分解成NFS句柄以便向这样的目录发出NFS请求。
[0113] 在步骤2026,主机计算机发起用于用以上结合图8描述的方式为VM的虚拟盘中的 每个虚拟盘创建数据vvol的方法,存储系统管理器在步骤2030按照该方法创建数据vvol并 且向主机计算机返回数据vvol的vvol ID。在步骤2032,主机计算机在用于虚拟盘的盘描述 符文件中存储数据vvol的ID。该方法以在已经对于VM的所有虚拟盘创建数据vvol之后解绑 元数据vvol (未示出)作为结束。
[0114] 如以上结合图8描述的那样,在从存储容器创建新vvol并且未为新vvol显式地指 定存储能力简档时,新vvol将继承与存储容器关联的存储能力简档。可以从若干不同简档 之一选择与存储容器关联的存储能力建档。例如,如图21中所示,不同简档包括生产(prod) 简档2101、开发(dev)简档2102和测试简档2103(这里通常为"简档2100")。应当认识,可以 定义许多其它简档。如图所示,特定建档的每个简档条目为固定类型或者可变类型并且具 有名称和与它关联的一个或者多个值。固定类型的简档条目具有固定数目的可选择项目。 例如可以将简档条目"复制"设置成真或者假。对照而言,可变类型的简档条目无预定义选 择。取而代之,为可变类型的简档条目设置默认值和值范围,并且用户可以选择在范围内的 任何值。如果未指定值,则使用默认值。在图21中所示示例简档2100中,可变类型的简档条 目具有被逗号分离的三个数。第一个数是指定的范围的更低端,并且第二个数是指定的范 围的更高端。第三个数是默认值。因此,将复制vvol,该vvol继承在生产简档2101中定义id 存储能力简档(复制?值=真),并且可以在范围0.1到24小时中定义用于复制的恢复时间 目标(RT0),默认为1小时。此外,对于这一vvol(复制?值=真)允许快照。保持的快照数目 在范围1至100中,默认为1,并且快照频率在范围每小时一次至每24小时一次中,默认为每 小时一次。Snaplnher it列指示在快照给定的vvol以创建作为衍生vvol的新vvol时是否应 当向衍生vvo 1传播给定的简档属性(及其值)。在生产简档2101的示例中,可以用生成简单 2101向给定的vvo 1的快照vvo 1传播仅前两个简档条目(复制和RT0)。快照vvo 1的所有其它 属性的值将被设置成在简档中指定的默认值。换而言之,这些其它属性在给定的vvol上的 任何定制(例如快照频率的非默认值)将由于它们的对应Snaplnherit列为假而不会向快照 vvol传播。简档也包含其它列、比如Clonelnherit(未示出)和Replicalnherit(未示出),这 两列控制分别向给定的vvo 1的克隆和复制传播哪些属性值。
[0115] 在根据图4的方法创建存储容器时,可以设置可以对于从存储容器创建的vvol定 义的存储能力简档类型。图21中的流程图图示图4中所示用于创建存储容器的方法而在步 骤412与步骤413之间插入步骤2110。在步骤2110,存储管理员选择用于创建的存储容器的 简档2100中的一个或者多个简档。例如,为一个客户创建的存储容器可以与生产建档2101 和开发简档2102关联,从而为生产类型的vvol将如情况可以是的那样继承用默认值或者客 户指定的值在生产简档2101中定义的存储能力简档,并且为开发类型的vvol将如情况可以 是那样继承用默认值或者客户指定的值在开发建档2102中定义的存储能力简档。
[0116] 图22是用于创建vvol并且定义用于vvol的存储能力简档的由存储系统管理器 131、132或者135执行的所示方法步骤的流程图。图22的方法步骤、具体为方法步骤2210、 2212、2218和2220分别地对应图8中所示步骤806、810、812和814。此外,图22的方法步骤包 括步骤2214、2215和2216,这些步骤定义用于创建的vvol的存储能力简档。
[0117] 在步骤2214,存储系统管理器确定是否已经在对于创建vvol的请求中指定将在存 储能力简档中使用的值。如果它们不是,则存储系统管理器在步骤2215运用与vvol的存储 容器关联的存储能力简档作为vvol的具有默认值的存储能力简档。如果已经指定将在存储 能力简档中使用的值,则存储系统管理器在步骤2216运用与vvol的存储容器关联的存储能 力简档作为vvol的具有指定的值而不是默认值的存储能力简档。
[0118] 在一个实施例中,在vvol数据库314中存储vvol的存储能力简档为关键字-值对。 一旦已经定义并且在vvol数据库314中存储vvol的存储能力简档为关键字-值对,并且只要 与复制和快照有关的属性和值如图21的示例简档中所示是这一简档的部分,存储系统就能 够执行用于vvo 1的复制和快照而无主机计算机发出的进一步指令。
[0119] 图23是图示用于从母vvol创建快照的由存储系统管理器131、132或者135执行的 方法步骤的流程图。在一个实施例中,运用快照跟踪数据结构以根据在给定的存储能力简 档中的快照定义调度快照。在达到用于快照的调度的时间时,存储系统管理器在步骤2310 从快照跟踪数据结构获取vvol ID。然后,在步骤2312,存储系统管理器生成用于快照的唯 一vvol ID。存储系统管理器在步骤2315运用母VV〇l(即具有从快照跟踪数据结构获取的 vvol ID的vvol)的存储能力简档作为快照vvol的存储能力简档。应当注意,由于这是存储 系统驱动的自动化简档驱动的快照过程,所以用户未获得用于指定激昂在快照vvol的存储 能力简档中使用的定制值。在步骤2318,存储系统管理器通过更新容器数据库316中的分配 位图并且向vvol数据库314添加用于快照vvol的新vvol条目在母vvol的存储容器内创建快 照vvol。然后,在步骤2320,存储系统管理器通过调度用于生成用于母vvol的下一快照的时 间来更新快照跟踪数据结构。应当认识,存储系统管理器必须对于所有如下vvol并行维护 快照跟踪数据结构并且执行图23的方法步骤,这些vvol的存储能力简档规定调度的快照。
[0120] 在用以上描述的方式创建快照之后,更新在vvol数据库314中存储的关键字-值对 以指示快照vvol为类型=快照。也在其中为快照维护生成数一一每当拍摄或者设置快照时 递减生成数或者设置成等于日期+时间一一的实施例中,存储生成数为关键字-值对。也在 快照VVO1条目中存储快照VVO1的母VVO1 ID为关键字-值对。因此,主机计算机可以向vvo 1 数据库314查询与特定vvol ID对应的快照。也有可能让主机计算机向vvol数据库发出对于 与特定vvol ID和特定生成数对应的快照的查询。
[0121] 这里描述的各种实施例可以运用各种由计算机实施的操作,这些操作涉及到在计 算机系统中存储的数据。例如这些操作通常、但是未必可能需要物理操纵物理数量,这些数 量可以采用电或者磁信号的形式,其中能够存储、传送、组合、比较或者另外操纵它们或者 它们的表示。另外,经常在术语、比如产生、标识、确定或者比较中引用这样的操纵。这里描 述的任何形成一个或者多个实施例的部分的操作可以是有用机器操作。此外,一个或者多 个实施例也涉及一种用于执行这些操作的设备或者装置。该装置可以被特别地构造用于具 体所需目的,或者它可以是通用计算机,该通用计算机由在计算机中存储的计算机程序有 选择地激活或者配置。具体而言,各种通用机器可以与根据这里的教导编写的计算机程序 使用,或者构造更专门化的装置以执行所需操作可以更方便。
[0122]可以用包括手持设备、微处理器系统、基于微处理器或者可编程的客户电子装置、 小型计算机、大型机计算机等的其它计算机系统配置实现这里描述的各种实施例。
[0123] 可以实施一个或者多个实施例为一个或者多个计算机程序或者为在一个或者多 个计算机可读介质中体现的一个或者多个计算机程序模块。术语计算机可读介质是指可以 存储数据的任何数据存储设备,该数据随后可以向计算机系统输入。计算机可读介质可以 基于用于以使计算机程序能够被计算机读取的方式体现计算机程序的任何现有或者以后 开发的技术。计算机可读介质的示例包括硬驱动、网络附接存储装置(NAS)、只读存储器、随 机存取存储器(例如闪存设备)、⑶(紧致盘)、⑶-R0M、⑶-R或者⑶-RW、DVD(数字万用盘)、磁 带以及其它光学和非光学数据存储设备。也可以通过网络耦合的计算机系统分发计算机可 读介质,从而以分布式方式存储和执行计算机可读代码。
[0124] 虽然为了理解清楚而已经用一些细节描述一个或者多个实施例,但是将清楚可以 在权利要求的范围内进行某些改变和修改。例如运用SCSI作为用于SAN设备的协议,并且使 用NFS作为用于NAS设备的协议。可以使用SCSI协议的任何备选、光纤信道,并且可以使用 NFS协议的任何备选、比如CIFS(公共因特网文件系统)协议。因而,描述的实施例将视为示 例而非限制,并且权利要求的范围将不限于这里给定的细节而是可以在权利要求的范围和 等效含义内被修改。在权利要求中,单元和/或步骤除非在权利要求中陈述则未意味着任何 特定操作顺序。
[0125] 此外,尽管描述的可视化方法已经主要假设虚拟机呈现与特定硬件系统一致的接 口,但是可以结合未与任何特定硬件系统直接对应的虚拟化使用描述的方法。根据各种实 施例的可视化系统都被设想,实施这些实施例为主控的实施例、非主控的实施例或者为往 往模糊在二者之间的区分的实施例。另外,可以全部或者部分在硬件中实施各种可视化操 作。例如硬件实现方式可以将查找表用于修改存储访问请求以使非盘数据安全。
[0126] 许多变化、修改、添加和改进无论可视化程度如何都是可能的。可视化软件因此可 以包括执行可视化功能的主机、控制台或者客户操作系统的部件。可以提供多个实例用于 这里描述为单个实例的部件、操作或者结构。最后,在各种部件、操作和数据存储库之间的 边界有些任意,并且在具体示例配置的上下文中举例说明具体操作。其它功能分配被设想 并且可以落入这里描述的实施例的范围内。一般而言,可以实施在示例配置中呈现为分离 部件的结构和功能为组合的结构或者部件。类似地,可以实施呈现为单个部件的结构和功 能为分离部件。这些和其它变化、修改、添加和改进可以落入所附权利要求的范围内。
【主权项】
1. 一种用于在存储系统中处理输入-输出命令10的方法,所述方法包括: 在存储系统处接收10,所述10包括第一标识符和第二标识符,其中所述第一标识符用 来将所述10引向与所述存储系统中的逻辑存储卷集合相关联的端点; 在所述存储系统处从所述10获取所述第二标识符并且将所述第二标识符转译成与所 述端点相关联的所述逻辑存储卷集合中的一个逻辑存储的逻辑存储卷标识符;以及 在与所述逻辑存储卷标识符对应的逻辑存储卷引用的存储位置上执行所述10。2. 根据权利要求1所述的方法,其中在所述存储系统中被配置为所述端点的逻辑单元 编号LUN处接收所述10,并且所述第一标识符是用于所述LUN的世界范围名称。3. 根据权利要求2所述的方法,还包括: 检测所述逻辑存储卷或者所述LUN中的错误状况并且向发出所述10的计算机系统发送 错误消息。4. 根据权利要求1所述的方法,其中在所述存储系统中被配置为所述端点的装配点处 接收所述10,并且所述第一标识符包括所述存储系统和所述装配点的IP地址。5. 根据权利要求4所述的方法,还包括: 检测所述逻辑存储卷或者所述装配点中的错误状况并且向发出所述10的计算机系统 发送错误消息。6. 根据权利要求1所述的方法,还包括: 维护一个数据结构,所述数据结构提供第二标识符到逻辑存储卷标识符的映射,其中 所述第二标识符是使用所述数据结构被转译成所述逻辑存储卷标识符的。7. 根据权利要求1所述的方法,其中所述端点是在所述存储系统使用的协议中用于所 述10的逻辑端点。8. -种用于在存储系统中处理输入-输出命令10的装置,所述装置被配置为执行根据 权利要求1至6中任一项所述的方法。9. 一种存储系统,被配置为由根据权利要求8所述的装置进行控制。
【文档编号】H04L29/08GK105975214SQ201610331182
【公开日】2016年9月28日
【申请日】2012年8月22日
【发明人】R·布哈特, S·阿查亚, S·B·瓦哈尼, C-C·施
【申请人】威睿公司