【网络运维】OpenStack镜像管理:Glance篇

OpenStack镜像管理:Glance篇

镜像概念与类型

在云计算环境中,镜像是一个包含了操作系统及必要配置的弹性云服务器模板,用于快速创建虚拟机实例。

镜像分类

  • 公共镜像:云平台提供的标准操作系统镜像,所有用户可见,具有高度稳定性且为正版授权。包含预装的公共应用,用户可根据需求自助配置环境。

  • 私有镜像:基于云服务器或外部镜像文件创建的个人镜像,仅创建者可见。包含操作系统、预装应用及用户私有应用,可显著节省重复配置时间。

  • 共享镜像:接受其他用户共享的私有镜像,作为自己的镜像使用。

  • 市场镜像:第三方提供的优质镜像,预装操作系统、应用环境和各类软件,支持一键部署,满足建站、开发、可视化管理等需求。


Glance架构演进

Glance是OpenStack的镜像服务,负责虚拟机镜像的发现、注册和交付。

架构演变

  • Newton及之前版本:支持REST API V1和V2
  • V2 API版本:Glance-Registry功能整合进Glance-API,元数据请求直接操作数据库
  • V1 API版本:Glance-Registry作为独立的WSGI Server处理元数据请求,不对用户暴露
  • Stein版本开始:Glance-Registry被废弃,完全由Glance-API替代

存储后端支持

通过Store模块接口支持多种存储后端:

  • Amazon S3
  • Cinder/Swift
  • Ceph
  • Sheepdog

核心概念区分

镜像、实例与规格

  • 镜像(Image):虚拟机模板,包含操作系统和基础配置
  • 实例(Instance):基于镜像启动的虚拟机
  • 规格(Flavor):定义实例的计算资源(CPU、内存、磁盘等)

关系说明

  • 同一镜像可启动多个实例
  • 实例是镜像的独立副本,修改不影响原镜像
  • 启动实例时必须指定规格

Glance磁盘格式

磁盘格式 描述
vhd Xen、Microsoft、VirtualBox常用格式
vhdx vhd增强版,支持更大容量
vmdk VMware常用格式
vdi VirtualBox和QEMU支持格式
iso 光盘存档格式
ploog Virtuozzo支持的容器磁盘格式
qcow2 QEMU格式,支持动态扩展和写时复制
aki Amazon内核镜像
ari Amazon Ramdisk镜像
ami Amazon机器镜像
raw 非结构化磁盘镜像格式

状态机机制

镜像状态

状态 描述
queued 保留镜像标识符,数据未上传
saving 原始数据正在上传
uploading 调用import data-put请求
importing 导入中,尚未就绪
active 镜像可用
deactivated 禁止非管理员访问
killed 上传出错,镜像不可用
deleted 保留信息但不可用,将自动清理
pending_delete 类似deleted,数据尚未删除

任务状态

状态 描述
pending 任务挂起
processing 任务处理中
success 任务成功
failure 任务失败

镜像上传实践

上传示例

上传两个镜像文件到controller节点的/root目录:

bash 复制代码
# 查看文件信息
[root@controller ~]# qemu-img info cirros-0.5.2-x86_64-disk.img
image: cirros-0.5.2-x86_64-disk.img
file format: qcow2
virtual size: 112 MiB (117440512 bytes)
disk size: 15.5 MiB

[root@controller ~]# qemu-img info TinyCore-12.0.iso
image: TinyCore-12.0.iso
file format: raw
virtual size: 20 MiB (20971520 bytes)
disk size: 20 MiB




上传成功:

数据库验证

mysql 复制代码
MariaDB [glance]> select id,value from image_locations;
+----+--------------------------------------------------------------------+
| id | value                                                              |
+----+--------------------------------------------------------------------+
|  1 | file:///var/lib/glance/images/e846b42b-5024-479b-9f79-1ae181bfa14e |
|  2 | file:///var/lib/glance/images/bb8a4940-3bde-428c-83b4-9c98eb430721 |
+----+--------------------------------------------------------------------+
2 rows in set (0.000 sec)

镜像存储位置

bash 复制代码
[root@controller ~]# find / -name e846b42b-5024-479b-9f79-1ae181bfa14e
/var/lib/glance/images/e846b42b-5024-479b-9f79-1ae181bfa14e

使用Swift作为后端存储

配置修改

bash 复制代码
# 查看glance配置文件
[root@controller ~]# grep -Ev '^#' /etc/glance/glance-api.conf | grep -Ev '^$'

# 修改关键配置
[root@controller ~]# vim /etc/glance/glance-api.conf
3111 default_store=swift
3982 swift_store_region = RegionOne
4090 swift_store_container = gqdglance
4391 swift_store_auth_address = http://192.168.108.10:5000/v3
4399 swift_store_user = swift
4408 swift_store_key = f8715a7c2bf640b9

# 重启服务
[root@controller ~(keystone_admin)]# systemctl restart openstack-glance*

存储验证

上传镜像后,数据库中存储位置更新:

mysql 复制代码
MariaDB [glance]> select id,value from image_locations;
+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
| id | value                                                                                                                                                         |
+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
|  3 | swift+http://192.168.108.10:8080/v1/AUTH_03e49a46342d48ab9607b4919925e42c/gqdglance_6a5a50d9-be54-4151-bd2f-4b1c08efdb18/6a5a50d9-be54-4151-bd2f-4b1c08efdb18 |
+----+---------------------------------------------------------------------------------------------------------------------------------------------------------------+

命令行上传大文件镜像

Web界面上传大文件时缺乏进度提示,建议使用命令行方式:

bash 复制代码
[root@controller ~(keystone_admin)]# glance image-create \
  --name image_centos \
  --file CentOS-7-x86_64-Minimal-1810.iso \
  --disk-format raw \
  --container bare \
  --progress

命令行方式提供实时上传进度显示,避免因网络问题导致上传失败而无法感知。

现象如下,有进度条:


镜像获取资源

OpenStack社区提供官方镜像下载:


总结

Glance作为OpenStack的镜像管理服务,承担着虚拟机镜像的存储、管理和分发任务。通过理解其架构演进、状态机机制和多种存储后端支持,可以更有效地进行镜像管理操作。

实际部署中需注意:

  1. 根据版本选择合适的API接口
  2. 大文件镜像上传建议使用命令行方式
  3. 生产环境可考虑使用Swift等分布式存储作为后端
  4. 定期清理无效镜像状态,释放存储空间

正确配置和使用Glance服务,能够显著提升OpenStack环境中虚拟机的部署效率和管理便利性。

相关推荐
Muscleheng2 小时前
Linux安装LibreOffice
linux·运维·服务器
bugtraq20212 小时前
PentestGPT的部署和使用本地大模型的调试记录
linux·服务器·python
码农爱学习2 小时前
嵌入式Linux利用core-dump文件和gdb工具分析程序崩溃问题
linux·数据库·postgresql
大聪明-PLUS2 小时前
数字与字节:Linux 中的内存是如何工作的?
linux·嵌入式·arm·smarc
旖旎夜光3 小时前
Linux(6)(下)
linux·学习
广东大榕树信息科技有限公司3 小时前
如何利用机房动环监控系统提升运维效率与安全性?
运维·网络·物联网·国产动环监控系统·动环监控系统
believe、悠闲3 小时前
ubuntu各个版本官方镜像链接
linux·ubuntu
幺零九零零3 小时前
Docker底层-Namespaces
运维·docker·容器
做一个码农都是奢望3 小时前
高算linux平台如何安装gprmax
linux·运维·服务器