Glance架构是一个典型的CS架构,提供的也是标准的Rest接口,各个layer分层也是很清楚的。
html
Glance是OpenStack镜像服务组件,glance服务默认监听在9292端口,其接收REST API请求,而后经过其余模块(glance-registry及image store)来完成诸如镜像的获取、上传、删除等操做,Glance提供restful API能够查询虚拟机镜像的metadata,而且能够得到镜像,经过Glance,虚拟机镜像能够被存储到多种存储上,好比简单的文件存储或者对象存储(好比OpenStack中swift项目)是在建立虚拟机的时候,须要先把镜像上传到glance,对镜像的列出镜像、删除镜像和上传镜像都是经过glance进行管理。
mysql
A directory on a local file system(这是默认配置) RADOS block devices VMware datastore Amazon S3 HTTP OpenStack Block Storage (Cinder) OpenStack Object Storage (Swift)
(1)磁盘格式
虚拟机镜像的磁盘格式是底层磁盘镜像的格式。如下是OpenStack支持的磁盘格式。
sql
格式说明:数据库
(2)容器格式
正如OpenStack glance也支持容器格式的概念,它描述了文件格式,并包含关于实际虚拟机的额外元数据。json
如下是OpenStack Glance支持的Container格式。
swift
Client端发送请求,api端router.py中将请求下发,选择相应的方法处理请求,通过中间auth, notifier, policy, quota到location,会调用到glance_store进行底端存储,并返回存储的位置信息,须要写到数据库中 在跟数据库的交互中须要用到glance_registry,将镜像的相关信息写到数据库中,值得注意的是会将上面镜像存储的位置信息location_uri写入到数据库中,在进行删除等操做会直接从数据库中读取这个uri,进行删除。api
上传镜像时Glance会显示镜像的各类状态。当咱们第一步上传镜像时,第一步就是入队列,通过短期的验证,镜像进入queued状态,保存镜像并开始上传。以后镜像会进入saving的状态,表示尚未彻底上传完毕。镜像彻底上传后,状态会变成Active。若是上传失败,将会变成killed或deleted状态。另外咱们还可使用命令停用或者从新激活彻底上传成功的镜像。安全
下图为glance镜像的状态流转图。
restful
状态说明:网络
如前所述,磁盘镜像做为模板存储。镜像服务存储和管理镜像。实例是在计算节点上运行的单个虚拟机,计算节点管理这些实例。用户能够从用同一个镜像启动任意数量的实例。每一个启动的实例都是基于镜像的一个副本,因此实例上的任何修改都不会影响到镜像。咱们能够对正在运行实例作快照,并能够用快照于启动另外一个新的实例。
当咱们启动一个实例时,咱们须要指定Flavor。Flavor定义了实例能够有多少个虚拟CPU,多大的RAM以及临时磁盘的大小。 OpenStack提供了预约义的flavor,咱们也能够新建立和编辑Flavor。
下图显示了启动实例的系统状态。glance store包含必定数量的镜像,计算节点包含可用的vcpu,内存和本地磁盘资源,cinder-volume包含必定数量的volume。
启动实例以前,须要选择一个镜像,flavor和任何可选属性。选定的 flavor提供一个系统盘,标记为vda,另一个临时盘被标记为vdb,cinder-volume提供的volume被映射到第三个虚拟磁盘并将其称为vdc。
vdc使用iSCSI链接到cinder-volume。随后计算节点提供vCPU和内存资源以后,该实例将从vda.启动。该实例运行并更改磁盘上的数据。若是volume store位于单独的网络上,须要在计算节点nova.conf里指定的my_block_storage_ip,将会经过存储网络直接通讯。
实例被删除后, 除volume以外的其它资源都会被回收。临时盘将会被清空,内存和vCPU资源被会被释放。在这个过程当中镜像不会发生任何改变。
Glance-api.conf :Glance api 服务配置文件.
Glance-registry.conf :Glanceregistry服务配置文件,用户存储镜像有关的元数据。
glance-scrubber.conf :用于清理已删除的镜像的服务。
policy.json :镜像服务的访问控制。在这里,咱们能够定义角色和策略,是OpenStack Glance中的安全特性。
参考文章:
http://www.sohu.com/a/156310708_610730
http://www.bubuko.com/infodetail-2287562.html
https://www.2cto.com/net/201707/657859.html