5.9. Ceph 块设备分层


Ceph 支持创建许多块设备快照的写时复制 (COW) 或读时复制 (COR) 克隆。快照分层使得 Ceph 块设备客户端能够非常快速地创建镜像。例如,您可以使用写入它的 Linux 虚拟机创建块设备镜像。然后,对镜像执行快照,保护快照,并创建所需数量的克隆。快照是只读的,因此克隆快照可以简化语义-使快速创建克隆成为可能。

图 5.2. Ceph 块设备分层

Ceph 块设备分层
注意

术语 父项(parent)子项(child)表示 Ceph 块设备快照、父项,以及从快照子级克隆的对应映像。这些术语对于以下命令行用法非常重要。

每个克隆的镜像(子镜像)存储对其父镜像的引用,这使得克隆的镜像能够打开父快照并读取它。当克隆扁平化时,当快照中的信息完全复制到克隆时,会删除此引用。

快照克隆的行为与任何其他 Ceph 块设备镜像完全相同。您可以读取、写入、克隆和调整克隆的镜像大小。克隆的镜像没有特殊限制。但是,快照的克隆会指向快照,因此在克隆快照前,必须会对其进行保护。

快照的克隆可以是写时复制 (COW) 或读时复制 (COR) 克隆。在必须显式启用读取时复制 (COR) 时,始终为克隆启用写时复制 (COW)。当数据写入到克隆中的未分配对象时,写时复制 (COW) 将数据从父项复制到克隆。当父进程从克隆中未分配的对象读取时,从父进程复制数据到克隆。如果克隆中尚不存在对象,则仅从父项读取数据。RADOS 块设备将大型镜像分成多个对象。默认值为 4 MB,所有写时复制 (COW) 和写时复制 (COR) 操作都发生在完整的对象上,这会将 1 字节写入到克隆,如果之前的 COW/COR 操作的克隆中目标对象尚不存在,则会导致从父对象读取 4 MB 对象并写入克隆。

是否启用读取时复制 (COR),任何通过从克隆读取底层对象无法满足的读取都将重新路由到父对象。由于父项实际上没有限制,这意味着您可以对一个克隆进行克隆,因此,在找到对象或您到达基础父镜像时,这个重新路由将继续进行。如果启用了读取时复制 (COR),克隆中任何未直接满足的读取会导致从父项读取完整的对象并将该数据写入克隆,以便克隆本身可以满足相同的扩展读取,而无需从父级读取。

这基本上是一个按需、按对象扁平化的操作。当克隆位于与它的父级(位于另一个地理位置)的父级(位于其他地理位置)的高延迟连接中时,这特别有用。读时复制 (COR) 可降低读分化延迟。前几次读取具有较高的延迟,因为它将导致从父进程读取额外的数据,例如,您从克隆中读取 1 字节,但现在 4 MB 必须从父级读取并写入克隆,但将来的所有读取都将从克隆本身提供。

要从快照创建写时复制 (COR) 克隆,您必须通过在 ceph.conf 文件的 [global][client] 部分添加 rbd_clone_copy_on_read = true 来显式启用此功能。

其它资源

  • 有关扁平化的更多信息,请参阅 Red Hat Ceph Storage Block Gudie 中的扁平克隆镜像部分。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.