On 16.02.24 13:55, Fiona Ebner wrote:
Previous discussion from when this was sent upstream [0] (it's been a
while). I rebased the patches and re-ordered and squashed like
suggested back then [1].
This implements two new mirror modes:
- bitmap mirror mode with always/on-success/never bitmap sync mode
- incremental mirror mode as sugar for bitmap + on-success
Use cases:
* Possibility to resume a failed mirror later.
* Possibility to only mirror deltas to a previously mirrored volume.
* Possibility to (efficiently) mirror an drive that was previously
mirrored via some external mechanism (e.g. ZFS replication).
We are using the last one in production without any issues since about
4 years now. In particular, like mentioned in [2]:
- create bitmap(s)
- (incrementally) replicate storage volume(s) out of band (using ZFS)
- incrementally drive mirror as part of a live migration of VM
- drop bitmap(s)
Actually which mode you use, "never", "always" or "conditional"? Or in
downstream you have different approach?
Why am I asking:
These modes (for backup) were developed prior to block-dirty-bitmap-merge
command, which allowed to copy bitmaps as you want. With that API, we actually
don't need all these modes, instead it's enough to pass a bitmap, which would
be _actually_ used by mirror.
So, if you need "never" mode, you just copy your bitmap by
block-dirty-bitmap-add + block-dirty-bitmap-merge, and pass a copy to mirror job.
Or, you pass your bitmap to mirror-job, and have a "always" mode.
And I don't see, why we need a "conditional" mode, which actually just drops
away the progress we actually made. (OK, we failed, but why to drop the progress of
successfully copied clusters?)
Using user-given bitmap in the mirror job has also an additional advantage of
live progress: up to visualization of disk copying by visualization of the
dirty bitmap contents.
--
Best regards,
Vladimir