Problem with differential restore
-
Thank you.
-
@frank-s So- I have been thinking about this. If an NBT/CBT backup is set to destroy the snapshot, would it be possible to make differential restore work by having the restore process create the snapshot it needs, perform the differential restore and then delete the snapshot?
-
Recreating the snapshot from the CBT metadata? The problem is the CBT metadata doesn't make sense alone, only compared to the data saved by XO. So this will need to read a lot of data between XO and the host, not sure it will be faster at all (probably the opposite)
-
@olivierlambert No, not recreating the snapshot from the CBT metadata but simply creating a new temporary snapshot, perform differential restore and delete the temporary snapshot when done.
-
I'm not sure to follow. You need a point of reference in time to restore. If you start from a new snapshot, and apply the diff blocks (from XO backup) on top of it, it will be complete nonsense.
-
@olivierlambert So, earlier in this thread, florent said "differential restore work by not transferring the data that the snapshot and the backup have in common, without reading any of those
it clone the last snapshot, an then revert the block changed between the older backup and the snapshot". If this is true (and I'm sure it is) why can't the differential restore system create the missing snapshot and use that to complete the differential restore? -
That's true as long as you keep the snapshot data, which is not the case in NBD+purge data.
-
@olivierlambert Agreed, but in the case where the snapshot has been deleted, why can't the differential restore process simply create a snapshot from the vm and use that instead?
-
Create a snapshot against which reference? The snapshot is deleted. You need a reference point to do differential. That reference is deleted when you remove the snapshot data.
Differential means differential against something, a reference. If you don't have a reference, it doesn't make sense. It's like guess a number after "minus 2" operation. What is that number? If you don't have the original number, it's impossible to apply "minus 2" on it.
-
@olivierlambert <The snapshot is deleted. You need a reference point to do differential>. So, since the snapshot is deleted, create a new one (snapshot) as part of the restore process and use that for the reference - then delete it when done.
-
You will create a snapshot on the current state of the VM. Which has changed since the last snapshot. So this new snapshot has nothing to do with the previous/removed one, block changed. If you apply a diff from the old/removed snap on top of the new snapshot, what do you think will be the result?
-
@olivierlambert said in Problem with differential restore:
No, because it's a planned feature. In short, XOA will act as an temporary SR so you can instantly start the backup VM, then migrate it to the target storage.
Thatβs great get InstantRestore!!!!
-
@frank-s Think of it like this...
You take the original backup with snapshot on October 1st.
You then have a differential backup on October 8th. That differential only writes the changes that make the state of the server on October 8th different (hence the term differential) from the state of the server as it was on the full snapshot on October 1st.
Now you delete the snapshot of the full system state taken on October 1st, leaving only the October 8th differential.
It's now October 15th and you want to restore something from the October 8th differential and you figure you'll just make a new full snapshot from October 15th and then try to apply the October 8th differential. However, this won't work because the differential from October 8th will be missing key reference points it will be looking for in order to overlay its changes onto the snapshot. What else on that server changed from October 1st to October 15th that isn't contained in the differential? What changes occurred from October 8th to October 15th that are newer than what is on the differential? You could, potentially, brick your entire system if the differential started overwriting changes it sees from its system state that are actually newer than the data it contains.
Differentials are entirely dependent on the full snapshot on which they are based. Any new snapshot taken after their creation will be totally foreign to the differential... those differentials will be looking for very specific system states that existed at the time the original snapshot was created, and those will be completely different from the system state as it will appear on a new snapshot created after the differential.