尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
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评论区贴出你的报错。
RELATED

相关推荐

Neon safekeeper任务

Neon safekeeper任务

safekeeper 的运行时与任务架构safekeeper 使用 5 个独立的 Tokio Runtime&#xff08;通过 Lazy<Runtime> 静态变量定义&#xff09;&#xff0c;每个 runtime 运行在独立的 OS 线程池上&#xff0c;从而把 WAL 服务、HTTP 管理接口、Broker 通信、备份导出和后台维护任…

📅 2026/10/31 22:25:02
网页一改版爬虫就全崩?LLM自愈爬虫实战:选择器自动修复,运维量直降80%

网页一改版爬虫就全崩?LLM自愈爬虫实战:选择器自动修复,运维量直降80%

做工业数据采集这几年&#xff0c;最头疼的事永远不是反爬&#xff0c;是前端改版。 很多站点反爬没把你搞死&#xff0c;前端开发随手改个类名、调一下DOM层级、换个标签顺序&#xff0c;你写的CSS选择器、XPath就全失效了&#xff0c;数据抓空&#xff0c;告警炸群。小改还好…

📅 2026/10/31 22:25:02
“软件已死”?独立开发大佬退订几乎所有工作软件:要啥让AI造

“软件已死”?独立开发大佬退订几乎所有工作软件:要啥让AI造

卖软件的人先不买软件了 一个做软件开发生意的人&#xff0c;开始大规模退订软件&#xff0c;还喊出了一句狠话&#xff1a; 软件已死。 10月11日&#xff0c;知名独立开发者Pieter Levels&#xff08;levelsio&#xff09;发文称&#xff0c;自己已经退掉了几乎所有工作用的…

📅 2026/10/31 22:25:02
MORE NEWS

更多资讯

📰

AI早报:模型记忆、多模型协作与端侧算力如何重构AI工作流

早上翻完一圈信息流&#xff0c;今天这组新闻有点意思。Claude 记忆打通 Cowork&#xff0c;GPT-5.6 登陆 Kiro&#xff0c;Apple 发布 2nm 芯片——三条消息看着不搭界&#xff0c;放在一起其实是一盘棋&#xff1a;模型层的持久记忆、应用层的多模型协作、硬件层的端侧算力&a…

📰

VS Code+MiKTeX搭建高效本地LaTeX写作环境

1. 为什么需要本地LaTeX写作环境Overleaf作为云端LaTeX编辑器确实方便&#xff0c;但免费版存在三个致命缺陷&#xff1a;编译速度受服务器负载影响明显&#xff08;高峰期等待时间可能超过30秒&#xff09;&#xff1b;没有版本控制集成功能&#xff08;无法直接使用Git进行版…

📰

激光超声无损检测:热弹机理、光学接收与参数标定

简介&#xff1a;《激光超声技术及其在无损检测中的应用概况》是一份面向无损检测、材料测试与光学超声研究方向的学习资料&#xff0c;围绕激光激发超声的物理机制与工程应用展开&#xff0c;适合高校师生、检测工程师及课题入门者梳理技术脉络。压缩包内为1个PDF文件&#xf…

📰

Agent开发中while True的危险与Durable Execution替代方案

1. 为什么“while True”是Agent开发里最危险的甜蜜陷阱我第一次在生产环境里看到一个跑着while True:的Agent服务时&#xff0c;心跳漏了一拍。那不是玩具项目&#xff0c;而是支撑着某家电商客服自动分流的AI调度核心——它用Python写的&#xff0c;每秒处理300用户请求&…

📰

AI Agent能力扩展的三层解耦:Skill语义、MCP契约与插件载体

1. 一个被严重误解的“三选一”陷阱&#xff1a;为什么AI Agent能力扩展根本不是在Skill、MCP和插件之间做选择我第一次在技术分享会上听到“给Agent加能力&#xff0c;你选Skill、MCP还是插件&#xff1f;”这个问题时&#xff0c;下意识就想举手说“都选”。台下三十多位来自…

📰

程序员转型自由职业:接单实操与避坑指南

程序员转型自由职业这件事&#xff0c;我在过去几年里被问过不下百次。每次聊到最后&#xff0c;对方最关心的往往不是技术能不能跟上&#xff0c;而是“单子从哪来”“报价怎么定”“客户拖款怎么办”这些特别具体的问题。这篇内容就是把这些年踩过的坑、验证过的方法&#xf…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬