From: Lars Ellenberg <lars.ellenberg@linbit.com>
To: linux-lvm@redhat.com
Subject: Re: [linux-lvm] Sparse LVs, --virtualsize equal to --size
Date: Thu, 31 Jan 2013 17:22:43 +0100 [thread overview]
Message-ID: <20130131162243.GH8837@soda.linbit> (raw)
In-Reply-To: <20130129082443.GE19318@daedalus.cslab.ece.ntua.gr>
On Tue, Jan 29, 2013 at 10:24:43AM +0200, Vangelis Koukis wrote:
> On Mon, Jan 28, 2013 at 02:50:48pm +0100, Marian Csontos wrote:
> > On 01/25/2013 09:44 AM, Vangelis Koukis wrote:
> > >On Thu, Jan 24, 2013 at 11:42:35pm +0000, Alasdair G Kergon wrote:
> > >>So look at thin provisioning with its zeroing option.
> > >>External origin. (support currently being added to lvm)
> > >>
> > >>Or this not-yet-upstream target:
> > >>http://people.redhat.com/agk/patches/linux/editing/dm-add-zeroed-target.patch
> > >>
> > >>Alasdair
> > >
> > >Thanks Alasdair,
> > >
> > >this seems to fit the bill perfectly, it's a shame it's
> > >not yet merged upstream.
> > >
> > >Until then, if we are to go with the "snapshot-over-the-zero-target"
> > >route, can you comment on quantifying the space overhead of tracking
> > >chunks in the snapshot?
> >
>
> Hello Marian,
>
> thank you for your answer, here are some points I'm not sure I have
> understood completely:
>
> > Beware! Large old-style snapshots may take a very long time to
> > activate[1] (reportedly up to few hours)
BTW,
I've seen activation of "thin" snapshots take "ages" as well.
Maybe not "few" hours, but close.
That's because the implicitly started thin_check is 100% cpu
on a single core, we have 64k "chunk size",
and thus the tree is *huge*.
Also lvremove of a thin snapshot in that setup is single core cpu bound,
takes >= 20 minutes or so, locks out any other lvm command for that time.
That's with
LVM version: 2.02.95(2)-RHEL6 (2012-10-16)
Library version: 1.02.74-RHEL6 (2012-10-16)
Driver version: 4.22.6
[ "tech preview", so that may still improve ;-) ]
Back on topic:
> > and my guess is many
> > smaller snapshots will behave the same[2], the total amount of
> > chunks written to all snapshots being the key to slow start...
> >
>
> What is old-style snapshots? Old-style compared to what, thin LVs?
Yes.
> By "activate", do you refer to the problem of very slow VG activation
Yes.
> If yes, then the question still remains:
>
> Can you please comment on the exact on-disk format used when doing LVM
> snapshots? What is the exact format of the blocks being written to the
> COW volume?
I'm pasting parts of an older post to this list
(from 2008, Restore LVM snapshot without creating a full dump to an "external" device?)
"old style snapsthots", aka
dm-snap and dm-exception-store are implemented in a way that
for a single snapshot, you get
(mapping only) snapshot-origin
(real storage) origin-real
(mapping only) snapshot
(real storage) COW (or exception store)
COW on disk format is pretty simple (as of now).
its all fixed size chunks.
it starts with a 4x32bit header,
[SnAp][valid][version][chunk_size in sectors]
so any valid snapshot looks
"SnAp" 1 1 [power of two]
chunk_size it what you set with the lvcreate "-c" option.
the rest of the (just as well chunk_size'ed) header block is unused.
expressed in chunks, the COW storage looks like:
[header chunk][exception area 0][data chunks][....][exception area 1][...]
where each exception area is one "chunk" itself.
each exception area holds a mapping table of
"logic chunk number" to "in COW storage chunk number", both 64bit.
"logic number" is called "old", "in COW" address is called "new".
byte number
1 [old][new]
2 [old][new]
3 ...
(chunk_size*512/16) [old][new]
following are as many data chunks.
this whole thing is append only.
On activation,
it needs to scan all those [exception area ...] blocks,
until it find the "terminating" zeroed one.
It reads in and stores this mapping in core memory.
Hope that helps,
--
: Lars Ellenberg
: LINBIT | Your Way to High Availability
: DRBD/HA support and consulting http://www.linbit.com
next prev parent reply other threads:[~2013-01-31 16:22 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-24 15:53 [linux-lvm] Sparse LVs, --virtualsize equal to --size Vangelis Koukis
2013-01-24 18:08 ` Alasdair G Kergon
2013-01-24 18:35 ` Stuart D Gathman
2013-01-24 23:42 ` Alasdair G Kergon
2013-01-25 8:44 ` Vangelis Koukis
2013-01-25 12:29 ` Alasdair G Kergon
2013-01-25 16:19 ` Vangelis Koukis
2013-01-28 13:50 ` Marian Csontos
2013-01-29 8:24 ` Vangelis Koukis
2013-01-31 16:22 ` Lars Ellenberg [this message]
2013-02-06 16:05 ` Vangelis Koukis
2013-01-25 8:39 ` Vangelis Koukis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130131162243.GH8837@soda.linbit \
--to=lars.ellenberg@linbit.com \
--cc=linux-lvm@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.