# 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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。