前言
随着操作系统的崛起和 OpenStack 云平台的广泛应用,基于 openEuler 构建稳定高效的云基础设施已成为企业数字化转型的重要选择。Glance 作为 OpenStack 生态中核心的镜像管理组件,承担着虚拟机镜像全生命周期管控的关键职责,其部署质量直接影响云平台的镜像供给效率与稳定性。本文结合个人在 openEuler 集群环境下的多次实操经验,从环境适配、软件安装、配置优化、服务注册到实战验证,全方位拆解 Glance 镜像服务的部署流程,不仅覆盖基础配置与核心操作,还融入实操中的避坑要点与优化技巧,为从事云平台运维、OpenStack 部署的技术人员提供一份可直接落地的实战指南,助力快速搭建稳定可靠的镜像管理体系。
openEuler 介绍
openEuler 开源企业级 Linux 操作系统,聚焦服务器、云计算、边缘计算等数字基础设施场景,支持 x86_64、ARM64、RISC-V 等多芯片架构,具备高性能内核优化、原生安全增强、全生态兼容等核心特性,提供长期支持版本与稳定服务周期,可无缝适配数据库、容器、虚拟化等企业级应用,既为国内企业提供安全可控、高效稳定的系统底座,也通过开放协作的开源生态,推动操作系统在数字化转型场景中的落地与创新。
Glance镜像服务
Glance 是 OpenStack 里管虚拟机镜像的核心工具,专门负责镜像从创建、上传、存储到查询删除的全流程,就像云环境里的专属镜像仓库,给计算服务提供稳定的镜像资源,是搭弹性云平台必不可少的部分。我在 openEuler 系统上部署过好几次,感觉二者适配特别顺畅,支持多种芯片架构,内核优化到位还自带安全增强,给 Glance 当运行底座特别稳,资源利用效率也高。而且 openEuler 和 Linux 生态、OpenStack 组件都能无缝兼容,不用额外折腾就能对接 Glance 需要的存储方式、认证服务这些,部署配置省了不少事。实际用下来,这种组合不仅能让 Glance 轻松应对各种格式的镜像文件,还能借着 openEuler 的安全机制和资源调度优势,让镜像管理更可靠、扩展性更强,不管是测试环境还是企业生产集群都能适配。
Glance镜像服务安装与配置全流程解析
安装Glance核心软件包并验证系统账户
安装核心软件包
执行命令安装Glance服务:
yum -y install openstack-glance

系统用户和组验证
在安装openstack-glance软件包过程中,系统会自动创建专用的glance用户和用户组,这些系统账户用于运行Glance服务并确保服务运行时的安全性。
查看glance用户信息:
cat /etc/passwd | grep glance

查看glance用户组信息:
cat /etc/group | grep glance

数据库创建与授权配置
连接数据库管理系统
进入MariaDB数据库客户端环境:
mysql -uroot -p903213

创建专用数据库
为Glance服务创建独立的数据库实例:
create database glance;

配置数据库访问权限
授予glance用户对glance数据库的完整管理权限,包括本地和远程访问权限:
授予本地访问权限:
grant all privileges on glance.* to 'glance'@'localhost' identified by '903213';

授予远程访问权限:
grant all privileges on glance.* to 'glance'@'%' identified by '903213';

权限配置说明:这两条SQL语句为Glance服务在MariaDB中创建了专用的数据库用户,并授予对glance数据库的全部操作权限。第一条语句限制仅允许从本地主机连接,第二条语句扩展允许从任何网络位置远程连接,这种双重配置确保了Glance服务在不同部署场景下都能安全地读写数据库,完成服务初始化所需的各项数据操作。
退出数据库客户端
完成数据库配置后退出MariaDB环境:

优化与重写Glance服务主配置文件
配置文件备份策略
在进行配置修改前,首先对原始配置文件进行备份,确保配置错误时可快速恢复:
mv /etc/glance/glance-api.conf /etc/glance/glance-api.conf.bak

编辑主配置文件
创建新的Glance API服务配置文件:
vim /etc/glance/glance-api.conf

配置文件内容如下:
[DEFAULT]
log_file = /var/log/glance/api.log
[policy]
policy_file = /etc/glance/policy.yaml
[database]
connection = mysql+pymysql://glance:903213@euler01/glance
[glance_store]
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
[keystone_authtoken]
auth_url = http://euler01:5000/v3
www_authenticate_uri = http://euler01:5000/v3
memcached_servers = euler01:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = glance
password = 903213
配置文件权限设置
为确保配置文件安全性,设置适当的文件和目录权限:
chown glance:glance /etc/glance/glance-api.conf

chmod 640 /etc/glance/glance-api.conf

验证权限设置结果:
ll /etc/glance/glance-api.conf

定制Glance访问控制策略(policy.yaml)
编辑策略配置文件
Glance服务的访问控制策略通过policy.yaml文件定义,该文件决定了不同角色用户对镜像资源的操作权限:
vim /etc/glance/policy.yaml

策略文件内容配置:
default: "role:admin"
add_image: ""
get_image: ""
get_images: ""
modify_image: ""
delete_image: ""
publicize_image: ""
undepublicize_image: ""
upload_image: ""
download_image: ""
策略文件权限设置
设置策略文件的安全权限,确保只有授权用户可以访问:
chown root:glance /etc/glance/policy.yaml

chmod 640 /etc/glance/policy.yaml

初始化Glance数据库结构并验证同步结果
执行数据库同步
以glance用户身份执行数据库架构同步命令,创建Glance服务所需的数据库表结构:
su glance -s /bin/sh -c "glance-manage db_sync"

命令功能说明:此命令以glance用户身份在指定的shell环境中执行数据库同步操作。glance-manage db_sync命令会读取Glance服务的数据模型定义,并在配置的MySQL数据库中创建相应的表结构、索引和约束,为Glance服务的正常运行准备完整的数据存储基础。
验证数据库初始化结果
连接至数据库验证表结构创建情况:
mysql -uroot -p903213

切换到glance数据库:
use glance;

查看数据库中的表:
show tables;

验证结果:数据库同步成功完成,系统中创建了15张数据表,这些表将分别存储镜像元数据、位置信息、成员关系、标签数据、属性定义等Glance服务运行所需的各类信息。
Keystone中Glance服务组件注册与初始化
加载环境变量并创建Glance服务用户
加载管理员环境变量
导入OpenStack管理员环境变量,获取管理权限:
source admin-openrc

创建Glance服务用户
在Keystone身份服务中创建专用的Glance服务用户:
openstack user create --domain default --password 903213 glance

命令功能详解:此命令在OpenStack Keystone身份服务的默认域中创建名为"glance"的系统用户,并设置登录密码为903213。该用户将专门用于Glance服务的身份认证,是OpenStack服务部署中的标准化配置步骤,确保每个服务都有独立的认证凭据。
查看当前系统用户列表:
openstack user list

分配管理员角色
为glance用户在service项目中分配admin角色,授予服务管理权限:
openstack role add --project service --user glance admin

权限分配说明:此命令为glance用户在service项目中添加admin管理员角色,赋予其对项目资源的完全操作权限。这种基于角色的访问控制是OpenStack安全架构的核心,确保服务账户仅能访问其职责范围内的资源,遵循最小权限原则。
验证角色分配结果
查看glance用户的角色分配情况:
openstack role assignment list --user glance --project service --names

注册Glance服务并配置三类访问端点
创建镜像服务实体
在OpenStack服务目录中注册Glance镜像服务:
openstack service create --name glance image

服务注册说明:此命令在OpenStack服务目录中创建类型为"image"的Glance服务实体,并设置服务名称为"glance"。服务注册使得Keystone能够识别和管理Glance服务,并为其他OpenStack组件提供服务发现功能。
查看当前服务注册列表:
openstack service list

配置服务访问端点
为Glance服务创建三种类型的访问端点,满足不同场景下的服务访问需求:
创建公共访问端点(Public Endpoint):
openstack endpoint create --region RegionOne glance public http://euler01:9292

创建内部访问端点(Internal Endpoint):
openstack endpoint create --region RegionOne glance internal http://euler01:9292

创建管理员访问端点(Admin Endpoint):
openstack endpoint create --region RegionOne glance admin http://euler01:9292

启动Glance服务并设置自启策略
配置服务开机自启
设置Glance API服务随系统启动自动运行:
systemctl enable openstack-glance-api

立即启动服务
启动Glance API服务进程:
systemctl start openstack-glance-api

验证Glance服务运行与网络状态
检查Glance服务9292端口监听状态
检查服务端口占用
验证Glance服务是否在指定端口正常监听:
netstat -tnlup | grep 9292

查看Glance API服务运行状态与日志信息
检查服务运行状态
查看Glance API服务的详细运行状态:
systemctl status openstack-glance-api

Glance镜像管理与CirrOS测试镜像实战
CirrOS测试镜像简介与应用场景
CirrOS简介:CirrOS是一个专门为云计算环境测试设计的极简Linux发行版,镜像体积小巧(通常仅十几MB),启动速度快,非常适合OpenStack、Kubernetes等云平台的快速功能验证和集成测试
Glance镜像管理命令与参数说明
镜像创建命令语法
openstack image create
[--name <image-name>]
[--file <filename>]
[--disk-format <raw|qcow2|vmdk|vhd|vhdx|iso|aki|ari|ami>]
[--container-format <bare|ovf|ova|aki|ari|ami>]
[--visibility <public|private|community|shared>]
[--property <key=value>]
[--progress]
<image-name>
磁盘格式参数说明
| 格式 | 说明 |
|---|---|
| raw | 原始磁盘镜像格式,无额外元数据,兼容性最强,但不支持稀疏文件 |
| qcow2 | QEMU/KVM虚拟化平台推荐格式,支持快照、压缩、加密等高级功能,最常用 |
| vhd | Microsoft Hyper-V和Citrix XenServer使用的虚拟硬盘格式 |
| vhdx | VHD格式的升级版本,支持大于2TB的镜像容量,用于新版Hyper-V |
| vmdk | VMware虚拟机磁盘格式,适用于vSphere/ESXi虚拟化环境 |
| ami | Amazon Web Services镜像格式,需要配合aki/ari内核镜像使用 |
| aki | Amazon Kernel Image,用于AMI启动的内核镜像 |
| ari | Amazon Ramdisk Image,用于AMI启动的初始RAM磁盘 |
容器格式参数说明
| 格式 | 说明 |
|---|---|
| bare | 无容器封装,镜像文件直接使用磁盘格式,最常用选项 |
| ovf | Open Virtualization Format,用于VMware、Xen等虚拟机的封装格式 |
| ova | OVF格式的打包版本,单文件包含多个虚拟机组件 |
| aki | Amazon Kernel Image,仅包含内核,用于启动AMI镜像 |
| ari | Amazon Ramdisk Image,仅包含初始RAM磁盘,配合aki使用 |
| ami | Amazon Machine Image,AWS风格的镜像封装格式 |
CirrOS镜像上传与管理实战演示
准备镜像源文件
下载CirrOS测试镜像文件:
wget http://download.cirros-cloud.net/0.6.2/cirros-0.6.2-x86_64-disk.img
验证镜像文件下载:
ll cirros-0.6.2-x86_64-disk.img

创建Glance镜像
使用下载的镜像文件在Glance中创建可用的云镜像:
openstack image create --file cirros-0.6.2-x86_64-disk.img --disk-format qcow2 --container-format bare --public cirros-0.6.2

查看镜像列表
获取当前Glance服务中的所有镜像清单:
openstack image list

查看镜像详细信息
查看特定镜像的完整属性信息:
openstack image show cirros-0.6.2

镜像删除操作
通过镜像ID删除指定的镜像资源:
openstack image delete f3b31c09-804e-4f68-a4c2-c09d69b996fd

验证镜像删除结果:
openstack image list

总结
本文围绕 openEuler 集群环境下 OpenStack Glance 镜像服务的部署与实战展开,从理论适配到实操落地完成了全流程拆解。首先明确 openEuler 作为企业级开源操作系统,凭借多架构支持、高性能内核优化及完善的生态兼容性,为 Glance 服务提供了稳定可靠的运行底座,二者的适配组合大幅降低了云平台的部署门槛。
实操层面,从 Glance 核心软件包安装、系统账户验证起步,逐步完成数据库创建授权、主配置文件优化、访问控制策略定制等关键配置,再通过 Keystone 完成服务注册、用户授权与端点配置,最终实现服务启动与状态验证。后续结合 CirrOS 测试镜像的上传、查询、删除等实战操作,完整验证了服务的可用性与功能性,全程配套命令执行截图与详细说明,确保每一步操作都可复现。
整个部署过程需重点关注配置文件语法准确性、权限安全设置及数据库同步有效性,这些细节直接决定服务运行稳定性。实测结果表明,该部署方案可快速搭建起满足企业基础需求的镜像管理体系,适配测试环境与生产集群等多样化场景。
如果您正在寻找面向未来的开源操作系统,不妨看看DistroWatch 榜单中快速上升的 openEuler:https://distrowatch.com/table-mobile.php?distribution=openeuler,一个由开放原子开源基金会孵化、支持“超节点”场景的Linux 发行版。
openEuler官网:https://www.openeuler.openatom.cn/zh/
1257

被折叠的 条评论
为什么被折叠?



