[dm-devel] dm-snapshot scalability - chained delta snapshots approach

Molle Bestefich molle.bestefich at gmail.com
Mon Oct 23 17:16:02 UTC 2006


Haripriya S wrote:
> Approach 1 - Chained delta snapshots
>
> Advantages:
> 1. Very simple, adds very few lines of code to existing dm-snap code.

Nice.

> 2. Does not change the dm-snapshot architecture, and no changes
> required in LVM or EVMS

Nice.

> 3. Since the COW copies due to origin write will always go to the most
> recent snapshot, snapshot COW devices can be created with less size.
> Whenever the COW allocation increase beyond say 90%, a new snapshot can
> be created which will take all the subsequent COW copies. This may avoid
> making COW devices invalid.

Nice !!!!!

> Disadvantages:
> 1. snapshots which were independent previously are now dependent on
> each other. Corruption of one COW device will affect the other snapshots
> as well.

Fixing dm-snapshot so devices do not get corrupted would make
dm-snapshot immensely more useful.
One way of doing that is to provoke bugs to more quickly become
visible to the user.  I think your patch might accomplish this.
Another way is to keep the code simple.  I'd say your patch does that.

(A third way is extensive testing, and a fourth is mathematically
proving that the code is sane.  But who has the time and energy ;-).)

Overall, what you're doing looks like a good thing for stability.

> 2. Will have a small impact in snapshot read performance,
> currently (if I understood right)

Minor disadvantage compared to the massive improvements seen in write speed.
Can be optimized on later.

(Fx. caching a list of which exceptions exist other places in the chain..)

> 3. There is a need to change the disk exception structure

Hopefully there's a version number on disk which allows incompatible
tools to skip lv's or whatever.

If not, this is a great excuse to create one.

> 4. When snapshots are deleted the COW exceptions have to be transferred
> to the next snapshot in the write chain.

Jan Blunck wrote:
> This means that every snapshot still has its own exception store.
> This would make deletion of snapshots unnecessary complex.

Complex, how?

Necessary operations (in order listed):
 * Acquire exclusive lock on this snapshot.
 * Check that next snapshot has room for exceptions, abort if not.
 * Acquire exclusive lock on next snapshot.
 * Move all exceptions to next snapshot.
 * Unlock next snapshot.
 * Remove this snapshot.
 * Done...

Sounds simple to me, but maybe I'm missing the point.

> It moves the work (copying of chunks)
> to the deletion of the snapshot.

Snapshot deletion is usually a "low privilege" task, something done
to redeem disk space on a periodic schedule.  It is not something a
user absolutely needs to finish immediately.  Sounds like a very
fair deal to me, but then again, I'm just a user.

> We discussed some of the ideas about snapshots here at the dm summit. The
> general ideas are as follows:
>
> - one exception store per origin device that is shared by all snapshots

Now that sounds complex.

> Although that includes a complete redesign of the exception store code.

Especially when you say stuff like that :-).

> The throughput issues should be addressed by only
> writing to one exception store.

Wouldn't this make debugging more complex, and further add to
the difficulty of snapshot resizing?




More information about the dm-devel mailing list