1.7. 使用镜像服务 API 启用稀疏镜像上传
使用镜像服务(glance) API,您可以使用稀疏镜像上传来减少网络流量并节省存储空间。此功能在分布式 Compute 节点 (DCN) 环境中特别有用。使用稀疏镜像文件,镜像服务不会写入空字节序列。镜像服务使用给定偏移写入数据。存储后端将这些偏移解释为不实际消耗存储空间的空字节。
使用镜像服务命令行客户端进行镜像管理。
限制
- 仅 Ceph RADOS 块设备(RBD)支持稀疏镜像上传。
- 文件系统不支持稀疏镜像上传。
- 在客户端与镜像服务 API 之间的传输过程中,不会维护稀疏性。镜像在镜像服务 API 一级进行稀疏。
先决条件
- 您的 Red Hat OpenStack Platform (RHOSP)部署将 RBD 用于镜像服务后端。
流程
-
以
stack
用户身份登录 undercloud 节点。 查找
stackrc
凭证文件:$ source stackrc
使用以下内容创建环境文件:
parameter_defaults: GlanceSparseUploadEnabled: true
使用其他环境文件将新的环境文件添加到堆栈中,并部署 overcloud:
$ openstack overcloud deploy \ --templates \ … -e <existing_overcloud_environment_files> \ -e <new_environment_file>.yaml \ ...
有关上传镜像的更多信息,请参阅 将镜像上传到镜像服务。
验证
您可以导入镜像并检查其大小以验证稀疏镜像上传。
以下流程使用示例命令。适当地将值替换为您环境中的这些值。
在本地下载镜像文件:
$ wget <file_location>/<file_name>
-
将
<file_location
> 替换为文件的位置。 将
<file_name
> 替换为文件的名称。例如:
$ wget https://cloud.centos.org/centos/6/images/CentOS-6-x86_64-GenericCloud-1508.qcow2
-
将
检查磁盘大小以及要上传的镜像的虚拟大小:
$ qemu-img info <file_name>
例如:
$ qemu-img info CentOS-6-x86_64-GenericCloud-1508.qcow2 image: CentOS-6-x86_64-GenericCloud-1508.qcow2 file format: qcow2 virtual size: 8 GiB (8589934592 bytes) disk size: 1.09 GiB cluster_size: 65536 Format specific information: compat: 0.10 refcount bits: 1
导入镜像:
$ glance image-create-via-import --disk-format qcow2 --container-format bare --name centos_1 --file <file_name>
- 记录镜像 ID。后续步骤中需要用到它。
验证镜像是否已导入并处于 active 状态:
$ glance image show <image_id>
在 Ceph Storage 节点上,验证镜像的大小是否小于第 1 步中的虚拟大小:
$ sudo rbd -p images diff <image_id> | awk '{ SUM += $2 } END { print SUM/1024/1024/1024 " GB" }' 1.03906 GB
可选:您可以确认在 Controller 节点上的 Image 服务配置文件中配置了
rbd_thin_provisioning
:使用 SSH 访问 Controller 节点:
$ ssh -A -t tripleo-admin@<controller_node_IP_address>
确认该 Controller 节点上的
rbd_thin_provisioning
等于True
:$ sudo podman exec -it glance_api sh -c 'grep ^rbd_thin_provisioning /etc/glance/glance-api.conf'