注意

本文档适用于 Ceph 的开发版本。

RBD 增量备份

这是一种简单的流式文件格式,用于表示 RBD 镜像的两个快照之间(或一个快照与头部之间)的差异。

元数据记录

每条记录都有一个字节的“标签”来标识记录类型,后面跟着一些其他数据。

元数据记录出现在镜像的第一部分。顺序并不重要,只要所有元数据记录都在数据记录之前即可。

起始快照(From snap)

  • u8: ‘f’

  • le32: 快照名称长度

  • 快照名称

目标快照(To snap)

  • u8: ‘t’

  • le32: 快照名称长度

  • 快照名称

大小(Size)

  • u8: ‘s’

  • le64: (结束)镜像大小

数据记录

这些记录出现在序列的第二部分。

更新数据(Updated data)

  • u8: ‘w’

  • le64: 偏移量

  • le64: 长度

  • 长度字节的实际数据

零数据(Zero data)

  • u8: ‘z’

  • le64: 偏移量

  • le64: 长度

最终记录

结束(End)

  • u8: ‘e’

Header

“rbd diff v2\n”

元数据记录

每条记录都有一个字节的“标签”来标识记录类型,后面跟着数据长度,然后再是一些其他数据。

元数据记录出现在镜像的第一部分。顺序并不重要,只要所有元数据记录都在数据记录之前即可。

在 v2 中,每个部分都有以下元数据:(1 字节)标签。(8 字节)长度。(n 字节)数据。

通过这种方式,我们可以跳过无法识别的标签。

起始快照(From snap)

  • u8: ‘f’

  • le64: 附加数据的长度 (4 + length)

  • le32: 快照名称长度

  • 快照名称

目标快照(To snap)

  • u8: ‘t’

  • le64: 附加数据的长度 (4 + length)

  • le32: 快照名称长度

  • 快照名称

大小(Size)

  • u8: ‘s’

  • le64: 附加数据的长度 (8)

  • le64: (结束)镜像大小

数据记录

这些记录出现在序列的第二部分。

更新数据(Updated data)

  • u8: ‘w’

  • le64: 附加数据的长度 (8 + 8 + length)

  • le64: 偏移量

  • le64: 长度

  • 长度字节的实际数据

零数据(Zero data)

  • u8: ‘z’

  • le64: 附加数据的长度 (8 + 8)

  • le64: 偏移量

  • le64: 长度

最终记录

结束(End)

  • u8: ‘e’

由 Ceph 基金会为您呈现

Ceph 文档是由非营利性 Ceph 基金会 资助和托管的社区资源。如果您希望支持这项工作和我们的其他努力,请考虑 立即加入