资讯详情

资讯详情

OpenStack 镜像管理:共享镜像一直 pending 看不见?Glance 全流程实操

镜像上传成功、状态显示正常共享给别的项目后对方openstack image list里却死活找不到——十有八九是卡在成员状态pending。这篇按一条完整链路走完镜像管理下载验证 → 注册 → 改可见性 → 共享pending → accept→ 转格式 → 导出删除全部命令对着一套192.168.108.10的 Victoria 环境验证过可直接照抄。文中命令名均标注英文全称如qemu-img QEMU disk image manipulator完整清单见文末《附命令英文全称速查表》。本文概要项目内容文章主题Glance 镜像从下载注册到共享、转格式、导出的完整操作链路重点讲清 shared 镜像 pending 与 accept 两态所属类别云计算 → 私有云平台 → OpenStack 镜像管理知识关键字Glance·qemu-img info·openstack image create·--disk-format·--protected·--shared·image add project·--accept·qemu-img convert·image save主线的因果只有一条镜像先属于创建它的项目别的项目要用要么 public 全员开放要么 shared 走两步共享。所以先看镜像怎么注册进来再讲可见性怎么改最后把最容易卡住的共享流程拆开讲。一、镜像从哪来下载 cirros 并验证格式cirros 是一个 12 MB 左右的迷你 Linux 测试镜像格式 qcow2。下载即可注册使用练手最省事。镜像文件从本机拖到 controller 节点的/root目录后先qemu-img info验一下真实格式再动手。qemu-img info 用法速查表参数含义英文原意qemu-imgQEMU 磁盘镜像工具QEMU disk image manipulatorinfo子命令查看镜像格式与容量信息information镜像文件要查看的本地镜像路径—[rootcontroller ~]# qemu-img info cirros-0.5.2-x86_64-disk.imgimage: cirros-0.5.2-x86_64-disk.imgfileformat: qcow2# 磁盘格式 qcow2注册时要如实填virtual size:112MiB(117440512bytes)disk size:15.5MiB...virtual size 是启动后系统看到的盘大小disk size 是文件实际占地。qcow2 支持动态扩展与写时复制两者不等是正常的。iso 文件查出来是 raw注册时格式就填 iso。二、Dashboard 创建并注册镜像admin 登录后走「项目 → 计算 → 镜像 → 创建镜像」七步步操作关键点1镜像名称Img_web自定义2镜像文件点「预览」选本地 img选定后格式一般自动带出3镜像格式 QCOW2必须与qemu-img info查到的一致4最小磁盘 1 GB、最低内存 128 MB低于它的规格用不了这个镜像5可见性选「私有」只有本项目可见private6受保护性选「是」protected挡删除7提交后等状态变「运行中」排队 → 保存 → 活动⚠️注意「受保护 是」的镜像删不掉想删除必须先编辑镜像把受保护改回「否」。修改镜像在同一个列表镜像行「编辑镜像」→ 可见性改「公有」、受保护改「否」→ 更新镜像。点镜像名称进详情页可核对 ID、格式与大小。三、CLI 创建镜像一条命令七个参数openstack image create 用法速查表参数含义英文原意openstack image create创建并注册镜像create--disk-format磁盘格式ami/ari/aki/vhd/vmdk/raw/qcow2/vhdx/vdi/iso/ploopdisk format--container-format容器格式裸镜像填 barecontainer format--min-disk启动镜像所需最小磁盘GBminimum disk--min-ram启动镜像所需最小内存MBminimum RAM--private/--public/--community/--shared可见性四选一默认 private--shared只是把共享口子打开给别人仍要走第四章的两步private / public / community / shared--protected/--unprotected是否禁止删除默认可删protected--file本地镜像文件路径file镜像名镜像名称如Img_cli—[rootcontroller ~(keystone_admin)]# openstack image create --disk-format qcow2 \--container-format bare --min-disk1--min-ram128--private\--file./cirros-0.5.2-x86_64-disk.img Img_cli[rootcontroller ~(keystone_admin)]# openstack image list # 状态 active 即注册成功大镜像走 Web 界面容易失败且没有进度条命令行更稳旧版 glance 客户端的glance image-create --file 文件 --progress能带进度条看传输进度。四、可见性与共享pending 到 accept 才算真共享可见性有四种取值一次只能取一个共享动作与成员状态速查表参数含义英文原意openstack image set修改镜像属性set--public/--private全员可见 / 仅本项目可见public / private--community全员可用但不出现在他人默认列表community--shared允许共享给指定项目sharedopenstack image add project把镜像加入目标项目产生 pending 成员关系add projectopenstack image member list查看共享成员及状态member list--accept/--reject/--pending接收方对成员关系的表态accept / reject / pending共享实验接着上一篇的环境做user_cli_01在Project_cli里先降权移除 admin换成 Role_cli现象才干净。# 前置user_cli_01 失去 admin 角色[rootcontroller ~(keystone_admin)]# openstack role remove --project Project_cli --user user_cli_01 admin[rootcontroller ~(keystone_admin)]# openstack role remove --project Project_cli --group Group_cli admin[rootcontroller ~(keystone_admin)]# openstack role add --project Project_cli --user user_cli_01 Role_cli# 第 1 步 owner镜像设为 shared[rootcontroller ~(keystone_admin)]# openstack image set --shared Img_cli# 第 2 步 owner加进目标项目成员状态变 pending[rootcontroller ~(keystone_admin)]# openstack image add project Img_cli Project_cli# 第 3 步 接收方切到 user_cli_01 的环境变量再接受[rootcontroller ~(keystone_user_cli_01)]# openstack image set --accept Img_cli[rootcontroller ~(keystone_user_cli_01)]# openstack image list # Img_cli 出现了⚠️注意pending 状态下接收方完全看不见镜像--accept只能由接收方自己执行owner 代做会报 403 授权错误。把验证链完整走一遍四行结论对应四条命令private 时接收方看不到 →--public后看得到 → 改回--shared又看不到 →add project后仍看不到pending→--accept后看得到。共享镜像的全部逻辑就在这条链上。五、镜像格式转换qemu-img convertqcow2 支持压缩其他格式的镜像VMDK 最常见建议转成 qcow2 再上传。以 Ubuntu bionic 云镜像为例格式转换参数速查表参数含义英文原意convert子命令转换镜像格式convert-f指定输入格式from-O指定输出格式大写output format-c压缩目标镜像仅 qcow2 支持compress-p显示转换进度条progress[rootcontroller ~]# qemu-img info bionic-server-cloudimg-amd64.vmdk # 先确认源格式[rootcontroller ~]# qemu-img convert -f vmdk -O qcow2 -c -p \bionic-server-cloudimg-amd64.vmdk bionic-server-cloudimg-amd64.qcow2[rootcontroller ~]# qemu-img info bionic-server-cloudimg-amd64.qcow2 # 转完再验一遍[rootcontroller ~]# openstack image create --disk-format qcow2 --container-format bare \--min-disk1--min-ram128--public--file./bionic-server-cloudimg-amd64.qcow2 ubuntu_cli-f/-O两个格式参数缺了会靠文件扩展名猜显式写上最稳。六、导出与删除[rootcontroller ~(keystone_admin)]# openstack image save --file ubuntu.qcow2 ubuntu_cli # 导出到本地[rootcontroller ~(keystone_admin)]# ls # ubuntu.qcow2 已落在当前目录[rootcontroller ~(keystone_admin)]# openstack image delete ubuntu_cli # 删除save 是把 Glance 里的镜像数据拉回本地一份原镜像不动。delete 遇到 protected 镜像会报错先openstack image set --unprotected解除保护再删。 参考资料官方文档 · 中英双语英文原版openstack image 命令参考python-openstackclientimage set --accept与成员状态的权威定义cirros 镜像下载页Ubuntu 云镜像下载中文版OpenStack 中文文档官方文档中文入口附命令英文全称速查表命令 / 缩写英文全称 / 原意作用qemu-imgQEMU disk image manipulatorQEMU 磁盘镜像工具infoinformation查看镜像格式与容量convertconvert转换镜像格式-ccompress压缩目标镜像仅 qcow2-pprogress显示进度条GlanceGlance Image ServiceOpenStack 镜像服务openstack image create / set / save / deletecreate / set / save / delete镜像注册、改属性、导出、删除--disk-formatdisk format磁盘格式--container-formatcontainer format容器格式裸镜像 bare--min-disk/--min-ramminimum disk / RAM启动镜像的资源下限--protected/--unprotectedprotected禁止 / 允许删除--sharedshared共享可见性image add projectadd project建立共享成员关系产生 pending--accept/--reject/--pendingaccept / reject / pending接收方对成员关系的表态image member listmember查看共享成员状态qcow2QEMU copy-on-write v2支持动态扩展、写时复制与压缩的镜像格式vmdkVirtual Machine DiskVMware 磁盘格式总结镜像管理的因果线是「格式先验证 → 注册填对格式与下限 → 可见性决定谁能用 → 共享必须接收方 accept → 转格式统一成 qcow2」。记住 pending 不等于共享成功accept 之后才算落地剩下的大文件、转格式问题都在命令行解决。同系列 · OpenStack 实验手册其余篇目见博客主页blog.csdn.net/nbsxl上一篇《OpenStack 认证管理角色、用户、组、项目、配额五样东西到底谁绑谁》下一篇《OpenStack 计算管理实例锁定后被普通用户解锁了避坑实操》 你共享镜像时卡在哪一步pending 看不见、accept 报 403评论区贴出你的报错。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →