知识卡片

RADOS对象clone与RBD克隆是两个不同层面的机制

专业/工作 · 236.e.3

内容

“clone”这个词在 Ceph 里指两件完全不同的事,容易混淆:RADOS 对象层面的 clone 是快照触发的写时复制,由 OSD 服务端在本地完成,属于 [[快照与克隆基于Copy-on-Write的关系|快照机制]]的一部分;RBD 层面的克隆(clone image)则完全由客户端实现,是在一个已有快照基础上派生出一个可写镜像,OSD 端对此毫无感知,只是响应普通的读写请求。二者的关系是:RBD 克隆的底层实现依赖 RADOS 的快照能力,但克隆本身的”跨对象读取父数据、写入子对象”这套逻辑完全是客户端在做,不是服务端多了一种新操作。读源码时看到”clone”必须先判断说的是哪一层,否则容易把客户端逻辑和服务端逻辑搞混。

参考来源

《Ceph源码分析》第9章《Ceph快照和克隆》