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