注意
本文档适用于 Ceph 的开发版本。
RBD 增量备份
这是一种简单的流式文件格式,用于表示 RBD 镜像的两个快照之间(或一个快照与头部之间)的差异。
Header
“rbd diff v1\n”
元数据记录
每条记录都有一个字节的“标签”来标识记录类型,后面跟着一些其他数据。
元数据记录出现在镜像的第一部分。顺序并不重要,只要所有元数据记录都在数据记录之前即可。
起始快照(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’