【网络运维】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环境中虚拟机的部署效率和管理便利性。

相关推荐
ShineWinsu几秒前
对于Linux:传输层协议UDP原理的解析
linux·c++·面试·udp·协议·传输层·计算机系统
霁月的小屋1 小时前
Docker 工程化实践(六):Docker Compose 管理多容器应用
运维·docker·容器
2601_965798471 小时前
How to Build a Custom Artisan Store on WordPress: Crafti Theme Review
linux·服务器·数据库
mounter6251 小时前
深度解析 Linux 内核中的 iomap 子系统:历史、演进、核心机制与未来
linux·文件系统·linux kernel·kernel·iomap
luyun0202021 小时前
论坛里的小工具,吾爱出品
运维·服务器·windows
Miao121312 小时前
工程交付指标入门:如何重新掌控软件交付
大数据·运维·devops
涛声依旧393162 小时前
运维项目:InnoAI SQL 助手
运维·数据库·sql
养海绵宝宝的小蜗3 小时前
LVS(Linux Virtual Server)项目知识点总结
linux·运维·lvs
阿黎02143 小时前
Linux驱动
linux
tjjingpan4 小时前
HCIP-Datacom Core Technology V1.0_20 IPv6概述
linux·服务器·网络