1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
|
RBD Incremental Backup
======================
This is a simple streaming file format for representing a diff between
two snapshots (or a snapshot and the head) of an RBD image.
Header
~~~~~~
"rbd diff v1\\n"
Metadata records
~~~~~~~~~~~~~~~~
Every record has a one byte "tag" that identifies the record type,
followed by some other data.
Metadata records come in the first part of the image. Order is not
important, as long as all the metadata records come before the data
records.
From snap
---------
- u8: 'f'
- le32: snap name length
- snap name
To snap
-------
- u8: 't'
- le32: snap name length
- snap name
Size
----
- u8: 's'
- le64: (ending) image size
Data Records
~~~~~~~~~~~~
These records come in the second part of the sequence.
Updated data
------------
- u8: 'w'
- le64: offset
- le64: length
- length bytes of actual data
Zero data
---------
- u8: 'z'
- le64: offset
- le64: length
Final Record
~~~~~~~~~~~~
End
---
- u8: 'e'
Header
~~~~~~
"rbd diff v2\\n"
Metadata records
~~~~~~~~~~~~~~~~
Every record has a one byte "tag" that identifies the record type,
followed by length of data, and then some other data.
Metadata records come in the first part of the image. Order is not
important, as long as all the metadata records come before the data
records.
In v2, we have the following metadata in each section:
(1 Bytes) tag.
(8 Bytes) length.
(n Bytes) data.
In this way, we can skip the unrecognized tag.
From snap
---------
- u8: 'f'
- le64: length of appending data (4 + length)
- le32: snap name length
- snap name
To snap
-------
- u8: 't'
- le64: length of appending data (4 + length)
- le32: snap name length
- snap name
Size
----
- u8: 's'
- le64: length of appending data (8)
- le64: (ending) image size
Data Records
~~~~~~~~~~~~
These records come in the second part of the sequence.
Updated data
------------
- u8: 'w'
- le64: length of appending data (8 + 8 + length)
- le64: offset
- le64: length
- length bytes of actual data
Zero data
---------
- u8: 'z'
- le64: length of appending data (8 + 8)
- le64: offset
- le64: length
Final Record
~~~~~~~~~~~~
End
---
- u8: 'e'
|