Hi Ilya, 2023年12月18日(月) 9:14 Satoru Takeuchi <satoru.takeuchi@gmail.com>:
Hi Ilya,
Yes, it's possible. It's one of a workaround I thought. Then the backup data are as follows:
a. The full backup taken at least 14 days ago. b. The latest 14 days backup data
I think it would be:
a. A full backup (taken potentially months ago, exact age doesn't really matter) b. Differential #1 - diff from the full backup to the 14 days old version c. Differential #2 - diff from the 14 days old to the 13 days old version d. Differential #3 - diff from the 13 days old to the 12 days old version ...
Every day after a new differential is taken, (b) and (c) would be merged, keeping the number of differentials constant.
In this case, I concern the effect if (a) becomes too old. However, it might be a groundless fear.
I would suggest re-capturing the full backup from time to time, just as a precaution against something going wrong with a backup based on a too long series of (merged) differentials. It might be groundless concern, but then you can't be too careful when it comes to backups.
I also got an advice from MykolaI and succeeded to merge the full backup with the oldest diff. The key point is capturing the full backup as a diff data. My verification is: 1. Create an empty RBD image. 2. Update this image. 3. Capture a full backup F, by `rbd export-diff`. 4. Update this image again. 5. Capture a diff D by `rbd export-diff` 6. Create a new image which size is the same as an RBD image created at step1. 7. Import F by `rbd import-diff` and the contents is correct. 8. Import D by `rbd import-diff` and the contents is correct. 9. Merge F and D by `rbd merge-diff` and create D2. 10. Create an another new image. 11. Import D2 by `rbd import-diff` and the contents is as expected. Thanks, Satoru