[linux-lvm] exposing snapshot block device

Zdenek Kabelac zkabelac at redhat.com
Wed Oct 23 12:59:50 UTC 2019


Dne 23. 10. 19 v 13:08 Gionatan Danti napsal(a):
> On 23/10/19 12:46, Zdenek Kabelac wrote:
>> Just few 'comments' - it's not really comparable - the efficiency of 
>> thin-pool metadata outperforms old snapshot in BIG way (there is no point to 
>> talk about snapshots that takes just couple of MiB)
> 
> Yes, this matches my experience.
> 
>> There is also BIG difference about the usage of old snapshot origin and 
>> snapshot.
>>
>> COW of old snapshot effectively cuts performance 1/2 if you write to origin.
> 
> If used without non-volatile RAID controller, 1/2 is generous - I measured 
> performance as low as 1/5 (with fat snapshot).
> 
> Talking about thin snapshot, an obvious performance optimization which seems 
> to not be implemented is to skip reading source data when overwriting in 
> larger-than-chunksize blocks.

Hi

There is no such optimization possible for old snapshots.
You would need to write ONLY to snapshots.

As soon as you start to write to origin - you have to 'read' original data 
from origin, copy them to COW storage, once this is finished, you can
overwrite origin data area with your writing I/O.

This is simply never going to work fast ;) - the fast way is thin-pool...

Old snapshots were designed for 'short' lived snapshots (so you can take
a backup of volume which is not being modified underneath).

Any idea of improving this old snapshots target are sooner or later going to 
end-up with thin-pool anyway :)  (we've been in this river many many years 
back in time...)


> For example, consider a completely filled 64k chunk thin volume (with thinpool 
> having ample free space). Snapshotting it and writing a 4k block on origin 

There is no support of  snapshot of snapshot  with old snaps...
It would be extremely slow to use...

> However, my testing shows that source chunks are always read, even when 
> completely overwritten.
> 
> Am I missing something?

Yep - you would need to always jump to your 'snapshot' - so instead of
keeping 'origin' on  major:minor  - it would need to become a 'snapshot'...
Seriously complex concept to work with - especially when there is thin-pool...

Regards

Zdenek







More information about the linux-lvm mailing list