[云计算]OpenStack - Glance
Glance在OpenStack中的位置
Glance在OpenStack中主要为实例创建提供公共镜像服务能力以及镜像、虚拟机快照管理功能。
Glance系统架构
组件 | 功能 |
---|---|
Glance-api | 类似nova-api,接受REST API请求,通过其他模块(glance-registry及image store)来完成诸如镜像的查找、获取、上传、删除等操作 |
Glance-registry | 用于与MySQL数据库交互,用于存储或获取镜像的元数据(metadata) |
Image Store | 是一个存储的接口层,通过这个接口,Glance可以获取镜像,Image Store支持的存储由Amazon的S3、OpenStack本身的Swift、还有诸如Ceph、Sheepdog、GlusterFS等分布式存储 |
-
Cache机制:提前将需要的镜像文件缓存至目标节点。在创建VM时会先从缓存查找镜像,若缓存中能够查找到所需镜像,将不会再去Glance下载image文件,而是直接利用本地库中的缓存镜像直接创建VM的Disk文件,大大减少VM的部署时间。
-
nova-compute调度glance-api,接着调度swift
Glance镜像管理
-
特点
-
基于REST API
- 有好的服务访问方式
-
虚拟机镜像存储与取回服务
- 轻负载,与存储技术无关
-
兼容所有常见镜像格式
- 适应性强
-
支持多种底层存储Swift、S3、Http、本地存储
- 灵活部署、不与特定存储技术绑定
(Amazon的S3:Simple Storage Service)
-
- 统一的服务接口,镜像私有、公开等
- 通过驱动支持多种存储后端,支持不同租户镜像存储空间隔离(仅限Swift)
- 支持镜像格式全面
- 镜像的本地缓存、多数据中心复制,多location,增量镜像,Cinder-Volume后端等新增特性,为大规模、多数据中心部署时简化镜像管理,提高存储空间利用率,提高虚拟机发放效率,完成镜像的备份 等提供支持。
Glance缓存机制
-
目的:
- 提升因扩展性带来的节点数量增加,从而导致的镜像服务性能问题。
-
镜像缓存原理:
-
由Glance-api提供该缓存机制。
-
缓存位置:在Glance-api节点存放原始镜像文件的一份拷贝,本质上是为了实现api服务器的数量扩展,提高为同一个镜像提供服务的效率。
-
用户不可见:用户并不知道其虚拟机部署使用的是本地缓存的镜像还是后端存储提供的镜像。
-
可配置:缓存服务开关、缓存大小、缓存周期都可以通过命令行配置。
-
-
镜像缓存操作
- 控制cache总量的大小,周期性的运行glance-cache-pruner --image_cache_max_size= * 。
- 清理image cache 通过glance-cache-cleaner清理状态异常的cache文件。
- 预取某些热门镜像到新增的api节点中,
glance-cache-manage --host=queue-image <IMAGE_ID>。 - 手动删除image cache来释放空间,
glance-cache-manage --host=delete-cached-image <IMAGE_ID>。
Glance中Image状态迁移
- 对于Glance来说,image有如下几种状态:
- queued:image id已被创建,但是image data还未上传,此时image状态为queued。
- saving:image data正在上传中。
- Active:image data已经上传完毕。
- Killed:在上传image data的时候发生错误,此状态是image data不可读。
- Deleted:Glance保留记录在数据库中,但是镜像已经不可以使用。Glance将在一定时间后移除此记录。
- Pending_delete:此状态和Deleted状态一样,保留记录在数据库中。不同的是glance不删除image data。并且此状态可以恢复成Active状态。
多种镜像格式简介
镜像格式
-
Glance支持多种镜像的格式,下面列出了目前已支持的镜像格式
-
raw:非结构化的镜像格式。
-
vhd:一种通用的虚拟机磁盘格式,可用于Vmware、Xen、Microsoft Virtual PC/Virtual Server/Hyper-V、VirtualBox等。
-
vmdk:VMware的虚拟机磁盘格式,同样支持多种Hypervisor。
-
vdi:VirtualBox、QEMU等支持的虚拟机磁盘格式。
-
iso:光盘存档格式。
-
qcow2:一种支持QEMU并且可以动态扩展的磁盘格式。
-
aki:Amazon Kernel镜像
-
ari:Amazon Ramdisk镜像
-
ami:Amazon虚拟机镜像
-
镜像容器格式
- 镜像容器格式(或者叫打包Package的虚拟机磁盘格式),容器类似一个文件夹,在Swift中,它称之为Container(容器),同样在Glance中支持多种打包的Container格式:
- OVF:开放式虚拟机磁盘格式,由VMware发起,目前已被多种虚拟化设备支持。
- bare:表示镜像没有container或者元数据。
- aki:Amazon Kernel镜像
- ari:Amazon Ramdisk镜像
- ami:Amazon虚拟机镜像
- OVF(Open Virtualization Format:开放虚拟化格式 ):开源虚拟化格式OVF文件是一种开源的文件规范,它描述了一个开源、安全、有效、可拓展的便携式虚拟打包以及软件分布格式,它一般有几个部分组成,分别是ovf文件、mf文件、cert文件、vmdk文件和iso文件。简单来说,OVF文件可以抽象看做一个由规定的几个不同类型的文件所组成的文件包,这个文件包可作为以后不同虚拟机之间一个标准可靠的虚拟文件格式,实现不同虚拟机之间的通用性。每个类型的文件都有各自的作用,相辅相成。
- ovf文件在OVF文件格式中起到了举足轻重的作用,他的存在是保证了镜像文件vmdk,资源文件iso与虚拟机domain配置之间的正确对应,作用就如同vmware中的vmx格式、以及Xen、kvm中的xml 配置文件。