[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [linux-lvm] ANNOUNCE: an experimental implementation of snapshot merging

On Tue, 3 Jun 2008, Brian J. Murrell wrote:

On Tue, 2008-06-03 at 15:26 -0400, Mikulas Patocka wrote:

Merging allows you to copy data in snapshot back to the origin device.


During merging, aby
typo? ------------^^^

Yes, there should be "any".

 reads and writes to the origin device are identical to
accesses to the merging snapshots.

So the origin looks 100% merged as soon as the merging starts?

Yes. You can immediatelly mount the origin read-write and you see the content of the snapshot being merged.

There may be multiple snapshots while one of them is being merged ---
exceptions in other snapshots are being allocated and there snapshots are
kept stable.

So basically, before blocks are copied up from the merging snapshot to
the origin, the blocks to be overwritten (in the origin) are first
copied down to other snapshots of the same origin?


Is it smart about a block that is to be copied up to the origin being
the same as the corresponding blocks in peer snapshots?  By "smart" I
mean erase the block in the peer's snapshot and put back the pointer up
to the origin.


A pedantic example would be to create an origin, O1 and then a snapshot
of O1 called S1.  Make a bunch of changes to S1 and then create another
snapshot of O1 called S2 and then block copy from S1 to S2 (presumably,
although I don't know for sure, S2 only contains the same changed blocks
as S1).

No, if you block copy over /dev/vg/snapshot device, it will contain all the blocks (regardless if they differ from the origin or not).

There could theoretically be compare function, testing if the write equals to actual data and dropping the write eventually --- but it would be too much coding overhead for too little practical advantage.

Now if you merge S1 up to O1, ideally S2 should be "empty".

Snapshots are never shrunk (except when being merged) --- the metadata format doesn't allow to remove arbitrary exception from the exception table.


Don't try to concurrently merge more than one snapshot



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]