Comments (7)
It is possible to specify hints for any type of backup. But there currently is no program to generate these hints for LVM. Code to do something similar in Ruby is found here, both in a variant for classic snapshots and for thin snapshots. I would be delighted to include a script to generate the hints for LVM snapshots, preferably in Python of course.
from benji.
Appreciate the input, I had a feeling that was the case.
I don't know Ruby or Python so I won't be much help.
from benji.
I found out that for thin LVM volumes there is a CLI tool which does the metadata parsing and difference calculation: thin_delta
. Must have missed it somehow.
See https://github.com/tasket/wyng-backup/blob/94d410fc415094c6cf3f526ae52e7abf1eada2fd/wyng#L930 and https://github.com/LINBIT/thin-send-recv/blob/c48c568055c14d1fa893ac110cadb8c1ded32aea/thin_send_recv.c#L156 for usage by other programs. I haven't looked at the output but it is XML formatted. So it shouldn't be too hard to translate that into Benji's hints format.
from benji.
So I want to look into this at some point because I'm looking to set up Benji Backup for personal use and also use LVM+XFS, however I do have a question about the required diff format. From what I can tell it's basically:
{
"offset": "the start offset of the data changed",
"length": "the length of the data changed in bytes",
"exists": "not sure?"
}
Would anyone be able to indicate what "exists"
means, and whether the starting offsets are relative to the snapshot or current version? If we, say, add data that results in brand-new blocks, or remove entire blocks, what would the JSON objects look like then?
from benji.
Thank you for looking into this! I think it would by a valuable addition.
exists
means that the range in question contains data and is not sparse. offset
is relative to the snapshot, but I don't understand what you mean by current version. Benji assumes that the backed up block devices can get bigger or smaller at the end only. There is a special case for the last block which Benji will always read if the last block is affected by the size change, i.e. if the old or new end of the device wasn't/isn't on a block boundary (according to the block size used by Benji).
from benji.
Just gonna lie Benji Allan begay all.this is abuse and Child abuse
from benji.
Thank you for stealing my money my children money Benji Allan begay go be with Jerry your man
from benji.
Related Issues (20)
- benji database-init should be called first time running the container HOT 1
- Restored data does not always match original (Ceph bug) HOT 21
- Problems with snaptrims being pended - Work around HOT 3
- Memory error on benji rm or benji enforce HOT 2
- benji-backup-pvc is no longer working since upgrade HOT 3
- IO scheme k3s is undefined HOT 2
- openstack cinder-backup integration HOT 2
- MySQL compatability problem HOT 1
- benji with celery ? HOT 1
- Publish to a Helm repository in order to support Terraform deployments HOT 2
- Metrics scaling HOT 5
- Coordination with Velero HOT 3
- How to use with rook-ceph ? HOT 2
- Python 3.10 suport HOT 1
- NBD server losing connection to PostgreSQL HOT 4
- nbdserver does not start with python 3.10
- Unable to install benji to Python 3.11 venv in Proxmox 8 (Debian 12 (bookworm)) HOT 4
- NBD export fail "nbd0: truncated" to mount with block size other than 512
- Bug: high ram usage during `benji rm`
- Some pool names are not supported
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from benji.