libvirt怎么挂载CephRBD块存储作为虚拟化虚拟机的母盘

梦磊小哥_1372

梦磊小哥_1372

2026-09-29

532人浏览

原创

libvirt挂载ceph rbd母盘必须用type='network' protocol='rbd'直连方式,而非rbd map映射的/dev/rbdx设备,因其独占性、不支持快照克隆链且绕过librbd逻辑;母盘需启用layering特性、禁用exclusive-lock等冗余特性,并在disk xml中显式声明readonly='yes'。

libvirt怎么挂载cephrbd块存储作为虚拟化虚拟机的母盘

libvirt 挂载 Ceph RBD 块存储作为虚拟机母盘,本质是让 qemu 通过 librbd 直接访问 RBD 镜像,不经过本地文件系统或内核 RBD 模块映射。这种方式避免了中间层开销,也支持 OpenStack 场景下的快照克隆链(如 Glance RAW 镜像 + Cinder 卷克隆),但必须用 raw 格式、禁用 QCOW2、且镜像需启用 layering 特性。


为什么不能直接用 rbd map + /dev/rbdX 当作母盘?

能挂,但不适合当“母盘”——尤其涉及克隆、快照、多虚拟机共享基础镜像时:
- rbd map 映射出的 /dev/rbd0 是独占式块设备,无法被多个 qemu 进程同时以写方式打开
- libvirt 的 disk XML 中若填 type='block' + source dev='/dev/rbd0',会因设备锁冲突导致第二台虚拟机启动失败
- 更关键的是:它绕过了 librbd 的快照/克隆逻辑,无法支撑 rbd clone 生成的写时复制子镜像(即所谓“母盘 → 快照 → 克隆卷”链)
- 所以生产中真正用于母盘的,一定是 type='network' + protocol='rbd' 的直连方式


virsh 定义虚拟机时如何写 RBD 母盘的 disk XML?

核心是三要素:协议类型、镜像路径、认证密钥。示例片段如下:

<disk type="network" device="disk"><driver name="qemu" type="raw" cache="writeback"></driver><auth username="client.admin"><secret type="ceph" uuid="72ebf201-c2a7-4301-9291-95099b251d00"></secret></auth><source protocol="rbd" name="rbd_pool/my-base-image"><host name="10.1.254.11" port="6789"></host></source><target dev="vda" bus="virtio"></target></disk>

注意要点:
- type='raw' 是硬性要求;Glance 上传镜像时也必须用 qemu-img convert -f qcow2 -O raw 转换
- cache='writeback' 可提升性能,但要求 guest 内核 >= 2.6.32 并开启 barrier(默认已满足)
- uuid 对应的 libvirt secret 必须提前定义,且 secret 内容是 base64 编码后的 Ceph 密钥(不是明文 keyring 文件内容)
- 若 Ceph 集群启用了 CRUSH rule 或非默认 pool,name 中的 pool 名必须显式写出,不能省略


母盘镜像必须开启哪些 RBD 特性?

仅 layering 一项不够,但它是克隆链存活的前提。实际部署中建议:

Anyword
Anyword

一款面向营销团队的AI文案平台,可生成广告、网站、社交媒体等营销内容,并通过数据分析辅助优化文字表现。

下载
  • rbd feature enable mypool/my-base-image layering —— 必开,否则 rbd clone 报错 “image must have layering feature enabled”
  • rbd feature disable mypool/my-base-image exclusive-lock object-map fast-diff deep-flatten —— 推荐关闭,这些特性在母盘场景下无意义,反而增加元数据负担和兼容风险
  • 确认镜像未被 map 或正在被 qemu 使用:rbd status mypool/my-base-image 应返回 “No watchers”
  • 母盘本身不应有快照;若需克隆,先 rbd snap create 再 rbd clone,克隆出的子卷才可作为虚拟机盘

常见报错与定位点

启动虚拟机失败时,优先查这三处:

  • error: internal error: process exited while connecting to monitor: qemu-kvm: -drive ...: could not open disk image rbd:mypool/my-base-image: Invalid argument → 多半是 layering 未启用,或 secret uuid 错误/未定义
  • libvirtError: Unable to find auth secret for username client.admin → virsh secret-list 看不到对应 uuid,或 virsh secret-get-value 解码后不是正确的 base64 密钥
  • 虚拟机启动后 I/O 极慢甚至卡死 → 检查 Ceph 客户端节点是否加载了 rbd 内核模块(lsmod | grep rbd),librbd 在用户态运行,但某些旧版内核存在模块冲突

母盘最脆弱的地方不在配置,而在生命周期管理:一旦被某台虚拟机以 read-write 方式直接挂载,就失去了作为“只读母盘”的语义,后续克隆将失效。务必确保母盘镜像在 libvirt XML 中始终以 readonly='yes' 显式声明(即使没写,qemu 默认也是只读打开 network 类型 RBD)。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

虚拟机 虚拟化

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
虚拟化软件介绍
虚拟化软件介绍

虚拟化软件有VMware、VirtualBox、Hyper-V、Parallels Desktop、Oracle VirtualBox等。想了解更多虚拟化的相关内容,可以阅读本专题下面的文章。

2023.12.20

7739

8

PixTV AI视频生成与无限画布创作
PixTV AI视频生成与无限画布创作

PixTV专题整理AI视频与视觉内容创作相关功能使用教程,涵盖AI生图、视频生成、无限画布、多模型创作、素材管理、声音音乐及视频剪辑等功能,帮助用户快速掌握PixTV从创意到成片的完整制作方法。

2026.09.29

0

15

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

2026.09.23

200

15

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

2026.09.23

100

15

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

2026.09.23

80

15

Conan创建软件包配方指南
Conan创建软件包配方指南

本专题介绍通过conanfile.py创建软件包的方法,讲解包名、版本、依赖和构建设置等基础信息,以及source、build、package、package_info等常用方法的作用及编写思路。

2026.09.22

60

12

Conan二进制包配置指南
Conan二进制包配置指南

本专题介绍Conan根据操作系统、编译器、架构和构建类型生成二进制包的方法,讲解Profile、Settings、Options及Package ID的作用,帮助管理不同平台和编译环境下的包版本。

2026.09.22

60

13

Conan私有仓库搭建教程
Conan私有仓库搭建教程

本专题系统的讲解Conan私有仓库的搭建流程,涵盖仓库服务部署、存储目录配置、用户认证、权限划分和远程地址添加,并介绍内部C++依赖包的上传、下载及版本维护方法。

2026.09.22

60

19

loomy官网入口地址合集
loomy官网入口地址合集

本专题汇总了 Loomy 桌面 AI 助理的官方入口地址合集及使用指南。提供 macOS 与 Windows 客户端下载 。Loomy 是讯飞推出的桌面级 AI 工作搭子,支持文件整理、数据分析、网页操作及通过飞书/钉钉远程操控电脑,助你高效完成本地办公任务 。

2026.09.22

60

19

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
c语言项目php解释器源码分析探索
c语言项目php解释器源码分析探索

共7课时 | 0.5万人学习

光速学会docker容器
光速学会docker容器

共33课时 | 2.9万人学习