卷建好只是开始——挂载、扩容、打快照、传成镜像、拿去发实例每一步都有前置条件删卷删不掉更是三条依赖链叠出来的经典现场。这篇按卷的一生走完 Dashboard 与 CLI 两套操作卷类型与 QoS → 创建挂载 → 快照/镜像/扩容 → 基于卷发实例 → 更新状态 → 删除依赖链最后把NFS 作为第二后端接进 cinder-volume。全部命令在192.168.108.10环境admin 项目、shared网络、镜像Img_web/Img_cli验证过可直接照抄。本文概要项目内容文章主题卷类型/QoS 管理 卷从创建到删除的全生命周期操作 NFS 第二后端接入所属类别云计算 → 私有云平台 → OpenStack 存储管理知识关键字volume type·QoS·server add volume·volume snapshot·--bootable·volume set --state·enabled_backends·nfs_shares主线的因果只有一条卷的每个状态available / in-use / error决定了它能做什么、不能做什么——挂载要在 available、扩容快照要在 available、删除要先把快照和挂载清干净。操作顺序错一步报错就找上门。一、卷类型与 QoS先定规格再建卷卷类型volume type是卷的「规格标签」QoSQuality of Service服务质量挂到卷类型上建卷时选了类型就同时吃到这组策略。1.1 Dashboard 路径以 admin 登录走「管理员 → 卷 → 卷类型」步操作关键点1点「创建卷类型」名称VolumeType_web勾选「公有」让所有项目可用2点「创建 QoS 规格」名称QoS_web「消费者」选「后端」back-end3卷类型行操作里选「管理 QoS 规格关联」把QoS_web关联到VolumeType_web4回到列表确认 QoS 规格已挂上之后按此类型建的卷都生效1.2 CLI 六条命令[rootcontroller ~(keystone_admin)]# source keystonerc_admin # 中文导入 admin 环境变量[rootcontroller ~(keystone_admin)]# openstack volume type create --public VolumeType_cli# 中文创建公有卷类型 VolumeType_cli[rootcontroller ~(keystone_admin)]# openstack volume type list # 查看卷类型列表[rootcontroller ~(keystone_admin)]# openstack volume qos create --consume back-end QoS_cli# 中文创建 QoS 规格 QoS_cli消费者为后端[rootcontroller ~(keystone_admin)]# openstack volume qos list # 查看 QoS 列表[rootcontroller ~(keystone_admin)]# openstack volume qos associate QoS_cli VolumeType_cli# 中文把 QoS_cli 关联到卷类型 VolumeType_cli[rootcontroller ~(keystone_admin)]# openstack volume qos show QoS_cli # 查看该 QoS 关联的卷类型二、创建卷与挂载/卸载2.1 创建卷一条命令带齐五个要素——来源、类型、大小、可用分区、是否启动卷[rootcontroller ~(keystone_admin)]# openstack volume create --image Img_cli --type VolumeType_cli \--size1--availability-zone nova--bootableVolume_cli_01# 中文从镜像 Img_cli 创建 1GB 启动卷类型 VolumeType_cliAZ 为 nova[rootcontroller ~(keystone_admin)]# openstack volume list # 中文查看卷列表状态 available 即可用Dashboard 对应「项目 → 卷 → 卷 → 创建卷」卷来源选「镜像」、类型选VolumeType_web、大小 1 GB、可用分区nova创建后状态「可用」。2.2 挂载与卸载# 前置先有一台实例[rootcontroller ~(keystone_admin)]# openstack server create --availability-zone nova --image Img_cli \--flavorFlavor_cli--networkshared --key-name KeyPair_cli Instance_cli_01[rootcontroller ~(keystone_admin)]# openstack server add volume Instance_cli_01 Volume_cli_01# 中文把卷 Volume_cli_01 挂载给实例 Instance_cli_01卷状态变 in-use[rootcontroller ~(keystone_admin)]# openstack server remove volume Instance_cli_01 Volume_cli_01# 中文卸载——把卷从实例上摘下来卷状态回到 available⚠️注意挂载后卷状态in-use此时扩容、删除都不行先卸载回available再操作。挂载在实例里看是/dev/vdb这类块设备分区格式化后才真正能用。三、卷的三个衍生操作传镜像、打快照、扩容3.1 上传卷到镜像[rootcontroller ~(keystone_admin)]# openstack image create --volume Volume_cli_01 --disk-format qcow2 Volume_Img_cli# 中文把卷 Volume_cli_01 转成 qcow2 格式的镜像 Volume_Img_cliDashboard 里是卷行操作的「上传镜像」磁盘格式选 QCOW2完成后在「项目 → 计算 → 镜像」能看到新镜像可见性为「共享的」。这一步常用来把配好环境的系统盘固化成模板。3.2 创建卷快照[rootcontroller ~(keystone_admin)]# openstack volume snapshot create --volume Volume_cli_01 Volume_Snap_cli# 中文为卷 Volume_cli_01 创建快照 Volume_Snap_cli[rootcontroller ~(keystone_admin)]# openstack volume snapshot list # 查看快照列表基于快照可以再拉出新卷新卷内容就定格在打快照那一刻[rootcontroller ~(keystone_admin)]# openstack volume create --snapshot Volume_Snap_cli Volume_cli_02# 中文基于快照 Volume_Snap_cli 创建新卷 Volume_cli_023.3 卷扩容[rootcontroller ~(keystone_admin)]# openstack volume set --size 2 Volume_cli_01# 中文把卷扩容到 2GB——只允许变大不允许缩小[rootcontroller ~(keystone_admin)]# openstack volume show Volume_cli_01 # 核对 size 字段⚠️注意扩容只放大了块设备实例内的分区和文件系统还要自己扩且卷挂载着in-use时扩容行为受后端限制稳妥做法是卸载后再扩。四、基于卷发放实例bootable 是道闸门[rootcontroller ~(keystone_admin)]# openstack server create --volume Volume_cli_02 --flavor Flavor_cli \--networkshared Instance_cli_02# 中文直接以卷 Volume_cli_02 为源发放实例不再需要镜像# 把卷改成非启动卷再试[rootcontroller ~(keystone_admin)]# openstack volume set --non-bootable Volume_cli_02[rootcontroller ~(keystone_admin)]# openstack server create --volume Volume_cli_02 --flavor Flavor_cli Instance_cli_03# 中文发放失败——非启动卷不能作为实例的源结论卷的bootable标志为否非启动卷时无法基于该卷发放虚拟机实例。Dashboard 里对应卷行「编辑卷 → 可启动」的勾选框。不是所有 available 的卷都能发实例先看这个标志。五、更新卷状态管理员的后门卷卡在异常状态时admin 可以手工改状态管理员 → 卷 → 卷 → 更新卷状态[rootcontroller ~(keystone_admin)]# openstack volume set --state error Volume_cli_01# 中文把卷状态强行改成 error——用于排障演练正常环境别乱用六、删不掉的卷三条依赖链删除卷openstack volume delete/ Dashboard 删除卷报错时按顺序排查#报错原因解法1卷有快照先删快照openstack volume snapshot delete Volume_Snap_cli再删卷2卷in-use先卸载openstack server remove volume 实例 卷回 available 再删3卷是系统卷实例正以它为根系统卷无法卸载——只能先删实例openstack server delete Instance_cli_02三条全占的卷就按 1 → 2 → 3 一层层拆。实验里Volume_cli_02挂给Instance_cli_02的系统卷就是典型删卷被拒 → 卸载被拒系统卷→ 删实例 → 再删卷才成功。七、NFS 第二后端cinder-volume 一拖二实验新增一台 NFS 节点IP192.168.108.12三步接入。7.1 NFS 节点把目录共享出去mkdir/nfs_share# 中文创建共享目录chmod-R777/nfs_share# 中文放开权限实验环境图省事yum-yinstallnfs-utils# 中文安装 NFS 工具包echo/nfs_share *(rw,sync,no_root_squash)/etc/exports# 中文把共享规则写入 exports——所有客户端可读写同步、不映射 rootsystemctl stop firewalld.service# 中文关防火墙实验环境systemctl restart nfs-serversystemctlenablenfs-server# 中文重启并开机自启controller / compute 节点先建挂载点并验证能挂mkdir /mnt/nfs_share。7.2 controller 节点cinder.conf 加 [nfs] 段[DEFAULT] enabled_backends lvm,nfs # 中文cinder-volume 同时启用两个后端 [nfs] volume_backend_name nfs # 后端名卷类型靠它认门 nfs_shares_config /etc/cinder/nfs_shares # 共享清单文件 nfs_mount_point_base /mnt/nfs_share # 本机挂载点基目录共享清单/etc/cinder/nfs_shares每行一条 NFS 导出[rootcontroller ~]# vim /etc/cinder/nfs_shares192.168.108.12:/nfs_share# 想再加共享目录就继续往下写行[rootcontroller ~]# mkdir -p /mnt/nfs_share[rootcontroller ~]# chown -R cinder:cinder /mnt/nfs_share # 中文目录归属 cinder 用户[rootcontroller ~]# systemctl restart openstack-cinder-volume# 中文重启 cinder-volume 让新后端生效7.3 建卷类型绑定后端再建卷验证关键一步按volume_backend_name创建对应卷类型nfs否则卷不知道往哪个后端放。建卷时类型选 nfs 的落 NFS 节点选 iscsilvm的落本地卷组——调度逻辑见姊妹篇第 4.2 节的 Filter/Weigher。最后用 NFS 卷发一台实例到 NFS 节点上能看到卷数据文件整条链路才算打通。附命令英文全称速查表命令英文全称含义volume typevolume type卷类型qosQuality of Service服务质量限速策略--consumeconsumeQoS 消费端front-end / back-endassociateassociate关联--imageimage以指定镜像为卷来源--bootable/--non-bootablebootable可启动 / 不可启动server add volumeserver add volume给实例挂卷server remove volumeserver remove volume从实例卸卷snapshotsnapshot快照--sizesize卷大小GiB只增不减--statestate强制设置卷状态--disk-format qcow2disk format磁盘格式QEMU copy-on-write v2nfsNetwork File System网络文件系统exportsexportsNFS 共享规则配置文件no_root_squash不压缩 root客户端 root 保持 root 权限chownchange owner修改文件属主enabled_backendsenabled backends启用的后端列表
企业数字化 ERP 产品动态
相关推荐
OpenStack 计算管理:实例锁定后被普通用户解锁了?避坑实操 给实例上了锁,转身普通用户登录就把锁解了、机删了——这不是 bug,是 policy.json 里 unlock 那条规则默认对 owner 开放。这篇把计算管理走一遍完整闭环:主机聚合与可用分区、规格的 Public/Private、密钥对与服务器组、发放实例,… · 2026/11/3 17:00:20
OpenStack 镜像管理:共享镜像一直 pending 看不见?Glance 全流程实操 镜像上传成功、状态显示正常,共享给别的项目后对方 openstack image list 里却死活找不到——十有八九是卡在成员状态 pending。这篇按一条完整链路走完镜像管理:下载验证 → 注册 → 改可见性 → 共享(pending → accept)→ 转格… · 2026/11/3 17:01:43
小白程序员转行大模型,这两条路你必须知道! 文章介绍了大模型发展的两条主线:开发/落地侧和算法/Infra侧,并针对没有学历和大厂背景的人提供了转行建议。开发侧强调动手实践和交付结果,建议先掌握基础工程能力,深度使用Claude Code等agent harness,通过真实项目积… · 2026/11/3 17:07:52
智算集群性能诊断实战:Benchmark、监控与故障排查体系 1. 从一次训练任务卡死说起:智算集群为什么需要"听诊器"凌晨两点,训练任务突然卡在某个 step 不动了。日志没有报错,GPU 利用率从 95% 掉到 3%,nvidia-smi 显示显存还占着,但计算单元几乎空转。这种场景做 A… · 2026/11/4 23:56:28
AI工程化落地:从工业质检到大模型托管平台 1. 这次两个消息放在一起,其实是同一件事的两面先说结论:西门子与宝洁扩大AI质检合作,和Kimi K3接入AWS Bedrock,表面上一个在讲工业制造,一个在讲大模型生态,看起来风马牛不相及。但把这两条放在同一天的A… · 2026/11/4 23:56:28
MySQL函数实战:提升数据库操作效率的20个技巧 1. MySQL函数概述与使用场景MySQL作为最流行的关系型数据库之一,其内置函数库是数据处理的核心工具集。这些函数可以大致分为日期时间、字符串处理、数学计算、系统信息等几大类,几乎覆盖了日常开发中的所有数据处理需求。在实际项目中,我经常… · 2026/11/4 23:56:28
Maven下载安装与settings.xml配置:JDK、本地仓库、镜像避坑 1. 先把 Maven 这件事说清楚:它到底解决什么问题聊 Maven 下载安装之前,我想先花点篇幅把“这东西是干嘛的”讲透。因为我在带新人的时候发现一个很普遍的现象:很多人装 Maven 装得挺顺,mvn -v也能出结果,但对着一堆po… · 2026/11/4 23:56:28
电商数据处理自动化:流批一体与智能管道的实践 1. 电商数据处理的现状与挑战电商行业经过近十年的高速发展,已经积累了海量的用户行为数据、交易数据和商品数据。根据我过去参与的几个大型电商平台数据中台建设的经验,目前主流电商平台日均产生的数据量普遍在TB级别,大促期间甚至可以达到P… · 2026/11/4 23:56:28
智能可观测性平台:从数据孤岛到自动化运维 1. 项目背景与行业痛点去年某次深夜告警让我记忆犹新:某核心业务系统突发性能劣化,运维团队花了3小时才定位到是某个第三方API的异常返回触发了业务逻辑的死循环。这种传统运维的被动响应模式,正是当下企业数字化转型中面临的典型困境。随着微… · 2026/11/4 23:55:21
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38
AI辅助技术栈评估:提升研发决策效率60% 1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进,技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里,先后经历了三次重大技术栈迁移,每次都需要投入大量人力进行技术评估和风险分析。直到去年… · 2026/11/4 0:00:17
从生成Token到直接决策:Jev如何重塑AI Agent工程实践 1. 从"生成文字"到"拍板决策":Jev 到底在解决什么问题大多数人第一次接触大模型,脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样,它给你一段描述;你让它写个周报,它给你… · 2026/11/4 0:00:17
32G统一内存跑大模型:内存账、TPS实测与端云分流 想在一台 32G 统一内存的小主机上把大模型跑成"日常可用",这件事我前后折腾了小半年。标题里说的这台 Mac mini M6,是我们这次讨论的目标平台,具体到手规格以实物为准;但下面这套推算方法和实测思路,对任何统… · 2026/11/4 0:00:17
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38