[linux-lvm] Snapshots of snapshots are not supported yet

Zdenek Kabelac zkabelac at redhat.com
Wed Jul 10 18:43:15 UTC 2013


Dne 10.7.2013 16:45, markw at mohawksoft.com napsal(a):
>> Dne 10.7.2013 05:45, markw at mohawksoft.com napsal(a):
>>> One more annoying question, if you have the patience.
>>>
>>> Suppose I create a thin provisioned volume, say disk0.
>>>
>>> I take a snapshot of disk0 and name it disk0_snap0
>>> After a number of changes I then take another snapshot, and call it
>>> disk0_snap1
>>>
>>> Is the thin provisioning stuff smart enough to realize that disk0_snap0
>>> should be rewired to reference disk0_snap1 as its origin? It would look
>>> like this:
>>>
>>> disk0 -> disk0_snap1 -> disk0_snap0
>>>
>>> What I would like to see is something like this:
>>>
>>> disk0 -> disk0_snap2 -> disk0_snap1 -> disk0_snap0
>>>
>>> Create disk0_snap3
>>>
>>> disk0 -> disk0_snap3 -> disk0_snap2 -> disk0_snap1 -> disk0_snap0
>>>
>>> Where all writes to disk0 result in CoW to disk0_snap3 and the remaining
>>> snaps remain unchanged.
>>>
>>> Here is the kicker, I want to perform a differential backup on
>>> disk0_snap3
>>> and disk0_snap2.  Suppose I already recreated disk0_snap2 on some
>>> server.
>>> I now want to update it to disk0_snap3. I need to get a block list from
>>> disk0_snap2 and disk0_snap3, then generate a list of blocks needed to
>>> permute snap2 to snap3.
>>>
>>> Any info?
>>>
>>
>> Yes - differential snapshot will be supported through thin provisioning
>> target - where you will be able to make a simple diff just by reading
>> metadata - it will be essential piece of replication.
>
> Is any of this in place now?

Surely not - if it would be in place - I'd suggest which command you should use :)

>
>>
>> AFAIK Joe has this in plan for some time - and there was even some
>> announcement from some third-party developer to support this.
>
> Do you have a link?


https://www.redhat.com/archives/dm-devel/2013-July/msg00005.html

>>
>> There is not going to be any upstream support for doing this with
>> old-snaps in foreseeable future.
>>
>> Also keep in mind your idea of using old-snap of snap of snap would be
>> very
>> slow and fragile to use.
>
> Well, the reason I am pursuing this.....
>
> At a previous employment a few years back, I created a system using LVM2,
> old style snapshots, and FUSE to create this functionality.
>
> Using my previous example as a reference
>
> disk0 would always have one live snapshot to maintain diffs, call it
> disk0_snap_root.

Using chain of old-snaps is just way too heavy for anything - you really need 
to use system which is not copying blocks


> I need to implement similar behavior at a new employer and really really
> want not to use FUSE and rewrite all that crap again and am trying to see
> how to get it done using the device mapper layer. Also this is going to be
> for a product that is expected to ship to customers in the relatively near
> term.
>
> Any information or insight you can share would be much appreciated. I am
> beginning to suspect that LVM will not be usable for the project.

As I said -  btrfs has some kind of functionality you are looking for,
Or you may start to help with lvm project...
(Or thin-provisioning tools in this case)

Zdenek




More information about the linux-lvm mailing list