OpenStack 存储管理实操:卷类型 QoS、卷全生命周期与 NFS 第二后端

发布时间:2026/10/31 22:24:14
OpenStack 存储管理实操:卷类型 QoS、卷全生命周期与 NFS 第二后端 卷建好只是开始——挂载、扩容、打快照、传成镜像、拿去发实例每一步都有前置条件删卷删不掉更是三条依赖链叠出来的经典现场。这篇按卷的一生走完 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启用的后端列表

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询