news 2026/5/12 15:38:42

rbd快照

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
rbd快照

好的,我将把关于RBD 克隆快照删除/回收机制的两个教程合并,创建一个带有详细命令、操作步骤和底层原理的综合指南


📖 RBD 进阶操作:克隆与空间管理指南本指南涵盖了 RBD 镜像的克隆创建及其父子链的管理,以及在快照删除时存储空间是如何被释放的关键原理。

第一部分:基于快照创建克隆镜像(CoW 原理)克隆(Clone)是一种写时复制(CoW)子镜像,它与父快照共享数据块,可以实现极速部署。

步骤 1:创建父镜像和快照这是创建克隆的起点。

动作命令示例原理/解释
创建快照rbd snap create poolname/base_vm@initial_state瞬时操作:该操作仅记录当前镜像数据块的 RADOS 对象 ID 集合,并将快照设置为指向这个只读集合的指针。不会复制任何数据,因此速度极快。
确认快照rbd snap ls poolname/base_vm验证快照元数据已成功创建。

步骤 2:保护快照(建立依赖)命令:rbd snap protect poolname/base_vm@initial_state

原理:

  • 依赖链锁定:保护操作设置了一个元数据标志,表明该快照现在是“被依赖”的。
  • 强制安全:被保护的快照无法被删除。这确保了作为子镜像数据源的父快照不会意外丢失,维护了数据完整性。

步骤 3:创建克隆镜像(CoW 触发)命令:rbd clone poolname/base_vm@initial_state target_pool/vm01_disk

原理:

  1. 元数据链接:创建vm01_disk的元数据,其中包含一个明确指向父快照的指针。
  2. 数据共享(Read):客户端尝试读取vm01_disk数据时,如果该块尚未被修改,RBD 驱动会透明地沿着指针从父快照读取共享数据。
  3. 写时复制(Write):客户端首次尝试写入某个块时,才会触发 CoW 机制。
  • 旧块复制:父快照中的原始数据块被复制到新的 RADOS 对象中。
  • 新块写入:客户端的新数据写入到这个新的对象位置。

  1. 空间效率:克隆镜像只记录它与父快照的差异数据,因此刚创建时,它几乎不占用额外空间。

第二部分:快照删除与空间回收(消除依赖)删除快照的关键在于:如果它有子镜像依赖,必须先消除依赖。

步骤 4:解除依赖链(处理克隆镜像)要删除一个被保护且被克隆引用的快照,您必须先处理所有依赖它的克隆镜像。

选项 A:删除克隆(如果不再需要)| 动作 | 命令示例 | 原理/解释 |

| — | — | — |
|删除克隆|rbd rm target_pool/vm01_disk|直接消除依赖:一旦克隆镜像被删除,它对父快照的依赖关系即刻消失。该克隆所独有的数据块会被标记为可回收。 |

选项 B:扁平化克隆(如果仍需保留克隆)| 动作 | 命令示例 | 原理/解释 |

| — | — | — |
|扁平化|rbd flatten target_pool/vm01_disk|消除共享,数据独立:这是强制数据复制的操作。系统会将父快照中所有被vm01_disk共享的数据块复制vm01_disk自身的存储空间中。 |
|空间变化| 无专门命令,需观察rbd du| 克隆镜像的物理占用空间会显著增加,因为共享数据现在变为独占数据。操作完成后,vm01_disk成为一个独立镜像,不再依赖父快照。 |

步骤 5:最终删除快照与空间回收在所有依赖该快照的克隆都被处理(删除或扁平化)后,才能执行删除操作。

动作命令示例原理/解释
取消保护rbd snap unprotect poolname/base_vm@initial_state依赖计数为零后,取消保护。如果仍有依赖,该操作会失败。
删除快照rbd snap rm poolname/base_vm@initial_state触发垃圾回收:快照被删除后,该快照所独有的、并且不再被链条中任何其他快照或镜像引用的数据块,会被 Ceph 的RADOS 垃圾回收机制标记并异步删除。
查看回收需等待 OSD 运行OSDs 会在后台释放对应的 RADOS 对象。从命令执行到存储池容量统计(ceph df)下降会存在一定延迟,尤其是在集群负载较高时。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/11 17:13:48

3分钟快速集成:轻量级JavaScript天气组件终极指南

3分钟快速集成:轻量级JavaScript天气组件终极指南 【免费下载链接】weather real weather for Javascript 项目地址: https://gitcode.com/gh_mirrors/weat/weather 想要为网站添加实时天气功能?Weather.js让您轻松实现专业级天气显示&#xff0c…

作者头像 李华
网站建设 2026/5/10 11:17:40

LXMusic V4版:智能音乐发现与个性化下载体验完全指南

你是否曾经为了找到一首心仪的冷门歌曲而翻遍各大音乐平台?或者因为下载音乐过程繁琐而放弃收藏?今天,让我们一起来探索LXMusic音乐下载器V4版如何彻底改变你的音乐获取方式。 【免费下载链接】LXMusic音源 lxmusic(洛雪音乐&…

作者头像 李华
网站建设 2026/5/2 9:57:01

ros2常用命令

1、ros2安装 wget http://fishros.com/install -O fishros && . fishros2、小海龟:测试一下 ros2 run turtlesim turtlesim_noderos2 run turtlesim turtle_teleop_key3、colcon安装 sudo apt install python3-colcon-common-extensionscolcon --helppip3 s…

作者头像 李华
网站建设 2026/5/1 5:42:32

TranslucentTB安装失败终极解决方案:7步彻底修复透明任务栏问题

TranslucentTB安装失败终极解决方案:7步彻底修复透明任务栏问题 【免费下载链接】TranslucentTB 项目地址: https://gitcode.com/gh_mirrors/tra/TranslucentTB 你是否曾经对Windows单调的任务栏感到厌倦?想要体验透明、模糊的现代化效果&#x…

作者头像 李华
网站建设 2026/5/6 10:33:31

昇腾AI全栈技术深度解析:从异构计算到应用开发实战

历经13年异构计算研发,我深刻体会到:“真正的技术深度不在于知道多少API,而在于能否从晶体管的行为推演出系统级性能瓶颈”。本文将带你穿透华为昇腾AI全栈技术的层层抽象,直抵达芬奇架构的物理本质,掌握从芯片指令到A…

作者头像 李华
网站建设 2026/5/1 4:30:16

TaskFlow:Java开发者必备的DAG任务编排终极指南

TaskFlow:Java开发者必备的DAG任务编排终极指南 【免费下载链接】taskflow taskflow是一款轻量、简单易用、可灵活扩展的通用任务编排框架,基于有向无环图(DAG)的方式实现,框架提供了组件复用、同步/异步编排、条件判断、分支选择等能力&…

作者头像 李华