CN105975214B - 配置用于输入/输出操作的对象存储*** - Google Patents
配置用于输入/输出操作的对象存储*** Download PDFInfo
- Publication number
- CN105975214B CN105975214B CN201610331182.XA CN201610331182A CN105975214B CN 105975214 B CN105975214 B CN 105975214B CN 201610331182 A CN201610331182 A CN 201610331182A CN 105975214 B CN105975214 B CN 105975214B
- Authority
- CN
- China
- Prior art keywords
- vvol
- storage
- storage system
- identifier
- manager
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003860 storage Methods 0.000 title claims abstract description 547
- 238000000034 method Methods 0.000 claims description 103
- 238000013507 mapping Methods 0.000 claims description 11
- 238000012545 processing Methods 0.000 claims description 6
- 238000007726 management method Methods 0.000 description 45
- 238000010586 diagram Methods 0.000 description 27
- 230000027455 binding Effects 0.000 description 24
- 238000009739 binding Methods 0.000 description 24
- 230000008569 process Effects 0.000 description 17
- 230000004044 response Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 8
- 238000004590 computer program Methods 0.000 description 6
- 238000013500 data storage Methods 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 6
- 238000012800 visualization Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 4
- 239000000835 fiber Substances 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 238000010367 cloning Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000005192 partition Methods 0.000 description 3
- 230000000644 propagated effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000008685 targeting Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 208000029632 chronic intestinal failure Diseases 0.000 description 1
- 230000009849 deactivation Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000007794 visualization technique Methods 0.000 description 1
Images
Classifications
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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
-
- 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/0631—Configuration or reconfiguration of storage systems by allocating resources to 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0661—Format or protocol conversion arrangements
-
- 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/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- 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]
-
- 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/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/10—Mapping addresses of different types
- H04L61/103—Mapping addresses of different types across network layers, e.g. resolution of network layer into physical layer addresses or address resolution protocol [ARP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明的各实施例总体上涉及配置用于输入/输出操作的对象存储***。具体地,存储***导出被调配为存储对象的逻辑存储卷。连接的计算机***通过在存储***中配置的用于协议流量的逻辑端点、使用标准协议、比如SCSI和NFS按照需求访问这些存储对象。当在存储***接收输入‑输出命令(IO)时,从IO接收标识符并且将标识符转译成逻辑存储卷标识符,并且对与逻辑存储卷标识符对应的逻辑存储卷引用的存储位置执行IO。
Description
分案申请说明
本申请是申请日为2012年8月22日、申请号为201280041490.9、发明名称为“配置用于输入/输出操作的对象存储***”的中国发明专利申请的分案申请。
技术领域
本公开内容总体上涉及计算机领域,具体地涉及配置用于输入/输出操作的对象存储***。
背景技术
随着计算机***伸缩至企业级,特别是在支持大规模数据中心的背景中,下层数据存储***经常运用存储区域网络(SAN)或者网络附接存储(NAS)。如在常规上适当理解的那样,SAN或者NAS提供诸多技术能力和操作益处,这些技术能力和操作益处基本上包括数据存储设备的虚拟化、具有透明的容错故障恢复和故障保护控制的物理设备的冗余性、在地理上分布和复制的存储以及从以客户端为中心的计算机***管理解耦合的集中式监督和存储配置管理。
在架构上,在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支持的存储容量级)而又保持文件级存储访问的简单性的能力。
SCSI和其它基于块协议的存储设备、比如图1A中所示存储***30利用代表一个或者多个编程的存储处理器的存储***管理器31以聚合存储设备中的存储单元或者驱动并且将它们呈现为各自具有唯一可标识编号的一个或者多个LUN(逻辑单元编号)34。LUN 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用作逻辑设备。
存储***管理器31实施在存储***30中驻留的、在图1A中称为纺锤体(spindle)32的通常基于盘驱动的物理存储单元的可视化。从逻辑观点来看,这些纺锤体32中的每个纺锤体可以视为固定大小的盘区(extent)33的依次阵列。存储***管理器31通过向连接的计算机***、比如计算机***10暴露连续逻辑存储空间——该逻辑存储空间被划分成被称为LUN 34的虚拟SCSI设备的集合——来抽象化掉使读取和写入操作以盘驱动的实际纺锤体和盘区的地址为目标的复杂性。每个LUN借助存在这样的LUN并且向计算机***10呈现这样的LUN来代表被指派用于由计算机***10使用的某个容量。存储***管理器31维护元数据,该元数据包括用于每个这样的LUN到盘区有序列表的映射,其中每个这样的盘区可以被标识为纺锤体-盘区对<纺锤体#,盘区#>并且因此可以位于各种纺锤体32中的任何纺锤体中。
图1B是通过网络21(例如,因特网)经由网络接口卡(NIC)11’连接到一个或者多个计算机***10的基于NAS或者文件级的常规存储***40的框图。存储***40包括代表一个或者多个编程的存储处理器的存储***管理器41。存储***管理器41在存储***40中驻留的、在图1B中称为纺锤体42的通常基于盘驱动的物理存储单元上面实施文件***45。从逻辑观点来看,这些纺锤体中的每个纺锤体可以视为固定大小的盘区43的依次阵列。文件***45通过向连接的计算机***、比如计算机***10暴露包括目录和文件——这些目录和文件可以被组织成文件***级卷44(下文称为“FS卷”),这些FS卷通过它们的相应装配点来访问——的命名空间来抽象化掉使读取和写入操作以盘驱动的实际纺锤体和盘区的地址为目标的复杂性。
即使有以上描述的存储***进步,仍然已经广泛地认识它们未充分可伸缩以满足虚拟化的计算机***的特定需要。例如,服务器机器群集可以服务于多达10,000个虚拟机(VM),每个VM使用数目为多个的“虚拟盘”和数目为多个的“快照”,每个虚拟盘和快照可以例如被存储为特定LUN或者FS卷上的文件。即使按比例缩减的估计为每VM有2个虚拟盘和2个快照,如果VM直接连接到物理盘(即,每物理盘有1个虚拟盘或者快照),这仍然总计为存储***支持60,000个不同盘。此外,在这一规模的存储设备和拓扑管理已知有困难。因此,开发比如在通过这里引用而结合的、标题为“Providing Multiple Concurrent Access toa File System”的美国专利7,849,098中描述的数据存储库这一概念,在这些数据存储库中,将VM复用到物理存储实体(例如,基于LUN的VMFS群集文件***或者FS卷)的更小集合上。
在运用LUN或者FS卷的常规存储***中,来自多个VM的工作量通常由单个LUN或者单个FS卷服务。因此,来自一个VM工作量的资源需求将影响在相同LUN或者FS卷上向另一VM工作量提供的服务水平。用于存储的效率测量、比如延时和每秒输入/输出操作(IO)或者IOPS因此根据在给定的LUN或者FS卷中的工作量数目变化并且不能被保障。因而,不能在每VM基础上执行用于运用LUN或者FS卷的存储***的存储策略,并且不能在每VM基础上给定服务水平协定(SLA)保障。此外,以LUN或者FS卷的粒度而不是以VM的虚拟盘的粒度提供由存储***销售商提供的数据服务、比如快照、复制、加密和解重复。因此,可以使用存储***销售商提供的数据服务来为整个LUN或者整个FS卷创建快照,但是不能从其中存储虚拟盘的LUN或者文件***分离地创建用于VM的单个虚拟盘的快照。
发明内容
一个或者多个实施例涉及一种存储***,该存储***被配置用于隔离在其中运行的工作量、从而可以每工作量提供SLA保障并且可以每工作量提供存储***的数据服务而无需存储***的激进重新设计。在存储用于多个虚拟机的虚拟盘的存储***中,可以在每虚拟盘基础上提供SLA保障,并且可以在每虚拟盘基础上提供存储***的数据服务。
根据本发明的一个实施例,存储***从这里称为“存储容器”的逻辑存储容量指派之中导出在每工作量基础上被调配为存储对象的、这里称为“虚拟卷”的逻辑存储卷。对于VM,可以对于VM的虚拟盘和快照中的每个虚拟盘和快照创建虚拟卷。在一个实施例中,连接的计算机***通过在存储***中配置的称为“协议端点”的用于协议流量的逻辑端点、使用标准协议、比如SCSI和NFS按照需求访问虚拟卷。
根据本发明的一个实施例的一种用于在存储***中处理输入-输出命令(IO)的方法包括以下步骤:在存储***接收IO,IO包括第一标识符和第二标识符,其中第一标识符用来将IO引向存储***;从IO获取第二标识符并且将第二标识符转译成逻辑存储卷标识符;并且对与逻辑存储卷标识符对应的逻辑存储卷引用的存储位置执行IO。
根据本发明的一个实施例的一种用于预备存储***以执行IO的方法包括以下步骤:接收对于预备逻辑存储卷的请求;选择在存储***中配置的协议端点,用于逻辑存储卷的IO将通过协议端点来接收;并且生成将在用于逻辑存储卷的IO中包括的标识符并且向发出请求的计算机***返回标识符。
根据本发明的一个实施例的一种用于预备存储***以执行在主机计算机上运行的虚拟机发出的IO的方法包括以下步骤:接收对于预备用于虚拟机的元数据逻辑存储卷的请求;选择在存储***中配置的协议端点,用于元数据逻辑存储卷的IO将通过协议端点来接收;通过协议端点接收读取IO并且返回读取的数据,读取的数据包括用于数据逻辑存储卷的标识符;接收对于预备用于虚拟机的数据逻辑存储卷的请求;并且对于每个数据逻辑存储卷,选择在存储***中配置的协议端点,用于逻辑存储卷的IO将通过协议端点来接收。
本发明的各实施例还包括一种存储指令的非瞬态计算机可读存储介质,这些指令在由计算机***执行时使计算机***执行以上阐述的方法之一。
附图说明
图1A是通过网络连接到一个或者多个计算机***的基于块协议的常规存储设备的框图。
图1B是通过网络连接到一个或者多个计算机***的常规NAS设备的框图。
图2A是根据本发明的一个实施例的实施虚拟卷的基于块协议的存储***群集的框图。
图2B是根据本发明的一个实施例的实施虚拟卷的基于NAS的存储***群集的框图。
图3是根据本发明的一个实施例的图2A或者图2B的存储***群集的用于管理虚拟卷的部件框图。
图4是用于创建存储容器的方法步骤的流程图。
图5A是在基于SAN的存储***上主控的被配置用于实施虚拟卷的计算机***的一个实施例的框图。
图5B是在基于NAS的存储***上主控的被配置用于虚拟卷的图5A的计算机***的框图。
图5C是在基于SAN的存储***上主控的被配置用于实施虚拟卷的计算机***的另一实施例的框图。
图5D是在基于NAS的存储***上主控的被配置用于虚拟卷的图5C的计算机***的框图。
图6是图示根据本发明的一个实施例的用来管理虚拟卷的部件和通信路径的计算机环境的简化框图。
图7是用于向图2A或者图2B的存储***群集认证计算机***的方法步骤的流程图。
图8是根据一个实施例的用于创建虚拟卷的方法步骤的流程图。
图9A是用于发现可用于计算机***的协议端点的方法步骤的流程图。
图9B是用于存储***发现计算机***经由带内路径连接到的协议端点的方法步骤的流程图。
图10是根据一个实施例的用于发出和执行虚拟卷绑定请求的方法步骤的流程图。
图11A和图11B是根据一个实施例的用于向虚拟卷发出IO的方法步骤的流程图。
图12是根据一个实施例的用于在存储***执行IO的方法步骤的流程图。
图13是根据一个实施例的用于发出和执行虚拟卷重新绑定请求的方法步骤的流程图。
图14是虚拟卷的生命周期的概念图。
图15是根据一个实施例的使用图2A的存储***的来调配VM的方法步骤的流程图。
图16A是用于使VM通电的方法步骤的流程图。
图16B是用于使VM断电的方法步骤的流程图。
图17是用于扩展VM的vvol的大小的方法步骤的流程图。
图18是用于在存储容器之间移动VM的vvol的方法步骤的流程图。
图19是用于从模板VM克隆VM的方法步骤的流程图。
图20是根据另一实施例的用于调配VM的方法步骤的流程图。
图21图示采样存储能力简档和用于创建存储容器的方法,该方法包括简档选择步骤。
图22是图示用于创建vvol并且定义用于vvol的存储能力简档的方法步骤的流程图。
图23是图示用于创建快照的方法步骤的流程图。
具体实施方式
图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。
分布式存储***管理器135或者单个存储***管理器131或者132可以从代表物理DSU的逻辑聚合的逻辑“存储容器”创建vvol(例如,在计算机***100请求时等)。一般而言,存储容器可以跨越多于一个存储***,并且许多存储容器可以由单个存储***管理器或者分布式存储***管理器创建。相似地,单个存储***可以包含许多存储容器。在图2A和图2B中,示出分布式存储***管理器135创建的存储容器142A为跨越存储***1301和存储***1302,而示出存储容器142B和存储容器142C为包含于单个存储***内(即,分别为存储***1301和存储***1302)。应当认识,由于存储容器可以跨越多个一个存储***,所以存储***管理员可以向其客户调配超过任一存储***的存储容量的存储容量。还应当认识,由于可以在单个存储***内创建多个存储容器,所以存储***管理员可以使用单个存储***来向多个客户调配存储装置。
在图2A的实施例中,从基于块的存储***调配每个vvol。在图2B的实施例中,基于NAS的存储***在DSU 141上面实施文件***145,并且每个vvol向计算机***100暴露为在这一文件***内的文件对象。此外,如以下将进一步具体描述的那样,在计算机***100上运行的应用通过PE访问用于IO的vvol。例如,如图2A和图2B中的虚线所示,vvol 151和vvol152经由PE161可访问;vvol 153和vvol 155经由PE 162可访问;vvol 154经由PE 163和PE164可访问;并且vvol 156经由PE 165可访问。应当认识,来自多个存储容器的vvol、比如在存储容器142A中的vvol 153和在存储容器142C中的vvol 155可以在任何给定的时间经由单个PE、比如PE 162可访问。还应当认识,PE、比如PE166可以在不存在经由它们可访问的任何vvol时存在。
在图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之间区分的另一方式,可以向扩展查询数据VPD页面(页面86h)添加PE位。在LUN是PE时将PE位设置成1,并且在它是普通数据LUN时设置成0。计算机***100可以通过发出SCSI命令REPORT_LUNS(报告_LUN)来经由带内路径发现PE并且通过检查指示的PE位来确定它们是否为根据这里描述的实施例的PE或者常规数据LUN。计算机***100可以可选地检查LUN大小和LUN编号属性以进一步确认LUN是否为PE或者常规LUN。应当认识,以上描述的技术中的任何技术可以用来区分与PE有关的LUN与普通数据LUN。在一个实施例中,PE位技术是用来区分与PE有关的LUN与普通数据LUN的仅有技术。
在图2B的实施例中,使用已知的用于设立指向FS卷的装配点的方法在存储***130中创建PE。在图2B的实施例中创建的每个PE由也常规地一起称为“装配点”的IP地址和文件***路径唯一标识。然而,不同于常规装配点,PE未与FS卷相关联。另外,不同于图2A的PE,图2B的PE除非虚拟卷绑定到给定的PE则不可经由带内路径被计算机***100发现。因此,图2B的PE经由带外路径由存储***报告。
图3是根据一个实施例的图2A或者图2B的存储***群集的用于管理虚拟卷的部件的框图。部件包括在一个实施例中在存储***130中执行的存储***管理器131和132的软件模块或者在另一实施例中的分布式存储***管理器135的软件模块、即输入/输出(I/O)管理器304、卷管理器306、容器管理器308和数据访问层310。在这里的实施例的描述中,应当理解,分布式存储***管理器135采取的任何动作可以根据实施例由存储***管理器131或者存储***管理器132采取。
在图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也可以根据它们的所需服务水平来分组并且从存储容器来调配。此外,存储***管理员可以创建、删除和另外管理存储容器、比如定义可以创建的存储容器数目并且设置可以每存储容器设置的最大物理大小。
同样在图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的带外信道容易可用于存储***销售商插件和其它扩展。用于关键字-值对的存储操作是虚拟卷创建和其它过程的一部分,因此存储操作应当合理地快。存储***也被配置用于基于与在具体关键字上提供的值的确切匹配来实现虚拟卷的搜索。
IO管理器304是维护连接数据库312的软件模块(在某些实施例中也为分布式存储***管理器135的部件),该连接数据库312存储在PE与vvol之间的当前有效IO连接路径。在图3中所示示例中,示出七个当前有效IO会话。每个有效会话具有相关联的PE ID、次级标识符(SLLID)、vvol ID和参考计数(RefCnt),该参考计数指示通过这一IO会话执行IO的不同应用的数目。分布式存储***管理器135(例如,在计算机***100请求时)在PE与vvol之间建立有效IO会话的过程这里称为“绑定”过程。对于每个绑定,分布式存储***管理器135(例如,经由IO管理器304)向连接数据库312添加条目。分布式存储***管理器135随后拆除IO会话的过程这里称为“解绑”过程。对于每个解绑,分布式存储***管理器135(例如,经由IO管理器304)将IO会话的参考计数递减一。在IO会话的参考计数为零时,分布式存储***管理器135(例如,经由IO管理器304)可以从连接数据库312删除用于该IO连接路径的条目。如先前讨论的那样,在一个实施例中,计算机***100生成并且经由带外路径向分布式存储***管理器135发送绑定和解绑请求。备选地,计算机***100可以通过使现有错误路径超负荷来生成并且经由带内路径发送解绑请求。在一个实施例中,在参考计数从0改变成1或者相反时将生成数改变成单调增加的数或者随机生成的数。在另一实施例中,生成数是随机生成的数,并且从连接数据库312消除RefCnt列,并且对于每个绑定,即使在绑定请求是对已经绑定的vvol时,分布式存储***管理器135仍然(例如,经由IO管理器304)向连接数据库312添加条目。
在图2A的存储***群集中,IO管理器304使用连接数据库312来处理通过PE接收的来自计算机***100的IO请求(IO)。当在PE之一接收IO时,IO管理器304解析IO以标识在IO中包含的PE ID和SLLID以便确定IO被期望用于的vvol。通过访问连接数据库314,IO管理器304继而能够获取与解析的PE ID和SLLID相关联的vvol ID。在图3和后续附图中,为了简化而示出PE ID为PE_A、PE_B等。在一个实施例中,实际PE ID是PE的WWN。此外,SLLID被示为S0001、S0002等。实际SLLID由分布式存储***管理器135生成为在与连接数据库312中的给定的PE ID相关联的SLLID之中的任何唯一数。在具有vvol ID的虚拟卷的逻辑地址空间与DSU 141的物理位置之间的映射由卷管理器306使用vvol数据库314并且由容器管理器308使用容器数据库316来执行。一旦已经获得DSU 141的物理位置,数据访问层310(在一个实施例中,也为分布式存储***管理器135的部件)在这些物理位置上执行IO。
在图2B的存储***群集中,IO通过PE接收,并且每个这样的IO包括IO已经被发到的NFS句柄(或者相似文件***句柄)。在一个实施例中,用于这样的***的连接数据库312包含存储***的NFS接口的IP地址为PE ID并且文件***路径为SLLID。基于vvol在文件***145中的位置生成SLLID。在vvol的逻辑地址空间与DSU 141的物理位置之间的映射由卷管理器306使用vvol数据库314并且由容器管理器308使用容器数据库316来执行。一旦已经获得DSU 141的物理位置,数据访问层在这些物理位置上执行IO。应当认识,对于图2B的存储***,容器数据库312可以在用于给定的vvol的容器位置条目中包含文件:<偏移.长度>条目有序列表(即,vvol可以包括在文件***145中存储的多个文件段)。
在一个实施例中,在易失性存储器中维护连接数据库312,而在持久存储装置、比如DSU 141中维护vvol数据库314和容器数据库316。在其它实施例中,可以在持久存储装置中维护所有数据库312、314、316。
图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、<***编号、DSUID、盘区编号>有序列表和被允许访问存储容器的计算机***的上下文ID更新容器数据库316。
根据这里描述的实施例,存储容量简档、例如SLA或者服务质量(QoS)可以在每vvol基础上由分布式存储***管理器135(例如,代表请求计算机***100)配置。因此,有可能让具有不同存储能力简档的vvol是相同存储容器的一部分。在一个实施例中,***管理员定义默认存储能力简档(或者多个可能存储能力简档),所述存储能力简档在创建存储容器时用于新创建的vvol并且存储于容器数据库316的元数据分节中。如果未对于在存储容器以内创建的新vvol显式地指定存储能力简档,则新vvol将继承与存储容器相关联的默认存储能力简档。
图5A是在图2A的存储***群集上主控的被配置用来实施虚拟卷的计算机***的一个实施例的框图。可以在包括一个或者多个中央处理单元(CPU)501、存储器502、一个或者多个网络接口卡(NIC)503和一个或者多个主机总线适配器(HBA)504的通常为服务器类的常规硬件平台500上构造计算机***101。HBA504使计算机***101能够通过在存储设备130中配置的PE向虚拟卷发出IO。如图5A中进一步所示,在硬件平台500上面安装操作***508,并且在操作***508上面执行多个应用5121-512N。操作***508的示例包括熟知的商用操作***、比如Microsoft Windows、Linux等中的任何操作***。
根据这里描述的实施例,每个应用512具有与之相关联的一个或者多个vvol并且向操作***508按照应用512向操作***508中的“创建设备”调用创建的vvol的块设备实例发出IO。在块设备数据库533中维护在块设备名称与vvol ID之间的关联。来自应用5121-512N的IO由文件***驱动器510接收,并将其转换成块IO并且向虚拟卷设备驱动器532提供块IO。在另一方面,来自应用5121的IO被示出用于绕过文件***驱动器510并且被直接提供给虚拟卷设备驱动器532,这表示应用5121以在通过这里引用将全部内容结合、标题为“Providing Access to a Raw Data Storage Unit in a Computer System”的美国专利7,155,558中描述的方式直接访问其块设备作为原始存储设备、例如作为数据库盘、日志盘、备份存档和内容贮存库。在虚拟卷设备驱动器532接收块IO时,它访问块设备数据库533以引用在IO中指定的块设备名称与PE ID(PE LUN的WWN)和SLLID之间的映射,该PE ID和SLLID定义通向与块设备名称相关联的vvol的IO连接路径。在这里所示示例中,块设备名称archive对应于为应用5121创建的块设备实例vvol12,并且块设备名称foo、dbase和log分别对应于为应用5122-512N中的一个或者多个应用创建的块设备实例vvol1、vvol16和vvol17。在块设备数据库533中存储的其它信息包括用于每个块设备的活跃位值,该活跃位值指示块设备是否活跃,并且包括CIF(在飞行中的命令)值。活跃位“1”表示可以向块设备发出IO。活跃位“0”表示块设备不活跃并且不能向块设备发出IO。CIF值提供多少IO在飞行中、即,被发出、但是尚未完成的指示。在这里所示示例中,块设备foo活跃并且具有一些在飞行中的命令。块设备archive不活跃并且不会接受较新的命令。然而,它等待2个在飞行中的命令完成。块设备dbase不活跃而无未完成的命令。最后,块设备log活跃,但是应用当前没有向设备的未决IO。虚拟卷设备驱动器532可以选择在任何时间从它的数据库533去除这样的设备。
除了执行以上描述的映射之外,虚拟卷设备驱动器532还向数据访问层540发出原始块级IO。数据访问层540包括设备访问层534和用于HBA 504的设备驱动器536,该设备访问层534将命令排队和调度策略应用于原始块级IO,并且该设备驱动器536在符合协议的格式中格式化原始块级IO并且向HBA 504发送它们用于经由带内路径向PE转发。在其中使用SCSI协议的实施例中,在如在SAM-5(SCSI架构模型-5)中指定的SCSI LUN数据字段中编码vvol信息,该数据字段是8字节结构。在前2个字节中编码常规地用于LUN ID的PE ID,并且利用剩余6个字节(的一部分)在SCSI第二级LUN ID中编码vvol信息、具体为SLLID。
如图5A中进一步所示,数据访问层540也包括用于处置通过带内路径从存储***接收的IO错误的错误处置单元542。在一个实施例中,I/O管理器304通过PE传播错误处置单元542接收的IO错误。IO错误类的示例包括在计算机***101与PE之间的路径错误、PE错误和vvol错误。错误处置单元542将所有检测到的错误分类为前述类。在遇到通向PE的路径错误并且通向PE的另一路径存在时,数据访问层540沿着通向PE的不同路径发送IO。在IO错误是PE错误时,错误处置单元542更新块设备数据库533以指示用于通过PE发出IO的每个块设备的错误状况。在IO错误是vvol错误时,错误处置单元542更新块设备数据库533以指示用于与vvol关联的每个块设备的错误状况。错误处置单元542也可以发出报警或者***事件,从而将拒绝向具有错误状况的块设备的进一步IO。
图5B是图5A的计算机***的框图,该计算机***已经被配置用于与图2B的存储***群集而不是图2A的存储***群集对接。在这一实施例中,数据访问层540包括NFS客户端545和用于NIC 503的设备驱动器546。NFS客户端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接收的原始块级IO转译成基于NFS文件的IO。用于NIC 503的设备驱动器546然后以符合协议的格式格式化基于NFS文件的IO并且将它们与NFS句柄一起发送到NIC 503用于经由带内路径向PE之一转发。
图5C是被配置用于实施虚拟卷的计算机***的另一实施例的框图。在这一实施例中,向计算机***102配置这里表示为管理程序560的虚拟化软件。在硬件平台550上面安装管理程序560,该硬件平台包括CPU 551、存储器552、NIC 553和HBA 554并且支持虚拟机执行空间570,可以在该虚拟机执行空间570内并行实例化和执行多个虚拟机(VM)5711-571N。在一个或者多个实施例中,使用加利福尼亚州帕罗奥图市的VMware公司分发的VMware产品来实施管理程序560和虚拟机571。每个虚拟机571实施虚拟硬件平台573,该虚拟硬件平台573支持安装能够执行应用579的客户操作***(OS)572。客户OS 572的示例包括熟知的商用操作***、比如Microsoft Windows、Linux等中的任何操作***。在每个实例中,客户OS 572包括本机文件***层(在图5C中未示出)、例如NTFS或者ext3FS类型的文件***层。这些文件***层与虚拟硬件平台573对接以从客户OS 572的观点来看访问数据存储装置HBA,该数据存储装置HBA在现实中是虚拟硬件平台573实施的虚拟HBA 574,该虚拟HBA提供盘存储支持的表现(在现实中为虚拟盘或者虚拟盘575A-575X)以实现执行客户OS 572。在某些实施例中,虚拟盘575A-575X可以表现为从客户OS 572的观点来看支持用于连接到虚拟机的SCSI标准或者本领域普通技术人员已知的包括IDE、ATA和ATAPI的任何其它适当硬件连接接口标准。虽然,从客户OS 572的观点来看,这样的客户OS 572发起的用于实施与文件***有关的数据传送和控制操作的文件***调用表现为向虚拟盘575A-575X寻路由用于最终执行,但是在现实中,通过虚拟HBA 574处理和传递这样的调用至附属的虚拟机监视器(VMM)5611-561N,这些虚拟机监视器(VMM)实施为了与管理程序560协调操作而需要的虚拟***支持。具体而言,HBA仿真器562在功能上使数据传送和控制操作能够由管理程序560正确处置,该管理程序560通过其各种层向连接到存储***130的HBA 554最终传递这样的操作。
根据这里描述的实施例,每个VM 571具有与之关联的一个或者多个vvol并且向管理程序560按照VM 571向管理程序560中的“创建设备”调用来创建的vvol的块设备实例发出IO。在块设备数据库580中维护在块设备名称与vvol ID之间的关联。来自VM 5712-571N的IO由SCSI虚拟化层563接收,该SCSI虚拟化层563将它们转换成虚拟机文件***(VMFS)驱动器564理解的文件IO。VMFS驱动器564然后将文件IO转换成块IO,并且向虚拟卷设备驱动器565提供块IO。在另一方面,来自VM 5711的IO被示出用于绕过VMFS驱动器564并且被直接提供给虚拟卷设备驱动器565,这表示VM 5711以在美国专利7,155,558中描述的方式直接访问其块设备作为原始存储设备、例如作为数据库盘、日志盘、备份存档和内容贮存库。
在虚拟卷设备驱动器565接收块IO时,它访问块设备数据库580以引用在IO中指定的块设备名称与PE ID和SLLID之间的映射,该PE ID和SLLID定义通向与块设备名称关联的vvol的IO会话。在这里所示示例中,块设备名称dbase和log分别对应于为VM 5711创建的块设备实例vvol1和vvol4,并且块设备名称vmdk2、vmdkn和snapn分别对应于为VM 5712-571N中的一个或者多个VM创建的块设备实例vvol12、vvol16和vvol17。在块设备数据库580中存储的其它信息包括用于每个块设备的活跃位值,该活跃位值指示块设备是否活跃,并且包括CIF(在飞行中的命令)值。活跃位“1”表示可以向块设备发出IO。活跃位“0”表示块设备不活跃并且不能向块设备发出IO。CIF值提供多少IO在飞行中、即,被发出、但是尚未完成的指示。在这里所示示例中,块设备foo活跃并且具有一些在飞行中的命令。
除了执行以上描述的映射之外,虚拟卷设备驱动器565还向数据访问层566发出原始块级IO。数据访问层566包括设备访问层567和用于HBA 554的设备驱动器568,该设备访问层将命令排队和调度策略应用于原始块级IO,并且该设备驱动器在符合协议的格式中格式化原始块级IO并且向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。
图5D是图5C的计算机***的框图,该计算机***已经被配置用于与图2B的存储***群集而不是图2A的存储***群集对接。在这一实施例中,数据访问层566包括NFS客户端585和用于NIC 553的设备驱动器586。NFS客户端585将块设备名称映射到PE ID(IP地址)和与块设备对应的SLLID(NFS文件句柄)。如图5D中所示在块设备数据库580中存储这一映射。应当注意,活跃和CIF列仍然存在、但是在图5D中所示块设备数据库580中未被图示。如以下将描述的那样,NFS文件句柄在NAS内唯一标识文件对象并且在一个实施例中在绑定过程期间被生成。NFS客户端585也将从虚拟卷设备驱动器565接收的原始块级IO转译成基于NFS文件的IO。用于NIC 553的设备驱动器586然后在符合协议的格式中格式化基于NFS文件的IO并且将它们与NFS句柄一起发送到NIC 553用于经由带内路径向PE之一转发。
应当认识,可以不同地引用用来描述图5A至图5D中的部件的各种术语、层和分类而未脱离它们的功能或者本发明的精神实质和范围。例如VMM 561可以视为在VM 571与管理程序560之间的分离虚拟化部件(在这样的概念中可以本身视为虚拟化“内核”部件),因为存在有用于每个实例化的VM的分离VMM。备选地,每个VMM 561可以视为它的对应虚拟机的部件,因为这样的VMM包括用于虚拟机的硬件仿真部件。在这样的备选概念中,例如描述为虚拟硬件平台573的概念层可以与VMM 561合并和合并到VMM 561中,从而从图5C和图5D去除虚拟主机总线适配器574(即,因为它的功能由主机总线适配器仿真器562实现)。
图6是图示根据本发明的一个实施例的用来管理vvol的部件和通信路径的计算机环境的简化框图。如先前描述的那样,用于IO协议流量的通信路径称为带内路径并且在图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将在与用于不同存储***销售商的存储硬件通信时运用不同插件。在另一实施例中,可以有与任何销售商的管理接***互的单个插件。这将需要将存储***管理器编程为熟知接口(例如,借助由计算机***和/或管理服务器发布)。
还向管理服务器610配置用于关联计算机***的***管理器611。在一个实施例中,计算机***执行虚拟机,并且***管理器611管理在计算机***中运行的虚拟机。管理虚拟机的***管理器611的一个示例是VMware公司分发的产品。如图所示,***管理器611与在计算机***103中运行的主机后台程序(daemon)(hostd)621通信(通过在管理服务器610和计算机***103二者的适当软件界面)以从计算机***103接收资源使用报告并且对在计算机***103中运行的应用发起各种管理操作。
图7是用于使用认证相关API向图2A或者图2B的存储***群集认证计算机***的方法步骤的流程图。在计算机***通过向存储***发送它的安全套接字层(SSL)证书来请求认证时发起这些方法步骤。在步骤710,存储***向请求认证的计算机***发出用于认证证书的提示(例如,用户名和口令)。在步骤712接收认证证书时,存储***在步骤714比较它们与存储的证书。如果提供正确证书,则存储***在关键字存储库(步骤716)中存储认证的计算机***的SSL证书。如果提供不正确证书,则存储***忽略SSL证书并且返回适当错误消息(步骤718)。在被认证之后,计算机***可以调动API以通过SSL链路向存储***发出管理命令,并且在SSL证书中包括的唯一上下文ID由存储***用来实行某些策略、比如定义哪些计算机***可以访问哪些存储容器。在一些实施例中,在管理计算机***批准的权限时使用它们的上下文ID。例如,主机计算机可以被允许创建vvol、但是不可以被允许删除vvol或者vvol的快照,或者主机计算机可以被允许创建vvol的快照、但是不可以被允许克隆vvol。此外,权限可以根据登录到认证的计算机***的用户的用户级特权变化。
图8是用于使用创建虚拟卷API命令来创建虚拟卷的方法步骤的流程图。在一个实施例中,计算机***103在计算机***103在步骤802从它的应用之一接收对于创建具有某个大小和存储能力简档、比如最小IOPS和平均延时的vvol的请求时经由带外路径602向存储***发出创建虚拟卷API命令。作为响应,计算机***103在步骤804(在计算机***103和请求应用被允许访问的并且具有充分自由容量以适应请求的存储容器之中)选择存储容器并且经由插件622向存储***发出创建虚拟卷API命令。API命令包括vvol的存储容器ID、vvol大小和存储能力简档。在另一实施例中,API命令包括应用要求存储***与新创建的vvol存储的关键字-值对集合。在另一实施例中,管理服务器610经由带外路径602向存储***发出创建虚拟卷API命令(经由插件612)。
在步骤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。
如图2A和图2B中所示,并非所有vvol连接到PE。未连接到PE的vvol未知对应应用发出的IO,因为未向vvol建立IO会话。在可以向发出IO之前,vvol经历绑定过程,作为该绑定过程的结果,vvol将被绑定到特定PE。一旦vvol绑定到PE,可以向vvol发出IO直至从PE解绑vvol。
在一个实施例中,计算机***130使用绑定虚拟卷API经由带外路径602向存储***发出绑定请求。绑定请求标识待绑定的vvol(使用vvol ID),并且作为响应,存储***将vvol绑定到计算机***103经由带内路径连接到的PE。图9A是用于计算机***经由带内路径发现它连接到的PE的方法步骤的流程图。使用标准SCSI命令REPORT_LUNS经由带内路径发现在基于SCSI协议的存储设备中配置的PE。使用API经由带外路径发现在基于NFS协议的存储设备中配置的PE。计算机***为每个连接的存储***执行图9A的方法步骤。
在步骤910,计算机***确定连接的存储***是否基于SCSI协议或者基于NFS协议。如果存储***基于SCSI协议,则计算机***向存储***带内发出SCSI命令REPORT_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地址和装配点。
图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在发出Discovery_Topology调用时接收的某些PE ID可以对应于连接到相同计算机***的另一存储***。相似地,某些接收的PEID可以对应于自从被存储***管理员删除起的更老的PE,等等。在步骤954,存储***管理器高速缓存处理的结果用于在后续绑定过程期间使用。在一个实施例中,存储***管理器周期性地运行图9B的步骤以用进行中的计算机***和网络拓扑改变更新它的高速缓存的结果。在另一实施例中,存储***管理器每当它接收新vvol创建请求时运行图9B的步骤。在更多另一实施例中,存储***管理器在运行图7的认证步骤之后运行图9B的步骤。
图10是用于使用绑定虚拟卷API来发出和执行虚拟卷绑定请求的方法步骤的流程图。在一个实施例中,计算机***103在它的应用之一请求IO访问与尚未绑定到PE的vvol关联的块设备时经由带外路径602向存储***发出绑定请求。在另一实施例中,管理服务器610结合某些VM管理操作发出绑定请求,这些VM管理操作包括VM通电和从一个存储容器向另一存储容器的vvol迁移。
继续以上描述的示例,在该示例中,应用请求IO访问与尚未绑定到PE的vvol关联的块设备,计算机***103在步骤1002从块设备数据库533(或者580)确定vvol的vvol ID。然后在步骤1004,计算机***1003通过带外路径602向计算机***发出对于绑定vvol的请求。
存储***管理器接收在步骤1006经由管理接口(例如,管理接口624、625或者626)接收对于绑定vvol的请求、然后执行步骤1008,该步骤包括选择vvol将被绑定到的PE、生成用于选择的PE的SLLID和生成数并且更新连接数据库312(例如,经由IO管理器304)。根据连通进行选择vvol将被绑定到的PE、即仅具有与计算机***103的现有带内连接的PE可用于选择。在一个实施例中,存储***根据图9B的方法从计算机***103向它发送的处理和高速缓存的PE列表选择。SLLID生成在运用图2A的存储***群集的实施例与运用图2B的存储***群集的实施例之间的不同。在前一情况下,生成对于选择的PE唯一的SLLID。在后一情况下,生成通向与vvol对应的文件对象的文件路径作为SLLID。在已经对于选择的PE生成SLLID和生成数之后,更新连接数据库312以包括与vvol的新生成的IO会话。然后,在步骤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句柄)和生成数的每个集合作为新条目。应当认识,生成数用来防范重放共计。因此,在其中未考虑重放共计的实施例中,未使用生成数。
在希望向相同vvol发出IO的不同应用发起的向相同vvol的后续绑定请求时,存储***管理器可以将vvol绑定到相同或者不同PE。如果将vvol绑定到相同PE,则存储***管理器返回相同PE的ID和先前生成的SLLID并且递增在连接数据库312中存储的这一IO连接路径的参考计数。在另一方面,如果将vvol绑定到不同PE,则存储***管理器生成新SLLID并且返回不同PE的ID和新生成的SLLID并且向连接数据库312添加与vvol的这一新IO连接路径作为新条目。
可以使用解绑虚拟卷API来发出虚拟卷解绑请求。解绑请求包括如下IO连接路径的PE ID和SLLID,先前已经通过该IO连接路径绑定vvol。然而建议处理解绑请求。存储***管理器自由立即或者在延迟之后从PE解绑vvol。通过更新连接数据库312以递减包含PE ID和SLLID的条目的参考计数来处理解绑请求。如果将参考计数递减至零,则可以删除条目。在这一情况下应当注意,vvol继续存在、但是不再可用于使用给定的PE ID和SLLID的IO。
在实施VM的虚拟盘的vvol的情况下,用于这一vvol的参考计数将至少为一。在使VM断电并且与之结合发出解绑请求时,参考计数将被递减一。如果参考计数为零,则可以从连接数据库312去除vvol条目。一般而言,从连接数据库312去除条目是有益的,因为I/O管理器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的元数据分节中的对应盘区分配位图来实现这样的迁移。
向PE绑定和解绑vvol使存储***管理器能够确定vvol活性。存储***管理器可以利用这一信息以对非IO服务(消极)和IO服务(活跃)vvol执行存储***销售商专属优化。例如存储***管理器可以被配置用于如果vvol在消极状态中保持超出特定阈值时间则将它从低延时(高成本)SSD重新定位到中延时(低成本)硬驱动。
图11A和图11B是根据一个实施例的用于向虚拟卷发出IP的方法步骤的流程图。图11A是用于从应用向原始块设备直接发出IP的方法步骤1100的流程图,并且图11B是用于从应用通过文件***驱动器发出IP的方法步骤1120的流程图。
方法1100在步骤1102开始,其中应用、比如图5A至图5B中所示应用512或者图5C至图5D中所示VM 571向原始块设备发出IO。在步骤1104,虚拟卷设备驱动器532或者565根据应用发出的IO生成原始块级IO。在步骤1106,原始块设备的名称由虚拟卷设备驱动器532或者565转译成PE ID和SLLID(并且在运用图2B的存储设备的实施例中也由NFS客户端545或者585转译成NFS句柄)。在步骤1108,数据访问层540或者566执行将PE ID和SLLID(并且在运用图2B的存储设备的实施例中也将NFS句柄)编码成原始块级IO。然后,在步骤1110,HBA/NIC发出原始块级IO。
对于非VM应用、比如图5A至图5B中所示应用512,方法1120在步骤1121开始。在步骤1121,应用向在基于vvol的块设备上存储的文件发出IO。然后在步骤1122,文件***驱动器、例如文件***驱动器510根据文件IO生成块级IO。在步骤1122,执行与步骤1106、1108和1110相同的步骤1126、1128和1130。
对于VM应用、比如图5C至图5D中所示VM 571,方法1120在步骤1123开始。在步骤1123,VM向它的虚拟盘发出IO。然后,在步骤1124,这一IO例如由SCSI虚拟化层563转译成文件IO。文件***驱动器、例如VMFS驱动器564然后在步骤1125根据文件IO生成块级IO。在步骤1125之后,执行与步骤1106、1108和1110相同的步骤1126、1128和1130。
图12是根据一个实施例的用于在存储***执行IO的方法步骤的流程图。在步骤1210,通过在存储***中配置的PE之一接收计算机***发出的IO。IO管理器304在步骤1212解析IO。在步骤1212之后,如果存储***群集是图2A中所示类型,则IO管理器304执行步骤1214a,并且如果存储***群集是图2B中所示类型,则IO管理器304执行步骤1214b。在步骤1214a,IO管理器304从解析的IO提取SLLID并且访问连接数据库312以确定与PE ID和提取的SLLID对应的vvol ID。在步骤1214b,IO管理器304从解析的IO提取NFS并且使用PE ID和NFS句柄作为SLLID来标识vvol。在步骤1214a和1214b之后执行步骤1216。在步骤1216,卷管理器306和容器管理器308分别访问vvol数据库314和容器数据库316以获得将对其执行IO的物理存储位置。然后在步骤1218,数据访问层310对在步骤1216获得的物理存储位置执行IO。
在一些情形中,应用(应用512或者VM 571)、管理服务器610和/或存储***管理器可以确定vvol到特定PE的绑定比如在PE由于太多绑定而变成超负荷时经历问题。作为一种解决这样的问题的方式,即使在IO命令被引向vvol之时,存储***管理器仍然可以将绑定的vvol重新绑定到不同PE。图13是根据一个实施例的用于使用重新绑定API来发出和执行vvol重新绑定请求的方法步骤1300的流程图。
如图所示,方法1300在步骤1302开始,其中存储***管理器确定应当将vvol绑定到与vvol当前被绑定到的第一PE不同的第二PE。在步骤1304,存储***管理器经由带外请求向计算机***(例如计算机***103)发出对于重新绑定vvol的请求,该计算机***运行向vvol发出IO的应用。在步骤1306,计算机***103从存储***管理器接收重新绑定请求并且作为响应发出对于将vvol绑定到新PE的请求。在步骤1308,存储***管理器接收重新绑定请求并且作为响应将vvol绑定到新PE。在步骤1310,存储***管理器如以上结合图10描述的那样向计算机***发送vvol现在也被绑定到的新PE的ID和用于访问vvol的SLLID。
在步骤1312,计算机***从存储***管理器接收新PE ID和SLLID。在块设备数据库533或者580中,初始地将新PE连接的活跃位设置成1,这意味着已经建立经由新PE的用于vvol的新IO会话。计算机***也将第一PE连接的活跃位设置成0,这表示不能通过这一PE连接向vvol发出更多IO。应当认识,不应在去激活时立即解绑这一PE连接,因为可能有通过这一PE连接的向vvol的IO,这些IO可能在非限制、即被发出、但是未完成。因此,在步骤1314,计算机***访问块设备数据库533或者580以查看是否已经完成通过第一PE连接向vvol发出的所有“在飞行中的命令”(CIF)、即是否CIF=0。计算机***在执行步骤1318之前等待CIF变成零。同时,通过新PE发出向vvol的附加IO,因为已经将新PE连接的活跃位设置成1。在CIF达到零时,执行步骤1318,其中向存储***管理器发出对于解绑第一PE连接的请求。然后在步骤1320,存储***管理器从第一PE解绑vvol。计算机***也在步骤1324通过新PE向vvol发出所有附加IO。
图14是根据一个实施例的虚拟卷的生命周期的概念图。图14中所示所有命令、即创建、快照、克隆、绑定、解绑、扩展和删除形成vvol命令集并且通过以上结合图6描述的插件612、622可访问。如图所示,在作为以下命令——创建vvol、快照vvol或者克隆vvol——中的任何命令的结果生成vvol时,生成的vvol在“消极”状态中保持,其中vvol未被绑定到特定PE、因此不能接收IO。此外,在vvol在消极状态中时执行以下命令——快照vvol、克隆vvol或者扩展vvol——中的任何命令时,原有vvol和新创建的vvol(如果有)在消极状态中保持。也如图所示,当在消极状态中的vvol被绑定到PE时,vvol进入“活跃”状态。反言之,在从PE解绑活跃vvol时,vvol进入消极状态,这假设vvol未被绑定到任何附加PE。当vvol在活跃状态中时执行以下命令——快照vvol、克隆vvol、扩展vvol或者重新绑定vvol——中的任何命令时,原有vvol在活跃状态中保持,并且新创建的vvol(如果有)在消极状态中保持。
如以上描述的那样,VM可以具有多个虚拟盘,并且为每个虚拟盘创建分离vvol。VM也具有描述VM的配置的元数据文件。元数据文件包括VM配置文件、VM日志文件、盘描述符文件、VM交换文件等,每个盘描述符文件用于VM的虚拟盘中的每个相应虚拟盘。用于虚拟盘的盘描述符文件包含涉及虚拟盘的信息、比如它的vvol ID、它的大小、是否瘦调配虚拟盘和为虚拟盘创建的一个或者多个快照的标识等。VM交换文件提供存储***上的VM的交换空间。在一个实施例中,在vvol中存储这些VM配置文件,并且这一vvol这里称为元数据vvol。
图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。
在步骤1522,主机计算机使用向主机计算机的操作***中的“创建设备”调用来创建元数据vvol的块设备实例。然后在步骤1524,主机计算机在块设备上创建文件***(例如VMFS),响应于这一点返回文件***ID(FSID)。主机计算机在步骤1526装配具有返回的FSID的文件***并且向与这一文件***关联的命名空间中存储VM的元数据。元数据的示例包括VM日志文件、盘描述符文件和VM交换文件,每个盘描述符文件用于VM的虚拟盘中的每个相应虚拟盘。
在步骤1528,主机计算机发起用于用以上结合图8描述的方式为VM的虚拟盘中的每个虚拟盘创建vvol(每个这样的vvol这里称为“数据vvol”)的方法,存储***管理器在步骤1530按照该方法创建数据vvol并且向主机计算机返回数据vvol的vvol ID。在步骤1532,主机计算机在用于虚拟盘的盘描述符文件中存储数据vvol的ID。该方法以在已经为VM的所有虚拟盘创建数据vvol之后解绑元数据vvol(未示出)作为结束。
图16A是用于在已经以结合图15描述的方式调配Vm之后使VM通电的方法步骤的流程图。图16B是在已经使VM通电之后使VM断电的方法步骤的流程图。这两种方法由用于VM的主机计算机执行。
在步骤1608接收VM通电命令时,在步骤1610获取与VM对应的元数据vvol。然后在步骤1612,元数据vvol经历如以上结合图10描述的绑定过程。在步骤1614在元数据vvol上装配文件***,从而可以在步骤1616读取用于数据vvol的元数据文件、具体为盘描述符文件并且获得数据vvol ID。数据vvol然后在步骤1618逐个经历如以上结合图10描述的绑定过程。
在步骤1620接收VM断电命令时,在块设备数据库(例如,图5C的块设备数据库580)标记VM的数据vvol为不活跃,并且主机计算机等待与数据vvol中的每个vvol关联的CIF达到零(步骤1622)。在与每个数据vvol关联的CIF达到零时,主机计算机在步骤1624请求存储***解绑该数据vvol。在与所有数据vvol关联的CIF达到零之后,在步骤1626在块设备数据库中标记元数据为不活跃。然后在步骤1628,在与元数据vvol关联的CIF达到零时,主机计算机在步骤1630请求解绑元数据vvol。
图17和图18是用于重新调配VM的方法步骤的流程图。在这里所示示例中,图17是用于扩展VM的vvol、具体为用于VM的虚拟盘的数据vvol的大小的在主机计算机上执行的方法步骤的流程图,并且图18是用于在存储容器之间移动VM的vvol的在存储***中执行的方法步骤的流程图。
用于扩展用于VM的虚拟盘的数据vvol的大小的方法在步骤1708开始,其中主机计算机确定是否使VM通电。如果主机计算机在步骤1708确定未使VM通电,则主机计算机在步骤1710获取与VM对应的元数据vvol的ID。然后,主机计算机在步骤1712发起用于元数据vvol的绑定过程。在绑定之后,在步骤1714,主机计算机在元数据vvol上装配文件***并且从用于虚拟盘的盘描述符文件获取与虚拟盘对应的数据vvol的ID,该盘描述符文件是在元数据vvol上装配的文件***中的文件。然后在步骤1716,主机计算机在步骤1716向存储***发送扩展vvol API调用,其中扩展vvol API调用可以包括数据vvol的ID和数据vvol的新大小。
如果使VM通电,则主机计算机在步骤1715接收VM的待扩展的虚拟盘的数据vvol的ID。应当从图16A的方法认识,可以从与VM的虚拟盘关联的盘描述符文件获得这一ID。然后,在步骤1716,主机计算机在步骤1716向存储***发送扩展vvol API调用,其中扩展vvolAPI调用包括数据vvol的ID和数据vvol的新大小。
扩展vvol API调用造成在存储***中更新vvol数据库和容器数据库(例如,图3的vvol数据库314和容器数据库316)以反映vvol的增加的地址空间。在接收扩展vvol API调用已经完成的确认时,主机计算机在步骤1718用新大小更新用于VM的虚拟盘的盘描述符文件。然后在步骤1720,主机计算机确定是否使VM通电。如果不是,则主机计算机在步骤1722拆卸文件***并且向存储***发送对于解绑元数据vvol的请求。在另一方面,如果使VM通电,则该方法终止。
用于将VM的当前绑定到PE的vvol从源存储容器移向目的地存储容器——其中源存储容器和目的地存储容器二者在相同存储***管理器的范围内——的方法在步骤1810开始,其中接收源和目的地存储容器的容器ID(分别为SC1和SC2)以及待移动的vvol的vvolID。然后,在步骤1812,更新vvol数据库(例如图3的vvol数据库314)和容器数据库(例如,图3的容器数据库316)的盘区分配位图如下。首先,存储***管理器从SC1的在容器数据库316中的条目去除SC1中的vvol盘区、然后通过修改SC2的在容器数据库316中的条目来向SC2指派这些盘区。在一个实施例中,存储***可以通过向SC1指派新纺锤体盘区来补偿SC1中的存储容量损失(由于去除vvol存储盘区)并且通过从SC2去除一些未使用的纺锤体盘区来弥补SC2中的存储容量增加(由于添加vvol存储盘区)。在步骤1814,存储***管理器确定当前绑定的PE是否能够最优地服务于向vvol的新位置的IO。其中当前PE不能服务于向vvol的新位置的IO的示例实例是如果存储管理员已经静态配置存储***管理器以向来自不同客户并且因此来自不同存储容器的vvol指派不同PE。如果当前PE不能服务于向vvol的IO,则vvol在步骤1815经历以上结合图13描述的重新绑定过程(和对连接数据库、例如图3的连接数据库312的关联改变)。在步骤1815之后,执行步骤1816,其中向主机计算机返回成功移动完成的确认。如果存储***管理器在步骤1814确定当前PE能够服务于向vvol的新位置的IO,则绕过步骤1815并且接着执行步骤1816。
当在不兼容存储容器之间、例如在不同制造商的存储设备中创建的存储容器之间移动vvol时,除了对容器数据库316、vvol数据库314和连接数据库312的改变之外还在存储容器之间执行数据移动。在一个实施例中,运用在通过这里引用将全部内容结合于此、提交于2008年5月29日并且标题为“Offloading Storage Operations to Storage Hardware”的第12/129,323号美国专利申请中描述的数据移动技术。
图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,存储***管理器向主机计算机返回新数据vvolID。接收新数据vvol ID向主机计算机提供数据vvol克隆完成而无错误的确认。然后在步骤1925,主机计算机向新VM的元数据vvol发出IO以用新生成的数据vvol ID更新元数据文件、具体为盘描述符文件。存储***在步骤1926执行主机计算机向存储***发出的IO,作为这一点的结果,用新生成的数据vvol ID更新新VM的盘描述符文件。
如果存储***管理器在步骤1918确定模板VM和新VM的数据vvol不兼容,则向主机计算机返回错误消息。在接收这一错误消息时,主机计算机在步骤1921向存储***发出创建vvol API调用以创建新数据vvol。在步骤1922,存储***管理器通过生成新数据vvolID、更新容器数据库316中的分配位图并且向vvol数据库314添加新vvol条目来创建新数据vvol并且向主机计算机返回新数据vvol ID。在步骤1923,主机计算机根据在通过这里引用将全部内容结合于、提交于2009年1月21日并且标题为“Data Mover for ComputerSystem”的第12/356,694号美国专利申请中描述的技术执行数据移动(步骤1923)。在步骤1923之后,如以上描述的那样执行步骤1925和1926。
图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地址和目录路径作为PEID和SLLID。在步骤2024,主机计算机在指定的IP地址和目录路径装配目录并且在装配的目录中存储元数据文件。在使用NFS的实施例中,NFS客户端545或者585可以将给定的IP地址和目录路径分解成NFS句柄以便向这样的目录发出NFS请求。
在步骤2026,主机计算机发起用于用以上结合图8描述的方式为VM的虚拟盘中的每个虚拟盘创建数据vvol的方法,存储***管理器在步骤2030按照该方法创建数据vvol并且向主机计算机返回数据vvol的vvol ID。在步骤2032,主机计算机在用于虚拟盘的盘描述符文件中存储数据vvol的ID。该方法以在已经对于VM的所有虚拟盘创建数据vvol之后解绑元数据vvol(未示出)作为结束。
如以上结合图8描述的那样,在从存储容器创建新vvol并且未为新vvol显式地指定存储能力简档时,新vvol将继承与存储容器关联的存储能力简档。可以从若干不同简档之一选择与存储容器关联的存储能力建档。例如,如图21中所示,不同简档包括生产(prod)简档2101、开发(dev)简档2102和测试简档2103(这里通常为“简档2100”)。应当认识,可以定义许多其它简档。如图所示,特定建档的每个简档条目为固定类型或者可变类型并且具有名称和与它关联的一个或者多个值。固定类型的简档条目具有固定数目的可选择项目。例如可以将简档条目“复制”设置成真或者假。对照而言,可变类型的简档条目无预定义选择。取而代之,为可变类型的简档条目设置默认值和值范围,并且用户可以选择在范围内的任何值。如果未指定值,则使用默认值。在图21中所示示例简档2100中,可变类型的简档条目具有被逗号分离的三个数。第一个数是指定的范围的更低端,并且第二个数是指定的范围的更高端。第三个数是默认值。因此,将复制vvol,该vvol继承在生产简档2101中定义id存储能力简档(复制·值=真),并且可以在范围0.1到24小时中定义用于复制的恢复时间目标(RTO),默认为1小时。此外,对于这一vvol(复制·值=真)允许快照。保持的快照数目在范围1至100中,默认为1,并且快照频率在范围每小时一次至每24小时一次中,默认为每小时一次。SnapInherit列指示在快照给定的vvol以创建作为衍生vvol的新vvol时是否应当向衍生vvol传播给定的简档属性(及其值)。在生产简档2101的示例中,可以用生成简单2101向给定的vvol的快照vvol传播仅前两个简档条目(复制和RTO)。快照vvol的所有其它属性的值将被设置成在简档中指定的默认值。换而言之,这些其它属性在给定的vvol上的任何定制(例如快照频率的非默认值)将由于它们的对应SnapInherit列为假而不会向快照vvol传播。简档也包含其它列、比如CloneInherit(未示出)和ReplicaInherit(未示出),这两列控制分别向给定的vvol的克隆和复制传播哪些属性值。
在根据图4的方法创建存储容器时,可以设置可以对于从存储容器创建的vvol定义的存储能力简档类型。图21中的流程图图示图4中所示用于创建存储容器的方法而在步骤412与步骤413之间***步骤2110。在步骤2110,存储管理员选择用于创建的存储容器的简档2100中的一个或者多个简档。例如,为一个客户创建的存储容器可以与生产建档2101和开发简档2102关联,从而为生产类型的vvol将如情况可以是的那样继承用默认值或者客户指定的值在生产简档2101中定义的存储能力简档,并且为开发类型的vvol将如情况可以是那样继承用默认值或者客户指定的值在开发建档2102中定义的存储能力简档。
图22是用于创建vvol并且定义用于vvol的存储能力简档的由存储***管理器131、132或者135执行的所示方法步骤的流程图。图22的方法步骤、具体为方法步骤2210、2212、2218和2220分别地对应图8中所示步骤806、810、812和814。此外,图22的方法步骤包括步骤2214、2215和2216,这些步骤定义用于创建的vvol的存储能力简档。
在步骤2214,存储***管理器确定是否已经在对于创建vvol的请求中指定将在存储能力简档中使用的值。如果它们不是,则存储***管理器在步骤2215运用与vvol的存储容器关联的存储能力简档作为vvol的具有默认值的存储能力简档。如果已经指定将在存储能力简档中使用的值,则存储***管理器在步骤2216运用与vvol的存储容器关联的存储能力简档作为vvol的具有指定的值而不是默认值的存储能力简档。
在一个实施例中,在vvol数据库314中存储vvol的存储能力简档为关键字-值对。一旦已经定义并且在vvol数据库314中存储vvol的存储能力简档为关键字-值对,并且只要与复制和快照有关的属性和值如图21的示例简档中所示是这一简档的部分,存储***就能够执行用于vvol的复制和快照而无主机计算机发出的进一步指令。
图23是图示用于从母vvol创建快照的由存储***管理器131、132或者135执行的方法步骤的流程图。在一个实施例中,运用快照跟踪数据结构以根据在给定的存储能力简档中的快照定义调度快照。在达到用于快照的调度的时间时,存储***管理器在步骤2310从快照跟踪数据结构获取vvol ID。然后,在步骤2312,存储***管理器生成用于快照的唯一vvol ID。存储***管理器在步骤2315运用母vvol(即具有从快照跟踪数据结构获取的vvol ID的vvol)的存储能力简档作为快照vvol的存储能力简档。应当注意,由于这是存储***驱动的自动化简档驱动的快照过程,所以用户未获得用于指定激昂在快照vvol的存储能力简档中使用的定制值。在步骤2318,存储***管理器通过更新容器数据库316中的分配位图并且向vvol数据库314添加用于快照vvol的新vvol条目在母vvol的存储容器内创建快照vvol。然后,在步骤2320,存储***管理器通过调度用于生成用于母vvol的下一快照的时间来更新快照跟踪数据结构。应当认识,存储***管理器必须对于所有如下vvol并行维护快照跟踪数据结构并且执行图23的方法步骤,这些vvol的存储能力简档规定调度的快照。
在用以上描述的方式创建快照之后,更新在vvol数据库314中存储的关键字-值对以指示快照vvol为类型=快照。也在其中为快照维护生成数——每当拍摄或者设置快照时递减生成数或者设置成等于日期+时间——的实施例中,存储生成数为关键字-值对。也在快照vvol条目中存储快照vvol的母vvol ID为关键字-值对。因此,主机计算机可以向vvol数据库314查询与特定vvol ID对应的快照。也有可能让主机计算机向vvol数据库发出对于与特定vvol ID和特定生成数对应的快照的查询。
这里描述的各种实施例可以运用各种由计算机实施的操作,这些操作涉及到在计算机***中存储的数据。例如这些操作通常、但是未必可能需要物理操纵物理数量,这些数量可以采用电或者磁信号的形式,其中能够存储、传送、组合、比较或者另外操纵它们或者它们的表示。另外,经常在术语、比如产生、标识、确定或者比较中引用这样的操纵。这里描述的任何形成一个或者多个实施例的部分的操作可以是有用机器操作。此外,一个或者多个实施例也涉及一种用于执行这些操作的设备或者装置。该装置可以被特别地构造用于具体所需目的,或者它可以是通用计算机,该通用计算机由在计算机中存储的计算机程序有选择地激活或者配置。具体而言,各种通用机器可以与根据这里的教导编写的计算机程序使用,或者构造更专门化的装置以执行所需操作可以更方便。
可以用包括手持设备、微处理器***、基于微处理器或者可编程的客户电子装置、小型计算机、大型机计算机等的其它计算机***配置实现这里描述的各种实施例。
可以实施一个或者多个实施例为一个或者多个计算机程序或者为在一个或者多个计算机可读介质中体现的一个或者多个计算机程序模块。术语计算机可读介质是指可以存储数据的任何数据存储设备,该数据随后可以向计算机***输入。计算机可读介质可以基于用于以使计算机程序能够被计算机读取的方式体现计算机程序的任何现有或者以后开发的技术。计算机可读介质的示例包括硬驱动、网络附接存储装置(NAS)、只读存储器、随机存取存储器(例如闪存设备)、CD(紧致盘)、CD-ROM、CD-R或者CD-RW、DVD(数字万用盘)、磁带以及其它光学和非光学数据存储设备。也可以通过网络耦合的计算机***分发计算机可读介质,从而以分布式方式存储和执行计算机可读代码。
虽然为了理解清楚而已经用一些细节描述一个或者多个实施例,但是将清楚可以在权利要求的范围内进行某些改变和修改。例如运用SCSI作为用于SAN设备的协议,并且使用NFS作为用于NAS设备的协议。可以使用SCSI协议的任何备选、光纤信道,并且可以使用NFS协议的任何备选、比如CIFS(公共因特网文件***)协议。因而,描述的实施例将视为示例而非限制,并且权利要求的范围将不限于这里给定的细节而是可以在权利要求的范围和等效含义内被修改。在权利要求中,单元和/或步骤除非在权利要求中陈述则未意味着任何特定操作顺序。
此外,尽管描述的可视化方法已经主要假设虚拟机呈现与特定硬件***一致的接口,但是可以结合未与任何特定硬件***直接对应的虚拟化使用描述的方法。根据各种实施例的可视化***都被设想,实施这些实施例为主控的实施例、非主控的实施例或者为往往模糊在二者之间的区分的实施例。另外,可以全部或者部分在硬件中实施各种可视化操作。例如硬件实现方式可以将查找表用于修改存储访问请求以使非盘数据安全。
许多变化、修改、添加和改进无论可视化程度如何都是可能的。可视化软件因此可以包括执行可视化功能的主机、控制台或者客户操作***的部件。可以提供多个实例用于这里描述为单个实例的部件、操作或者结构。最后,在各种部件、操作和数据存储库之间的边界有些任意,并且在具体示例配置的上下文中举例说明具体操作。其它功能分配被设想并且可以落入这里描述的实施例的范围内。一般而言,可以实施在示例配置中呈现为分离部件的结构和功能为组合的结构或者部件。类似地,可以实施呈现为单个部件的结构和功能为分离部件。这些和其它变化、修改、添加和改进可以落入所附权利要求的范围内。
Claims (8)
1.一种用于在存储***中处理输入-输出命令IO的方法,所述方法包括:
在存储***处接收IO,所述IO包括第一标识符和第二标识符,其中所述第一标识符用来将所述IO引向与所述存储***中的逻辑存储卷集合相关联的端点;
在所述存储***处从所述IO获取所述第二标识符并且将所述第二标识符转译成与所述端点相关联的所述逻辑存储卷集合中的一个逻辑存储的逻辑存储卷标识符;
在与所述逻辑存储卷标识符对应的逻辑存储卷引用的存储位置上执行所述IO;
维护一个数据结构,所述数据结构提供第二标识符到逻辑存储卷标识符的映射,其中所述第二标识符是使用所述数据结构被转译成所述逻辑存储卷标识符的;
其中所述数据结构包括与为一个或多个虚拟机创建的所述逻辑存储卷的块设备实例相对应的块设备名称;以及
访问所述数据结构以引用在所述IO中指定的块设备名称和定义到与所述块设备名称相关联的所述逻辑存储卷的IO会话的所述第一标识符和所述第二标识符之间的映射。
2.根据权利要求1所述的方法,其中在所述存储***中被配置为所述端点的逻辑单元编号LUN处接收所述IO,并且所述第一标识符是用于所述LUN的世界范围名称。
3.根据权利要求2所述的方法,还包括:
检测所述逻辑存储卷或者所述LUN中的错误状况并且向发出所述IO的计算机***发送错误消息。
4.根据权利要求1所述的方法,其中在所述存储***中被配置为所述端点的装配点处接收所述IO,并且所述第一标识符包括所述存储***和所述装配点的IP地址。
5.根据权利要求4所述的方法,还包括:
检测所述逻辑存储卷或者所述装配点中的错误状况并且向发出所述IO的计算机***发送错误消息。
6.根据权利要求1所述的方法,其中所述端点是在所述存储***使用的协议中用于所述IO的逻辑端点。
7.一种用于在存储***中处理输入-输出命令IO的装置,包括:
耦合到处理器的存储器,所述存储器具有存储在其中的指令,所述指令在由所述处理器执行时,使得所述装置执行根据权利要求1至5中任一项所述的方法。
8.一种***,包括:
根据权利要求7所述的装置,以及
被配置为由根据权利要求7所述的装置进行控制的存储***。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/219,368 US8595460B2 (en) | 2011-08-26 | 2011-08-26 | Configuring object storage system for input/output operations |
US13/219,368 | 2011-08-26 | ||
CN201280041490.9A CN103765372B (zh) | 2011-08-26 | 2012-08-22 | 配置用于输入/输出操作的对象存储*** |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280041490.9A Division CN103765372B (zh) | 2011-08-26 | 2012-08-22 | 配置用于输入/输出操作的对象存储*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105975214A CN105975214A (zh) | 2016-09-28 |
CN105975214B true CN105975214B (zh) | 2020-04-17 |
Family
ID=46796777
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280041490.9A Active CN103765372B (zh) | 2011-08-26 | 2012-08-22 | 配置用于输入/输出操作的对象存储*** |
CN201610331182.XA Active CN105975214B (zh) | 2011-08-26 | 2012-08-22 | 配置用于输入/输出操作的对象存储*** |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280041490.9A Active CN103765372B (zh) | 2011-08-26 | 2012-08-22 | 配置用于输入/输出操作的对象存储*** |
Country Status (6)
Country | Link |
---|---|
US (2) | US8595460B2 (zh) |
EP (2) | EP2712437B1 (zh) |
JP (2) | JP5963864B2 (zh) |
CN (2) | CN103765372B (zh) |
AU (2) | AU2012300457B2 (zh) |
WO (1) | WO2013032810A1 (zh) |
Families Citing this family (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9134922B2 (en) | 2009-03-12 | 2015-09-15 | Vmware, Inc. | System and method for allocating datastores for virtual machines |
US8775773B2 (en) | 2011-08-26 | 2014-07-08 | Vmware, Inc. | Object storage system |
US8595460B2 (en) | 2011-08-26 | 2013-11-26 | Vmware, Inc. | Configuring object storage system for input/output operations |
US8769174B2 (en) | 2011-08-29 | 2014-07-01 | Vmware, Inc. | Method of balancing workloads in object storage system |
US8862899B2 (en) * | 2011-08-30 | 2014-10-14 | Brocade Communications Systems, Inc. | Storage access authentication mechanism |
US20130074091A1 (en) * | 2011-09-20 | 2013-03-21 | Cloudbyte, Inc. | Techniques for ensuring resources achieve performance metrics in a multi-tenant storage controller |
US9285992B2 (en) * | 2011-12-16 | 2016-03-15 | Netapp, Inc. | System and method for optimally creating storage objects in a storage system |
US9372726B2 (en) | 2013-01-09 | 2016-06-21 | The Research Foundation For The State University Of New York | Gang migration of virtual machines using cluster-wide deduplication |
US9116737B2 (en) * | 2013-04-30 | 2015-08-25 | Vmware, Inc. | Conversion of virtual disk snapshots between redo and copy-on-write technologies |
WO2014190079A2 (en) | 2013-05-22 | 2014-11-27 | Njoy, Inc. | Compositions, devices, and methods for nicotine aerosol delivery |
US9400792B1 (en) * | 2013-06-27 | 2016-07-26 | Emc Corporation | File system inline fine grained tiering |
US9942692B2 (en) * | 2013-07-29 | 2018-04-10 | Verizon Patent And Licensing Inc. | One touch machine to machine device connection |
US10140051B1 (en) * | 2013-10-10 | 2018-11-27 | Ca, Inc. | Backup files to a disk image |
US10437787B2 (en) * | 2013-11-24 | 2019-10-08 | .Infinidat Ltd | Comparison of file system snapshots stored in a remote storage system using a network file system command |
US10033811B2 (en) * | 2014-01-14 | 2018-07-24 | International Business Machines Corporation | Matching storage resource packs to storage services |
US9823842B2 (en) | 2014-05-12 | 2017-11-21 | The Research Foundation For The State University Of New York | Gang migration of virtual machines using cluster-wide deduplication |
WO2015191023A1 (en) | 2014-06-09 | 2015-12-17 | Hitachi, Ltd. | Method and apparatus of subsidiary volume management |
US9218407B1 (en) | 2014-06-25 | 2015-12-22 | Pure Storage, Inc. | Replication and intermediate read-write state for mediums |
US9542119B2 (en) * | 2014-07-09 | 2017-01-10 | Toshiba Corporation | Solid-state mass storage media having data volumes with different service levels for different data types |
CN104283945B (zh) * | 2014-09-26 | 2018-02-06 | 华为技术有限公司 | 存储***、存储区域***设备及数据传输方法 |
CN104461403A (zh) * | 2014-12-29 | 2015-03-25 | 北京网秦天下科技有限公司 | linux下命令行操作对象存储***的方法和装置 |
US9853873B2 (en) | 2015-01-10 | 2017-12-26 | Cisco Technology, Inc. | Diagnosis and throughput measurement of fibre channel ports in a storage area network environment |
US10067688B2 (en) * | 2015-01-23 | 2018-09-04 | Qualcomm Incorporated | Storage resource management in virtualized environments |
JP6378847B2 (ja) | 2015-02-03 | 2018-08-22 | 華為技術有限公司Huawei Technologies Co.,Ltd. | ネットワーク・ファイル・システムにおいてi/o要求を処理するための方法及び装置 |
US9900250B2 (en) | 2015-03-26 | 2018-02-20 | Cisco Technology, Inc. | Scalable handling of BGP route information in VXLAN with EVPN control plane |
US10222986B2 (en) | 2015-05-15 | 2019-03-05 | Cisco Technology, Inc. | Tenant-level sharding of disks with tenant-specific storage modules to enable policies per tenant in a distributed storage system |
US11588783B2 (en) | 2015-06-10 | 2023-02-21 | Cisco Technology, Inc. | Techniques for implementing IPV6-based distributed storage space |
US10778765B2 (en) | 2015-07-15 | 2020-09-15 | Cisco Technology, Inc. | Bid/ask protocol in scale-out NVMe storage |
US10305814B2 (en) | 2015-08-05 | 2019-05-28 | International Business Machines Corporation | Sizing SAN storage migrations |
US10162982B2 (en) * | 2015-12-10 | 2018-12-25 | Sap Se | End user control of personal data in the cloud |
US9892075B2 (en) | 2015-12-10 | 2018-02-13 | Cisco Technology, Inc. | Policy driven storage in a microserver computing environment |
US9886195B2 (en) | 2016-01-14 | 2018-02-06 | Microsoft Technology Licensing, Llc | Performance-based migration among data storage devices |
US10140172B2 (en) | 2016-05-18 | 2018-11-27 | Cisco Technology, Inc. | Network-aware storage repairs |
US20170351639A1 (en) | 2016-06-06 | 2017-12-07 | Cisco Technology, Inc. | Remote memory access using memory mapped addressing among multiple compute nodes |
US10664169B2 (en) | 2016-06-24 | 2020-05-26 | Cisco Technology, Inc. | Performance of object storage system by reconfiguring storage devices based on latency that includes identifying a number of fragments that has a particular storage device as its primary storage device and another number of fragments that has said particular storage device as its replica storage device |
US11563695B2 (en) | 2016-08-29 | 2023-01-24 | Cisco Technology, Inc. | Queue protection using a shared global memory reserve |
CN107967117B (zh) * | 2016-10-20 | 2020-10-20 | 杭州海康威视数字技术股份有限公司 | 一种数据存储、读取、清理方法、装置及云存储*** |
US10545914B2 (en) | 2017-01-17 | 2020-01-28 | Cisco Technology, Inc. | Distributed object storage |
US10243823B1 (en) | 2017-02-24 | 2019-03-26 | Cisco Technology, Inc. | Techniques for using frame deep loopback capabilities for extended link diagnostics in fibre channel storage area networks |
US10713203B2 (en) | 2017-02-28 | 2020-07-14 | Cisco Technology, Inc. | Dynamic partition of PCIe disk arrays based on software configuration / policy distribution |
US10254991B2 (en) | 2017-03-06 | 2019-04-09 | Cisco Technology, Inc. | Storage area network based extended I/O metrics computation for deep insight into application performance |
US11079971B2 (en) * | 2017-03-31 | 2021-08-03 | Veritas Technologies Llc | Input/output (i/o) fencing without dedicated arbitrators |
US10303534B2 (en) | 2017-07-20 | 2019-05-28 | Cisco Technology, Inc. | System and method for self-healing of application centric infrastructure fabric memory |
CN109597774B (zh) * | 2017-09-30 | 2020-12-15 | 华为技术有限公司 | 一种存储设备功能的控制方法、装置及设备 |
US10404596B2 (en) | 2017-10-03 | 2019-09-03 | Cisco Technology, Inc. | Dynamic route profile storage in a hardware trie routing table |
US10942666B2 (en) | 2017-10-13 | 2021-03-09 | Cisco Technology, Inc. | Using network device replication in distributed storage clusters |
US10592530B2 (en) * | 2018-01-23 | 2020-03-17 | Vmware, Inc. | System and method for managing transactions for multiple data store nodes without a central log |
EP3671378A1 (de) * | 2018-12-17 | 2020-06-24 | Siemens Aktiengesellschaft | Datencontainer für ein steuersystem einer technischen anlage |
CN110334063B (zh) * | 2019-07-15 | 2024-05-14 | 深圳前海微众银行股份有限公司 | 文件***的操作方法、装置、设备及计算机可读存储介质 |
CN113608885B (zh) * | 2021-06-30 | 2023-12-22 | 济南浪潮数据技术有限公司 | 一种客户端请求处理方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1373874A (zh) * | 1999-09-13 | 2002-10-09 | 国际商业机器公司 | 在多主机计算环境中用于共享存储卷的主机卷映射***和方法 |
EP1357476A2 (en) * | 2002-04-26 | 2003-10-29 | Hitachi, Ltd. | Method for controlling storage system, and storage control apparatus |
EP1517230A2 (en) * | 2003-09-16 | 2005-03-23 | Hitachi, Ltd. | Storage system and storage control device |
WO2011070605A1 (en) * | 2009-12-07 | 2011-06-16 | Hitachi,Ltd. | Disk array system and command processing method for disk array system |
Family Cites Families (97)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5555388A (en) | 1992-08-20 | 1996-09-10 | Borland International, Inc. | Multi-user system and methods providing improved file management by reading |
DE69524916T2 (de) | 1994-10-11 | 2002-11-14 | Sun Microsystems Inc | Verfahren und Vorrichtung zur Datenübertragung im Bereich der Rechnersysteme |
US6658417B1 (en) | 1997-12-31 | 2003-12-02 | International Business Machines Corporation | Term-based methods and apparatus for access to files on shared storage devices |
US6421711B1 (en) * | 1998-06-29 | 2002-07-16 | Emc Corporation | Virtual ports for data transferring of a data storage system |
US6269382B1 (en) | 1998-08-31 | 2001-07-31 | Microsoft Corporation | Systems and methods for migration and recall of data from local and remote storage |
US6240511B1 (en) | 1998-12-14 | 2001-05-29 | Emc Corporation | Method and apparatus for detecting system configuration changes |
US6449652B1 (en) | 1999-01-04 | 2002-09-10 | Emc Corporation | Method and apparatus for providing secure access to a computer system resource |
US6931440B1 (en) | 1999-04-21 | 2005-08-16 | Emc Corporation | Method and apparatus for dynamically determining whether access to a resource connected to a computer has changed and determining how to access the resource with a new identifier |
JP4501548B2 (ja) * | 1999-08-27 | 2010-07-14 | 株式会社日立製作所 | 計算機システム及びそのデバイスの割り当て方法 |
US6389420B1 (en) | 1999-09-30 | 2002-05-14 | Emc Corporation | File manager providing distributed locking and metadata management for shared data access by clients relinquishing locks after time period expiration |
US7203732B2 (en) | 1999-11-11 | 2007-04-10 | Miralink Corporation | Flexible remote data mirroring |
AU2001246799A1 (en) | 2000-04-18 | 2001-10-30 | Storeage Networking Technologies | Storage virtualization in a storage area network |
US6678752B1 (en) | 2000-09-28 | 2004-01-13 | International Business Machines Corporation | Data storage system with automatic storage request analysis and selection of optimal output media type |
US20020161850A1 (en) | 2001-01-29 | 2002-10-31 | Ulrich Thomas R. | Data path accelerator for storage systems |
US6934799B2 (en) * | 2002-01-18 | 2005-08-23 | International Business Machines Corporation | Virtualization of iSCSI storage |
US7107267B2 (en) | 2002-01-31 | 2006-09-12 | Sun Microsystems, Inc. | Method, system, program, and data structure for implementing a locking mechanism for a shared resource |
US6757778B1 (en) | 2002-05-07 | 2004-06-29 | Veritas Operating Corporation | Storage management system |
US7263108B2 (en) | 2002-08-06 | 2007-08-28 | Netxen, Inc. | Dual-mode network storage systems and methods |
US7260628B2 (en) * | 2002-09-06 | 2007-08-21 | Hitachi, Ltd. | Event notification in storage networks |
US7672226B2 (en) * | 2002-09-09 | 2010-03-02 | Xiotech Corporation | Method, apparatus and program storage device for verifying existence of a redundant fibre channel path |
US7263593B2 (en) | 2002-11-25 | 2007-08-28 | Hitachi, Ltd. | Virtualization controller and data transfer control method |
US7502917B2 (en) | 2002-12-05 | 2009-03-10 | International Business Machines Corporation | High speed memory cloning facility via a lockless multiprocessor mechanism |
JP3974538B2 (ja) * | 2003-02-20 | 2007-09-12 | 株式会社日立製作所 | 情報処理システム |
US7769722B1 (en) | 2006-12-08 | 2010-08-03 | Emc Corporation | Replication and restoration of multiple data storage object types in a data network |
US7124131B2 (en) | 2003-04-29 | 2006-10-17 | International Business Machines Corporation | Discipline for lock reassertion in a distributed file system |
US7289992B2 (en) | 2003-05-01 | 2007-10-30 | International Business Machines Corporation | Method, system, and program for lock and transaction management |
US20040221123A1 (en) | 2003-05-02 | 2004-11-04 | Lam Wai Tung | Virtual data switch and method of use |
US7284104B1 (en) | 2003-06-30 | 2007-10-16 | Veritas Operating Corporation | Volume-based incremental backup and recovery of files |
JP4428993B2 (ja) | 2003-11-27 | 2010-03-10 | 株式会社日立製作所 | ディスクアレイ装置及びディスクアレイ装置の制御方法 |
US7529897B1 (en) | 2003-12-31 | 2009-05-05 | Vmware, Inc. | Generating and using checkpoints in a virtual computer system |
US7849098B1 (en) | 2004-02-06 | 2010-12-07 | Vmware, Inc. | Providing multiple concurrent access to a file system |
JP4391265B2 (ja) | 2004-02-26 | 2009-12-24 | 株式会社日立製作所 | ストレージサブシステムおよび性能チューニング方法 |
US7318134B1 (en) | 2004-03-16 | 2008-01-08 | Emc Corporation | Continuous data backup using distributed journaling |
US7225314B1 (en) | 2004-05-26 | 2007-05-29 | Sun Microsystems, Inc. | Automatic conversion of all-zero data storage blocks into file holes |
US7284092B2 (en) * | 2004-06-24 | 2007-10-16 | International Business Machines Corporation | Digital data processing apparatus having multi-level register file |
US7131027B2 (en) | 2004-07-09 | 2006-10-31 | Hitachi, Ltd. | Method and apparatus for disk array based I/O routing and multi-layered external storage linkage |
US7155558B1 (en) | 2004-07-21 | 2006-12-26 | Vmware, Inc. | Providing access to a raw data storage unit in a computer system |
JP4281658B2 (ja) | 2004-09-24 | 2009-06-17 | 日本電気株式会社 | ファイルアクセスサービスシステムとスイッチ装置及びクオータ管理方法並びにプログラム |
US7062624B2 (en) | 2004-09-29 | 2006-06-13 | Hitachi, Ltd. | Method for managing volume groups considering storage tiers |
US20060075199A1 (en) | 2004-10-06 | 2006-04-06 | Mahesh Kallahalla | Method of providing storage to virtual computer cluster within shared computing environment |
GB2420639A (en) | 2004-11-24 | 2006-05-31 | Hewlett Packard Development Co | Monitoring Copy on write (COW) faults to control zero-copy data transfer |
US7581118B2 (en) | 2004-12-14 | 2009-08-25 | Netapp, Inc. | Disk sanitization using encryption |
US7337350B2 (en) * | 2005-02-09 | 2008-02-26 | Hitachi, Ltd. | Clustered storage system with external storage systems |
US7747836B2 (en) | 2005-03-08 | 2010-06-29 | Netapp, Inc. | Integrated storage virtualization and switch system |
US8073899B2 (en) | 2005-04-29 | 2011-12-06 | Netapp, Inc. | System and method for proxying data access commands in a storage system cluster |
US7529816B2 (en) | 2005-06-03 | 2009-05-05 | Hewlett-Packard Development Company, L.P. | System for providing multi-path input/output in a clustered data storage network |
US8713180B2 (en) | 2005-06-22 | 2014-04-29 | Cisco Technology, Inc. | Zero-copy network and file offload for web and application servers |
US7721299B2 (en) | 2005-08-05 | 2010-05-18 | Red Hat, Inc. | Zero-copy network I/O for virtual hosts |
JP4662548B2 (ja) | 2005-09-27 | 2011-03-30 | 株式会社日立製作所 | スナップショット管理装置及び方法並びにストレージシステム |
US7707178B2 (en) | 2005-11-28 | 2010-04-27 | Commvault Systems, Inc. | Systems and methods for classifying and transferring information in a storage network |
US8001339B1 (en) | 2005-12-22 | 2011-08-16 | Storage Technology Corporation | Storage management policies in a virtual data storage system |
US7784049B1 (en) * | 2006-01-03 | 2010-08-24 | Emc Corporation | System and method for providing a plurality of virtual computing environments that efficiently use data in the virtual environments |
US7702870B2 (en) | 2006-01-19 | 2010-04-20 | Network Appliance Inc. | Method and apparatus for defragmentation and for detection of relocated blocks |
JP2007219609A (ja) | 2006-02-14 | 2007-08-30 | Hitachi Ltd | スナップショット管理装置及び方法 |
JP4940738B2 (ja) | 2006-04-12 | 2012-05-30 | 株式会社日立製作所 | 記憶領域動的割当方法 |
GB0608405D0 (en) * | 2006-04-28 | 2006-06-07 | Ibm | Optimisation of the selection of storage device ports |
US7653794B2 (en) | 2006-05-08 | 2010-01-26 | Microsoft Corporation | Converting physical machines to virtual machines |
US8140785B2 (en) | 2006-06-29 | 2012-03-20 | International Business Machines Corporation | Updating metadata in a logical volume associated with a storage controller for data units indicated in a data structure |
US7428614B2 (en) | 2006-07-27 | 2008-09-23 | Hitachi, Ltd. | Management system for a virtualized storage environment |
US7617377B2 (en) * | 2006-10-17 | 2009-11-10 | International Business Machines Corporation | Splitting endpoint address translation cache management responsibilities between a device driver and device driver services |
US20080141041A1 (en) | 2006-12-08 | 2008-06-12 | Hitachi Global Storage Technologies Netherlands B.V. | Wireless encryption key integrated HDD |
US9189265B2 (en) | 2006-12-21 | 2015-11-17 | Vmware, Inc. | Storage architecture for virtual machines |
JP5379956B2 (ja) | 2007-03-19 | 2013-12-25 | 株式会社日立製作所 | ストレージ装置及び記憶領域配置方法 |
US7793307B2 (en) | 2007-04-06 | 2010-09-07 | Network Appliance, Inc. | Apparatus and method for providing virtualized hardware resources within a virtual execution environment |
US7827201B1 (en) | 2007-04-27 | 2010-11-02 | Network Appliance, Inc. | Merging containers in a multi-container system |
JP2009043055A (ja) * | 2007-08-09 | 2009-02-26 | Hitachi Ltd | 計算機システム、ストレージ装置及びデータ管理方法 |
US7801994B2 (en) | 2007-11-29 | 2010-09-21 | Hitachi, Ltd. | Method and apparatus for locating candidate data centers for application migration |
JP2009140147A (ja) * | 2007-12-05 | 2009-06-25 | Hitachi Ltd | ホストから論理ボリュームまでのアクセスパスの作成を支援する装置。 |
JP2009151401A (ja) | 2007-12-19 | 2009-07-09 | Hitachi Ltd | 暗号機能を有するストレージ装置におけるボリューム管理方法 |
US8370833B2 (en) | 2008-02-20 | 2013-02-05 | Hewlett-Packard Development Company, L.P. | Method and system for implementing a virtual storage pool in a virtual environment |
US20090300283A1 (en) | 2008-05-29 | 2009-12-03 | Yutaka Kudo | Method and apparatus for dissolving hot spots in storage systems |
JP5107833B2 (ja) | 2008-08-29 | 2012-12-26 | 株式会社日立製作所 | ストレージシステム及びストレージシステムの制御方法 |
US8307177B2 (en) | 2008-09-05 | 2012-11-06 | Commvault Systems, Inc. | Systems and methods for management of virtualization data |
US8281305B2 (en) | 2008-10-17 | 2012-10-02 | Hitachi, Ltd. | Method and apparatus for resource provisioning |
JP4727705B2 (ja) | 2008-10-31 | 2011-07-20 | 株式会社日立製作所 | 階層型ストレージシステム |
JP4705982B2 (ja) | 2008-12-11 | 2011-06-22 | 株式会社日立製作所 | 情報処理システム、情報処理方法、及び管理装置 |
KR101405729B1 (ko) | 2009-01-23 | 2014-06-10 | 엘에스아이 코포레이션 | 동적 저장장치 계층화 방법 및 시스템 |
US9170756B2 (en) | 2009-01-29 | 2015-10-27 | Lsi Corporation | Method and system for dynamic storage tiering using allocate-on-write snapshots |
US8448167B2 (en) | 2009-02-19 | 2013-05-21 | Hitachi, Ltd. | Storage system, and remote copy control method therefor |
EP2399190B1 (en) | 2009-02-20 | 2018-06-06 | Hitachi, Ltd. | Storage system and method for operating storage system |
US8291159B2 (en) * | 2009-03-12 | 2012-10-16 | Vmware, Inc. | Monitoring and updating mapping of physical storage allocation of virtual machine without changing identifier of the storage volume assigned to virtual machine |
US8151033B2 (en) * | 2009-05-28 | 2012-04-03 | Red Hat, Inc. | Mechanism for virtual logical volume management |
US8706867B2 (en) | 2011-03-31 | 2014-04-22 | Commvault Systems, Inc. | Realtime streaming of multimedia content from secondary storage devices |
AU2010339584B2 (en) | 2009-12-31 | 2014-06-26 | Commvault Systems, Inc. | Systems and methods for performing data management operations using snapshots |
WO2011086598A1 (en) | 2010-01-14 | 2011-07-21 | Hitachi, Ltd. | Storage system |
WO2011096014A1 (ja) * | 2010-02-05 | 2011-08-11 | 株式会社日立製作所 | 仮想マシンと連携したThin-Provisioning容量管理を行う計算機システム、計算機、及び方法 |
JP5079841B2 (ja) * | 2010-04-15 | 2012-11-21 | 株式会社日立製作所 | ThinProvisioningに従う仮想的な論理ボリュームに対するデータのライトを制御する方法及びストレージ装置 |
US8458413B2 (en) | 2010-10-27 | 2013-06-04 | International Business Machines Corporation | Supporting virtual input/output (I/O) server (VIOS) active memory sharing in a cluster environment |
WO2012168966A1 (en) | 2011-06-07 | 2012-12-13 | Hitachi, Ltd. | Storage apparatus and method of controlling storage apparatus |
US8595460B2 (en) | 2011-08-26 | 2013-11-26 | Vmware, Inc. | Configuring object storage system for input/output operations |
US8775773B2 (en) | 2011-08-26 | 2014-07-08 | Vmware, Inc. | Object storage system |
US8775774B2 (en) | 2011-08-26 | 2014-07-08 | Vmware, Inc. | Management system and methods for object storage system |
US8650359B2 (en) | 2011-08-26 | 2014-02-11 | Vmware, Inc. | Computer system accessing object storage system |
US8769174B2 (en) | 2011-08-29 | 2014-07-01 | Vmware, Inc. | Method of balancing workloads in object storage system |
US8677085B2 (en) | 2011-08-29 | 2014-03-18 | Vmware, Inc. | Virtual machine snapshotting in object storage system |
US8650566B2 (en) | 2011-08-29 | 2014-02-11 | Vmware, Inc. | Virtual machine provisioning in object storage system |
US9703482B2 (en) | 2012-06-29 | 2017-07-11 | Vmware, Inc. | Filter appliance for object-based storage system |
-
2011
- 2011-08-26 US US13/219,368 patent/US8595460B2/en active Active
-
2012
- 2012-08-22 EP EP12754175.3A patent/EP2712437B1/en active Active
- 2012-08-22 CN CN201280041490.9A patent/CN103765372B/zh active Active
- 2012-08-22 WO PCT/US2012/051872 patent/WO2013032810A1/en active Application Filing
- 2012-08-22 AU AU2012300457A patent/AU2012300457B2/en active Active
- 2012-08-22 JP JP2014527263A patent/JP5963864B2/ja active Active
- 2012-08-22 CN CN201610331182.XA patent/CN105975214B/zh active Active
- 2012-08-22 EP EP17172175.6A patent/EP3244297B1/en active Active
-
2013
- 2013-11-06 US US14/073,055 patent/US8914610B2/en active Active
-
2015
- 2015-10-29 AU AU2015249115A patent/AU2015249115B2/en active Active
-
2016
- 2016-01-29 JP JP2016015488A patent/JP6219420B2/ja active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1373874A (zh) * | 1999-09-13 | 2002-10-09 | 国际商业机器公司 | 在多主机计算环境中用于共享存储卷的主机卷映射***和方法 |
EP1357476A2 (en) * | 2002-04-26 | 2003-10-29 | Hitachi, Ltd. | Method for controlling storage system, and storage control apparatus |
EP1517230A2 (en) * | 2003-09-16 | 2005-03-23 | Hitachi, Ltd. | Storage system and storage control device |
WO2011070605A1 (en) * | 2009-12-07 | 2011-06-16 | Hitachi,Ltd. | Disk array system and command processing method for disk array system |
Also Published As
Publication number | Publication date |
---|---|
JP2014529804A (ja) | 2014-11-13 |
JP5963864B2 (ja) | 2016-08-03 |
WO2013032810A1 (en) | 2013-03-07 |
EP2712437B1 (en) | 2017-07-05 |
EP2712437A1 (en) | 2014-04-02 |
JP6219420B2 (ja) | 2017-10-25 |
JP2016105308A (ja) | 2016-06-09 |
AU2015249115B2 (en) | 2017-01-12 |
EP3244297B1 (en) | 2021-07-21 |
AU2012300457A1 (en) | 2014-01-30 |
US20140181398A1 (en) | 2014-06-26 |
CN103765372A (zh) | 2014-04-30 |
US8595460B2 (en) | 2013-11-26 |
AU2015249115A1 (en) | 2015-11-12 |
EP3244297A1 (en) | 2017-11-15 |
US20130054888A1 (en) | 2013-02-28 |
US8914610B2 (en) | 2014-12-16 |
CN103765372B (zh) | 2016-12-28 |
CN105975214A (zh) | 2016-09-28 |
AU2012300457B2 (en) | 2015-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105975214B (zh) | 配置用于输入/输出操作的对象存储*** | |
AU2015243081B2 (en) | Data storage system and data storage control method | |
AU2016201198B2 (en) | Data storage system exporting logical volumes as storage objects | |
JP6208207B2 (ja) | オブジェクト・ストレージ・システムにアクセスするコンピュータ・システム | |
US8650566B2 (en) | Virtual machine provisioning in object storage system | |
US8677085B2 (en) | Virtual machine snapshotting in object storage system | |
US8769174B2 (en) | Method of balancing workloads in object storage system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: California, USA Patentee after: Weirui LLC Country or region after: U.S.A. Address before: California, USA Patentee before: VMWARE, Inc. Country or region before: U.S.A. |