Glanc组件提供虚拟机镜像存储和管理服务,它主要是提供虚拟镜像的查询、注册和传输等服务。但Glance本身并不直接实现对虚拟机镜像的存储功能,Glance只是一个代理,它充当了镜像存储服务和OpenStack其他组件(如Nova)之间沟通的纽带。Glanc支持如下两种镜像存储机制:
1)利用OpenStack对象存储(Swift)机制来存储镜像,Swift对象存储具有极高的数据持久性能,确保镜像文件不会丢失。
2)利用Amazon的简单存储解决方案(S3)直接存储虚拟机镜像。
Havana版本后Glance新增支持镜像存储到多种不同类型的存储池,加入了Sheepdog支持,并且Cinder也可以作为后端存储驱动之一。
Glanc支持多种虚拟机磁盘镜像格式:
1)raw(未做任何处理的非结构化的镜像格式)。
2)VHD(一种通用的虚拟机磁盘格式,可用于VMware、Xen、Microsoft Virtual PC/Virtual服务器/Hyper-V、VirtualBox等)。
·vmdk(VMware的虚拟机磁盘格式)。
·vdi(VirtualBox、QEMU等支持的虚拟机磁盘格式)。
·iso(光盘存档格式)。
·qcow2(一种支持QEMU并且可以动态扩展的磁盘格式)。
·aki(Amazon Kernel镜像)。
·ari(Amazon Ramdisk镜像)。
·ami(Amazon虚拟机镜像)。
Glance的架构如图3-5所示。
图3-5 Glance架构
从上图看,Glance主要由Glance API和Glance寄存器这两种服务组成,这两种服务都是WSGI服务器。Glance API是Glance服务的入口,负责接收用户的RESTful API请求。Glance寄存器处理的是与镜像元数据相关的RESTful请求,当Glance API收到用户的RESTful API请求后,如果判断该请求是与元数据相关,就把该请求转给Glance寄存器服务。然后Glance寄存器会解析用户元数据请求的内容,并和数据库交互存取和更新镜像的元数据。
在Glance V1-API版本后,Glance寄存器服务被整合到Glance API服务中去了。