整合VMware与OpenStack — 块存储驱动的应用

来源:互联网 发布:知乎 自己拍婚纱照 编辑:程序博客网 时间:2024/06/06 02:28

【前导文章】

水乳交融:论VMware与OpenStack的整合—(1)》(点击可打开)

《整合VMware与OpenStack—镜像驱动的实现原理》(点击可打开)





一、应用架构

        VMware Cinder VMDK Driver块存储驱动的应用架构如下图所示:




        VMDK Driver以VMDK格式支持Cinder Volume,即:以VMDK作为后端存储文件格式。Cinder Volume可以存于vSphere支持的任何存储解决方案中,Cinder Volume保存在使用iSCSI、Fibre Channel、FCoE、NFS、VSAN和VVOLs技术的数据存储上;

        VMware Nova vCenter Driver与VMware Cinder VMDK Driver必须相配合使用。在nova.conf文件中将Compute Driver定义为vCenter Driver,在cinder.conf文件中将Volume Driver定义为VMDK Driver,并且,在各自的配置文件中,均设置为指向同一个vCenter Server的IP地址。

        在Nova的配置文件nova.conf中,要进行相应的设置,如下:


        在Cinder的配置文件cinder.conf中,要进行相应的配置,如下:



二、背景知识:Shadow VM(影子虚拟机)

        从OpenStack环境中向VMware环境发起创建Cinder volume的操作时,会生成Shadow VM(影子虚拟机),在vSphere web client中,可以观察到其存在,如下图所示:


        对上图所示的Shadow VM,其相关背景如下:

(1)在上图中,以“volume”为名字首部的虚拟机是Shadow VM,其上挂载VMDK,永远不会开机启动;

(2)在VMware中,Volume是隶属于虚拟机的二级Object,无法脱离虚拟机而存在。因此,在VMware中,无法单独创建一个Volume,只能在创建虚拟机时创建Volume;

(3)在OpenStack Cinder Service中,Volume是一种独立的对象。

        由于以上所述的原因,使用VMware Cinder VMDK Driver创建Volume时,Volume(即VMDK)必须与Shadow VM进行关联。Shadow VM只能在VMware的管理界面上显示,对OpenStack用户而言,在Dashboard里无法看到Shadow VM的存在。


三、技术概览 

(1)VMware Cinder VMDK Driver用于管理基于vSphere数据存储的卷(Volume)

Ⅰ)通过vCenter管理

        VMware Cinder VMDK Driver连接到vCenter,通过vCenter,对被管理Cluster中的ESXi主机可见的所有数据存储进行动态的访问和管理。 

Ⅱ)将vCenter管理的存储资源作为块设备

        通过VMDK及其相关的数据存储提供的抽象层,对vCenter管理的存储资源,VMware Cinder VMDK Driver将其作为块设备暴露给OpenStack的Cinder块存储服务,这意味着Cinder Volume可由数据存储上的VMDK文件支持,而数据存储则包括任何使用兼容VMware存储技术的NFS、iSCSI、FiberChannel和vSAN。


(2)Volume的创建和挂载

Ⅰ)使用时再创建

        创建一个Volume时,Cinder VMDK Driver将根据需要相应地创建一个VMDK文件,但是,此时并没有实际地执行创建VMDK文件的操作。这一操作要等到第一次将Volume挂载到指定虚拟机的时候,伴随着Shadow VM的创建才能完成。

        这样设计的缘由是:当物理主机无法连接Datastore时,在物理主机上创建的虚拟机也无法挂载Datastore上的Volume,在这种情况下,必须调用Storage vMotion以在不同Datastore上迁移Volume,而这会产生相当的资源开销。因此,在要将Volume实际地挂载到虚拟机上的时候再创建Volume,这样的设计可以将Volume创建在虚拟机所在的物理主机能够访问得到的Datastore上,尽可能地避免资源开销;

Ⅱ)Shadow VM的作用

        在Volume创建之后和将其实际地挂载到虚拟机之间,Shadow VM(影子虚拟机)用于“停泊”VMDK文件(对应于Cinder Volume),Shadow VM一直关机且不消耗资源。

Ⅲ)挂载Volume

A. 如果Volume从未被挂载,那么Volume及其Shadow VM尚不存在,于是,在将要挂载Volume的虚拟机所在物理主机可见的数据存储(data store)里,创建Volume及其Shadow VM,然后,将Volume从Shadow VM上卸载,再挂载给提出挂载要求的虚拟机。

B. 如果Volume曾经被挂载过,对于提出挂载要求的虚拟机所在的物理主机而言: 

  • Volume及其Shadow VM所在的数据存储(data store)是可见的,那么,将Volume卸载,再挂载给提出挂载要求的虚拟机;

  • Volume及其Shadow VM所在的数据存储(data store)是不可见的,那么, Storage vMotion将会首先被调用,将Volume迁移到物理主机可见的data store上,然后,将Volume卸载,再挂载给提出挂载要求的虚拟机。


(3)VMDK磁盘文件类型

        VMware Cinder VMDK Driver支持3种VMDK磁盘文件类型,即:thin、lazyZeroedThick和eagerZeroedThick,设置时可以使用vmware:vmdk_type参数去指定VMDK的磁盘文件类型,这3种磁盘类型的技术特性如下:

Ⅰ)Thin:只有在需要时才会分配磁盘空间并对其写零,thin磁盘在创建时花费的时间较短。

Ⅱ)lazyZeroedThick:在创建时就分配磁盘空间,但直到第一次写入时才对磁盘写零。

Ⅲ)eagerZeroedThick:在创建时就分配磁盘空间,并对磁盘写零。


(4)克隆类型

        使用VMware Cinder VMDK Driver,可以从其他源Volume或快照点创建Volume,支持Full和Linked/Fast克隆类型,设置时使用vmware:clone_type参数去指定克隆类型。

Ⅰ)完整克隆:Full,克隆虚拟机和源虚拟机是两个完全独立的实体,源虚拟机的修改和删除不会影响到克隆虚拟机的运行。缺点是不同虚拟机需要各自占用完全独立的磁盘空间。

Ⅱ)链接克隆: Linked/Fast,克隆虚拟机必须在源虚拟机存在的情况下才能运行,但优点是多个克隆虚拟机之间的公共部分(共同来自源虚拟机的部分)可以共用同一份磁盘空间。


(5)用vCenter存储策略去指定后端的数据存储(data store)

        在vCenter 5.5及后续版本中,可以创建一个或多个存储策略,并通过使用vmware:storage_profile参数,将存储策略作为块存储的Volume类型暴露给VMware Cinder VMDK Driver。

        比如,在vCenter中有一个名为gold_policy的存储策略,而在一个名为vol_01的块存储Volume类型中,其vmware:storage_profile值被设置为gold_policy,那么,任何使用名为vol_01的Volume类型创建的块存储Volume,都会把Volume创建在与gold_policy存储策略相匹配的数据存储上。


        《整合VMware与OpenStack》的下一篇,将先对VMware Neutron NSX Driver网络驱动的应用场景作简要讨论,然后,对整合VMware和OpenStack的技术手段进行总结和进一步的延伸讨论,进而讨论构建VMware与OpenStack共生环境的方法。


0 0
原创粉丝点击