周振林 周振林
首页
  • 前端文章

    • HTML
    • CSS
    • Tailwind CSS (opens new window)
    • JavaScript
    • Vue3
    • 其他
  • 学习笔记

    • 《JavaScript教程》
    • 《ES6 教程》
    • 《TypeScript》
    • 《Vue》
    • 《Git》
    • 《小程序笔记》
    • 《JS设计模式总结笔记》
  • 规范
  • Spring
  • 安装教程
  • 其他教程
  • 归真医学
  • 常用药材
  • 学习笔记
  • 经方学习心得
  • 虚拟化
  • Docker
  • OpenStack
  • 心情杂货
关于
收藏
  • 分类
  • 标签
  • 归档

周振林

IT界的小学生
首页
  • 前端文章

    • HTML
    • CSS
    • Tailwind CSS (opens new window)
    • JavaScript
    • Vue3
    • 其他
  • 学习笔记

    • 《JavaScript教程》
    • 《ES6 教程》
    • 《TypeScript》
    • 《Vue》
    • 《Git》
    • 《小程序笔记》
    • 《JS设计模式总结笔记》
  • 规范
  • Spring
  • 安装教程
  • 其他教程
  • 归真医学
  • 常用药材
  • 学习笔记
  • 经方学习心得
  • 虚拟化
  • Docker
  • OpenStack
  • 心情杂货
关于
收藏
  • 分类
  • 标签
  • 归档
  • 虚拟化

  • Docker

  • OpenStack

    • VMware三种网络模式
    • 常用linux命令
    • OpenStack命令
    • OpenStack简介
    • OpenStack安装部署
    • Keystone服务详解
    • Placement服务详解
    • Glance服务详解
      • Glance服务详解
        • Glance体系结构
        • Glance存储配置
        • 数据库配置
        • 本地存储
        • Ceph存储
        • Glance镜像管理
        • 镜像的基本属性
        • 镜像管理操作
    • CentOS镜像的制作
    • Cinder服务详解
    • LVM详解
    • Nova服务详解
  • 心情杂货

  • 更多
  • OpenStack
周振林
2025-03-27
目录

Glance服务详解

# Glance服务详解

Glance是为OpenStack提供虚拟机镜像管理的组件,在搭建起来的OpenStack集群中,我们在创建虚 拟机的时候需要指定使用的镜像,例如CentOS还是Ubuntu。然后在虚拟机创建的过程中,Nova就会 向Glance服务申请镜像。Glance服务自己负责管理镜像的存储,会告诉虚拟机在哪里可以获取镜像, 然后Nova服务就到指定地址去读取镜像并启动虚拟机。

# Glance体系结构

Glance只负责镜像管理工作,镜像存储工作由后端的存储组件负责,Glance只负责对接后端的存储。 因此Glance可以认为是OpenStack几大核心组件中最简单的组件。Glance的体系结构如下所示:

doc565c62d11b054138bf799a1d9a063f4d.png

从图上可以看到整个架构比较简单,glance-api负责接收镜像相关的请求,然后调用glance-registry服务进行镜像相关的CRUD操作,glance-api还可以直接调用后端存储进行镜像的读写操作。但这里的图片中大家可以看到,glance-api到glance-registry,然后到db这里用的是虚线,这里的原因是从S版本开始,glance-registry组件被废弃了,它的功能直接集成到了glance-api组件里。因此在S之前的版本中,我们还可以看到glance-registry这个组件,之后的版本中就没有了,例如我们在前面使用rpm包部署Train版本时,就没有启动这个组件,但是我们的虚拟机创建过程中还是可以正常获取到镜像信息。

Glance组件里的store模块实现了一个存储框架,可以对接多种后端存储,例如S3、Swift、Ceph、本地文件系统等,然后向glance-api提供一个统一镜像读写接口。

# Glance存储配置

根据上面的架构图我们知道,glance组件只有两块配置,分别是:

  • 数据库配置,一般是设置数据库的连接信息,包括地址、端口、账号密码等;
  • 存储配置,根据存储类型会有不同的配置信息,下面会详细介绍。
[DEFAULT]
# ...
bind_host = 192.168.31.185
# ..
[database]
# ...
connection = mysql+pymysql://glance:35ktJazstxE8ZzHv@192.168.31.185/glance

# ...
[keystone_authtoken]
# ...
www_authenticate_uri = http://192.168.31.185:5000
auth_version = v3
# auth_url = http://192.168.31.185:5000
memcached_servers = 192.168.31.185:11211
service_token_roles_required = True
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = glance
password = Tn3Ss1mmh7WPQOpk

[glance_store]
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

# 数据库配置

数据库配置只有一个,就是数据库的连接信息,是在/etc/glance/glance-api.conf里配置的,如下所 示:

[database]
connection = mysql+pymysql://glance:35ktJazstxE8ZzHv@192.168.31.185/glance
1
2

# 本地存储

除了数据库配置以外,重要的就是存储配置了,根据存储的类型,我们可以简单的分为本地存储和网络存储,先来看本地存储。本地存储就是使用部署了glance-api组件的机器硬盘空间。配置如下:

[glance_store]
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images
1
2
3
4

配置项说明:

  • stores,指定后端存储的类型;
    • file,本地硬盘存储;
    • http,网络存储
    • rbd,Ceph RBD块存储;
  • default_store,默认的存储类型;
  • filesystem_store_datadir 指定了存储镜像的路径,如果你的所有镜像都要存放在本地存储时,你需要给对应的目录提供足够的硬盘空间。

# Ceph存储

如果在glance_store指令的store配置项里提供了RBD类型,那么就可以在下面提供Ceph RBD块存储的连接信息,参考配置示例如下所示:

[rbd]
rbd_store_user = glance
rbd_store_pool = images
1
2
3

提供了Ceph 存储中的存储池名称images和连接这个存储的用户glance,因此我们在使用Glance对接Ceph存储时,需要提前在Ceph集群中创建好存储池和用户。 然后在安装Glance组件的机器上,需要把Ceph集群的配置文件ceph.conf 和 glance用户的认证keyring文件,ceph.client.glance.keyring 放到/etc/ceph目录下,因为glance组件默认会到这个路径下寻找配置文件和认证文件。通过这两个文件才能和Ceph存储正常对接。

# Glance镜像管理

# 镜像的基本属性

镜像是创建虚拟机的模板,一般是提前安装好虚拟机,在这个模板虚拟机上安装好我们企业内部需要的一些基本软件。例如CentOS镜像我们通常会预装vim、netstat等常用的命令工具,安装好以后,把这个虚拟机做成镜像,然后上传到Glance中进行管理。 Glance管理的镜像具备下面的基本属性:

  • id,镜像的id,唯一值;
  • checksum,镜像的校验码,唯一值;
  • name,镜像的名称
  • owner,镜像的所有者
  • size,镜像大小
  • created_at、updated_at,镜像的创建、更新时间等;
  • location,镜像的位置
  • disk_format,镜像的格式,常见的有:
    • raw
    • qcow2
    • vdi
    • vmdk
  • status,镜像的状态,在镜像的生命周期中有多种状态,分别是:
    • queued,创建镜像时,镜像ID已经生成,但是镜像文件还在排队上传中;
    • saving,镜像文件上传中;
    • active,镜像上传成功,目前可用。
    • killed,上传时发生错误,此时镜像不可用,在v2版本API中这个状态被废弃,上传失败后会变成queued状态便于重试;
    • deleted,此时Glance还保留了这个镜像的信息,但是镜像不可用。在未来某个时间会被glance-scrubber程序彻底删除。
    • pending_delete,和deleted类似,但是并不会彻底删除镜像,此时镜像还可以恢复(怎么恢复?)
  • visibility,可见性
    • private,私有的,
      • 只有创建镜像的用户才能在默认的镜像列表中可以看到这个镜像,
      • 查看镜像详情;
      • 使用这个镜像启动虚拟机;
    • public,公有,所有用户,
      • 在默认的镜像列表中可以看到这个镜像,
      • 查看镜像的详情;
      • 使用这个镜像启动虚拟机;
    • shared,共享的,
      • 创建镜像的用户
        • 在默认的镜像列表中可以看到这个镜像
        • 查看镜像的详情;
        • 使用这个镜像启动虚拟机;
      • 用户的id在镜像的成员列表中可以
        • 查看镜像的详情
        • 使用这个镜像启动虚拟机;
      • 用户的id在镜像的成员列表中,且member_status=="accept", *可以在他们默认的镜像列表中看到这个镜像;
    • community,社区
      • 所有用户
      • 查看镜像的详情
      • 使用这个镜像启动虚拟机;
      • 用户的id在镜像的成员列表中,且member_status=="accept",
        • 可以在他们默认的镜像列表中看到这个镜像;

# 镜像管理操作

镜像管理有两种方式,在web页面上进行管理和使用命令行进行管理,web页面上管理比较简单,下面主要介绍命令行管理镜像,常见的操作子命令有:

  • openstack image create 创建一个新镜像
  • openstack image list,列出当前用户可以查看的所有镜像
  • openstack image delete 删除一个镜像
  • openstack image show 显示一个镜像的详情信息;
  • openstack image save 把Glance中镜像导出并保存到本地;
  • openstack image set/unset 给镜像设置属性或取消属性,操作的时镜像上的键值对元数据,这些数据一般用于镜像筛选过滤等操作;
  • openstack image add project,把项目和镜像关联起来
  • openstack image member list,显示这个镜像关联的项目数量
  • openstack image remove project,从镜像上移除某个项目的关联

这些子命令的用法示例如下所示: 镜像创建

openstack image create
1

列出镜像

openstack image list
1

镜像详情

openstack image show <image-id>
1

镜像删除

openstack image delete <image-id>
1

镜像保存到本地

openstack image save --file <image-filename> <image-id>
1

镜像添加项目关联

openstack image add project <image-id> <project-id>
1

镜像项目成员查看

openstack image member list
1

镜像移除项目关联

openstack iamge remove <image-id> <project-id>
1
Last Updated: 2025/04/03, 17:32:35
Placement服务详解
CentOS镜像的制作

← Placement服务详解 CentOS镜像的制作→

最近更新
01
LVM详解
04-28
02
KVM虚拟机安装
04-18
03
Nova服务详解
04-17
更多文章>
Copyright © 2019-2025 鲁ICP备19032096号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式