# OpenStack镜像服务Glance怎么用 ## 一、Glance服务概述 ### 1.1 Glance的定义与作用 OpenStack Glance是OpenStack生态中的核心镜像服务组件,主要负责虚拟机镜像的**全生命周期管理**。作为IaaS平台的核心服务之一,Glance提供以下关键功能: - 镜像的注册、存储和分发 - 支持多种镜像格式(RAW/QCOW2/VDI等) - 多后端存储支持(文件系统/Ceph/Swift等) - 镜像元数据管理 - 快照创建与管理 ### 1.2 核心架构组成 Glance服务由三个主要子服务构成: | 组件 | 功能描述 | |---------------|--------------------------------------------------------------------------| | glance-api | 接收REST API请求,处理镜像发现、检索和存储操作 | | glance-registry | 存储、处理和检索镜像元数据(现代版本已逐步淘汰该组件) | | Database | 存储镜像元数据(通常使用MySQL/MariaDB) |  ## 二、安装与配置指南 ### 2.1 基础环境准备 ```bash # 安装必要软件包 sudo apt-get install glance-api glance-common # 创建数据库(以MySQL为例) mysql -u root -p CREATE DATABASE glance; GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'GLANCE_DBPASS'; GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'GLANCE_DBPASS';
主要配置文件路径: - /etc/glance/glance-api.conf
- /etc/glance/glance-registry.conf
关键配置项示例:
[database] connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance [keystone_authtoken] auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = Default user_domain_name = Default project_name = service username = glance password = GLANCE_PASS [paste_deploy] flavor = keystone
# 同步数据库 su -s /bin/sh -c "glance-manage db_sync" glance # 启动服务 systemctl enable glance-api systemctl start glance-api
# 下载测试镜像 wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img # 上传镜像(最小化参数) openstack image create "cirros" \ --file cirros-0.4.0-x86_64-disk.img \ --disk-format qcow2 \ --container-format bare \ --public # 查看镜像列表 openstack image list +--------------------------------------+--------+--------+ | ID | Name | Status | +--------------------------------------+--------+--------+ | 38047887-61a7-41ea-9b49-27987d5e8bb9 | cirros | active | +--------------------------------------+--------+--------+
glance image-download <image_id> --file saved_image.qcow2
# 创建项目间的共享 openstack image add project <image_id> <project_id>
openstack image set --property hw_qemu_guest_agent=yes <image_id>
常见格式对比:
格式 | 特点 | 适用场景 |
---|---|---|
RAW | 无压缩,性能最好 | 性能敏感型环境 |
QCOW2 | 支持压缩、快照、动态扩展 | 通用场景 |
VHD | 兼容Hyper-V | Windows环境 |
VMDK | VMware兼容格式 | vSphere环境 |
转换示例:
qemu-img convert -f qcow2 -O raw input.qcow2 output.raw
配置示例:
[glance_store] stores = file,http default_store = file filesystem_store_datadir = /var/lib/glance/images/
[glance_store] stores = rbd default_store = rbd rbd_store_pool = images rbd_store_user = glance rbd_store_ceph_conf = /etc/ceph/ceph.conf rbd_store_chunk_size = 8
[glance_store] stores = swift default_store = swift swift_store_container = glance_images swift_store_auth_address = http://controller:5000/v3 swift_store_user = service:glance swift_store_key = GLANCE_PASS
[image_cache] enabled = true max_size = 10737418240 # 10GB缓存
[DEFAULT] workers = 4 # 根据CPU核心数调整
# 预热常用镜像 glance-cache-prefetcher --image-ids id1,id2,id3
错误码 | 含义 | 解决方案 |
---|---|---|
401 | 认证失败 | 检查Keystone token有效性 |
404 | 镜像不存在 | 验证镜像ID是否正确 |
413 | 镜像过大 | 检查存储后端剩余空间 |
500 | 服务内部错误 | 查看/var/log/glance/api.log |
关键日志路径: - /var/log/glance/api.log
- /var/log/glance/registry.log
使用技巧:
# 实时查看错误日志 tail -f /var/log/glance/api.log | grep -i error # 统计API请求 grep "GET /v2/images" /var/log/glance/api.log | wc -l
# 设置镜像可见性 openstack image set --visibility private <image_id> # 基于角色的访问控制 openstack role add --project <project> --user <user> member
# 生成签名 glance image-update --property \ img_signature='<signature>' <image_id> # 验证签名 glance image-show --signature-verify <image_id>
# 从镜像启动实例 openstack server create --image cirros --flavor m1.tiny test-instance
# 从镜像创建卷 openstack volume create --image cirros --size 10 my_volume
注:本文基于OpenStack Yoga版本编写,部分命令在不同版本中可能存在差异。实际操作前建议查阅对应版本的官方文档。 “`
这篇文章包含了Glance服务的完整使用指南,从基础概念到高级操作,共计约2550字。采用Markdown格式编写,包含代码块、表格、列表等标准元素,可以直接用于文档发布或博客平台。需要补充图片链接时,可替换示例URL为实际图片地址。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。